ts-essentials

  • Version 10.2.0
  • Published
  • 262 kB
  • No dependencies
  • MIT license

Install

npm i ts-essentials
yarn add ts-essentials
pnpm add ts-essentials

Overview

All essential TypeScript types in one place

Index

Functions

function assert

assert: (condition: any, message?: string) => asserts condition;

    function createFactoryWithConstraint

    createFactoryWithConstraint: <Constraint>() => <Value extends Constraint>(
    value: Value
    ) => Value;

      function isExact

      isExact: <ExpectedShape>() => <ActualShape>(
      x: IsExact<ActualShape, ExpectedShape>
      ) => ExpectedShape;

        function noop

        noop: (..._args: unknown[]) => void;

          Classes

          class UnreachableCaseError

          class UnreachableCaseError extends Error {}

            constructor

            constructor(value: never);

              Interfaces

              interface Newable

              interface Newable<ReturnType> {}

                construct signature

                new (...args: any[]): ReturnType;

                  Type Aliases

                  type AnyArray

                  type AnyArray<Type = any> = Array<Type> | ReadonlyArray<Type>;

                    type AnyFunction

                    type AnyFunction<Args extends any[] = any[], ReturnType = any> = (
                    ...args: Args
                    ) => ReturnType;

                      type AnyNonEmptyArray

                      type AnyNonEmptyArray<Type> = [Type, ...Type[]];

                        type ArrayOrSingle

                        type ArrayOrSingle<Type> = Type | Type[];

                          type AsyncOrSync

                          type AsyncOrSync<Type> = PromiseLike<Type> | Type;

                            type AsyncOrSyncType

                            type AsyncOrSyncType<AsyncOrSyncType> = AsyncOrSyncType extends AsyncOrSync<
                            infer Type
                            >
                            ? Type
                            : never;

                              type Awaited

                              type Awaited<Type> = Type extends PromiseLike<infer Value> ? Value : never;
                              • Deprecated

                                please use builtin Awaited

                              type Buildable

                              type Buildable<Type> = DeepPartial<DeepWritable<Type>>;

                                type Builtin

                                type Builtin = Primitive | Function | Date | Error | RegExp;

                                  type CamelCase

                                  type CamelCase<Type> = IsStringLiteral<Type> extends true
                                  ? Join<CamelCapitalizer<SplitAnyCase<Type>>>
                                  : Type;

                                    type DeepCamelCaseProperties

                                    type DeepCamelCaseProperties<Type> = Type extends Record<string, unknown>
                                    ? {
                                    [Key in keyof Type as CamelCase<Key>]: DeepCamelCaseProperties<Type[Key]>;
                                    }
                                    : Type;

                                      type DeepMarkOptional

                                      type DeepMarkOptional<
                                      Type,
                                      KeyPathUnion extends Paths<Type>
                                      > = HasParsablePath<Type> extends false
                                      ? Type
                                      : RecursiveDeepMarkOptional<Type, UnionToTuple<KeyPathUnion>>;

                                        type DeepMarkRequired

                                        type DeepMarkRequired<
                                        Type,
                                        KeyPathUnion extends Paths<Type>
                                        > = HasParsablePath<Type> extends false
                                        ? Type
                                        : RecursiveDeepMarkRequired<Type, UnionToTuple<KeyPathUnion>>;

                                          type DeepNonNullable

                                          type DeepNonNullable<Type> = Type extends Builtin
                                          ? NonNullable<Type>
                                          : Type extends Map<infer Keys, infer Values>
                                          ? Map<DeepNonNullable<Keys>, DeepNonNullable<Values>>
                                          : Type extends ReadonlyMap<infer Keys, infer Values>
                                          ? ReadonlyMap<DeepNonNullable<Keys>, DeepNonNullable<Values>>
                                          : Type extends WeakMap<infer Keys, infer Values>
                                          ? WeakMap<DeepNonNullable<Keys>, DeepNonNullable<Values>>
                                          : Type extends Set<infer Values>
                                          ? Set<DeepNonNullable<Values>>
                                          : Type extends ReadonlySet<infer Values>
                                          ? ReadonlySet<DeepNonNullable<Values>>
                                          : Type extends WeakSet<infer Values>
                                          ? WeakSet<DeepNonNullable<Values>>
                                          : Type extends Promise<infer Values>
                                          ? Promise<DeepNonNullable<Values>>
                                          : Type extends {}
                                          ? {
                                          [Key in keyof Type]: DeepNonNullable<Type[Key]>;
                                          }
                                          : NonNullable<Type>;

                                            type DeepNullable

                                            type DeepNullable<Type> = IsNever<Type> extends true
                                            ? null
                                            : Type extends Builtin
                                            ? Type | null
                                            : Type extends Map<infer Keys, infer Values>
                                            ? Map<DeepNullable<Keys>, DeepNullable<Values>>
                                            : Type extends ReadonlyMap<infer Keys, infer Values>
                                            ? ReadonlyMap<DeepNullable<Keys>, DeepNullable<Values>>
                                            : Type extends WeakMap<infer Keys, infer Values>
                                            ? DeepNullable<Keys> extends object
                                            ? WeakMap<DeepNullable<Keys>, DeepNullable<Values>>
                                            : never
                                            : Type extends Set<infer Values>
                                            ? Set<DeepNullable<Values>>
                                            : Type extends ReadonlySet<infer Values>
                                            ? ReadonlySet<DeepNullable<Values>>
                                            : Type extends WeakSet<infer Values>
                                            ? DeepNullable<Values> extends object
                                            ? WeakSet<DeepNullable<Values>>
                                            : never
                                            : Type extends ReadonlyArray<infer Values>
                                            ? Type extends IsTuple<Type>
                                            ? {
                                            [Key in keyof Type]: DeepNullable<Type[Key]> | null;
                                            }
                                            : Type extends Array<Values>
                                            ? Array<DeepNullable<Values>>
                                            : ReadonlyArray<DeepNullable<Values>>
                                            : Type extends Promise<infer Value>
                                            ? Promise<DeepNullable<Value>>
                                            : Type extends {}
                                            ? {
                                            [Key in keyof Type]: DeepNullable<Type[Key]>;
                                            }
                                            : Type | null;

                                              type DeepOmit

                                              type DeepOmit<Type, Filter> = Type extends Builtin
                                              ? Type
                                              : Type extends Map<infer Keys, infer Values>
                                              ? Filter extends Map<Keys, infer FilterValues>
                                              ? Map<Keys, DeepOmit<Values, FilterValues>>
                                              : Type
                                              : Type extends ReadonlyMap<infer Keys, infer Values>
                                              ? Filter extends ReadonlyMap<Keys, infer FilterValues>
                                              ? ReadonlyMap<Keys, DeepOmit<Values, FilterValues>>
                                              : Type
                                              : Type extends WeakMap<infer Keys, infer Values>
                                              ? Filter extends WeakMap<Keys, infer FilterValues>
                                              ? WeakMap<Keys, DeepOmit<Values, FilterValues>>
                                              : Type
                                              : Type extends Set<infer Values>
                                              ? Filter extends Set<infer FilterValues>
                                              ? Set<DeepOmit<Values, FilterValues>>
                                              : Type
                                              : Type extends ReadonlySet<infer Values>
                                              ? Filter extends ReadonlySet<infer FilterValues>
                                              ? ReadonlySet<DeepOmit<Values, FilterValues>>
                                              : Type
                                              : Type extends WeakSet<infer Values>
                                              ? Filter extends WeakSet<infer FilterValues>
                                              ? WeakSet<DeepOmit<Values, FilterValues>>
                                              : Type
                                              : Type extends Array<infer Values>
                                              ? Filter extends Array<infer FilterValues>
                                              ? Array<DeepOmit<Values, FilterValues>>
                                              : Type
                                              : Type extends Promise<infer Value>
                                              ? Filter extends Promise<infer FilterValue>
                                              ? Promise<DeepOmit<Value, FilterValue>>
                                              : Type
                                              : Filter extends AnyRecord
                                              ? {
                                              [Key in keyof Type as Key extends keyof Filter
                                              ? Filter[Key] extends true
                                              ? never
                                              : Key
                                              : Key]: Key extends keyof Filter
                                              ? DeepOmit<Type[Key], Filter[Key]>
                                              : Type[Key];
                                              }
                                              : never;

                                                type DeepPartial

                                                type DeepPartial<Type> = Type extends Exclude<Builtin, Error>
                                                ? Type
                                                : Type extends Map<infer Keys, infer Values>
                                                ? Map<DeepPartial<Keys>, DeepPartial<Values>>
                                                : Type extends ReadonlyMap<infer Keys, infer Values>
                                                ? ReadonlyMap<DeepPartial<Keys>, DeepPartial<Values>>
                                                : Type extends WeakMap<infer Keys, infer Values>
                                                ? WeakMap<DeepPartial<Keys>, DeepPartial<Values>>
                                                : Type extends Set<infer Values>
                                                ? Set<DeepPartial<Values>>
                                                : Type extends ReadonlySet<infer Values>
                                                ? ReadonlySet<DeepPartial<Values>>
                                                : Type extends WeakSet<infer Values>
                                                ? WeakSet<DeepPartial<Values>>
                                                : Type extends Promise<infer Value>
                                                ? Promise<DeepPartial<Value>>
                                                : Type extends {}
                                                ? {
                                                [Key in keyof Type]?: DeepPartial<Type[Key]>;
                                                }
                                                : IsUnknown<Type> extends true
                                                ? unknown
                                                : Partial<Type>;

                                                  type DeepPick

                                                  type DeepPick<Type, Filter> = Type extends Builtin
                                                  ? Type
                                                  : Type extends Map<infer Keys, infer Values>
                                                  ? Filter extends Map<Keys, infer FilterValues>
                                                  ? Map<Keys, DeepPick<Values, FilterValues>>
                                                  : Type
                                                  : Type extends ReadonlyMap<infer Keys, infer Values>
                                                  ? Filter extends ReadonlyMap<Keys, infer FilterValues>
                                                  ? ReadonlyMap<Keys, DeepPick<Values, FilterValues>>
                                                  : Type
                                                  : Type extends WeakMap<infer Keys, infer Values>
                                                  ? Filter extends WeakMap<Keys, infer FilterValues>
                                                  ? WeakMap<Keys, DeepPick<Values, FilterValues>>
                                                  : Type
                                                  : Type extends Set<infer Values>
                                                  ? Filter extends Set<infer FilterValues>
                                                  ? Set<DeepPick<Values, FilterValues>>
                                                  : Type
                                                  : Type extends ReadonlySet<infer Values>
                                                  ? Filter extends ReadonlySet<infer FilterValues>
                                                  ? ReadonlySet<DeepPick<Values, FilterValues>>
                                                  : Type
                                                  : Type extends WeakSet<infer Values>
                                                  ? Filter extends WeakSet<infer FilterValues>
                                                  ? WeakSet<DeepPick<Values, FilterValues>>
                                                  : Type
                                                  : Type extends Array<infer Values>
                                                  ? Filter extends Array<infer FilterValues>
                                                  ? Array<DeepPick<Values, FilterValues>>
                                                  : Type
                                                  : Type extends Promise<infer Value>
                                                  ? Filter extends Promise<infer FilterValue>
                                                  ? Promise<DeepPick<Value, FilterValue>>
                                                  : Type
                                                  : Filter extends AnyRecord
                                                  ? {
                                                  [Key in keyof Type as Key extends keyof Filter ? Key : never]: Filter[Key &
                                                  keyof Filter] extends true
                                                  ? Type[Key]
                                                  : Key extends keyof Filter
                                                  ? DeepPick<Type[Key], Filter[Key]>
                                                  : never;
                                                  }
                                                  : never;

                                                    type DeepReadonly

                                                    type DeepReadonly<
                                                    Type,
                                                    OverrideDeepReadonlyOptions extends {
                                                    builtin?: Partial<DeepReadonlyOptions['builtin']>;
                                                    } = {}
                                                    > = DeepReadonlyWithOptions<
                                                    Type,
                                                    {
                                                    builtin: CreateTypeOptions<
                                                    DeepReadonlyOptions['builtin'],
                                                    OverrideDeepReadonlyOptions['builtin'] extends {}
                                                    ? OverrideDeepReadonlyOptions['builtin']
                                                    : {},
                                                    DefaultDeepReadonlyOptions['builtin']
                                                    >;
                                                    }
                                                    >;

                                                      type DeepRequired

                                                      type DeepRequired<Type> = Type extends Error
                                                      ? Required<Type>
                                                      : Type extends Builtin
                                                      ? Type
                                                      : Type extends Map<infer Keys, infer Values>
                                                      ? Map<DeepRequired<Keys>, DeepRequired<Values>>
                                                      : Type extends ReadonlyMap<infer Keys, infer Values>
                                                      ? ReadonlyMap<DeepRequired<Keys>, DeepRequired<Values>>
                                                      : Type extends WeakMap<infer Keys, infer Values>
                                                      ? WeakMap<DeepRequired<Keys>, DeepRequired<Values>>
                                                      : Type extends Set<infer Values>
                                                      ? Set<DeepRequired<Values>>
                                                      : Type extends ReadonlySet<infer Values>
                                                      ? ReadonlySet<DeepRequired<Values>>
                                                      : Type extends WeakSet<infer Values>
                                                      ? WeakSet<DeepRequired<Values>>
                                                      : Type extends Promise<infer Value>
                                                      ? Promise<DeepRequired<Value>>
                                                      : Type extends ReadonlyArray<infer Values>
                                                      ? IsNever<IsTuple<Type>> extends false
                                                      ? {
                                                      [Key in keyof Type]-?: DeepRequired<Type[Key]>;
                                                      }
                                                      : Type extends Array<Values>
                                                      ? Array<Exclude<DeepRequired<Values>, undefined>>
                                                      : ReadonlyArray<Exclude<DeepRequired<Values>, undefined>>
                                                      : Type extends {}
                                                      ? {
                                                      [Key in keyof Type]-?: DeepRequired<Type[Key]>;
                                                      }
                                                      : Required<Type>;

                                                        type DeepUndefinable

                                                        type DeepUndefinable<Type> = IsNever<Type> extends true
                                                        ? undefined
                                                        : Type extends Builtin
                                                        ? Type | undefined
                                                        : Type extends Map<infer Keys, infer Values>
                                                        ? Map<DeepUndefinable<Keys>, DeepUndefinable<Values>>
                                                        : Type extends ReadonlyMap<infer Keys, infer Values>
                                                        ? ReadonlyMap<DeepUndefinable<Keys>, DeepUndefinable<Values>>
                                                        : Type extends WeakMap<infer Keys, infer Values>
                                                        ? DeepUndefinable<Keys> extends object
                                                        ? WeakMap<DeepUndefinable<Keys>, DeepUndefinable<Values>>
                                                        : never
                                                        : Type extends Set<infer Values>
                                                        ? Set<DeepUndefinable<Values>>
                                                        : Type extends ReadonlySet<infer Values>
                                                        ? ReadonlySet<DeepUndefinable<Values>>
                                                        : Type extends WeakSet<infer Values>
                                                        ? DeepUndefinable<Values> extends object
                                                        ? WeakSet<DeepUndefinable<Values>>
                                                        : never
                                                        : Type extends ReadonlyArray<infer Values>
                                                        ? Type extends IsTuple<Type>
                                                        ? {
                                                        [Key in keyof Type]: DeepUndefinable<Type[Key]> | undefined;
                                                        }
                                                        : Type extends Array<Values>
                                                        ? Array<DeepUndefinable<Values>>
                                                        : ReadonlyArray<DeepUndefinable<Values>>
                                                        : Type extends Promise<infer Value>
                                                        ? Promise<DeepUndefinable<Value>>
                                                        : Type extends {}
                                                        ? {
                                                        [Key in keyof Type]: DeepUndefinable<Type[Key]>;
                                                        }
                                                        : Type | undefined;

                                                          type DeepWritable

                                                          type DeepWritable<Type> = Type extends Exclude<Builtin, Error>
                                                          ? Type
                                                          : Type extends Map<infer Key, infer Value>
                                                          ? Map<DeepWritable<Key>, DeepWritable<Value>>
                                                          : Type extends ReadonlyMap<infer Key, infer Value>
                                                          ? Map<DeepWritable<Key>, DeepWritable<Value>>
                                                          : Type extends WeakMap<infer Key, infer Value>
                                                          ? WeakMap<DeepWritable<Key>, DeepWritable<Value>>
                                                          : Type extends Set<infer Values>
                                                          ? Set<DeepWritable<Values>>
                                                          : Type extends ReadonlySet<infer Values>
                                                          ? Set<DeepWritable<Values>>
                                                          : Type extends WeakSet<infer Values>
                                                          ? WeakSet<DeepWritable<Values>>
                                                          : Type extends Promise<infer Value>
                                                          ? Promise<DeepWritable<Value>>
                                                          : Type extends {}
                                                          ? DeepWritableObject<Type>
                                                          : IsUnknown<Type> extends true
                                                          ? unknown
                                                          : Type;

                                                            type Dictionary

                                                            type Dictionary<Type, Keys extends KeyofBase = string> = {
                                                            [key in Keys]: Type;
                                                            };

                                                              type DictionaryValues

                                                              type DictionaryValues<Type> = Type[keyof Type];
                                                              • Deprecated

                                                                please use ValueOf instead

                                                              type ElementOf

                                                              type ElementOf<Type extends readonly any[]> = Type extends readonly (infer Values)[]
                                                              ? Values
                                                              : never;

                                                                type Exact

                                                                type Exact<TValue, TShape> = IsExact<TValue, TShape>;
                                                                • Deprecated

                                                                  Exact will be removed in v11.0. Use IsExact<TValue, TShape> instead

                                                                type Head<Type extends AnyArray> = Type extends unknown
                                                                ? Type['length'] extends 0
                                                                ? never
                                                                : Type[0]
                                                                : never;

                                                                  type IsAny

                                                                  type IsAny<Type> = 0 extends 1 & Type ? true : false;

                                                                    type IsExact

                                                                    type IsExact<TValue, TShape> = [TValue] extends [readonly any[]]
                                                                    ? [TShape] extends [readonly any[]]
                                                                    ? ArrayExact<TValue, TShape>
                                                                    : never
                                                                    : [TValue] extends [AnyRecord]
                                                                    ? ObjectExact<TValue, TShape>
                                                                    : PrimitiveExact<TValue, TShape>;

                                                                      type IsNever

                                                                      type IsNever<Type> = [Type] extends [never] ? true : false;

                                                                        type IsTuple

                                                                        type IsTuple<Type> = Type extends ReadonlyArray<infer Values>
                                                                        ? Array<Values> extends Type
                                                                        ? IsNever<keyof Type & `${number}`> extends true
                                                                        ? never
                                                                        : Type
                                                                        : Type
                                                                        : never;

                                                                          type IsUnknown

                                                                          type IsUnknown<Type> = IsAny<Type> extends true
                                                                          ? false
                                                                          : unknown extends Type
                                                                          ? true
                                                                          : false;

                                                                            type JsonArray

                                                                            type JsonArray = JsonValue[] | readonly JsonValue[];

                                                                              type JsonObject

                                                                              type JsonObject = {
                                                                              [Key in string]: JsonValue;
                                                                              };

                                                                                type JsonPrimitive

                                                                                type JsonPrimitive = null | number | string | boolean;

                                                                                  type JsonValue

                                                                                  type JsonValue = JsonPrimitive | JsonObject | JsonArray;

                                                                                    type KeyofBase

                                                                                    type KeyofBase = keyof any;

                                                                                      type MarkOptional

                                                                                      type MarkOptional<Type, Keys extends keyof Type> = Type extends Type
                                                                                      ? Extract<
                                                                                      Prettify<Partial<Type> & Required<Omit<Type, Keys | OptionalKeys<Type>>>>,
                                                                                      Partial<Type>
                                                                                      >
                                                                                      : never;

                                                                                        type MarkReadonly

                                                                                        type MarkReadonly<Type, Keys extends keyof Type> = Type extends Type
                                                                                        ? Prettify<
                                                                                        Readonly<Type> & Writable<Omit<Type, Keys | ReadonlyKeys<Type & object>>>
                                                                                        >
                                                                                        : never;

                                                                                          type MarkRequired

                                                                                          type MarkRequired<Type, Keys extends keyof Type> = Type extends Type
                                                                                          ? Prettify<Type & Required<Omit<Type, Exclude<keyof Type, Keys>>>>
                                                                                          : never;

                                                                                            type MarkWritable

                                                                                            type MarkWritable<Type, Keys extends keyof Type> = Type extends Type
                                                                                            ? Prettify<
                                                                                            Readonly<Type> &
                                                                                            Writable<
                                                                                            Omit<Type, Exclude<keyof Type, WritableKeys<Type & object> | Keys>>
                                                                                            >
                                                                                            >
                                                                                            : never;

                                                                                              type Merge

                                                                                              type Merge<Object1, Object2> = Prettify<Omit<Object1, keyof Object2> & Object2>;

                                                                                                type MergeN

                                                                                                type MergeN<Tuple extends readonly any[]> = _MergeN<Tuple, {}>;

                                                                                                  type NonEmptyArray

                                                                                                  type NonEmptyArray<Type> = AnyNonEmptyArray<Type>;
                                                                                                  • Deprecated

                                                                                                    NonEmptyArray will be removed in v11.0. Use AnyNonEmptyArray instead.

                                                                                                  type NonEmptyObject

                                                                                                  type NonEmptyObject<Object extends AnyRecord> = keyof Object extends never
                                                                                                  ? never
                                                                                                  : Object;

                                                                                                    type NonNever

                                                                                                    type NonNever<Type extends {}> = Pick<
                                                                                                    Type,
                                                                                                    {
                                                                                                    [Key in keyof Type]: Type[Key] extends never ? never : Key;
                                                                                                    }[keyof Type]
                                                                                                    >;
                                                                                                    • Deprecated

                                                                                                      Use OmitNeverProperties<Type> instead

                                                                                                    type NonUnion

                                                                                                    type NonUnion<Type> = [Type] extends [UnionToIntersection<Type>] ? Type : never;

                                                                                                      type OmitNeverProperties

                                                                                                      type OmitNeverProperties<Type extends {}> = NonNever<Type>;

                                                                                                        type OmitProperties

                                                                                                        type OmitProperties<Type, Value> = {
                                                                                                        [Key in keyof Type as Type[Key] extends Value ? never : Key]: Type[Key];
                                                                                                        };

                                                                                                          type Opaque

                                                                                                          type Opaque<Type, Token extends string> = Token extends StringLiteral<Token>
                                                                                                          ? Type & WithOpaque<Token>
                                                                                                          : never;

                                                                                                            type OptionalKeys

                                                                                                            type OptionalKeys<Type> = Type extends object
                                                                                                            ? keyof {
                                                                                                            [Key in keyof Type as Type extends Required<Pick<Type, Key>>
                                                                                                            ? never
                                                                                                            : Key]: never;
                                                                                                            }
                                                                                                            : never;

                                                                                                              type Paths

                                                                                                              type Paths<
                                                                                                              Type,
                                                                                                              OverridePathOptions extends Partial<PathsOptions> = {}
                                                                                                              > = UnsafePaths<
                                                                                                              Type,
                                                                                                              CreateTypeOptions<PathsOptions, OverridePathOptions, DefaultPathsOptions>
                                                                                                              >;

                                                                                                                type PathValue

                                                                                                                type PathValue<Type, StringPath> = GetWithArray<Type, Path<StringPath>>;

                                                                                                                  type PickKeys

                                                                                                                  type PickKeys<Type, Value> = keyof PickProperties<Type, Value>;

                                                                                                                    type PickProperties

                                                                                                                    type PickProperties<Type, Value> = {
                                                                                                                    [Key in keyof Type as Type[Key] extends Value ? Key : never]: Type[Key];
                                                                                                                    };

                                                                                                                      type PredicateFunction

                                                                                                                      type PredicateFunction = (x: any, ..._z: any[]) => x is any;

                                                                                                                        type PredicateType

                                                                                                                        type PredicateType<Type extends PredicateFunction> = Type extends (
                                                                                                                        target: any,
                                                                                                                        ...rest: any[]
                                                                                                                        ) => target is infer NarrowedType
                                                                                                                        ? NarrowedType
                                                                                                                        : never;

                                                                                                                          type Prettify

                                                                                                                          type Prettify<Type> = Type extends Function
                                                                                                                          ? Type
                                                                                                                          : {
                                                                                                                          [Key in keyof Type]: Type[Key];
                                                                                                                          };

                                                                                                                            type Primitive

                                                                                                                            type Primitive = string | number | boolean | bigint | symbol | undefined | null;

                                                                                                                              type ReadonlyArrayOrSingle

                                                                                                                              type ReadonlyArrayOrSingle<Type> = Type | readonly Type[];

                                                                                                                                type ReadonlyKeys

                                                                                                                                type ReadonlyKeys<Type extends object> = Type extends unknown
                                                                                                                                ? keyof {
                                                                                                                                [Key in keyof Type as IsFullyWritable<Pick<Type, Key>> extends true
                                                                                                                                ? never
                                                                                                                                : Key]: never;
                                                                                                                                }
                                                                                                                                : never;

                                                                                                                                  type RequireAtLeastOne

                                                                                                                                  type RequireAtLeastOne<
                                                                                                                                  Type extends AnyRecord,
                                                                                                                                  Keys extends keyof Type = keyof Type
                                                                                                                                  > = IsAny<Type> extends true ? any : _RequireAtLeastOne<Type, Keys>;

                                                                                                                                    type RequireAtMostOne

                                                                                                                                    type RequireAtMostOne<
                                                                                                                                    Type extends AnyRecord,
                                                                                                                                    Keys extends keyof Type = keyof Type
                                                                                                                                    > = IsAny<Type> extends true ? any : _RequireAtMostOne<Type, Keys>;

                                                                                                                                      type RequiredKeys

                                                                                                                                      type RequiredKeys<Type> = Type extends unknown
                                                                                                                                      ? Exclude<keyof Type, OptionalKeys<Type>>
                                                                                                                                      : never;

                                                                                                                                        type SafeDictionary

                                                                                                                                        type SafeDictionary<Type, Keys extends KeyofBase = string> = {
                                                                                                                                        [key in Keys]?: Type;
                                                                                                                                        };

                                                                                                                                          type StrictDeepOmit

                                                                                                                                          type StrictDeepOmit<Type, Filter extends DeepModify<Type>> = DeepOmit<Type, Filter>;

                                                                                                                                            type StrictDeepPick

                                                                                                                                            type StrictDeepPick<Type, Filter extends DeepModify<Type>> = DeepPick<Type, Filter>;

                                                                                                                                              type StrictExclude

                                                                                                                                              type StrictExclude<UnionType, ExcludedMembers extends UnionType> = Exclude<
                                                                                                                                              UnionType,
                                                                                                                                              ExcludedMembers
                                                                                                                                              >;

                                                                                                                                                type StrictExtract

                                                                                                                                                type StrictExtract<Type, Union extends Partial<Type>> = Extract<Type, Union>;

                                                                                                                                                  type StrictOmit

                                                                                                                                                  type StrictOmit<
                                                                                                                                                  Type extends AnyRecord,
                                                                                                                                                  Keys extends keyof Type
                                                                                                                                                  > = Type extends AnyArray ? never : Omit<Type, Keys>;

                                                                                                                                                    type Tail

                                                                                                                                                    type Tail<Type extends AnyArray> = Type extends readonly []
                                                                                                                                                    ? never
                                                                                                                                                    : Type extends readonly [any?, ...infer Rest]
                                                                                                                                                    ? Rest
                                                                                                                                                    : never;

                                                                                                                                                      type Tuple

                                                                                                                                                      type Tuple<Type = any> = [Type?, ...Type[]];

                                                                                                                                                        type UnionKeys

                                                                                                                                                        type UnionKeys<UnionType> = keyof UnionToIntersection<
                                                                                                                                                        UnionType extends UnionType ? Record<keyof UnionType, never> : never
                                                                                                                                                        >;

                                                                                                                                                          type UnionToIntersection

                                                                                                                                                          type UnionToIntersection<Union> = (
                                                                                                                                                          Union extends any ? (arg: Union) => void : never
                                                                                                                                                          ) extends (arg: infer Intersection) => void // Order matters here - do not swap Intersection and Union
                                                                                                                                                          ? Intersection & Union
                                                                                                                                                          : never;

                                                                                                                                                            type ValueOf

                                                                                                                                                            type ValueOf<Type> = Type extends Primitive
                                                                                                                                                            ? Type
                                                                                                                                                            : Type extends AnyArray
                                                                                                                                                            ? Type[number]
                                                                                                                                                            : Type extends AnyFunction
                                                                                                                                                            ? ReturnType<Type>
                                                                                                                                                            : Type[keyof Type];

                                                                                                                                                              type WithOpaque

                                                                                                                                                              type WithOpaque<Token extends string> = {
                                                                                                                                                              readonly [__OPAQUE_TYPE__]: Token;
                                                                                                                                                              };

                                                                                                                                                                type Writable

                                                                                                                                                                type Writable<Type> = {
                                                                                                                                                                -readonly [Key in keyof Type]: Type[Key];
                                                                                                                                                                };

                                                                                                                                                                  type WritableKeys

                                                                                                                                                                  type WritableKeys<Type extends object> = Type extends unknown
                                                                                                                                                                  ? Exclude<keyof Type, ReadonlyKeys<Type>>
                                                                                                                                                                  : never;

                                                                                                                                                                    type XOR

                                                                                                                                                                    type XOR<
                                                                                                                                                                    Type1,
                                                                                                                                                                    Type2,
                                                                                                                                                                    Type3 = unknown,
                                                                                                                                                                    Type4 = unknown,
                                                                                                                                                                    Type5 = unknown,
                                                                                                                                                                    Type6 = unknown,
                                                                                                                                                                    Type7 = unknown,
                                                                                                                                                                    Type8 = unknown,
                                                                                                                                                                    Type9 = unknown,
                                                                                                                                                                    Type10 = unknown,
                                                                                                                                                                    Type11 = unknown,
                                                                                                                                                                    Type12 = unknown,
                                                                                                                                                                    Type13 = unknown,
                                                                                                                                                                    Type14 = unknown,
                                                                                                                                                                    Type15 = unknown,
                                                                                                                                                                    Type16 = unknown,
                                                                                                                                                                    Type17 = unknown,
                                                                                                                                                                    Type18 = unknown,
                                                                                                                                                                    Type19 = unknown,
                                                                                                                                                                    Type20 = unknown,
                                                                                                                                                                    Type21 = unknown,
                                                                                                                                                                    Type22 = unknown,
                                                                                                                                                                    Type23 = unknown,
                                                                                                                                                                    Type24 = unknown,
                                                                                                                                                                    Type25 = unknown,
                                                                                                                                                                    Type26 = unknown,
                                                                                                                                                                    Type27 = unknown,
                                                                                                                                                                    Type28 = unknown,
                                                                                                                                                                    Type29 = unknown,
                                                                                                                                                                    Type30 = unknown,
                                                                                                                                                                    Type31 = unknown,
                                                                                                                                                                    Type32 = unknown,
                                                                                                                                                                    Type33 = unknown,
                                                                                                                                                                    Type34 = unknown,
                                                                                                                                                                    Type35 = unknown,
                                                                                                                                                                    Type36 = unknown,
                                                                                                                                                                    Type37 = unknown,
                                                                                                                                                                    Type38 = unknown,
                                                                                                                                                                    Type39 = unknown,
                                                                                                                                                                    Type40 = unknown,
                                                                                                                                                                    Type41 = unknown,
                                                                                                                                                                    Type42 = unknown,
                                                                                                                                                                    Type43 = unknown,
                                                                                                                                                                    Type44 = unknown,
                                                                                                                                                                    Type45 = unknown,
                                                                                                                                                                    Type46 = unknown,
                                                                                                                                                                    Type47 = unknown,
                                                                                                                                                                    Type48 = unknown,
                                                                                                                                                                    Type49 = unknown,
                                                                                                                                                                    Type50 = unknown
                                                                                                                                                                    > = Prettify<
                                                                                                                                                                    | (Without<
                                                                                                                                                                    Type2 &
                                                                                                                                                                    Type3 &
                                                                                                                                                                    Type4 &
                                                                                                                                                                    Type5 &
                                                                                                                                                                    Type6 &
                                                                                                                                                                    Type7 &
                                                                                                                                                                    Type8 &
                                                                                                                                                                    Type9 &
                                                                                                                                                                    Type10 &
                                                                                                                                                                    Type11 &
                                                                                                                                                                    Type12 &
                                                                                                                                                                    Type13 &
                                                                                                                                                                    Type14 &
                                                                                                                                                                    Type15 &
                                                                                                                                                                    Type16 &
                                                                                                                                                                    Type17 &
                                                                                                                                                                    Type18 &
                                                                                                                                                                    Type19 &
                                                                                                                                                                    Type20 &
                                                                                                                                                                    Type21 &
                                                                                                                                                                    Type22 &
                                                                                                                                                                    Type23 &
                                                                                                                                                                    Type24 &
                                                                                                                                                                    Type25 &
                                                                                                                                                                    Type26 &
                                                                                                                                                                    Type27 &
                                                                                                                                                                    Type28 &
                                                                                                                                                                    Type29 &
                                                                                                                                                                    Type30 &
                                                                                                                                                                    Type31 &
                                                                                                                                                                    Type32 &
                                                                                                                                                                    Type33 &
                                                                                                                                                                    Type34 &
                                                                                                                                                                    Type35 &
                                                                                                                                                                    Type36 &
                                                                                                                                                                    Type37 &
                                                                                                                                                                    Type38 &
                                                                                                                                                                    Type39 &
                                                                                                                                                                    Type40 &
                                                                                                                                                                    Type41 &
                                                                                                                                                                    Type42 &
                                                                                                                                                                    Type43 &
                                                                                                                                                                    Type44 &
                                                                                                                                                                    Type45 &
                                                                                                                                                                    Type46 &
                                                                                                                                                                    Type47 &
                                                                                                                                                                    Type48 &
                                                                                                                                                                    Type49 &
                                                                                                                                                                    Type50,
                                                                                                                                                                    Type1
                                                                                                                                                                    > &
                                                                                                                                                                    Type1)
                                                                                                                                                                    | (Without<
                                                                                                                                                                    Type1 &
                                                                                                                                                                    Type3 &
                                                                                                                                                                    Type4 &
                                                                                                                                                                    Type5 &
                                                                                                                                                                    Type6 &
                                                                                                                                                                    Type7 &
                                                                                                                                                                    Type8 &
                                                                                                                                                                    Type9 &
                                                                                                                                                                    Type10 &
                                                                                                                                                                    Type11 &
                                                                                                                                                                    Type12 &
                                                                                                                                                                    Type13 &
                                                                                                                                                                    Type14 &
                                                                                                                                                                    Type15 &
                                                                                                                                                                    Type16 &
                                                                                                                                                                    Type17 &
                                                                                                                                                                    Type18 &
                                                                                                                                                                    Type19 &
                                                                                                                                                                    Type20 &
                                                                                                                                                                    Type21 &
                                                                                                                                                                    Type22 &
                                                                                                                                                                    Type23 &
                                                                                                                                                                    Type24 &
                                                                                                                                                                    Type25 &
                                                                                                                                                                    Type26 &
                                                                                                                                                                    Type27 &
                                                                                                                                                                    Type28 &
                                                                                                                                                                    Type29 &
                                                                                                                                                                    Type30 &
                                                                                                                                                                    Type31 &
                                                                                                                                                                    Type32 &
                                                                                                                                                                    Type33 &
                                                                                                                                                                    Type34 &
                                                                                                                                                                    Type35 &
                                                                                                                                                                    Type36 &
                                                                                                                                                                    Type37 &
                                                                                                                                                                    Type38 &
                                                                                                                                                                    Type39 &
                                                                                                                                                                    Type40 &
                                                                                                                                                                    Type41 &
                                                                                                                                                                    Type42 &
                                                                                                                                                                    Type43 &
                                                                                                                                                                    Type44 &
                                                                                                                                                                    Type45 &
                                                                                                                                                                    Type46 &
                                                                                                                                                                    Type47 &
                                                                                                                                                                    Type48 &
                                                                                                                                                                    Type49 &
                                                                                                                                                                    Type50,
                                                                                                                                                                    Type2
                                                                                                                                                                    > &
                                                                                                                                                                    Type2)
                                                                                                                                                                    | (Without<
                                                                                                                                                                    Type1 &
                                                                                                                                                                    Type2 &
                                                                                                                                                                    Type4 &
                                                                                                                                                                    Type5 &
                                                                                                                                                                    Type6 &
                                                                                                                                                                    Type7 &
                                                                                                                                                                    Type8 &
                                                                                                                                                                    Type9 &
                                                                                                                                                                    Type10 &
                                                                                                                                                                    Type11 &
                                                                                                                                                                    Type12 &
                                                                                                                                                                    Type13 &
                                                                                                                                                                    Type14 &
                                                                                                                                                                    Type15 &
                                                                                                                                                                    Type16 &
                                                                                                                                                                    Type17 &
                                                                                                                                                                    Type18 &
                                                                                                                                                                    Type19 &
                                                                                                                                                                    Type20 &
                                                                                                                                                                    Type21 &
                                                                                                                                                                    Type22 &
                                                                                                                                                                    Type23 &
                                                                                                                                                                    Type24 &
                                                                                                                                                                    Type25 &
                                                                                                                                                                    Type26 &
                                                                                                                                                                    Type27 &
                                                                                                                                                                    Type28 &
                                                                                                                                                                    Type29 &
                                                                                                                                                                    Type30 &
                                                                                                                                                                    Type31 &
                                                                                                                                                                    Type32 &
                                                                                                                                                                    Type33 &
                                                                                                                                                                    Type34 &
                                                                                                                                                                    Type35 &
                                                                                                                                                                    Type36 &
                                                                                                                                                                    Type37 &
                                                                                                                                                                    Type38 &
                                                                                                                                                                    Type39 &
                                                                                                                                                                    Type40 &
                                                                                                                                                                    Type41 &
                                                                                                                                                                    Type42 &
                                                                                                                                                                    Type43 &
                                                                                                                                                                    Type44 &
                                                                                                                                                                    Type45 &
                                                                                                                                                                    Type46 &
                                                                                                                                                                    Type47 &
                                                                                                                                                                    Type48 &
                                                                                                                                                                    Type49 &
                                                                                                                                                                    Type50,
                                                                                                                                                                    Type3
                                                                                                                                                                    > &
                                                                                                                                                                    Type3)
                                                                                                                                                                    | (Without<
                                                                                                                                                                    Type1 &
                                                                                                                                                                    Type2 &
                                                                                                                                                                    Type3 &
                                                                                                                                                                    Type5 &
                                                                                                                                                                    Type6 &
                                                                                                                                                                    Type7 &
                                                                                                                                                                    Type8 &
                                                                                                                                                                    Type9 &
                                                                                                                                                                    Type10 &
                                                                                                                                                                    Type11 &
                                                                                                                                                                    Type12 &
                                                                                                                                                                    Type13 &
                                                                                                                                                                    Type14 &
                                                                                                                                                                    Type15 &
                                                                                                                                                                    Type16 &
                                                                                                                                                                    Type17 &
                                                                                                                                                                    Type18 &
                                                                                                                                                                    Type19 &
                                                                                                                                                                    Type20 &
                                                                                                                                                                    Type21 &
                                                                                                                                                                    Type22 &
                                                                                                                                                                    Type23 &
                                                                                                                                                                    Type24 &
                                                                                                                                                                    Type25 &
                                                                                                                                                                    Type26 &
                                                                                                                                                                    Type27 &
                                                                                                                                                                    Type28 &
                                                                                                                                                                    Type29 &
                                                                                                                                                                    Type30 &
                                                                                                                                                                    Type31 &
                                                                                                                                                                    Type32 &
                                                                                                                                                                    Type33 &
                                                                                                                                                                    Type34 &
                                                                                                                                                                    Type35 &
                                                                                                                                                                    Type36 &
                                                                                                                                                                    Type37 &
                                                                                                                                                                    Type38 &
                                                                                                                                                                    Type39 &
                                                                                                                                                                    Type40 &
                                                                                                                                                                    Type41 &
                                                                                                                                                                    Type42 &
                                                                                                                                                                    Type43 &
                                                                                                                                                                    Type44 &
                                                                                                                                                                    Type45 &
                                                                                                                                                                    Type46 &
                                                                                                                                                                    Type47 &
                                                                                                                                                                    Type48 &
                                                                                                                                                                    Type49 &
                                                                                                                                                                    Type50,
                                                                                                                                                                    Type4
                                                                                                                                                                    > &
                                                                                                                                                                    Type4)
                                                                                                                                                                    | (Without<
                                                                                                                                                                    Type1 &
                                                                                                                                                                    Type2 &
                                                                                                                                                                    Type3 &
                                                                                                                                                                    Type4 &
                                                                                                                                                                    Type6 &
                                                                                                                                                                    Type7 &
                                                                                                                                                                    Type8 &
                                                                                                                                                                    Type9 &
                                                                                                                                                                    Type10 &
                                                                                                                                                                    Type11 &
                                                                                                                                                                    Type12 &
                                                                                                                                                                    Type13 &
                                                                                                                                                                    Type14 &
                                                                                                                                                                    Type15 &
                                                                                                                                                                    Type16 &
                                                                                                                                                                    Type17 &
                                                                                                                                                                    Type18 &
                                                                                                                                                                    Type19 &
                                                                                                                                                                    Type20 &
                                                                                                                                                                    Type21 &
                                                                                                                                                                    Type22 &
                                                                                                                                                                    Type23 &
                                                                                                                                                                    Type24 &
                                                                                                                                                                    Type25 &
                                                                                                                                                                    Type26 &
                                                                                                                                                                    Type27 &
                                                                                                                                                                    Type28 &
                                                                                                                                                                    Type29 &
                                                                                                                                                                    Type30 &
                                                                                                                                                                    Type31 &
                                                                                                                                                                    Type32 &
                                                                                                                                                                    Type33 &
                                                                                                                                                                    Type34 &
                                                                                                                                                                    Type35 &
                                                                                                                                                                    Type36 &
                                                                                                                                                                    Type37 &
                                                                                                                                                                    Type38 &
                                                                                                                                                                    Type39 &
                                                                                                                                                                    Type40 &
                                                                                                                                                                    Type41 &
                                                                                                                                                                    Type42 &
                                                                                                                                                                    Type43 &
                                                                                                                                                                    Type44 &
                                                                                                                                                                    Type45 &
                                                                                                                                                                    Type46 &
                                                                                                                                                                    Type47 &
                                                                                                                                                                    Type48 &
                                                                                                                                                                    Type49 &
                                                                                                                                                                    Type50,
                                                                                                                                                                    Type5
                                                                                                                                                                    > &
                                                                                                                                                                    Type5)
                                                                                                                                                                    | (Without<
                                                                                                                                                                    Type1 &
                                                                                                                                                                    Type2 &
                                                                                                                                                                    Type3 &
                                                                                                                                                                    Type4 &
                                                                                                                                                                    Type5 &
                                                                                                                                                                    Type7 &
                                                                                                                                                                    Type8 &
                                                                                                                                                                    Type9 &
                                                                                                                                                                    Type10 &
                                                                                                                                                                    Type11 &
                                                                                                                                                                    Type12 &
                                                                                                                                                                    Type13 &
                                                                                                                                                                    Type14 &
                                                                                                                                                                    Type15 &
                                                                                                                                                                    Type16 &
                                                                                                                                                                    Type17 &
                                                                                                                                                                    Type18 &
                                                                                                                                                                    Type19 &
                                                                                                                                                                    Type20 &
                                                                                                                                                                    Type21 &
                                                                                                                                                                    Type22 &
                                                                                                                                                                    Type23 &
                                                                                                                                                                    Type24 &
                                                                                                                                                                    Type25 &
                                                                                                                                                                    Type26 &
                                                                                                                                                                    Type27 &
                                                                                                                                                                    Type28 &
                                                                                                                                                                    Type29 &
                                                                                                                                                                    Type30 &
                                                                                                                                                                    Type31 &
                                                                                                                                                                    Type32 &
                                                                                                                                                                    Type33 &
                                                                                                                                                                    Type34 &
                                                                                                                                                                    Type35 &
                                                                                                                                                                    Type36 &
                                                                                                                                                                    Type37 &
                                                                                                                                                                    Type38 &
                                                                                                                                                                    Type39 &
                                                                                                                                                                    Type40 &
                                                                                                                                                                    Type41 &
                                                                                                                                                                    Type42 &
                                                                                                                                                                    Type43 &
                                                                                                                                                                    Type44 &
                                                                                                                                                                    Type45 &
                                                                                                                                                                    Type46 &
                                                                                                                                                                    Type47 &
                                                                                                                                                                    Type48 &
                                                                                                                                                                    Type49 &
                                                                                                                                                                    Type50,
                                                                                                                                                                    Type6
                                                                                                                                                                    > &
                                                                                                                                                                    Type6)
                                                                                                                                                                    | (Without<
                                                                                                                                                                    Type1 &
                                                                                                                                                                    Type2 &
                                                                                                                                                                    Type3 &
                                                                                                                                                                    Type4 &
                                                                                                                                                                    Type5 &
                                                                                                                                                                    Type6 &
                                                                                                                                                                    Type8 &
                                                                                                                                                                    Type9 &
                                                                                                                                                                    Type10 &
                                                                                                                                                                    Type11 &
                                                                                                                                                                    Type12 &
                                                                                                                                                                    Type13 &
                                                                                                                                                                    Type14 &
                                                                                                                                                                    Type15 &
                                                                                                                                                                    Type16 &
                                                                                                                                                                    Type17 &
                                                                                                                                                                    Type18 &
                                                                                                                                                                    Type19 &
                                                                                                                                                                    Type20 &
                                                                                                                                                                    Type21 &
                                                                                                                                                                    Type22 &
                                                                                                                                                                    Type23 &
                                                                                                                                                                    Type24 &
                                                                                                                                                                    Type25 &
                                                                                                                                                                    Type26 &
                                                                                                                                                                    Type27 &
                                                                                                                                                                    Type28 &
                                                                                                                                                                    Type29 &
                                                                                                                                                                    Type30 &
                                                                                                                                                                    Type31 &
                                                                                                                                                                    Type32 &
                                                                                                                                                                    Type33 &
                                                                                                                                                                    Type34 &
                                                                                                                                                                    Type35 &
                                                                                                                                                                    Type36 &
                                                                                                                                                                    Type37 &
                                                                                                                                                                    Type38 &
                                                                                                                                                                    Type39 &
                                                                                                                                                                    Type40 &
                                                                                                                                                                    Type41 &
                                                                                                                                                                    Type42 &
                                                                                                                                                                    Type43 &
                                                                                                                                                                    Type44 &
                                                                                                                                                                    Type45 &
                                                                                                                                                                    Type46 &
                                                                                                                                                                    Type47 &
                                                                                                                                                                    Type48 &
                                                                                                                                                                    Type49 &
                                                                                                                                                                    Type50,
                                                                                                                                                                    Type7
                                                                                                                                                                    > &
                                                                                                                                                                    Type7)
                                                                                                                                                                    | (Without<
                                                                                                                                                                    Type1 &
                                                                                                                                                                    Type2 &
                                                                                                                                                                    Type3 &
                                                                                                                                                                    Type4 &
                                                                                                                                                                    Type5 &
                                                                                                                                                                    Type6 &
                                                                                                                                                                    Type7 &
                                                                                                                                                                    Type9 &
                                                                                                                                                                    Type10 &
                                                                                                                                                                    Type11 &
                                                                                                                                                                    Type12 &
                                                                                                                                                                    Type13 &
                                                                                                                                                                    Type14 &
                                                                                                                                                                    Type15 &
                                                                                                                                                                    Type16 &
                                                                                                                                                                    Type17 &
                                                                                                                                                                    Type18 &
                                                                                                                                                                    Type19 &
                                                                                                                                                                    Type20 &
                                                                                                                                                                    Type21 &
                                                                                                                                                                    Type22 &
                                                                                                                                                                    Type23 &
                                                                                                                                                                    Type24 &
                                                                                                                                                                    Type25 &
                                                                                                                                                                    Type26 &
                                                                                                                                                                    Type27 &
                                                                                                                                                                    Type28 &
                                                                                                                                                                    Type29 &
                                                                                                                                                                    Type30 &
                                                                                                                                                                    Type31 &
                                                                                                                                                                    Type32 &
                                                                                                                                                                    Type33 &
                                                                                                                                                                    Type34 &
                                                                                                                                                                    Type35 &
                                                                                                                                                                    Type36 &
                                                                                                                                                                    Type37 &
                                                                                                                                                                    Type38 &
                                                                                                                                                                    Type39 &
                                                                                                                                                                    Type40 &
                                                                                                                                                                    Type41 &
                                                                                                                                                                    Type42 &
                                                                                                                                                                    Type43 &
                                                                                                                                                                    Type44 &
                                                                                                                                                                    Type45 &
                                                                                                                                                                    Type46 &
                                                                                                                                                                    Type47 &
                                                                                                                                                                    Type48 &
                                                                                                                                                                    Type49 &
                                                                                                                                                                    Type50,
                                                                                                                                                                    Type8
                                                                                                                                                                    > &
                                                                                                                                                                    Type8)
                                                                                                                                                                    | (Without<
                                                                                                                                                                    Type1 &
                                                                                                                                                                    Type2 &
                                                                                                                                                                    Type3 &
                                                                                                                                                                    Type4 &
                                                                                                                                                                    Type5 &
                                                                                                                                                                    Type6 &
                                                                                                                                                                    Type7 &
                                                                                                                                                                    Type8 &
                                                                                                                                                                    Type10 &
                                                                                                                                                                    Type11 &
                                                                                                                                                                    Type12 &
                                                                                                                                                                    Type13 &
                                                                                                                                                                    Type14 &
                                                                                                                                                                    Type15 &
                                                                                                                                                                    Type16 &
                                                                                                                                                                    Type17 &
                                                                                                                                                                    Type18 &
                                                                                                                                                                    Type19 &
                                                                                                                                                                    Type20 &
                                                                                                                                                                    Type21 &
                                                                                                                                                                    Type22 &
                                                                                                                                                                    Type23 &
                                                                                                                                                                    Type24 &
                                                                                                                                                                    Type25 &
                                                                                                                                                                    Type26 &
                                                                                                                                                                    Type27 &
                                                                                                                                                                    Type28 &
                                                                                                                                                                    Type29 &
                                                                                                                                                                    Type30 &
                                                                                                                                                                    Type31 &
                                                                                                                                                                    Type32 &
                                                                                                                                                                    Type33 &
                                                                                                                                                                    Type34 &
                                                                                                                                                                    Type35 &
                                                                                                                                                                    Type36 &
                                                                                                                                                                    Type37 &
                                                                                                                                                                    Type38 &
                                                                                                                                                                    Type39 &
                                                                                                                                                                    Type40 &
                                                                                                                                                                    Type41 &
                                                                                                                                                                    Type42 &
                                                                                                                                                                    Type43 &
                                                                                                                                                                    Type44 &
                                                                                                                                                                    Type45 &
                                                                                                                                                                    Type46 &
                                                                                                                                                                    Type47 &
                                                                                                                                                                    Type48 &
                                                                                                                                                                    Type49 &
                                                                                                                                                                    Type50,
                                                                                                                                                                    Type9
                                                                                                                                                                    > &
                                                                                                                                                                    Type9)
                                                                                                                                                                    | (Without<
                                                                                                                                                                    Type1 &
                                                                                                                                                                    Type2 &
                                                                                                                                                                    Type3 &
                                                                                                                                                                    Type4 &
                                                                                                                                                                    Type5 &
                                                                                                                                                                    Type6 &
                                                                                                                                                                    Type7 &
                                                                                                                                                                    Type8 &
                                                                                                                                                                    Type9 &
                                                                                                                                                                    Type11 &
                                                                                                                                                                    Type12 &
                                                                                                                                                                    Type13 &
                                                                                                                                                                    Type14 &
                                                                                                                                                                    Type15 &
                                                                                                                                                                    Type16 &
                                                                                                                                                                    Type17 &
                                                                                                                                                                    Type18 &
                                                                                                                                                                    Type19 &
                                                                                                                                                                    Type20 &
                                                                                                                                                                    Type21 &
                                                                                                                                                                    Type22 &
                                                                                                                                                                    Type23 &
                                                                                                                                                                    Type24 &
                                                                                                                                                                    Type25 &
                                                                                                                                                                    Type26 &
                                                                                                                                                                    Type27 &
                                                                                                                                                                    Type28 &
                                                                                                                                                                    Type29 &
                                                                                                                                                                    Type30 &
                                                                                                                                                                    Type31 &
                                                                                                                                                                    Type32 &
                                                                                                                                                                    Type33 &
                                                                                                                                                                    Type34 &
                                                                                                                                                                    Type35 &
                                                                                                                                                                    Type36 &
                                                                                                                                                                    Type37 &
                                                                                                                                                                    Type38 &
                                                                                                                                                                    Type39 &
                                                                                                                                                                    Type40 &
                                                                                                                                                                    Type41 &
                                                                                                                                                                    Type42 &
                                                                                                                                                                    Type43 &
                                                                                                                                                                    Type44 &
                                                                                                                                                                    Type45 &
                                                                                                                                                                    Type46 &
                                                                                                                                                                    Type47 &
                                                                                                                                                                    Type48 &
                                                                                                                                                                    Type49 &
                                                                                                                                                                    Type50,
                                                                                                                                                                    Type10
                                                                                                                                                                    > &
                                                                                                                                                                    Type10)
                                                                                                                                                                    | (Without<
                                                                                                                                                                    Type1 &
                                                                                                                                                                    Type2 &
                                                                                                                                                                    Type3 &
                                                                                                                                                                    Type4 &
                                                                                                                                                                    Type5 &
                                                                                                                                                                    Type6 &
                                                                                                                                                                    Type7 &
                                                                                                                                                                    Type8 &
                                                                                                                                                                    Type9 &
                                                                                                                                                                    Type10 &
                                                                                                                                                                    Type12 &
                                                                                                                                                                    Type13 &
                                                                                                                                                                    Type14 &
                                                                                                                                                                    Type15 &
                                                                                                                                                                    Type16 &
                                                                                                                                                                    Type17 &
                                                                                                                                                                    Type18 &
                                                                                                                                                                    Type19 &
                                                                                                                                                                    Type20 &
                                                                                                                                                                    Type21 &
                                                                                                                                                                    Type22 &
                                                                                                                                                                    Type23 &
                                                                                                                                                                    Type24 &
                                                                                                                                                                    Type25 &
                                                                                                                                                                    Type26 &
                                                                                                                                                                    Type27 &
                                                                                                                                                                    Type28 &
                                                                                                                                                                    Type29 &
                                                                                                                                                                    Type30 &
                                                                                                                                                                    Type31 &
                                                                                                                                                                    Type32 &
                                                                                                                                                                    Type33 &
                                                                                                                                                                    Type34 &
                                                                                                                                                                    Type35 &
                                                                                                                                                                    Type36 &
                                                                                                                                                                    Type37 &
                                                                                                                                                                    Type38 &
                                                                                                                                                                    Type39 &
                                                                                                                                                                    Type40 &
                                                                                                                                                                    Type41 &
                                                                                                                                                                    Type42 &
                                                                                                                                                                    Type43 &
                                                                                                                                                                    Type44 &
                                                                                                                                                                    Type45 &
                                                                                                                                                                    Type46 &
                                                                                                                                                                    Type47 &
                                                                                                                                                                    Type48 &
                                                                                                                                                                    Type49 &
                                                                                                                                                                    Type50,
                                                                                                                                                                    Type11
                                                                                                                                                                    > &
                                                                                                                                                                    Type11)
                                                                                                                                                                    | (Without<
                                                                                                                                                                    Type1 &
                                                                                                                                                                    Type2 &
                                                                                                                                                                    Type3 &
                                                                                                                                                                    Type4 &
                                                                                                                                                                    Type5 &
                                                                                                                                                                    Type6 &
                                                                                                                                                                    Type7 &
                                                                                                                                                                    Type8 &
                                                                                                                                                                    Type9 &
                                                                                                                                                                    Type10 &
                                                                                                                                                                    Type11 &
                                                                                                                                                                    Type13 &
                                                                                                                                                                    Type14 &
                                                                                                                                                                    Type15 &
                                                                                                                                                                    Type16 &
                                                                                                                                                                    Type17 &
                                                                                                                                                                    Type18 &
                                                                                                                                                                    Type19 &
                                                                                                                                                                    Type20 &
                                                                                                                                                                    Type21 &
                                                                                                                                                                    Type22 &
                                                                                                                                                                    Type23 &
                                                                                                                                                                    Type24 &
                                                                                                                                                                    Type25 &
                                                                                                                                                                    Type26 &
                                                                                                                                                                    Type27 &
                                                                                                                                                                    Type28 &
                                                                                                                                                                    Type29 &
                                                                                                                                                                    Type30 &
                                                                                                                                                                    Type31 &
                                                                                                                                                                    Type32 &
                                                                                                                                                                    Type33 &
                                                                                                                                                                    Type34 &
                                                                                                                                                                    Type35 &
                                                                                                                                                                    Type36 &
                                                                                                                                                                    Type37 &
                                                                                                                                                                    Type38 &
                                                                                                                                                                    Type39 &
                                                                                                                                                                    Type40 &
                                                                                                                                                                    Type41 &
                                                                                                                                                                    Type42 &
                                                                                                                                                                    Type43 &
                                                                                                                                                                    Type44 &
                                                                                                                                                                    Type45 &
                                                                                                                                                                    Type46 &
                                                                                                                                                                    Type47 &
                                                                                                                                                                    Type48 &
                                                                                                                                                                    Type49 &
                                                                                                                                                                    Type50,
                                                                                                                                                                    Type12
                                                                                                                                                                    > &
                                                                                                                                                                    Type12)
                                                                                                                                                                    | (Without<
                                                                                                                                                                    Type1 &
                                                                                                                                                                    Type2 &
                                                                                                                                                                    Type3 &
                                                                                                                                                                    Type4 &
                                                                                                                                                                    Type5 &
                                                                                                                                                                    Type6 &
                                                                                                                                                                    Type7 &
                                                                                                                                                                    Type8 &
                                                                                                                                                                    Type9 &
                                                                                                                                                                    Type10 &
                                                                                                                                                                    Type11 &
                                                                                                                                                                    Type12 &
                                                                                                                                                                    Type14 &
                                                                                                                                                                    Type15 &
                                                                                                                                                                    Type16 &
                                                                                                                                                                    Type17 &
                                                                                                                                                                    Type18 &
                                                                                                                                                                    Type19 &
                                                                                                                                                                    Type20 &
                                                                                                                                                                    Type21 &
                                                                                                                                                                    Type22 &
                                                                                                                                                                    Type23 &
                                                                                                                                                                    Type24 &
                                                                                                                                                                    Type25 &
                                                                                                                                                                    Type26 &
                                                                                                                                                                    Type27 &
                                                                                                                                                                    Type28 &
                                                                                                                                                                    Type29 &
                                                                                                                                                                    Type30 &
                                                                                                                                                                    Type31 &
                                                                                                                                                                    Type32 &
                                                                                                                                                                    Type33 &
                                                                                                                                                                    Type34 &
                                                                                                                                                                    Type35 &
                                                                                                                                                                    Type36 &
                                                                                                                                                                    Type37 &
                                                                                                                                                                    Type38 &
                                                                                                                                                                    Type39 &
                                                                                                                                                                    Type40 &
                                                                                                                                                                    Type41 &
                                                                                                                                                                    Type42 &
                                                                                                                                                                    Type43 &
                                                                                                                                                                    Type44 &
                                                                                                                                                                    Type45 &
                                                                                                                                                                    Type46 &
                                                                                                                                                                    Type47 &
                                                                                                                                                                    Type48 &
                                                                                                                                                                    Type49 &
                                                                                                                                                                    Type50,
                                                                                                                                                                    Type13
                                                                                                                                                                    > &
                                                                                                                                                                    Type13)
                                                                                                                                                                    | (Without<
                                                                                                                                                                    Type1 &
                                                                                                                                                                    Type2 &
                                                                                                                                                                    Type3 &
                                                                                                                                                                    Type4 &
                                                                                                                                                                    Type5 &
                                                                                                                                                                    Type6 &
                                                                                                                                                                    Type7 &
                                                                                                                                                                    Type8 &
                                                                                                                                                                    Type9 &
                                                                                                                                                                    Type10 &
                                                                                                                                                                    Type11 &
                                                                                                                                                                    Type12 &
                                                                                                                                                                    Type13 &
                                                                                                                                                                    Type15 &
                                                                                                                                                                    Type16 &
                                                                                                                                                                    Type17 &
                                                                                                                                                                    Type18 &
                                                                                                                                                                    Type19 &
                                                                                                                                                                    Type20 &
                                                                                                                                                                    Type21 &
                                                                                                                                                                    Type22 &
                                                                                                                                                                    Type23 &
                                                                                                                                                                    Type24 &
                                                                                                                                                                    Type25 &
                                                                                                                                                                    Type26 &
                                                                                                                                                                    Type27 &
                                                                                                                                                                    Type28 &
                                                                                                                                                                    Type29 &
                                                                                                                                                                    Type30 &
                                                                                                                                                                    Type31 &
                                                                                                                                                                    Type32 &
                                                                                                                                                                    Type33 &
                                                                                                                                                                    Type34 &
                                                                                                                                                                    Type35 &
                                                                                                                                                                    Type36 &
                                                                                                                                                                    Type37 &
                                                                                                                                                                    Type38 &
                                                                                                                                                                    Type39 &
                                                                                                                                                                    Type40 &
                                                                                                                                                                    Type41 &
                                                                                                                                                                    Type42 &
                                                                                                                                                                    Type43 &
                                                                                                                                                                    Type44 &
                                                                                                                                                                    Type45 &
                                                                                                                                                                    Type46 &
                                                                                                                                                                    Type47 &
                                                                                                                                                                    Type48 &
                                                                                                                                                                    Type49 &
                                                                                                                                                                    Type50,
                                                                                                                                                                    Type14
                                                                                                                                                                    > &
                                                                                                                                                                    Type14)
                                                                                                                                                                    | (Without<
                                                                                                                                                                    Type1 &
                                                                                                                                                                    Type2 &
                                                                                                                                                                    Type3 &
                                                                                                                                                                    Type4 &
                                                                                                                                                                    Type5 &
                                                                                                                                                                    Type6 &
                                                                                                                                                                    Type7 &
                                                                                                                                                                    Type8 &
                                                                                                                                                                    Type9 &
                                                                                                                                                                    Type10 &
                                                                                                                                                                    Type11 &
                                                                                                                                                                    Type12 &
                                                                                                                                                                    Type13 &
                                                                                                                                                                    Type14 &
                                                                                                                                                                    Type16 &
                                                                                                                                                                    Type17 &
                                                                                                                                                                    Type18 &
                                                                                                                                                                    Type19 &
                                                                                                                                                                    Type20 &
                                                                                                                                                                    Type21 &
                                                                                                                                                                    Type22 &
                                                                                                                                                                    Type23 &
                                                                                                                                                                    Type24 &
                                                                                                                                                                    Type25 &
                                                                                                                                                                    Type26 &
                                                                                                                                                                    Type27 &
                                                                                                                                                                    Type28 &
                                                                                                                                                                    Type29 &
                                                                                                                                                                    Type30 &
                                                                                                                                                                    Type31 &
                                                                                                                                                                    Type32 &
                                                                                                                                                                    Type33 &
                                                                                                                                                                    Type34 &
                                                                                                                                                                    Type35 &
                                                                                                                                                                    Type36 &
                                                                                                                                                                    Type37 &
                                                                                                                                                                    Type38 &
                                                                                                                                                                    Type39 &
                                                                                                                                                                    Type40 &
                                                                                                                                                                    Type41 &
                                                                                                                                                                    Type42 &
                                                                                                                                                                    Type43 &
                                                                                                                                                                    Type44 &
                                                                                                                                                                    Type45 &
                                                                                                                                                                    Type46 &
                                                                                                                                                                    Type47 &
                                                                                                                                                                    Type48 &
                                                                                                                                                                    Type49 &
                                                                                                                                                                    Type50,
                                                                                                                                                                    Type15
                                                                                                                                                                    > &
                                                                                                                                                                    Type15)
                                                                                                                                                                    | (Without<
                                                                                                                                                                    Type1 &
                                                                                                                                                                    Type2 &
                                                                                                                                                                    Type3 &
                                                                                                                                                                    Type4 &
                                                                                                                                                                    Type5 &
                                                                                                                                                                    Type6 &
                                                                                                                                                                    Type7 &
                                                                                                                                                                    Type8 &
                                                                                                                                                                    Type9 &
                                                                                                                                                                    Type10 &
                                                                                                                                                                    Type11 &
                                                                                                                                                                    Type12 &
                                                                                                                                                                    Type13 &
                                                                                                                                                                    Type14 &
                                                                                                                                                                    Type15 &
                                                                                                                                                                    Type17 &
                                                                                                                                                                    Type18 &
                                                                                                                                                                    Type19 &
                                                                                                                                                                    Type20 &
                                                                                                                                                                    Type21 &
                                                                                                                                                                    Type22 &
                                                                                                                                                                    Type23 &
                                                                                                                                                                    Type24 &
                                                                                                                                                                    Type25 &
                                                                                                                                                                    Type26 &
                                                                                                                                                                    Type27 &
                                                                                                                                                                    Type28 &
                                                                                                                                                                    Type29 &
                                                                                                                                                                    Type30 &
                                                                                                                                                                    Type31 &
                                                                                                                                                                    Type32 &
                                                                                                                                                                    Type33 &
                                                                                                                                                                    Type34 &
                                                                                                                                                                    Type35 &
                                                                                                                                                                    Type36 &
                                                                                                                                                                    Type37 &
                                                                                                                                                                    Type38 &
                                                                                                                                                                    Type39 &
                                                                                                                                                                    Type40 &
                                                                                                                                                                    Type41 &
                                                                                                                                                                    Type42 &
                                                                                                                                                                    Type43 &
                                                                                                                                                                    Type44 &
                                                                                                                                                                    Type45 &
                                                                                                                                                                    Type46 &
                                                                                                                                                                    Type47 &
                                                                                                                                                                    Type48 &
                                                                                                                                                                    Type49 &
                                                                                                                                                                    Type50,
                                                                                                                                                                    Type16
                                                                                                                                                                    > &
                                                                                                                                                                    Type16)
                                                                                                                                                                    | (Without<
                                                                                                                                                                    Type1 &
                                                                                                                                                                    Type2 &
                                                                                                                                                                    Type3 &
                                                                                                                                                                    Type4 &
                                                                                                                                                                    Type5 &
                                                                                                                                                                    Type6 &
                                                                                                                                                                    Type7 &
                                                                                                                                                                    Type8 &
                                                                                                                                                                    Type9 &
                                                                                                                                                                    Type10 &
                                                                                                                                                                    Type11 &
                                                                                                                                                                    Type12 &
                                                                                                                                                                    Type13 &
                                                                                                                                                                    Type14 &
                                                                                                                                                                    Type15 &
                                                                                                                                                                    Type16 &
                                                                                                                                                                    Type18 &
                                                                                                                                                                    Type19 &
                                                                                                                                                                    Type20 &
                                                                                                                                                                    Type21 &
                                                                                                                                                                    Type22 &
                                                                                                                                                                    Type23 &
                                                                                                                                                                    Type24 &
                                                                                                                                                                    Type25 &
                                                                                                                                                                    Type26 &
                                                                                                                                                                    Type27 &
                                                                                                                                                                    Type28 &
                                                                                                                                                                    Type29 &
                                                                                                                                                                    Type30 &
                                                                                                                                                                    Type31 &
                                                                                                                                                                    Type32 &
                                                                                                                                                                    Type33 &
                                                                                                                                                                    Type34 &
                                                                                                                                                                    Type35 &
                                                                                                                                                                    Type36 &
                                                                                                                                                                    Type37 &
                                                                                                                                                                    Type38 &
                                                                                                                                                                    Type39 &
                                                                                                                                                                    Type40 &
                                                                                                                                                                    Type41 &
                                                                                                                                                                    Type42 &
                                                                                                                                                                    Type43 &
                                                                                                                                                                    Type44 &
                                                                                                                                                                    Type45 &
                                                                                                                                                                    Type46 &
                                                                                                                                                                    Type47 &
                                                                                                                                                                    Type48 &
                                                                                                                                                                    Type49 &
                                                                                                                                                                    Type50,
                                                                                                                                                                    Type17
                                                                                                                                                                    > &
                                                                                                                                                                    Type17)
                                                                                                                                                                    | (Without<
                                                                                                                                                                    Type1 &
                                                                                                                                                                    Type2 &
                                                                                                                                                                    Type3 &
                                                                                                                                                                    Type4 &
                                                                                                                                                                    Type5 &
                                                                                                                                                                    Type6 &
                                                                                                                                                                    Type7 &
                                                                                                                                                                    Type8 &
                                                                                                                                                                    Type9 &
                                                                                                                                                                    Type10 &
                                                                                                                                                                    Type11 &
                                                                                                                                                                    Type12 &
                                                                                                                                                                    Type13 &
                                                                                                                                                                    Type14 &
                                                                                                                                                                    Type15 &
                                                                                                                                                                    Type16 &
                                                                                                                                                                    Type17 &
                                                                                                                                                                    Type19 &
                                                                                                                                                                    Type20 &
                                                                                                                                                                    Type21 &
                                                                                                                                                                    Type22 &
                                                                                                                                                                    Type23 &
                                                                                                                                                                    Type24 &
                                                                                                                                                                    Type25 &
                                                                                                                                                                    Type26 &
                                                                                                                                                                    Type27 &
                                                                                                                                                                    Type28 &
                                                                                                                                                                    Type29 &
                                                                                                                                                                    Type30 &
                                                                                                                                                                    Type31 &
                                                                                                                                                                    Type32 &
                                                                                                                                                                    Type33 &
                                                                                                                                                                    Type34 &
                                                                                                                                                                    Type35 &
                                                                                                                                                                    Type36 &
                                                                                                                                                                    Type37 &
                                                                                                                                                                    Type38 &
                                                                                                                                                                    Type39 &
                                                                                                                                                                    Type40 &
                                                                                                                                                                    Type41 &
                                                                                                                                                                    Type42 &
                                                                                                                                                                    Type43 &
                                                                                                                                                                    Type44 &
                                                                                                                                                                    Type45 &
                                                                                                                                                                    Type46 &
                                                                                                                                                                    Type47 &
                                                                                                                                                                    Type48 &
                                                                                                                                                                    Type49 &
                                                                                                                                                                    Type50,
                                                                                                                                                                    Type18
                                                                                                                                                                    > &
                                                                                                                                                                    Type18)
                                                                                                                                                                    | (Without<
                                                                                                                                                                    Type1 &
                                                                                                                                                                    Type2 &
                                                                                                                                                                    Type3 &
                                                                                                                                                                    Type4 &
                                                                                                                                                                    Type5 &
                                                                                                                                                                    Type6 &
                                                                                                                                                                    Type7 &
                                                                                                                                                                    Type8 &
                                                                                                                                                                    Type9 &
                                                                                                                                                                    Type10 &
                                                                                                                                                                    Type11 &
                                                                                                                                                                    Type12 &
                                                                                                                                                                    Type13 &
                                                                                                                                                                    Type14 &
                                                                                                                                                                    Type15 &
                                                                                                                                                                    Type16 &
                                                                                                                                                                    Type17 &
                                                                                                                                                                    Type18 &
                                                                                                                                                                    Type20 &
                                                                                                                                                                    Type21 &
                                                                                                                                                                    Type22 &
                                                                                                                                                                    Type23 &
                                                                                                                                                                    Type24 &
                                                                                                                                                                    Type25 &
                                                                                                                                                                    Type26 &
                                                                                                                                                                    Type27 &
                                                                                                                                                                    Type28 &
                                                                                                                                                                    Type29 &
                                                                                                                                                                    Type30 &
                                                                                                                                                                    Type31 &
                                                                                                                                                                    Type32 &
                                                                                                                                                                    Type33 &
                                                                                                                                                                    Type34 &
                                                                                                                                                                    Type35 &
                                                                                                                                                                    Type36 &
                                                                                                                                                                    Type37 &
                                                                                                                                                                    Type38 &
                                                                                                                                                                    Type39 &
                                                                                                                                                                    Type40 &
                                                                                                                                                                    Type41 &
                                                                                                                                                                    Type42 &
                                                                                                                                                                    Type43 &
                                                                                                                                                                    Type44 &
                                                                                                                                                                    Type45 &
                                                                                                                                                                    Type46 &
                                                                                                                                                                    Type47 &
                                                                                                                                                                    Type48 &
                                                                                                                                                                    Type49 &
                                                                                                                                                                    Type50,
                                                                                                                                                                    Type19
                                                                                                                                                                    > &
                                                                                                                                                                    Type19)
                                                                                                                                                                    | (Without<
                                                                                                                                                                    Type1 &
                                                                                                                                                                    Type2 &
                                                                                                                                                                    Type3 &
                                                                                                                                                                    Type4 &
                                                                                                                                                                    Type5 &
                                                                                                                                                                    Type6 &
                                                                                                                                                                    Type7 &
                                                                                                                                                                    Type8 &
                                                                                                                                                                    Type9 &
                                                                                                                                                                    Type10 &
                                                                                                                                                                    Type11 &
                                                                                                                                                                    Type12 &
                                                                                                                                                                    Type13 &
                                                                                                                                                                    Type14 &
                                                                                                                                                                    Type15 &
                                                                                                                                                                    Type16 &
                                                                                                                                                                    Type17 &
                                                                                                                                                                    Type18 &
                                                                                                                                                                    Type19 &
                                                                                                                                                                    Type21 &
                                                                                                                                                                    Type22 &
                                                                                                                                                                    Type23 &
                                                                                                                                                                    Type24 &
                                                                                                                                                                    Type25 &
                                                                                                                                                                    Type26 &
                                                                                                                                                                    Type27 &
                                                                                                                                                                    Type28 &
                                                                                                                                                                    Type29 &
                                                                                                                                                                    Type30 &
                                                                                                                                                                    Type31 &
                                                                                                                                                                    Type32 &
                                                                                                                                                                    Type33 &
                                                                                                                                                                    Type34 &
                                                                                                                                                                    Type35 &
                                                                                                                                                                    Type36 &
                                                                                                                                                                    Type37 &
                                                                                                                                                                    Type38 &
                                                                                                                                                                    Type39 &
                                                                                                                                                                    Type40 &
                                                                                                                                                                    Type41 &
                                                                                                                                                                    Type42 &
                                                                                                                                                                    Type43 &
                                                                                                                                                                    Type44 &
                                                                                                                                                                    Type45 &
                                                                                                                                                                    Type46 &
                                                                                                                                                                    Type47 &
                                                                                                                                                                    Type48 &
                                                                                                                                                                    Type49 &
                                                                                                                                                                    Type50,
                                                                                                                                                                    Type20
                                                                                                                                                                    > &
                                                                                                                                                                    Type20)
                                                                                                                                                                    | (Without<
                                                                                                                                                                    Type1 &
                                                                                                                                                                    Type2 &
                                                                                                                                                                    Type3 &
                                                                                                                                                                    Type4 &
                                                                                                                                                                    Type5 &
                                                                                                                                                                    Type6 &
                                                                                                                                                                    Type7 &
                                                                                                                                                                    Type8 &
                                                                                                                                                                    Type9 &
                                                                                                                                                                    Type10 &
                                                                                                                                                                    Type11 &
                                                                                                                                                                    Type12 &
                                                                                                                                                                    Type13 &
                                                                                                                                                                    Type14 &
                                                                                                                                                                    Type15 &
                                                                                                                                                                    Type16 &
                                                                                                                                                                    Type17 &
                                                                                                                                                                    Type18 &
                                                                                                                                                                    Type19 &
                                                                                                                                                                    Type20 &
                                                                                                                                                                    Type22 &
                                                                                                                                                                    Type23 &
                                                                                                                                                                    Type24 &
                                                                                                                                                                    Type25 &
                                                                                                                                                                    Type26 &
                                                                                                                                                                    Type27 &
                                                                                                                                                                    Type28 &
                                                                                                                                                                    Type29 &
                                                                                                                                                                    Type30 &
                                                                                                                                                                    Type31 &
                                                                                                                                                                    Type32 &
                                                                                                                                                                    Type33 &
                                                                                                                                                                    Type34 &
                                                                                                                                                                    Type35 &
                                                                                                                                                                    Type36 &
                                                                                                                                                                    Type37 &
                                                                                                                                                                    Type38 &
                                                                                                                                                                    Type39 &
                                                                                                                                                                    Type40 &
                                                                                                                                                                    Type41 &
                                                                                                                                                                    Type42 &
                                                                                                                                                                    Type43 &
                                                                                                                                                                    Type44 &
                                                                                                                                                                    Type45 &
                                                                                                                                                                    Type46 &
                                                                                                                                                                    Type47 &
                                                                                                                                                                    Type48 &
                                                                                                                                                                    Type49 &
                                                                                                                                                                    Type50,
                                                                                                                                                                    Type21
                                                                                                                                                                    > &
                                                                                                                                                                    Type21)
                                                                                                                                                                    | (Without<
                                                                                                                                                                    Type1 &
                                                                                                                                                                    Type2 &
                                                                                                                                                                    Type3 &
                                                                                                                                                                    Type4 &
                                                                                                                                                                    Type5 &
                                                                                                                                                                    Type6 &
                                                                                                                                                                    Type7 &
                                                                                                                                                                    Type8 &
                                                                                                                                                                    Type9 &
                                                                                                                                                                    Type10 &
                                                                                                                                                                    Type11 &
                                                                                                                                                                    Type12 &
                                                                                                                                                                    Type13 &
                                                                                                                                                                    Type14 &
                                                                                                                                                                    Type15 &
                                                                                                                                                                    Type16 &
                                                                                                                                                                    Type17 &
                                                                                                                                                                    Type18 &
                                                                                                                                                                    Type19 &
                                                                                                                                                                    Type20 &
                                                                                                                                                                    Type21 &
                                                                                                                                                                    Type23 &
                                                                                                                                                                    Type24 &
                                                                                                                                                                    Type25 &
                                                                                                                                                                    Type26 &
                                                                                                                                                                    Type27 &
                                                                                                                                                                    Type28 &
                                                                                                                                                                    Type29 &
                                                                                                                                                                    Type30 &
                                                                                                                                                                    Type31 &
                                                                                                                                                                    Type32 &
                                                                                                                                                                    Type33 &
                                                                                                                                                                    Type34 &
                                                                                                                                                                    Type35 &
                                                                                                                                                                    Type36 &
                                                                                                                                                                    Type37 &
                                                                                                                                                                    Type38 &
                                                                                                                                                                    Type39 &
                                                                                                                                                                    Type40 &
                                                                                                                                                                    Type41 &
                                                                                                                                                                    Type42 &
                                                                                                                                                                    Type43 &
                                                                                                                                                                    Type44 &
                                                                                                                                                                    Type45 &
                                                                                                                                                                    Type46 &
                                                                                                                                                                    Type47 &
                                                                                                                                                                    Type48 &
                                                                                                                                                                    Type49 &
                                                                                                                                                                    Type50,
                                                                                                                                                                    Type22
                                                                                                                                                                    > &
                                                                                                                                                                    Type22)
                                                                                                                                                                    | (Without<
                                                                                                                                                                    Type1 &
                                                                                                                                                                    Type2 &
                                                                                                                                                                    Type3 &
                                                                                                                                                                    Type4 &
                                                                                                                                                                    Type5 &
                                                                                                                                                                    Type6 &
                                                                                                                                                                    Type7 &
                                                                                                                                                                    Type8 &
                                                                                                                                                                    Type9 &
                                                                                                                                                                    Type10 &
                                                                                                                                                                    Type11 &
                                                                                                                                                                    Type12 &
                                                                                                                                                                    Type13 &
                                                                                                                                                                    Type14 &
                                                                                                                                                                    Type15 &
                                                                                                                                                                    Type16 &
                                                                                                                                                                    Type17 &
                                                                                                                                                                    Type18 &
                                                                                                                                                                    Type19 &
                                                                                                                                                                    Type20 &
                                                                                                                                                                    Type21 &
                                                                                                                                                                    Type22 &
                                                                                                                                                                    Type24 &
                                                                                                                                                                    Type25 &
                                                                                                                                                                    Type26 &
                                                                                                                                                                    Type27 &
                                                                                                                                                                    Type28 &
                                                                                                                                                                    Type29 &
                                                                                                                                                                    Type30 &
                                                                                                                                                                    Type31 &
                                                                                                                                                                    Type32 &
                                                                                                                                                                    Type33 &
                                                                                                                                                                    Type34 &
                                                                                                                                                                    Type35 &
                                                                                                                                                                    Type36 &
                                                                                                                                                                    Type37 &
                                                                                                                                                                    Type38 &
                                                                                                                                                                    Type39 &
                                                                                                                                                                    Type40 &
                                                                                                                                                                    Type41 &
                                                                                                                                                                    Type42 &
                                                                                                                                                                    Type43 &
                                                                                                                                                                    Type44 &
                                                                                                                                                                    Type45 &
                                                                                                                                                                    Type46 &
                                                                                                                                                                    Type47 &
                                                                                                                                                                    Type48 &
                                                                                                                                                                    Type49 &
                                                                                                                                                                    Type50,
                                                                                                                                                                    Type23
                                                                                                                                                                    > &
                                                                                                                                                                    Type23)
                                                                                                                                                                    | (Without<
                                                                                                                                                                    Type1 &
                                                                                                                                                                    Type2 &
                                                                                                                                                                    Type3 &
                                                                                                                                                                    Type4 &
                                                                                                                                                                    Type5 &
                                                                                                                                                                    Type6 &
                                                                                                                                                                    Type7 &
                                                                                                                                                                    Type8 &
                                                                                                                                                                    Type9 &
                                                                                                                                                                    Type10 &
                                                                                                                                                                    Type11 &
                                                                                                                                                                    Type12 &
                                                                                                                                                                    Type13 &
                                                                                                                                                                    Type14 &
                                                                                                                                                                    Type15 &
                                                                                                                                                                    Type16 &
                                                                                                                                                                    Type17 &
                                                                                                                                                                    Type18 &
                                                                                                                                                                    Type19 &
                                                                                                                                                                    Type20 &
                                                                                                                                                                    Type21 &
                                                                                                                                                                    Type22 &
                                                                                                                                                                    Type23 &
                                                                                                                                                                    Type25 &
                                                                                                                                                                    Type26 &
                                                                                                                                                                    Type27 &
                                                                                                                                                                    Type28 &
                                                                                                                                                                    Type29 &
                                                                                                                                                                    Type30 &
                                                                                                                                                                    Type31 &
                                                                                                                                                                    Type32 &
                                                                                                                                                                    Type33 &
                                                                                                                                                                    Type34 &
                                                                                                                                                                    Type35 &
                                                                                                                                                                    Type36 &
                                                                                                                                                                    Type37 &
                                                                                                                                                                    Type38 &
                                                                                                                                                                    Type39 &
                                                                                                                                                                    Type40 &
                                                                                                                                                                    Type41 &
                                                                                                                                                                    Type42 &
                                                                                                                                                                    Type43 &
                                                                                                                                                                    Type44 &
                                                                                                                                                                    Type45 &
                                                                                                                                                                    Type46 &
                                                                                                                                                                    Type47 &
                                                                                                                                                                    Type48 &
                                                                                                                                                                    Type49 &
                                                                                                                                                                    Type50,
                                                                                                                                                                    Type24
                                                                                                                                                                    > &
                                                                                                                                                                    Type24)
                                                                                                                                                                    | (Without<
                                                                                                                                                                    Type1 &
                                                                                                                                                                    Type2 &
                                                                                                                                                                    Type3 &
                                                                                                                                                                    Type4 &
                                                                                                                                                                    Type5 &
                                                                                                                                                                    Type6 &
                                                                                                                                                                    Type7 &
                                                                                                                                                                    Type8 &
                                                                                                                                                                    Type9 &
                                                                                                                                                                    Type10 &
                                                                                                                                                                    Type11 &
                                                                                                                                                                    Type12 &
                                                                                                                                                                    Type13 &
                                                                                                                                                                    Type14 &
                                                                                                                                                                    Type15 &
                                                                                                                                                                    Type16 &
                                                                                                                                                                    Type17 &
                                                                                                                                                                    Type18 &
                                                                                                                                                                    Type19 &
                                                                                                                                                                    Type20 &
                                                                                                                                                                    Type21 &
                                                                                                                                                                    Type22 &
                                                                                                                                                                    Type23 &
                                                                                                                                                                    Type24 &
                                                                                                                                                                    Type26 &
                                                                                                                                                                    Type27 &
                                                                                                                                                                    Type28 &
                                                                                                                                                                    Type29 &
                                                                                                                                                                    Type30 &
                                                                                                                                                                    Type31 &
                                                                                                                                                                    Type32 &
                                                                                                                                                                    Type33 &
                                                                                                                                                                    Type34 &
                                                                                                                                                                    Type35 &
                                                                                                                                                                    Type36 &
                                                                                                                                                                    Type37 &
                                                                                                                                                                    Type38 &
                                                                                                                                                                    Type39 &
                                                                                                                                                                    Type40 &
                                                                                                                                                                    Type41 &
                                                                                                                                                                    Type42 &
                                                                                                                                                                    Type43 &
                                                                                                                                                                    Type44 &
                                                                                                                                                                    Type45 &
                                                                                                                                                                    Type46 &
                                                                                                                                                                    Type47 &
                                                                                                                                                                    Type48 &
                                                                                                                                                                    Type49 &
                                                                                                                                                                    Type50,
                                                                                                                                                                    Type25
                                                                                                                                                                    > &
                                                                                                                                                                    Type25)
                                                                                                                                                                    | (Without<
                                                                                                                                                                    Type1 &
                                                                                                                                                                    Type2 &
                                                                                                                                                                    Type3 &
                                                                                                                                                                    Type4 &
                                                                                                                                                                    Type5 &
                                                                                                                                                                    Type6 &
                                                                                                                                                                    Type7 &
                                                                                                                                                                    Type8 &
                                                                                                                                                                    Type9 &
                                                                                                                                                                    Type10 &
                                                                                                                                                                    Type11 &
                                                                                                                                                                    Type12 &
                                                                                                                                                                    Type13 &
                                                                                                                                                                    Type14 &
                                                                                                                                                                    Type15 &
                                                                                                                                                                    Type16 &
                                                                                                                                                                    Type17 &
                                                                                                                                                                    Type18 &
                                                                                                                                                                    Type19 &
                                                                                                                                                                    Type20 &
                                                                                                                                                                    Type21 &
                                                                                                                                                                    Type22 &
                                                                                                                                                                    Type23 &
                                                                                                                                                                    Type24 &
                                                                                                                                                                    Type25 &
                                                                                                                                                                    Type27 &
                                                                                                                                                                    Type28 &
                                                                                                                                                                    Type29 &
                                                                                                                                                                    Type30 &
                                                                                                                                                                    Type31 &
                                                                                                                                                                    Type32 &
                                                                                                                                                                    Type33 &
                                                                                                                                                                    Type34 &
                                                                                                                                                                    Type35 &
                                                                                                                                                                    Type36 &
                                                                                                                                                                    Type37 &
                                                                                                                                                                    Type38 &
                                                                                                                                                                    Type39 &
                                                                                                                                                                    Type40 &
                                                                                                                                                                    Type41 &
                                                                                                                                                                    Type42 &
                                                                                                                                                                    Type43 &
                                                                                                                                                                    Type44 &
                                                                                                                                                                    Type45 &
                                                                                                                                                                    Type46 &
                                                                                                                                                                    Type47 &
                                                                                                                                                                    Type48 &
                                                                                                                                                                    Type49 &
                                                                                                                                                                    Type50,
                                                                                                                                                                    Type26
                                                                                                                                                                    > &
                                                                                                                                                                    Type26)
                                                                                                                                                                    | (Without<
                                                                                                                                                                    Type1 &
                                                                                                                                                                    Type2 &
                                                                                                                                                                    Type3 &
                                                                                                                                                                    Type4 &
                                                                                                                                                                    Type5 &
                                                                                                                                                                    Type6 &
                                                                                                                                                                    Type7 &
                                                                                                                                                                    Type8 &
                                                                                                                                                                    Type9 &
                                                                                                                                                                    Type10 &
                                                                                                                                                                    Type11 &
                                                                                                                                                                    Type12 &
                                                                                                                                                                    Type13 &
                                                                                                                                                                    Type14 &
                                                                                                                                                                    Type15 &
                                                                                                                                                                    Type16 &
                                                                                                                                                                    Type17 &
                                                                                                                                                                    Type18 &
                                                                                                                                                                    Type19 &
                                                                                                                                                                    Type20 &
                                                                                                                                                                    Type21 &
                                                                                                                                                                    Type22 &
                                                                                                                                                                    Type23 &
                                                                                                                                                                    Type24 &
                                                                                                                                                                    Type25 &
                                                                                                                                                                    Type26 &
                                                                                                                                                                    Type28 &
                                                                                                                                                                    Type29 &
                                                                                                                                                                    Type30 &
                                                                                                                                                                    Type31 &
                                                                                                                                                                    Type32 &
                                                                                                                                                                    Type33 &
                                                                                                                                                                    Type34 &
                                                                                                                                                                    Type35 &
                                                                                                                                                                    Type36 &
                                                                                                                                                                    Type37 &
                                                                                                                                                                    Type38 &
                                                                                                                                                                    Type39 &
                                                                                                                                                                    Type40 &
                                                                                                                                                                    Type41 &
                                                                                                                                                                    Type42 &
                                                                                                                                                                    Type43 &
                                                                                                                                                                    Type44 &
                                                                                                                                                                    Type45 &
                                                                                                                                                                    Type46 &
                                                                                                                                                                    Type47 &
                                                                                                                                                                    Type48 &
                                                                                                                                                                    Type49 &
                                                                                                                                                                    Type50,
                                                                                                                                                                    Type27
                                                                                                                                                                    > &
                                                                                                                                                                    Type27)
                                                                                                                                                                    | (Without<
                                                                                                                                                                    Type1 &
                                                                                                                                                                    Type2 &
                                                                                                                                                                    Type3 &
                                                                                                                                                                    Type4 &
                                                                                                                                                                    Type5 &
                                                                                                                                                                    Type6 &
                                                                                                                                                                    Type7 &
                                                                                                                                                                    Type8 &
                                                                                                                                                                    Type9 &
                                                                                                                                                                    Type10 &
                                                                                                                                                                    Type11 &
                                                                                                                                                                    Type12 &
                                                                                                                                                                    Type13 &
                                                                                                                                                                    Type14 &
                                                                                                                                                                    Type15 &
                                                                                                                                                                    Type16 &
                                                                                                                                                                    Type17 &
                                                                                                                                                                    Type18 &
                                                                                                                                                                    Type19 &
                                                                                                                                                                    Type20 &
                                                                                                                                                                    Type21 &
                                                                                                                                                                    Type22 &
                                                                                                                                                                    Type23 &
                                                                                                                                                                    Type24 &
                                                                                                                                                                    Type25 &
                                                                                                                                                                    Type26 &
                                                                                                                                                                    Type27 &
                                                                                                                                                                    Type29 &
                                                                                                                                                                    Type30 &
                                                                                                                                                                    Type31 &
                                                                                                                                                                    Type32 &
                                                                                                                                                                    Type33 &
                                                                                                                                                                    Type34 &
                                                                                                                                                                    Type35 &
                                                                                                                                                                    Type36 &
                                                                                                                                                                    Type37 &
                                                                                                                                                                    Type38 &
                                                                                                                                                                    Type39 &
                                                                                                                                                                    Type40 &
                                                                                                                                                                    Type41 &
                                                                                                                                                                    Type42 &
                                                                                                                                                                    Type43 &
                                                                                                                                                                    Type44 &
                                                                                                                                                                    Type45 &
                                                                                                                                                                    Type46 &
                                                                                                                                                                    Type47 &
                                                                                                                                                                    Type48 &
                                                                                                                                                                    Type49 &
                                                                                                                                                                    Type50,
                                                                                                                                                                    Type28
                                                                                                                                                                    > &
                                                                                                                                                                    Type28)
                                                                                                                                                                    | (Without<
                                                                                                                                                                    Type1 &
                                                                                                                                                                    Type2 &
                                                                                                                                                                    Type3 &
                                                                                                                                                                    Type4 &
                                                                                                                                                                    Type5 &
                                                                                                                                                                    Type6 &
                                                                                                                                                                    Type7 &
                                                                                                                                                                    Type8 &
                                                                                                                                                                    Type9 &
                                                                                                                                                                    Type10 &
                                                                                                                                                                    Type11 &
                                                                                                                                                                    Type12 &
                                                                                                                                                                    Type13 &
                                                                                                                                                                    Type14 &
                                                                                                                                                                    Type15 &
                                                                                                                                                                    Type16 &
                                                                                                                                                                    Type17 &
                                                                                                                                                                    Type18 &
                                                                                                                                                                    Type19 &
                                                                                                                                                                    Type20 &
                                                                                                                                                                    Type21 &
                                                                                                                                                                    Type22 &
                                                                                                                                                                    Type23 &
                                                                                                                                                                    Type24 &
                                                                                                                                                                    Type25 &
                                                                                                                                                                    Type26 &
                                                                                                                                                                    Type27 &
                                                                                                                                                                    Type28 &
                                                                                                                                                                    Type30 &
                                                                                                                                                                    Type31 &
                                                                                                                                                                    Type32 &
                                                                                                                                                                    Type33 &
                                                                                                                                                                    Type34 &
                                                                                                                                                                    Type35 &
                                                                                                                                                                    Type36 &
                                                                                                                                                                    Type37 &
                                                                                                                                                                    Type38 &
                                                                                                                                                                    Type39 &
                                                                                                                                                                    Type40 &
                                                                                                                                                                    Type41 &
                                                                                                                                                                    Type42 &
                                                                                                                                                                    Type43 &
                                                                                                                                                                    Type44 &
                                                                                                                                                                    Type45 &
                                                                                                                                                                    Type46 &
                                                                                                                                                                    Type47 &
                                                                                                                                                                    Type48 &
                                                                                                                                                                    Type49 &
                                                                                                                                                                    Type50,
                                                                                                                                                                    Type29
                                                                                                                                                                    > &
                                                                                                                                                                    Type29)
                                                                                                                                                                    | (Without<
                                                                                                                                                                    Type1 &
                                                                                                                                                                    Type2 &
                                                                                                                                                                    Type3 &
                                                                                                                                                                    Type4 &
                                                                                                                                                                    Type5 &
                                                                                                                                                                    Type6 &
                                                                                                                                                                    Type7 &
                                                                                                                                                                    Type8 &
                                                                                                                                                                    Type9 &
                                                                                                                                                                    Type10 &
                                                                                                                                                                    Type11 &
                                                                                                                                                                    Type12 &
                                                                                                                                                                    Type13 &
                                                                                                                                                                    Type14 &
                                                                                                                                                                    Type15 &
                                                                                                                                                                    Type16 &
                                                                                                                                                                    Type17 &
                                                                                                                                                                    Type18 &
                                                                                                                                                                    Type19 &
                                                                                                                                                                    Type20 &
                                                                                                                                                                    Type21 &
                                                                                                                                                                    Type22 &
                                                                                                                                                                    Type23 &
                                                                                                                                                                    Type24 &
                                                                                                                                                                    Type25 &
                                                                                                                                                                    Type26 &
                                                                                                                                                                    Type27 &
                                                                                                                                                                    Type28 &
                                                                                                                                                                    Type29 &
                                                                                                                                                                    Type31 &
                                                                                                                                                                    Type32 &
                                                                                                                                                                    Type33 &
                                                                                                                                                                    Type34 &
                                                                                                                                                                    Type35 &
                                                                                                                                                                    Type36 &
                                                                                                                                                                    Type37 &
                                                                                                                                                                    Type38 &
                                                                                                                                                                    Type39 &
                                                                                                                                                                    Type40 &
                                                                                                                                                                    Type41 &
                                                                                                                                                                    Type42 &
                                                                                                                                                                    Type43 &
                                                                                                                                                                    Type44 &
                                                                                                                                                                    Type45 &
                                                                                                                                                                    Type46 &
                                                                                                                                                                    Type47 &
                                                                                                                                                                    Type48 &
                                                                                                                                                                    Type49 &
                                                                                                                                                                    Type50,
                                                                                                                                                                    Type30
                                                                                                                                                                    > &
                                                                                                                                                                    Type30)
                                                                                                                                                                    | (Without<
                                                                                                                                                                    Type1 &
                                                                                                                                                                    Type2 &
                                                                                                                                                                    Type3 &
                                                                                                                                                                    Type4 &
                                                                                                                                                                    Type5 &
                                                                                                                                                                    Type6 &
                                                                                                                                                                    Type7 &
                                                                                                                                                                    Type8 &
                                                                                                                                                                    Type9 &
                                                                                                                                                                    Type10 &
                                                                                                                                                                    Type11 &
                                                                                                                                                                    Type12 &
                                                                                                                                                                    Type13 &
                                                                                                                                                                    Type14 &
                                                                                                                                                                    Type15 &
                                                                                                                                                                    Type16 &
                                                                                                                                                                    Type17 &
                                                                                                                                                                    Type18 &
                                                                                                                                                                    Type19 &
                                                                                                                                                                    Type20 &
                                                                                                                                                                    Type21 &
                                                                                                                                                                    Type22 &
                                                                                                                                                                    Type23 &
                                                                                                                                                                    Type24 &
                                                                                                                                                                    Type25 &
                                                                                                                                                                    Type26 &
                                                                                                                                                                    Type27 &
                                                                                                                                                                    Type28 &
                                                                                                                                                                    Type29 &
                                                                                                                                                                    Type30 &
                                                                                                                                                                    Type32 &
                                                                                                                                                                    Type33 &
                                                                                                                                                                    Type34 &
                                                                                                                                                                    Type35 &
                                                                                                                                                                    Type36 &
                                                                                                                                                                    Type37 &
                                                                                                                                                                    Type38 &
                                                                                                                                                                    Type39 &
                                                                                                                                                                    Type40 &
                                                                                                                                                                    Type41 &
                                                                                                                                                                    Type42 &
                                                                                                                                                                    Type43 &
                                                                                                                                                                    Type44 &
                                                                                                                                                                    Type45 &
                                                                                                                                                                    Type46 &
                                                                                                                                                                    Type47 &
                                                                                                                                                                    Type48 &
                                                                                                                                                                    Type49 &
                                                                                                                                                                    Type50,
                                                                                                                                                                    Type31
                                                                                                                                                                    > &
                                                                                                                                                                    Type31)
                                                                                                                                                                    | (Without<
                                                                                                                                                                    Type1 &
                                                                                                                                                                    Type2 &
                                                                                                                                                                    Type3 &
                                                                                                                                                                    Type4 &
                                                                                                                                                                    Type5 &
                                                                                                                                                                    Type6 &
                                                                                                                                                                    Type7 &
                                                                                                                                                                    Type8 &
                                                                                                                                                                    Type9 &
                                                                                                                                                                    Type10 &
                                                                                                                                                                    Type11 &
                                                                                                                                                                    Type12 &
                                                                                                                                                                    Type13 &
                                                                                                                                                                    Type14 &
                                                                                                                                                                    Type15 &
                                                                                                                                                                    Type16 &
                                                                                                                                                                    Type17 &
                                                                                                                                                                    Type18 &
                                                                                                                                                                    Type19 &
                                                                                                                                                                    Type20 &
                                                                                                                                                                    Type21 &
                                                                                                                                                                    Type22 &
                                                                                                                                                                    Type23 &
                                                                                                                                                                    Type24 &
                                                                                                                                                                    Type25 &
                                                                                                                                                                    Type26 &
                                                                                                                                                                    Type27 &
                                                                                                                                                                    Type28 &
                                                                                                                                                                    Type29 &
                                                                                                                                                                    Type30 &
                                                                                                                                                                    Type31 &
                                                                                                                                                                    Type33 &
                                                                                                                                                                    Type34 &
                                                                                                                                                                    Type35 &
                                                                                                                                                                    Type36 &
                                                                                                                                                                    Type37 &
                                                                                                                                                                    Type38 &
                                                                                                                                                                    Type39 &
                                                                                                                                                                    Type40 &
                                                                                                                                                                    Type41 &
                                                                                                                                                                    Type42 &
                                                                                                                                                                    Type43 &
                                                                                                                                                                    Type44 &
                                                                                                                                                                    Type45 &
                                                                                                                                                                    Type46 &
                                                                                                                                                                    Type47 &
                                                                                                                                                                    Type48 &
                                                                                                                                                                    Type49 &
                                                                                                                                                                    Type50,
                                                                                                                                                                    Type32
                                                                                                                                                                    > &
                                                                                                                                                                    Type32)
                                                                                                                                                                    | (Without<
                                                                                                                                                                    Type1 &
                                                                                                                                                                    Type2 &
                                                                                                                                                                    Type3 &
                                                                                                                                                                    Type4 &
                                                                                                                                                                    Type5 &
                                                                                                                                                                    Type6 &
                                                                                                                                                                    Type7 &
                                                                                                                                                                    Type8 &
                                                                                                                                                                    Type9 &
                                                                                                                                                                    Type10 &
                                                                                                                                                                    Type11 &
                                                                                                                                                                    Type12 &
                                                                                                                                                                    Type13 &
                                                                                                                                                                    Type14 &
                                                                                                                                                                    Type15 &
                                                                                                                                                                    Type16 &
                                                                                                                                                                    Type17 &
                                                                                                                                                                    Type18 &
                                                                                                                                                                    Type19 &
                                                                                                                                                                    Type20 &
                                                                                                                                                                    Type21 &
                                                                                                                                                                    Type22 &
                                                                                                                                                                    Type23 &
                                                                                                                                                                    Type24 &
                                                                                                                                                                    Type25 &
                                                                                                                                                                    Type26 &
                                                                                                                                                                    Type27 &
                                                                                                                                                                    Type28 &
                                                                                                                                                                    Type29 &
                                                                                                                                                                    Type30 &
                                                                                                                                                                    Type31 &
                                                                                                                                                                    Type32 &
                                                                                                                                                                    Type34 &
                                                                                                                                                                    Type35 &
                                                                                                                                                                    Type36 &
                                                                                                                                                                    Type37 &
                                                                                                                                                                    Type38 &
                                                                                                                                                                    Type39 &
                                                                                                                                                                    Type40 &
                                                                                                                                                                    Type41 &
                                                                                                                                                                    Type42 &
                                                                                                                                                                    Type43 &
                                                                                                                                                                    Type44 &
                                                                                                                                                                    Type45 &
                                                                                                                                                                    Type46 &
                                                                                                                                                                    Type47 &
                                                                                                                                                                    Type48 &
                                                                                                                                                                    Type49 &
                                                                                                                                                                    Type50,
                                                                                                                                                                    Type33
                                                                                                                                                                    > &
                                                                                                                                                                    Type33)
                                                                                                                                                                    | (Without<
                                                                                                                                                                    Type1 &
                                                                                                                                                                    Type2 &
                                                                                                                                                                    Type3 &
                                                                                                                                                                    Type4 &
                                                                                                                                                                    Type5 &
                                                                                                                                                                    Type6 &
                                                                                                                                                                    Type7 &
                                                                                                                                                                    Type8 &
                                                                                                                                                                    Type9 &
                                                                                                                                                                    Type10 &
                                                                                                                                                                    Type11 &
                                                                                                                                                                    Type12 &
                                                                                                                                                                    Type13 &
                                                                                                                                                                    Type14 &
                                                                                                                                                                    Type15 &
                                                                                                                                                                    Type16 &
                                                                                                                                                                    Type17 &
                                                                                                                                                                    Type18 &
                                                                                                                                                                    Type19 &
                                                                                                                                                                    Type20 &
                                                                                                                                                                    Type21 &
                                                                                                                                                                    Type22 &
                                                                                                                                                                    Type23 &
                                                                                                                                                                    Type24 &
                                                                                                                                                                    Type25 &
                                                                                                                                                                    Type26 &
                                                                                                                                                                    Type27 &
                                                                                                                                                                    Type28 &
                                                                                                                                                                    Type29 &
                                                                                                                                                                    Type30 &
                                                                                                                                                                    Type31 &
                                                                                                                                                                    Type32 &
                                                                                                                                                                    Type33 &
                                                                                                                                                                    Type35 &
                                                                                                                                                                    Type36 &
                                                                                                                                                                    Type37 &
                                                                                                                                                                    Type38 &
                                                                                                                                                                    Type39 &
                                                                                                                                                                    Type40 &
                                                                                                                                                                    Type41 &
                                                                                                                                                                    Type42 &
                                                                                                                                                                    Type43 &
                                                                                                                                                                    Type44 &
                                                                                                                                                                    Type45 &
                                                                                                                                                                    Type46 &
                                                                                                                                                                    Type47 &
                                                                                                                                                                    Type48 &
                                                                                                                                                                    Type49 &
                                                                                                                                                                    Type50,
                                                                                                                                                                    Type34
                                                                                                                                                                    > &
                                                                                                                                                                    Type34)
                                                                                                                                                                    | (Without<
                                                                                                                                                                    Type1 &
                                                                                                                                                                    Type2 &
                                                                                                                                                                    Type3 &
                                                                                                                                                                    Type4 &
                                                                                                                                                                    Type5 &
                                                                                                                                                                    Type6 &
                                                                                                                                                                    Type7 &
                                                                                                                                                                    Type8 &
                                                                                                                                                                    Type9 &
                                                                                                                                                                    Type10 &
                                                                                                                                                                    Type11 &
                                                                                                                                                                    Type12 &
                                                                                                                                                                    Type13 &
                                                                                                                                                                    Type14 &
                                                                                                                                                                    Type15 &
                                                                                                                                                                    Type16 &
                                                                                                                                                                    Type17 &
                                                                                                                                                                    Type18 &
                                                                                                                                                                    Type19 &
                                                                                                                                                                    Type20 &
                                                                                                                                                                    Type21 &
                                                                                                                                                                    Type22 &
                                                                                                                                                                    Type23 &
                                                                                                                                                                    Type24 &
                                                                                                                                                                    Type25 &
                                                                                                                                                                    Type26 &
                                                                                                                                                                    Type27 &
                                                                                                                                                                    Type28 &
                                                                                                                                                                    Type29 &
                                                                                                                                                                    Type30 &
                                                                                                                                                                    Type31 &
                                                                                                                                                                    Type32 &
                                                                                                                                                                    Type33 &
                                                                                                                                                                    Type34 &
                                                                                                                                                                    Type36 &
                                                                                                                                                                    Type37 &
                                                                                                                                                                    Type38 &
                                                                                                                                                                    Type39 &
                                                                                                                                                                    Type40 &
                                                                                                                                                                    Type41 &
                                                                                                                                                                    Type42 &
                                                                                                                                                                    Type43 &
                                                                                                                                                                    Type44 &
                                                                                                                                                                    Type45 &
                                                                                                                                                                    Type46 &
                                                                                                                                                                    Type47 &
                                                                                                                                                                    Type48 &
                                                                                                                                                                    Type49 &
                                                                                                                                                                    Type50,
                                                                                                                                                                    Type35
                                                                                                                                                                    > &
                                                                                                                                                                    Type35)
                                                                                                                                                                    | (Without<
                                                                                                                                                                    Type1 &
                                                                                                                                                                    Type2 &
                                                                                                                                                                    Type3 &
                                                                                                                                                                    Type4 &
                                                                                                                                                                    Type5 &
                                                                                                                                                                    Type6 &
                                                                                                                                                                    Type7 &
                                                                                                                                                                    Type8 &
                                                                                                                                                                    Type9 &
                                                                                                                                                                    Type10 &
                                                                                                                                                                    Type11 &
                                                                                                                                                                    Type12 &
                                                                                                                                                                    Type13 &
                                                                                                                                                                    Type14 &
                                                                                                                                                                    Type15 &
                                                                                                                                                                    Type16 &
                                                                                                                                                                    Type17 &
                                                                                                                                                                    Type18 &
                                                                                                                                                                    Type19 &
                                                                                                                                                                    Type20 &
                                                                                                                                                                    Type21 &
                                                                                                                                                                    Type22 &
                                                                                                                                                                    Type23 &
                                                                                                                                                                    Type24 &
                                                                                                                                                                    Type25 &
                                                                                                                                                                    Type26 &
                                                                                                                                                                    Type27 &
                                                                                                                                                                    Type28 &
                                                                                                                                                                    Type29 &
                                                                                                                                                                    Type30 &
                                                                                                                                                                    Type31 &
                                                                                                                                                                    Type32 &
                                                                                                                                                                    Type33 &
                                                                                                                                                                    Type34 &
                                                                                                                                                                    Type35 &
                                                                                                                                                                    Type37 &
                                                                                                                                                                    Type38 &
                                                                                                                                                                    Type39 &
                                                                                                                                                                    Type40 &
                                                                                                                                                                    Type41 &
                                                                                                                                                                    Type42 &
                                                                                                                                                                    Type43 &
                                                                                                                                                                    Type44 &
                                                                                                                                                                    Type45 &
                                                                                                                                                                    Type46 &
                                                                                                                                                                    Type47 &
                                                                                                                                                                    Type48 &
                                                                                                                                                                    Type49 &
                                                                                                                                                                    Type50,
                                                                                                                                                                    Type36
                                                                                                                                                                    > &
                                                                                                                                                                    Type36)
                                                                                                                                                                    | (Without<
                                                                                                                                                                    Type1 &
                                                                                                                                                                    Type2 &
                                                                                                                                                                    Type3 &
                                                                                                                                                                    Type4 &
                                                                                                                                                                    Type5 &
                                                                                                                                                                    Type6 &
                                                                                                                                                                    Type7 &
                                                                                                                                                                    Type8 &
                                                                                                                                                                    Type9 &
                                                                                                                                                                    Type10 &
                                                                                                                                                                    Type11 &
                                                                                                                                                                    Type12 &
                                                                                                                                                                    Type13 &
                                                                                                                                                                    Type14 &
                                                                                                                                                                    Type15 &
                                                                                                                                                                    Type16 &
                                                                                                                                                                    Type17 &
                                                                                                                                                                    Type18 &
                                                                                                                                                                    Type19 &
                                                                                                                                                                    Type20 &
                                                                                                                                                                    Type21 &
                                                                                                                                                                    Type22 &
                                                                                                                                                                    Type23 &
                                                                                                                                                                    Type24 &
                                                                                                                                                                    Type25 &
                                                                                                                                                                    Type26 &
                                                                                                                                                                    Type27 &
                                                                                                                                                                    Type28 &
                                                                                                                                                                    Type29 &
                                                                                                                                                                    Type30 &
                                                                                                                                                                    Type31 &
                                                                                                                                                                    Type32 &
                                                                                                                                                                    Type33 &
                                                                                                                                                                    Type34 &
                                                                                                                                                                    Type35 &
                                                                                                                                                                    Type36 &
                                                                                                                                                                    Type38 &
                                                                                                                                                                    Type39 &
                                                                                                                                                                    Type40 &
                                                                                                                                                                    Type41 &
                                                                                                                                                                    Type42 &
                                                                                                                                                                    Type43 &
                                                                                                                                                                    Type44 &
                                                                                                                                                                    Type45 &
                                                                                                                                                                    Type46 &
                                                                                                                                                                    Type47 &
                                                                                                                                                                    Type48 &
                                                                                                                                                                    Type49 &
                                                                                                                                                                    Type50,
                                                                                                                                                                    Type37
                                                                                                                                                                    > &
                                                                                                                                                                    Type37)
                                                                                                                                                                    | (Without<
                                                                                                                                                                    Type1 &
                                                                                                                                                                    Type2 &
                                                                                                                                                                    Type3 &
                                                                                                                                                                    Type4 &
                                                                                                                                                                    Type5 &
                                                                                                                                                                    Type6 &
                                                                                                                                                                    Type7 &
                                                                                                                                                                    Type8 &
                                                                                                                                                                    Type9 &
                                                                                                                                                                    Type10 &
                                                                                                                                                                    Type11 &
                                                                                                                                                                    Type12 &
                                                                                                                                                                    Type13 &
                                                                                                                                                                    Type14 &
                                                                                                                                                                    Type15 &
                                                                                                                                                                    Type16 &
                                                                                                                                                                    Type17 &
                                                                                                                                                                    Type18 &
                                                                                                                                                                    Type19 &
                                                                                                                                                                    Type20 &
                                                                                                                                                                    Type21 &
                                                                                                                                                                    Type22 &
                                                                                                                                                                    Type23 &
                                                                                                                                                                    Type24 &
                                                                                                                                                                    Type25 &
                                                                                                                                                                    Type26 &
                                                                                                                                                                    Type27 &
                                                                                                                                                                    Type28 &
                                                                                                                                                                    Type29 &
                                                                                                                                                                    Type30 &
                                                                                                                                                                    Type31 &
                                                                                                                                                                    Type32 &
                                                                                                                                                                    Type33 &
                                                                                                                                                                    Type34 &
                                                                                                                                                                    Type35 &
                                                                                                                                                                    Type36 &
                                                                                                                                                                    Type37 &
                                                                                                                                                                    Type39 &
                                                                                                                                                                    Type40 &
                                                                                                                                                                    Type41 &
                                                                                                                                                                    Type42 &
                                                                                                                                                                    Type43 &
                                                                                                                                                                    Type44 &
                                                                                                                                                                    Type45 &
                                                                                                                                                                    Type46 &
                                                                                                                                                                    Type47 &
                                                                                                                                                                    Type48 &
                                                                                                                                                                    Type49 &
                                                                                                                                                                    Type50,
                                                                                                                                                                    Type38
                                                                                                                                                                    > &
                                                                                                                                                                    Type38)
                                                                                                                                                                    | (Without<
                                                                                                                                                                    Type1 &
                                                                                                                                                                    Type2 &
                                                                                                                                                                    Type3 &
                                                                                                                                                                    Type4 &
                                                                                                                                                                    Type5 &
                                                                                                                                                                    Type6 &
                                                                                                                                                                    Type7 &
                                                                                                                                                                    Type8 &
                                                                                                                                                                    Type9 &
                                                                                                                                                                    Type10 &
                                                                                                                                                                    Type11 &
                                                                                                                                                                    Type12 &
                                                                                                                                                                    Type13 &
                                                                                                                                                                    Type14 &
                                                                                                                                                                    Type15 &
                                                                                                                                                                    Type16 &
                                                                                                                                                                    Type17 &
                                                                                                                                                                    Type18 &
                                                                                                                                                                    Type19 &
                                                                                                                                                                    Type20 &
                                                                                                                                                                    Type21 &
                                                                                                                                                                    Type22 &
                                                                                                                                                                    Type23 &
                                                                                                                                                                    Type24 &
                                                                                                                                                                    Type25 &
                                                                                                                                                                    Type26 &
                                                                                                                                                                    Type27 &
                                                                                                                                                                    Type28 &
                                                                                                                                                                    Type29 &
                                                                                                                                                                    Type30 &
                                                                                                                                                                    Type31 &
                                                                                                                                                                    Type32 &
                                                                                                                                                                    Type33 &
                                                                                                                                                                    Type34 &
                                                                                                                                                                    Type35 &
                                                                                                                                                                    Type36 &
                                                                                                                                                                    Type37 &
                                                                                                                                                                    Type38 &
                                                                                                                                                                    Type40 &
                                                                                                                                                                    Type41 &
                                                                                                                                                                    Type42 &
                                                                                                                                                                    Type43 &
                                                                                                                                                                    Type44 &
                                                                                                                                                                    Type45 &
                                                                                                                                                                    Type46 &
                                                                                                                                                                    Type47 &
                                                                                                                                                                    Type48 &
                                                                                                                                                                    Type49 &
                                                                                                                                                                    Type50,
                                                                                                                                                                    Type39
                                                                                                                                                                    > &
                                                                                                                                                                    Type39)
                                                                                                                                                                    | (Without<
                                                                                                                                                                    Type1 &
                                                                                                                                                                    Type2 &
                                                                                                                                                                    Type3 &
                                                                                                                                                                    Type4 &
                                                                                                                                                                    Type5 &
                                                                                                                                                                    Type6 &
                                                                                                                                                                    Type7 &
                                                                                                                                                                    Type8 &
                                                                                                                                                                    Type9 &
                                                                                                                                                                    Type10 &
                                                                                                                                                                    Type11 &
                                                                                                                                                                    Type12 &
                                                                                                                                                                    Type13 &
                                                                                                                                                                    Type14 &
                                                                                                                                                                    Type15 &
                                                                                                                                                                    Type16 &
                                                                                                                                                                    Type17 &
                                                                                                                                                                    Type18 &
                                                                                                                                                                    Type19 &
                                                                                                                                                                    Type20 &
                                                                                                                                                                    Type21 &
                                                                                                                                                                    Type22 &
                                                                                                                                                                    Type23 &
                                                                                                                                                                    Type24 &
                                                                                                                                                                    Type25 &
                                                                                                                                                                    Type26 &
                                                                                                                                                                    Type27 &
                                                                                                                                                                    Type28 &
                                                                                                                                                                    Type29 &
                                                                                                                                                                    Type30 &
                                                                                                                                                                    Type31 &
                                                                                                                                                                    Type32 &
                                                                                                                                                                    Type33 &
                                                                                                                                                                    Type34 &
                                                                                                                                                                    Type35 &
                                                                                                                                                                    Type36 &
                                                                                                                                                                    Type37 &
                                                                                                                                                                    Type38 &
                                                                                                                                                                    Type39 &
                                                                                                                                                                    Type41 &
                                                                                                                                                                    Type42 &
                                                                                                                                                                    Type43 &
                                                                                                                                                                    Type44 &
                                                                                                                                                                    Type45 &
                                                                                                                                                                    Type46 &
                                                                                                                                                                    Type47 &
                                                                                                                                                                    Type48 &
                                                                                                                                                                    Type49 &
                                                                                                                                                                    Type50,
                                                                                                                                                                    Type40
                                                                                                                                                                    > &
                                                                                                                                                                    Type40)
                                                                                                                                                                    | (Without<
                                                                                                                                                                    Type1 &
                                                                                                                                                                    Type2 &
                                                                                                                                                                    Type3 &
                                                                                                                                                                    Type4 &
                                                                                                                                                                    Type5 &
                                                                                                                                                                    Type6 &
                                                                                                                                                                    Type7 &
                                                                                                                                                                    Type8 &
                                                                                                                                                                    Type9 &
                                                                                                                                                                    Type10 &
                                                                                                                                                                    Type11 &
                                                                                                                                                                    Type12 &
                                                                                                                                                                    Type13 &
                                                                                                                                                                    Type14 &
                                                                                                                                                                    Type15 &
                                                                                                                                                                    Type16 &
                                                                                                                                                                    Type17 &
                                                                                                                                                                    Type18 &
                                                                                                                                                                    Type19 &
                                                                                                                                                                    Type20 &
                                                                                                                                                                    Type21 &
                                                                                                                                                                    Type22 &
                                                                                                                                                                    Type23 &
                                                                                                                                                                    Type24 &
                                                                                                                                                                    Type25 &
                                                                                                                                                                    Type26 &
                                                                                                                                                                    Type27 &
                                                                                                                                                                    Type28 &
                                                                                                                                                                    Type29 &
                                                                                                                                                                    Type30 &
                                                                                                                                                                    Type31 &
                                                                                                                                                                    Type32 &
                                                                                                                                                                    Type33 &
                                                                                                                                                                    Type34 &
                                                                                                                                                                    Type35 &
                                                                                                                                                                    Type36 &
                                                                                                                                                                    Type37 &
                                                                                                                                                                    Type38 &
                                                                                                                                                                    Type39 &
                                                                                                                                                                    Type40 &
                                                                                                                                                                    Type42 &
                                                                                                                                                                    Type43 &
                                                                                                                                                                    Type44 &
                                                                                                                                                                    Type45 &
                                                                                                                                                                    Type46 &
                                                                                                                                                                    Type47 &
                                                                                                                                                                    Type48 &
                                                                                                                                                                    Type49 &
                                                                                                                                                                    Type50,
                                                                                                                                                                    Type41
                                                                                                                                                                    > &
                                                                                                                                                                    Type41)
                                                                                                                                                                    | (Without<
                                                                                                                                                                    Type1 &
                                                                                                                                                                    Type2 &
                                                                                                                                                                    Type3 &
                                                                                                                                                                    Type4 &
                                                                                                                                                                    Type5 &
                                                                                                                                                                    Type6 &
                                                                                                                                                                    Type7 &
                                                                                                                                                                    Type8 &
                                                                                                                                                                    Type9 &
                                                                                                                                                                    Type10 &
                                                                                                                                                                    Type11 &
                                                                                                                                                                    Type12 &
                                                                                                                                                                    Type13 &
                                                                                                                                                                    Type14 &
                                                                                                                                                                    Type15 &
                                                                                                                                                                    Type16 &
                                                                                                                                                                    Type17 &
                                                                                                                                                                    Type18 &
                                                                                                                                                                    Type19 &
                                                                                                                                                                    Type20 &
                                                                                                                                                                    Type21 &
                                                                                                                                                                    Type22 &
                                                                                                                                                                    Type23 &
                                                                                                                                                                    Type24 &
                                                                                                                                                                    Type25 &
                                                                                                                                                                    Type26 &
                                                                                                                                                                    Type27 &
                                                                                                                                                                    Type28 &
                                                                                                                                                                    Type29 &
                                                                                                                                                                    Type30 &
                                                                                                                                                                    Type31 &
                                                                                                                                                                    Type32 &
                                                                                                                                                                    Type33 &
                                                                                                                                                                    Type34 &
                                                                                                                                                                    Type35 &
                                                                                                                                                                    Type36 &
                                                                                                                                                                    Type37 &
                                                                                                                                                                    Type38 &
                                                                                                                                                                    Type39 &
                                                                                                                                                                    Type40 &
                                                                                                                                                                    Type41 &
                                                                                                                                                                    Type43 &
                                                                                                                                                                    Type44 &
                                                                                                                                                                    Type45 &
                                                                                                                                                                    Type46 &
                                                                                                                                                                    Type47 &
                                                                                                                                                                    Type48 &
                                                                                                                                                                    Type49 &
                                                                                                                                                                    Type50,
                                                                                                                                                                    Type42
                                                                                                                                                                    > &
                                                                                                                                                                    Type42)
                                                                                                                                                                    | (Without<
                                                                                                                                                                    Type1 &
                                                                                                                                                                    Type2 &
                                                                                                                                                                    Type3 &
                                                                                                                                                                    Type4 &
                                                                                                                                                                    Type5 &
                                                                                                                                                                    Type6 &
                                                                                                                                                                    Type7 &
                                                                                                                                                                    Type8 &
                                                                                                                                                                    Type9 &
                                                                                                                                                                    Type10 &
                                                                                                                                                                    Type11 &
                                                                                                                                                                    Type12 &
                                                                                                                                                                    Type13 &
                                                                                                                                                                    Type14 &
                                                                                                                                                                    Type15 &
                                                                                                                                                                    Type16 &
                                                                                                                                                                    Type17 &
                                                                                                                                                                    Type18 &
                                                                                                                                                                    Type19 &
                                                                                                                                                                    Type20 &
                                                                                                                                                                    Type21 &
                                                                                                                                                                    Type22 &
                                                                                                                                                                    Type23 &
                                                                                                                                                                    Type24 &
                                                                                                                                                                    Type25 &
                                                                                                                                                                    Type26 &
                                                                                                                                                                    Type27 &
                                                                                                                                                                    Type28 &
                                                                                                                                                                    Type29 &
                                                                                                                                                                    Type30 &
                                                                                                                                                                    Type31 &
                                                                                                                                                                    Type32 &
                                                                                                                                                                    Type33 &
                                                                                                                                                                    Type34 &
                                                                                                                                                                    Type35 &
                                                                                                                                                                    Type36 &
                                                                                                                                                                    Type37 &
                                                                                                                                                                    Type38 &
                                                                                                                                                                    Type39 &
                                                                                                                                                                    Type40 &
                                                                                                                                                                    Type41 &
                                                                                                                                                                    Type42 &
                                                                                                                                                                    Type44 &
                                                                                                                                                                    Type45 &
                                                                                                                                                                    Type46 &
                                                                                                                                                                    Type47 &
                                                                                                                                                                    Type48 &
                                                                                                                                                                    Type49 &
                                                                                                                                                                    Type50,
                                                                                                                                                                    Type43
                                                                                                                                                                    > &
                                                                                                                                                                    Type43)
                                                                                                                                                                    | (Without<
                                                                                                                                                                    Type1 &
                                                                                                                                                                    Type2 &
                                                                                                                                                                    Type3 &
                                                                                                                                                                    Type4 &
                                                                                                                                                                    Type5 &
                                                                                                                                                                    Type6 &
                                                                                                                                                                    Type7 &
                                                                                                                                                                    Type8 &
                                                                                                                                                                    Type9 &
                                                                                                                                                                    Type10 &
                                                                                                                                                                    Type11 &
                                                                                                                                                                    Type12 &
                                                                                                                                                                    Type13 &
                                                                                                                                                                    Type14 &
                                                                                                                                                                    Type15 &
                                                                                                                                                                    Type16 &
                                                                                                                                                                    Type17 &
                                                                                                                                                                    Type18 &
                                                                                                                                                                    Type19 &
                                                                                                                                                                    Type20 &
                                                                                                                                                                    Type21 &
                                                                                                                                                                    Type22 &
                                                                                                                                                                    Type23 &
                                                                                                                                                                    Type24 &
                                                                                                                                                                    Type25 &
                                                                                                                                                                    Type26 &
                                                                                                                                                                    Type27 &
                                                                                                                                                                    Type28 &
                                                                                                                                                                    Type29 &
                                                                                                                                                                    Type30 &
                                                                                                                                                                    Type31 &
                                                                                                                                                                    Type32 &
                                                                                                                                                                    Type33 &
                                                                                                                                                                    Type34 &
                                                                                                                                                                    Type35 &
                                                                                                                                                                    Type36 &
                                                                                                                                                                    Type37 &
                                                                                                                                                                    Type38 &
                                                                                                                                                                    Type39 &
                                                                                                                                                                    Type40 &
                                                                                                                                                                    Type41 &
                                                                                                                                                                    Type42 &
                                                                                                                                                                    Type43 &
                                                                                                                                                                    Type45 &
                                                                                                                                                                    Type46 &
                                                                                                                                                                    Type47 &
                                                                                                                                                                    Type48 &
                                                                                                                                                                    Type49 &
                                                                                                                                                                    Type50,
                                                                                                                                                                    Type44
                                                                                                                                                                    > &
                                                                                                                                                                    Type44)
                                                                                                                                                                    | (Without<
                                                                                                                                                                    Type1 &
                                                                                                                                                                    Type2 &
                                                                                                                                                                    Type3 &
                                                                                                                                                                    Type4 &
                                                                                                                                                                    Type5 &
                                                                                                                                                                    Type6 &
                                                                                                                                                                    Type7 &
                                                                                                                                                                    Type8 &
                                                                                                                                                                    Type9 &
                                                                                                                                                                    Type10 &
                                                                                                                                                                    Type11 &
                                                                                                                                                                    Type12 &
                                                                                                                                                                    Type13 &
                                                                                                                                                                    Type14 &
                                                                                                                                                                    Type15 &
                                                                                                                                                                    Type16 &
                                                                                                                                                                    Type17 &
                                                                                                                                                                    Type18 &
                                                                                                                                                                    Type19 &
                                                                                                                                                                    Type20 &
                                                                                                                                                                    Type21 &
                                                                                                                                                                    Type22 &
                                                                                                                                                                    Type23 &
                                                                                                                                                                    Type24 &
                                                                                                                                                                    Type25 &
                                                                                                                                                                    Type26 &
                                                                                                                                                                    Type27 &
                                                                                                                                                                    Type28 &
                                                                                                                                                                    Type29 &
                                                                                                                                                                    Type30 &
                                                                                                                                                                    Type31 &
                                                                                                                                                                    Type32 &
                                                                                                                                                                    Type33 &
                                                                                                                                                                    Type34 &
                                                                                                                                                                    Type35 &
                                                                                                                                                                    Type36 &
                                                                                                                                                                    Type37 &
                                                                                                                                                                    Type38 &
                                                                                                                                                                    Type39 &
                                                                                                                                                                    Type40 &
                                                                                                                                                                    Type41 &
                                                                                                                                                                    Type42 &
                                                                                                                                                                    Type43 &
                                                                                                                                                                    Type44 &
                                                                                                                                                                    Type46 &
                                                                                                                                                                    Type47 &
                                                                                                                                                                    Type48 &
                                                                                                                                                                    Type49 &
                                                                                                                                                                    Type50,
                                                                                                                                                                    Type45
                                                                                                                                                                    > &
                                                                                                                                                                    Type45)
                                                                                                                                                                    | (Without<
                                                                                                                                                                    Type1 &
                                                                                                                                                                    Type2 &
                                                                                                                                                                    Type3 &
                                                                                                                                                                    Type4 &
                                                                                                                                                                    Type5 &
                                                                                                                                                                    Type6 &
                                                                                                                                                                    Type7 &
                                                                                                                                                                    Type8 &
                                                                                                                                                                    Type9 &
                                                                                                                                                                    Type10 &
                                                                                                                                                                    Type11 &
                                                                                                                                                                    Type12 &
                                                                                                                                                                    Type13 &
                                                                                                                                                                    Type14 &
                                                                                                                                                                    Type15 &
                                                                                                                                                                    Type16 &
                                                                                                                                                                    Type17 &
                                                                                                                                                                    Type18 &
                                                                                                                                                                    Type19 &
                                                                                                                                                                    Type20 &
                                                                                                                                                                    Type21 &
                                                                                                                                                                    Type22 &
                                                                                                                                                                    Type23 &
                                                                                                                                                                    Type24 &
                                                                                                                                                                    Type25 &
                                                                                                                                                                    Type26 &
                                                                                                                                                                    Type27 &
                                                                                                                                                                    Type28 &
                                                                                                                                                                    Type29 &
                                                                                                                                                                    Type30 &
                                                                                                                                                                    Type31 &
                                                                                                                                                                    Type32 &
                                                                                                                                                                    Type33 &
                                                                                                                                                                    Type34 &
                                                                                                                                                                    Type35 &
                                                                                                                                                                    Type36 &
                                                                                                                                                                    Type37 &
                                                                                                                                                                    Type38 &
                                                                                                                                                                    Type39 &
                                                                                                                                                                    Type40 &
                                                                                                                                                                    Type41 &
                                                                                                                                                                    Type42 &
                                                                                                                                                                    Type43 &
                                                                                                                                                                    Type44 &
                                                                                                                                                                    Type45 &
                                                                                                                                                                    Type47 &
                                                                                                                                                                    Type48 &
                                                                                                                                                                    Type49 &
                                                                                                                                                                    Type50,
                                                                                                                                                                    Type46
                                                                                                                                                                    > &
                                                                                                                                                                    Type46)
                                                                                                                                                                    | (Without<
                                                                                                                                                                    Type1 &
                                                                                                                                                                    Type2 &
                                                                                                                                                                    Type3 &
                                                                                                                                                                    Type4 &
                                                                                                                                                                    Type5 &
                                                                                                                                                                    Type6 &
                                                                                                                                                                    Type7 &
                                                                                                                                                                    Type8 &
                                                                                                                                                                    Type9 &
                                                                                                                                                                    Type10 &
                                                                                                                                                                    Type11 &
                                                                                                                                                                    Type12 &
                                                                                                                                                                    Type13 &
                                                                                                                                                                    Type14 &
                                                                                                                                                                    Type15 &
                                                                                                                                                                    Type16 &
                                                                                                                                                                    Type17 &
                                                                                                                                                                    Type18 &
                                                                                                                                                                    Type19 &
                                                                                                                                                                    Type20 &
                                                                                                                                                                    Type21 &
                                                                                                                                                                    Type22 &
                                                                                                                                                                    Type23 &
                                                                                                                                                                    Type24 &
                                                                                                                                                                    Type25 &
                                                                                                                                                                    Type26 &
                                                                                                                                                                    Type27 &
                                                                                                                                                                    Type28 &
                                                                                                                                                                    Type29 &
                                                                                                                                                                    Type30 &
                                                                                                                                                                    Type31 &
                                                                                                                                                                    Type32 &
                                                                                                                                                                    Type33 &
                                                                                                                                                                    Type34 &
                                                                                                                                                                    Type35 &
                                                                                                                                                                    Type36 &
                                                                                                                                                                    Type37 &
                                                                                                                                                                    Type38 &
                                                                                                                                                                    Type39 &
                                                                                                                                                                    Type40 &
                                                                                                                                                                    Type41 &
                                                                                                                                                                    Type42 &
                                                                                                                                                                    Type43 &
                                                                                                                                                                    Type44 &
                                                                                                                                                                    Type45 &
                                                                                                                                                                    Type46 &
                                                                                                                                                                    Type48 &
                                                                                                                                                                    Type49 &
                                                                                                                                                                    Type50,
                                                                                                                                                                    Type47
                                                                                                                                                                    > &
                                                                                                                                                                    Type47)
                                                                                                                                                                    | (Without<
                                                                                                                                                                    Type1 &
                                                                                                                                                                    Type2 &
                                                                                                                                                                    Type3 &
                                                                                                                                                                    Type4 &
                                                                                                                                                                    Type5 &
                                                                                                                                                                    Type6 &
                                                                                                                                                                    Type7 &
                                                                                                                                                                    Type8 &
                                                                                                                                                                    Type9 &
                                                                                                                                                                    Type10 &
                                                                                                                                                                    Type11 &
                                                                                                                                                                    Type12 &
                                                                                                                                                                    Type13 &
                                                                                                                                                                    Type14 &
                                                                                                                                                                    Type15 &
                                                                                                                                                                    Type16 &
                                                                                                                                                                    Type17 &
                                                                                                                                                                    Type18 &
                                                                                                                                                                    Type19 &
                                                                                                                                                                    Type20 &
                                                                                                                                                                    Type21 &
                                                                                                                                                                    Type22 &
                                                                                                                                                                    Type23 &
                                                                                                                                                                    Type24 &
                                                                                                                                                                    Type25 &
                                                                                                                                                                    Type26 &
                                                                                                                                                                    Type27 &
                                                                                                                                                                    Type28 &
                                                                                                                                                                    Type29 &
                                                                                                                                                                    Type30 &
                                                                                                                                                                    Type31 &
                                                                                                                                                                    Type32 &
                                                                                                                                                                    Type33 &
                                                                                                                                                                    Type34 &
                                                                                                                                                                    Type35 &
                                                                                                                                                                    Type36 &
                                                                                                                                                                    Type37 &
                                                                                                                                                                    Type38 &
                                                                                                                                                                    Type39 &
                                                                                                                                                                    Type40 &
                                                                                                                                                                    Type41 &
                                                                                                                                                                    Type42 &
                                                                                                                                                                    Type43 &
                                                                                                                                                                    Type44 &
                                                                                                                                                                    Type45 &
                                                                                                                                                                    Type46 &
                                                                                                                                                                    Type47 &
                                                                                                                                                                    Type49 &
                                                                                                                                                                    Type50,
                                                                                                                                                                    Type48
                                                                                                                                                                    > &
                                                                                                                                                                    Type48)
                                                                                                                                                                    | (Without<
                                                                                                                                                                    Type1 &
                                                                                                                                                                    Type2 &
                                                                                                                                                                    Type3 &
                                                                                                                                                                    Type4 &
                                                                                                                                                                    Type5 &
                                                                                                                                                                    Type6 &
                                                                                                                                                                    Type7 &
                                                                                                                                                                    Type8 &
                                                                                                                                                                    Type9 &
                                                                                                                                                                    Type10 &
                                                                                                                                                                    Type11 &
                                                                                                                                                                    Type12 &
                                                                                                                                                                    Type13 &
                                                                                                                                                                    Type14 &
                                                                                                                                                                    Type15 &
                                                                                                                                                                    Type16 &
                                                                                                                                                                    Type17 &
                                                                                                                                                                    Type18 &
                                                                                                                                                                    Type19 &
                                                                                                                                                                    Type20 &
                                                                                                                                                                    Type21 &
                                                                                                                                                                    Type22 &
                                                                                                                                                                    Type23 &
                                                                                                                                                                    Type24 &
                                                                                                                                                                    Type25 &
                                                                                                                                                                    Type26 &
                                                                                                                                                                    Type27 &
                                                                                                                                                                    Type28 &
                                                                                                                                                                    Type29 &
                                                                                                                                                                    Type30 &
                                                                                                                                                                    Type31 &
                                                                                                                                                                    Type32 &
                                                                                                                                                                    Type33 &
                                                                                                                                                                    Type34 &
                                                                                                                                                                    Type35 &
                                                                                                                                                                    Type36 &
                                                                                                                                                                    Type37 &
                                                                                                                                                                    Type38 &
                                                                                                                                                                    Type39 &
                                                                                                                                                                    Type40 &
                                                                                                                                                                    Type41 &
                                                                                                                                                                    Type42 &
                                                                                                                                                                    Type43 &
                                                                                                                                                                    Type44 &
                                                                                                                                                                    Type45 &
                                                                                                                                                                    Type46 &
                                                                                                                                                                    Type47 &
                                                                                                                                                                    Type48 &
                                                                                                                                                                    Type50,
                                                                                                                                                                    Type49
                                                                                                                                                                    > &
                                                                                                                                                                    Type49)
                                                                                                                                                                    | (Without<
                                                                                                                                                                    Type1 &
                                                                                                                                                                    Type2 &
                                                                                                                                                                    Type3 &
                                                                                                                                                                    Type4 &
                                                                                                                                                                    Type5 &
                                                                                                                                                                    Type6 &
                                                                                                                                                                    Type7 &
                                                                                                                                                                    Type8 &
                                                                                                                                                                    Type9 &
                                                                                                                                                                    Type10 &
                                                                                                                                                                    Type11 &
                                                                                                                                                                    Type12 &
                                                                                                                                                                    Type13 &
                                                                                                                                                                    Type14 &
                                                                                                                                                                    Type15 &
                                                                                                                                                                    Type16 &
                                                                                                                                                                    Type17 &
                                                                                                                                                                    Type18 &
                                                                                                                                                                    Type19 &
                                                                                                                                                                    Type20 &
                                                                                                                                                                    Type21 &
                                                                                                                                                                    Type22 &
                                                                                                                                                                    Type23 &
                                                                                                                                                                    Type24 &
                                                                                                                                                                    Type25 &
                                                                                                                                                                    Type26 &
                                                                                                                                                                    Type27 &
                                                                                                                                                                    Type28 &
                                                                                                                                                                    Type29 &
                                                                                                                                                                    Type30 &
                                                                                                                                                                    Type31 &
                                                                                                                                                                    Type32 &
                                                                                                                                                                    Type33 &
                                                                                                                                                                    Type34 &
                                                                                                                                                                    Type35 &
                                                                                                                                                                    Type36 &
                                                                                                                                                                    Type37 &
                                                                                                                                                                    Type38 &
                                                                                                                                                                    Type39 &
                                                                                                                                                                    Type40 &
                                                                                                                                                                    Type41 &
                                                                                                                                                                    Type42 &
                                                                                                                                                                    Type43 &
                                                                                                                                                                    Type44 &
                                                                                                                                                                    Type45 &
                                                                                                                                                                    Type46 &
                                                                                                                                                                    Type47 &
                                                                                                                                                                    Type48 &
                                                                                                                                                                    Type49,
                                                                                                                                                                    Type50
                                                                                                                                                                    > &
                                                                                                                                                                    Type50)
                                                                                                                                                                    >;

                                                                                                                                                                      Package Files (85)

                                                                                                                                                                      Dependencies (0)

                                                                                                                                                                      No dependencies.

                                                                                                                                                                      Dev Dependencies (10)

                                                                                                                                                                      Peer Dependencies (1)

                                                                                                                                                                      Badge

                                                                                                                                                                      To add a badge like this onejsDocs.io badgeto your package's README, use the codes available below.

                                                                                                                                                                      You may also use Shields.io to create a custom badge linking to https://www.jsdocs.io/package/ts-essentials.

                                                                                                                                                                      • Markdown
                                                                                                                                                                        [![jsDocs.io](https://img.shields.io/badge/jsDocs.io-reference-blue)](https://www.jsdocs.io/package/ts-essentials)
                                                                                                                                                                      • HTML
                                                                                                                                                                        <a href="https://www.jsdocs.io/package/ts-essentials"><img src="https://img.shields.io/badge/jsDocs.io-reference-blue" alt="jsDocs.io"></a>