@cmdop/bot 2026.2.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/errors.ts","../../../node_modules/.pnpm/bottleneck@2.19.5/node_modules/bottleneck/lib/parser.js","../../../node_modules/.pnpm/bottleneck@2.19.5/node_modules/bottleneck/lib/DLList.js","../../../node_modules/.pnpm/bottleneck@2.19.5/node_modules/bottleneck/lib/Events.js","../../../node_modules/.pnpm/bottleneck@2.19.5/node_modules/bottleneck/lib/Queues.js","../../../node_modules/.pnpm/bottleneck@2.19.5/node_modules/bottleneck/lib/BottleneckError.js","../../../node_modules/.pnpm/bottleneck@2.19.5/node_modules/bottleneck/lib/Job.js","../../../node_modules/.pnpm/bottleneck@2.19.5/node_modules/bottleneck/lib/LocalDatastore.js","../../../node_modules/.pnpm/bottleneck@2.19.5/node_modules/bottleneck/lib/lua.json","../../../node_modules/.pnpm/bottleneck@2.19.5/node_modules/bottleneck/lib/Scripts.js","../../../node_modules/.pnpm/bottleneck@2.19.5/node_modules/bottleneck/lib/RedisConnection.js","../../../node_modules/.pnpm/bottleneck@2.19.5/node_modules/bottleneck/lib/IORedisConnection.js","../../../node_modules/.pnpm/bottleneck@2.19.5/node_modules/bottleneck/lib/RedisDatastore.js","../../../node_modules/.pnpm/bottleneck@2.19.5/node_modules/bottleneck/lib/States.js","../../../node_modules/.pnpm/bottleneck@2.19.5/node_modules/bottleneck/lib/Sync.js","../../../node_modules/.pnpm/bottleneck@2.19.5/node_modules/bottleneck/lib/version.json","../../../node_modules/.pnpm/bottleneck@2.19.5/node_modules/bottleneck/lib/Group.js","../../../node_modules/.pnpm/bottleneck@2.19.5/node_modules/bottleneck/lib/Batcher.js","../../../node_modules/.pnpm/bottleneck@2.19.5/node_modules/bottleneck/lib/Bottleneck.js","../../../node_modules/.pnpm/bottleneck@2.19.5/node_modules/bottleneck/lib/index.js","../../../node_modules/.pnpm/@grammyjs+transformer-throttler@1.2.1_grammy@1.40.0/node_modules/@grammyjs/transformer-throttler/dist/deps.node.js","../../../node_modules/.pnpm/@grammyjs+transformer-throttler@1.2.1_grammy@1.40.0/node_modules/@grammyjs/transformer-throttler/dist/mod.js","../src/models/command.ts","../src/core/base-channel.ts","../src/channels/telegram/formatter.ts","../src/channels/telegram/channel.ts","../src/channels/discord/formatter.ts","../../../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/isArray.js","../../../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/_freeGlobal.js","../../../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/_root.js","../../../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/_Symbol.js","../../../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/_getRawTag.js","../../../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/_objectToString.js","../../../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/_baseGetTag.js","../../../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/isObjectLike.js","../../../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/isSymbol.js","../../../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/_isKey.js","../../../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/isObject.js","../../../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/isFunction.js","../../../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/_coreJsData.js","../../../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/_isMasked.js","../../../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/_toSource.js","../../../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/_baseIsNative.js","../../../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/_getValue.js","../../../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/_getNative.js","../../../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/_nativeCreate.js","../../../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/_hashClear.js","../../../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/_hashDelete.js","../../../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/_hashGet.js","../../../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/_hashHas.js","../../../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/_hashSet.js","../../../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/_Hash.js","../../../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/_listCacheClear.js","../../../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/eq.js","../../../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/_assocIndexOf.js","../../../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/_listCacheDelete.js","../../../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/_listCacheGet.js","../../../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/_listCacheHas.js","../../../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/_listCacheSet.js","../../../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/_ListCache.js","../../../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/_Map.js","../../../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/_mapCacheClear.js","../../../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/_isKeyable.js","../../../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/_getMapData.js","../../../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/_mapCacheDelete.js","../../../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/_mapCacheGet.js","../../../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/_mapCacheHas.js","../../../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/_mapCacheSet.js","../../../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/_MapCache.js","../../../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/memoize.js","../../../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/_memoizeCapped.js","../../../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/_stringToPath.js","../../../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/_arrayMap.js","../../../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/_baseToString.js","../../../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/toString.js","../../../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/_castPath.js","../../../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/_toKey.js","../../../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/_baseGet.js","../../../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/get.js","../../../node_modules/.pnpm/fast-deep-equal@3.1.3/node_modules/fast-deep-equal/es6/index.js","../../../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/_setCacheAdd.js","../../../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/_setCacheHas.js","../../../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/_SetCache.js","../../../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/_baseFindIndex.js","../../../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/_baseIsNaN.js","../../../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/_strictIndexOf.js","../../../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/_baseIndexOf.js","../../../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/_arrayIncludes.js","../../../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/_arrayIncludesWith.js","../../../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/_cacheHas.js","../../../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/_Set.js","../../../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/noop.js","../../../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/_setToArray.js","../../../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/_createSet.js","../../../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/_baseUniq.js","../../../node_modules/.pnpm/lodash@4.17.23/node_modules/lodash/uniqWith.js","../../../node_modules/.pnpm/@sapphire+shapeshift@4.0.0/node_modules/@sapphire/shapeshift/node_modules/@jspm/core/nodelibs/browser/chunk-5decc758.js","../../../node_modules/.pnpm/@sapphire+shapeshift@4.0.0/node_modules/@sapphire/shapeshift/node_modules/@jspm/core/nodelibs/browser/chunk-b4205b57.js","../../../node_modules/.pnpm/@sapphire+shapeshift@4.0.0/node_modules/@sapphire/shapeshift/src/constraints/ObjectConstrains.ts","../../../node_modules/.pnpm/@sapphire+shapeshift@4.0.0/node_modules/@sapphire/shapeshift/src/lib/configs.ts","../../../node_modules/.pnpm/@sapphire+shapeshift@4.0.0/node_modules/@sapphire/shapeshift/src/validators/util/getValue.ts","../../../node_modules/.pnpm/@sapphire+shapeshift@4.0.0/node_modules/@sapphire/shapeshift/src/validators/BaseValidator.ts","../../../node_modules/.pnpm/@sapphire+shapeshift@4.0.0/node_modules/@sapphire/shapeshift/src/constraints/util/isUnique.ts","../../../node_modules/.pnpm/@sapphire+shapeshift@4.0.0/node_modules/@sapphire/shapeshift/src/constraints/util/operators.ts","../../../node_modules/.pnpm/@sapphire+shapeshift@4.0.0/node_modules/@sapphire/shapeshift/src/constraints/ArrayConstraints.ts","../../../node_modules/.pnpm/@sapphire+shapeshift@4.0.0/node_modules/@sapphire/shapeshift/src/validators/ArrayValidator.ts","../../../node_modules/.pnpm/@sapphire+shapeshift@4.0.0/node_modules/@sapphire/shapeshift/src/constraints/BigIntConstraints.ts","../../../node_modules/.pnpm/@sapphire+shapeshift@4.0.0/node_modules/@sapphire/shapeshift/src/validators/BigIntValidator.ts","../../../node_modules/.pnpm/@sapphire+shapeshift@4.0.0/node_modules/@sapphire/shapeshift/src/constraints/BooleanConstraints.ts","../../../node_modules/.pnpm/@sapphire+shapeshift@4.0.0/node_modules/@sapphire/shapeshift/src/validators/BooleanValidator.ts","../../../node_modules/.pnpm/@sapphire+shapeshift@4.0.0/node_modules/@sapphire/shapeshift/src/constraints/DateConstraints.ts","../../../node_modules/.pnpm/@sapphire+shapeshift@4.0.0/node_modules/@sapphire/shapeshift/src/validators/NullishValidator.ts","../../../node_modules/.pnpm/@sapphire+shapeshift@4.0.0/node_modules/@sapphire/shapeshift/src/constraints/NumberConstraints.ts","../../../node_modules/.pnpm/@sapphire+shapeshift@4.0.0/node_modules/@sapphire/shapeshift/src/validators/SetValidator.ts","../../../node_modules/.pnpm/@sapphire+shapeshift@4.0.0/node_modules/@sapphire/shapeshift/src/constraints/util/emailValidator.ts","../../../node_modules/.pnpm/@sapphire+shapeshift@4.0.0/node_modules/@sapphire/shapeshift/src/constraints/util/net.ts","../../../node_modules/.pnpm/@sapphire+shapeshift@4.0.0/node_modules/@sapphire/shapeshift/src/lib/errors/MultiplePossibilitiesConstraintError.ts","../../../node_modules/.pnpm/@sapphire+shapeshift@4.0.0/node_modules/@sapphire/shapeshift/src/constraints/util/common/combinedResultFn.ts","../../../node_modules/.pnpm/@sapphire+shapeshift@4.0.0/node_modules/@sapphire/shapeshift/src/constraints/util/urlValidators.ts","../../../node_modules/.pnpm/@sapphire+shapeshift@4.0.0/node_modules/@sapphire/shapeshift/src/constraints/StringConstraints.ts","../../../node_modules/.pnpm/@sapphire+shapeshift@4.0.0/node_modules/@sapphire/shapeshift/src/validators/NativeEnumValidator.ts","../../../node_modules/.pnpm/@sapphire+shapeshift@4.0.0/node_modules/@sapphire/shapeshift/src/constraints/TypedArrayLengthConstraints.ts","node-modules-polyfills:util","../../../node_modules/.pnpm/@sapphire+shapeshift@4.0.0/node_modules/@sapphire/shapeshift/src/lib/errors/BaseError.ts","../../../node_modules/.pnpm/@sapphire+shapeshift@4.0.0/node_modules/@sapphire/shapeshift/src/lib/errors/BaseConstraintError.ts","../../../node_modules/.pnpm/@sapphire+shapeshift@4.0.0/node_modules/@sapphire/shapeshift/src/lib/errors/ExpectedConstraintError.ts","../../../node_modules/.pnpm/@sapphire+shapeshift@4.0.0/node_modules/@sapphire/shapeshift/src/lib/Result.ts","../../../node_modules/.pnpm/@sapphire+shapeshift@4.0.0/node_modules/@sapphire/shapeshift/src/lib/errors/CombinedPropertyError.ts","../../../node_modules/.pnpm/@sapphire+shapeshift@4.0.0/node_modules/@sapphire/shapeshift/src/lib/errors/ValidationError.ts","../../../node_modules/.pnpm/@sapphire+shapeshift@4.0.0/node_modules/@sapphire/shapeshift/src/validators/DateValidator.ts","../../../node_modules/.pnpm/@sapphire+shapeshift@4.0.0/node_modules/@sapphire/shapeshift/src/lib/errors/ExpectedValidationError.ts","../../../node_modules/.pnpm/@sapphire+shapeshift@4.0.0/node_modules/@sapphire/shapeshift/src/validators/InstanceValidator.ts","../../../node_modules/.pnpm/@sapphire+shapeshift@4.0.0/node_modules/@sapphire/shapeshift/src/validators/LiteralValidator.ts","../../../node_modules/.pnpm/@sapphire+shapeshift@4.0.0/node_modules/@sapphire/shapeshift/src/validators/NeverValidator.ts","../../../node_modules/.pnpm/@sapphire+shapeshift@4.0.0/node_modules/@sapphire/shapeshift/src/validators/NumberValidator.ts","../../../node_modules/.pnpm/@sapphire+shapeshift@4.0.0/node_modules/@sapphire/shapeshift/src/lib/errors/MissingPropertyError.ts","../../../node_modules/.pnpm/@sapphire+shapeshift@4.0.0/node_modules/@sapphire/shapeshift/src/lib/errors/UnknownPropertyError.ts","../../../node_modules/.pnpm/@sapphire+shapeshift@4.0.0/node_modules/@sapphire/shapeshift/src/validators/DefaultValidator.ts","../../../node_modules/.pnpm/@sapphire+shapeshift@4.0.0/node_modules/@sapphire/shapeshift/src/lib/errors/CombinedError.ts","../../../node_modules/.pnpm/@sapphire+shapeshift@4.0.0/node_modules/@sapphire/shapeshift/src/validators/UnionValidator.ts","../../../node_modules/.pnpm/@sapphire+shapeshift@4.0.0/node_modules/@sapphire/shapeshift/src/validators/ObjectValidator.ts","../../../node_modules/.pnpm/@sapphire+shapeshift@4.0.0/node_modules/@sapphire/shapeshift/src/validators/PassthroughValidator.ts","../../../node_modules/.pnpm/@sapphire+shapeshift@4.0.0/node_modules/@sapphire/shapeshift/src/validators/RecordValidator.ts","../../../node_modules/.pnpm/@sapphire+shapeshift@4.0.0/node_modules/@sapphire/shapeshift/src/constraints/util/phoneValidator.ts","../../../node_modules/.pnpm/@sapphire+shapeshift@4.0.0/node_modules/@sapphire/shapeshift/src/validators/StringValidator.ts","../../../node_modules/.pnpm/@sapphire+shapeshift@4.0.0/node_modules/@sapphire/shapeshift/src/validators/TupleValidator.ts","../../../node_modules/.pnpm/@sapphire+shapeshift@4.0.0/node_modules/@sapphire/shapeshift/src/validators/MapValidator.ts","../../../node_modules/.pnpm/@sapphire+shapeshift@4.0.0/node_modules/@sapphire/shapeshift/src/validators/LazyValidator.ts","../../../node_modules/.pnpm/@sapphire+shapeshift@4.0.0/node_modules/@sapphire/shapeshift/src/lib/errors/UnknownEnumValueError.ts","../../../node_modules/.pnpm/@sapphire+shapeshift@4.0.0/node_modules/@sapphire/shapeshift/src/constraints/util/common/vowels.ts","../../../node_modules/.pnpm/@sapphire+shapeshift@4.0.0/node_modules/@sapphire/shapeshift/src/constraints/util/typedArray.ts","../../../node_modules/.pnpm/@sapphire+shapeshift@4.0.0/node_modules/@sapphire/shapeshift/src/validators/TypedArrayValidator.ts","../../../node_modules/.pnpm/@sapphire+shapeshift@4.0.0/node_modules/@sapphire/shapeshift/src/lib/Shapes.ts","../../../node_modules/.pnpm/@sapphire+shapeshift@4.0.0/node_modules/@sapphire/shapeshift/node_modules/@jspm/core/nodelibs/browser/chunk-ce0fbc82.js","../../../node_modules/.pnpm/@discordjs+formatters@0.6.2/node_modules/@discordjs/formatters/src/escapers.ts","../../../node_modules/.pnpm/@discordjs+formatters@0.6.2/node_modules/@discordjs/formatters/src/formatters.ts","../../../node_modules/.pnpm/discord-api-types@0.38.40/node_modules/discord-api-types/gateway/v10.ts","../../../node_modules/.pnpm/discord-api-types@0.38.40/node_modules/discord-api-types/globals.ts","../../../node_modules/.pnpm/discord-api-types@0.38.40/node_modules/discord-api-types/payloads/common.ts","../../../node_modules/.pnpm/discord-api-types@0.38.40/node_modules/discord-api-types/payloads/v10/application.ts","../../../node_modules/.pnpm/discord-api-types@0.38.40/node_modules/discord-api-types/payloads/v10/auditLog.ts","../../../node_modules/.pnpm/discord-api-types@0.38.40/node_modules/discord-api-types/payloads/v10/autoModeration.ts","../../../node_modules/.pnpm/discord-api-types@0.38.40/node_modules/discord-api-types/payloads/v10/channel.ts","../../../node_modules/.pnpm/discord-api-types@0.38.40/node_modules/discord-api-types/payloads/v10/gateway.ts","../../../node_modules/.pnpm/discord-api-types@0.38.40/node_modules/discord-api-types/payloads/v10/guild.ts","../../../node_modules/.pnpm/discord-api-types@0.38.40/node_modules/discord-api-types/payloads/v10/guildScheduledEvent.ts","../../../node_modules/.pnpm/discord-api-types@0.38.40/node_modules/discord-api-types/payloads/v10/_interactions/_applicationCommands/_chatInput/shared.ts","../../../node_modules/.pnpm/discord-api-types@0.38.40/node_modules/discord-api-types/payloads/v10/_interactions/_applicationCommands/chatInput.ts","../../../node_modules/.pnpm/discord-api-types@0.38.40/node_modules/discord-api-types/payloads/v10/_interactions/_applicationCommands/permissions.ts","../../../node_modules/.pnpm/discord-api-types@0.38.40/node_modules/discord-api-types/payloads/v10/_interactions/applicationCommands.ts","../../../node_modules/.pnpm/discord-api-types@0.38.40/node_modules/discord-api-types/payloads/v10/_interactions/responses.ts","../../../node_modules/.pnpm/discord-api-types@0.38.40/node_modules/discord-api-types/payloads/v10/interactions.ts","../../../node_modules/.pnpm/discord-api-types@0.38.40/node_modules/discord-api-types/payloads/v10/invite.ts","../../../node_modules/.pnpm/discord-api-types@0.38.40/node_modules/discord-api-types/payloads/v10/message.ts","../../../node_modules/.pnpm/discord-api-types@0.38.40/node_modules/discord-api-types/payloads/v10/monetization.ts","../../../node_modules/.pnpm/discord-api-types@0.38.40/node_modules/discord-api-types/payloads/v10/oauth2.ts","../../../node_modules/.pnpm/discord-api-types@0.38.40/node_modules/discord-api-types/payloads/v10/permissions.ts","../../../node_modules/.pnpm/discord-api-types@0.38.40/node_modules/discord-api-types/payloads/v10/poll.ts","../../../node_modules/.pnpm/discord-api-types@0.38.40/node_modules/discord-api-types/payloads/v10/stageInstance.ts","../../../node_modules/.pnpm/discord-api-types@0.38.40/node_modules/discord-api-types/payloads/v10/sticker.ts","../../../node_modules/.pnpm/discord-api-types@0.38.40/node_modules/discord-api-types/payloads/v10/teams.ts","../../../node_modules/.pnpm/discord-api-types@0.38.40/node_modules/discord-api-types/payloads/v10/user.ts","../../../node_modules/.pnpm/discord-api-types@0.38.40/node_modules/discord-api-types/payloads/v10/webhook.ts","../../../node_modules/.pnpm/discord-api-types@0.38.40/node_modules/discord-api-types/payloads/v10/index.ts","../../../node_modules/.pnpm/discord-api-types@0.38.40/node_modules/discord-api-types/utils/internals.ts","../../../node_modules/.pnpm/discord-api-types@0.38.40/node_modules/discord-api-types/rest/common.ts","../../../node_modules/.pnpm/discord-api-types@0.38.40/node_modules/discord-api-types/rest/v10/channel.ts","../../../node_modules/.pnpm/discord-api-types@0.38.40/node_modules/discord-api-types/rest/v10/monetization.ts","../../../node_modules/.pnpm/discord-api-types@0.38.40/node_modules/discord-api-types/rest/v10/index.ts","../../../node_modules/.pnpm/discord-api-types@0.38.40/node_modules/discord-api-types/rpc/common.ts","../../../node_modules/.pnpm/discord-api-types@0.38.40/node_modules/discord-api-types/rpc/v10.ts","../../../node_modules/.pnpm/discord-api-types@0.38.40/node_modules/discord-api-types/utils/v10.ts","../../../node_modules/.pnpm/discord-api-types@0.38.40/node_modules/discord-api-types/v10.ts","../../../node_modules/.pnpm/discord-api-types@0.38.40/node_modules/discord-api-types/v10.mjs","../../../node_modules/.pnpm/@discordjs+util@1.2.0/node_modules/@discordjs/util/src/functions/lazy.ts","../../../node_modules/.pnpm/@discordjs+util@1.2.0/node_modules/@discordjs/util/src/functions/range.ts","../../../node_modules/.pnpm/@discordjs+util@1.2.0/node_modules/@discordjs/util/src/functions/calculateShardId.ts","../../../node_modules/.pnpm/@discordjs+util@1.2.0/node_modules/@discordjs/util/src/functions/runtime.ts","../../../node_modules/.pnpm/@discordjs+util@1.2.0/node_modules/@discordjs/util/src/functions/userAgentAppendix.ts","../../../node_modules/.pnpm/@discordjs+util@1.2.0/node_modules/@discordjs/util/src/functions/polyfillDispose.ts","../../../node_modules/.pnpm/@discordjs+util@1.2.0/node_modules/@discordjs/util/src/JSONEncodable.ts","../../../node_modules/.pnpm/@discordjs+util@1.2.0/node_modules/@discordjs/util/src/Equatable.ts","../../../node_modules/.pnpm/@discordjs+util@1.2.0/node_modules/@discordjs/util/src/gatewayRateLimitError.ts","../../../node_modules/.pnpm/fast-deep-equal@3.1.3/node_modules/fast-deep-equal/index.js","../../../node_modules/.pnpm/ts-mixer@6.0.4/node_modules/ts-mixer/dist/esm/index.js","../../../node_modules/.pnpm/@discordjs+builders@1.13.1/node_modules/@discordjs/builders/src/util/validation.ts","../../../node_modules/.pnpm/@discordjs+builders@1.13.1/node_modules/@discordjs/builders/src/messages/embed/Assertions.ts","../../../node_modules/.pnpm/@discordjs+builders@1.13.1/node_modules/@discordjs/builders/src/util/normalizeArray.ts","../../../node_modules/.pnpm/@discordjs+builders@1.13.1/node_modules/@discordjs/builders/src/components/Assertions.ts","../../../node_modules/.pnpm/@discordjs+builders@1.13.1/node_modules/@discordjs/builders/src/components/textInput/Assertions.ts","../../../node_modules/.pnpm/@discordjs+builders@1.13.1/node_modules/@discordjs/builders/src/components/v2/Assertions.ts","../../../node_modules/.pnpm/@discordjs+builders@1.13.1/node_modules/@discordjs/builders/src/components/Components.ts","../../../node_modules/.pnpm/@discordjs+builders@1.13.1/node_modules/@discordjs/builders/src/interactions/modals/Assertions.ts","../../../node_modules/.pnpm/@discordjs+builders@1.13.1/node_modules/@discordjs/builders/src/interactions/slashCommands/Assertions.ts","../../../node_modules/.pnpm/@discordjs+builders@1.13.1/node_modules/@discordjs/builders/src/interactions/contextMenuCommands/Assertions.ts","../../../node_modules/.pnpm/@discordjs+builders@1.13.1/node_modules/@discordjs/builders/src/util/componentUtil.ts","../../../node_modules/.pnpm/@discordjs+builders@1.13.1/node_modules/@discordjs/builders/src/components/textInput/TextInput.ts","../../../node_modules/.pnpm/@discordjs+builders@1.13.1/node_modules/@discordjs/builders/src/components/selectMenu/StringSelectMenuOption.ts","../../../node_modules/.pnpm/@discordjs+builders@1.13.1/node_modules/@discordjs/builders/src/components/Component.ts","../../../node_modules/.pnpm/@discordjs+builders@1.13.1/node_modules/@discordjs/builders/src/components/button/Button.ts","../../../node_modules/.pnpm/@discordjs+builders@1.13.1/node_modules/@discordjs/builders/src/components/fileUpload/Assertions.ts","../../../node_modules/.pnpm/@discordjs+builders@1.13.1/node_modules/@discordjs/builders/src/components/fileUpload/FileUpload.ts","../../../node_modules/.pnpm/@discordjs+builders@1.13.1/node_modules/@discordjs/builders/src/components/selectMenu/BaseSelectMenu.ts","../../../node_modules/.pnpm/@discordjs+builders@1.13.1/node_modules/@discordjs/builders/src/components/selectMenu/ChannelSelectMenu.ts","../../../node_modules/.pnpm/@discordjs+builders@1.13.1/node_modules/@discordjs/builders/src/components/selectMenu/MentionableSelectMenu.ts","../../../node_modules/.pnpm/@discordjs+builders@1.13.1/node_modules/@discordjs/builders/src/components/selectMenu/RoleSelectMenu.ts","../../../node_modules/.pnpm/@discordjs+builders@1.13.1/node_modules/@discordjs/builders/src/components/selectMenu/Assertions.ts","../../../node_modules/.pnpm/@discordjs+builders@1.13.1/node_modules/@discordjs/builders/src/components/selectMenu/StringSelectMenu.ts","../../../node_modules/.pnpm/@discordjs+builders@1.13.1/node_modules/@discordjs/builders/src/components/selectMenu/UserSelectMenu.ts","../../../node_modules/.pnpm/@discordjs+builders@1.13.1/node_modules/@discordjs/builders/src/components/label/Assertions.ts","../../../node_modules/.pnpm/@discordjs+builders@1.13.1/node_modules/@discordjs/builders/src/components/label/Label.ts","../../../node_modules/.pnpm/@discordjs+builders@1.13.1/node_modules/@discordjs/builders/src/components/v2/Thumbnail.ts","../../../node_modules/.pnpm/@discordjs+builders@1.13.1/node_modules/@discordjs/builders/src/components/v2/File.ts","../../../node_modules/.pnpm/@discordjs+builders@1.13.1/node_modules/@discordjs/builders/src/components/v2/Separator.ts","../../../node_modules/.pnpm/@discordjs+builders@1.13.1/node_modules/@discordjs/builders/src/components/v2/TextDisplay.ts","../../../node_modules/.pnpm/@discordjs+builders@1.13.1/node_modules/@discordjs/builders/src/components/v2/Container.ts","../../../node_modules/.pnpm/@discordjs+builders@1.13.1/node_modules/@discordjs/builders/src/components/v2/MediaGalleryItem.ts","../../../node_modules/.pnpm/@discordjs+builders@1.13.1/node_modules/@discordjs/builders/src/components/v2/MediaGallery.ts","../../../node_modules/.pnpm/@discordjs+builders@1.13.1/node_modules/@discordjs/builders/src/components/v2/Section.ts","../../../node_modules/.pnpm/@discordjs+builders@1.13.1/node_modules/@discordjs/builders/src/components/ActionRow.ts","../../../node_modules/.pnpm/@discordjs+builders@1.13.1/node_modules/@discordjs/builders/src/interactions/slashCommands/mixins/NameAndDescription.ts","../../../node_modules/.pnpm/@discordjs+builders@1.13.1/node_modules/@discordjs/builders/src/interactions/slashCommands/mixins/SharedSlashCommand.ts","../../../node_modules/.pnpm/@discordjs+builders@1.13.1/node_modules/@discordjs/builders/src/interactions/slashCommands/mixins/ApplicationCommandOptionBase.ts","../../../node_modules/.pnpm/@discordjs+builders@1.13.1/node_modules/@discordjs/builders/src/interactions/slashCommands/options/attachment.ts","../../../node_modules/.pnpm/@discordjs+builders@1.13.1/node_modules/@discordjs/builders/src/interactions/slashCommands/options/boolean.ts","../../../node_modules/.pnpm/@discordjs+builders@1.13.1/node_modules/@discordjs/builders/src/interactions/slashCommands/mixins/ApplicationCommandOptionChannelTypesMixin.ts","../../../node_modules/.pnpm/@discordjs+builders@1.13.1/node_modules/@discordjs/builders/src/interactions/slashCommands/options/channel.ts","../../../node_modules/.pnpm/@discordjs+builders@1.13.1/node_modules/@discordjs/builders/src/interactions/slashCommands/mixins/ApplicationCommandNumericOptionMinMaxValueMixin.ts","../../../node_modules/.pnpm/@discordjs+builders@1.13.1/node_modules/@discordjs/builders/src/interactions/slashCommands/mixins/ApplicationCommandOptionWithAutocompleteMixin.ts","../../../node_modules/.pnpm/@discordjs+builders@1.13.1/node_modules/@discordjs/builders/src/interactions/slashCommands/mixins/ApplicationCommandOptionWithChoicesMixin.ts","../../../node_modules/.pnpm/@discordjs+builders@1.13.1/node_modules/@discordjs/builders/src/interactions/slashCommands/options/integer.ts","../../../node_modules/.pnpm/@discordjs+builders@1.13.1/node_modules/@discordjs/builders/src/interactions/slashCommands/options/mentionable.ts","../../../node_modules/.pnpm/@discordjs+builders@1.13.1/node_modules/@discordjs/builders/src/interactions/slashCommands/options/number.ts","../../../node_modules/.pnpm/@discordjs+builders@1.13.1/node_modules/@discordjs/builders/src/interactions/slashCommands/options/role.ts","../../../node_modules/.pnpm/@discordjs+builders@1.13.1/node_modules/@discordjs/builders/src/interactions/slashCommands/options/string.ts","../../../node_modules/.pnpm/@discordjs+builders@1.13.1/node_modules/@discordjs/builders/src/interactions/slashCommands/options/user.ts","../../../node_modules/.pnpm/@discordjs+builders@1.13.1/node_modules/@discordjs/builders/src/interactions/slashCommands/mixins/SharedSlashCommandOptions.ts","../../../node_modules/.pnpm/@discordjs+builders@1.13.1/node_modules/@discordjs/builders/src/interactions/slashCommands/SlashCommandSubcommands.ts","../../../node_modules/.pnpm/@discordjs+builders@1.13.1/node_modules/@discordjs/builders/src/interactions/slashCommands/mixins/SharedSubcommands.ts","../../../node_modules/.pnpm/@discordjs+builders@1.13.1/node_modules/@discordjs/builders/src/interactions/slashCommands/SlashCommandBuilder.ts","../../../node_modules/.pnpm/@discordjs+builders@1.13.1/node_modules/@discordjs/builders/src/index.ts","../../../node_modules/.pnpm/@discordjs+builders@1.13.1/node_modules/@discordjs/builders/src/interactions/modals/Modal.ts","../../../node_modules/.pnpm/@discordjs+builders@1.13.1/node_modules/@discordjs/builders/src/messages/embed/Embed.ts","../../../node_modules/.pnpm/@discordjs+builders@1.13.1/node_modules/@discordjs/builders/src/interactions/contextMenuCommands/ContextMenuCommandBuilder.ts","../src/channels/discord/commands.ts","../src/channels/discord/channel.ts","../src/channels/slack/formatter.ts","../src/channels/slack/channel.ts","../src/core/dispatcher.ts","../src/models/user.ts","../src/core/permission-manager.ts","../src/core/logger.ts","../src/core/base-handler.ts","../src/core/types.ts","../src/handlers/terminal.ts","../src/handlers/agent.ts","../src/handlers/files.ts","../src/handlers/help.ts","../src/config.ts","../src/hub.ts","../src/index.ts","../src/models/message.ts","../src/models/index.ts","../src/models/session.ts","../src/streaming/token-buffer.ts","../src/streaming/slack-stream.ts","../src/channels/demo/channel.ts","../src/channels/telegram/index.ts","../src/channels/telegram/keyboard.ts","../src/channels/discord/index.ts","../src/channels/slack/index.ts","../src/channels/slack/blocks.ts"],"names":["options","exports","k","v","module","asyncGeneratorStep","_asyncToGenerator","self","err","Events","e","x","j","parser","Promise","t","time","h","i","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_nonIterableRest","IORedisConnection","RedisConnection","b","Scripts","Group","Batcher","Bottleneck","args","wrapped","mod","apiThrottler","z","formatBytes","init_formatter","Symbol","getValue","Map","quote","get","equal","a","Set","uniqWith","n","s","p","r","o","f","c","u","fastDeepEqual","uniqueArray","email","__defProp","d","m","inherits","l","T","TextEncoder","_BaseError","inspect","_Result","isValidationEnabled","_CombinedPropertyError","_ValidationError","_ArrayValidator","_BigIntValidator","_BooleanValidator","_DateValidator","_ExpectedValidationError","_InstanceValidator","_LiteralValidator","_NeverValidator","_NullishValidator","_NumberValidator","_MissingPropertyError","_UnknownPropertyError","_DefaultValidator","_CombinedError","_UnionValidator","_ObjectValidator","_PassthroughValidator","_RecordValidator","_SetValidator","_MultiplePossibilitiesConstraintError","_StringValidator","_TupleValidator","_MapValidator","valueValidator","_LazyValidator","_UnknownEnumValueError","_NativeEnumValidator","_Shapes","codeBlock","inlineCode","bold","italic","underline","strikethrough","spoiler","heading","_","element","phoneNumber","__name","GatewayOpcodes","GatewayCloseCodes","GatewayIntentBits","GatewayDispatchEvents","VoiceChannelEffectSendAnimationType","ApplicationFlags","ApplicationRoleConnectionMetadataType","ApplicationWebhookEventStatus","AuditLogEvent","AuditLogOptionsType","AutoModerationRuleTriggerType","AutoModerationRuleKeywordPresetType","AutoModerationRuleEventType","AutoModerationActionType","SortOrderType","ForumLayoutType","ChannelType","VideoQualityMode","OverwriteType","ThreadAutoArchiveDuration","ThreadMemberFlags","ChannelFlags","PresenceUpdateStatus","ActivityPlatform","ActivityType","StatusDisplayType","ActivityFlags","GuildDefaultMessageNotifications","GuildExplicitContentFilter","GuildMFALevel","GuildNSFWLevel","GuildVerificationLevel","GuildPremiumTier","GuildHubType","GuildSystemChannelFlags","GuildFeature","GuildMemberFlags","IntegrationExpireBehavior","GuildWidgetStyle","MembershipScreeningFieldType","GuildOnboardingMode","GuildOnboardingPromptType","GuildScheduledEventRecurrenceRuleFrequency","GuildScheduledEventRecurrenceRuleWeekday","GuildScheduledEventRecurrenceRuleMonth","GuildScheduledEventEntityType","GuildScheduledEventStatus","GuildScheduledEventPrivacyLevel","ApplicationCommandOptionType","ApplicationCommandPermissionType","ApplicationCommandType","ApplicationIntegrationType","InteractionContextType","EntryPointCommandHandlerType","InteractionType","InteractionResponseType","InviteFlags","InviteType","InviteTargetType","MessageType","MessageActivityType","MessageReferenceType","MessageFlags","EmbedType","AttachmentFlags","AllowedMentionsTypes","ComponentType","ButtonStyle","TextInputStyle","SelectMenuDefaultValueType","UnfurledMediaItemLoadingState","SeparatorSpacingSize","EntitlementType","SKUFlags","SKUType","SubscriptionStatus","OAuth2Scopes","RoleFlags","PollLayoutType","StageInstancePrivacyLevel","StickerType","StickerFormatType","TeamMemberMembershipState","TeamMemberRole","UserFlags","UserPremiumType","ConnectionService","ConnectionVisibility","NameplatePalette","ApplicationWebhookType","ApplicationWebhookEventType","WebhookType","RESTJSONErrorCodes","Locale","ReactionType","EntitlementOwnerType","ImageFormat","RPCDeviceType","RPCVoiceSettingsModeType","RPCVoiceShortcutKeyComboKeyType","VoiceConnectionStates","RelationshipType","RPCErrorCodes","RPCCloseEventCodes","RPCCommands","RPCEvents","range","init_esm","protoChain","o2","d2","decorators","validateRequiredParameters","descriptionPredicate","assertReturnOfBuilder","validateDefaultPermission","booleanPredicate","validateName","namePredicate","validateDMPermission","dmPermissionPredicate","validateDefaultMemberPermissions","memberPermissionPredicate","Assertions_exports","placeholderValidator","numberValidator","minLengthValidator","maxLengthValidator","contextsPredicate","integrationTypesPredicate","init_dist","__export","isEqual","mix","channel_exports","init_channel","Routes","parseCommand","result","settings","TelegramChannel","DiscordChannel","SlackChannel"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAWa,QAAA,CAAA,CAgCA,qBAAA,CAAA,CAaA,cAAA,CAAA,CAgBA,YAAA,CAAA,CAMA,sBASA,gBAAA,CAAA,CASA,qBAAA,CAAA,CAaA,UAAA,CAAA,CAMA,oBAAA,CAAA,CAMA,qBAMA,iBAAA,CAAA,CAUA,YAAA,CAAA,CAMA,aAAA,CAAA,CAMA,YAAA,CAAA,CAMA,YAMA,UAAA,CAAA,CAUA;AA3Kb,IAAA,WAAA,GAAA,KAAA,CAAA;AAAA,EAAA,eAAA,GAAA;AAWO,IAAM,QAAA,GAAN,cAAuB,KAAA,CAAM;AAAA,MAClB,IAAA;AAAA,MACA,OAAA;AAAA,MAEhB,WAAA,CACE,OAAA,EACAA,QAAAA,GAII,EAAC,EACL;AACA,QAAA,KAAA,CAAM,OAAA,EAAS,EAAE,KAAA,EAAOA,QAAAA,CAAQ,OAAO,CAAA;AACvC,QAAA,IAAA,CAAK,IAAA,GAAO,KAAK,WAAA,CAAY,IAAA;AAC7B,QAAA,IAAA,CAAK,IAAA,GAAOA,QAAAA,CAAQ,IAAA,IAAQ,IAAA,CAAK,WAAA,CAAY,IAAA;AAC7C,QAAA,IAAA,CAAK,OAAA,GAAUA,QAAAA,CAAQ,OAAA,IAAW,EAAC;AAAA,MACrC;AAAA,MAEA,KAAA,GAAiC;AAC/B,QAAA,OAAO;AAAA,UACL,OAAO,IAAA,CAAK,IAAA;AAAA,UACZ,MAAM,IAAA,CAAK,IAAA;AAAA,UACX,SAAS,IAAA,CAAK,OAAA;AAAA,UACd,SAAS,IAAA,CAAK;AAAA,SAChB;AAAA,MACF;AAAA,KACF;AAMO,IAAM,qBAAA,GAAN,cAAoC,QAAA,CAAS;AAAA,MAClD,WAAA,CAAY,QAAgB,QAAA,EAAkB;AAC5C,QAAA,KAAA,CAAM,CAAA,KAAA,EAAQ,MAAM,CAAA,UAAA,EAAa,QAAQ,CAAA,WAAA,CAAA,EAAe;AAAA,UACtD,IAAA,EAAM,mBAAA;AAAA,UACN,OAAA,EAAS,EAAE,MAAA,EAAQ,QAAA;AAAS,SAC7B,CAAA;AAAA,MACH;AAAA,KACF;AAMO,IAAM,cAAA,GAAN,cAA6B,QAAA,CAAS;AAAA,MAC3B,YAAA;AAAA,MAEhB,WAAA,CAAY,SAAiB,YAAA,EAAuB;AAClD,QAAA,KAAA,CAAM,OAAA,EAAS;AAAA,UACb,IAAA,EAAM,YAAA;AAAA,UACN,OAAA,EAAS,EAAE,YAAA;AAAa,SACzB,CAAA;AACD,QAAA,IAAA,CAAK,YAAA,GAAe,YAAA;AAAA,MACtB;AAAA,KACF;AAMO,IAAM,YAAA,GAAN,cAA2B,QAAA,CAAS;AAAA,MACzC,WAAA,CAAY,SAAiBA,QAAAA,EAA+E;AAC1G,QAAA,KAAA,CAAM,SAASA,QAAO,CAAA;AAAA,MACxB;AAAA,KACF;AAEO,IAAM,oBAAA,GAAN,cAAmC,YAAA,CAAa;AAAA,MACrD,YAAY,OAAA,EAAiB;AAC3B,QAAA,KAAA,CAAM,CAAA,kBAAA,EAAqB,OAAO,CAAA,CAAA,EAAI;AAAA,UACpC,IAAA,EAAM,mBAAA;AAAA,UACN,OAAA,EAAS,EAAE,OAAA;AAAQ,SACpB,CAAA;AAAA,MACH;AAAA,KACF;AAEO,IAAM,gBAAA,GAAN,cAA+B,YAAA,CAAa;AAAA,MACjD,WAAA,CAAY,SAAiB,IAAA,EAAc;AACzC,QAAA,KAAA,CAAM,CAAA,gBAAA,EAAmB,OAAO,CAAA,QAAA,EAAM,IAAI,CAAA,CAAA,EAAI;AAAA,UAC5C,IAAA,EAAM,cAAA;AAAA,UACN,OAAA,EAAS,EAAE,OAAA,EAAS,IAAA;AAAK,SAC1B,CAAA;AAAA,MACH;AAAA,KACF;AAEO,IAAM,qBAAA,GAAN,cAAoC,YAAA,CAAa;AAAA,MACtD,WAAA,CAAY,SAAiB,SAAA,EAAmB;AAC9C,QAAA,KAAA,CAAM,CAAA,SAAA,EAAY,OAAO,CAAA,kBAAA,EAAqB,SAAS,CAAA,EAAA,CAAA,EAAM;AAAA,UAC3D,IAAA,EAAM,mBAAA;AAAA,UACN,OAAA,EAAS,EAAE,OAAA,EAAS,SAAA;AAAU,SAC/B,CAAA;AAAA,MACH;AAAA,KACF;AAMO,IAAM,UAAA,GAAN,cAAyB,QAAA,CAAS;AAAA,MACvC,WAAA,CAAY,SAAiB,KAAA,EAAe;AAC1C,QAAA,KAAA,CAAM,OAAA,EAAS,EAAE,IAAA,EAAM,aAAA,EAAe,OAAO,CAAA;AAAA,MAC/C;AAAA,KACF;AAEO,IAAM,oBAAA,GAAN,cAAmC,QAAA,CAAS;AAAA,MACjD,YAAY,OAAA,EAAiB;AAC3B,QAAA,KAAA,CAAM,CAAA,SAAA,EAAY,OAAO,CAAA,WAAA,CAAA,EAAe,EAAE,IAAA,EAAM,qBAAqB,OAAA,EAAS,EAAE,OAAA,EAAQ,EAAG,CAAA;AAAA,MAC7F;AAAA,KACF;AAEO,IAAM,mBAAA,GAAN,cAAkC,QAAA,CAAS;AAAA,MAChD,YAAY,OAAA,EAAiB;AAC3B,QAAA,KAAA,CAAM,CAAA,SAAA,EAAY,OAAO,CAAA,qCAAA,CAAA,EAAyC,EAAE,IAAA,EAAM,mBAAmB,OAAA,EAAS,EAAE,OAAA,EAAQ,EAAG,CAAA;AAAA,MACrH;AAAA,KACF;AAEO,IAAM,iBAAA,GAAN,cAAgC,QAAA,CAAS;AAAA,MAC9C,WAAA,CAAY,SAAA,EAAmB,SAAA,EAAmB,KAAA,EAAe;AAC/D,QAAA,KAAA,CAAM,CAAA,iBAAA,EAAoB,SAAS,CAAA,kBAAA,EAAqB,SAAS,MAAM,EAAE,IAAA,EAAM,eAAA,EAAiB,OAAA,EAAS,EAAE,SAAA,EAAW,SAAA,EAAU,EAAG,OAAO,CAAA;AAAA,MAC5I;AAAA,KACF;AAMO,IAAM,YAAA,GAAN,cAA2B,QAAA,CAAS;AAAA,MACzC,WAAA,CAAY,SAAiBA,QAAAA,EAA+E;AAC1G,QAAA,KAAA,CAAM,SAASA,QAAO,CAAA;AAAA,MACxB;AAAA,KACF;AAEO,IAAM,aAAA,GAAN,cAA4B,YAAA,CAAa;AAAA,MAC9C,WAAA,CAAY,SAAiB,KAAA,EAAe;AAC1C,QAAA,KAAA,CAAM,OAAA,EAAS,EAAE,IAAA,EAAM,gBAAA,EAAkB,OAAO,CAAA;AAAA,MAClD;AAAA,KACF;AAEO,IAAM,YAAA,GAAN,cAA2B,YAAA,CAAa;AAAA,MAC7C,WAAA,CAAY,SAAiB,KAAA,EAAe;AAC1C,QAAA,KAAA,CAAM,OAAA,EAAS,EAAE,IAAA,EAAM,eAAA,EAAiB,OAAO,CAAA;AAAA,MACjD;AAAA,KACF;AAEO,IAAM,UAAA,GAAN,cAAyB,YAAA,CAAa;AAAA,MAC3C,WAAA,CAAY,SAAiB,KAAA,EAAe;AAC1C,QAAA,KAAA,CAAM,OAAA,EAAS,EAAE,IAAA,EAAM,aAAA,EAAe,OAAO,CAAA;AAAA,MAC/C;AAAA,KACF;AAEO,IAAM,UAAA,GAAN,cAAyB,YAAA,CAAa;AAAA,MAC3C,WAAA,CAAY,SAAiB,KAAA,EAAe;AAC1C,QAAA,KAAA,CAAM,OAAA,EAAS,EAAE,IAAA,EAAM,aAAA,EAAe,OAAO,CAAA;AAAA,MAC/C;AAAA,KACF;AAMO,IAAM,WAAA,GAAN,cAA0B,QAAA,CAAS;AAAA,MACxC,WAAA,CAAY,SAAiB,OAAA,EAAmC;AAC9D,QAAA,KAAA,CAAM,OAAA,EAAS,EAAE,IAAA,EAAM,cAAA,EAAgB,SAAS,CAAA;AAAA,MAClD;AAAA,KACF;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC/KA,IAAA,cAAA,GAAA,UAAA,CAAA;AAAA,EAAA,kFAAA,CAAAC,QAAAA,EAAA;AAEA,IAAAA,SAAQ,IAAA,GAAO,SAAU,UAAU,QAAA,EAAU,IAAA,GAAO,EAAC,EAAG;AACtD,MAAA,IAAIC,IAAG,GAAA,EAAKC,EAAAA;AAEZ,MAAA,KAAKD,MAAK,QAAA,EAAU;AAClB,QAAAC,EAAAA,GAAI,SAASD,EAAC,CAAA;AACd,QAAA,IAAA,CAAKA,EAAC,CAAA,GAAA,CAAK,GAAA,GAAM,SAASA,EAAC,CAAA,KAAM,OAAO,GAAA,GAAMC,EAAAA;AAAA,MAChD;AAEA,MAAA,OAAO,IAAA;AAAA,IACT,CAAA;AAEA,IAAAF,SAAQ,SAAA,GAAY,SAAU,UAAU,QAAA,EAAU,IAAA,GAAO,EAAC,EAAG;AAC3D,MAAA,IAAIC,EAAAA,EAAGC,EAAAA;AAEP,MAAA,KAAKD,MAAK,QAAA,EAAU;AAClB,QAAAC,EAAAA,GAAI,SAASD,EAAC,CAAA;AAEd,QAAA,IAAI,QAAA,CAASA,EAAC,CAAA,KAAM,MAAA,EAAQ;AAC1B,UAAA,IAAA,CAAKA,EAAC,CAAA,GAAIC,EAAAA;AAAA,QACZ;AAAA,MACF;AAEA,MAAA,OAAO,IAAA;AAAA,IACT,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACzBA,IAAA,cAAA,GAAA,UAAA,CAAA;AAAA,EAAA,kFAAA,CAAAF,UAAAG,OAAAA,EAAA;AAEA,IAAA,IAAI,MAAA;AACJ,IAAA,MAAA,GAAS,MAAM,MAAA,CAAO;AAAA,MACpB,WAAA,CAAY,MAAM,IAAA,EAAM;AACtB,QAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AACZ,QAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AACZ,QAAA,IAAA,CAAK,MAAA,GAAS,IAAA;AACd,QAAA,IAAA,CAAK,KAAA,GAAQ,IAAA;AACb,QAAA,IAAA,CAAK,MAAA,GAAS,CAAA;AAAA,MAChB;AAAA,MAEA,KAAK,KAAA,EAAO;AACV,QAAA,IAAI,IAAA;AACJ,QAAA,IAAA,CAAK,MAAA,EAAA;AAEL,QAAA,IAAI,OAAO,IAAA,CAAK,IAAA,KAAS,UAAA,EAAY;AACnC,UAAA,IAAA,CAAK,IAAA,EAAK;AAAA,QACZ;AAEA,QAAA,IAAA,GAAO;AAAA,UACL,KAAA;AAAA,UACA,MAAM,IAAA,CAAK,KAAA;AAAA,UACX,IAAA,EAAM;AAAA,SACR;AAEA,QAAA,IAAI,IAAA,CAAK,SAAS,IAAA,EAAM;AACtB,UAAA,IAAA,CAAK,MAAM,IAAA,GAAO,IAAA;AAClB,UAAA,IAAA,CAAK,KAAA,GAAQ,IAAA;AAAA,QACf,CAAA,MAAO;AACL,UAAA,IAAA,CAAK,MAAA,GAAS,KAAK,KAAA,GAAQ,IAAA;AAAA,QAC7B;AAEA,QAAA,OAAO,MAAA;AAAA,MACT;AAAA,MAEA,KAAA,GAAQ;AACN,QAAA,IAAI,KAAA;AAEJ,QAAA,IAAI,IAAA,CAAK,UAAU,IAAA,EAAM;AACvB,UAAA;AAAA,QACF,CAAA,MAAO;AACL,UAAA,IAAA,CAAK,MAAA,EAAA;AAEL,UAAA,IAAI,OAAO,IAAA,CAAK,IAAA,KAAS,UAAA,EAAY;AACnC,YAAA,IAAA,CAAK,IAAA,EAAK;AAAA,UACZ;AAAA,QACF;AAEA,QAAA,KAAA,GAAQ,KAAK,MAAA,CAAO,KAAA;AAEpB,QAAA,IAAA,CAAK,IAAA,CAAK,MAAA,GAAS,IAAA,CAAK,MAAA,CAAO,SAAS,IAAA,EAAM;AAC5C,UAAA,IAAA,CAAK,OAAO,IAAA,GAAO,IAAA;AAAA,QACrB,CAAA,MAAO;AACL,UAAA,IAAA,CAAK,KAAA,GAAQ,IAAA;AAAA,QACf;AAEA,QAAA,OAAO,KAAA;AAAA,MACT;AAAA,MAEA,KAAA,GAAQ;AACN,QAAA,IAAI,IAAA,CAAK,UAAU,IAAA,EAAM;AACvB,UAAA,OAAO,KAAK,MAAA,CAAO,KAAA;AAAA,QACrB;AAAA,MACF;AAAA,MAEA,QAAA,GAAW;AACT,QAAA,IAAI,MAAM,GAAA,EAAK,OAAA;AACf,QAAA,IAAA,GAAO,IAAA,CAAK,MAAA;AACZ,QAAA,OAAA,GAAU,EAAC;AAEX,QAAA,OAAO,QAAQ,IAAA,EAAM;AACnB,UAAA,OAAA,CAAQ,MAAM,GAAA,GAAM,IAAA,EAAM,OAAO,IAAA,CAAK,IAAA,EAAM,IAAI,KAAA,EAAM;AAAA,QACxD;AAEA,QAAA,OAAO,OAAA;AAAA,MACT;AAAA,MAEA,aAAa,EAAA,EAAI;AACf,QAAA,IAAI,IAAA;AACJ,QAAA,IAAA,GAAO,KAAK,KAAA,EAAM;AAElB,QAAA,OAAO,QAAQ,IAAA,EAAM;AACnB,UAAA,EAAA,CAAG,IAAI,CAAA,EAAG,IAAA,GAAO,IAAA,CAAK,KAAA,EAAM;AAAA,QAC9B;AAEA,QAAA,OAAO,MAAA;AAAA,MACT;AAAA,MAEA,KAAA,GAAQ;AACN,QAAA,IAAI,IAAA,EAAM,GAAA,EAAK,IAAA,EAAM,IAAA,EAAM,OAAA;AAC3B,QAAA,IAAA,GAAO,IAAA,CAAK,MAAA;AACZ,QAAA,OAAA,GAAU,EAAC;AAEX,QAAA,OAAO,QAAQ,IAAA,EAAM;AACnB,UAAA,OAAA,CAAQ,IAAA,EAAM,GAAA,GAAM,IAAA,EAAM,IAAA,GAAO,KAAK,IAAA,EAAM;AAAA,YAC1C,OAAO,GAAA,CAAI,KAAA;AAAA,YACX,OAAO,IAAA,GAAO,GAAA,CAAI,IAAA,KAAS,IAAA,GAAO,KAAK,KAAA,GAAQ,MAAA;AAAA,YAC/C,OAAO,IAAA,GAAO,GAAA,CAAI,IAAA,KAAS,IAAA,GAAO,KAAK,KAAA,GAAQ;AAAA,WACjD,EAAE;AAAA,QACJ;AAEA,QAAA,OAAO,OAAA;AAAA,MACT;AAAA,KAEF;AACA,IAAAA,QAAO,OAAA,GAAU,MAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC1GjB,IAAA,cAAA,GAAA,UAAA,CAAA;AAAA,EAAA,kFAAA,CAAAH,UAAAG,OAAAA,EAAA;AAEA,IAAA,SAASC,oBAAmB,GAAA,EAAK,OAAA,EAAS,QAAQ,KAAA,EAAO,MAAA,EAAQ,KAAK,GAAA,EAAK;AAAE,MAAA,IAAI;AAAE,QAAA,IAAI,IAAA,GAAO,GAAA,CAAI,GAAG,CAAA,CAAE,GAAG,CAAA;AAAG,QAAA,IAAI,QAAQ,IAAA,CAAK,KAAA;AAAA,MAAO,SAAS,KAAA,EAAO;AAAE,QAAA,MAAA,CAAO,KAAK,CAAA;AAAG,QAAA;AAAA,MAAQ;AAAE,MAAA,IAAI,KAAK,IAAA,EAAM;AAAE,QAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,MAAG,CAAA,MAAO;AAAE,QAAA,OAAA,CAAQ,OAAA,CAAQ,KAAK,CAAA,CAAE,IAAA,CAAK,OAAO,MAAM,CAAA;AAAA,MAAG;AAAA,IAAE;AAExQ,IAAA,SAASC,mBAAkB,EAAA,EAAI;AAAE,MAAA,OAAO,WAAY;AAAE,QAAA,IAAIC,KAAAA,GAAO,MAAM,IAAA,GAAO,SAAA;AAAW,QAAA,OAAO,IAAI,OAAA,CAAQ,SAAU,OAAA,EAAS,MAAA,EAAQ;AAAE,UAAA,IAAI,GAAA,GAAM,EAAA,CAAG,KAAA,CAAMA,KAAAA,EAAM,IAAI,CAAA;AAAG,UAAA,SAAS,MAAM,KAAA,EAAO;AAAE,YAAAF,oBAAmB,GAAA,EAAK,OAAA,EAAS,QAAQ,KAAA,EAAO,MAAA,EAAQ,QAAQ,KAAK,CAAA;AAAA,UAAG;AAAE,UAAA,SAAS,OAAOG,IAAAA,EAAK;AAAE,YAAAH,oBAAmB,GAAA,EAAK,OAAA,EAAS,QAAQ,KAAA,EAAO,MAAA,EAAQ,SAASG,IAAG,CAAA;AAAA,UAAG;AAAE,UAAA,KAAA,CAAM,MAAS,CAAA;AAAA,QAAG,CAAC,CAAA;AAAA,MAAG,CAAA;AAAA,IAAG;AAEpY,IAAA,IAAIC,OAAAA;AACJ,IAAAA,OAAAA,GAAS,MAAM,MAAA,CAAO;AAAA,MACpB,YAAY,QAAA,EAAU;AACpB,QAAA,IAAA,CAAK,QAAA,GAAW,QAAA;AAChB,QAAA,IAAA,CAAK,UAAU,EAAC;AAEhB,QAAA,IAAI,IAAA,CAAK,QAAA,CAAS,EAAA,IAAM,IAAA,IAAQ,IAAA,CAAK,QAAA,CAAS,IAAA,IAAQ,IAAA,IAAQ,IAAA,CAAK,QAAA,CAAS,kBAAA,IAAsB,IAAA,EAAM;AACtG,UAAA,MAAM,IAAI,MAAM,2CAA2C,CAAA;AAAA,QAC7D;AAEA,QAAA,IAAA,CAAK,QAAA,CAAS,EAAA,GAAK,CAAC,IAAA,EAAM,EAAA,KAAO;AAC/B,UAAA,OAAO,IAAA,CAAK,YAAA,CAAa,IAAA,EAAM,MAAA,EAAQ,EAAE,CAAA;AAAA,QAC3C,CAAA;AAEA,QAAA,IAAA,CAAK,QAAA,CAAS,IAAA,GAAO,CAAC,IAAA,EAAM,EAAA,KAAO;AACjC,UAAA,OAAO,IAAA,CAAK,YAAA,CAAa,IAAA,EAAM,MAAA,EAAQ,EAAE,CAAA;AAAA,QAC3C,CAAA;AAEA,QAAA,IAAA,CAAK,QAAA,CAAS,kBAAA,GAAqB,CAAC,IAAA,GAAO,IAAA,KAAS;AAClD,UAAA,IAAI,QAAQ,IAAA,EAAM;AAChB,YAAA,OAAO,OAAO,IAAA,CAAK,OAAA,CAAQ,IAAI,CAAA;AAAA,UACjC,CAAA,MAAO;AACL,YAAA,OAAO,IAAA,CAAK,UAAU,EAAC;AAAA,UACzB;AAAA,QACF,CAAA;AAAA,MACF;AAAA,MAEA,YAAA,CAAa,IAAA,EAAM,MAAA,EAAQ,EAAA,EAAI;AAC7B,QAAA,IAAI,IAAA;AAEJ,QAAA,IAAA,CAAK,IAAA,GAAO,IAAA,CAAK,OAAA,EAAS,IAAI,KAAK,IAAA,EAAM;AACvC,UAAA,IAAA,CAAK,IAAI,IAAI,EAAC;AAAA,QAChB;AAEA,QAAA,IAAA,CAAK,OAAA,CAAQ,IAAI,CAAA,CAAE,IAAA,CAAK;AAAA,UACtB,EAAA;AAAA,UACA;AAAA,SACD,CAAA;AAED,QAAA,OAAO,IAAA,CAAK,QAAA;AAAA,MACd;AAAA,MAEA,cAAc,IAAA,EAAM;AAClB,QAAA,IAAI,IAAA,CAAK,OAAA,CAAQ,IAAI,CAAA,IAAK,IAAA,EAAM;AAC9B,UAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,IAAI,CAAA,CAAE,MAAA;AAAA,QAC5B,CAAA,MAAO;AACL,UAAA,OAAO,CAAA;AAAA,QACT;AAAA,MACF;AAAA,MAEA,OAAA,CAAQ,SAAS,IAAA,EAAM;AACrB,QAAA,IAAI,KAAA,GAAQ,IAAA;AAEZ,QAAA,OAAOH,mBAAkB,aAAa;AACpC,UAAA,IAAII,EAAAA,EAAG,QAAA;AAEP,UAAA,IAAI;AACF,YAAA,IAAI,SAAS,OAAA,EAAS;AACpB,cAAA,KAAA,CAAM,OAAA,CAAQ,OAAA,EAAS,CAAA,iBAAA,EAAoB,IAAI,IAAI,IAAI,CAAA;AAAA,YACzD;AAEA,YAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,IAAI,CAAA,IAAK,IAAA,EAAM;AAC/B,cAAA;AAAA,YACF;AAEA,YAAA,KAAA,CAAM,OAAA,CAAQ,IAAI,CAAA,GAAI,KAAA,CAAM,QAAQ,IAAI,CAAA,CAAE,MAAA,CAAO,SAAU,QAAA,EAAU;AACnE,cAAA,OAAO,SAAS,MAAA,KAAW,MAAA;AAAA,YAC7B,CAAC,CAAA;AACD,YAAA,QAAA,GAAW,KAAA,CAAM,OAAA,CAAQ,IAAI,CAAA,CAAE,GAAA;AAAA,8BAE/B,CAAA,WAAY;AACV,gBAAA,IAAI,IAAA,GAAOJ,kBAAAA,CAAkB,WAAW,QAAA,EAAU;AAChD,kBAAA,IAAII,EAAAA,EAAG,QAAA;AAEP,kBAAA,IAAI,QAAA,CAAS,WAAW,MAAA,EAAQ;AAC9B,oBAAA;AAAA,kBACF;AAEA,kBAAA,IAAI,QAAA,CAAS,WAAW,MAAA,EAAQ;AAC9B,oBAAA,QAAA,CAAS,MAAA,GAAS,MAAA;AAAA,kBACpB;AAEA,kBAAA,IAAI;AACF,oBAAA,QAAA,GAAW,OAAO,SAAS,EAAA,KAAO,UAAA,GAAa,SAAS,EAAA,CAAG,GAAG,IAAI,CAAA,GAAI,KAAA,CAAA;AAEtE,oBAAA,IAAI,QAAQ,QAAA,IAAY,IAAA,GAAO,QAAA,CAAS,IAAA,GAAO,YAAY,UAAA,EAAY;AACrE,sBAAA,OAAO,MAAM,QAAA;AAAA,oBACf,CAAA,MAAO;AACL,sBAAA,OAAO,QAAA;AAAA,oBACT;AAAA,kBACF,SAAS,KAAA,EAAO;AACd,oBAAAA,EAAAA,GAAI,KAAA;AAEJ,oBAAA,IAAI,IAAA,EAAoB;AACtB,sBAAA,KAAA,CAAM,OAAA,CAAQ,SAASA,EAAC,CAAA;AAAA,oBAC1B;AAEA,oBAAA,OAAO,IAAA;AAAA,kBACT;AAAA,gBACF,CAAC,CAAA;AAED,gBAAA,OAAO,SAAU,EAAA,EAAI;AACnB,kBAAA,OAAO,IAAA,CAAK,KAAA,CAAM,IAAA,EAAM,SAAS,CAAA;AAAA,gBACnC,CAAA;AAAA,cACF,CAAA;AAAE,aAAC;AACH,YAAA,OAAA,CAAQ,MAAM,OAAA,CAAQ,GAAA,CAAI,QAAQ,CAAA,EAAG,IAAA,CAAK,SAAUC,EAAAA,EAAG;AACrD,cAAA,OAAOA,EAAAA,IAAK,IAAA;AAAA,YACd,CAAC,CAAA;AAAA,UACH,SAAS,KAAA,EAAO;AACd,YAAAD,EAAAA,GAAI,KAAA;AAEJ,YAAwB;AACtB,cAAA,KAAA,CAAM,OAAA,CAAQ,SAASA,EAAC,CAAA;AAAA,YAC1B;AAEA,YAAA,OAAO,IAAA;AAAA,UACT;AAAA,QACF,CAAC,CAAA,EAAE;AAAA,MACL;AAAA,KAEF;AACA,IAAAN,QAAO,OAAA,GAAUK,OAAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC/HjB,IAAA,cAAA,GAAA,UAAA,CAAA;AAAA,EAAA,kFAAA,CAAAR,UAAAG,OAAAA,EAAA;AAEA,IAAA,IAAI,MAAA;AAAJ,IAAA,IAAYK,OAAAA;AAAZ,IAAA,IAAoB,MAAA;AACpB,IAAA,MAAA,GAAS,cAAA,EAAA;AACT,IAAAA,OAAAA,GAAS,cAAA,EAAA;AACT,IAAA,MAAA,GAAS,MAAM,MAAA,CAAO;AAAA,MACpB,YAAY,cAAA,EAAgB;AAE1B,QAAA,IAAA,CAAK,MAAA,GAAS,IAAIA,OAAAA,CAAO,IAAI,CAAA;AAC7B,QAAA,IAAA,CAAK,OAAA,GAAU,CAAA;AAEf,QAAA,IAAA,CAAK,SAAS,WAAY;AACxB,UAAA,IAAIG,IAAG,GAAA,EAAK,OAAA;AACZ,UAAA,OAAA,GAAU,EAAC;AAEX,UAAA,KAASA,EAAAA,GAAI,CAAA,EAAG,GAAA,GAAM,cAAA,EAAgB,KAAK,GAAA,GAAMA,EAAAA,IAAK,GAAA,GAAMA,EAAAA,IAAK,KAAS,CAAA,IAAK,MAAM,EAAEA,EAAAA,GAAI,EAAEA,EAAAA,EAAG;AAC9F,YAAA,OAAA,CAAQ,IAAA,CAAK,IAAI,MAAA,CAAO,MAAM;AAC5B,cAAA,OAAO,KAAK,IAAA,EAAK;AAAA,YACnB,GAAG,MAAM;AACP,cAAA,OAAO,KAAK,IAAA,EAAK;AAAA,YACnB,CAAC,CAAC,CAAA;AAAA,UACJ;AAEA,UAAA,OAAO,OAAA;AAAA,QACT,CAAA,CAAE,KAAK,IAAI,CAAA;AAAA,MACb;AAAA,MAEA,IAAA,GAAO;AACL,QAAA,IAAI,IAAA,CAAK,cAAc,CAAA,EAAG;AACxB,UAAA,OAAO,IAAA,CAAK,MAAA,CAAO,OAAA,CAAQ,UAAU,CAAA;AAAA,QACvC;AAAA,MACF;AAAA,MAEA,IAAA,GAAO;AACL,QAAA,IAAI,EAAE,IAAA,CAAK,OAAA,KAAY,CAAA,EAAG;AACxB,UAAA,OAAO,IAAA,CAAK,MAAA,CAAO,OAAA,CAAQ,MAAM,CAAA;AAAA,QACnC;AAAA,MACF;AAAA,MAEA,KAAK,GAAA,EAAK;AACR,QAAA,OAAO,KAAK,MAAA,CAAO,GAAA,CAAI,QAAQ,QAAQ,CAAA,CAAE,KAAK,GAAG,CAAA;AAAA,MACnD;AAAA,MAEA,OAAO,QAAA,EAAU;AACf,QAAA,IAAI,YAAY,IAAA,EAAM;AACpB,UAAA,OAAO,IAAA,CAAK,MAAA,CAAO,QAAQ,CAAA,CAAE,MAAA;AAAA,QAC/B,CAAA,MAAO;AACL,UAAA,OAAO,IAAA,CAAK,OAAA;AAAA,QACd;AAAA,MACF;AAAA,MAEA,SAAS,EAAA,EAAI;AACX,QAAA,OAAO,IAAA,CAAK,MAAA,CAAO,OAAA,CAAQ,SAAU,IAAA,EAAM;AACzC,UAAA,OAAO,IAAA,CAAK,aAAa,EAAE,CAAA;AAAA,QAC7B,CAAC,CAAA;AAAA,MACH;AAAA,MAEA,QAAA,CAAS,GAAA,GAAM,IAAA,CAAK,MAAA,EAAQ;AAC1B,QAAA,IAAIA,IAAG,GAAA,EAAK,IAAA;AAEZ,QAAA,KAAKA,KAAI,CAAA,EAAG,GAAA,GAAM,IAAI,MAAA,EAAQA,EAAAA,GAAI,KAAKA,EAAAA,EAAAA,EAAK;AAC1C,UAAA,IAAA,GAAO,IAAIA,EAAC,CAAA;AAEZ,UAAA,IAAI,IAAA,CAAK,SAAS,CAAA,EAAG;AACnB,YAAA,OAAO,IAAA;AAAA,UACT;AAAA,QACF;AAEA,QAAA,OAAO,EAAC;AAAA,MACV;AAAA,MAEA,cAAc,QAAA,EAAU;AACtB,QAAA,OAAO,IAAA,CAAK,QAAA,CAAS,IAAA,CAAK,MAAA,CAAO,KAAA,CAAM,QAAQ,CAAA,CAAE,OAAA,EAAS,CAAA,CAAE,KAAA,EAAM;AAAA,MACpE;AAAA,KAEF;AACA,IAAAR,QAAO,OAAA,GAAU,MAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC5EjB,IAAA,uBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,2FAAA,CAAAH,UAAAG,OAAAA,EAAA;AAEA,IAAA,IAAI,eAAA;AACJ,IAAA,eAAA,GAAkB,MAAM,wBAAwB,KAAA,CAAM;AAAA,KAAC;AACvD,IAAAA,QAAO,OAAA,GAAU,eAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACJjB,IAAA,WAAA,GAAA,UAAA,CAAA;AAAA,EAAA,+EAAA,CAAAH,UAAAG,OAAAA,EAAA;AAEA,IAAA,SAASC,oBAAmB,GAAA,EAAK,OAAA,EAAS,QAAQ,KAAA,EAAO,MAAA,EAAQ,KAAK,GAAA,EAAK;AAAE,MAAA,IAAI;AAAE,QAAA,IAAI,IAAA,GAAO,GAAA,CAAI,GAAG,CAAA,CAAE,GAAG,CAAA;AAAG,QAAA,IAAI,QAAQ,IAAA,CAAK,KAAA;AAAA,MAAO,SAAS,KAAA,EAAO;AAAE,QAAA,MAAA,CAAO,KAAK,CAAA;AAAG,QAAA;AAAA,MAAQ;AAAE,MAAA,IAAI,KAAK,IAAA,EAAM;AAAE,QAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,MAAG,CAAA,MAAO;AAAE,QAAA,OAAA,CAAQ,OAAA,CAAQ,KAAK,CAAA,CAAE,IAAA,CAAK,OAAO,MAAM,CAAA;AAAA,MAAG;AAAA,IAAE;AAExQ,IAAA,SAASC,mBAAkB,EAAA,EAAI;AAAE,MAAA,OAAO,WAAY;AAAE,QAAA,IAAIC,KAAAA,GAAO,MAAM,IAAA,GAAO,SAAA;AAAW,QAAA,OAAO,IAAI,OAAA,CAAQ,SAAU,OAAA,EAAS,MAAA,EAAQ;AAAE,UAAA,IAAI,GAAA,GAAM,EAAA,CAAG,KAAA,CAAMA,KAAAA,EAAM,IAAI,CAAA;AAAG,UAAA,SAAS,MAAM,KAAA,EAAO;AAAE,YAAAF,oBAAmB,GAAA,EAAK,OAAA,EAAS,QAAQ,KAAA,EAAO,MAAA,EAAQ,QAAQ,KAAK,CAAA;AAAA,UAAG;AAAE,UAAA,SAAS,OAAOG,IAAAA,EAAK;AAAE,YAAAH,oBAAmB,GAAA,EAAK,OAAA,EAAS,QAAQ,KAAA,EAAO,MAAA,EAAQ,SAASG,IAAG,CAAA;AAAA,UAAG;AAAE,UAAA,KAAA,CAAM,MAAS,CAAA;AAAA,QAAG,CAAC,CAAA;AAAA,MAAG,CAAA;AAAA,IAAG;AAEpY,IAAA,IAAI,eAAA;AAAJ,IAAA,IAAqB,gBAAA;AAArB,IAAA,IAAuC,GAAA;AAAvC,IAAA,IAA4C,cAAA;AAA5C,IAAA,IAA4DK,OAAAA;AAC5D,IAAA,cAAA,GAAiB,EAAA;AACjB,IAAA,gBAAA,GAAmB,CAAA;AACnB,IAAAA,OAAAA,GAAS,cAAA,EAAA;AACT,IAAA,eAAA,GAAkB,uBAAA,EAAA;AAClB,IAAA,GAAA,GAAM,MAAM,GAAA,CAAI;AAAA,MACd,WAAA,CAAY,MAAM,IAAA,EAAMb,QAAAA,EAAS,aAAa,YAAA,EAAcS,OAAAA,EAAQ,SAASK,QAAAA,EAAS;AACpF,QAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AACZ,QAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AACZ,QAAA,IAAA,CAAK,YAAA,GAAe,YAAA;AACpB,QAAA,IAAA,CAAK,MAAA,GAASL,OAAAA;AACd,QAAA,IAAA,CAAK,OAAA,GAAU,OAAA;AACf,QAAA,IAAA,CAAK,OAAA,GAAUK,QAAAA;AACf,QAAA,IAAA,CAAK,OAAA,GAAUD,OAAAA,CAAO,IAAA,CAAKb,QAAAA,EAAS,WAAW,CAAA;AAC/C,QAAA,IAAA,CAAK,QAAQ,QAAA,GAAW,IAAA,CAAK,iBAAA,CAAkB,IAAA,CAAK,QAAQ,QAAQ,CAAA;AAEpE,QAAA,IAAI,IAAA,CAAK,OAAA,CAAQ,EAAA,KAAO,WAAA,CAAY,EAAA,EAAI;AACtC,UAAA,IAAA,CAAK,OAAA,CAAQ,KAAK,CAAA,EAAG,IAAA,CAAK,QAAQ,EAAE,CAAA,CAAA,EAAI,IAAA,CAAK,YAAA,EAAc,CAAA,CAAA;AAAA,QAC7D;AAEA,QAAA,IAAA,CAAK,UAAU,IAAI,IAAA,CAAK,OAAA,CAAQ,CAAC,UAAU,OAAA,KAAY;AACrD,UAAA,IAAA,CAAK,QAAA,GAAW,QAAA;AAChB,UAAA,IAAA,CAAK,OAAA,GAAU,OAAA;AAAA,QACjB,CAAC,CAAA;AACD,QAAA,IAAA,CAAK,UAAA,GAAa,CAAA;AAAA,MACpB;AAAA,MAEA,kBAAkB,QAAA,EAAU;AAC1B,QAAA,IAAI,SAAA;AACJ,QAAA,SAAA,GAAY,CAAC,CAAC,QAAA,KAAa,QAAA,GAAW,gBAAA,GAAmB,QAAA;AAEzD,QAAA,IAAI,YAAY,CAAA,EAAG;AACjB,UAAA,OAAO,CAAA;AAAA,QACT,CAAA,MAAA,IAAW,SAAA,GAAY,cAAA,GAAiB,CAAA,EAAG;AACzC,UAAA,OAAO,cAAA,GAAiB,CAAA;AAAA,QAC1B,CAAA,MAAO;AACL,UAAA,OAAO,SAAA;AAAA,QACT;AAAA,MACF;AAAA,MAEA,YAAA,GAAe;AACb,QAAA,OAAO,KAAK,MAAA,EAAO,CAAE,SAAS,EAAE,CAAA,CAAE,MAAM,CAAC,CAAA;AAAA,MAC3C;AAAA,MAEA,MAAA,CAAO;AAAA,QACL,KAAA;AAAA,QACA,OAAA,GAAU;AAAA,OACZ,GAAI,EAAC,EAAG;AACN,QAAA,IAAI,KAAK,OAAA,CAAQ,MAAA,CAAO,IAAA,CAAK,OAAA,CAAQ,EAAE,CAAA,EAAG;AACxC,UAAA,IAAI,KAAK,YAAA,EAAc;AACrB,YAAA,IAAA,CAAK,QAAQ,KAAA,IAAS,IAAA,GAAO,QAAQ,IAAI,eAAA,CAAgB,OAAO,CAAC,CAAA;AAAA,UACnE;AAEA,UAAA,IAAA,CAAK,MAAA,CAAO,QAAQ,SAAA,EAAW;AAAA,YAC7B,MAAM,IAAA,CAAK,IAAA;AAAA,YACX,SAAS,IAAA,CAAK,OAAA;AAAA,YACd,MAAM,IAAA,CAAK,IAAA;AAAA,YACX,SAAS,IAAA,CAAK;AAAA,WACf,CAAA;AACD,UAAA,OAAO,IAAA;AAAA,QACT,CAAA,MAAO;AACL,UAAA,OAAO,KAAA;AAAA,QACT;AAAA,MACF;AAAA,MAEA,cAAc,QAAA,EAAU;AACtB,QAAA,IAAI,MAAA;AACJ,QAAA,MAAA,GAAS,IAAA,CAAK,OAAA,CAAQ,SAAA,CAAU,IAAA,CAAK,QAAQ,EAAE,CAAA;AAE/C,QAAA,IAAI,EAAE,MAAA,KAAW,QAAA,IAAY,QAAA,KAAa,MAAA,IAAU,WAAW,IAAA,CAAA,EAAO;AACpE,UAAA,MAAM,IAAI,eAAA,CAAgB,CAAA,mBAAA,EAAsB,MAAM,CAAA,WAAA,EAAc,QAAQ,CAAA,uEAAA,CAAyE,CAAA;AAAA,QACvJ;AAAA,MACF;AAAA,MAEA,SAAA,GAAY;AACV,QAAA,IAAA,CAAK,OAAA,CAAQ,KAAA,CAAM,IAAA,CAAK,OAAA,CAAQ,EAAE,CAAA;AAElC,QAAA,OAAO,IAAA,CAAK,MAAA,CAAO,OAAA,CAAQ,UAAA,EAAY;AAAA,UACrC,MAAM,IAAA,CAAK,IAAA;AAAA,UACX,SAAS,IAAA,CAAK;AAAA,SACf,CAAA;AAAA,MACH;AAAA,MAEA,OAAA,CAAQ,YAAY,OAAA,EAAS;AAC3B,QAAA,IAAA,CAAK,cAAc,UAAU,CAAA;AAE7B,QAAA,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,IAAA,CAAK,OAAA,CAAQ,EAAE,CAAA;AAEjC,QAAA,OAAO,IAAA,CAAK,MAAA,CAAO,OAAA,CAAQ,QAAA,EAAU;AAAA,UACnC,MAAM,IAAA,CAAK,IAAA;AAAA,UACX,SAAS,IAAA,CAAK,OAAA;AAAA,UACd,UAAA;AAAA,UACA;AAAA,SACD,CAAA;AAAA,MACH;AAAA,MAEA,KAAA,GAAQ;AACN,QAAA,IAAI,IAAA,CAAK,eAAe,CAAA,EAAG;AACzB,UAAA,IAAA,CAAK,cAAc,QAAQ,CAAA;AAE3B,UAAA,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,IAAA,CAAK,OAAA,CAAQ,EAAE,CAAA;AAAA,QACnC,CAAA,MAAO;AACL,UAAA,IAAA,CAAK,cAAc,WAAW,CAAA;AAAA,QAChC;AAEA,QAAA,OAAO,IAAA,CAAK,MAAA,CAAO,OAAA,CAAQ,WAAA,EAAa;AAAA,UACtC,MAAM,IAAA,CAAK,IAAA;AAAA,UACX,SAAS,IAAA,CAAK;AAAA,SACf,CAAA;AAAA,MACH;AAAA,MAEA,SAAA,CAAU,OAAA,EAAS,gBAAA,EAAkB,GAAA,EAAK,IAAA,EAAM;AAC9C,QAAA,IAAI,KAAA,GAAQ,IAAA;AAEZ,QAAA,OAAOM,mBAAkB,aAAa;AACpC,UAAA,IAAI,OAAO,SAAA,EAAW,MAAA;AAEtB,UAAA,IAAI,KAAA,CAAM,eAAe,CAAA,EAAG;AAC1B,YAAA,KAAA,CAAM,cAAc,SAAS,CAAA;AAE7B,YAAA,KAAA,CAAM,OAAA,CAAQ,IAAA,CAAK,KAAA,CAAM,OAAA,CAAQ,EAAE,CAAA;AAAA,UACrC,CAAA,MAAO;AACL,YAAA,KAAA,CAAM,cAAc,WAAW,CAAA;AAAA,UACjC;AAEA,UAAA,SAAA,GAAY;AAAA,YACV,MAAM,KAAA,CAAM,IAAA;AAAA,YACZ,SAAS,KAAA,CAAM,OAAA;AAAA,YACf,YAAY,KAAA,CAAM;AAAA,WACpB;AAEA,UAAA,KAAA,CAAM,MAAA,CAAO,OAAA,CAAQ,WAAA,EAAa,SAAS,CAAA;AAE3C,UAAA,IAAI;AACF,YAAA,MAAA,GAAS,MAAM,OAAA,IAAW,IAAA,GAAO,OAAA,CAAQ,QAAA,CAAS,MAAM,OAAA,EAAS,KAAA,CAAM,IAAA,EAAM,GAAG,MAAM,IAAI,CAAA,GAAI,MAAM,IAAA,CAAK,GAAG,MAAM,IAAI,CAAA;AAEtH,YAAA,IAAI,kBAAiB,EAAG;AACtB,cAAA,KAAA,CAAM,OAAO,SAAS,CAAA;AAEtB,cAAA,MAAM,IAAA,CAAK,KAAA,CAAM,OAAA,EAAS,SAAS,CAAA;AAEnC,cAAA,KAAA,CAAM,cAAc,MAAM,CAAA;AAE1B,cAAA,OAAO,KAAA,CAAM,SAAS,MAAM,CAAA;AAAA,YAC9B;AAAA,UACF,SAAS,MAAA,EAAQ;AACf,YAAA,KAAA,GAAQ,MAAA;AACR,YAAA,OAAO,MAAM,UAAA,CAAW,KAAA,EAAO,SAAA,EAAW,gBAAA,EAAkB,KAAK,IAAI,CAAA;AAAA,UACvE;AAAA,QACF,CAAC,CAAA,EAAE;AAAA,MACL;AAAA,MAEA,QAAA,CAAS,gBAAA,EAAkB,GAAA,EAAK,IAAA,EAAM;AACpC,QAAA,IAAI,KAAA,EAAO,SAAA;AAEX,QAAA,IAAI,KAAK,OAAA,CAAQ,SAAA,CAAU,KAAK,OAAA,CAAQ,EAAA,KAAO,SAAS,CAAA,EAAG;AACzD,UAAA,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,IAAA,CAAK,OAAA,CAAQ,EAAE,CAAA;AAAA,QACnC;AAEA,QAAA,IAAA,CAAK,cAAc,WAAW,CAAA;AAE9B,QAAA,SAAA,GAAY;AAAA,UACV,MAAM,IAAA,CAAK,IAAA;AAAA,UACX,SAAS,IAAA,CAAK,OAAA;AAAA,UACd,YAAY,IAAA,CAAK;AAAA,SACnB;AACA,QAAA,KAAA,GAAQ,IAAI,eAAA,CAAgB,CAAA,yBAAA,EAA4B,IAAA,CAAK,OAAA,CAAQ,UAAU,CAAA,IAAA,CAAM,CAAA;AACrF,QAAA,OAAO,KAAK,UAAA,CAAW,KAAA,EAAO,SAAA,EAAW,gBAAA,EAAkB,KAAK,IAAI,CAAA;AAAA,MACtE;AAAA,MAEA,UAAA,CAAW,KAAA,EAAO,SAAA,EAAW,gBAAA,EAAkB,KAAK,IAAA,EAAM;AACxD,QAAA,IAAI,MAAA,GAAS,IAAA;AAEb,QAAA,OAAOA,mBAAkB,aAAa;AACpC,UAAA,IAAI,KAAA,EAAO,UAAA;AAEX,UAAA,IAAI,kBAAiB,EAAG;AACtB,YAAA,KAAA,GAAQ,MAAM,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,QAAA,EAAU,OAAO,SAAS,CAAA;AAE9D,YAAA,IAAI,SAAS,IAAA,EAAM;AACjB,cAAA,UAAA,GAAa,CAAC,CAAC,KAAA;AAEf,cAAA,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,OAAA,EAAS,CAAA,SAAA,EAAY,MAAA,CAAO,QAAQ,EAAE,CAAA,OAAA,EAAU,UAAU,CAAA,GAAA,CAAA,EAAO,SAAS,CAAA;AAEhG,cAAA,MAAA,CAAO,UAAA,EAAA;AACP,cAAA,OAAO,IAAI,UAAU,CAAA;AAAA,YACvB,CAAA,MAAO;AACL,cAAA,MAAA,CAAO,OAAO,SAAS,CAAA;AAEvB,cAAA,MAAM,IAAA,CAAK,MAAA,CAAO,OAAA,EAAS,SAAS,CAAA;AAEpC,cAAA,MAAA,CAAO,cAAc,MAAM,CAAA;AAE3B,cAAA,OAAO,MAAA,CAAO,QAAQ,KAAK,CAAA;AAAA,YAC7B;AAAA,UACF;AAAA,QACF,CAAC,CAAA,EAAE;AAAA,MACL;AAAA,MAEA,OAAO,SAAA,EAAW;AAChB,QAAA,IAAA,CAAK,cAAc,WAAW,CAAA;AAE9B,QAAA,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,IAAA,CAAK,OAAA,CAAQ,EAAE,CAAA;AAEjC,QAAA,OAAO,IAAA,CAAK,MAAA,CAAO,OAAA,CAAQ,MAAA,EAAQ,SAAS,CAAA;AAAA,MAC9C;AAAA,KAEF;AACA,IAAAF,QAAO,OAAA,GAAU,GAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACtNjB,IAAA,sBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,0FAAA,CAAAH,UAAAG,OAAAA,EAAA;AAEA,IAAA,SAASC,oBAAmB,GAAA,EAAK,OAAA,EAAS,QAAQ,KAAA,EAAO,MAAA,EAAQ,KAAK,GAAA,EAAK;AAAE,MAAA,IAAI;AAAE,QAAA,IAAI,IAAA,GAAO,GAAA,CAAI,GAAG,CAAA,CAAE,GAAG,CAAA;AAAG,QAAA,IAAI,QAAQ,IAAA,CAAK,KAAA;AAAA,MAAO,SAAS,KAAA,EAAO;AAAE,QAAA,MAAA,CAAO,KAAK,CAAA;AAAG,QAAA;AAAA,MAAQ;AAAE,MAAA,IAAI,KAAK,IAAA,EAAM;AAAE,QAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,MAAG,CAAA,MAAO;AAAE,QAAA,OAAA,CAAQ,OAAA,CAAQ,KAAK,CAAA,CAAE,IAAA,CAAK,OAAO,MAAM,CAAA;AAAA,MAAG;AAAA,IAAE;AAExQ,IAAA,SAASC,mBAAkB,EAAA,EAAI;AAAE,MAAA,OAAO,WAAY;AAAE,QAAA,IAAIC,KAAAA,GAAO,MAAM,IAAA,GAAO,SAAA;AAAW,QAAA,OAAO,IAAI,OAAA,CAAQ,SAAU,OAAA,EAAS,MAAA,EAAQ;AAAE,UAAA,IAAI,GAAA,GAAM,EAAA,CAAG,KAAA,CAAMA,KAAAA,EAAM,IAAI,CAAA;AAAG,UAAA,SAAS,MAAM,KAAA,EAAO;AAAE,YAAAF,oBAAmB,GAAA,EAAK,OAAA,EAAS,QAAQ,KAAA,EAAO,MAAA,EAAQ,QAAQ,KAAK,CAAA;AAAA,UAAG;AAAE,UAAA,SAAS,OAAOG,IAAAA,EAAK;AAAE,YAAAH,oBAAmB,GAAA,EAAK,OAAA,EAAS,QAAQ,KAAA,EAAO,MAAA,EAAQ,SAASG,IAAG,CAAA;AAAA,UAAG;AAAE,UAAA,KAAA,CAAM,MAAS,CAAA;AAAA,QAAG,CAAC,CAAA;AAAA,MAAG,CAAA;AAAA,IAAG;AAEpY,IAAA,IAAI,eAAA;AAAJ,IAAA,IAAqB,cAAA;AAArB,IAAA,IAAqCK,OAAAA;AACrC,IAAAA,OAAAA,GAAS,cAAA,EAAA;AACT,IAAA,eAAA,GAAkB,uBAAA,EAAA;AAClB,IAAA,cAAA,GAAiB,MAAM,cAAA,CAAe;AAAA,MACpC,WAAA,CAAY,QAAA,EAAU,YAAA,EAAc,oBAAA,EAAsB;AACxD,QAAA,IAAA,CAAK,QAAA,GAAW,QAAA;AAChB,QAAA,IAAA,CAAK,YAAA,GAAe,YAAA;AACpB,QAAA,IAAA,CAAK,QAAA,GAAW,IAAA,CAAK,QAAA,CAAS,YAAA,EAAa;AAC3C,QAAAA,OAAAA,CAAO,IAAA,CAAK,oBAAA,EAAsB,oBAAA,EAAsB,IAAI,CAAA;AAC5D,QAAA,IAAA,CAAK,eAAe,IAAA,CAAK,qBAAA,GAAwB,IAAA,CAAK,sBAAA,GAAyB,KAAK,GAAA,EAAI;AACxF,QAAA,IAAA,CAAK,QAAA,GAAW,CAAA;AAChB,QAAA,IAAA,CAAK,KAAA,GAAQ,CAAA;AACb,QAAA,IAAA,CAAK,YAAA,GAAe,CAAA;AACpB,QAAA,IAAA,CAAK,KAAA,GAAQ,IAAA,CAAK,OAAA,CAAQ,OAAA,EAAQ;AAClC,QAAA,IAAA,CAAK,UAAU,EAAC;AAEhB,QAAA,IAAA,CAAK,eAAA,EAAgB;AAAA,MACvB;AAAA,MAEA,eAAA,GAAkB;AAChB,QAAA,IAAI,IAAA;AAEJ,QAAA,IAAI,KAAK,SAAA,IAAa,IAAA,KAAS,KAAK,YAAA,CAAa,wBAAA,IAA4B,QAAQ,IAAA,CAAK,YAAA,CAAa,sBAAA,IAA0B,IAAA,IAAQ,KAAK,YAAA,CAAa,yBAAA,IAA6B,QAAQ,IAAA,CAAK,YAAA,CAAa,2BAA2B,IAAA,CAAA,EAAO;AAClP,UAAA,OAAO,OAAA,CAAQ,IAAA,GAAO,IAAA,CAAK,SAAA,GAAY,YAAY,MAAM;AACvD,YAAA,IAAI,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAS,GAAA,EAAK,SAAA;AAChC,YAAA,GAAA,GAAM,KAAK,GAAA,EAAI;AAEf,YAAA,IAAI,IAAA,CAAK,aAAa,wBAAA,IAA4B,IAAA,IAAQ,OAAO,IAAA,CAAK,qBAAA,GAAwB,IAAA,CAAK,YAAA,CAAa,wBAAA,EAA0B;AACxI,cAAA,IAAA,CAAK,qBAAA,GAAwB,GAAA;AAC7B,cAAA,IAAA,CAAK,YAAA,CAAa,SAAA,GAAY,IAAA,CAAK,YAAA,CAAa,sBAAA;AAEhD,cAAA,IAAA,CAAK,QAAA,CAAS,SAAA,CAAU,IAAA,CAAK,eAAA,EAAiB,CAAA;AAAA,YAChD;AAEA,YAAA,IAAI,IAAA,CAAK,aAAa,yBAAA,IAA6B,IAAA,IAAQ,OAAO,IAAA,CAAK,sBAAA,GAAyB,IAAA,CAAK,YAAA,CAAa,yBAAA,EAA2B;AAC3I,cAAA,IAAI,qBAAqB,IAAA,CAAK,YAAA;AAC9B,cAAA,MAAA,GAAS,kBAAA,CAAmB,uBAAA;AAC5B,cAAA,OAAA,GAAU,kBAAA,CAAmB,wBAAA;AAC7B,cAAA,SAAA,GAAY,kBAAA,CAAmB,SAAA;AAC/B,cAAA,IAAA,CAAK,sBAAA,GAAyB,GAAA;AAC9B,cAAA,IAAA,GAAO,WAAW,IAAA,GAAO,IAAA,CAAK,IAAI,MAAA,EAAQ,OAAA,GAAU,SAAS,CAAA,GAAI,MAAA;AAEjE,cAAA,IAAI,OAAO,CAAA,EAAG;AACZ,gBAAA,IAAA,CAAK,aAAa,SAAA,IAAa,IAAA;AAC/B,gBAAA,OAAO,IAAA,CAAK,QAAA,CAAS,SAAA,CAAU,IAAA,CAAK,iBAAiB,CAAA;AAAA,cACvD;AAAA,YACF;AAAA,UACF,CAAA,EAAG,KAAK,iBAAiB,CAAA,EAAG,UAAU,UAAA,GAAa,IAAA,CAAK,OAAM,GAAI,MAAA;AAAA,QACpE,CAAA,MAAO;AACL,UAAA,OAAO,aAAA,CAAc,KAAK,SAAS,CAAA;AAAA,QACrC;AAAA,MACF;AAAA,MAEA,YAAY,OAAA,EAAS;AACnB,QAAA,IAAI,KAAA,GAAQ,IAAA;AAEZ,QAAA,OAAOP,mBAAkB,aAAa;AACpC,UAAA,MAAM,MAAM,SAAA,EAAU;AACtB,UAAA,OAAO,MAAM,QAAA,CAAS,MAAA,CAAO,QAAQ,SAAA,EAAW,OAAA,CAAQ,UAAU,CAAA;AAAA,QACpE,CAAC,CAAA,EAAE;AAAA,MACL;AAAA,MAEA,eAAe,KAAA,EAAO;AACpB,QAAA,IAAI,MAAA,GAAS,IAAA;AAEb,QAAA,OAAOA,mBAAkB,aAAa;AACpC,UAAA,MAAM,OAAO,SAAA,EAAU;AACvB,UAAA,aAAA,CAAc,OAAO,SAAS,CAAA;AAC9B,UAAA,OAAO,MAAA,CAAO,QAAQ,OAAA,EAAQ;AAAA,QAChC,CAAC,CAAA,EAAE;AAAA,MACL;AAAA,MAEA,SAAA,CAAUS,KAAI,CAAA,EAAG;AACf,QAAA,OAAO,IAAI,IAAA,CAAK,OAAA,CAAQ,SAAU,SAAS,MAAA,EAAQ;AACjD,UAAA,OAAO,UAAA,CAAW,SAASA,EAAC,CAAA;AAAA,QAC9B,CAAC,CAAA;AAAA,MACH;AAAA,MAEA,cAAA,GAAiB;AACf,QAAA,IAAI,GAAA;AACJ,QAAA,OAAA,CAAQ,GAAA,GAAM,KAAK,YAAA,CAAa,OAAA,KAAY,OAAO,GAAA,GAAM,EAAA,GAAK,IAAA,CAAK,YAAA,CAAa,OAAA,IAAW,GAAA;AAAA,MAC7F;AAAA,MAEA,mBAAmBf,QAAAA,EAAS;AAC1B,QAAA,IAAI,MAAA,GAAS,IAAA;AAEb,QAAA,OAAOM,mBAAkB,aAAa;AACpC,UAAA,MAAM,OAAO,SAAA,EAAU;AACvB,UAAAO,OAAAA,CAAO,SAAA,CAAUb,QAAAA,EAASA,QAAAA,EAAS,OAAO,YAAY,CAAA;AAEtD,UAAA,MAAA,CAAO,eAAA,EAAgB;AAEvB,UAAA,MAAA,CAAO,QAAA,CAAS,SAAA,CAAU,MAAA,CAAO,eAAA,EAAiB,CAAA;AAElD,UAAA,OAAO,IAAA;AAAA,QACT,CAAC,CAAA,EAAE;AAAA,MACL;AAAA,MAEA,WAAA,GAAc;AACZ,QAAA,IAAI,MAAA,GAAS,IAAA;AAEb,QAAA,OAAOM,mBAAkB,aAAa;AACpC,UAAA,MAAM,OAAO,SAAA,EAAU;AACvB,UAAA,OAAO,MAAA,CAAO,QAAA;AAAA,QAChB,CAAC,CAAA,EAAE;AAAA,MACL;AAAA,MAEA,UAAA,GAAa;AACX,QAAA,IAAI,MAAA,GAAS,IAAA;AAEb,QAAA,OAAOA,mBAAkB,aAAa;AACpC,UAAA,MAAM,OAAO,SAAA,EAAU;AACvB,UAAA,OAAO,MAAA,CAAO,SAAS,MAAA,EAAO;AAAA,QAChC,CAAC,CAAA,EAAE;AAAA,MACL;AAAA,MAEA,QAAA,GAAW;AACT,QAAA,IAAI,MAAA,GAAS,IAAA;AAEb,QAAA,OAAOA,mBAAkB,aAAa;AACpC,UAAA,MAAM,OAAO,SAAA,EAAU;AACvB,UAAA,OAAO,MAAA,CAAO,KAAA;AAAA,QAChB,CAAC,CAAA,EAAE;AAAA,MACL;AAAA,MAEA,eAAeU,KAAAA,EAAM;AACnB,QAAA,IAAI,MAAA,GAAS,IAAA;AAEb,QAAA,OAAOV,mBAAkB,aAAa;AACpC,UAAA,MAAM,OAAO,SAAA,EAAU;AACvB,UAAA,OAAO,MAAA,CAAO,YAAA,GAAe,MAAA,CAAO,OAAA,GAAUU,KAAAA;AAAA,QAChD,CAAC,CAAA,EAAE;AAAA,MACL;AAAA,MAEA,eAAA,GAAkB;AAChB,QAAA,IAAI,aAAA,EAAe,SAAA;AACnB,QAAA,IAAI,sBAAsB,IAAA,CAAK,YAAA;AAC/B,QAAA,aAAA,GAAgB,mBAAA,CAAoB,aAAA;AACpC,QAAA,SAAA,GAAY,mBAAA,CAAoB,SAAA;AAEhC,QAAA,IAAI,aAAA,IAAiB,IAAA,IAAQ,SAAA,IAAa,IAAA,EAAM;AAC9C,UAAA,OAAO,IAAA,CAAK,GAAA,CAAI,aAAA,GAAgB,IAAA,CAAK,UAAU,SAAS,CAAA;AAAA,QAC1D,CAAA,MAAA,IAAW,iBAAiB,IAAA,EAAM;AAChC,UAAA,OAAO,gBAAgB,IAAA,CAAK,QAAA;AAAA,QAC9B,CAAA,MAAA,IAAW,aAAa,IAAA,EAAM;AAC5B,UAAA,OAAO,SAAA;AAAA,QACT,CAAA,MAAO;AACL,UAAA,OAAO,IAAA;AAAA,QACT;AAAA,MACF;AAAA,MAEA,gBAAgB,MAAA,EAAQ;AACtB,QAAA,IAAI,QAAA;AACJ,QAAA,QAAA,GAAW,KAAK,eAAA,EAAgB;AAChC,QAAA,OAAO,QAAA,IAAY,QAAQ,MAAA,IAAU,QAAA;AAAA,MACvC;AAAA,MAEA,uBAAuB,IAAA,EAAM;AAC3B,QAAA,IAAI,MAAA,GAAS,IAAA;AAEb,QAAA,OAAOV,mBAAkB,aAAa;AACpC,UAAA,IAAI,SAAA;AACJ,UAAA,MAAM,OAAO,SAAA,EAAU;AACvB,UAAA,SAAA,GAAY,MAAA,CAAO,aAAa,SAAA,IAAa,IAAA;AAE7C,UAAA,MAAA,CAAO,QAAA,CAAS,SAAA,CAAU,MAAA,CAAO,eAAA,EAAiB,CAAA;AAElD,UAAA,OAAO,SAAA;AAAA,QACT,CAAC,CAAA,EAAE;AAAA,MACL;AAAA,MAEA,oBAAA,GAAuB;AACrB,QAAA,IAAI,MAAA,GAAS,IAAA;AAEb,QAAA,OAAOA,mBAAkB,aAAa;AACpC,UAAA,MAAM,OAAO,SAAA,EAAU;AACvB,UAAA,OAAO,OAAO,YAAA,CAAa,SAAA;AAAA,QAC7B,CAAC,CAAA,EAAE;AAAA,MACL;AAAA,MAEA,UAAU,GAAA,EAAK;AACb,QAAA,OAAO,KAAK,YAAA,IAAgB,GAAA;AAAA,MAC9B;AAAA,MAEA,KAAA,CAAM,QAAQ,GAAA,EAAK;AACjB,QAAA,OAAO,KAAK,eAAA,CAAgB,MAAM,CAAA,IAAK,IAAA,CAAK,eAAe,GAAA,IAAO,CAAA;AAAA,MACpE;AAAA,MAEA,UAAU,MAAA,EAAQ;AAChB,QAAA,IAAI,OAAA,GAAU,IAAA;AAEd,QAAA,OAAOA,mBAAkB,aAAa;AACpC,UAAA,IAAI,GAAA;AACJ,UAAA,MAAM,QAAQ,SAAA,EAAU;AACxB,UAAA,GAAA,GAAM,KAAK,GAAA,EAAI;AACf,UAAA,OAAO,OAAA,CAAQ,KAAA,CAAM,MAAA,EAAQ,GAAG,CAAA;AAAA,QAClC,CAAC,CAAA,EAAE;AAAA,MACL;AAAA,MAEA,YAAA,CAAa,KAAA,EAAO,MAAA,EAAQ,UAAA,EAAY;AACtC,QAAA,IAAI,OAAA,GAAU,IAAA;AAEd,QAAA,OAAOA,mBAAkB,aAAa;AACpC,UAAA,IAAI,GAAA,EAAK,IAAA;AACT,UAAA,MAAM,QAAQ,SAAA,EAAU;AACxB,UAAA,GAAA,GAAM,KAAK,GAAA,EAAI;AAEf,UAAA,IAAI,OAAA,CAAQ,eAAA,CAAgB,MAAM,CAAA,EAAG;AACnC,YAAA,OAAA,CAAQ,QAAA,IAAY,MAAA;AAEpB,YAAA,IAAI,OAAA,CAAQ,YAAA,CAAa,SAAA,IAAa,IAAA,EAAM;AAC1C,cAAA,OAAA,CAAQ,aAAa,SAAA,IAAa,MAAA;AAAA,YACpC;AAEA,YAAA,IAAA,GAAO,IAAA,CAAK,GAAA,CAAI,OAAA,CAAQ,YAAA,GAAe,KAAK,CAAC,CAAA;AAC7C,YAAA,OAAA,CAAQ,YAAA,GAAe,GAAA,GAAM,IAAA,GAAO,OAAA,CAAQ,YAAA,CAAa,OAAA;AACzD,YAAA,OAAO;AAAA,cACL,OAAA,EAAS,IAAA;AAAA,cACT,IAAA;AAAA,cACA,SAAA,EAAW,QAAQ,YAAA,CAAa;AAAA,aAClC;AAAA,UACF,CAAA,MAAO;AACL,YAAA,OAAO;AAAA,cACL,OAAA,EAAS;AAAA,aACX;AAAA,UACF;AAAA,QACF,CAAC,CAAA,EAAE;AAAA,MACL;AAAA,MAEA,eAAA,GAAkB;AAChB,QAAA,OAAO,IAAA,CAAK,aAAa,QAAA,KAAa,CAAA;AAAA,MACxC;AAAA,MAEA,UAAA,CAAW,aAAa,MAAA,EAAQ;AAC9B,QAAA,IAAI,OAAA,GAAU,IAAA;AAEd,QAAA,OAAOA,mBAAkB,aAAa;AACpC,UAAA,IAAI,SAAS,GAAA,EAAK,UAAA;AAClB,UAAA,MAAM,QAAQ,SAAA,EAAU;AAExB,UAAA,IAAI,QAAQ,YAAA,CAAa,aAAA,IAAiB,QAAQ,MAAA,GAAS,OAAA,CAAQ,aAAa,aAAA,EAAe;AAC7F,YAAA,MAAM,IAAI,gBAAgB,CAAA,2CAAA,EAA8C,MAAM,mDAAmD,OAAA,CAAQ,YAAA,CAAa,aAAa,CAAA,CAAE,CAAA;AAAA,UACvK;AAEA,UAAA,GAAA,GAAM,KAAK,GAAA,EAAI;AACf,UAAA,UAAA,GAAa,OAAA,CAAQ,YAAA,CAAa,SAAA,IAAa,IAAA,IAAQ,WAAA,KAAgB,OAAA,CAAQ,YAAA,CAAa,SAAA,IAAa,CAAC,OAAA,CAAQ,KAAA,CAAM,MAAA,EAAQ,GAAG,CAAA;AACnI,UAAA,OAAA,GAAU,QAAQ,eAAA,EAAgB,KAAM,UAAA,IAAc,OAAA,CAAQ,UAAU,GAAG,CAAA,CAAA;AAE3E,UAAA,IAAI,OAAA,EAAS;AACX,YAAA,OAAA,CAAQ,YAAA,GAAe,GAAA,GAAM,OAAA,CAAQ,cAAA,EAAe;AACpD,YAAA,OAAA,CAAQ,YAAA,GAAe,OAAA,CAAQ,YAAA,GAAe,OAAA,CAAQ,YAAA,CAAa,OAAA;AAEnE,YAAA,OAAA,CAAQ,SAAS,cAAA,EAAe;AAAA,UAClC;AAEA,UAAA,OAAO;AAAA,YACL,UAAA;AAAA,YACA,OAAA;AAAA,YACA,QAAA,EAAU,QAAQ,YAAA,CAAa;AAAA,WACjC;AAAA,QACF,CAAC,CAAA,EAAE;AAAA,MACL;AAAA,MAEA,QAAA,CAAS,OAAO,MAAA,EAAQ;AACtB,QAAA,IAAI,OAAA,GAAU,IAAA;AAEd,QAAA,OAAOA,mBAAkB,aAAa;AACpC,UAAA,MAAM,QAAQ,SAAA,EAAU;AACxB,UAAA,OAAA,CAAQ,QAAA,IAAY,MAAA;AACpB,UAAA,OAAA,CAAQ,KAAA,IAAS,MAAA;AAEjB,UAAA,OAAA,CAAQ,QAAA,CAAS,SAAA,CAAU,OAAA,CAAQ,eAAA,EAAiB,CAAA;AAEpD,UAAA,OAAO;AAAA,YACL,SAAS,OAAA,CAAQ;AAAA,WACnB;AAAA,QACF,CAAC,CAAA,EAAE;AAAA,MACL;AAAA,KAEF;AACA,IAAAF,QAAO,OAAA,GAAU,cAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC9RjB,IAAA,WAAA,GAAA,UAAA,CAAA;AAAA,EAAA,iFAAA,CAAAH,UAAAG,OAAAA,EAAA;AAAA,IAAAA,OAAAA,CAAA,OAAA,GAAA;AAAA,MACE,sBAAA,EAAwB,8LAAA;AAAA,MACxB,WAAA,EAAa,sQAAA;AAAA,MACb,sBAAA,EAAwB,6GAAA;AAAA,MACxB,uBAAA,EAAyB,gDAAA;AAAA,MACzB,UAAA,EAAY,yFAAA;AAAA,MACZ,UAAA,EAAY,8IAAA;AAAA,MACZ,cAAA,EAAgB,+JAAA;AAAA,MAChB,iBAAA,EAAmB,wDAAA;AAAA,MACnB,eAAA,EAAiB,2BAAA;AAAA,MACjB,yBAAA,EAA2B,uTAAA;AAAA,MAC3B,UAAA,EAAY,CAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA,CAAA;AAAA,MACZ,kBAAA,EAAoB,+mPAAA;AAAA,MACpB,YAAA,EAAc,iYAAA;AAAA,MACd,wBAAA,EAA0B,0PAAA;AAAA,MAC1B,UAAA,EAAY,0XAAA;AAAA,MACZ,cAAA,EAAgB,+9CAAA;AAAA,MAChB,qBAAA,EAAuB,iaAAA;AAAA,MACvB,aAAA,EAAe,8CAAA;AAAA,MACf,YAAA,EAAc,ugEAAA;AAAA,MACd,qBAAA,EAAuB,oTAAA;AAAA,MACvB,qBAAA,EAAuB,8KAAA;AAAA,MACvB,mBAAA,EAAqB;AAAA,KACvB;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACvBA,IAAA,eAAA,GAAA,UAAA,CAAA;AAAA,EAAA,mFAAA,CAAAH,QAAAA,EAAA;AAEA,IAAA,IAAI,OAAA;AAAJ,IAAA,IAAa,GAAA;AAAb,IAAA,IAAkB,SAAA;AAClB,IAAA,GAAA,GAAM,WAAA,EAAA;AACN,IAAA,OAAA,GAAU;AAAA,MACR,IAAA,EAAM,IAAI,UAAU,CAAA;AAAA,MACpB,aAAA,EAAe,IAAI,mBAAmB,CAAA;AAAA,MACtC,eAAA,EAAiB,IAAI,qBAAqB,CAAA;AAAA,MAC1C,kBAAA,EAAoB,IAAI,wBAAwB,CAAA;AAAA,MAChD,YAAA,EAAc,IAAI,kBAAkB,CAAA;AAAA,MACpC,gBAAA,EAAkB,IAAI,sBAAsB,CAAA;AAAA,MAC5C,QAAA,EAAU,IAAI,cAAc;AAAA,KAC9B;AAEA,IAAAA,QAAAA,CAAQ,OAAA,GAAU,SAAU,EAAA,EAAI;AAC9B,MAAA,OAAO;AAAA;AAAA;AAAA;AAAA,QAIP,KAAK,EAAE,CAAA,SAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAKP,KAAK,EAAE,CAAA,YAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAKP,KAAK,EAAE,CAAA,gBAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAKP,KAAK,EAAE,CAAA,YAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAKP,KAAK,EAAE,CAAA,eAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAKP,KAAK,EAAE,CAAA,kBAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAKP,KAAK,EAAE,CAAA,uBAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAKP,KAAK,EAAE,CAAA,iBAAA;AAAA,OAAmB;AAAA,IAC5B,CAAA;AAEA,IAAA,SAAA,GAAY;AAAA,MACV,IAAA,EAAM;AAAA,QACJ,MAAMA,QAAAA,CAAQ,OAAA;AAAA,QACd,OAAA,EAAS,CAAC,cAAc,CAAA;AAAA,QACxB,kBAAA,EAAoB,IAAA;AAAA,QACpB,IAAA,EAAM,IAAI,UAAU;AAAA,OACtB;AAAA,MACA,WAAA,EAAa;AAAA,QACX,MAAMA,QAAAA,CAAQ,OAAA;AAAA,QACd,SAAS,EAAC;AAAA,QACV,kBAAA,EAAoB,KAAA;AAAA,QACpB,IAAA,EAAM,IAAI,iBAAiB;AAAA,OAC7B;AAAA,MACA,eAAA,EAAiB;AAAA,QACf,MAAMA,QAAAA,CAAQ,OAAA;AAAA,QACd,OAAA,EAAS,CAAC,eAAe,CAAA;AAAA,QACzB,kBAAA,EAAoB,KAAA;AAAA,QACpB,IAAA,EAAM,IAAI,qBAAqB;AAAA,OACjC;AAAA,MACA,gBAAA,EAAkB;AAAA,QAChB,MAAMA,QAAAA,CAAQ,OAAA;AAAA,QACd,OAAA,EAAS,CAAC,eAAA,EAAiB,iBAAiB,CAAA;AAAA,QAC5C,kBAAA,EAAoB,KAAA;AAAA,QACpB,IAAA,EAAM,IAAI,sBAAsB;AAAA,OAClC;AAAA,MACA,SAAA,EAAW;AAAA,QACT,MAAMA,QAAAA,CAAQ,OAAA;AAAA,QACd,OAAA,EAAS,CAAC,eAAA,EAAiB,iBAAA,EAAmB,cAAc,CAAA;AAAA,QAC5D,kBAAA,EAAoB,KAAA;AAAA,QACpB,IAAA,EAAM,IAAI,eAAe;AAAA,OAC3B;AAAA,MACA,eAAA,EAAiB;AAAA,QACf,MAAMA,QAAAA,CAAQ,OAAA;AAAA,QACd,OAAA,EAAS,CAAC,eAAA,EAAiB,iBAAA,EAAmB,cAAc,CAAA;AAAA,QAC5D,kBAAA,EAAoB,IAAA;AAAA,QACpB,IAAA,EAAM,IAAI,qBAAqB;AAAA,OACjC;AAAA,MACA,OAAA,EAAS;AAAA,QACP,MAAMA,QAAAA,CAAQ,OAAA;AAAA,QACd,OAAA,EAAS,CAAC,eAAA,EAAiB,iBAAA,EAAmB,cAAc,CAAA;AAAA,QAC5D,kBAAA,EAAoB,KAAA;AAAA,QACpB,IAAA,EAAM,IAAI,aAAa;AAAA,OACzB;AAAA,MACA,MAAA,EAAQ;AAAA,QACN,MAAMA,QAAAA,CAAQ,OAAA;AAAA,QACd,OAAA,EAAS,CAAC,eAAA,EAAiB,iBAAiB,CAAA;AAAA,QAC5C,kBAAA,EAAoB,KAAA;AAAA,QACpB,IAAA,EAAM,IAAI,YAAY;AAAA,OACxB;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,MAAMA,QAAAA,CAAQ,OAAA;AAAA,QACd,OAAA,EAAS,CAAC,eAAA,EAAiB,iBAAA,EAAmB,cAAc,CAAA;AAAA,QAC5D,kBAAA,EAAoB,KAAA;AAAA,QACpB,IAAA,EAAM,IAAI,UAAU;AAAA,OACtB;AAAA,MACA,KAAA,EAAO;AAAA,QACL,MAAMA,QAAAA,CAAQ,OAAA;AAAA,QACd,OAAA,EAAS,CAAC,eAAA,EAAiB,iBAAA,EAAmB,gBAAgB,kBAAkB,CAAA;AAAA,QAChF,kBAAA,EAAoB,KAAA;AAAA,QACpB,IAAA,EAAM,IAAI,WAAW;AAAA,OACvB;AAAA,MACA,MAAA,EAAQ;AAAA,QACN,MAAMA,QAAAA,CAAQ,OAAA;AAAA,QACd,OAAA,EAAS,CAAC,eAAA,EAAiB,iBAAA,EAAmB,gBAAgB,kBAAkB,CAAA;AAAA,QAChF,kBAAA,EAAoB,IAAA;AAAA,QACpB,IAAA,EAAM,IAAI,YAAY;AAAA,OACxB;AAAA,MACA,QAAA,EAAU;AAAA,QACR,MAAMA,QAAAA,CAAQ,OAAA;AAAA,QACd,OAAA,EAAS,CAAC,eAAA,EAAiB,iBAAA,EAAmB,gBAAgB,kBAAkB,CAAA;AAAA,QAChF,kBAAA,EAAoB,IAAA;AAAA,QACpB,IAAA,EAAM,IAAI,cAAc;AAAA,OAC1B;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,MAAMA,QAAAA,CAAQ,OAAA;AAAA,QACd,OAAA,EAAS,CAAC,eAAA,EAAiB,iBAAA,EAAmB,cAAc,CAAA;AAAA,QAC5D,kBAAA,EAAoB,IAAA;AAAA,QACpB,IAAA,EAAM,IAAI,UAAU;AAAA,OACtB;AAAA,MACA,iBAAA,EAAmB;AAAA,QACjB,MAAMA,QAAAA,CAAQ,OAAA;AAAA,QACd,OAAA,EAAS,CAAC,eAAA,EAAiB,iBAAA,EAAmB,cAAc,CAAA;AAAA,QAC5D,kBAAA,EAAoB,KAAA;AAAA,QACpB,IAAA,EAAM,IAAI,uBAAuB;AAAA,OACnC;AAAA,MACA,mBAAA,EAAqB;AAAA,QACnB,MAAMA,QAAAA,CAAQ,OAAA;AAAA,QACd,OAAA,EAAS,CAAC,eAAA,EAAiB,iBAAA,EAAmB,cAAc,CAAA;AAAA,QAC5D,kBAAA,EAAoB,IAAA;AAAA,QACpB,IAAA,EAAM,IAAI,yBAAyB;AAAA;AACrC,KACF;AACA,IAAAA,QAAAA,CAAQ,KAAA,GAAQ,MAAA,CAAO,IAAA,CAAK,SAAS,CAAA;AAErC,IAAAA,QAAAA,CAAQ,IAAA,GAAO,SAAU,IAAA,EAAM,EAAA,EAAI;AACjC,MAAA,OAAO,SAAA,CAAU,IAAI,CAAA,CAAE,IAAA,CAAK,EAAE,CAAA;AAAA,IAChC,CAAA;AAEA,IAAAA,QAAAA,CAAQ,OAAA,GAAU,SAAU,IAAA,EAAM;AAChC,MAAA,IAAI,QAAA;AACJ,MAAA,QAAA,GAAW,UAAU,IAAI,CAAA;AACzB,MAAA,OAAO,KAAA,CAAM,UAAU,MAAA,CAAO,OAAA,CAAQ,MAAM,QAAA,CAAS,OAAA,CAAQ,GAAA,CAAI,SAAUgB,EAAAA,EAAG;AAC5E,QAAA,OAAO,QAAQA,EAAC,CAAA;AAAA,MAClB,CAAC,CAAA,EAAG,QAAA,CAAS,kBAAA,GAAqB,OAAA,CAAQ,kBAAA,GAAqB,EAAA,EAAI,QAAA,CAAS,IAAI,CAAA,CAAE,IAAA,CAAK,IAAI,CAAA;AAAA,IAC7F,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACjKA,IAAA,uBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,2FAAA,CAAAhB,SAAA,EAAA,MAAA,EAAA;AAEA,IAAA,SAAS,mBAAmB,GAAA,EAAK,OAAA,EAAS,QAAQ,KAAA,EAAO,MAAA,EAAQ,KAAK,GAAA,EAAK;AAAE,MAAA,IAAI;AAAE,QAAA,IAAI,IAAA,GAAO,GAAA,CAAI,GAAG,CAAA,CAAE,GAAG,CAAA;AAAG,QAAA,IAAI,QAAQ,IAAA,CAAK,KAAA;AAAA,MAAO,SAAS,KAAA,EAAO;AAAE,QAAA,MAAA,CAAO,KAAK,CAAA;AAAG,QAAA;AAAA,MAAQ;AAAE,MAAA,IAAI,KAAK,IAAA,EAAM;AAAE,QAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,MAAG,CAAA,MAAO;AAAE,QAAA,OAAA,CAAQ,OAAA,CAAQ,KAAK,CAAA,CAAE,IAAA,CAAK,OAAO,MAAM,CAAA;AAAA,MAAG;AAAA,IAAE;AAExQ,IAAA,SAAS,kBAAkB,EAAA,EAAI;AAAE,MAAA,OAAO,WAAY;AAAE,QAAA,IAAIM,KAAAA,GAAO,MAAM,IAAA,GAAO,SAAA;AAAW,QAAA,OAAO,IAAI,OAAA,CAAQ,SAAU,OAAA,EAAS,MAAA,EAAQ;AAAE,UAAA,IAAI,GAAA,GAAM,EAAA,CAAG,KAAA,CAAMA,KAAAA,EAAM,IAAI,CAAA;AAAG,UAAA,SAAS,MAAM,KAAA,EAAO;AAAE,YAAA,kBAAA,CAAmB,KAAK,OAAA,EAAS,MAAA,EAAQ,KAAA,EAAO,MAAA,EAAQ,QAAQ,KAAK,CAAA;AAAA,UAAG;AAAE,UAAA,SAAS,OAAOC,IAAAA,EAAK;AAAE,YAAA,kBAAA,CAAmB,KAAK,OAAA,EAAS,MAAA,EAAQ,KAAA,EAAO,MAAA,EAAQ,SAASA,IAAG,CAAA;AAAA,UAAG;AAAE,UAAA,KAAA,CAAM,MAAS,CAAA;AAAA,QAAG,CAAC,CAAA;AAAA,MAAG,CAAA;AAAA,IAAG;AAEpY,IAAA,IAAI,MAAA;AAAJ,IAAA,IAAY,eAAA;AAAZ,IAAA,IAA6B,OAAA;AAA7B,IAAA,IAAsC,MAAA;AACtC,IAAA,MAAA,GAAS,cAAA,EAAA;AACT,IAAA,MAAA,GAAS,cAAA,EAAA;AACT,IAAA,OAAA,GAAU,eAAA,EAAA;AAEV,IAAA,eAAA,GAAkB,WAAY;AAAA,MAC5B,MAAM,eAAA,CAAgB;AAAA,QACpB,WAAA,CAAY,OAAA,GAAU,EAAC,EAAG;AACxB,UAAA,MAAA,CAAO,IAAA,CAAK,OAAA,EAAS,IAAA,CAAK,QAAA,EAAU,IAAI,CAAA;AAExC,UAAA,IAAI,IAAA,CAAK,SAAS,IAAA,EAAM;AACtB,YAAA,IAAA,CAAK,KAAA,GAAQ,IAAA,CAAK,SAAS,CAAA,CAAE,OAAO,CAAA;AAAA,UACtC;AAEA,UAAA,IAAI,IAAA,CAAK,UAAU,IAAA,EAAM;AACvB,YAAA,IAAA,CAAK,MAAA,GAAS,IAAI,MAAA,CAAO,IAAI,CAAA;AAAA,UAC/B;AAEA,UAAA,IAAA,CAAK,UAAA,GAAa,KAAA;AAElB,UAAA,IAAI,IAAA,CAAK,UAAU,IAAA,EAAM;AACvB,YAAA,IAAA,CAAK,MAAA,GAAS,IAAA,CAAK,KAAA,CAAM,YAAA,CAAa,KAAK,aAAa,CAAA;AAAA,UAC1D;AAEA,UAAA,IAAA,CAAK,UAAA,GAAa,IAAA,CAAK,MAAA,CAAO,SAAA,EAAU;AACxC,UAAA,IAAA,CAAK,WAAW,EAAC;AACjB,UAAA,IAAA,CAAK,OAAO,EAAC;AACb,UAAA,IAAA,CAAK,KAAA,GAAQ,KAAK,OAAA,CAAQ,GAAA,CAAI,CAAC,IAAA,CAAK,MAAA,CAAO,KAAK,MAAA,EAAQ,KAAK,GAAG,IAAA,CAAK,MAAA,CAAO,KAAK,UAAA,EAAY,IAAI,CAAC,CAAC,CAAA,CAAE,KAAK,MAAM;AAC9G,YAAA,OAAO,KAAK,YAAA,EAAa;AAAA,UAC3B,CAAC,CAAA,CAAE,IAAA,CAAK,MAAM;AACZ,YAAA,OAAO;AAAA,cACL,QAAQ,IAAA,CAAK,MAAA;AAAA,cACb,YAAY,IAAA,CAAK;AAAA,aACnB;AAAA,UACF,CAAC,CAAA;AAAA,QACH;AAAA,QAEA,MAAA,CAAO,QAAQ,GAAA,EAAK;AAClB,UAAA,MAAA,CAAO,gBAAgB,CAAC,CAAA;AACxB,UAAA,OAAO,IAAI,IAAA,CAAK,OAAA,CAAQ,CAAC,SAAS,MAAA,KAAW;AAC3C,YAAA,MAAA,CAAO,EAAA,CAAG,OAAA,EAAS,CAAAE,EAAAA,KAAK;AACtB,cAAA,OAAO,IAAA,CAAK,MAAA,CAAO,OAAA,CAAQ,OAAA,EAASA,EAAC,CAAA;AAAA,YACvC,CAAC,CAAA;AAED,YAAA,IAAI,GAAA,EAAK;AACP,cAAA,MAAA,CAAO,EAAA,CAAG,SAAA,EAAW,CAAC,OAAA,EAAS,OAAA,KAAY;AACzC,gBAAA,IAAI,GAAA;AACJ,gBAAA,OAAA,CAAQ,GAAA,GAAM,IAAA,CAAK,QAAA,CAAS,OAAO,CAAA,KAAM,IAAA,GAAO,GAAA,CAAI,MAAA,CAAO,SAAA,CAAU,OAAA,EAAS,OAAO,CAAA,GAAI,MAAA;AAAA,cAC3F,CAAC,CAAA;AAAA,YACH;AAEA,YAAA,IAAI,OAAO,KAAA,EAAO;AAChB,cAAA,OAAO,OAAA,EAAQ;AAAA,YACjB,CAAA,MAAO;AACL,cAAA,OAAO,MAAA,CAAO,IAAA,CAAK,OAAA,EAAS,OAAO,CAAA;AAAA,YACrC;AAAA,UACF,CAAC,CAAA;AAAA,QACH;AAAA,QAEA,YAAY,IAAA,EAAM;AAChB,UAAA,OAAO,IAAI,IAAA,CAAK,OAAA,CAAQ,CAAC,SAAS,MAAA,KAAW;AAC3C,YAAA,IAAI,OAAA;AACJ,YAAA,OAAA,GAAU,OAAA,CAAQ,QAAQ,IAAI,CAAA;AAC9B,YAAA,OAAO,IAAA,CAAK,MAAA,CAAO,KAAA,CAAM,CAAC,CAAC,QAAA,EAAU,MAAA,EAAQ,OAAO,CAAC,CAAC,CAAA,CAAE,IAAA,CAAK,CAACF,MAAK,OAAA,KAAY;AAC7E,cAAA,IAAIA,QAAO,IAAA,EAAM;AACf,gBAAA,OAAO,OAAOA,IAAG,CAAA;AAAA,cACnB;AAEA,cAAA,IAAA,CAAK,IAAA,CAAK,IAAI,CAAA,GAAI,OAAA,CAAQ,CAAC,CAAA;AAC3B,cAAA,OAAO,OAAA,CAAQ,OAAA,CAAQ,CAAC,CAAC,CAAA;AAAA,YAC3B,CAAC,CAAA;AAAA,UACH,CAAC,CAAA;AAAA,QACH;AAAA,QAEA,YAAA,GAAe;AACb,UAAA,OAAO,KAAK,OAAA,CAAQ,GAAA,CAAI,QAAQ,KAAA,CAAM,GAAA,CAAI,CAAAN,EAAAA,KAAK;AAC7C,YAAA,OAAO,IAAA,CAAK,YAAYA,EAAC,CAAA;AAAA,UAC3B,CAAC,CAAC,CAAA;AAAA,QACJ;AAAA,QAEA,eAAe,GAAA,EAAK;AAClB,UAAA,IAAI,KAAA,GAAQ,IAAA;AAEZ,UAAA,OAAO,kBAAkB,aAAa;AACpC,YAAA,MAAM,KAAA,CAAM,KAAA;AACZ,YAAA,OAAO,IAAI,KAAA,CAAM,OAAA,CAAQ,CAAC,SAAS,MAAA,KAAW;AAC5C,cAAA,OAAO,KAAA,CAAM,MAAA,CAAO,KAAA,CAAM,CAAC,GAAG,CAAC,CAAA,CAAE,WAAA,CAAY,SAAUM,IAAAA,EAAK,OAAA,EAAS;AACnE,gBAAA,IAAIA,QAAO,IAAA,EAAM;AACf,kBAAA,OAAO,OAAOA,IAAG,CAAA;AAAA,gBACnB,CAAA,MAAO;AACL,kBAAA,OAAO,OAAA,CAAQ,OAAA,CAAQ,CAAC,CAAC,CAAA;AAAA,gBAC3B;AAAA,cACF,CAAC,CAAA;AAAA,YACH,CAAC,CAAA;AAAA,UACH,CAAC,CAAA,EAAE;AAAA,QACL;AAAA,QAEA,eAAe,QAAA,EAAU;AACvB,UAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,GAAA,CAAI,CAAC,QAAA,CAAS,OAAA,EAAQ,EAAG,QAAA,CAAS,cAAA,EAAgB,CAAA,CAAE,GAAA,CAAI,CAAA,OAAA,KAAW;AACrF,YAAA,OAAO,IAAI,IAAA,CAAK,OAAA,CAAQ,CAAC,SAAS,MAAA,KAAW;AAC3C,cAAA,IAAI,OAAA;AAEJ,cAAA,OAAA,GAAU,CAAA,IAAA,KAAQ;AAChB,gBAAA,IAAI,SAAS,OAAA,EAAS;AACpB,kBAAA,IAAA,CAAK,UAAA,CAAW,cAAA,CAAe,WAAA,EAAa,OAAO,CAAA;AACnD,kBAAA,IAAA,CAAK,QAAA,CAAS,OAAO,CAAA,GAAI,QAAA;AACzB,kBAAA,OAAO,OAAA,EAAQ;AAAA,gBACjB;AAAA,cACF,CAAA;AAEA,cAAA,IAAA,CAAK,UAAA,CAAW,EAAA,CAAG,WAAA,EAAa,OAAO,CAAA;AACvC,cAAA,OAAO,IAAA,CAAK,UAAA,CAAW,SAAA,CAAU,OAAO,CAAA;AAAA,YAC1C,CAAC,CAAA;AAAA,UACH,CAAC,CAAC,CAAA;AAAA,QACJ;AAAA,QAEA,kBAAkB,QAAA,EAAU;AAC1B,UAAA,IAAI,MAAA,GAAS,IAAA;AAEb,UAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,GAAA,CAAI,CAAC,QAAA,CAAS,SAAQ,EAAG,QAAA,CAAS,cAAA,EAAgB,CAAA,CAAE,GAAA;AAAA,4BAExE,CAAA,WAAY;AACV,cAAA,IAAI,IAAA,GAAO,iBAAA,CAAkB,WAAW,OAAA,EAAS;AAC/C,gBAAA,IAAI,CAAC,OAAO,UAAA,EAAY;AACtB,kBAAA,MAAM,IAAI,MAAA,CAAO,OAAA,CAAQ,CAAC,SAAS,MAAA,KAAW;AAC5C,oBAAA,OAAO,OAAO,UAAA,CAAW,WAAA,CAAY,OAAA,EAAS,SAAUA,MAAK,IAAA,EAAM;AACjE,sBAAA,IAAIA,QAAO,IAAA,EAAM;AACf,wBAAA,OAAO,OAAOA,IAAG,CAAA;AAAA,sBACnB;AAEA,sBAAA,IAAI,SAAS,OAAA,EAAS;AACpB,wBAAA,OAAO,OAAA,EAAQ;AAAA,sBACjB;AAAA,oBACF,CAAC,CAAA;AAAA,kBACH,CAAC,CAAA;AAAA,gBACH;AAEA,gBAAA,OAAO,OAAO,MAAA,CAAO,QAAA,CAAS,OAAO,CAAA;AAAA,cACvC,CAAC,CAAA;AAED,cAAA,OAAO,SAAU,EAAA,EAAI;AACnB,gBAAA,OAAO,IAAA,CAAK,KAAA,CAAM,IAAA,EAAM,SAAS,CAAA;AAAA,cACnC,CAAA;AAAA,YACF,CAAA;AAAE,WAAE,CAAA;AAAA,QACN;AAAA,QAEA,cAAA,CAAe,IAAA,EAAM,EAAA,EAAI,IAAA,EAAM,EAAA,EAAI;AACjC,UAAA,IAAI,IAAA;AACJ,UAAA,IAAA,GAAO,OAAA,CAAQ,IAAA,CAAK,IAAA,EAAM,EAAE,CAAA;AAC5B,UAAA,OAAO,CAAC,IAAA,CAAK,IAAA,CAAK,IAAI,CAAA,EAAG,IAAA,CAAK,MAAM,CAAA,CAAE,MAAA,CAAO,IAAA,EAAM,IAAA,EAAM,EAAE,CAAA;AAAA,QAC7D;AAAA,QAEA,aAAa,IAAA,EAAM;AACjB,UAAA,OAAO,IAAA,CAAK,MAAA,CAAO,OAAA,CAAQ,IAAA,CAAK,KAAK,MAAM,CAAA;AAAA,QAC7C;AAAA,QAEA,UAAA,CAAW,QAAQ,IAAA,EAAM;AACvB,UAAA,IAAIU,EAAAA,EAAGhB,IAAG,GAAA,EAAK,GAAA;AACf,UAAA,GAAA,GAAM,MAAA,CAAO,IAAA,CAAK,IAAA,CAAK,QAAQ,CAAA;AAE/B,UAAA,KAAKgB,KAAI,CAAA,EAAG,GAAA,GAAM,IAAI,MAAA,EAAQA,EAAAA,GAAI,KAAKA,EAAAA,EAAAA,EAAK;AAC1C,YAAAhB,EAAAA,GAAI,IAAIgB,EAAC,CAAA;AACT,YAAA,aAAA,CAAc,IAAA,CAAK,QAAA,CAAShB,EAAC,CAAA,CAAE,OAAO,SAAS,CAAA;AAAA,UACjD;AAEA,UAAA,IAAA,CAAK,WAAW,EAAC;AACjB,UAAA,IAAA,CAAK,UAAA,GAAa,IAAA;AAClB,UAAA,IAAA,CAAK,MAAA,CAAO,IAAI,KAAK,CAAA;AACrB,UAAA,IAAA,CAAK,UAAA,CAAW,IAAI,KAAK,CAAA;AACzB,UAAA,OAAO,IAAA,CAAK,QAAQ,OAAA,EAAQ;AAAA,QAC9B;AAAA;AAKF,MAAA,eAAA,CAAgB,UAAU,SAAA,GAAY,OAAA;AACtC,MAAA,eAAA,CAAgB,UAAU,QAAA,GAAW;AAAA,QACnC,KAAA,EAAO,IAAA;AAAA,QACP,eAAe,EAAC;AAAA,QAChB,MAAA,EAAQ,IAAA;AAAA,QACR,OAAA;AAAA,QACA,MAAA,EAAQ;AAAA,OACV;AACA,MAAA,OAAO,eAAA;AAAA,IACT,CAAA,CAAE,KAAK,MAAM,CAAA;AAEb,IAAA,MAAA,CAAO,OAAA,GAAU,eAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;AChMjB,IAAA,yBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,6FAAA,CAAAD,SAAA,EAAA,MAAA,EAAA;AAEA,IAAA,SAAS,cAAA,CAAe,KAAKiB,EAAAA,EAAG;AAAE,MAAA,OAAO,gBAAgB,GAAG,CAAA,IAAK,sBAAsB,GAAA,EAAKA,EAAC,KAAK,gBAAA,EAAiB;AAAA,IAAG;AAEtH,IAAA,SAAS,gBAAA,GAAmB;AAAE,MAAA,MAAM,IAAI,UAAU,sDAAsD,CAAA;AAAA,IAAG;AAE3G,IAAA,SAAS,qBAAA,CAAsB,KAAKA,EAAAA,EAAG;AAAE,MAAA,IAAI,OAAO,EAAC;AAAG,MAAA,IAAI,EAAA,GAAK,IAAA;AAAM,MAAA,IAAI,EAAA,GAAK,KAAA;AAAO,MAAA,IAAI,EAAA,GAAK,MAAA;AAAW,MAAA,IAAI;AAAE,QAAA,KAAA,IAAS,EAAA,GAAK,GAAA,CAAI,MAAA,CAAO,QAAQ,GAAE,EAAG,EAAA,EAAI,EAAE,EAAA,GAAA,CAAM,KAAK,EAAA,CAAG,IAAA,EAAK,EAAG,IAAA,CAAA,EAAO,KAAK,IAAA,EAAM;AAAE,UAAA,IAAA,CAAK,IAAA,CAAK,GAAG,KAAK,CAAA;AAAG,UAAA,IAAIA,EAAAA,IAAK,IAAA,CAAK,MAAA,KAAWA,EAAAA,EAAG;AAAA,QAAO;AAAA,MAAE,SAASV,IAAAA,EAAK;AAAE,QAAA,EAAA,GAAK,IAAA;AAAM,QAAA,EAAA,GAAKA,IAAAA;AAAA,MAAK,CAAA,SAAE;AAAU,QAAA,IAAI;AAAE,UAAA,IAAI,CAAC,MAAM,EAAA,CAAG,QAAQ,KAAK,IAAA,EAAM,EAAA,CAAG,QAAQ,CAAA,EAAE;AAAA,QAAG,CAAA,SAAE;AAAU,UAAA,IAAI,IAAI,MAAM,EAAA;AAAA,QAAI;AAAA,MAAE;AAAE,MAAA,OAAO,IAAA;AAAA,IAAM;AAExZ,IAAA,SAAS,gBAAgB,GAAA,EAAK;AAAE,MAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,GAAG,CAAA,EAAG,OAAO,GAAA;AAAA,IAAK;AAEpE,IAAA,SAAS,mBAAmB,GAAA,EAAK,OAAA,EAAS,QAAQ,KAAA,EAAO,MAAA,EAAQ,KAAK,GAAA,EAAK;AAAE,MAAA,IAAI;AAAE,QAAA,IAAI,IAAA,GAAO,GAAA,CAAI,GAAG,CAAA,CAAE,GAAG,CAAA;AAAG,QAAA,IAAI,QAAQ,IAAA,CAAK,KAAA;AAAA,MAAO,SAAS,KAAA,EAAO;AAAE,QAAA,MAAA,CAAO,KAAK,CAAA;AAAG,QAAA;AAAA,MAAQ;AAAE,MAAA,IAAI,KAAK,IAAA,EAAM;AAAE,QAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,MAAG,CAAA,MAAO;AAAE,QAAA,OAAA,CAAQ,OAAA,CAAQ,KAAK,CAAA,CAAE,IAAA,CAAK,OAAO,MAAM,CAAA;AAAA,MAAG;AAAA,IAAE;AAExQ,IAAA,SAAS,kBAAkB,EAAA,EAAI;AAAE,MAAA,OAAO,WAAY;AAAE,QAAA,IAAID,KAAAA,GAAO,MAAM,IAAA,GAAO,SAAA;AAAW,QAAA,OAAO,IAAI,OAAA,CAAQ,SAAU,OAAA,EAAS,MAAA,EAAQ;AAAE,UAAA,IAAI,GAAA,GAAM,EAAA,CAAG,KAAA,CAAMA,KAAAA,EAAM,IAAI,CAAA;AAAG,UAAA,SAAS,MAAM,KAAA,EAAO;AAAE,YAAA,kBAAA,CAAmB,KAAK,OAAA,EAAS,MAAA,EAAQ,KAAA,EAAO,MAAA,EAAQ,QAAQ,KAAK,CAAA;AAAA,UAAG;AAAE,UAAA,SAAS,OAAOC,IAAAA,EAAK;AAAE,YAAA,kBAAA,CAAmB,KAAK,OAAA,EAAS,MAAA,EAAQ,KAAA,EAAO,MAAA,EAAQ,SAASA,IAAG,CAAA;AAAA,UAAG;AAAE,UAAA,KAAA,CAAM,MAAS,CAAA;AAAA,QAAG,CAAC,CAAA;AAAA,MAAG,CAAA;AAAA,IAAG;AAEpY,IAAA,IAAI,MAAA;AAAJ,IAAA,IAAY,iBAAA;AAAZ,IAAA,IAA+B,OAAA;AAA/B,IAAA,IAAwC,MAAA;AACxC,IAAA,MAAA,GAAS,cAAA,EAAA;AACT,IAAA,MAAA,GAAS,cAAA,EAAA;AACT,IAAA,OAAA,GAAU,eAAA,EAAA;AAEV,IAAA,iBAAA,GAAoB,WAAY;AAAA,MAC9B,MAAM,iBAAA,CAAkB;AAAA,QACtB,WAAA,CAAY,OAAA,GAAU,EAAC,EAAG;AACxB,UAAA,MAAA,CAAO,IAAA,CAAK,OAAA,EAAS,IAAA,CAAK,QAAA,EAAU,IAAI,CAAA;AAExC,UAAA,IAAI,IAAA,CAAK,SAAS,IAAA,EAAM;AACtB,YAAA,IAAA,CAAK,KAAA,GAAQ,IAAA,CAAK,SAAS,CAAA,CAAE,SAAS,CAAA;AAAA,UACxC;AAEA,UAAA,IAAI,IAAA,CAAK,UAAU,IAAA,EAAM;AACvB,YAAA,IAAA,CAAK,MAAA,GAAS,IAAI,MAAA,CAAO,IAAI,CAAA;AAAA,UAC/B;AAEA,UAAA,IAAA,CAAK,UAAA,GAAa,KAAA;AAElB,UAAA,IAAI,IAAA,CAAK,gBAAgB,IAAA,EAAM;AAC7B,YAAA,IAAA,CAAK,MAAA,GAAS,IAAI,IAAA,CAAK,KAAA,CAAM,QAAQ,IAAA,CAAK,YAAA,EAAc,KAAK,aAAa,CAAA;AAC1E,YAAA,IAAA,CAAK,UAAA,GAAa,IAAI,IAAA,CAAK,KAAA,CAAM,QAAQ,IAAA,CAAK,YAAA,EAAc,KAAK,aAAa,CAAA;AAAA,UAChF,WAAW,IAAA,CAAK,MAAA,IAAU,QAAQ,IAAA,CAAK,MAAA,CAAO,aAAa,IAAA,EAAM;AAC/D,YAAA,IAAA,CAAK,UAAA,GAAa,IAAI,IAAA,CAAK,KAAA,CAAM,OAAA,CAAQ,KAAK,MAAA,CAAO,YAAA,EAAc,IAAA,CAAK,MAAA,CAAO,OAAO,CAAA;AAAA,UACxF,CAAA,MAAO;AACL,YAAA,IAAI,IAAA,CAAK,UAAU,IAAA,EAAM;AACvB,cAAA,IAAA,CAAK,MAAA,GAAS,IAAI,IAAA,CAAK,KAAA,CAAM,KAAK,aAAa,CAAA;AAAA,YACjD;AAEA,YAAA,IAAA,CAAK,UAAA,GAAa,IAAA,CAAK,MAAA,CAAO,SAAA,EAAU;AAAA,UAC1C;AAEA,UAAA,IAAA,CAAK,WAAW,EAAC;AACjB,UAAA,IAAA,CAAK,KAAA,GAAQ,KAAK,OAAA,CAAQ,GAAA,CAAI,CAAC,IAAA,CAAK,MAAA,CAAO,KAAK,MAAA,EAAQ,KAAK,GAAG,IAAA,CAAK,MAAA,CAAO,KAAK,UAAA,EAAY,IAAI,CAAC,CAAC,CAAA,CAAE,KAAK,MAAM;AAC9G,YAAA,IAAA,CAAK,YAAA,EAAa;AAElB,YAAA,OAAO;AAAA,cACL,QAAQ,IAAA,CAAK,MAAA;AAAA,cACb,YAAY,IAAA,CAAK;AAAA,aACnB;AAAA,UACF,CAAC,CAAA;AAAA,QACH;AAAA,QAEA,MAAA,CAAO,QAAQ,GAAA,EAAK;AAClB,UAAA,MAAA,CAAO,gBAAgB,CAAC,CAAA;AACxB,UAAA,OAAO,IAAI,IAAA,CAAK,OAAA,CAAQ,CAAC,SAAS,MAAA,KAAW;AAC3C,YAAA,MAAA,CAAO,EAAA,CAAG,OAAA,EAAS,CAAAE,EAAAA,KAAK;AACtB,cAAA,OAAO,IAAA,CAAK,MAAA,CAAO,OAAA,CAAQ,OAAA,EAASA,EAAC,CAAA;AAAA,YACvC,CAAC,CAAA;AAED,YAAA,IAAI,GAAA,EAAK;AACP,cAAA,MAAA,CAAO,EAAA,CAAG,SAAA,EAAW,CAAC,OAAA,EAAS,OAAA,KAAY;AACzC,gBAAA,IAAI,GAAA;AACJ,gBAAA,OAAA,CAAQ,GAAA,GAAM,IAAA,CAAK,QAAA,CAAS,OAAO,CAAA,KAAM,IAAA,GAAO,GAAA,CAAI,MAAA,CAAO,SAAA,CAAU,OAAA,EAAS,OAAO,CAAA,GAAI,MAAA;AAAA,cAC3F,CAAC,CAAA;AAAA,YACH;AAEA,YAAA,IAAI,MAAA,CAAO,WAAW,OAAA,EAAS;AAC7B,cAAA,OAAO,OAAA,EAAQ;AAAA,YACjB,CAAA,MAAO;AACL,cAAA,OAAO,MAAA,CAAO,IAAA,CAAK,OAAA,EAAS,OAAO,CAAA;AAAA,YACrC;AAAA,UACF,CAAC,CAAA;AAAA,QACH;AAAA,QAEA,YAAA,GAAe;AACb,UAAA,OAAO,OAAA,CAAQ,KAAA,CAAM,OAAA,CAAQ,CAAA,IAAA,KAAQ;AACnC,YAAA,OAAO,IAAA,CAAK,MAAA,CAAO,aAAA,CAAc,IAAA,EAAM;AAAA,cACrC,GAAA,EAAK,OAAA,CAAQ,OAAA,CAAQ,IAAI;AAAA,aAC1B,CAAA;AAAA,UACH,CAAC,CAAA;AAAA,QACH;AAAA,QAEA,eAAe,GAAA,EAAK;AAClB,UAAA,IAAI,KAAA,GAAQ,IAAA;AAEZ,UAAA,OAAO,kBAAkB,aAAa;AACpC,YAAA,IAAO;AAEP,YAAA,MAAM,KAAA,CAAM,KAAA;AAEZ,YAAA,IAAI,IAAA,GAAO,MAAM,KAAA,CAAM,MAAA,CAAO,SAAS,CAAC,GAAG,CAAC,CAAA,CAAE,IAAA,EAAK;AAEnD,YAAA,IAAI,KAAA,GAAQ,cAAA,CAAe,IAAA,EAAM,CAAC,CAAA;AAElC,YAAA,IAAI,MAAA,GAAS,cAAA,CAAe,KAAA,CAAM,CAAC,GAAG,CAAC,CAAA;AAEvC,YAAI,OAAO,CAAC,CAAA;AACZ,YAAA,OAAA,GAAU,OAAO,CAAC,CAAA;AAClB,YAAA,OAAO,OAAA;AAAA,UACT,CAAC,CAAA,EAAE;AAAA,QACL;AAAA,QAEA,eAAe,QAAA,EAAU;AACvB,UAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,GAAA,CAAI,CAAC,QAAA,CAAS,OAAA,EAAQ,EAAG,QAAA,CAAS,cAAA,EAAgB,CAAA,CAAE,GAAA,CAAI,CAAA,OAAA,KAAW;AACrF,YAAA,OAAO,IAAI,IAAA,CAAK,OAAA,CAAQ,CAAC,SAAS,MAAA,KAAW;AAC3C,cAAA,OAAO,IAAA,CAAK,UAAA,CAAW,SAAA,CAAU,OAAA,EAAS,MAAM;AAC9C,gBAAA,IAAA,CAAK,QAAA,CAAS,OAAO,CAAA,GAAI,QAAA;AACzB,gBAAA,OAAO,OAAA,EAAQ;AAAA,cACjB,CAAC,CAAA;AAAA,YACH,CAAC,CAAA;AAAA,UACH,CAAC,CAAC,CAAA;AAAA,QACJ;AAAA,QAEA,kBAAkB,QAAA,EAAU;AAC1B,UAAA,IAAI,MAAA,GAAS,IAAA;AAEb,UAAA,OAAO,CAAC,QAAA,CAAS,OAAA,IAAW,QAAA,CAAS,cAAA,EAAgB,CAAA,CAAE,OAAA;AAAA,4BAEvD,CAAA,WAAY;AACV,cAAA,IAAI,KAAA,GAAQ,iBAAA,CAAkB,WAAW,OAAA,EAAS;AAChD,gBAAA,IAAI,CAAC,OAAO,UAAA,EAAY;AACtB,kBAAA,MAAM,MAAA,CAAO,UAAA,CAAW,WAAA,CAAY,OAAO,CAAA;AAAA,gBAC7C;AAEA,gBAAA,OAAO,OAAO,MAAA,CAAO,QAAA,CAAS,OAAO,CAAA;AAAA,cACvC,CAAC,CAAA;AAED,cAAA,OAAO,SAAU,EAAA,EAAI;AACnB,gBAAA,OAAO,KAAA,CAAM,KAAA,CAAM,IAAA,EAAM,SAAS,CAAA;AAAA,cACpC,CAAA;AAAA,YACF,CAAA;AAAE,WAAC;AAAA,QACL;AAAA,QAEA,cAAA,CAAe,IAAA,EAAM,EAAA,EAAI,IAAA,EAAM,EAAA,EAAI;AACjC,UAAA,IAAI,IAAA;AACJ,UAAA,IAAA,GAAO,OAAA,CAAQ,IAAA,CAAK,IAAA,EAAM,EAAE,CAAA;AAC5B,UAAA,OAAO,CAAC,IAAA,CAAK,MAAM,EAAE,MAAA,CAAO,IAAA,EAAM,MAAM,EAAE,CAAA;AAAA,QAC5C;AAAA,QAEA,aAAa,IAAA,EAAM;AACjB,UAAA,OAAO,KAAK,MAAA,CAAO,IAAI,CAAA,CAAE,IAAA,CAAK,KAAK,MAAM,CAAA;AAAA,QAC3C;AAAA,QAEA,UAAA,CAAW,QAAQ,IAAA,EAAM;AACvB,UAAA,IAAIQ,EAAAA,EAAGhB,IAAG,GAAA,EAAK,GAAA;AACf,UAAA,GAAA,GAAM,MAAA,CAAO,IAAA,CAAK,IAAA,CAAK,QAAQ,CAAA;AAE/B,UAAA,KAAKgB,KAAI,CAAA,EAAG,GAAA,GAAM,IAAI,MAAA,EAAQA,EAAAA,GAAI,KAAKA,EAAAA,EAAAA,EAAK;AAC1C,YAAAhB,EAAAA,GAAI,IAAIgB,EAAC,CAAA;AACT,YAAA,aAAA,CAAc,IAAA,CAAK,QAAA,CAAShB,EAAC,CAAA,CAAE,OAAO,SAAS,CAAA;AAAA,UACjD;AAEA,UAAA,IAAA,CAAK,WAAW,EAAC;AACjB,UAAA,IAAA,CAAK,UAAA,GAAa,IAAA;AAElB,UAAA,IAAI,KAAA,EAAO;AACT,YAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,GAAA,CAAI,CAAC,IAAA,CAAK,MAAA,CAAO,IAAA,EAAK,EAAG,IAAA,CAAK,UAAA,CAAW,IAAA,EAAM,CAAC,CAAA;AAAA,UACtE,CAAA,MAAO;AACL,YAAA,IAAA,CAAK,OAAO,UAAA,EAAW;AACvB,YAAA,IAAA,CAAK,WAAW,UAAA,EAAW;AAC3B,YAAA,OAAO,IAAA,CAAK,QAAQ,OAAA,EAAQ;AAAA,UAC9B;AAAA,QACF;AAAA;AAKF,MAAA,iBAAA,CAAkB,UAAU,SAAA,GAAY,SAAA;AACxC,MAAA,iBAAA,CAAkB,UAAU,QAAA,GAAW;AAAA,QACrC,KAAA,EAAO,IAAA;AAAA,QACP,eAAe,EAAC;AAAA,QAChB,YAAA,EAAc,IAAA;AAAA,QACd,MAAA,EAAQ,IAAA;AAAA,QACR,OAAA;AAAA,QACA,MAAA,EAAQ;AAAA,OACV;AACA,MAAA,OAAO,iBAAA;AAAA,IACT,CAAA,CAAE,KAAK,MAAM,CAAA;AAEb,IAAA,MAAA,CAAO,OAAA,GAAU,iBAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACzLjB,IAAA,sBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,0FAAA,CAAAD,UAAAG,OAAAA,EAAA;AAEA,IAAA,SAASe,eAAAA,CAAe,KAAKD,EAAAA,EAAG;AAAE,MAAA,OAAOE,iBAAgB,GAAG,CAAA,IAAKC,uBAAsB,GAAA,EAAKH,EAAC,KAAKI,iBAAAA,EAAiB;AAAA,IAAG;AAEtH,IAAA,SAASA,iBAAAA,GAAmB;AAAE,MAAA,MAAM,IAAI,UAAU,sDAAsD,CAAA;AAAA,IAAG;AAE3G,IAAA,SAASD,sBAAAA,CAAsB,KAAKH,EAAAA,EAAG;AAAE,MAAA,IAAI,OAAO,EAAC;AAAG,MAAA,IAAI,EAAA,GAAK,IAAA;AAAM,MAAA,IAAI,EAAA,GAAK,KAAA;AAAO,MAAA,IAAI,EAAA,GAAK,MAAA;AAAW,MAAA,IAAI;AAAE,QAAA,KAAA,IAAS,EAAA,GAAK,GAAA,CAAI,MAAA,CAAO,QAAQ,GAAE,EAAG,EAAA,EAAI,EAAE,EAAA,GAAA,CAAM,KAAK,EAAA,CAAG,IAAA,EAAK,EAAG,IAAA,CAAA,EAAO,KAAK,IAAA,EAAM;AAAE,UAAA,IAAA,CAAK,IAAA,CAAK,GAAG,KAAK,CAAA;AAAG,UAAA,IAAIA,EAAAA,IAAK,IAAA,CAAK,MAAA,KAAWA,EAAAA,EAAG;AAAA,QAAO;AAAA,MAAE,SAASV,IAAAA,EAAK;AAAE,QAAA,EAAA,GAAK,IAAA;AAAM,QAAA,EAAA,GAAKA,IAAAA;AAAA,MAAK,CAAA,SAAE;AAAU,QAAA,IAAI;AAAE,UAAA,IAAI,CAAC,MAAM,EAAA,CAAG,QAAQ,KAAK,IAAA,EAAM,EAAA,CAAG,QAAQ,CAAA,EAAE;AAAA,QAAG,CAAA,SAAE;AAAU,UAAA,IAAI,IAAI,MAAM,EAAA;AAAA,QAAI;AAAA,MAAE;AAAE,MAAA,OAAO,IAAA;AAAA,IAAM;AAExZ,IAAA,SAASY,iBAAgB,GAAA,EAAK;AAAE,MAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,GAAG,CAAA,EAAG,OAAO,GAAA;AAAA,IAAK;AAEpE,IAAA,SAASf,oBAAmB,GAAA,EAAK,OAAA,EAAS,QAAQ,KAAA,EAAO,MAAA,EAAQ,KAAK,GAAA,EAAK;AAAE,MAAA,IAAI;AAAE,QAAA,IAAI,IAAA,GAAO,GAAA,CAAI,GAAG,CAAA,CAAE,GAAG,CAAA;AAAG,QAAA,IAAI,QAAQ,IAAA,CAAK,KAAA;AAAA,MAAO,SAAS,KAAA,EAAO;AAAE,QAAA,MAAA,CAAO,KAAK,CAAA;AAAG,QAAA;AAAA,MAAQ;AAAE,MAAA,IAAI,KAAK,IAAA,EAAM;AAAE,QAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,MAAG,CAAA,MAAO;AAAE,QAAA,OAAA,CAAQ,OAAA,CAAQ,KAAK,CAAA,CAAE,IAAA,CAAK,OAAO,MAAM,CAAA;AAAA,MAAG;AAAA,IAAE;AAExQ,IAAA,SAASC,mBAAkB,EAAA,EAAI;AAAE,MAAA,OAAO,WAAY;AAAE,QAAA,IAAIC,KAAAA,GAAO,MAAM,IAAA,GAAO,SAAA;AAAW,QAAA,OAAO,IAAI,OAAA,CAAQ,SAAU,OAAA,EAAS,MAAA,EAAQ;AAAE,UAAA,IAAI,GAAA,GAAM,EAAA,CAAG,KAAA,CAAMA,KAAAA,EAAM,IAAI,CAAA;AAAG,UAAA,SAAS,MAAM,KAAA,EAAO;AAAE,YAAAF,oBAAmB,GAAA,EAAK,OAAA,EAAS,QAAQ,KAAA,EAAO,MAAA,EAAQ,QAAQ,KAAK,CAAA;AAAA,UAAG;AAAE,UAAA,SAAS,OAAOG,IAAAA,EAAK;AAAE,YAAAH,oBAAmB,GAAA,EAAK,OAAA,EAAS,QAAQ,KAAA,EAAO,MAAA,EAAQ,SAASG,IAAG,CAAA;AAAA,UAAG;AAAE,UAAA,KAAA,CAAM,MAAS,CAAA;AAAA,QAAG,CAAC,CAAA;AAAA,MAAG,CAAA;AAAA,IAAG;AAEpY,IAAA,IAAI,eAAA;AAAJ,IAAA,IAAqBe,kBAAAA;AAArB,IAAA,IAAwCC,gBAAAA;AAAxC,IAAA,IAAyD,cAAA;AAAzD,IAAA,IAAyEX,OAAAA;AACzE,IAAAA,OAAAA,GAAS,cAAA,EAAA;AACT,IAAA,eAAA,GAAkB,uBAAA,EAAA;AAClB,IAAAW,gBAAAA,GAAkB,uBAAA,EAAA;AAClB,IAAAD,kBAAAA,GAAoB,yBAAA,EAAA;AACpB,IAAA,cAAA,GAAiB,MAAM,cAAA,CAAe;AAAA,MACpC,WAAA,CAAY,QAAA,EAAU,YAAA,EAAc,oBAAA,EAAsB;AACxD,QAAA,IAAA,CAAK,QAAA,GAAW,QAAA;AAChB,QAAA,IAAA,CAAK,YAAA,GAAe,YAAA;AACpB,QAAA,IAAA,CAAK,UAAA,GAAa,KAAK,QAAA,CAAS,EAAA;AAChC,QAAA,IAAA,CAAK,QAAA,GAAW,IAAA,CAAK,QAAA,CAAS,YAAA,EAAa;AAC3C,QAAAV,OAAAA,CAAO,IAAA,CAAK,oBAAA,EAAsB,oBAAA,EAAsB,IAAI,CAAA;AAC5D,QAAA,IAAA,CAAK,UAAU,EAAC;AAChB,QAAA,IAAA,CAAK,2BAA2B,EAAC;AACjC,QAAA,IAAA,CAAK,gBAAA,GAAmB,KAAK,UAAA,IAAc,IAAA;AAE3C,QAAA,IAAI,IAAA,CAAK,cAAc,IAAA,EAAM;AAC3B,UAAA,IAAA,CAAK,aAAa,IAAA,CAAK,QAAA,CAAS,SAAA,KAAc,OAAA,GAAU,IAAIW,gBAAAA,CAAgB;AAAA,YAC1E,OAAO,IAAA,CAAK,KAAA;AAAA,YACZ,eAAe,IAAA,CAAK,aAAA;AAAA,YACpB,SAAS,IAAA,CAAK,OAAA;AAAA,YACd,MAAA,EAAQ,KAAK,QAAA,CAAS;AAAA,WACvB,CAAA,GAAI,IAAA,CAAK,SAAS,SAAA,KAAc,SAAA,GAAY,IAAID,kBAAAA,CAAkB;AAAA,YACjE,OAAO,IAAA,CAAK,KAAA;AAAA,YACZ,eAAe,IAAA,CAAK,aAAA;AAAA,YACpB,cAAc,IAAA,CAAK,YAAA;AAAA,YACnB,SAAS,IAAA,CAAK,OAAA;AAAA,YACd,MAAA,EAAQ,KAAK,QAAA,CAAS;AAAA,WACvB,CAAA,GAAI,MAAA;AAAA,QACP;AAEA,QAAA,IAAA,CAAK,QAAA,CAAS,aAAa,IAAA,CAAK,UAAA;AAChC,QAAA,IAAA,CAAK,QAAA,CAAS,SAAA,GAAY,IAAA,CAAK,UAAA,CAAW,SAAA;AAC1C,QAAA,IAAA,CAAK,KAAA,GAAQ,IAAA,CAAK,UAAA,CAAW,KAAA,CAAM,KAAK,CAAA,OAAA,KAAW;AACjD,UAAA,IAAA,CAAK,OAAA,GAAU,OAAA;AACf,UAAA,OAAO,KAAK,SAAA,CAAU,MAAA,EAAQ,KAAK,mBAAA,CAAoB,IAAA,CAAK,cAAc,CAAC,CAAA;AAAA,QAC7E,CAAC,CAAA,CAAE,IAAA,CAAK,MAAM;AACZ,UAAA,OAAO,IAAA,CAAK,UAAA,CAAW,cAAA,CAAe,IAAA,CAAK,QAAQ,CAAA;AAAA,QACrD,CAAC,CAAA,CAAE,IAAA,CAAK,MAAM;AACZ,UAAA,OAAO,IAAA,CAAK,UAAU,iBAAA,EAAmB,CAAC,KAAK,QAAA,CAAS,MAAA,EAAQ,CAAC,CAAA;AAAA,QACnE,CAAC,CAAA,CAAE,IAAA,CAAK,MAAM;AACZ,UAAA,IAAI,IAAA;AAEJ,UAAA,IAAI,OAAA,CAAQ,IAAA,GAAO,IAAA,CAAK,SAAA,GAAY,YAAY,MAAM;AACpD,YAAA,OAAO,IAAA,CAAK,UAAU,WAAA,EAAa,EAAE,CAAA,CAAE,KAAA,CAAM,CAAAb,EAAAA,KAAK;AAChD,cAAA,OAAO,IAAA,CAAK,QAAA,CAAS,MAAA,CAAO,OAAA,CAAQ,SAASA,EAAC,CAAA;AAAA,YAChD,CAAC,CAAA;AAAA,UACH,CAAA,EAAG,IAAA,CAAK,iBAAiB,CAAA,EAAG,UAAU,UAAA,EAAY;AAChD,YAAA,IAAA,CAAK,KAAA,EAAM;AAAA,UACb;AAEA,UAAA,OAAO,IAAA,CAAK,OAAA;AAAA,QACd,CAAC,CAAA;AAAA,MACH;AAAA,MAEA,YAAY,OAAA,EAAS;AACnB,QAAA,IAAI,KAAA,GAAQ,IAAA;AAEZ,QAAA,OAAOJ,mBAAkB,aAAa;AACpC,UAAA,IAAI,MAAA;AAEJ,UAAA,IAAI,IAAA,GAAO,MAAM,KAAA,CAAM,KAAA;AAEvB,UAAA,MAAA,GAAS,IAAA,CAAK,MAAA;AACd,UAAA,OAAO,MAAA,CAAO,OAAA,CAAQ,KAAA,CAAM,QAAA,CAAS,OAAA,IAAW,CAAA,QAAA,EAAW,OAAA,CAAQ,QAAA,EAAU,CAAA,CAAE,CAAA;AAAA,QACjF,CAAC,CAAA,EAAE;AAAA,MACL;AAAA,MAEA,SAAA,CAAU,SAAS,OAAA,EAAS;AAC1B,QAAA,IAAI,MAAA,GAAS,IAAA;AAEb,QAAA,OAAOA,mBAAkB,aAAa;AACpC,UAAA,IAAI,QAAA,EAAU,SAAS,IAAA,EAAM,OAAA,EAASI,IAAG,WAAA,EAAa,GAAA,EAAK,gBAAgB,WAAA,EAAa,IAAA;AAExF,UAAA,IAAI;AACF,YAAA,GAAA,GAAM,OAAA,CAAQ,QAAQ,GAAG,CAAA;AACzB,YAAA,IAAI,KAAA,GAAQ,CAAC,OAAA,CAAQ,KAAA,CAAM,CAAA,EAAG,GAAG,CAAA,EAAG,OAAA,CAAQ,KAAA,CAAM,GAAA,GAAM,CAAC,CAAC,CAAA;AAC1D,YAAA,IAAA,GAAO,MAAM,CAAC,CAAA;AACd,YAAA,IAAA,GAAO,MAAM,CAAC,CAAA;AAEd,YAAA,IAAI,SAAS,UAAA,EAAY;AACvB,cAAA,OAAO,MAAM,MAAA,CAAO,QAAA,CAAS,SAAA,CAAU,IAAA,CAAK,SAAS,CAAA,GAAI,CAAC,CAAC,IAAA,GAAO,KAAA,CAAM,CAAA;AAAA,YAC1E,CAAA,MAAA,IAAW,SAAS,mBAAA,EAAqB;AACvC,cAAA,IAAI,WAAA,GAAc,IAAA,CAAK,KAAA,CAAM,GAAG,CAAA;AAEhC,cAAA,IAAI,YAAA,GAAeS,eAAAA,CAAe,WAAA,EAAa,CAAC,CAAA;AAEhD,cAAA,WAAA,GAAc,aAAa,CAAC,CAAA;AAC5B,cAAA,cAAA,GAAiB,aAAa,CAAC,CAAA;AAC/B,cAAA,OAAA,GAAU,aAAa,CAAC,CAAA;AACxB,cAAA,QAAA,GAAW,WAAA,CAAY,MAAA,GAAS,CAAA,GAAI,CAAC,CAAC,WAAA,GAAc,KAAA,CAAA;AAEpD,cAAA,IAAI,cAAA,KAAmB,OAAO,QAAA,EAAU;AACtC,gBAAA,OAAA,GAAU,MAAM,MAAA,CAAO,QAAA,CAAS,SAAA,CAAU,QAAQ,CAAA;AAClD,gBAAA,WAAA,GAAc,QAAA,IAAY,IAAA,GAAO,QAAA,IAAY,OAAA,IAAW,CAAA,CAAA,GAAK,EAAA;AAC7D,gBAAA,OAAO,MAAM,MAAA,CAAO,OAAA,CAAQ,MAAA,CAAO,OAAA,CAAQ,MAAA,CAAO,QAAA,CAAS,OAAA,EAAQ,EAAG,CAAA,kBAAA,EAAqB,WAAW,CAAA,EAAA,EAAK,OAAO,CAAA,CAAE,CAAA;AAAA,cACtH,CAAA,MAAA,IAAW,mBAAmB,EAAA,EAAI;AAChC,gBAAA,YAAA,CAAa,MAAA,CAAO,wBAAA,CAAyB,OAAO,CAAC,CAAA;AACrD,gBAAA,OAAO,MAAA,CAAO,yBAAyB,OAAO,CAAA;AAC9C,gBAAA,OAAO,MAAA,CAAO,QAAA,CAAS,SAAA,CAAU,QAAQ,CAAA;AAAA,cAC3C,CAAA,MAAO;AACL,gBAAA,OAAO,MAAA,CAAO,wBAAA,CAAyB,OAAO,CAAA,GAAI,UAAA;AAAA,kCAElDb,mBAAkB,aAAa;AAC7B,oBAAA,IAAII,EAAAA;AAEJ,oBAAA,IAAI;AACF,sBAAA,OAAO,MAAA,CAAO,yBAAyB,OAAO,CAAA;AAC9C,sBAAA,MAAM,MAAA,CAAO,SAAA,CAAU,kBAAA,EAAoB,CAAC,cAAc,CAAC,CAAA;AAC3D,sBAAA,OAAO,MAAM,MAAA,CAAO,QAAA,CAAS,SAAA,CAAU,QAAQ,CAAA;AAAA,oBACjD,SAAS,KAAA,EAAO;AACd,sBAAAA,EAAAA,GAAI,KAAA;AACJ,sBAAA,OAAO,MAAA,CAAO,QAAA,CAAS,MAAA,CAAO,OAAA,CAAQ,SAASA,EAAC,CAAA;AAAA,oBAClD;AAAA,kBACF,CAAC,CAAA;AAAA,kBAAG;AAAA,iBAAI;AAAA,cACV;AAAA,YACF,CAAA,MAAA,IAAW,SAAS,SAAA,EAAW;AAC7B,cAAA,OAAO,MAAA,CAAO,QAAA,CAAS,MAAA,CAAO,OAAA,CAAQ,WAAW,IAAI,CAAA;AAAA,YACvD,CAAA,MAAA,IAAW,SAAS,SAAA,EAAW;AAC7B,cAAA,OAAO,MAAM,MAAA,CAAO,QAAA,CAAS,cAAA,EAAe;AAAA,YAC9C;AAAA,UACF,SAAS,KAAA,EAAO;AACd,YAAAA,EAAAA,GAAI,KAAA;AACJ,YAAA,OAAO,MAAA,CAAO,QAAA,CAAS,MAAA,CAAO,OAAA,CAAQ,SAASA,EAAC,CAAA;AAAA,UAClD;AAAA,QACF,CAAC,CAAA,EAAE;AAAA,MACL;AAAA,MAEA,eAAe,KAAA,EAAO;AACpB,QAAA,aAAA,CAAc,KAAK,SAAS,CAAA;AAE5B,QAAA,IAAI,KAAK,gBAAA,EAAkB;AACzB,UAAA,OAAO,IAAA,CAAK,UAAA,CAAW,iBAAA,CAAkB,IAAA,CAAK,QAAQ,CAAA;AAAA,QACxD,CAAA,MAAO;AACL,UAAA,OAAO,IAAA,CAAK,UAAA,CAAW,UAAA,CAAW,KAAK,CAAA;AAAA,QACzC;AAAA,MACF;AAAA,MAEA,SAAA,CAAU,MAAM,IAAA,EAAM;AACpB,QAAA,IAAI,MAAA,GAAS,IAAA;AAEb,QAAA,OAAOJ,mBAAkB,aAAa;AACpC,UAAA,IAAI,EAAE,IAAA,KAAS,MAAA,IAAU,IAAA,KAAS,iBAAA,CAAA,EAAoB;AACpD,YAAA,MAAM,MAAA,CAAO,KAAA;AAAA,UACf;AAEA,UAAA,OAAO,IAAI,MAAA,CAAO,OAAA,CAAQ,CAAC,SAAS,MAAA,KAAW;AAC7C,YAAA,IAAI,QAAA,EAAU,GAAA;AACd,YAAA,QAAA,GAAW,CAAC,KAAK,GAAA,EAAI,EAAG,OAAO,QAAQ,CAAA,CAAE,OAAO,IAAI,CAAA;AAEpD,YAAA,MAAA,CAAO,SAAS,MAAA,CAAO,OAAA,CAAQ,SAAS,CAAA,sBAAA,EAAyB,IAAI,QAAQ,QAAQ,CAAA;AAErF,YAAA,GAAA,GAAM,MAAA,CAAO,WAAW,cAAA,CAAe,IAAA,EAAM,OAAO,UAAA,EAAY,QAAA,EAAU,SAAUE,IAAAA,EAAK,OAAA,EAAS;AAChG,cAAA,IAAIA,QAAO,IAAA,EAAM;AACf,gBAAA,OAAO,OAAOA,IAAG,CAAA;AAAA,cACnB;AAEA,cAAA,OAAO,QAAQ,OAAO,CAAA;AAAA,YACxB,CAAC,CAAA;AACD,YAAA,OAAO,OAAO,UAAA,CAAW,YAAA,CAAa,IAAI,CAAA,CAAE,GAAG,GAAG,CAAA;AAAA,UACpD,CAAC,CAAA,CAAE,KAAA,CAAM,CAAAE,EAAAA,KAAK;AACZ,YAAA,IAAIA,EAAAA,CAAE,YAAY,wBAAA,EAA0B;AAC1C,cAAA,IAAI,SAAS,WAAA,EAAa;AACxB,gBAAA,OAAO,MAAA,CAAO,QAAQ,OAAA,EAAQ;AAAA,cAChC,CAAA,MAAO;AACL,gBAAA,OAAO,MAAA,CAAO,UAAU,MAAA,EAAQ,MAAA,CAAO,oBAAoB,KAAK,CAAC,CAAA,CAAE,IAAA,CAAK,MAAM;AAC5E,kBAAA,OAAO,MAAA,CAAO,SAAA,CAAU,IAAA,EAAM,IAAI,CAAA;AAAA,gBACpC,CAAC,CAAA;AAAA,cACH;AAAA,YACF,CAAA,MAAA,IAAWA,EAAAA,CAAE,OAAA,KAAY,gBAAA,EAAkB;AACzC,cAAA,OAAO,MAAA,CAAO,SAAA,CAAU,iBAAA,EAAmB,CAAC,MAAA,CAAO,QAAA,CAAS,MAAA,EAAQ,CAAC,CAAA,CAAE,IAAA,CAAK,MAAM;AAChF,gBAAA,OAAO,MAAA,CAAO,SAAA,CAAU,IAAA,EAAM,IAAI,CAAA;AAAA,cACpC,CAAC,CAAA;AAAA,YACH,CAAA,MAAO;AACL,cAAA,OAAO,MAAA,CAAO,OAAA,CAAQ,MAAA,CAAOA,EAAC,CAAA;AAAA,YAChC;AAAA,UACF,CAAC,CAAA;AAAA,QACH,CAAC,CAAA,EAAE;AAAA,MACL;AAAA,MAEA,aAAa,GAAA,EAAK;AAChB,QAAA,IAAIQ,EAAAA,EAAG,KAAK,OAAA,EAASP,EAAAA;AACrB,QAAA,OAAA,GAAU,EAAC;AAEX,QAAA,KAAKO,KAAI,CAAA,EAAG,GAAA,GAAM,IAAI,MAAA,EAAQA,EAAAA,GAAI,KAAKA,EAAAA,EAAAA,EAAK;AAC1C,UAAAP,EAAAA,GAAI,IAAIO,EAAC,CAAA;AACT,UAAA,OAAA,CAAQ,KAAKP,EAAAA,IAAK,IAAA,GAAOA,EAAAA,CAAE,QAAA,KAAa,EAAE,CAAA;AAAA,QAC5C;AAEA,QAAA,OAAO,OAAA;AAAA,MACT;AAAA,MAEA,cAAc,GAAA,EAAK;AACjB,QAAA,IAAI,KAAKT,EAAAA,EAAGC,EAAAA;AACZ,QAAA,GAAA,GAAM,EAAC;AAEP,QAAA,KAAKD,MAAK,GAAA,EAAK;AACb,UAAAC,EAAAA,GAAI,IAAID,EAAC,CAAA;AACT,UAAA,GAAA,CAAI,KAAKA,EAAAA,EAAGC,EAAAA,IAAK,OAAOA,EAAAA,CAAE,QAAA,KAAa,EAAE,CAAA;AAAA,QAC3C;AAEA,QAAA,OAAO,GAAA;AAAA,MACT;AAAA,MAEA,oBAAoB,KAAA,EAAO;AACzB,QAAA,IAAI,IAAA;AACJ,QAAA,IAAA,GAAO,KAAK,aAAA,CAAc,MAAA,CAAO,OAAO,EAAC,EAAG,KAAK,YAAA,EAAc;AAAA,UAC7D,IAAI,IAAA,CAAK,UAAA;AAAA,UACT,OAAA,EAAS,KAAK,QAAA,CAAS,OAAA;AAAA,UACvB,cAAc,IAAA,CAAK,OAAA;AAAA,UACnB,eAAe,IAAA,CAAK;AAAA,SACrB,CAAC,CAAA;AACF,QAAA,IAAA,CAAK,QAAQ,KAAA,GAAQ,CAAA,GAAI,CAAA,EAAG,IAAA,CAAK,SAAS,OAAO,CAAA;AACjD,QAAA,OAAO,IAAA;AAAA,MACT;AAAA,MAEA,YAAYsB,EAAAA,EAAG;AACb,QAAA,OAAO,CAAC,CAACA,EAAAA;AAAA,MACX;AAAA,MAEA,mBAAmBzB,QAAAA,EAAS;AAC1B,QAAA,IAAI,MAAA,GAAS,IAAA;AAEb,QAAA,OAAOM,mBAAkB,aAAa;AACpC,UAAA,MAAM,OAAO,SAAA,CAAU,iBAAA,EAAmB,MAAA,CAAO,aAAA,CAAcN,QAAO,CAAC,CAAA;AACvE,UAAA,OAAOa,OAAAA,CAAO,SAAA,CAAUb,QAAAA,EAASA,QAAAA,EAAS,OAAO,YAAY,CAAA;AAAA,QAC/D,CAAC,CAAA,EAAE;AAAA,MACL;AAAA,MAEA,WAAA,GAAc;AACZ,QAAA,OAAO,IAAA,CAAK,SAAA,CAAU,SAAA,EAAW,EAAE,CAAA;AAAA,MACrC;AAAA,MAEA,UAAA,GAAa;AACX,QAAA,OAAO,IAAA,CAAK,SAAA,CAAU,QAAA,EAAU,EAAE,CAAA;AAAA,MACpC;AAAA,MAEA,QAAA,GAAW;AACT,QAAA,OAAO,IAAA,CAAK,SAAA,CAAU,MAAA,EAAQ,EAAE,CAAA;AAAA,MAClC;AAAA,MAEA,cAAA,GAAiB;AACf,QAAA,IAAI,MAAA,GAAS,IAAA;AAEb,QAAA,OAAOM,mBAAkB,aAAa;AACpC,UAAA,OAAO,MAAA,CAAO,YAAa,MAAM,MAAA,CAAO,UAAU,aAAA,EAAe,EAAE,CAAE,CAAA;AAAA,QACvE,CAAC,CAAA,EAAE;AAAA,MACL;AAAA,MAEA,uBAAuB,IAAA,EAAM;AAC3B,QAAA,OAAO,IAAA,CAAK,SAAA,CAAU,qBAAA,EAAuB,CAAC,IAAI,CAAC,CAAA;AAAA,MACrD;AAAA,MAEA,oBAAA,GAAuB;AACrB,QAAA,OAAO,IAAA,CAAK,SAAA,CAAU,mBAAA,EAAqB,EAAE,CAAA;AAAA,MAC/C;AAAA,MAEA,UAAU,MAAA,EAAQ;AAChB,QAAA,IAAI,MAAA,GAAS,IAAA;AAEb,QAAA,OAAOA,mBAAkB,aAAa;AACpC,UAAA,OAAO,MAAA,CAAO,WAAA,CAAa,MAAM,MAAA,CAAO,SAAA,CAAU,OAAA,EAAS,MAAA,CAAO,YAAA,CAAa,CAAC,MAAM,CAAC,CAAC,CAAE,CAAA;AAAA,QAC5F,CAAC,CAAA,EAAE;AAAA,MACL;AAAA,MAEA,YAAA,CAAa,KAAA,EAAO,MAAA,EAAQ,UAAA,EAAY;AACtC,QAAA,IAAI,MAAA,GAAS,IAAA;AAEb,QAAA,OAAOA,mBAAkB,aAAa;AACpC,UAAA,IAAI,WAAW,OAAA,EAAS,IAAA;AAExB,UAAA,IAAI,KAAA,GAAQ,MAAM,MAAA,CAAO,SAAA,CAAU,UAAA,EAAY,MAAA,CAAO,YAAA,CAAa,CAAC,KAAA,EAAO,MAAA,EAAQ,UAAU,CAAC,CAAC,CAAA;AAE/F,UAAA,IAAI,KAAA,GAAQa,eAAAA,CAAe,KAAA,EAAO,CAAC,CAAA;AAEnC,UAAA,OAAA,GAAU,MAAM,CAAC,CAAA;AACjB,UAAA,IAAA,GAAO,MAAM,CAAC,CAAA;AACd,UAAA,SAAA,GAAY,MAAM,CAAC,CAAA;AACnB,UAAA,OAAO;AAAA,YACL,OAAA,EAAS,MAAA,CAAO,WAAA,CAAY,OAAO,CAAA;AAAA,YACnC,IAAA;AAAA,YACA;AAAA,WACF;AAAA,QACF,CAAC,CAAA,EAAE;AAAA,MACL;AAAA,MAEA,UAAA,CAAW,aAAa,MAAA,EAAQ;AAC9B,QAAA,IAAI,MAAA,GAAS,IAAA;AAEb,QAAA,OAAOb,mBAAkB,aAAa;AACpC,UAAA,IAAI,OAAA,CAAA,CAASI,EAAAA,CAAAA,CAAG,aAAA,CAAA,CAA2B,UAAA,CAAA,CAAY;AAEvD,UAAA,IAAI;AACF,YAAA,IAAI,KAAA,GAAQ,MAAM,MAAA,CAAO,SAAA,CAAU,QAAA,EAAU,MAAA,CAAO,YAAA,CAAa,CAAC,WAAA,EAAa,MAAM,CAAC,CAAC,CAAA;AAEvF,YAAA,IAAI,KAAA,GAAQS,eAAAA,CAAe,KAAA,EAAO,CAAC,CAAA;AAEnC,YAAA,UAAA,GAAa,MAAM,CAAC,CAAA;AACpB,YAAA,OAAA,GAAU,MAAM,CAAC,CAAA;AACjB,YAAA,QAAA,GAAW,MAAM,CAAC,CAAA;AAClB,YAAA,OAAO;AAAA,cACL,UAAA,EAAY,MAAA,CAAO,WAAA,CAAY,UAAU,CAAA;AAAA,cACzC,OAAA,EAAS,MAAA,CAAO,WAAA,CAAY,OAAO,CAAA;AAAA,cACnC;AAAA,aACF;AAAA,UACF,SAAS,KAAA,EAAO;AACd,YAAAT,EAAAA,GAAI,KAAA;AAEJ,YAAA,IAAIA,EAAAA,CAAE,OAAA,CAAQ,OAAA,CAAQ,YAAY,MAAM,CAAA,EAAG;AACzC,cAAA,IAAI,gBAAA,GAAmBA,EAAAA,CAAE,OAAA,CAAQ,KAAA,CAAM,GAAG,CAAA;AAE1C,cAAA,IAAI,iBAAA,GAAoBS,eAAAA,CAAe,gBAAA,EAAkB,CAAC,CAAA;AAE1D,cAAa,kBAAkB,CAAC,CAAA;AAChC,cAAA,MAAA,GAAS,kBAAkB,CAAC,CAAA;AAC5B,cAAA,aAAA,GAAgB,kBAAkB,CAAC,CAAA;AACnC,cAAA,MAAM,IAAI,eAAA,CAAgB,CAAA,2CAAA,EAA8C,MAAM,CAAA,gDAAA,EAAmD,aAAa,CAAA,CAAE,CAAA;AAAA,YAClJ,CAAA,MAAO;AACL,cAAA,MAAMT,EAAAA;AAAA,YACR;AAAA,UACF;AAAA,QACF,CAAC,CAAA,EAAE;AAAA,MACL;AAAA,MAEA,QAAA,CAAS,OAAO,MAAA,EAAQ;AACtB,QAAA,IAAI,MAAA,GAAS,IAAA;AAEb,QAAA,OAAOJ,mBAAkB,aAAa;AACpC,UAAA,IAAI,OAAA;AACJ,UAAA,OAAA,GAAU,MAAM,OAAO,SAAA,CAAU,MAAA,EAAQ,OAAO,YAAA,CAAa,CAAC,KAAK,CAAC,CAAC,CAAA;AACrE,UAAA,OAAO;AAAA,YACL;AAAA,WACF;AAAA,QACF,CAAC,CAAA,EAAE;AAAA,MACL;AAAA,KAEF;AACA,IAAAF,QAAO,OAAA,GAAU,cAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC/VjB,IAAA,cAAA,GAAA,UAAA,CAAA;AAAA,EAAA,kFAAA,CAAAH,UAAAG,OAAAA,EAAA;AAEA,IAAA,IAAI,eAAA;AAAJ,IAAA,IAAqB,MAAA;AACrB,IAAA,eAAA,GAAkB,uBAAA,EAAA;AAClB,IAAA,MAAA,GAAS,MAAM,MAAA,CAAO;AAAA,MACpB,YAAY,OAAA,EAAS;AACnB,QAAA,IAAA,CAAK,MAAA,GAAS,OAAA;AACd,QAAA,IAAA,CAAK,QAAQ,EAAC;AACd,QAAA,IAAA,CAAK,MAAA,GAAS,IAAA,CAAK,MAAA,CAAO,GAAA,CAAI,WAAY;AACxC,UAAA,OAAO,CAAA;AAAA,QACT,CAAC,CAAA;AAAA,MACH;AAAA,MAEA,KAAK,EAAA,EAAI;AACP,QAAA,IAAI,OAAA,EAAS,IAAA;AACb,QAAA,OAAA,GAAU,IAAA,CAAK,MAAM,EAAE,CAAA;AACvB,QAAA,IAAA,GAAO,OAAA,GAAU,CAAA;AAEjB,QAAA,IAAI,OAAA,IAAW,IAAA,IAAQ,IAAA,GAAO,IAAA,CAAK,OAAO,MAAA,EAAQ;AAChD,UAAA,IAAA,CAAK,OAAO,OAAO,CAAA,EAAA;AACnB,UAAA,IAAA,CAAK,OAAO,IAAI,CAAA,EAAA;AAChB,UAAA,OAAO,IAAA,CAAK,MAAM,EAAE,CAAA,EAAA;AAAA,QACtB,CAAA,MAAA,IAAW,WAAW,IAAA,EAAM;AAC1B,UAAA,IAAA,CAAK,OAAO,OAAO,CAAA,EAAA;AACnB,UAAA,OAAO,OAAO,IAAA,CAAK,KAAA,CAAM,EAAE,CAAA;AAAA,QAC7B;AAAA,MACF;AAAA,MAEA,MAAM,EAAA,EAAI;AACR,QAAA,IAAI,OAAA;AACJ,QAAA,OAAA,GAAU,CAAA;AACV,QAAA,IAAA,CAAK,KAAA,CAAM,EAAE,CAAA,GAAI,OAAA;AACjB,QAAA,OAAO,IAAA,CAAK,OAAO,OAAO,CAAA,EAAA;AAAA,MAC5B;AAAA,MAEA,OAAO,EAAA,EAAI;AACT,QAAA,IAAI,OAAA;AACJ,QAAA,OAAA,GAAU,IAAA,CAAK,MAAM,EAAE,CAAA;AAEvB,QAAA,IAAI,WAAW,IAAA,EAAM;AACnB,UAAA,IAAA,CAAK,OAAO,OAAO,CAAA,EAAA;AACnB,UAAA,OAAO,IAAA,CAAK,MAAM,EAAE,CAAA;AAAA,QACtB;AAEA,QAAA,OAAO,OAAA,IAAW,IAAA;AAAA,MACpB;AAAA,MAEA,UAAU,EAAA,EAAI;AACZ,QAAA,IAAI,GAAA;AACJ,QAAA,OAAA,CAAQ,GAAA,GAAM,KAAK,MAAA,CAAO,IAAA,CAAK,MAAM,EAAE,CAAC,CAAA,KAAM,IAAA,GAAO,GAAA,GAAM,IAAA;AAAA,MAC7D;AAAA,MAEA,WAAW,MAAA,EAAQ;AACjB,QAAA,IAAIF,EAAAA,EAAG,GAAA,EAAK,GAAA,EAAK,OAAA,EAASC,EAAAA;AAE1B,QAAA,IAAI,UAAU,IAAA,EAAM;AAClB,UAAA,GAAA,GAAM,IAAA,CAAK,MAAA,CAAO,OAAA,CAAQ,MAAM,CAAA;AAEhC,UAAA,IAAI,MAAM,CAAA,EAAG;AACX,YAAA,MAAM,IAAI,gBAAgB,CAAA,sBAAA,EAAyB,IAAA,CAAK,OAAO,IAAA,CAAK,IAAI,CAAC,CAAA,CAAE,CAAA;AAAA,UAC7E;AAEA,UAAA,GAAA,GAAM,IAAA,CAAK,KAAA;AACX,UAAA,OAAA,GAAU,EAAC;AAEX,UAAA,KAAKD,MAAK,GAAA,EAAK;AACb,YAAAC,EAAAA,GAAI,IAAID,EAAC,CAAA;AAET,YAAA,IAAIC,OAAM,GAAA,EAAK;AACb,cAAA,OAAA,CAAQ,KAAKD,EAAC,CAAA;AAAA,YAChB;AAAA,UACF;AAEA,UAAA,OAAO,OAAA;AAAA,QACT,CAAA,MAAO;AACL,UAAA,OAAO,MAAA,CAAO,IAAA,CAAK,IAAA,CAAK,KAAK,CAAA;AAAA,QAC/B;AAAA,MACF;AAAA,MAEA,YAAA,GAAe;AACb,QAAA,OAAO,KAAK,MAAA,CAAO,MAAA,CAAO,CAAC,GAAA,EAAKC,IAAGe,EAAAA,KAAM;AACvC,UAAA,GAAA,CAAI,IAAA,CAAK,MAAA,CAAOA,EAAC,CAAC,CAAA,GAAIf,EAAAA;AACtB,UAAA,OAAO,GAAA;AAAA,QACT,CAAA,EAAG,EAAE,CAAA;AAAA,MACP;AAAA,KAEF;AACA,IAAAC,QAAO,OAAA,GAAU,MAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACvFjB,IAAA,YAAA,GAAA,UAAA,CAAA;AAAA,EAAA,gFAAA,CAAAH,UAAAG,OAAAA,EAAA;AAEA,IAAA,SAASC,oBAAmB,GAAA,EAAK,OAAA,EAAS,QAAQ,KAAA,EAAO,MAAA,EAAQ,KAAK,GAAA,EAAK;AAAE,MAAA,IAAI;AAAE,QAAA,IAAI,IAAA,GAAO,GAAA,CAAI,GAAG,CAAA,CAAE,GAAG,CAAA;AAAG,QAAA,IAAI,QAAQ,IAAA,CAAK,KAAA;AAAA,MAAO,SAAS,KAAA,EAAO;AAAE,QAAA,MAAA,CAAO,KAAK,CAAA;AAAG,QAAA;AAAA,MAAQ;AAAE,MAAA,IAAI,KAAK,IAAA,EAAM;AAAE,QAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,MAAG,CAAA,MAAO;AAAE,QAAA,OAAA,CAAQ,OAAA,CAAQ,KAAK,CAAA,CAAE,IAAA,CAAK,OAAO,MAAM,CAAA;AAAA,MAAG;AAAA,IAAE;AAExQ,IAAA,SAASC,mBAAkB,EAAA,EAAI;AAAE,MAAA,OAAO,WAAY;AAAE,QAAA,IAAIC,KAAAA,GAAO,MAAM,IAAA,GAAO,SAAA;AAAW,QAAA,OAAO,IAAI,OAAA,CAAQ,SAAU,OAAA,EAAS,MAAA,EAAQ;AAAE,UAAA,IAAI,GAAA,GAAM,EAAA,CAAG,KAAA,CAAMA,KAAAA,EAAM,IAAI,CAAA;AAAG,UAAA,SAAS,MAAM,KAAA,EAAO;AAAE,YAAAF,oBAAmB,GAAA,EAAK,OAAA,EAAS,QAAQ,KAAA,EAAO,MAAA,EAAQ,QAAQ,KAAK,CAAA;AAAA,UAAG;AAAE,UAAA,SAAS,OAAOG,IAAAA,EAAK;AAAE,YAAAH,oBAAmB,GAAA,EAAK,OAAA,EAAS,QAAQ,KAAA,EAAO,MAAA,EAAQ,SAASG,IAAG,CAAA;AAAA,UAAG;AAAE,UAAA,KAAA,CAAM,MAAS,CAAA;AAAA,QAAG,CAAC,CAAA;AAAA,MAAG,CAAA;AAAA,IAAG;AAEpY,IAAA,IAAI,MAAA;AAAJ,IAAA,IAAY,IAAA;AACZ,IAAA,MAAA,GAAS,cAAA,EAAA;AACT,IAAA,IAAA,GAAO,MAAM,IAAA,CAAK;AAAA,MAChB,WAAA,CAAY,MAAMM,QAAAA,EAAS;AACzB,QAAA,IAAA,CAAK,QAAA,GAAW,IAAA,CAAK,QAAA,CAAS,IAAA,CAAK,IAAI,CAAA;AACvC,QAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AACZ,QAAA,IAAA,CAAK,OAAA,GAAUA,QAAAA;AACf,QAAA,IAAA,CAAK,QAAA,GAAW,CAAA;AAChB,QAAA,IAAA,CAAK,MAAA,GAAS,IAAI,MAAA,EAAO;AAAA,MAC3B;AAAA,MAEA,OAAA,GAAU;AACR,QAAA,OAAO,IAAA,CAAK,OAAO,MAAA,KAAW,CAAA;AAAA,MAChC;AAAA,MAEA,SAAA,GAAY;AACV,QAAA,IAAI,KAAA,GAAQ,IAAA;AAEZ,QAAA,OAAOR,mBAAkB,aAAa;AACpC,UAAA,IAAI,IAAA,EAAM,EAAA,EAAI,KAAA,EAAO,MAAA,EAAQ,SAAS,QAAA,EAAU,IAAA;AAEhD,UAAA,IAAI,MAAM,QAAA,GAAW,CAAA,IAAK,KAAA,CAAM,MAAA,CAAO,SAAS,CAAA,EAAG;AACjD,YAAA,KAAA,CAAM,QAAA,EAAA;AAEN,YAAA,IAAI,kBAAA,GAAqB,KAAA,CAAM,MAAA,CAAO,KAAA,EAAM;AAE5C,YAAA,IAAA,GAAO,kBAAA,CAAmB,IAAA;AAC1B,YAAA,IAAA,GAAO,kBAAA,CAAmB,IAAA;AAC1B,YAAA,OAAA,GAAU,kBAAA,CAAmB,OAAA;AAC7B,YAAA,MAAA,GAAS,kBAAA,CAAmB,MAAA;AAC5B,YAAA,EAAA,GAAK,MAAMA,mBAAkB,aAAa;AACxC,cAAA,IAAI;AACF,gBAAA,QAAA,GAAW,MAAM,IAAA,CAAK,GAAG,IAAI,CAAA;AAC7B,gBAAA,OAAO,WAAY;AACjB,kBAAA,OAAO,QAAQ,QAAQ,CAAA;AAAA,gBACzB,CAAA;AAAA,cACF,SAAS,MAAA,EAAQ;AACf,gBAAA,KAAA,GAAQ,MAAA;AACR,gBAAA,OAAO,WAAY;AACjB,kBAAA,OAAO,OAAO,KAAK,CAAA;AAAA,gBACrB,CAAA;AAAA,cACF;AAAA,YACF,CAAC,CAAA,EAAE;AACH,YAAA,KAAA,CAAM,QAAA,EAAA;AAEN,YAAA,KAAA,CAAM,SAAA,EAAU;AAEhB,YAAA,OAAO,EAAA,EAAG;AAAA,UACZ;AAAA,QACF,CAAC,CAAA,EAAE;AAAA,MACL;AAAA,MAEA,QAAA,CAAS,SAAS,IAAA,EAAM;AACtB,QAAA,IAAI,SAAS,MAAA,EAAQ,OAAA;AACrB,QAAA,OAAA,GAAU,MAAA,GAAS,IAAA;AACnB,QAAA,OAAA,GAAU,IAAI,IAAA,CAAK,OAAA,CAAQ,SAAU,UAAU,OAAA,EAAS;AACtD,UAAA,OAAA,GAAU,QAAA;AACV,UAAA,OAAO,MAAA,GAAS,OAAA;AAAA,QAClB,CAAC,CAAA;AAED,QAAA,IAAA,CAAK,OAAO,IAAA,CAAK;AAAA,UACf,IAAA;AAAA,UACA,IAAA;AAAA,UACA,OAAA;AAAA,UACA;AAAA,SACD,CAAA;AAED,QAAA,IAAA,CAAK,SAAA,EAAU;AAEf,QAAA,OAAO,OAAA;AAAA,MACT;AAAA,KAEF;AACA,IAAAF,QAAO,OAAA,GAAU,IAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC/EjB,IAAA,eAAA,GAAA,UAAA,CAAA;AAAA,EAAA,qFAAA,CAAAH,UAAAG,OAAAA,EAAA;AAAA,IAAAA,OAAAA,CAAA,OAAA,GAAA,EAAC,OAAA,EAAU,QAAA,EAAQ;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACAnB,IAAA,aAAA,GAAA,UAAA,CAAA;AAAA,EAAA,iFAAA,CAAAH,UAAAG,OAAAA,EAAA;AAEA,IAAA,SAASe,eAAAA,CAAe,KAAKD,EAAAA,EAAG;AAAE,MAAA,OAAOE,iBAAgB,GAAG,CAAA,IAAKC,uBAAsB,GAAA,EAAKH,EAAC,KAAKI,iBAAAA,EAAiB;AAAA,IAAG;AAEtH,IAAA,SAASA,iBAAAA,GAAmB;AAAE,MAAA,MAAM,IAAI,UAAU,sDAAsD,CAAA;AAAA,IAAG;AAE3G,IAAA,SAASD,sBAAAA,CAAsB,KAAKH,EAAAA,EAAG;AAAE,MAAA,IAAI,OAAO,EAAC;AAAG,MAAA,IAAI,EAAA,GAAK,IAAA;AAAM,MAAA,IAAI,EAAA,GAAK,KAAA;AAAO,MAAA,IAAI,EAAA,GAAK,MAAA;AAAW,MAAA,IAAI;AAAE,QAAA,KAAA,IAAS,EAAA,GAAK,GAAA,CAAI,MAAA,CAAO,QAAQ,GAAE,EAAG,EAAA,EAAI,EAAE,EAAA,GAAA,CAAM,KAAK,EAAA,CAAG,IAAA,EAAK,EAAG,IAAA,CAAA,EAAO,KAAK,IAAA,EAAM;AAAE,UAAA,IAAA,CAAK,IAAA,CAAK,GAAG,KAAK,CAAA;AAAG,UAAA,IAAIA,EAAAA,IAAK,IAAA,CAAK,MAAA,KAAWA,EAAAA,EAAG;AAAA,QAAO;AAAA,MAAE,SAASV,IAAAA,EAAK;AAAE,QAAA,EAAA,GAAK,IAAA;AAAM,QAAA,EAAA,GAAKA,IAAAA;AAAA,MAAK,CAAA,SAAE;AAAU,QAAA,IAAI;AAAE,UAAA,IAAI,CAAC,MAAM,EAAA,CAAG,QAAQ,KAAK,IAAA,EAAM,EAAA,CAAG,QAAQ,CAAA,EAAE;AAAA,QAAG,CAAA,SAAE;AAAU,UAAA,IAAI,IAAI,MAAM,EAAA;AAAA,QAAI;AAAA,MAAE;AAAE,MAAA,OAAO,IAAA;AAAA,IAAM;AAExZ,IAAA,SAASY,iBAAgB,GAAA,EAAK;AAAE,MAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,GAAG,CAAA,EAAG,OAAO,GAAA;AAAA,IAAK;AAEpE,IAAA,SAASf,oBAAmB,GAAA,EAAK,OAAA,EAAS,QAAQ,KAAA,EAAO,MAAA,EAAQ,KAAK,GAAA,EAAK;AAAE,MAAA,IAAI;AAAE,QAAA,IAAI,IAAA,GAAO,GAAA,CAAI,GAAG,CAAA,CAAE,GAAG,CAAA;AAAG,QAAA,IAAI,QAAQ,IAAA,CAAK,KAAA;AAAA,MAAO,SAAS,KAAA,EAAO;AAAE,QAAA,MAAA,CAAO,KAAK,CAAA;AAAG,QAAA;AAAA,MAAQ;AAAE,MAAA,IAAI,KAAK,IAAA,EAAM;AAAE,QAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,MAAG,CAAA,MAAO;AAAE,QAAA,OAAA,CAAQ,OAAA,CAAQ,KAAK,CAAA,CAAE,IAAA,CAAK,OAAO,MAAM,CAAA;AAAA,MAAG;AAAA,IAAE;AAExQ,IAAA,SAASC,mBAAkB,EAAA,EAAI;AAAE,MAAA,OAAO,WAAY;AAAE,QAAA,IAAIC,KAAAA,GAAO,MAAM,IAAA,GAAO,SAAA;AAAW,QAAA,OAAO,IAAI,OAAA,CAAQ,SAAU,OAAA,EAAS,MAAA,EAAQ;AAAE,UAAA,IAAI,GAAA,GAAM,EAAA,CAAG,KAAA,CAAMA,KAAAA,EAAM,IAAI,CAAA;AAAG,UAAA,SAAS,MAAM,KAAA,EAAO;AAAE,YAAAF,oBAAmB,GAAA,EAAK,OAAA,EAAS,QAAQ,KAAA,EAAO,MAAA,EAAQ,QAAQ,KAAK,CAAA;AAAA,UAAG;AAAE,UAAA,SAAS,OAAOG,IAAAA,EAAK;AAAE,YAAAH,oBAAmB,GAAA,EAAK,OAAA,EAAS,QAAQ,KAAA,EAAO,MAAA,EAAQ,SAASG,IAAG,CAAA;AAAA,UAAG;AAAE,UAAA,KAAA,CAAM,MAAS,CAAA;AAAA,QAAG,CAAC,CAAA;AAAA,MAAG,CAAA;AAAA,IAAG;AAEpY,IAAA,IAAIC,OAAAA;AAAJ,IAAA,IAAY,KAAA;AAAZ,IAAA,IAAmBc,kBAAAA;AAAnB,IAAA,IAAsCC,gBAAAA;AAAtC,IAAA,IAAuDE,QAAAA;AAAvD,IAAA,IAAgEb,OAAAA;AAChE,IAAAA,OAAAA,GAAS,cAAA,EAAA;AACT,IAAAJ,OAAAA,GAAS,cAAA,EAAA;AACT,IAAAe,gBAAAA,GAAkB,uBAAA,EAAA;AAClB,IAAAD,kBAAAA,GAAoB,yBAAA,EAAA;AACpB,IAAAG,QAAAA,GAAU,eAAA,EAAA;AAEV,IAAA,KAAA,GAAQ,WAAY;AAAA,MAClB,MAAMC,MAAAA,CAAM;AAAA,QACV,WAAA,CAAY,cAAA,GAAiB,EAAC,EAAG;AAC/B,UAAA,IAAA,CAAK,SAAA,GAAY,IAAA,CAAK,SAAA,CAAU,IAAA,CAAK,IAAI,CAAA;AACzC,UAAA,IAAA,CAAK,cAAA,GAAiB,cAAA;AACtB,UAAAd,QAAO,IAAA,CAAK,IAAA,CAAK,cAAA,EAAgB,IAAA,CAAK,UAAU,IAAI,CAAA;AACpD,UAAA,IAAA,CAAK,MAAA,GAAS,IAAIJ,OAAAA,CAAO,IAAI,CAAA;AAC7B,UAAA,IAAA,CAAK,YAAY,EAAC;AAClB,UAAA,IAAA,CAAK,UAAA,GAAa,kBAAA,EAAA;AAElB,UAAA,IAAA,CAAK,iBAAA,EAAkB;AAEvB,UAAA,IAAA,CAAK,gBAAA,GAAmB,KAAK,UAAA,IAAc,IAAA;AAE3C,UAAA,IAAI,IAAA,CAAK,cAAc,IAAA,EAAM;AAC3B,YAAA,IAAI,IAAA,CAAK,cAAA,CAAe,SAAA,KAAc,OAAA,EAAS;AAC7C,cAAA,IAAA,CAAK,UAAA,GAAa,IAAIe,gBAAAA,CAAgB,MAAA,CAAO,OAAO,EAAC,EAAG,KAAK,cAAA,EAAgB;AAAA,gBAC3E,QAAQ,IAAA,CAAK;AAAA,eACd,CAAC,CAAA;AAAA,YACJ,CAAA,MAAA,IAAW,IAAA,CAAK,cAAA,CAAe,SAAA,KAAc,SAAA,EAAW;AACtD,cAAA,IAAA,CAAK,UAAA,GAAa,IAAID,kBAAAA,CAAkB,MAAA,CAAO,OAAO,EAAC,EAAG,KAAK,cAAA,EAAgB;AAAA,gBAC7E,QAAQ,IAAA,CAAK;AAAA,eACd,CAAC,CAAA;AAAA,YACJ;AAAA,UACF;AAAA,QACF;AAAA,QAEA,GAAA,CAAI,MAAM,EAAA,EAAI;AACZ,UAAA,IAAI,GAAA;AACJ,UAAA,OAAA,CAAQ,MAAM,IAAA,CAAK,SAAA,CAAU,GAAG,CAAA,KAAM,IAAA,GAAO,OAAO,MAAM;AACxD,YAAA,IAAI,OAAA;AACJ,YAAA,OAAA,GAAU,IAAA,CAAK,SAAA,CAAU,GAAG,CAAA,GAAI,IAAI,KAAK,UAAA,CAAW,MAAA,CAAO,MAAA,CAAO,IAAA,CAAK,cAAA,EAAgB;AAAA,cACrF,EAAA,EAAI,CAAA,EAAG,IAAA,CAAK,EAAE,IAAI,GAAG,CAAA,CAAA;AAAA,cACrB,SAAS,IAAA,CAAK,OAAA;AAAA,cACd,YAAY,IAAA,CAAK;AAAA,aAClB,CAAC,CAAA;AACF,YAAA,IAAA,CAAK,MAAA,CAAO,OAAA,CAAQ,SAAA,EAAW,OAAA,EAAS,GAAG,CAAA;AAC3C,YAAA,OAAO,OAAA;AAAA,UACT,CAAA,GAAG;AAAA,QACL;AAAA,QAEA,SAAA,CAAU,MAAM,EAAA,EAAI;AAClB,UAAA,IAAI,KAAA,GAAQ,IAAA;AAEZ,UAAA,OAAOjB,mBAAkB,aAAa;AACpC,YAAA,IAAI,OAAA,EAAS,QAAA;AACb,YAAA,QAAA,GAAW,KAAA,CAAM,UAAU,GAAG,CAAA;AAE9B,YAAA,IAAI,MAAM,UAAA,EAAY;AACpB,cAAA,OAAA,GAAU,MAAM,KAAA,CAAM,UAAA,CAAW,cAAA,CAAe,CAAC,OAAO,GAAGoB,QAAAA,CAAQ,OAAA,CAAQ,CAAA,EAAG,MAAM,EAAE,CAAA,CAAA,EAAI,GAAG,CAAA,CAAE,CAAC,CAAC,CAAA;AAAA,YACnG;AAEA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAO,KAAA,CAAM,UAAU,GAAG,CAAA;AAC1B,cAAA,MAAM,SAAS,UAAA,EAAW;AAAA,YAC5B;AAEA,YAAA,OAAO,QAAA,IAAY,QAAQ,OAAA,GAAU,CAAA;AAAA,UACvC,CAAC,CAAA,EAAE;AAAA,QACL;AAAA,QAEA,QAAA,GAAW;AACT,UAAA,IAAIxB,EAAAA,EAAG,KAAK,OAAA,EAASC,EAAAA;AACrB,UAAA,GAAA,GAAM,IAAA,CAAK,SAAA;AACX,UAAA,OAAA,GAAU,EAAC;AAEX,UAAA,KAAKD,MAAK,GAAA,EAAK;AACb,YAAAC,EAAAA,GAAI,IAAID,EAAC,CAAA;AACT,YAAA,OAAA,CAAQ,IAAA,CAAK;AAAA,cACX,GAAA,EAAKA,EAAAA;AAAA,cACL,OAAA,EAASC;AAAA,aACV,CAAA;AAAA,UACH;AAEA,UAAA,OAAO,OAAA;AAAA,QACT;AAAA,QAEA,IAAA,GAAO;AACL,UAAA,OAAO,MAAA,CAAO,IAAA,CAAK,IAAA,CAAK,SAAS,CAAA;AAAA,QACnC;AAAA,QAEA,WAAA,GAAc;AACZ,UAAA,IAAI,MAAA,GAAS,IAAA;AAEb,UAAA,OAAOG,mBAAkB,aAAa;AACpC,YAAA,IAAI,QAAQ,GAAA,EAAK,KAAA,EAAOY,IAAGhB,EAAAA,EAAG,IAAA,EAAM,KAAK,IAAA,EAAM,KAAA;AAE/C,YAAA,IAAI,MAAA,CAAO,cAAc,IAAA,EAAM;AAC7B,cAAA,OAAO,MAAA,CAAO,OAAA,CAAQ,OAAA,CAAQ,MAAA,CAAO,MAAM,CAAA;AAAA,YAC7C;AAEA,YAAA,IAAA,GAAO,EAAC;AACR,YAAA,MAAA,GAAS,IAAA;AACT,YAAA,KAAA,GAAQ,CAAA,EAAA,EAAK,MAAA,CAAO,EAAE,CAAA,CAAA,CAAA,CAAI,MAAA;AAC1B,YAAA,GAAA,GAAM,WAAA,CAAY,MAAA;AAElB,YAAA,OAAO,WAAW,CAAA,EAAG;AACnB,cAAA,IAAI,OAAO,MAAM,MAAA,CAAO,WAAW,cAAA,CAAe,CAAC,QAAQ,MAAA,IAAU,IAAA,GAAO,MAAA,GAAS,CAAA,EAAG,SAAS,CAAA,EAAA,EAAK,MAAA,CAAO,EAAE,CAAA,WAAA,CAAA,EAAe,OAAA,EAAS,GAAK,CAAC,CAAA;AAE7I,cAAA,IAAI,KAAA,GAAQiB,eAAAA,CAAe,IAAA,EAAM,CAAC,CAAA;AAElC,cAAA,IAAA,GAAO,MAAM,CAAC,CAAA;AACd,cAAA,KAAA,GAAQ,MAAM,CAAC,CAAA;AACf,cAAA,MAAA,GAAS,CAAC,CAAC,IAAA;AAEX,cAAA,KAAKD,KAAI,CAAA,EAAG,GAAA,GAAM,MAAM,MAAA,EAAQA,EAAAA,GAAI,KAAKA,EAAAA,EAAAA,EAAK;AAC5C,gBAAAhB,EAAAA,GAAI,MAAMgB,EAAC,CAAA;AACX,gBAAA,IAAA,CAAK,KAAKhB,EAAAA,CAAE,KAAA,CAAM,KAAA,EAAO,CAAC,GAAG,CAAC,CAAA;AAAA,cAChC;AAAA,YACF;AAEA,YAAA,OAAO,IAAA;AAAA,UACT,CAAC,CAAA,EAAE;AAAA,QACL;AAAA,QAEA,iBAAA,GAAoB;AAClB,UAAA,IAAI,MAAA,GAAS,IAAA;AAEb,UAAA,IAAI,IAAA;AACJ,UAAA,aAAA,CAAc,KAAK,QAAQ,CAAA;AAC3B,UAAA,OAAO,OAAA,CAAQ,IAAA,GAAO,IAAA,CAAK,QAAA,GAAW,WAAA;AAAA,4BAEtCI,mBAAkB,aAAa;AAC7B,cAAA,IAAII,EAAAA,EAAGR,EAAAA,EAAG,GAAA,EAAK,OAAA,EAASc,KAAAA,EAAMb,EAAAA;AAC9B,cAAAa,KAAAA,GAAO,KAAK,GAAA,EAAI;AAChB,cAAA,GAAA,GAAM,MAAA,CAAO,SAAA;AACb,cAAA,OAAA,GAAU,EAAC;AAEX,cAAA,KAAKd,MAAK,GAAA,EAAK;AACb,gBAAAC,EAAAA,GAAI,IAAID,EAAC,CAAA;AAET,gBAAA,IAAI;AACF,kBAAA,IAAI,MAAMC,EAAAA,CAAE,MAAA,CAAO,cAAA,CAAea,KAAI,CAAA,EAAG;AACvC,oBAAA,OAAA,CAAQ,IAAA,CAAK,MAAA,CAAO,SAAA,CAAUd,EAAC,CAAC,CAAA;AAAA,kBAClC,CAAA,MAAO;AACL,oBAAA,OAAA,CAAQ,KAAK,KAAA,CAAM,CAAA;AAAA,kBACrB;AAAA,gBACF,SAAS,KAAA,EAAO;AACd,kBAAAQ,EAAAA,GAAI,KAAA;AACJ,kBAAA,OAAA,CAAQ,KAAKP,EAAAA,CAAE,MAAA,CAAO,OAAA,CAAQ,OAAA,EAASO,EAAC,CAAC,CAAA;AAAA,gBAC3C;AAAA,cACF;AAEA,cAAA,OAAO,OAAA;AAAA,YACT,CAAC,CAAA;AAAA,YAAG,KAAK,OAAA,GAAU;AAAA,WAAC,EAAG,KAAA,KAAU,UAAA,GAAa,IAAA,CAAK,OAAM,GAAI,MAAA;AAAA,QAC/D;AAAA,QAEA,cAAA,CAAeV,QAAAA,GAAU,EAAC,EAAG;AAC3B,UAAAa,OAAAA,CAAO,SAAA,CAAUb,QAAAA,EAAS,IAAA,CAAK,UAAU,IAAI,CAAA;AAC7C,UAAAa,OAAAA,CAAO,SAAA,CAAUb,QAAAA,EAASA,QAAAA,EAAS,KAAK,cAAc,CAAA;AAEtD,UAAA,IAAIA,QAAAA,CAAQ,WAAW,IAAA,EAAM;AAC3B,YAAA,OAAO,KAAK,iBAAA,EAAkB;AAAA,UAChC;AAAA,QACF;AAAA,QAEA,UAAA,CAAW,QAAQ,IAAA,EAAM;AACvB,UAAA,IAAI,GAAA;AAEJ,UAAA,IAAI,CAAC,KAAK,gBAAA,EAAkB;AAC1B,YAAA,OAAA,CAAQ,MAAM,IAAA,CAAK,UAAA,KAAe,OAAO,GAAA,CAAI,UAAA,CAAW,KAAK,CAAA,GAAI,MAAA;AAAA,UACnE;AAAA,QACF;AAAA;AAKF,MAAA2B,MAAAA,CAAM,UAAU,QAAA,GAAW;AAAA,QACzB,OAAA,EAAS,MAAO,EAAA,GAAK,CAAA;AAAA,QACrB,UAAA,EAAY,IAAA;AAAA,QACZ,OAAA;AAAA,QACA,EAAA,EAAI;AAAA,OACN;AACA,MAAA,OAAOA,MAAAA;AAAA,IACT,CAAA,CAAE,KAAK,MAAM,CAAA;AAEb,IAAAvB,QAAO,OAAA,GAAU,KAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACrMjB,IAAA,eAAA,GAAA,UAAA,CAAA;AAAA,EAAA,mFAAA,CAAAH,UAAAG,OAAAA,EAAA;AAEA,IAAA,IAAI,OAAA;AAAJ,IAAA,IAAaK,OAAAA;AAAb,IAAA,IAAqBI,OAAAA;AACrB,IAAAA,OAAAA,GAAS,cAAA,EAAA;AACT,IAAAJ,OAAAA,GAAS,cAAA,EAAA;AAET,IAAA,OAAA,GAAU,WAAY;AAAA,MACpB,MAAMmB,QAAAA,CAAQ;AAAA,QACZ,WAAA,CAAY5B,QAAAA,GAAU,EAAC,EAAG;AACxB,UAAA,IAAA,CAAK,OAAA,GAAUA,QAAAA;AACf,UAAAa,QAAO,IAAA,CAAK,IAAA,CAAK,OAAA,EAAS,IAAA,CAAK,UAAU,IAAI,CAAA;AAC7C,UAAA,IAAA,CAAK,MAAA,GAAS,IAAIJ,OAAAA,CAAO,IAAI,CAAA;AAC7B,UAAA,IAAA,CAAK,OAAO,EAAC;AAEb,UAAA,IAAA,CAAK,aAAA,EAAc;AAEnB,UAAA,IAAA,CAAK,UAAA,GAAa,KAAK,GAAA,EAAI;AAAA,QAC7B;AAAA,QAEA,aAAA,GAAgB;AACd,UAAA,OAAO,KAAK,QAAA,GAAW,IAAI,KAAK,OAAA,CAAQ,CAAC,KAAK,GAAA,KAAQ;AACpD,YAAA,OAAO,KAAK,QAAA,GAAW,GAAA;AAAA,UACzB,CAAC,CAAA;AAAA,QACH;AAAA,QAEA,MAAA,GAAS;AACP,UAAA,YAAA,CAAa,KAAK,QAAQ,CAAA;AAC1B,UAAA,IAAA,CAAK,UAAA,GAAa,KAAK,GAAA,EAAI;AAE3B,UAAA,IAAA,CAAK,QAAA,EAAS;AAEd,UAAA,IAAA,CAAK,MAAA,CAAO,OAAA,CAAQ,OAAA,EAAS,IAAA,CAAK,IAAI,CAAA;AACtC,UAAA,IAAA,CAAK,OAAO,EAAC;AACb,UAAA,OAAO,KAAK,aAAA,EAAc;AAAA,QAC5B;AAAA,QAEA,IAAI,IAAA,EAAM;AACR,UAAA,IAAI,GAAA;AAEJ,UAAA,IAAA,CAAK,IAAA,CAAK,KAAK,IAAI,CAAA;AAEnB,UAAA,GAAA,GAAM,IAAA,CAAK,QAAA;AAEX,UAAA,IAAI,IAAA,CAAK,IAAA,CAAK,MAAA,KAAW,IAAA,CAAK,OAAA,EAAS;AACrC,YAAA,IAAA,CAAK,MAAA,EAAO;AAAA,UACd,WAAW,IAAA,CAAK,OAAA,IAAW,QAAQ,IAAA,CAAK,IAAA,CAAK,WAAW,CAAA,EAAG;AACzD,YAAA,IAAA,CAAK,QAAA,GAAW,WAAW,MAAM;AAC/B,cAAA,OAAO,KAAK,MAAA,EAAO;AAAA,YACrB,CAAA,EAAG,KAAK,OAAO,CAAA;AAAA,UACjB;AAEA,UAAA,OAAO,GAAA;AAAA,QACT;AAAA;AAKF,MAAAmB,QAAAA,CAAQ,UAAU,QAAA,GAAW;AAAA,QAC3B,OAAA,EAAS,IAAA;AAAA,QACT,OAAA,EAAS,IAAA;AAAA,QACT;AAAA,OACF;AACA,MAAA,OAAOA,QAAAA;AAAA,IACT,CAAA,CAAE,KAAK,MAAM,CAAA;AAEb,IAAAxB,QAAO,OAAA,GAAU,OAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACjEjB,IAAA,kBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,sFAAA,CAAAH,UAAAG,OAAAA,EAAA;AAEA,IAAA,SAASe,eAAAA,CAAe,KAAKD,EAAAA,EAAG;AAAE,MAAA,OAAOE,iBAAgB,GAAG,CAAA,IAAKC,uBAAsB,GAAA,EAAKH,EAAC,KAAKI,iBAAAA,EAAiB;AAAA,IAAG;AAEtH,IAAA,SAASD,sBAAAA,CAAsB,KAAKH,EAAAA,EAAG;AAAE,MAAA,IAAI,OAAO,EAAC;AAAG,MAAA,IAAI,EAAA,GAAK,IAAA;AAAM,MAAA,IAAI,EAAA,GAAK,KAAA;AAAO,MAAA,IAAI,EAAA,GAAK,MAAA;AAAW,MAAA,IAAI;AAAE,QAAA,KAAA,IAAS,EAAA,GAAK,GAAA,CAAI,MAAA,CAAO,QAAQ,GAAE,EAAG,EAAA,EAAI,EAAE,EAAA,GAAA,CAAM,KAAK,EAAA,CAAG,IAAA,EAAK,EAAG,IAAA,CAAA,EAAO,KAAK,IAAA,EAAM;AAAE,UAAA,IAAA,CAAK,IAAA,CAAK,GAAG,KAAK,CAAA;AAAG,UAAA,IAAIA,EAAAA,IAAK,IAAA,CAAK,MAAA,KAAWA,EAAAA,EAAG;AAAA,QAAO;AAAA,MAAE,SAASV,IAAAA,EAAK;AAAE,QAAA,EAAA,GAAK,IAAA;AAAM,QAAA,EAAA,GAAKA,IAAAA;AAAA,MAAK,CAAA,SAAE;AAAU,QAAA,IAAI;AAAE,UAAA,IAAI,CAAC,MAAM,EAAA,CAAG,QAAQ,KAAK,IAAA,EAAM,EAAA,CAAG,QAAQ,CAAA,EAAE;AAAA,QAAG,CAAA,SAAE;AAAU,UAAA,IAAI,IAAI,MAAM,EAAA;AAAA,QAAI;AAAA,MAAE;AAAE,MAAA,OAAO,IAAA;AAAA,IAAM;AAExZ,IAAA,SAAS,SAAS,GAAA,EAAK;AAAE,MAAA,OAAOY,iBAAgB,GAAG,CAAA,IAAK,gBAAA,CAAiB,GAAG,KAAKE,iBAAAA,EAAiB;AAAA,IAAG;AAErG,IAAA,SAASA,iBAAAA,GAAmB;AAAE,MAAA,MAAM,IAAI,UAAU,sDAAsD,CAAA;AAAA,IAAG;AAE3G,IAAA,SAAS,iBAAiB,IAAA,EAAM;AAAE,MAAA,IAAI,MAAA,CAAO,QAAA,IAAY,MAAA,CAAO,IAAI,KAAK,MAAA,CAAO,SAAA,CAAU,QAAA,CAAS,IAAA,CAAK,IAAI,CAAA,KAAM,oBAAA,EAAsB,OAAO,KAAA,CAAM,KAAK,IAAI,CAAA;AAAA,IAAG;AAEjK,IAAA,SAASF,iBAAgB,GAAA,EAAK;AAAE,MAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,GAAG,CAAA,EAAG,OAAO,GAAA;AAAA,IAAK;AAEpE,IAAA,SAASf,oBAAmB,GAAA,EAAK,OAAA,EAAS,QAAQ,KAAA,EAAO,MAAA,EAAQ,KAAK,GAAA,EAAK;AAAE,MAAA,IAAI;AAAE,QAAA,IAAI,IAAA,GAAO,GAAA,CAAI,GAAG,CAAA,CAAE,GAAG,CAAA;AAAG,QAAA,IAAI,QAAQ,IAAA,CAAK,KAAA;AAAA,MAAO,SAAS,KAAA,EAAO;AAAE,QAAA,MAAA,CAAO,KAAK,CAAA;AAAG,QAAA;AAAA,MAAQ;AAAE,MAAA,IAAI,KAAK,IAAA,EAAM;AAAE,QAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,MAAG,CAAA,MAAO;AAAE,QAAA,OAAA,CAAQ,OAAA,CAAQ,KAAK,CAAA,CAAE,IAAA,CAAK,OAAO,MAAM,CAAA;AAAA,MAAG;AAAA,IAAE;AAExQ,IAAA,SAASC,mBAAkB,EAAA,EAAI;AAAE,MAAA,OAAO,WAAY;AAAE,QAAA,IAAIC,KAAAA,GAAO,MAAM,IAAA,GAAO,SAAA;AAAW,QAAA,OAAO,IAAI,OAAA,CAAQ,SAAU,OAAA,EAAS,MAAA,EAAQ;AAAE,UAAA,IAAI,GAAA,GAAM,EAAA,CAAG,KAAA,CAAMA,KAAAA,EAAM,IAAI,CAAA;AAAG,UAAA,SAAS,MAAM,KAAA,EAAO;AAAE,YAAAF,oBAAmB,GAAA,EAAK,OAAA,EAAS,QAAQ,KAAA,EAAO,MAAA,EAAQ,QAAQ,KAAK,CAAA;AAAA,UAAG;AAAE,UAAA,SAAS,OAAOG,IAAAA,EAAK;AAAE,YAAAH,oBAAmB,GAAA,EAAK,OAAA,EAAS,QAAQ,KAAA,EAAO,MAAA,EAAQ,SAASG,IAAG,CAAA;AAAA,UAAG;AAAE,UAAA,KAAA,CAAM,MAAS,CAAA;AAAA,QAAG,CAAC,CAAA;AAAA,MAAG,CAAA;AAAA,IAAG;AAEpY,IAAA,IAAI,UAAA;AAAJ,IAAA,IACI,gBAAA;AADJ,IAAA,IAEIC,OAAAA;AAFJ,IAAA,IAGI,GAAA;AAHJ,IAAA,IAII,cAAA;AAJJ,IAAA,IAKI,cAAA;AALJ,IAAA,IAMI,MAAA;AANJ,IAAA,IAOI,cAAA;AAPJ,IAAA,IAQI,MAAA;AARJ,IAAA,IASI,IAAA;AATJ,IAAA,IAUII,OAAAA;AAVJ,IAAA,IAWI,MAAA,GAAS,EAAC,CAAE,MAAA;AAChB,IAAA,cAAA,GAAiB,EAAA;AACjB,IAAA,gBAAA,GAAmB,CAAA;AACnB,IAAAA,OAAAA,GAAS,cAAA,EAAA;AACT,IAAA,MAAA,GAAS,cAAA,EAAA;AACT,IAAA,GAAA,GAAM,WAAA,EAAA;AACN,IAAA,cAAA,GAAiB,sBAAA,EAAA;AACjB,IAAA,cAAA,GAAiB,sBAAA,EAAA;AACjB,IAAAJ,OAAAA,GAAS,cAAA,EAAA;AACT,IAAA,MAAA,GAAS,cAAA,EAAA;AACT,IAAA,IAAA,GAAO,YAAA,EAAA;AAEP,IAAA,UAAA,GAAa,WAAY;AAAA,MACvB,MAAMoB,WAAAA,CAAW;AAAA,QACf,WAAA,CAAY7B,QAAAA,GAAU,EAAC,EAAA,GAAM,OAAA,EAAS;AACpC,UAAA,IAAI,oBAAA,EAAsB,YAAA;AAC1B,UAAA,IAAA,CAAK,WAAA,GAAc,IAAA,CAAK,WAAA,CAAY,IAAA,CAAK,IAAI,CAAA;AAE7C,UAAA,IAAA,CAAK,gBAAA,CAAiBA,UAAS,OAAO,CAAA;AAEtC,UAAAa,OAAAA,CAAO,IAAA,CAAKb,QAAAA,EAAS,IAAA,CAAK,kBAAkB,IAAI,CAAA;AAChD,UAAA,IAAA,CAAK,OAAA,GAAU,IAAI,MAAA,CAAO,cAAc,CAAA;AACxC,UAAA,IAAA,CAAK,aAAa,EAAC;AACnB,UAAA,IAAA,CAAK,UAAU,IAAI,MAAA,CAAO,CAAC,UAAA,EAAY,UAAU,SAAA,EAAW,WAAW,CAAA,CAAE,MAAA,CAAO,KAAK,eAAA,GAAkB,CAAC,MAAM,CAAA,GAAI,EAAE,CAAC,CAAA;AACrH,UAAA,IAAA,CAAK,QAAA,GAAW,IAAA;AAChB,UAAA,IAAA,CAAK,MAAA,GAAS,IAAIS,OAAAA,CAAO,IAAI,CAAA;AAC7B,UAAA,IAAA,CAAK,WAAA,GAAc,IAAI,IAAA,CAAK,QAAA,EAAU,KAAK,OAAO,CAAA;AAClD,UAAA,IAAA,CAAK,aAAA,GAAgB,IAAI,IAAA,CAAK,UAAA,EAAY,KAAK,OAAO,CAAA;AACtD,UAAA,YAAA,GAAeI,QAAO,IAAA,CAAKb,QAAAA,EAAS,IAAA,CAAK,aAAA,EAAe,EAAE,CAAA;AAE1D,UAAA,IAAA,CAAK,SAAS,WAAY;AACxB,YAAA,IAAI,IAAA,CAAK,cAAc,OAAA,IAAW,IAAA,CAAK,cAAc,SAAA,IAAa,IAAA,CAAK,cAAc,IAAA,EAAM;AACzF,cAAA,oBAAA,GAAuBa,QAAO,IAAA,CAAKb,QAAAA,EAAS,IAAA,CAAK,kBAAA,EAAoB,EAAE,CAAA;AACvE,cAAA,OAAO,IAAI,cAAA,CAAe,IAAA,EAAM,YAAA,EAAc,oBAAoB,CAAA;AAAA,YACpE,CAAA,MAAA,IAAW,IAAA,CAAK,SAAA,KAAc,OAAA,EAAS;AACrC,cAAA,oBAAA,GAAuBa,QAAO,IAAA,CAAKb,QAAAA,EAAS,IAAA,CAAK,kBAAA,EAAoB,EAAE,CAAA;AACvE,cAAA,OAAO,IAAI,cAAA,CAAe,IAAA,EAAM,YAAA,EAAc,oBAAoB,CAAA;AAAA,YACpE,CAAA,MAAO;AACL,cAAA,MAAM,IAAI6B,WAAAA,CAAW,SAAA,CAAU,gBAAgB,CAAA,wBAAA,EAA2B,IAAA,CAAK,SAAS,CAAA,CAAE,CAAA;AAAA,YAC5F;AAAA,UACF,CAAA,CAAE,KAAK,IAAI,CAAA;AAEX,UAAA,IAAA,CAAK,OAAA,CAAQ,EAAA,CAAG,UAAA,EAAY,MAAM;AAChC,YAAA,IAAI,GAAA;AACJ,YAAA,OAAA,CAAQ,GAAA,GAAM,IAAA,CAAK,MAAA,CAAO,SAAA,KAAc,IAAA,GAAO,OAAO,GAAA,CAAI,GAAA,KAAQ,UAAA,GAAa,GAAA,CAAI,GAAA,EAAI,GAAI,MAAA,GAAS,MAAA;AAAA,UACtG,CAAC,CAAA;AAED,UAAA,IAAA,CAAK,OAAA,CAAQ,EAAA,CAAG,MAAA,EAAQ,MAAM;AAC5B,YAAA,IAAI,GAAA;AACJ,YAAA,OAAA,CAAQ,GAAA,GAAM,IAAA,CAAK,MAAA,CAAO,SAAA,KAAc,IAAA,GAAO,OAAO,GAAA,CAAI,KAAA,KAAU,UAAA,GAAa,GAAA,CAAI,KAAA,EAAM,GAAI,MAAA,GAAS,MAAA;AAAA,UAC1G,CAAC,CAAA;AAAA,QACH;AAAA,QAEA,gBAAA,CAAiB7B,UAAS,OAAA,EAAS;AACjC,UAAA,IAAI,EAAEA,YAAW,IAAA,IAAQ,OAAOA,aAAY,QAAA,IAAY,OAAA,CAAQ,WAAW,CAAA,CAAA,EAAI;AAC7E,YAAA,MAAM,IAAI6B,WAAAA,CAAW,SAAA,CAAU,eAAA,CAAgB,uJAAuJ,CAAA;AAAA,UACxM;AAAA,QACF;AAAA,QAEA,KAAA,GAAQ;AACN,UAAA,OAAO,KAAK,MAAA,CAAO,KAAA;AAAA,QACrB;AAAA,QAEA,OAAA,GAAU;AACR,UAAA,OAAO,KAAK,MAAA,CAAO,OAAA;AAAA,QACrB;AAAA,QAEA,OAAA,GAAU;AACR,UAAA,OAAO,CAAA,EAAA,EAAK,KAAK,EAAE,CAAA,CAAA;AAAA,QACrB;AAAA,QAEA,cAAA,GAAiB;AACf,UAAA,OAAO,KAAK,IAAA,CAAK,EAAE,CAAA,CAAA,EAAI,IAAA,CAAK,OAAO,QAAQ,CAAA,CAAA;AAAA,QAC7C;AAAA,QAEA,QAAQ,OAAA,EAAS;AACf,UAAA,OAAO,IAAA,CAAK,MAAA,CAAO,WAAA,CAAY,OAAO,CAAA;AAAA,QACxC;AAAA,QAEA,UAAA,CAAW,QAAQ,IAAA,EAAM;AACvB,UAAA,OAAO,IAAA,CAAK,MAAA,CAAO,cAAA,CAAe,KAAK,CAAA;AAAA,QACzC;AAAA,QAEA,MAAM,QAAA,EAAU;AACd,UAAA,IAAA,CAAK,QAAA,GAAW,QAAA;AAChB,UAAA,OAAO,IAAA;AAAA,QACT;AAAA,QAEA,OAAO,QAAA,EAAU;AACf,UAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,MAAA,CAAO,QAAQ,CAAA;AAAA,QACrC;AAAA,QAEA,aAAA,GAAgB;AACd,UAAA,OAAO,IAAA,CAAK,OAAO,UAAA,EAAW;AAAA,QAChC;AAAA,QAEA,KAAA,GAAQ;AACN,UAAA,OAAO,KAAK,MAAA,EAAO,KAAM,CAAA,IAAK,IAAA,CAAK,YAAY,OAAA,EAAQ;AAAA,QACzD;AAAA,QAEA,OAAA,GAAU;AACR,UAAA,OAAO,IAAA,CAAK,OAAO,WAAA,EAAY;AAAA,QACjC;AAAA,QAEA,IAAA,GAAO;AACL,UAAA,OAAO,IAAA,CAAK,OAAO,QAAA,EAAS;AAAA,QAC9B;AAAA,QAEA,UAAU,EAAA,EAAI;AACZ,UAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,SAAA,CAAU,EAAE,CAAA;AAAA,QAClC;AAAA,QAEA,KAAK,MAAA,EAAQ;AACX,UAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,UAAA,CAAW,MAAM,CAAA;AAAA,QACvC;AAAA,QAEA,MAAA,GAAS;AACP,UAAA,OAAO,IAAA,CAAK,QAAQ,YAAA,EAAa;AAAA,QACnC;AAAA,QAEA,YAAA,GAAe;AACb,UAAA,OAAO,KAAK,MAAA,EAAO,CAAE,SAAS,EAAE,CAAA,CAAE,MAAM,CAAC,CAAA;AAAA,QAC3C;AAAA,QAEA,KAAA,CAAM,SAAS,CAAA,EAAG;AAChB,UAAA,OAAO,IAAA,CAAK,MAAA,CAAO,SAAA,CAAU,MAAM,CAAA;AAAA,QACrC;AAAA,QAEA,kBAAkB,KAAA,EAAO;AACvB,UAAA,IAAI,IAAA,CAAK,UAAA,CAAW,KAAK,CAAA,IAAK,IAAA,EAAM;AAClC,YAAA,YAAA,CAAa,IAAA,CAAK,UAAA,CAAW,KAAK,CAAA,CAAE,UAAU,CAAA;AAC9C,YAAA,OAAO,IAAA,CAAK,WAAW,KAAK,CAAA;AAC5B,YAAA,OAAO,IAAA;AAAA,UACT,CAAA,MAAO;AACL,YAAA,OAAO,KAAA;AAAA,UACT;AAAA,QACF;AAAA,QAEA,KAAA,CAAM,KAAA,EAAO,GAAA,EAAK7B,QAAAA,EAAS,SAAA,EAAW;AACpC,UAAA,IAAI,KAAA,GAAQ,IAAA;AAEZ,UAAA,OAAOM,mBAAkB,aAAa;AACpC,YAAA,IAAII,EAAAA,EAAG,OAAA;AAEP,YAAA,IAAI;AACF,cAAA,IAAI,OAAO,MAAM,KAAA,CAAM,OAAO,QAAA,CAAS,KAAA,EAAOV,SAAQ,MAAM,CAAA;AAE5D,cAAA,OAAA,GAAU,IAAA,CAAK,OAAA;AAEf,cAAA,KAAA,CAAM,OAAO,OAAA,CAAQ,OAAA,EAAS,SAASA,QAAAA,CAAQ,EAAE,IAAI,SAAS,CAAA;AAE9D,cAAA,IAAI,OAAA,KAAY,CAAA,IAAK,KAAA,CAAM,KAAA,EAAM,EAAG;AAClC,gBAAA,OAAO,KAAA,CAAM,MAAA,CAAO,OAAA,CAAQ,MAAM,CAAA;AAAA,cACpC;AAAA,YACF,SAAS,MAAA,EAAQ;AACf,cAAAU,EAAAA,GAAI,MAAA;AACJ,cAAA,OAAO,KAAA,CAAM,MAAA,CAAO,OAAA,CAAQ,OAAA,EAASA,EAAC,CAAA;AAAA,YACxC;AAAA,UACF,CAAC,CAAA,EAAE;AAAA,QACL;AAAA,QAEA,IAAA,CAAK,KAAA,EAAO,GAAA,EAAK,IAAA,EAAM;AACrB,UAAA,IAAI,kBAAkB,IAAA,EAAM,GAAA;AAC5B,UAAA,GAAA,CAAI,KAAA,EAAM;AACV,UAAA,gBAAA,GAAmB,IAAA,CAAK,iBAAA,CAAkB,IAAA,CAAK,IAAA,EAAM,KAAK,CAAA;AAC1D,UAAA,GAAA,GAAM,IAAA,CAAK,IAAA,CAAK,IAAA,CAAK,IAAA,EAAM,OAAO,GAAG,CAAA;AACrC,UAAA,IAAA,GAAO,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,IAAA,EAAM,OAAO,GAAG,CAAA;AACvC,UAAA,OAAO,IAAA,CAAK,UAAA,CAAW,KAAK,CAAA,GAAI;AAAA,YAC9B,OAAA,EAAS,WAAW,MAAM;AACxB,cAAA,OAAO,IAAI,SAAA,CAAU,IAAA,CAAK,QAAA,EAAU,gBAAA,EAAkB,KAAK,IAAI,CAAA;AAAA,YACjE,GAAG,IAAI,CAAA;AAAA,YACP,YAAY,GAAA,CAAI,OAAA,CAAQ,UAAA,IAAc,IAAA,GAAO,WAAW,WAAY;AAClE,cAAA,OAAO,GAAA,CAAI,QAAA,CAAS,gBAAA,EAAkB,GAAA,EAAK,IAAI,CAAA;AAAA,YACjD,CAAA,EAAG,IAAA,GAAO,GAAA,CAAI,OAAA,CAAQ,UAAU,CAAA,GAAI,MAAA;AAAA,YACpC;AAAA,WACF;AAAA,QACF;AAAA,QAEA,UAAU,QAAA,EAAU;AAClB,UAAA,OAAO,IAAA,CAAK,aAAA,CAAc,QAAA,CAAS,MAAM;AACvC,YAAA,IAAI,IAAA,EAAM,KAAA,EAAO,IAAA,EAAMV,QAAAA,EAAS,KAAA;AAEhC,YAAA,IAAI,IAAA,CAAK,MAAA,EAAO,KAAM,CAAA,EAAG;AACvB,cAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,OAAA,CAAQ,IAAI,CAAA;AAAA,YAClC;AAEA,YAAA,KAAA,GAAQ,IAAA,CAAK,QAAQ,QAAA,EAAS;AAE9B,YAAA,IAAI,MAAA,GAAS,IAAA,GAAO,KAAA,CAAM,KAAA,EAAM;AAEhC,YAAAA,WAAU,MAAA,CAAO,OAAA;AACjB,YAAA,IAAA,GAAO,MAAA,CAAO,IAAA;AAEd,YAAA,IAAI,QAAA,IAAY,IAAA,IAAQA,QAAAA,CAAQ,MAAA,GAAS,QAAA,EAAU;AACjD,cAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,OAAA,CAAQ,IAAI,CAAA;AAAA,YAClC;AAEA,YAAA,IAAA,CAAK,OAAO,OAAA,CAAQ,OAAA,EAAS,CAAA,SAAA,EAAYA,QAAAA,CAAQ,EAAE,CAAA,CAAA,EAAI;AAAA,cACrD,IAAA;AAAA,cACA,OAAA,EAAAA;AAAA,aACD,CAAA;AACD,YAAA,KAAA,GAAQ,KAAK,YAAA,EAAa;AAC1B,YAAA,OAAO,IAAA,CAAK,MAAA,CAAO,YAAA,CAAa,KAAA,EAAOA,QAAAA,CAAQ,QAAQA,QAAAA,CAAQ,UAAU,CAAA,CAAE,IAAA,CAAK,CAAC;AAAA,cAC/E,OAAA;AAAA,cACA,IAAA;AAAA,cACA;AAAA,aACF,KAAM;AACJ,cAAA,IAAI,KAAA;AACJ,cAAA,IAAA,CAAK,OAAO,OAAA,CAAQ,OAAA,EAAS,CAAA,QAAA,EAAWA,QAAAA,CAAQ,EAAE,CAAA,CAAA,EAAI;AAAA,gBACpD,OAAA;AAAA,gBACA,IAAA;AAAA,gBACA,OAAA,EAAAA;AAAA,eACD,CAAA;AAED,cAAA,IAAI,OAAA,EAAS;AACX,gBAAA,KAAA,CAAM,KAAA,EAAM;AACZ,gBAAA,KAAA,GAAQ,KAAK,KAAA,EAAM;AAEnB,gBAAA,IAAI,KAAA,EAAO;AACT,kBAAA,IAAA,CAAK,MAAA,CAAO,QAAQ,OAAO,CAAA;AAAA,gBAC7B;AAEA,gBAAA,IAAI,cAAc,CAAA,EAAG;AACnB,kBAAA,IAAA,CAAK,MAAA,CAAO,OAAA,CAAQ,UAAA,EAAY,KAAK,CAAA;AAAA,gBACvC;AAEA,gBAAA,IAAA,CAAK,IAAA,CAAK,KAAA,EAAO,IAAA,EAAM,IAAI,CAAA;AAE3B,gBAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,OAAA,CAAQA,QAAAA,CAAQ,MAAM,CAAA;AAAA,cAC5C,CAAA,MAAO;AACL,gBAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,OAAA,CAAQ,IAAI,CAAA;AAAA,cAClC;AAAA,YACF,CAAC,CAAA;AAAA,UACH,CAAC,CAAA;AAAA,QACH;AAAA,QAEA,SAAA,CAAU,QAAA,EAAU,KAAA,GAAQ,CAAA,EAAG;AAC7B,UAAA,OAAO,IAAA,CAAK,SAAA,CAAU,QAAQ,CAAA,CAAE,KAAK,CAAA,OAAA,KAAW;AAC9C,YAAA,IAAI,WAAA;AAEJ,YAAA,IAAI,WAAW,IAAA,EAAM;AACnB,cAAA,WAAA,GAAc,QAAA,IAAY,IAAA,GAAO,QAAA,GAAW,OAAA,GAAU,QAAA;AACtD,cAAA,OAAO,IAAA,CAAK,SAAA,CAAU,WAAA,EAAa,KAAA,GAAQ,OAAO,CAAA;AAAA,YACpD,CAAA,MAAO;AACL,cAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,OAAA,CAAQ,KAAK,CAAA;AAAA,YACnC;AAAA,UACF,CAAC,CAAA,CAAE,KAAA,CAAM,CAAAU,EAAAA,KAAK;AACZ,YAAA,OAAO,IAAA,CAAK,MAAA,CAAO,OAAA,CAAQ,OAAA,EAASA,EAAC,CAAA;AAAA,UACvC,CAAC,CAAA;AAAA,QACH;AAAA,QAEA,eAAe,OAAA,EAAS;AACtB,UAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,QAAA,CAAS,SAAU,GAAA,EAAK;AAC1C,YAAA,OAAO,IAAI,MAAA,CAAO;AAAA,cAChB;AAAA,aACD,CAAA;AAAA,UACH,CAAC,CAAA;AAAA,QACH;AAAA,QAEA,IAAA,CAAKV,QAAAA,GAAU,EAAC,EAAG;AACjB,UAAA,IAAI,IAAA,EAAM,gBAAA;AACV,UAAAA,QAAAA,GAAUa,OAAAA,CAAO,IAAA,CAAKb,QAAAA,EAAS,KAAK,YAAY,CAAA;AAEhD,UAAA,gBAAA,GAAmB,CAAA,EAAA,KAAM;AACvB,YAAA,IAAI,QAAA;AAEJ,YAAA,QAAA,GAAW,MAAM;AACf,cAAA,IAAI,MAAA;AACJ,cAAA,MAAA,GAAS,KAAK,OAAA,CAAQ,MAAA;AACtB,cAAA,OAAO,MAAA,CAAO,CAAC,CAAA,GAAI,MAAA,CAAO,CAAC,CAAA,GAAI,MAAA,CAAO,CAAC,CAAA,GAAI,MAAA,CAAO,CAAC,CAAA,KAAM,EAAA;AAAA,YAC3D,CAAA;AAEA,YAAA,OAAO,IAAI,IAAA,CAAK,OAAA,CAAQ,CAAC,SAAS,MAAA,KAAW;AAC3C,cAAA,IAAI,UAAS,EAAG;AACd,gBAAA,OAAO,OAAA,EAAQ;AAAA,cACjB,CAAA,MAAO;AACL,gBAAA,OAAO,IAAA,CAAK,EAAA,CAAG,MAAA,EAAQ,MAAM;AAC3B,kBAAA,IAAI,UAAS,EAAG;AACd,oBAAA,IAAA,CAAK,mBAAmB,MAAM,CAAA;AAC9B,oBAAA,OAAO,OAAA,EAAQ;AAAA,kBACjB;AAAA,gBACF,CAAC,CAAA;AAAA,cACH;AAAA,YACF,CAAC,CAAA;AAAA,UACH,CAAA;AAEA,UAAA,IAAA,GAAOA,SAAQ,eAAA,IAAmB,IAAA,CAAK,IAAA,GAAO,SAAU,OAAO,IAAA,EAAM;AACnE,YAAA,OAAO,KAAK,MAAA,CAAO;AAAA,cACjB,SAASA,QAAAA,CAAQ;AAAA,aAClB,CAAA;AAAA,UACH,CAAA,EAAG,IAAA,CAAK,SAAA,GAAY,MAAM;AACxB,YAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,OAAA,CAAQ,IAAI,CAAA;AAAA,UAClC,CAAA,EAAG,IAAA,CAAK,aAAA,CAAc,QAAA,CAAS,MAAM;AACnC,YAAA,OAAO,IAAA,CAAK,WAAA,CAAY,QAAA,CAAS,MAAM;AACrC,cAAA,IAAIE,IAAG,GAAA,EAAKC,EAAAA;AACZ,cAAA,GAAA,GAAM,IAAA,CAAK,UAAA;AAEX,cAAA,KAAKD,MAAK,GAAA,EAAK;AACb,gBAAAC,EAAAA,GAAI,IAAID,EAAC,CAAA;AAET,gBAAA,IAAI,KAAK,SAAA,CAAUC,EAAAA,CAAE,IAAI,OAAA,CAAQ,EAAE,MAAM,SAAA,EAAW;AAClD,kBAAA,YAAA,CAAaA,GAAE,OAAO,CAAA;AACtB,kBAAA,YAAA,CAAaA,GAAE,UAAU,CAAA;AACzB,kBAAAA,EAAAA,CAAE,IAAI,MAAA,CAAO;AAAA,oBACX,SAASH,QAAAA,CAAQ;AAAA,mBAClB,CAAA;AAAA,gBACH;AAAA,cACF;AAEA,cAAA,IAAA,CAAK,cAAA,CAAeA,SAAQ,gBAAgB,CAAA;AAE5C,cAAA,OAAO,iBAAiB,CAAC,CAAA;AAAA,YAC3B,CAAC,CAAA;AAAA,UACH,CAAC,CAAA,IAAK,IAAA,CAAK,QAAA,CAAS;AAAA,YAClB,UAAU,cAAA,GAAiB,CAAA;AAAA,YAC3B,MAAA,EAAQ;AAAA,aACP,MAAM;AACP,YAAA,OAAO,iBAAiB,CAAC,CAAA;AAAA,UAC3B,CAAC,CAAA;AAED,UAAA,IAAA,CAAK,QAAA,GAAW,SAAU,GAAA,EAAK;AAC7B,YAAA,OAAO,GAAA,CAAI,QAAQ,IAAI6B,WAAAA,CAAW,UAAU,eAAA,CAAgB7B,QAAAA,CAAQ,mBAAmB,CAAC,CAAA;AAAA,UAC1F,CAAA;AAEA,UAAA,IAAA,CAAK,OAAO,MAAM;AAChB,YAAA,OAAO,IAAA,CAAK,QAAQ,MAAA,CAAO,IAAI6B,YAAW,SAAA,CAAU,eAAA,CAAgB,gCAAgC,CAAC,CAAA;AAAA,UACvG,CAAA;AAEA,UAAA,OAAO,IAAA;AAAA,QACT;AAAA,QAEA,YAAY,GAAA,EAAK;AACf,UAAA,IAAI,MAAA,GAAS,IAAA;AAEb,UAAA,OAAOvB,mBAAkB,aAAa;AACpC,YAAA,IAAI,IAAA,EAAM,OAAA,EAAS,KAAA,EAAON,QAAAA,EAAS,YAAY,OAAA,EAAS,QAAA;AACxD,YAAA,IAAA,GAAO,GAAA,CAAI,IAAA;AACX,YAAAA,WAAU,GAAA,CAAI,OAAA;AAEd,YAAA,IAAI;AACF,cAAA,IAAI,KAAA,GAAQ,MAAM,MAAA,CAAO,MAAA,CAAO,WAAW,MAAA,CAAO,MAAA,EAAO,EAAGA,QAAAA,CAAQ,MAAM,CAAA;AAE1E,cAAA,UAAA,GAAa,KAAA,CAAM,UAAA;AACnB,cAAA,OAAA,GAAU,KAAA,CAAM,OAAA;AAChB,cAAA,QAAA,GAAW,KAAA,CAAM,QAAA;AAAA,YACnB,SAAS,MAAA,EAAQ;AACf,cAAA,KAAA,GAAQ,MAAA;AAER,cAAA,MAAA,CAAO,OAAO,OAAA,CAAQ,OAAA,EAAS,CAAA,gBAAA,EAAmBA,QAAAA,CAAQ,EAAE,CAAA,CAAA,EAAI;AAAA,gBAC9D,IAAA;AAAA,gBACA,OAAA,EAAAA,QAAAA;AAAA,gBACA;AAAA,eACD,CAAA;AAED,cAAA,GAAA,CAAI,MAAA,CAAO;AAAA,gBACT;AAAA,eACD,CAAA;AACD,cAAA,OAAO,KAAA;AAAA,YACT;AAEA,YAAA,IAAI,OAAA,EAAS;AACX,cAAA,GAAA,CAAI,MAAA,EAAO;AACX,cAAA,OAAO,IAAA;AAAA,YACT,WAAW,UAAA,EAAY;AACrB,cAAA,OAAA,GAAU,QAAA,KAAa6B,WAAAA,CAAW,SAAA,CAAU,QAAA,CAAS,IAAA,GAAO,MAAA,CAAO,OAAA,CAAQ,aAAA,CAAc7B,QAAAA,CAAQ,QAAQ,CAAA,GAAI,QAAA,KAAa6B,WAAAA,CAAW,SAAA,CAAU,QAAA,CAAS,iBAAA,GAAoB,MAAA,CAAO,OAAA,CAAQ,aAAA,CAAc7B,QAAAA,CAAQ,QAAA,GAAW,CAAC,CAAA,GAAI,QAAA,KAAa6B,WAAAA,CAAW,SAAA,CAAU,QAAA,CAAS,QAAA,GAAW,GAAA,GAAM,MAAA;AAE7R,cAAA,IAAI,WAAW,IAAA,EAAM;AACnB,gBAAA,OAAA,CAAQ,MAAA,EAAO;AAAA,cACjB;AAEA,cAAA,IAAI,WAAW,IAAA,IAAQ,QAAA,KAAaA,WAAAA,CAAW,SAAA,CAAU,SAAS,QAAA,EAAU;AAC1E,gBAAA,IAAI,WAAW,IAAA,EAAM;AACnB,kBAAA,GAAA,CAAI,MAAA,EAAO;AAAA,gBACb;AAEA,gBAAA,OAAO,UAAA;AAAA,cACT;AAAA,YACF;AAEA,YAAA,GAAA,CAAI,OAAA,CAAQ,YAAY,OAAO,CAAA;AAE/B,YAAA,MAAA,CAAO,OAAA,CAAQ,KAAK,GAAG,CAAA;AAEvB,YAAA,MAAM,OAAO,SAAA,EAAU;AACvB,YAAA,OAAO,UAAA;AAAA,UACT,CAAC,CAAA,EAAE;AAAA,QACL;AAAA,QAEA,SAAS,GAAA,EAAK;AACZ,UAAA,IAAI,KAAK,OAAA,CAAQ,SAAA,CAAU,IAAI,OAAA,CAAQ,EAAE,KAAK,IAAA,EAAM;AAClD,YAAA,GAAA,CAAI,OAAA,CAAQ,IAAIA,WAAAA,CAAW,SAAA,CAAU,eAAA,CAAgB,6CAA6C,GAAA,CAAI,OAAA,CAAQ,EAAE,CAAA,CAAA,CAAG,CAAC,CAAA;AAEpH,YAAA,OAAO,KAAA;AAAA,UACT,CAAA,MAAO;AACL,YAAA,GAAA,CAAI,SAAA,EAAU;AACd,YAAA,OAAO,IAAA,CAAK,WAAA,CAAY,QAAA,CAAS,IAAA,CAAK,aAAa,GAAG,CAAA;AAAA,UACxD;AAAA,QACF;AAAA,QAEA,UAAU,IAAA,EAAM;AACd,UAAA,IAAI,EAAA,EAAI,EAAA,EAAI,GAAA,EAAK7B,QAAAA,EAAS,KAAK,IAAA,EAAM,IAAA;AAErC,UAAA,IAAI,OAAO,IAAA,CAAK,CAAC,CAAA,KAAM,UAAA,EAAY;AACjC,YAAA,IAAI,KAAA,EAAO,OAAO,YAAA,EAAc,aAAA;AAEhC,YAAA,GAAA,GAAM,IAAA,EAAO,KAAA,GAAQ,GAAA,EAAK,KAAA,GAAQ,QAAA,CAAS,KAAK,CAAA,EAAG,EAAA,GAAK,KAAA,CAAM,CAAC,CAAA,EAAG,IAAA,GAAO,MAAM,KAAA,CAAM,CAAC,CAAA,EAAY,YAAA,GAAe,MAAA,CAAO,IAAA,CAAK,IAAA,EAAM,EAAE,CAAA,EAAG,aAAA,GAAgBmB,eAAAA,CAAe,YAAA,EAAc,CAAC,CAAA,EAAG,EAAA,GAAK,aAAA,CAAc,CAAC,CAAG;AAChN,YAAAnB,WAAUa,OAAAA,CAAO,IAAA,CAAK,EAAC,EAAG,KAAK,WAAW,CAAA;AAAA,UAC5C,CAAA,MAAO;AACL,YAAA,IAAI,KAAA,EAAO,OAAO,aAAA,EAAe,aAAA;AAEjC,YAAA,IAAA,GAAO,IAAA,EAAO,KAAA,GAAQ,IAAA,EAAM,KAAA,GAAQ,SAAS,KAAK,CAAA,EAAGb,QAAAA,GAAU,KAAA,CAAM,CAAC,CAAA,EAAG,EAAA,GAAK,KAAA,CAAM,CAAC,GAAG,IAAA,GAAO,KAAA,CAAM,KAAA,CAAM,CAAC,GAAY,aAAA,GAAgB,MAAA,CAAO,IAAA,CAAK,MAAM,EAAE,CAAA,EAAG,aAAA,GAAgBmB,eAAAA,CAAe,eAAe,CAAC,CAAA,EAAG,EAAA,GAAK,aAAA,CAAc,CAAC,CAAG;AACxO,YAAAnB,QAAAA,GAAUa,OAAAA,CAAO,IAAA,CAAKb,QAAAA,EAAS,KAAK,WAAW,CAAA;AAAA,UACjD;AAEA,UAAA,IAAA,GAAO,IAAI8B,KAAAA,KAAS;AAClB,YAAA,OAAO,IAAI,IAAA,CAAK,OAAA,CAAQ,SAAU,SAAS,MAAA,EAAQ;AACjD,cAAA,OAAO,EAAA,CAAG,GAAGA,KAAAA,EAAM,SAAA,GAAaA,KAAAA,EAAM;AACpC,gBAAA,OAAA,CAAQA,MAAK,CAAC,CAAA,IAAK,IAAA,GAAO,MAAA,GAAS,SAASA,KAAI,CAAA;AAAA,cAClD,CAAC,CAAA;AAAA,YACH,CAAC,CAAA;AAAA,UACH,CAAA;AAEA,UAAA,GAAA,GAAM,IAAI,GAAA,CAAI,IAAA,EAAM,IAAA,EAAM9B,UAAS,IAAA,CAAK,WAAA,EAAa,IAAA,CAAK,YAAA,EAAc,IAAA,CAAK,MAAA,EAAQ,IAAA,CAAK,OAAA,EAAS,KAAK,OAAO,CAAA;AAC/G,UAAA,GAAA,CAAI,OAAA,CAAQ,IAAA,CAAK,SAAU8B,KAAAA,EAAM;AAC/B,YAAA,OAAO,OAAO,EAAA,KAAO,UAAA,GAAa,EAAA,CAAG,GAAGA,KAAI,CAAA,GAAI,MAAA;AAAA,UAClD,CAAC,CAAA,CAAE,KAAA,CAAM,SAAUA,KAAAA,EAAM;AACvB,YAAA,IAAI,KAAA,CAAM,OAAA,CAAQA,KAAI,CAAA,EAAG;AACvB,cAAA,OAAO,OAAO,EAAA,KAAO,UAAA,GAAa,EAAA,CAAG,GAAGA,KAAI,CAAA,GAAI,MAAA;AAAA,YAClD,CAAA,MAAO;AACL,cAAA,OAAO,OAAO,EAAA,KAAO,UAAA,GAAa,EAAA,CAAGA,KAAI,CAAA,GAAI,MAAA;AAAA,YAC/C;AAAA,UACF,CAAC,CAAA;AACD,UAAA,OAAO,IAAA,CAAK,SAAS,GAAG,CAAA;AAAA,QAC1B;AAAA,QAEA,YAAY,IAAA,EAAM;AAChB,UAAA,IAAI,KAAK9B,QAAAA,EAAS,IAAA;AAElB,UAAA,IAAI,OAAO,IAAA,CAAK,CAAC,CAAA,KAAM,UAAA,EAAY;AACjC,YAAA,IAAI,KAAA,GAAQ,IAAA;AAEZ,YAAA,IAAI,MAAA,GAAS,SAAS,KAAK,CAAA;AAE3B,YAAA,IAAA,GAAO,OAAO,CAAC,CAAA;AACf,YAAA,IAAA,GAAO,MAAA,CAAO,MAAM,CAAC,CAAA;AACrB,YAAAA,WAAU,EAAC;AAAA,UACb,CAAA,MAAO;AACL,YAAA,IAAI,MAAA,GAAS,IAAA;AAEb,YAAA,IAAI,MAAA,GAAS,SAAS,MAAM,CAAA;AAE5B,YAAAA,QAAAA,GAAU,OAAO,CAAC,CAAA;AAClB,YAAA,IAAA,GAAO,OAAO,CAAC,CAAA;AACf,YAAA,IAAA,GAAO,MAAA,CAAO,MAAM,CAAC,CAAA;AAAA,UACvB;AAEA,UAAA,GAAA,GAAM,IAAI,GAAA,CAAI,IAAA,EAAM,IAAA,EAAMA,UAAS,IAAA,CAAK,WAAA,EAAa,IAAA,CAAK,YAAA,EAAc,IAAA,CAAK,MAAA,EAAQ,IAAA,CAAK,OAAA,EAAS,KAAK,OAAO,CAAA;AAE/G,UAAA,IAAA,CAAK,SAAS,GAAG,CAAA;AAEjB,UAAA,OAAO,GAAA,CAAI,OAAA;AAAA,QACb;AAAA,QAEA,KAAK,EAAA,EAAI;AACP,UAAA,IAAI,QAAA,EAAU,OAAA;AACd,UAAA,QAAA,GAAW,IAAA,CAAK,QAAA,CAAS,IAAA,CAAK,IAAI,CAAA;AAElC,UAAA,OAAA,GAAU,SAAS+B,YAAW,IAAA,EAAM;AAClC,YAAA,OAAO,SAAS,EAAA,CAAG,IAAA,CAAK,IAAI,CAAA,EAAG,GAAG,IAAI,CAAA;AAAA,UACxC,CAAA;AAEA,UAAA,OAAA,CAAQ,WAAA,GAAc,SAAU/B,QAAAA,EAAAA,GAAY,IAAA,EAAM;AAChD,YAAA,OAAO,QAAA,CAASA,QAAAA,EAAS,EAAA,EAAI,GAAG,IAAI,CAAA;AAAA,UACtC,CAAA;AAEA,UAAA,OAAO,OAAA;AAAA,QACT;AAAA,QAEA,cAAA,CAAeA,QAAAA,GAAU,EAAC,EAAG;AAC3B,UAAA,IAAI,MAAA,GAAS,IAAA;AAEb,UAAA,OAAOM,mBAAkB,aAAa;AACpC,YAAA,MAAM,MAAA,CAAO,OAAO,kBAAA,CAAmBO,OAAAA,CAAO,UAAUb,QAAAA,EAAS,MAAA,CAAO,aAAa,CAAC,CAAA;AACtF,YAAAa,OAAAA,CAAO,SAAA,CAAUb,QAAAA,EAAS,MAAA,CAAO,kBAAkB,MAAM,CAAA;AACzD,YAAA,OAAO,MAAA;AAAA,UACT,CAAC,CAAA,EAAE;AAAA,QACL;AAAA,QAEA,gBAAA,GAAmB;AACjB,UAAA,OAAO,IAAA,CAAK,OAAO,oBAAA,EAAqB;AAAA,QAC1C;AAAA,QAEA,kBAAA,CAAmB,OAAO,CAAA,EAAG;AAC3B,UAAA,OAAO,IAAA,CAAK,MAAA,CAAO,sBAAA,CAAuB,IAAI,CAAA;AAAA,QAChD;AAAA;AAKF,MAAA6B,YAAW,OAAA,GAAUA,WAAAA;AACrB,MAAAA,YAAW,MAAA,GAASpB,OAAAA;AACpB,MAAAoB,WAAAA,CAAW,OAAA,GAAUA,WAAAA,CAAW,SAAA,CAAU,UAAU,eAAA,EAAA,CAA0B,OAAA;AAC9E,MAAAA,WAAAA,CAAW,QAAA,GAAWA,WAAAA,CAAW,SAAA,CAAU,QAAA,GAAW;AAAA,QACpD,IAAA,EAAM,CAAA;AAAA,QACN,QAAA,EAAU,CAAA;AAAA,QACV,iBAAA,EAAmB,CAAA;AAAA,QACnB,KAAA,EAAO;AAAA,OACT;AACA,MAAAA,WAAAA,CAAW,eAAA,GAAkBA,WAAAA,CAAW,SAAA,CAAU,eAAA,GAAkB,uBAAA,EAAA;AACpE,MAAAA,WAAAA,CAAW,KAAA,GAAQA,WAAAA,CAAW,SAAA,CAAU,KAAA,GAAQ,aAAA,EAAA;AAChD,MAAAA,WAAAA,CAAW,eAAA,GAAkBA,WAAAA,CAAW,SAAA,CAAU,eAAA,GAAkB,uBAAA,EAAA;AACpE,MAAAA,WAAAA,CAAW,iBAAA,GAAoBA,WAAAA,CAAW,SAAA,CAAU,iBAAA,GAAoB,yBAAA,EAAA;AACxE,MAAAA,WAAAA,CAAW,OAAA,GAAUA,WAAAA,CAAW,SAAA,CAAU,OAAA,GAAU,eAAA,EAAA;AACpD,MAAAA,WAAAA,CAAW,UAAU,WAAA,GAAc;AAAA,QACjC,QAAA,EAAU,gBAAA;AAAA,QACV,MAAA,EAAQ,CAAA;AAAA,QACR,UAAA,EAAY,IAAA;AAAA,QACZ,EAAA,EAAI;AAAA,OACN;AACA,MAAAA,WAAAA,CAAW,UAAU,aAAA,GAAgB;AAAA,QACnC,aAAA,EAAe,IAAA;AAAA,QACf,OAAA,EAAS,CAAA;AAAA,QACT,SAAA,EAAW,IAAA;AAAA,QACX,QAAA,EAAUA,WAAAA,CAAW,SAAA,CAAU,QAAA,CAAS,IAAA;AAAA,QACxC,OAAA,EAAS,IAAA;AAAA,QACT,SAAA,EAAW,IAAA;AAAA,QACX,wBAAA,EAA0B,IAAA;AAAA,QAC1B,sBAAA,EAAwB,IAAA;AAAA,QACxB,yBAAA,EAA2B,IAAA;AAAA,QAC3B,uBAAA,EAAyB,IAAA;AAAA,QACzB,wBAAA,EAA0B;AAAA,OAC5B;AACA,MAAAA,WAAAA,CAAW,UAAU,kBAAA,GAAqB;AAAA,QACxC,OAAA;AAAA,QACA,OAAA,EAAS,IAAA;AAAA,QACT,iBAAA,EAAmB;AAAA,OACrB;AACA,MAAAA,WAAAA,CAAW,UAAU,kBAAA,GAAqB;AAAA,QACxC,OAAA;AAAA,QACA,OAAA,EAAS,IAAA;AAAA,QACT,iBAAA,EAAmB,GAAA;AAAA,QACnB,aAAA,EAAe,GAAA;AAAA,QACf,KAAA,EAAO,IAAA;AAAA,QACP,eAAe,EAAC;AAAA,QAChB,YAAA,EAAc,IAAA;AAAA,QACd,cAAA,EAAgB,KAAA;AAAA,QAChB,UAAA,EAAY;AAAA,OACd;AACA,MAAAA,WAAAA,CAAW,UAAU,gBAAA,GAAmB;AAAA,QACtC,SAAA,EAAW,OAAA;AAAA,QACX,UAAA,EAAY,IAAA;AAAA,QACZ,EAAA,EAAI,SAAA;AAAA,QACJ,YAAA,EAAc,IAAA;AAAA,QACd,eAAA,EAAiB,KAAA;AAAA,QACjB;AAAA,OACF;AACA,MAAAA,WAAAA,CAAW,UAAU,YAAA,GAAe;AAAA,QAClC,mBAAA,EAAqB,2DAAA;AAAA,QACrB,eAAA,EAAiB,IAAA;AAAA,QACjB,gBAAA,EAAkB;AAAA,OACpB;AACA,MAAA,OAAOA,WAAAA;AAAA,IACT,CAAA,CAAE,KAAK,MAAM,CAAA;AAEb,IAAAzB,QAAO,OAAA,GAAU,UAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACjlBjB,IAAA,WAAA,GAAA,UAAA,CAAA;AAAA,EAAA,iFAAA,CAAAH,UAAAG,OAAAA,EAAA;AAEA,IAAAA,QAAO,OAAA,GAAU,kBAAA,EAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACFjB,IAAA,iBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,6IAAA,CAAAH,QAAAA,EAAA;AACA,IAAA,IAAI,eAAA,GAAmBA,QAAAA,IAAQA,QAAAA,CAAK,eAAA,IAAoB,SAAU+B,IAAAA,EAAK;AACnE,MAAA,OAAQA,QAAOA,IAAAA,CAAI,UAAA,GAAcA,IAAAA,GAAM,EAAE,WAAWA,IAAAA,EAAI;AAAA,IAC5D,CAAA;AACA,IAAA,MAAA,CAAO,eAAe/B,QAAAA,EAAS,YAAA,EAAc,EAAE,KAAA,EAAO,MAAM,CAAA;AAC5D,IAAAA,SAAQ,UAAA,GAAa,MAAA;AACrB,IAAA,IAAI,YAAA,GAAe,WAAA,EAAA;AACnB,IAAA,MAAA,CAAO,eAAeA,QAAAA,EAAS,YAAA,EAAc,EAAE,UAAA,EAAY,IAAA,EAAM,KAAK,WAAY;AAAE,MAAA,OAAO,eAAA,CAAgB,YAAY,CAAA,CAAE,OAAA;AAAA,IAAS,GAAG,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACPrI,IAAA,WAAA,GAAA,UAAA,CAAA;AAAA,EAAA,uIAAA,CAAAA,QAAAA,EAAA;AACA,IAAA,MAAA,CAAO,eAAeA,QAAAA,EAAS,YAAA,EAAc,EAAE,KAAA,EAAO,MAAM,CAAA;AAC5D,IAAAA,QAAAA,CAAQ,eAAA,GAAkBA,QAAAA,CAAQ,YAAA,GAAeA,SAAQ,kBAAA,GAAqB,MAAA;AAC9E,IAAA,IAAM,cAAA,GAAiB,iBAAA,EAAA;AACvB,IAAA,IAAM,OAAA,uBAAc,GAAA,EAAI;AACxB,IAAA,IAAM,eAAA,GAAkB,OAAO,GAAA,EAAK,IAAA,KAAS;AACzC,MAAA,IAAI,QAAA,GAAW,IAAA;AACf,MAAA,GAAA,CAAI,IAAI,MAAA,CAAO,GAAA,CAAI,OAAO,IAAA,EAAM,MAAA,EAAQ,SAAS,MAAA,KAAW;AACxD,QAAA,IAAI,CAAC,QAAA,EAAU;AACX,UAAA,OAAO,IAAA,CAAK,MAAA,EAAQ,OAAA,EAAS,MAAM,CAAA;AAAA,QACvC;AAEA,QAAA,QAAA,GAAW,KAAA;AACX,QAAA,OAAA,CAAQ,IAAI,OAAO,CAAA;AACnB,QAAA,IAAI;AACA,UAAA,MAAM,MAAA,GAAS,MAAM,IAAA,CAAK,MAAA,EAAQ,SAAS,MAAM,CAAA;AACjD,UAAA,OAAO,MAAA;AAAA,QACX,CAAA,SACA;AACI,UAAA,OAAA,CAAQ,OAAO,OAAO,CAAA;AAAA,QAC1B;AAAA,MACJ,CAAC,CAAA;AACD,MAAA,MAAM,IAAA,EAAK;AAAA,IACf,CAAA;AACA,IAAAA,SAAQ,eAAA,GAAkB,eAAA;AAC1B,IAAA,IAAMgC,aAAAA,GAAe,CAAC,IAAA,GAAO,EAAC,KAAM;AAChC,MAAA,IAAI,IAAI,EAAA,EAAI,EAAA;AACZ,MAAA,MAAM,gBAAgB,EAAA,GAAK,IAAA,CAAK,YAAY,IAAA,IAAQ,EAAA,KAAO,SAAS,EAAA,GAAK;AAAA,QACrE,SAAA,EAAW,EAAA;AAAA,QACX,sBAAA,EAAwB,EAAA;AAAA,QACxB,wBAAA,EAA0B;AAAA,OAC9B;AACA,MAAA,MAAM,eAAe,EAAA,GAAK,IAAA,CAAK,WAAW,IAAA,IAAQ,EAAA,KAAO,SAAS,EAAA,GAAK;AAAA,QACnE,aAAA,EAAe,CAAA;AAAA,QACf,OAAA,EAAS,GAAA;AAAA,QACT,SAAA,EAAW,EAAA;AAAA,QACX,sBAAA,EAAwB,EAAA;AAAA,QACxB,wBAAA,EAA0B;AAAA,OAC9B;AACA,MAAA,MAAM,aAAa,EAAA,GAAK,IAAA,CAAK,SAAS,IAAA,IAAQ,EAAA,KAAO,SAAS,EAAA,GAAK;AAAA,QAC/D,aAAA,EAAe,CAAA;AAAA,QACf,OAAA,EAAS;AAAA,OACb;AACA,MAAA,MAAM,eAAA,GAAkB,IAAI,cAAA,CAAe,UAAA,CAAW,YAAY,CAAA;AAClE,MAAA,MAAM,cAAA,GAAiB,IAAI,cAAA,CAAe,UAAA,CAAW,MAAM,WAAW,CAAA;AACtE,MAAA,MAAM,YAAA,GAAe,IAAI,cAAA,CAAe,UAAA,CAAW,MAAM,SAAS,CAAA;AAClE,MAAA,cAAA,CAAe,GAAG,SAAA,EAAW,CAAC,cAAc,SAAA,CAAU,KAAA,CAAM,eAAe,CAAC,CAAA;AAC5E,MAAA,YAAA,CAAa,GAAG,SAAA,EAAW,CAAC,cAAc,SAAA,CAAU,KAAA,CAAM,eAAe,CAAC,CAAA;AAC1E,MAAA,MAAM,WAAA,GAAc,OAAO,IAAA,EAAM,MAAA,EAAQ,SAAS,MAAA,KAAW;AACzD,QAAA,IAAI,CAAC,WAAW,EAAE,SAAA,IAAa,YAAY,OAAA,CAAQ,GAAA,CAAI,OAAO,CAAA,EAAG;AAC7D,UAAA,OAAO,IAAA,CAAK,MAAA,EAAQ,OAAA,EAAS,MAAM,CAAA;AAAA,QACvC;AAEA,QAAA,MAAM,MAAA,GAAS,MAAA,CAAO,OAAA,CAAQ,OAAO,CAAA;AACrC,QAAA,MAAM,UAAU,MAAA,GAAS,CAAA;AACzB,QAAA,MAAM,SAAA,GAAY,OAAA,GACZ,cAAA,CAAe,GAAA,CAAI,CAAA,EAAG,MAAM,CAAA,CAAE,CAAA,GAC9B,YAAA,CAAa,GAAA,CAAI,CAAA,EAAG,MAAM,CAAA,CAAE,CAAA;AAClC,QAAA,OAAO,UAAU,QAAA,CAAS,MAAM,KAAK,MAAA,EAAQ,OAAA,EAAS,MAAM,CAAC,CAAA;AAAA,MACjE,CAAA;AACA,MAAA,OAAO,WAAA;AAAA,IACX,CAAA;AACA,IAAAhC,SAAQ,YAAA,GAAegC,aAAAA;AACvB,IAAA,IAAM,kBAAA,GAAqB,eAAe,UAAA,CAAW,QAAA;AACrD,IAAAhC,SAAQ,kBAAA,GAAqB,kBAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;AChE7B,IAAA,eAAA,GAAA,EAAA;AAAA,QAAA,CAAA,eAAA,EAAA;AAAA,EAAA,mBAAA,EAAA,MAAA,mBAAA;AAAA,EAAA,YAAA,EAAA,MAAA;AAAA,CAAA,CAAA;AA+BO,SAAS,aAAa,IAAA,EAAoC;AAC/D,EAAA,MAAM,OAAA,GAAU,KAAK,IAAA,EAAK;AAE1B,EAAA,MAAM,KAAA,GAAQ,0BAAA,CAA2B,IAAA,CAAK,OAAO,CAAA;AACrD,EAAA,IAAI,CAAC,OAAO,OAAO,IAAA;AAEnB,EAAA,MAAM,IAAA,GAAA,CAAQ,KAAA,CAAM,CAAC,CAAA,IAAK,IAAI,WAAA,EAAY;AAC1C,EAAA,MAAM,IAAA,GAAA,CAAQ,KAAA,CAAM,CAAC,CAAA,IAAK,IAAI,IAAA,EAAK;AACnC,EAAA,MAAM,OAAO,IAAA,GAAO,IAAA,CAAK,KAAA,CAAM,KAAK,IAAI,EAAC;AAEzC,EAAA,OAAO,oBAAoB,KAAA,CAAM,EAAE,MAAM,IAAA,EAAM,OAAA,EAAS,SAAS,CAAA;AACnE;AA1CA,IAGa;AAHb,IAAA,YAAA,GAAA,KAAA,CAAA;AAAA,EAAA,uBAAA,GAAA;AAGO,IAAM,mBAAA,GAAsBiC,EAAE,MAAA,CAAO;AAAA,MAC1C,IAAA,EAAMA,CAAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA;AAAA,MACtB,IAAA,EAAMA,CAAAA,CAAE,KAAA,CAAMA,CAAAA,CAAE,QAAQ,CAAA;AAAA,MACxB,OAAA,EAASA,EAAE,MAAA;AAAO,KACnB,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACPD,IAQsB;AARtB,IAAA,iBAAA,GAAA,KAAA,CAAA;AAAA,EAAA,0BAAA,GAAA;AAKA,IAAA,YAAA,EAAA;AACA,IAAA,WAAA,EAAA;AAEO,IAAe,cAAf,MAAsD;AAAA,MACjD,WAAA,CACQ,EAAA,EACA,IAAA,EACG,WAAA,EACA,YACA,MAAA,EACnB;AALgB,QAAA,IAAA,CAAA,EAAA,GAAA,EAAA;AACA,QAAA,IAAA,CAAA,IAAA,GAAA,IAAA;AACG,QAAA,IAAA,CAAA,WAAA,GAAA,WAAA;AACA,QAAA,IAAA,CAAA,UAAA,GAAA,UAAA;AACA,QAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AAAA,MAClB;AAAA;AAAA;AAAA;AAAA;AAAA,MAWH,MAAgB,eAAe,GAAA,EAAqC;AAClE,QAAA,MAAM,MAAA,GAAS,YAAA,CAAa,GAAA,CAAI,IAAI,CAAA;AACpC,QAAA,IAAI,CAAC,MAAA,EAAQ;AAEb,QAAA,MAAM,GAAA,GAAM;AAAA,UACV,QAAQ,GAAA,CAAI,MAAA;AAAA,UACZ,SAAS,MAAA,CAAO,IAAA;AAAA,UAChB,MAAM,MAAA,CAAO,IAAA;AAAA,UACb,WAAW,GAAA,CAAI,SAAA;AAAA,UACf,OAAA,EAAS;AAAA,SACX;AAEA,QAAA,IAAI,MAAA;AACJ,QAAA,IAAI;AACF,UAAA,MAAA,GAAS,MAAM,IAAA,CAAK,UAAA,CAAW,QAAA,CAAS,GAAG,CAAA;AAAA,QAC7C,SAAS1B,IAAAA,EAAK;AACZ,UAAA,MAAM,MAAA,GAASA,IAAAA,YAAe,QAAA,GAAWA,IAAAA,GAAM,IAAI,QAAA,CAAS,kBAAA,EAAoB,EAAE,KAAA,EAAOA,IAAAA,YAAe,KAAA,GAAQA,IAAAA,GAAM,QAAW,CAAA;AACjI,UAAA,MAAA,GAAS,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,MAAA,EAAO;AAAA,QACtC;AAEA,QAAA,IAAI,OAAO,EAAA,EAAI;AACb,UAAA,MAAM,IAAA,CAAK,IAAA,CAAK,GAAA,CAAI,MAAA,EAAQ,OAAO,KAAK,CAAA;AAAA,QAC1C,CAAA,MAAO;AACL,UAAA,MAAM,IAAA,CAAK,IAAA,CAAK,GAAA,CAAI,MAAA,EAAQ;AAAA,YAC1B,IAAA,EAAM,OAAA;AAAA,YACN,OAAA,EAAS,IAAA,CAAK,kBAAA,CAAmB,MAAA,CAAO,KAAK;AAAA,WAC9C,CAAA;AAAA,QACH;AAAA,MACF;AAAA,MAEQ,mBAAmB,KAAA,EAAyB;AAClD,QAAA,IAAI,iBAAiB,oBAAA,EAAsB;AACzC,UAAA,OAAO,CAAA,mDAAA,CAAA;AAAA,QACT;AACA,QAAA,OAAO,KAAA,CAAM,OAAA;AAAA,MACf;AAAA,MAEU,QAAA,CAAS,KAAA,EAAe,IAAA,GAAgC,EAAC,EAAS;AAC1E,QAAA,IAAA,CAAK,MAAA,CAAO,IAAA,CAAK,CAAA,CAAA,EAAI,IAAA,CAAK,IAAI,CAAA,EAAA,EAAK,KAAK,CAAA,CAAA,EAAI,EAAE,OAAA,EAAS,IAAA,CAAK,EAAA,EAAI,GAAG,MAAM,CAAA;AAAA,MAC3E;AAAA,KACF;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACiBA,SAAS,YAAY,KAAA,EAAuB;AAC1C,EAAA,IAAI,KAAA,GAAQ,IAAA,EAAM,OAAO,CAAA,EAAG,KAAK,CAAA,CAAA,CAAA;AACjC,EAAA,IAAI,KAAA,GAAQ,OAAO,IAAA,EAAM,OAAO,IAAI,KAAA,GAAQ,IAAA,EAAM,OAAA,CAAQ,CAAC,CAAC,CAAA,CAAA,CAAA;AAC5D,EAAA,OAAO,IAAI,KAAA,IAAS,IAAA,GAAO,IAAA,CAAA,EAAO,OAAA,CAAQ,CAAC,CAAC,CAAA,CAAA,CAAA;AAC9C;AAvFA,IAYM,cAEO,2BAAA,CAAA,CAGA;AAjBb,IAAA,cAAA,GAAA,KAAA,CAAA;AAAA,EAAA,oCAAA,GAAA;AAEA,IAAA,WAAA,EAAA;AAUA,IAAM,YAAA,GAAe,2BAAA;AAEd,IAAM,2BAAA,GAA8B,IAAA;AAGpC,IAAM,oBAAN,MAAqD;AAAA;AAAA;AAAA;AAAA,MAI1D,WAAW,IAAA,EAAsB;AAC/B,QAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,YAAA,EAAc,MAAM,CAAA;AAAA,MAC1C;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,UAAA,CAAW,MAAc,QAAA,EAA2B;AAClD,QAAA,MAAM,OAAO,QAAA,IAAY,EAAA;AAGzB,QAAA,MAAM,QAAA,GAAW,IAAA,CAAK,OAAA,CAAQ,MAAA,EAAQ,KAAK,CAAA;AAC3C,QAAA,MAAM,OAAA,GAAU,SAAS,IAAI;AAAA,EAAK,QAAQ;AAAA,MAAA,CAAA;AAE1C,QAAA,IAAI,OAAA,CAAQ,MAAA,IAAU,2BAAA,EAA6B,OAAO,OAAA;AAG1D,QAAA,MAAM,QAAA,GAAW,IAAI,IAAA,CAAK,MAAA;AAC1B,QAAA,MAAM,OAAA,GAAU,8BAA8B,QAAA,GAAW,EAAA;AACzD,QAAA,OAAO,SAAS,IAAI;AAAA,EAAK,QAAA,CAAS,KAAA,CAAM,CAAA,EAAG,OAAO,CAAC;AAAA;AAAA,MAAA,CAAA;AAAA,MACrD;AAAA;AAAA;AAAA;AAAA,MAKA,YAAY,KAAA,EAAyB;AACnC,QAAA,IAAI,iBAAiB,qBAAA,EAAuB;AAC1C,UAAA,OAAO,CAAA;AAAA,uBAAA,EAA6C,KAAK,YAAA,CAAa,KAAA,CAAM,OAAA,CAAQ,UAAU,CAAW,CAAC,CAAA,EAAA,CAAA;AAAA,QAC5G;AACA,QAAA,IAAI,iBAAiB,oBAAA,EAAsB;AACzC,UAAA,MAAM,MAAM,IAAA,CAAK,YAAA,CAAa,KAAA,CAAM,OAAA,CAAQ,SAAS,CAAW,CAAA;AAChE,UAAA,OAAO,8BAAyB,GAAG,CAAA;AAAA,oCAAA,CAAA;AAAA,QACrC;AACA,QAAA,IAAI,iBAAiB,gBAAA,EAAkB;AACrC,UAAA,OAAO,CAAA,aAAA,EAAM,IAAA,CAAK,UAAA,CAAW,KAAA,CAAM,OAAO,CAAC,CAAA,CAAA;AAAA,QAC7C;AACA,QAAA,IAAI,iBAAiB,mBAAA,EAAqB;AACxC,UAAA,OAAO,CAAA;AAAA,EAAyB,IAAA,CAAK,UAAA,CAAW,KAAA,CAAM,OAAO,CAAC,CAAA,CAAA;AAAA,QAChE;AACA,QAAA,IAAI,iBAAiB,cAAA,EAAgB;AACnC,UAAA,OAAO,CAAA,yDAAA,CAAA;AAAA,QACT;AAEA,QAAA,OAAO,CAAA,kDAAA,CAAA;AAAA,MACT;AAAA;AAAA;AAAA;AAAA,MAKA,eAAA,CAAgB,IAAA,EAAc,KAAA,EAAgB,IAAA,EAAuB;AACnE,QAAA,MAAM,IAAA,GAAO,QAAQ,WAAA,GAAO,WAAA;AAC5B,QAAA,MAAM,OAAA,GAAU,IAAA,KAAS,MAAA,IAAa,CAAC,KAAA,GAAQ,CAAA,IAAA,EAAO,IAAA,CAAK,UAAA,CAAW,WAAA,CAAY,IAAI,CAAC,CAAC,CAAA,GAAA,CAAA,GAAQ,EAAA;AAChG,QAAA,OAAO,CAAA,EAAG,IAAI,CAAA,GAAA,EAAM,IAAA,CAAK,aAAa,IAAI,CAAC,KAAK,OAAO,CAAA,CAAA;AAAA,MACzD;AAAA;AAAA,MAGQ,aAAa,IAAA,EAAsB;AACzC,QAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,IAAA,EAAM,GAAG,CAAA;AAAA,MAC/B;AAAA,KACF;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACjFA,IAAA,eAAA,GAAA,EAAA;AAAA,QAAA,CAAA,eAAA,EAAA;AAAA,EAAA,eAAA,EAAA,MAAA;AAAA,CAAA,CAAA;AAAA,IACA,4BAAA,CAAA,CAiBa;AAlBb,IAAA,YAAA,GAAA,KAAA,CAAA;AAAA,EAAA,kCAAA,GAAA;AACA,IAAA,4BAAA,GAA6B,OAAA,CAAA,WAAA,EAAA,CAAA;AAC7B,IAAA,iBAAA,EAAA;AACA,IAAA,cAAA,EAAA;AAKA,IAAA,WAAA,EAAA;AAUO,IAAM,eAAA,GAAN,cAA8B,WAAA,CAAY;AAAA,MACvC,GAAA,GAAkB,IAAA;AAAA,MACT,KAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACT,kBAAkE,EAAC;AAAA,MAE3E,WAAA,CACER,QAAAA,EACA,WAAA,EACA,UAAA,EACA,MAAA,EACA;AACA,QAAA,KAAA,CAAM,UAAA,EAAY,UAAA,EAAY,WAAA,EAAa,UAAA,EAAY,MAAM,CAAA;AAC7D,QAAA,IAAA,CAAK,QAAQA,QAAAA,CAAQ,KAAA;AACrB,QAAA,IAAA,CAAK,SAAA,GAAY,IAAI,iBAAA,EAAkB;AACvC,QAAA,IAAA,CAAK,SAAA,GAAYA,SAAQ,gBAAA,IAAoB,GAAA;AAAA,MAC/C;AAAA,MAEA,MAAM,KAAA,GAAuB;AAC3B,QAAA,MAAM,GAAA,GAAM,IAAI,GAAA,CAAI,IAAA,CAAK,KAAK,CAAA;AAG9B,QAAA,GAAA,CAAI,GAAA,CAAI,MAAA,CAAO,GAAA,CAAA,IAAI,4BAAA,CAAA,YAAA,GAAc,CAAA;AAGjC,QAAA,GAAA,CAAI,EAAA,CAAG,cAAA,EAAgB,OAAO,GAAA,KAAQ;AACpC,UAAA,MAAM,GAAA,GAAM,IAAA,CAAK,gBAAA,CAAiB,GAAG,CAAA;AACrC,UAAA,IAAI,CAAC,GAAA,EAAK;AAEV,UAAA,KAAA,MAAWiB,EAAAA,IAAK,IAAA,CAAK,eAAA,EAAiB,MAAMA,GAAE,GAAG,CAAA;AACjD,UAAA,MAAM,IAAA,CAAK,eAAe,GAAG,CAAA;AAAA,QAC/B,CAAC,CAAA;AAGD,QAAA,GAAA,CAAI,EAAA,CAAG,qBAAA,EAAuB,OAAO,GAAA,KAAQ;AAC3C,UAAA,MAAM,IAAI,mBAAA,EAAoB;AAC9B,UAAA,MAAM,IAAA,GAAO,IAAI,aAAA,CAAc,IAAA;AAC/B,UAAA,MAAM,MAAA,GAAS,MAAA,CAAO,GAAA,CAAI,IAAA,CAAK,EAAE,CAAA;AACjC,UAAA,MAAM,YAAY,MAAA,CAAO,GAAA,CAAI,MAAM,EAAA,IAAM,GAAA,CAAI,KAAK,EAAE,CAAA;AACpD,UAAA,MAAM,GAAA,GAAuB;AAAA,YAC3B,EAAA,EAAI,CAAA,IAAA,EAAO,GAAA,CAAI,aAAA,CAAc,EAAE,CAAA,CAAA;AAAA,YAC/B,MAAA;AAAA,YACA,SAAA;AAAA,YACA,IAAA;AAAA,YACA,SAAA,sBAAe,IAAA,EAAK;AAAA,YACpB,aAAa;AAAC,WAChB;AACA,UAAA,MAAM,IAAA,CAAK,eAAe,GAAG,CAAA;AAAA,QAC/B,CAAC,CAAA;AAGD,QAAA,GAAA,CAAI,KAAA,CAAM,CAACT,IAAAA,KAAQ;AACjB,UAAA,IAAA,CAAK,MAAA,CAAO,MAAM,gBAAA,EAAkB;AAAA,YAClC,SAAS,IAAA,CAAK,EAAA;AAAA,YACd,GAAA,EAAKA,KAAI,KAAA,YAAiB,KAAA,GAAQA,KAAI,KAAA,CAAM,OAAA,GAAU,MAAA,CAAOA,IAAAA,CAAI,KAAK;AAAA,WACvE,CAAA;AAAA,QACH,CAAC,CAAA;AAED,QAAA,IAAA,CAAK,GAAA,GAAM,GAAA;AAGX,QAAA,GAAA,CAAI,KAAA,CAAM;AAAA,UACR,OAAA,EAAS,MAAM,IAAA,CAAK,QAAA,CAAS,wBAAwB;AAAA,SACtD,CAAA,CAAE,KAAA,CAAM,CAACA,IAAAA,KAAiB;AACzB,UAAA,IAAA,CAAK,MAAA,CAAO,MAAM,0BAAA,EAA4B,EAAE,KAAK,MAAA,CAAOA,IAAG,GAAG,CAAA;AAAA,QACpE,CAAC,CAAA;AAAA,MACH;AAAA,MAEA,MAAM,IAAA,GAAsB;AAC1B,QAAA,IAAI,KAAK,GAAA,EAAK;AACZ,UAAA,MAAM,IAAA,CAAK,IAAI,IAAA,EAAK;AACpB,UAAA,IAAA,CAAK,GAAA,GAAM,IAAA;AAAA,QACb;AACA,QAAA,IAAA,CAAK,kBAAkB,EAAC;AACxB,QAAA,IAAA,CAAK,SAAS,SAAS,CAAA;AAAA,MACzB;AAAA,MAEA,MAAM,IAAA,CAAK,MAAA,EAAgB,OAAA,EAAyC;AAClE,QAAA,IAAI,CAAC,IAAA,CAAK,GAAA,EAAK,MAAM,IAAI,cAAc,iBAAiB,CAAA;AAExD,QAAA,MAAM,MAAA,GAAS,OAAO,MAAM,CAAA;AAC5B,QAAA,IAAI,MAAA,CAAO,KAAA,CAAM,MAAM,CAAA,EAAG;AACxB,UAAA,IAAA,CAAK,MAAA,CAAO,IAAA,CAAK,kCAAA,EAAoC,EAAE,QAAQ,CAAA;AAC/D,UAAA;AAAA,QACF;AAEA,QAAA,IAAI;AACF,UAAA,QAAQ,QAAQ,IAAA;AAAM,YACpB,KAAK,MAAA,EAAQ;AACX,cAAA,MAAM,IAAA,GAAO,KAAK,QAAA,CAAS,IAAA,CAAK,UAAU,UAAA,CAAW,OAAA,CAAQ,IAAI,CAAC,CAAA;AAClE,cAAA,MAAM,IAAA,CAAK,IAAI,GAAA,CAAI,WAAA,CAAY,QAAQ,IAAA,EAAM,EAAE,UAAA,EAAY,YAAA,EAAc,CAAA;AACzE,cAAA;AAAA,YACF;AAAA,YACA,KAAK,MAAA,EAAQ;AACX,cAAA,MAAM,OAAO,IAAA,CAAK,SAAA,CAAU,WAAW,OAAA,CAAQ,IAAA,EAAM,QAAQ,QAAQ,CAAA;AACrE,cAAA,MAAM,IAAA,CAAK,IAAI,GAAA,CAAI,WAAA,CAAY,QAAQ,IAAA,EAAM,EAAE,UAAA,EAAY,YAAA,EAAc,CAAA;AACzE,cAAA;AAAA,YACF;AAAA,YACA,KAAK,OAAA,EAAS;AACZ,cAAA,MAAM,OAAA,GAAU,KAAK,SAAA,CAAU,WAAA;AAAA,gBAC7B,OAAO,MAAA,CAAO,IAAI,KAAA,CAAM,OAAA,CAAQ,OAAO,CAAA,EAAG,EAAE,IAAA,EAAM,WAAA,EAAa,SAAS,EAAC,EAAG,OAAO,OAAO,KAAK;AAAA,eACjG;AACA,cAAA,MAAM,IAAA,CAAK,IAAI,GAAA,CAAI,WAAA,CAAY,QAAQ,OAAA,EAAS,EAAE,UAAA,EAAY,YAAA,EAAc,CAAA;AAC5E,cAAA;AAAA,YACF;AAAA;AACF,QACF,SAASA,IAAAA,EAAK;AACZ,UAAA,MAAM,IAAI,aAAA;AAAA,YACR,6BAA6B,MAAM,CAAA,CAAA;AAAA,YACnCA,IAAAA,YAAe,QAAQA,IAAAA,GAAM;AAAA,WAC/B;AAAA,QACF;AAAA,MACF;AAAA,MAEA,UAAU,OAAA,EAAwD;AAChE,QAAA,IAAA,CAAK,eAAA,CAAgB,KAAK,OAAO,CAAA;AAAA,MACnC;AAAA,MAEQ,iBAAiB,GAAA,EAAsC;AAC7D,QAAA,IAAI,CAAC,GAAA,CAAI,OAAA,EAAS,IAAA,IAAQ,CAAC,IAAI,IAAA,IAAQ,CAAC,GAAA,CAAI,IAAA,EAAM,OAAO,IAAA;AACzD,QAAA,OAAO;AAAA,UACL,EAAA,EAAI,MAAA,CAAO,GAAA,CAAI,OAAA,CAAQ,UAAU,CAAA;AAAA,UACjC,MAAA,EAAQ,MAAA,CAAO,GAAA,CAAI,IAAA,CAAK,EAAE,CAAA;AAAA,UAC1B,SAAA,EAAW,MAAA,CAAO,GAAA,CAAI,IAAA,CAAK,EAAE,CAAA;AAAA,UAC7B,IAAA,EAAM,IAAI,OAAA,CAAQ,IAAA;AAAA,UAClB,WAAW,IAAI,IAAA,CAAK,GAAA,CAAI,OAAA,CAAQ,OAAO,GAAI,CAAA;AAAA,UAC3C,aAAa;AAAC,SAChB;AAAA,MACF;AAAA,MAEQ,SAAS,IAAA,EAAsB;AACrC,QAAA,IAAI,IAAA,CAAK,MAAA,IAAU,IAAA,CAAK,SAAA,EAAW,OAAO,IAAA;AAC1C,QAAA,OAAO,KAAK,KAAA,CAAM,CAAA,EAAG,IAAA,CAAK,SAAA,GAAY,EAAE,CAAA,GAAI,+BAAA;AAAA,MAC9C;AAAA,KACF;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACvEA,SAAS2B,aAAY,KAAA,EAAuB;AAC1C,EAAA,IAAI,KAAA,GAAQ,IAAA,EAAM,OAAO,CAAA,EAAG,KAAK,CAAA,CAAA,CAAA;AACjC,EAAA,IAAI,KAAA,GAAQ,OAAO,IAAA,EAAM,OAAO,IAAI,KAAA,GAAQ,IAAA,EAAM,OAAA,CAAQ,CAAC,CAAC,CAAA,CAAA,CAAA;AAC5D,EAAA,OAAO,IAAI,KAAA,IAAS,IAAA,GAAO,IAAA,CAAA,EAAO,OAAA,CAAQ,CAAC,CAAC,CAAA,CAAA,CAAA;AAC9C;AAtFA,IAkBa,0BAAA,CAAA,CAGA;AArBb,IAAAC,eAAAA,GAAA,KAAA,CAAA;AAAA,EAAA,mCAAA,GAAA;AAEA,IAAA,WAAA,EAAA;AAgBO,IAAM,0BAAA,GAA6B,GAAA;AAGnC,IAAM,mBAAN,MAAoD;AAAA;AAAA;AAAA;AAAA;AAAA,MAKzD,WAAW,IAAA,EAAsB;AAC/B,QAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,aAAA,EAAe,MAAM,CAAA;AAAA,MAC3C;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,UAAA,CAAW,MAAc,QAAA,EAA2B;AAClD,QAAA,MAAM,OAAO,QAAA,IAAY,EAAA;AAEzB,QAAA,MAAM,QAAA,GAAW,IAAA,CAAK,OAAA,CAAQ,MAAA,EAAQ,KAAK,CAAA;AAC3C,QAAA,MAAM,OAAA,GAAU,SAAS,IAAI;AAAA,EAAK,QAAQ;AAAA,MAAA,CAAA;AAE1C,QAAA,IAAI,OAAA,CAAQ,MAAA,IAAU,0BAAA,EAA4B,OAAO,OAAA;AAEzD,QAAA,MAAM,QAAA,GAAW,IAAI,IAAA,CAAK,MAAA;AAC1B,QAAA,MAAM,OAAA,GAAU,6BAA6B,QAAA,GAAW,EAAA;AACxD,QAAA,OAAO,SAAS,IAAI;AAAA,EAAK,QAAA,CAAS,KAAA,CAAM,CAAA,EAAG,OAAO,CAAC;AAAA;AAAA,MAAA,CAAA;AAAA,MACrD;AAAA;AAAA;AAAA;AAAA,MAKA,YAAY,KAAA,EAAyB;AACnC,QAAA,IAAI,iBAAiB,qBAAA,EAAuB;AAC1C,UAAA,MAAM,QAAA,GAAW,KAAA,CAAM,OAAA,CAAQ,UAAU,CAAA;AACzC,UAAA,OAAO,0DAAgD,QAAQ,CAAA,EAAA,CAAA;AAAA,QACjE;AACA,QAAA,IAAI,iBAAiB,oBAAA,EAAsB;AACzC,UAAA,MAAM,GAAA,GAAM,KAAA,CAAM,OAAA,CAAQ,SAAS,CAAA;AACnC,UAAA,OAAO,6BAAwB,GAAG,CAAA,4CAAA,CAAA;AAAA,QACpC;AACA,QAAA,IAAI,iBAAiB,gBAAA,EAAkB;AACrC,UAAA,OAAO,CAAA,aAAA,EAAM,MAAM,OAAO,CAAA,CAAA;AAAA,QAC5B;AACA,QAAA,IAAI,iBAAiB,mBAAA,EAAqB;AACxC,UAAA,OAAO,CAAA,qCAAA,EAA4B,MAAM,OAAO,CAAA,CAAA;AAAA,QAClD;AACA,QAAA,IAAI,iBAAiB,cAAA,EAAgB;AACnC,UAAA,OAAO,CAAA,qDAAA,CAAA;AAAA,QACT;AAEA,QAAA,OAAO,CAAA,8CAAA,CAAA;AAAA,MACT;AAAA;AAAA;AAAA;AAAA,MAKA,eAAA,CAAgB,IAAA,EAAc,KAAA,EAAgB,IAAA,EAAuB;AACnE,QAAA,MAAM,IAAA,GAAO,QAAQ,WAAA,GAAO,WAAA;AAC5B,QAAA,MAAM,OAAA,GAAU,SAAS,MAAA,IAAa,CAAC,QAAQ,CAAA,EAAA,EAAKD,YAAAA,CAAY,IAAI,CAAC,CAAA,CAAA,CAAA,GAAM,EAAA;AAC3E,QAAA,OAAO,CAAA,EAAG,IAAI,CAAA,GAAA,EAAM,IAAI,KAAK,OAAO,CAAA,CAAA;AAAA,MACtC;AAAA,KACF;AAAA,EAAA;AAAA,CAAA,CAAA;;;AChFA,IAAA,eAAA,GAAA,UAAA,CAAA;AAAA,EAAA,wEAAA,CAAAlC,UAAAG,OAAAA,EAAA;AAuBA,IAAA,IAAI,UAAU,KAAA,CAAM,OAAA;AAEpB,IAAAA,QAAO,OAAA,GAAU,OAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACzBjB,IAAA,kBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,4EAAA,CAAAH,UAAAG,OAAAA,EAAA;AACA,IAAA,IAAI,aAAa,OAAO,MAAA,IAAU,YAAY,MAAA,IAAU,MAAA,CAAO,WAAW,MAAA,IAAU,MAAA;AAEpF,IAAAA,QAAO,OAAA,GAAU,UAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACHjB,IAAA,YAAA,GAAA,UAAA,CAAA;AAAA,EAAA,sEAAA,CAAAH,UAAAG,OAAAA,EAAA;AAAA,IAAA,IAAI,UAAA,GAAa,kBAAA,EAAA;AAGjB,IAAA,IAAI,WAAW,OAAO,IAAA,IAAQ,YAAY,IAAA,IAAQ,IAAA,CAAK,WAAW,MAAA,IAAU,IAAA;AAG5E,IAAA,IAAI,IAAA,GAAO,UAAA,IAAc,QAAA,IAAY,QAAA,CAAS,aAAa,CAAA,EAAE;AAE7D,IAAAA,QAAO,OAAA,GAAU,IAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACRjB,IAAA,cAAA,GAAA,UAAA,CAAA;AAAA,EAAA,wEAAA,CAAAH,UAAAG,OAAAA,EAAA;AAAA,IAAA,IAAI,IAAA,GAAO,YAAA,EAAA;AAGX,IAAA,IAAIiC,UAAS,IAAA,CAAK,MAAA;AAElB,IAAAjC,QAAO,OAAA,GAAUiC,OAAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACLjB,IAAA,iBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,2EAAA,CAAApC,UAAAG,OAAAA,EAAA;AAAA,IAAA,IAAIiC,OAAAA,GAAS,cAAA,EAAA;AAGb,IAAA,IAAI,cAAc,MAAA,CAAO,SAAA;AAGzB,IAAA,IAAI,iBAAiB,WAAA,CAAY,cAAA;AAOjC,IAAA,IAAI,uBAAuB,WAAA,CAAY,QAAA;AAGvC,IAAA,IAAI,cAAA,GAAiBA,OAAAA,GAASA,OAAAA,CAAO,WAAA,GAAc,MAAA;AASnD,IAAA,SAAS,UAAU,KAAA,EAAO;AACxB,MAAA,IAAI,KAAA,GAAQ,eAAe,IAAA,CAAK,KAAA,EAAO,cAAc,CAAA,EACjD,GAAA,GAAM,MAAM,cAAc,CAAA;AAE9B,MAAA,IAAI;AACF,QAAA,KAAA,CAAM,cAAc,CAAA,GAAI,KAAA,CAAA;AACxB,QAAA,IAAI,QAAA,GAAW,IAAA;AAAA,MACjB,SAAS3B,EAAAA,EAAG;AAAA,MAAC;AAEb,MAAA,IAAI,MAAA,GAAS,oBAAA,CAAqB,IAAA,CAAK,KAAK,CAAA;AAC5C,MAAA,IAAI,QAAA,EAAU;AACZ,QAAA,IAAI,KAAA,EAAO;AACT,UAAA,KAAA,CAAM,cAAc,CAAA,GAAI,GAAA;AAAA,QAC1B,CAAA,MAAO;AACL,UAAA,OAAO,MAAM,cAAc,CAAA;AAAA,QAC7B;AAAA,MACF;AACA,MAAA,OAAO,MAAA;AAAA,IACT;AAEA,IAAAN,QAAO,OAAA,GAAU,SAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC7CjB,IAAA,sBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,gFAAA,CAAAH,UAAAG,OAAAA,EAAA;AACA,IAAA,IAAI,cAAc,MAAA,CAAO,SAAA;AAOzB,IAAA,IAAI,uBAAuB,WAAA,CAAY,QAAA;AASvC,IAAA,SAAS,eAAe,KAAA,EAAO;AAC7B,MAAA,OAAO,oBAAA,CAAqB,KAAK,KAAK,CAAA;AAAA,IACxC;AAEA,IAAAA,QAAO,OAAA,GAAU,cAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACrBjB,IAAA,kBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,4EAAA,CAAAH,UAAAG,OAAAA,EAAA;AAAA,IAAA,IAAIiC,OAAAA,GAAS,cAAA,EAAA;AAAb,IAAA,IACI,SAAA,GAAY,iBAAA,EAAA;AADhB,IAAA,IAEI,cAAA,GAAiB,sBAAA,EAAA;AAGrB,IAAA,IAAI,OAAA,GAAU,eAAA;AAAd,IAAA,IACI,YAAA,GAAe,oBAAA;AAGnB,IAAA,IAAI,cAAA,GAAiBA,OAAAA,GAASA,OAAAA,CAAO,WAAA,GAAc,MAAA;AASnD,IAAA,SAAS,WAAW,KAAA,EAAO;AACzB,MAAA,IAAI,SAAS,IAAA,EAAM;AACjB,QAAA,OAAO,KAAA,KAAU,SAAY,YAAA,GAAe,OAAA;AAAA,MAC9C;AACA,MAAA,OAAQ,cAAA,IAAkB,kBAAkB,MAAA,CAAO,KAAK,IACpD,SAAA,CAAU,KAAK,CAAA,GACf,cAAA,CAAe,KAAK,CAAA;AAAA,IAC1B;AAEA,IAAAjC,QAAO,OAAA,GAAU,UAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC3BjB,IAAA,oBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,6EAAA,CAAAH,UAAAG,OAAAA,EAAA;AAwBA,IAAA,SAAS,aAAa,KAAA,EAAO;AAC3B,MAAA,OAAO,KAAA,IAAS,IAAA,IAAQ,OAAO,KAAA,IAAS,QAAA;AAAA,IAC1C;AAEA,IAAAA,QAAO,OAAA,GAAU,YAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC5BjB,IAAA,gBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,yEAAA,CAAAH,UAAAG,OAAAA,EAAA;AAAA,IAAA,IAAI,UAAA,GAAa,kBAAA,EAAA;AAAjB,IAAA,IACI,YAAA,GAAe,oBAAA,EAAA;AAGnB,IAAA,IAAI,SAAA,GAAY,iBAAA;AAmBhB,IAAA,SAAS,SAAS,KAAA,EAAO;AACvB,MAAA,OAAO,OAAO,SAAS,QAAA,IACpB,YAAA,CAAa,KAAK,CAAA,IAAK,UAAA,CAAW,KAAK,CAAA,IAAK,SAAA;AAAA,IACjD;AAEA,IAAAA,QAAO,OAAA,GAAU,QAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC5BjB,IAAA,aAAA,GAAA,UAAA,CAAA;AAAA,EAAA,uEAAA,CAAAH,UAAAG,OAAAA,EAAA;AAAA,IAAA,IAAI,OAAA,GAAU,eAAA,EAAA;AAAd,IAAA,IACI,QAAA,GAAW,gBAAA,EAAA;AAGf,IAAA,IAAI,YAAA,GAAe,kDAAA;AAAnB,IAAA,IACI,aAAA,GAAgB,OAAA;AAUpB,IAAA,SAAS,KAAA,CAAM,OAAO,MAAA,EAAQ;AAC5B,MAAA,IAAI,OAAA,CAAQ,KAAK,CAAA,EAAG;AAClB,QAAA,OAAO,KAAA;AAAA,MACT;AACA,MAAA,IAAI,OAAO,OAAO,KAAA;AAClB,MAAA,IAAI,IAAA,IAAQ,QAAA,IAAY,IAAA,IAAQ,QAAA,IAAY,IAAA,IAAQ,aAChD,KAAA,IAAS,IAAA,IAAQ,QAAA,CAAS,KAAK,CAAA,EAAG;AACpC,QAAA,OAAO,IAAA;AAAA,MACT;AACA,MAAA,OAAO,aAAA,CAAc,IAAA,CAAK,KAAK,CAAA,IAAK,CAAC,YAAA,CAAa,IAAA,CAAK,KAAK,CAAA,IACzD,MAAA,IAAU,IAAA,IAAQ,KAAA,IAAS,OAAO,MAAM,CAAA;AAAA,IAC7C;AAEA,IAAAA,QAAO,OAAA,GAAU,KAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC5BjB,IAAA,gBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,yEAAA,CAAAH,UAAAG,OAAAA,EAAA;AAyBA,IAAA,SAAS,SAAS,KAAA,EAAO;AACvB,MAAA,IAAI,OAAO,OAAO,KAAA;AAClB,MAAA,OAAO,KAAA,IAAS,IAAA,KAAS,IAAA,IAAQ,QAAA,IAAY,IAAA,IAAQ,UAAA,CAAA;AAAA,IACvD;AAEA,IAAAA,QAAO,OAAA,GAAU,QAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC9BjB,IAAA,kBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,2EAAA,CAAAH,UAAAG,OAAAA,EAAA;AAAA,IAAA,IAAI,UAAA,GAAa,kBAAA,EAAA;AAAjB,IAAA,IACI,QAAA,GAAW,gBAAA,EAAA;AAGf,IAAA,IAAI,QAAA,GAAW,wBAAA;AAAf,IAAA,IACI,OAAA,GAAU,mBAAA;AADd,IAAA,IAEI,MAAA,GAAS,4BAAA;AAFb,IAAA,IAGI,QAAA,GAAW,gBAAA;AAmBf,IAAA,SAAS,WAAW,KAAA,EAAO;AACzB,MAAA,IAAI,CAAC,QAAA,CAAS,KAAK,CAAA,EAAG;AACpB,QAAA,OAAO,KAAA;AAAA,MACT;AAGA,MAAA,IAAI,GAAA,GAAM,WAAW,KAAK,CAAA;AAC1B,MAAA,OAAO,OAAO,OAAA,IAAW,GAAA,IAAO,MAAA,IAAU,GAAA,IAAO,YAAY,GAAA,IAAO,QAAA;AAAA,IACtE;AAEA,IAAAA,QAAO,OAAA,GAAU,UAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACpCjB,IAAA,kBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,4EAAA,CAAAH,UAAAG,OAAAA,EAAA;AAAA,IAAA,IAAI,IAAA,GAAO,YAAA,EAAA;AAGX,IAAA,IAAI,UAAA,GAAa,KAAK,oBAAoB,CAAA;AAE1C,IAAAA,QAAO,OAAA,GAAU,UAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACLjB,IAAA,gBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,0EAAA,CAAAH,UAAAG,OAAAA,EAAA;AAAA,IAAA,IAAI,UAAA,GAAa,kBAAA,EAAA;AAGjB,IAAA,IAAI,cAAc,WAAW;AAC3B,MAAA,IAAI,GAAA,GAAM,SAAS,IAAA,CAAK,UAAA,IAAc,WAAW,IAAA,IAAQ,UAAA,CAAW,IAAA,CAAK,QAAA,IAAY,EAAE,CAAA;AACvF,MAAA,OAAO,GAAA,GAAO,mBAAmB,GAAA,GAAO,EAAA;AAAA,IAC1C,CAAA,GAAE;AASF,IAAA,SAAS,SAAS,IAAA,EAAM;AACtB,MAAA,OAAO,CAAC,CAAC,UAAA,IAAe,UAAA,IAAc,IAAA;AAAA,IACxC;AAEA,IAAAA,QAAO,OAAA,GAAU,QAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACnBjB,IAAA,gBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,0EAAA,CAAAH,UAAAG,OAAAA,EAAA;AACA,IAAA,IAAI,YAAY,QAAA,CAAS,SAAA;AAGzB,IAAA,IAAI,eAAe,SAAA,CAAU,QAAA;AAS7B,IAAA,SAAS,SAAS,IAAA,EAAM;AACtB,MAAA,IAAI,QAAQ,IAAA,EAAM;AAChB,QAAA,IAAI;AACF,UAAA,OAAO,YAAA,CAAa,KAAK,IAAI,CAAA;AAAA,QAC/B,SAASM,EAAAA,EAAG;AAAA,QAAC;AACb,QAAA,IAAI;AACF,UAAA,OAAQ,IAAA,GAAO,EAAA;AAAA,QACjB,SAASA,EAAAA,EAAG;AAAA,QAAC;AAAA,MACf;AACA,MAAA,OAAO,EAAA;AAAA,IACT;AAEA,IAAAN,QAAO,OAAA,GAAU,QAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACzBjB,IAAA,oBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,8EAAA,CAAAH,UAAAG,OAAAA,EAAA;AAAA,IAAA,IAAI,UAAA,GAAa,kBAAA,EAAA;AAAjB,IAAA,IACI,QAAA,GAAW,gBAAA,EAAA;AADf,IAAA,IAEI,QAAA,GAAW,gBAAA,EAAA;AAFf,IAAA,IAGI,QAAA,GAAW,gBAAA,EAAA;AAMf,IAAA,IAAI,YAAA,GAAe,qBAAA;AAGnB,IAAA,IAAI,YAAA,GAAe,6BAAA;AAGnB,IAAA,IAAI,YAAY,QAAA,CAAS,SAAA;AAAzB,IAAA,IACI,cAAc,MAAA,CAAO,SAAA;AAGzB,IAAA,IAAI,eAAe,SAAA,CAAU,QAAA;AAG7B,IAAA,IAAI,iBAAiB,WAAA,CAAY,cAAA;AAGjC,IAAA,IAAI,UAAA,GAAa,MAAA;AAAA,MAAO,GAAA,GACtB,YAAA,CAAa,IAAA,CAAK,cAAc,CAAA,CAAE,OAAA,CAAQ,YAAA,EAAc,MAAM,CAAA,CAC7D,OAAA,CAAQ,wDAAA,EAA0D,OAAO,CAAA,GAAI;AAAA,KAChF;AAUA,IAAA,SAAS,aAAa,KAAA,EAAO;AAC3B,MAAA,IAAI,CAAC,QAAA,CAAS,KAAK,CAAA,IAAK,QAAA,CAAS,KAAK,CAAA,EAAG;AACvC,QAAA,OAAO,KAAA;AAAA,MACT;AACA,MAAA,IAAI,OAAA,GAAU,UAAA,CAAW,KAAK,CAAA,GAAI,UAAA,GAAa,YAAA;AAC/C,MAAA,OAAO,OAAA,CAAQ,IAAA,CAAK,QAAA,CAAS,KAAK,CAAC,CAAA;AAAA,IACrC;AAEA,IAAAA,QAAO,OAAA,GAAU,YAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC9CjB,IAAA,gBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,0EAAA,CAAAH,UAAAG,OAAAA,EAAA;AAQA,IAAA,SAASkC,SAAAA,CAAS,QAAQ,GAAA,EAAK;AAC7B,MAAA,OAAO,MAAA,IAAU,IAAA,GAAO,MAAA,GAAY,MAAA,CAAO,GAAG,CAAA;AAAA,IAChD;AAEA,IAAAlC,QAAO,OAAA,GAAUkC,SAAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACZjB,IAAA,iBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,2EAAA,CAAArC,UAAAG,OAAAA,EAAA;AAAA,IAAA,IAAI,YAAA,GAAe,oBAAA,EAAA;AAAnB,IAAA,IACIkC,SAAAA,GAAW,gBAAA,EAAA;AAUf,IAAA,SAAS,SAAA,CAAU,QAAQ,GAAA,EAAK;AAC9B,MAAA,IAAI,KAAA,GAAQA,SAAAA,CAAS,MAAA,EAAQ,GAAG,CAAA;AAChC,MAAA,OAAO,YAAA,CAAa,KAAK,CAAA,GAAI,KAAA,GAAQ,MAAA;AAAA,IACvC;AAEA,IAAAlC,QAAO,OAAA,GAAU,SAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;AChBjB,IAAA,oBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,8EAAA,CAAAH,UAAAG,OAAAA,EAAA;AAAA,IAAA,IAAI,SAAA,GAAY,iBAAA,EAAA;AAGhB,IAAA,IAAI,YAAA,GAAe,SAAA,CAAU,MAAA,EAAQ,QAAQ,CAAA;AAE7C,IAAAA,QAAO,OAAA,GAAU,YAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACLjB,IAAA,iBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,2EAAA,CAAAH,UAAAG,OAAAA,EAAA;AAAA,IAAA,IAAI,YAAA,GAAe,oBAAA,EAAA;AASnB,IAAA,SAAS,SAAA,GAAY;AACnB,MAAA,IAAA,CAAK,QAAA,GAAW,YAAA,GAAe,YAAA,CAAa,IAAI,IAAI,EAAC;AACrD,MAAA,IAAA,CAAK,IAAA,GAAO,CAAA;AAAA,IACd;AAEA,IAAAA,QAAO,OAAA,GAAU,SAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACdjB,IAAA,kBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,4EAAA,CAAAH,UAAAG,OAAAA,EAAA;AAUA,IAAA,SAAS,WAAW,GAAA,EAAK;AACvB,MAAA,IAAI,MAAA,GAAS,KAAK,GAAA,CAAI,GAAG,KAAK,OAAO,IAAA,CAAK,SAAS,GAAG,CAAA;AACtD,MAAA,IAAA,CAAK,IAAA,IAAQ,SAAS,CAAA,GAAI,CAAA;AAC1B,MAAA,OAAO,MAAA;AAAA,IACT;AAEA,IAAAA,QAAO,OAAA,GAAU,UAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;AChBjB,IAAA,eAAA,GAAA,UAAA,CAAA;AAAA,EAAA,yEAAA,CAAAH,UAAAG,OAAAA,EAAA;AAAA,IAAA,IAAI,YAAA,GAAe,oBAAA,EAAA;AAGnB,IAAA,IAAI,cAAA,GAAiB,2BAAA;AAGrB,IAAA,IAAI,cAAc,MAAA,CAAO,SAAA;AAGzB,IAAA,IAAI,iBAAiB,WAAA,CAAY,cAAA;AAWjC,IAAA,SAAS,QAAQ,GAAA,EAAK;AACpB,MAAA,IAAI,OAAO,IAAA,CAAK,QAAA;AAChB,MAAA,IAAI,YAAA,EAAc;AAChB,QAAA,IAAI,MAAA,GAAS,KAAK,GAAG,CAAA;AACrB,QAAA,OAAO,MAAA,KAAW,iBAAiB,MAAA,GAAY,MAAA;AAAA,MACjD;AACA,MAAA,OAAO,eAAe,IAAA,CAAK,IAAA,EAAM,GAAG,CAAA,GAAI,IAAA,CAAK,GAAG,CAAA,GAAI,MAAA;AAAA,IACtD;AAEA,IAAAA,QAAO,OAAA,GAAU,OAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC7BjB,IAAA,eAAA,GAAA,UAAA,CAAA;AAAA,EAAA,yEAAA,CAAAH,UAAAG,OAAAA,EAAA;AAAA,IAAA,IAAI,YAAA,GAAe,oBAAA,EAAA;AAGnB,IAAA,IAAI,cAAc,MAAA,CAAO,SAAA;AAGzB,IAAA,IAAI,iBAAiB,WAAA,CAAY,cAAA;AAWjC,IAAA,SAAS,QAAQ,GAAA,EAAK;AACpB,MAAA,IAAI,OAAO,IAAA,CAAK,QAAA;AAChB,MAAA,OAAO,YAAA,GAAgB,KAAK,GAAG,CAAA,KAAM,SAAa,cAAA,CAAe,IAAA,CAAK,MAAM,GAAG,CAAA;AAAA,IACjF;AAEA,IAAAA,QAAO,OAAA,GAAU,OAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACtBjB,IAAA,eAAA,GAAA,UAAA,CAAA;AAAA,EAAA,yEAAA,CAAAH,UAAAG,OAAAA,EAAA;AAAA,IAAA,IAAI,YAAA,GAAe,oBAAA,EAAA;AAGnB,IAAA,IAAI,cAAA,GAAiB,2BAAA;AAYrB,IAAA,SAAS,OAAA,CAAQ,KAAK,KAAA,EAAO;AAC3B,MAAA,IAAI,OAAO,IAAA,CAAK,QAAA;AAChB,MAAA,IAAA,CAAK,IAAA,IAAQ,IAAA,CAAK,GAAA,CAAI,GAAG,IAAI,CAAA,GAAI,CAAA;AACjC,MAAA,IAAA,CAAK,GAAG,CAAA,GAAK,YAAA,IAAgB,KAAA,KAAU,SAAa,cAAA,GAAiB,KAAA;AACrE,MAAA,OAAO,IAAA;AAAA,IACT;AAEA,IAAAA,QAAO,OAAA,GAAU,OAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACtBjB,IAAA,YAAA,GAAA,UAAA,CAAA;AAAA,EAAA,sEAAA,CAAAH,UAAAG,OAAAA,EAAA;AAAA,IAAA,IAAI,SAAA,GAAY,iBAAA,EAAA;AAAhB,IAAA,IACI,UAAA,GAAa,kBAAA,EAAA;AADjB,IAAA,IAEI,OAAA,GAAU,eAAA,EAAA;AAFd,IAAA,IAGI,OAAA,GAAU,eAAA,EAAA;AAHd,IAAA,IAII,OAAA,GAAU,eAAA,EAAA;AASd,IAAA,SAAS,KAAK,OAAA,EAAS;AACrB,MAAA,IAAI,QAAQ,EAAA,EACR,MAAA,GAAS,OAAA,IAAW,IAAA,GAAO,IAAI,OAAA,CAAQ,MAAA;AAE3C,MAAA,IAAA,CAAK,KAAA,EAAM;AACX,MAAA,OAAO,EAAE,QAAQ,MAAA,EAAQ;AACvB,QAAA,IAAI,KAAA,GAAQ,QAAQ,KAAK,CAAA;AACzB,QAAA,IAAA,CAAK,IAAI,KAAA,CAAM,CAAC,CAAA,EAAG,KAAA,CAAM,CAAC,CAAC,CAAA;AAAA,MAC7B;AAAA,IACF;AAGA,IAAA,IAAA,CAAK,UAAU,KAAA,GAAQ,SAAA;AACvB,IAAA,IAAA,CAAK,SAAA,CAAU,QAAQ,CAAA,GAAI,UAAA;AAC3B,IAAA,IAAA,CAAK,UAAU,GAAA,GAAM,OAAA;AACrB,IAAA,IAAA,CAAK,UAAU,GAAA,GAAM,OAAA;AACrB,IAAA,IAAA,CAAK,UAAU,GAAA,GAAM,OAAA;AAErB,IAAAA,QAAO,OAAA,GAAU,IAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC/BjB,IAAA,sBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,gFAAA,CAAAH,UAAAG,OAAAA,EAAA;AAOA,IAAA,SAAS,cAAA,GAAiB;AACxB,MAAA,IAAA,CAAK,WAAW,EAAC;AACjB,MAAA,IAAA,CAAK,IAAA,GAAO,CAAA;AAAA,IACd;AAEA,IAAAA,QAAO,OAAA,GAAU,cAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACZjB,IAAA,UAAA,GAAA,UAAA,CAAA;AAAA,EAAA,mEAAA,CAAAH,UAAAG,OAAAA,EAAA;AAgCA,IAAA,SAAS,EAAA,CAAG,OAAO,KAAA,EAAO;AACxB,MAAA,OAAO,KAAA,KAAU,KAAA,IAAU,KAAA,KAAU,KAAA,IAAS,KAAA,KAAU,KAAA;AAAA,IAC1D;AAEA,IAAAA,QAAO,OAAA,GAAU,EAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACpCjB,IAAA,oBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,8EAAA,CAAAH,UAAAG,OAAAA,EAAA;AAAA,IAAA,IAAI,EAAA,GAAK,UAAA,EAAA;AAUT,IAAA,SAAS,YAAA,CAAa,OAAO,GAAA,EAAK;AAChC,MAAA,IAAI,SAAS,KAAA,CAAM,MAAA;AACnB,MAAA,OAAO,MAAA,EAAA,EAAU;AACf,QAAA,IAAI,GAAG,KAAA,CAAM,MAAM,EAAE,CAAC,CAAA,EAAG,GAAG,CAAA,EAAG;AAC7B,UAAA,OAAO,MAAA;AAAA,QACT;AAAA,MACF;AACA,MAAA,OAAO,EAAA;AAAA,IACT;AAEA,IAAAA,QAAO,OAAA,GAAU,YAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACpBjB,IAAA,uBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,iFAAA,CAAAH,UAAAG,OAAAA,EAAA;AAAA,IAAA,IAAI,YAAA,GAAe,oBAAA,EAAA;AAGnB,IAAA,IAAI,aAAa,KAAA,CAAM,SAAA;AAGvB,IAAA,IAAI,SAAS,UAAA,CAAW,MAAA;AAWxB,IAAA,SAAS,gBAAgB,GAAA,EAAK;AAC5B,MAAA,IAAI,OAAO,IAAA,CAAK,QAAA,EACZ,KAAA,GAAQ,YAAA,CAAa,MAAM,GAAG,CAAA;AAElC,MAAA,IAAI,QAAQ,CAAA,EAAG;AACb,QAAA,OAAO,KAAA;AAAA,MACT;AACA,MAAA,IAAI,SAAA,GAAY,KAAK,MAAA,GAAS,CAAA;AAC9B,MAAA,IAAI,SAAS,SAAA,EAAW;AACtB,QAAA,IAAA,CAAK,GAAA,EAAI;AAAA,MACX,CAAA,MAAO;AACL,QAAA,MAAA,CAAO,IAAA,CAAK,IAAA,EAAM,KAAA,EAAO,CAAC,CAAA;AAAA,MAC5B;AACA,MAAA,EAAE,IAAA,CAAK,IAAA;AACP,MAAA,OAAO,IAAA;AAAA,IACT;AAEA,IAAAA,QAAO,OAAA,GAAU,eAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;AClCjB,IAAA,oBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,8EAAA,CAAAH,UAAAG,OAAAA,EAAA;AAAA,IAAA,IAAI,YAAA,GAAe,oBAAA,EAAA;AAWnB,IAAA,SAAS,aAAa,GAAA,EAAK;AACzB,MAAA,IAAI,OAAO,IAAA,CAAK,QAAA,EACZ,KAAA,GAAQ,YAAA,CAAa,MAAM,GAAG,CAAA;AAElC,MAAA,OAAO,QAAQ,CAAA,GAAI,MAAA,GAAY,IAAA,CAAK,KAAK,EAAE,CAAC,CAAA;AAAA,IAC9C;AAEA,IAAAA,QAAO,OAAA,GAAU,YAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;AClBjB,IAAA,oBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,8EAAA,CAAAH,UAAAG,OAAAA,EAAA;AAAA,IAAA,IAAI,YAAA,GAAe,oBAAA,EAAA;AAWnB,IAAA,SAAS,aAAa,GAAA,EAAK;AACzB,MAAA,OAAO,YAAA,CAAa,IAAA,CAAK,QAAA,EAAU,GAAG,CAAA,GAAI,EAAA;AAAA,IAC5C;AAEA,IAAAA,QAAO,OAAA,GAAU,YAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACfjB,IAAA,oBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,8EAAA,CAAAH,UAAAG,OAAAA,EAAA;AAAA,IAAA,IAAI,YAAA,GAAe,oBAAA,EAAA;AAYnB,IAAA,SAAS,YAAA,CAAa,KAAK,KAAA,EAAO;AAChC,MAAA,IAAI,OAAO,IAAA,CAAK,QAAA,EACZ,KAAA,GAAQ,YAAA,CAAa,MAAM,GAAG,CAAA;AAElC,MAAA,IAAI,QAAQ,CAAA,EAAG;AACb,QAAA,EAAE,IAAA,CAAK,IAAA;AACP,QAAA,IAAA,CAAK,IAAA,CAAK,CAAC,GAAA,EAAK,KAAK,CAAC,CAAA;AAAA,MACxB,CAAA,MAAO;AACL,QAAA,IAAA,CAAK,KAAK,CAAA,CAAE,CAAC,CAAA,GAAI,KAAA;AAAA,MACnB;AACA,MAAA,OAAO,IAAA;AAAA,IACT;AAEA,IAAAA,QAAO,OAAA,GAAU,YAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACzBjB,IAAA,iBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,2EAAA,CAAAH,UAAAG,OAAAA,EAAA;AAAA,IAAA,IAAI,cAAA,GAAiB,sBAAA,EAAA;AAArB,IAAA,IACI,eAAA,GAAkB,uBAAA,EAAA;AADtB,IAAA,IAEI,YAAA,GAAe,oBAAA,EAAA;AAFnB,IAAA,IAGI,YAAA,GAAe,oBAAA,EAAA;AAHnB,IAAA,IAII,YAAA,GAAe,oBAAA,EAAA;AASnB,IAAA,SAAS,UAAU,OAAA,EAAS;AAC1B,MAAA,IAAI,QAAQ,EAAA,EACR,MAAA,GAAS,OAAA,IAAW,IAAA,GAAO,IAAI,OAAA,CAAQ,MAAA;AAE3C,MAAA,IAAA,CAAK,KAAA,EAAM;AACX,MAAA,OAAO,EAAE,QAAQ,MAAA,EAAQ;AACvB,QAAA,IAAI,KAAA,GAAQ,QAAQ,KAAK,CAAA;AACzB,QAAA,IAAA,CAAK,IAAI,KAAA,CAAM,CAAC,CAAA,EAAG,KAAA,CAAM,CAAC,CAAC,CAAA;AAAA,MAC7B;AAAA,IACF;AAGA,IAAA,SAAA,CAAU,UAAU,KAAA,GAAQ,cAAA;AAC5B,IAAA,SAAA,CAAU,SAAA,CAAU,QAAQ,CAAA,GAAI,eAAA;AAChC,IAAA,SAAA,CAAU,UAAU,GAAA,GAAM,YAAA;AAC1B,IAAA,SAAA,CAAU,UAAU,GAAA,GAAM,YAAA;AAC1B,IAAA,SAAA,CAAU,UAAU,GAAA,GAAM,YAAA;AAE1B,IAAAA,QAAO,OAAA,GAAU,SAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC/BjB,IAAA,WAAA,GAAA,UAAA,CAAA;AAAA,EAAA,qEAAA,CAAAH,UAAAG,OAAAA,EAAA;AAAA,IAAA,IAAI,SAAA,GAAY,iBAAA,EAAA;AAAhB,IAAA,IACI,IAAA,GAAO,YAAA,EAAA;AAGX,IAAA,IAAImC,IAAAA,GAAM,SAAA,CAAU,IAAA,EAAM,KAAK,CAAA;AAE/B,IAAAnC,QAAO,OAAA,GAAUmC,IAAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACNjB,IAAA,qBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,+EAAA,CAAAtC,UAAAG,OAAAA,EAAA;AAAA,IAAA,IAAI,IAAA,GAAO,YAAA,EAAA;AAAX,IAAA,IACI,SAAA,GAAY,iBAAA,EAAA;AADhB,IAAA,IAEImC,IAAAA,GAAM,WAAA,EAAA;AASV,IAAA,SAAS,aAAA,GAAgB;AACvB,MAAA,IAAA,CAAK,IAAA,GAAO,CAAA;AACZ,MAAA,IAAA,CAAK,QAAA,GAAW;AAAA,QACd,QAAQ,IAAI,IAAA,EAAA;AAAA,QACZ,KAAA,EAAO,KAAKA,IAAAA,IAAO,SAAA,GAAA;AAAA,QACnB,UAAU,IAAI,IAAA;AAAA,OAChB;AAAA,IACF;AAEA,IAAAnC,QAAO,OAAA,GAAU,aAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACpBjB,IAAA,iBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,2EAAA,CAAAH,UAAAG,OAAAA,EAAA;AAOA,IAAA,SAAS,UAAU,KAAA,EAAO;AACxB,MAAA,IAAI,OAAO,OAAO,KAAA;AAClB,MAAA,OAAQ,IAAA,IAAQ,QAAA,IAAY,IAAA,IAAQ,QAAA,IAAY,IAAA,IAAQ,YAAY,IAAA,IAAQ,SAAA,GACvE,KAAA,KAAU,WAAA,GACV,KAAA,KAAU,IAAA;AAAA,IACjB;AAEA,IAAAA,QAAO,OAAA,GAAU,SAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACdjB,IAAA,kBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,4EAAA,CAAAH,UAAAG,OAAAA,EAAA;AAAA,IAAA,IAAI,SAAA,GAAY,iBAAA,EAAA;AAUhB,IAAA,SAAS,UAAA,CAAW,KAAK,GAAA,EAAK;AAC5B,MAAA,IAAI,OAAO,GAAA,CAAI,QAAA;AACf,MAAA,OAAO,SAAA,CAAU,GAAG,CAAA,GAChB,IAAA,CAAK,OAAO,OAAO,QAAA,GAAW,QAAA,GAAW,MAAM,CAAA,GAC/C,IAAA,CAAK,GAAA;AAAA,IACX;AAEA,IAAAA,QAAO,OAAA,GAAU,UAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACjBjB,IAAA,sBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,gFAAA,CAAAH,UAAAG,OAAAA,EAAA;AAAA,IAAA,IAAI,UAAA,GAAa,kBAAA,EAAA;AAWjB,IAAA,SAAS,eAAe,GAAA,EAAK;AAC3B,MAAA,IAAI,SAAS,UAAA,CAAW,IAAA,EAAM,GAAG,CAAA,CAAE,QAAQ,EAAE,GAAG,CAAA;AAChD,MAAA,IAAA,CAAK,IAAA,IAAQ,SAAS,CAAA,GAAI,CAAA;AAC1B,MAAA,OAAO,MAAA;AAAA,IACT;AAEA,IAAAA,QAAO,OAAA,GAAU,cAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACjBjB,IAAA,mBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,6EAAA,CAAAH,UAAAG,OAAAA,EAAA;AAAA,IAAA,IAAI,UAAA,GAAa,kBAAA,EAAA;AAWjB,IAAA,SAAS,YAAY,GAAA,EAAK;AACxB,MAAA,OAAO,UAAA,CAAW,IAAA,EAAM,GAAG,CAAA,CAAE,IAAI,GAAG,CAAA;AAAA,IACtC;AAEA,IAAAA,QAAO,OAAA,GAAU,WAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACfjB,IAAA,mBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,6EAAA,CAAAH,UAAAG,OAAAA,EAAA;AAAA,IAAA,IAAI,UAAA,GAAa,kBAAA,EAAA;AAWjB,IAAA,SAAS,YAAY,GAAA,EAAK;AACxB,MAAA,OAAO,UAAA,CAAW,IAAA,EAAM,GAAG,CAAA,CAAE,IAAI,GAAG,CAAA;AAAA,IACtC;AAEA,IAAAA,QAAO,OAAA,GAAU,WAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACfjB,IAAA,mBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,6EAAA,CAAAH,UAAAG,OAAAA,EAAA;AAAA,IAAA,IAAI,UAAA,GAAa,kBAAA,EAAA;AAYjB,IAAA,SAAS,WAAA,CAAY,KAAK,KAAA,EAAO;AAC/B,MAAA,IAAI,OAAO,UAAA,CAAW,IAAA,EAAM,GAAG,CAAA,EAC3B,OAAO,IAAA,CAAK,IAAA;AAEhB,MAAA,IAAA,CAAK,GAAA,CAAI,KAAK,KAAK,CAAA;AACnB,MAAA,IAAA,CAAK,IAAA,IAAQ,IAAA,CAAK,IAAA,IAAQ,IAAA,GAAO,CAAA,GAAI,CAAA;AACrC,MAAA,OAAO,IAAA;AAAA,IACT;AAEA,IAAAA,QAAO,OAAA,GAAU,WAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACrBjB,IAAA,gBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,0EAAA,CAAAH,UAAAG,OAAAA,EAAA;AAAA,IAAA,IAAI,aAAA,GAAgB,qBAAA,EAAA;AAApB,IAAA,IACI,cAAA,GAAiB,sBAAA,EAAA;AADrB,IAAA,IAEI,WAAA,GAAc,mBAAA,EAAA;AAFlB,IAAA,IAGI,WAAA,GAAc,mBAAA,EAAA;AAHlB,IAAA,IAII,WAAA,GAAc,mBAAA,EAAA;AASlB,IAAA,SAAS,SAAS,OAAA,EAAS;AACzB,MAAA,IAAI,QAAQ,EAAA,EACR,MAAA,GAAS,OAAA,IAAW,IAAA,GAAO,IAAI,OAAA,CAAQ,MAAA;AAE3C,MAAA,IAAA,CAAK,KAAA,EAAM;AACX,MAAA,OAAO,EAAE,QAAQ,MAAA,EAAQ;AACvB,QAAA,IAAI,KAAA,GAAQ,QAAQ,KAAK,CAAA;AACzB,QAAA,IAAA,CAAK,IAAI,KAAA,CAAM,CAAC,CAAA,EAAG,KAAA,CAAM,CAAC,CAAC,CAAA;AAAA,MAC7B;AAAA,IACF;AAGA,IAAA,QAAA,CAAS,UAAU,KAAA,GAAQ,aAAA;AAC3B,IAAA,QAAA,CAAS,SAAA,CAAU,QAAQ,CAAA,GAAI,cAAA;AAC/B,IAAA,QAAA,CAAS,UAAU,GAAA,GAAM,WAAA;AACzB,IAAA,QAAA,CAAS,UAAU,GAAA,GAAM,WAAA;AACzB,IAAA,QAAA,CAAS,UAAU,GAAA,GAAM,WAAA;AAEzB,IAAAA,QAAO,OAAA,GAAU,QAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC/BjB,IAAA,eAAA,GAAA,UAAA,CAAA;AAAA,EAAA,wEAAA,CAAAH,UAAAG,OAAAA,EAAA;AAAA,IAAA,IAAI,QAAA,GAAW,gBAAA,EAAA;AAGf,IAAA,IAAI,eAAA,GAAkB,qBAAA;AA8CtB,IAAA,SAAS,OAAA,CAAQ,MAAM,QAAA,EAAU;AAC/B,MAAA,IAAI,OAAO,IAAA,IAAQ,UAAA,IAAe,YAAY,IAAA,IAAQ,OAAO,YAAY,UAAA,EAAa;AACpF,QAAA,MAAM,IAAI,UAAU,eAAe,CAAA;AAAA,MACrC;AACA,MAAA,IAAI,WAAW,WAAW;AACxB,QAAA,IAAI,IAAA,GAAO,SAAA,EACP,GAAA,GAAM,QAAA,GAAW,QAAA,CAAS,KAAA,CAAM,IAAA,EAAM,IAAI,CAAA,GAAI,IAAA,CAAK,CAAC,CAAA,EACpD,QAAQ,QAAA,CAAS,KAAA;AAErB,QAAA,IAAI,KAAA,CAAM,GAAA,CAAI,GAAG,CAAA,EAAG;AAClB,UAAA,OAAO,KAAA,CAAM,IAAI,GAAG,CAAA;AAAA,QACtB;AACA,QAAA,IAAI,MAAA,GAAS,IAAA,CAAK,KAAA,CAAM,IAAA,EAAM,IAAI,CAAA;AAClC,QAAA,QAAA,CAAS,KAAA,GAAQ,KAAA,CAAM,GAAA,CAAI,GAAA,EAAK,MAAM,CAAA,IAAK,KAAA;AAC3C,QAAA,OAAO,MAAA;AAAA,MACT,CAAA;AACA,MAAA,QAAA,CAAS,KAAA,GAAQ,KAAK,OAAA,CAAQ,KAAA,IAAS,QAAA,GAAA;AACvC,MAAA,OAAO,QAAA;AAAA,IACT;AAGA,IAAA,OAAA,CAAQ,KAAA,GAAQ,QAAA;AAEhB,IAAAA,QAAO,OAAA,GAAU,OAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACxEjB,IAAA,qBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,+EAAA,CAAAH,UAAAG,OAAAA,EAAA;AAAA,IAAA,IAAI,OAAA,GAAU,eAAA,EAAA;AAGd,IAAA,IAAI,gBAAA,GAAmB,GAAA;AAUvB,IAAA,SAAS,cAAc,IAAA,EAAM;AAC3B,MAAA,IAAI,MAAA,GAAS,OAAA,CAAQ,IAAA,EAAM,SAAS,GAAA,EAAK;AACvC,QAAA,IAAI,KAAA,CAAM,SAAS,gBAAA,EAAkB;AACnC,UAAA,KAAA,CAAM,KAAA,EAAM;AAAA,QACd;AACA,QAAA,OAAO,GAAA;AAAA,MACT,CAAC,CAAA;AAED,MAAA,IAAI,QAAQ,MAAA,CAAO,KAAA;AACnB,MAAA,OAAO,MAAA;AAAA,IACT;AAEA,IAAAA,QAAO,OAAA,GAAU,aAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACzBjB,IAAA,oBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,8EAAA,CAAAH,UAAAG,OAAAA,EAAA;AAAA,IAAA,IAAI,aAAA,GAAgB,qBAAA,EAAA;AAGpB,IAAA,IAAI,UAAA,GAAa,kGAAA;AAGjB,IAAA,IAAI,YAAA,GAAe,UAAA;AASnB,IAAA,IAAI,YAAA,GAAe,aAAA,CAAc,SAAS,MAAA,EAAQ;AAChD,MAAA,IAAI,SAAS,EAAC;AACd,MAAA,IAAI,MAAA,CAAO,UAAA,CAAW,CAAC,CAAA,KAAM,EAAA,EAAY;AACvC,QAAA,MAAA,CAAO,KAAK,EAAE,CAAA;AAAA,MAChB;AACA,MAAA,MAAA,CAAO,QAAQ,UAAA,EAAY,SAAS,KAAA,EAAO,MAAA,EAAQoC,QAAO,SAAA,EAAW;AACnE,QAAA,MAAA,CAAO,IAAA,CAAKA,SAAQ,SAAA,CAAU,OAAA,CAAQ,cAAc,IAAI,CAAA,GAAK,UAAU,KAAM,CAAA;AAAA,MAC/E,CAAC,CAAA;AACD,MAAA,OAAO,MAAA;AAAA,IACT,CAAC,CAAA;AAED,IAAApC,QAAO,OAAA,GAAU,YAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC1BjB,IAAA,gBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,0EAAA,CAAAH,UAAAG,OAAAA,EAAA;AASA,IAAA,SAAS,QAAA,CAAS,OAAO,QAAA,EAAU;AACjC,MAAA,IAAI,KAAA,GAAQ,EAAA,EACR,MAAA,GAAS,KAAA,IAAS,IAAA,GAAO,IAAI,KAAA,CAAM,MAAA,EACnC,MAAA,GAAS,KAAA,CAAM,MAAM,CAAA;AAEzB,MAAA,OAAO,EAAE,QAAQ,MAAA,EAAQ;AACvB,QAAA,MAAA,CAAO,KAAK,CAAA,GAAI,QAAA,CAAS,MAAM,KAAK,CAAA,EAAG,OAAO,KAAK,CAAA;AAAA,MACrD;AACA,MAAA,OAAO,MAAA;AAAA,IACT;AAEA,IAAAA,QAAO,OAAA,GAAU,QAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACpBjB,IAAA,oBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,8EAAA,CAAAH,UAAAG,OAAAA,EAAA;AAAA,IAAA,IAAIiC,OAAAA,GAAS,cAAA,EAAA;AAAb,IAAA,IACI,QAAA,GAAW,gBAAA,EAAA;AADf,IAAA,IAEI,OAAA,GAAU,eAAA,EAAA;AAFd,IAAA,IAGI,QAAA,GAAW,gBAAA,EAAA;AAMf,IAAA,IAAI,WAAA,GAAcA,OAAAA,GAASA,OAAAA,CAAO,SAAA,GAAY,MAAA;AAA9C,IAAA,IACI,cAAA,GAAiB,WAAA,GAAc,WAAA,CAAY,QAAA,GAAW,MAAA;AAU1D,IAAA,SAAS,aAAa,KAAA,EAAO;AAE3B,MAAA,IAAI,OAAO,SAAS,QAAA,EAAU;AAC5B,QAAA,OAAO,KAAA;AAAA,MACT;AACA,MAAA,IAAI,OAAA,CAAQ,KAAK,CAAA,EAAG;AAElB,QAAA,OAAO,QAAA,CAAS,KAAA,EAAO,YAAY,CAAA,GAAI,EAAA;AAAA,MACzC;AACA,MAAA,IAAI,QAAA,CAAS,KAAK,CAAA,EAAG;AACnB,QAAA,OAAO,cAAA,GAAiB,cAAA,CAAe,IAAA,CAAK,KAAK,CAAA,GAAI,EAAA;AAAA,MACvD;AACA,MAAA,IAAI,SAAU,KAAA,GAAQ,EAAA;AACtB,MAAA,OAAQ,UAAU,GAAA,IAAQ,CAAA,GAAI,KAAA,IAAU,YAAa,IAAA,GAAO,MAAA;AAAA,IAC9D;AAEA,IAAAjC,QAAO,OAAA,GAAU,YAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACpCjB,IAAA,gBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,yEAAA,CAAAH,UAAAG,OAAAA,EAAA;AAAA,IAAA,IAAI,YAAA,GAAe,oBAAA,EAAA;AAuBnB,IAAA,SAAS,SAAS,KAAA,EAAO;AACvB,MAAA,OAAO,KAAA,IAAS,IAAA,GAAO,EAAA,GAAK,YAAA,CAAa,KAAK,CAAA;AAAA,IAChD;AAEA,IAAAA,QAAO,OAAA,GAAU,QAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC3BjB,IAAA,gBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,0EAAA,CAAAH,UAAAG,OAAAA,EAAA;AAAA,IAAA,IAAI,OAAA,GAAU,eAAA,EAAA;AAAd,IAAA,IACI,KAAA,GAAQ,aAAA,EAAA;AADZ,IAAA,IAEI,YAAA,GAAe,oBAAA,EAAA;AAFnB,IAAA,IAGI,QAAA,GAAW,gBAAA,EAAA;AAUf,IAAA,SAAS,QAAA,CAAS,OAAO,MAAA,EAAQ;AAC/B,MAAA,IAAI,OAAA,CAAQ,KAAK,CAAA,EAAG;AAClB,QAAA,OAAO,KAAA;AAAA,MACT;AACA,MAAA,OAAO,KAAA,CAAM,KAAA,EAAO,MAAM,CAAA,GAAI,CAAC,KAAK,CAAA,GAAI,YAAA,CAAa,QAAA,CAAS,KAAK,CAAC,CAAA;AAAA,IACtE;AAEA,IAAAA,QAAO,OAAA,GAAU,QAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACpBjB,IAAA,aAAA,GAAA,UAAA,CAAA;AAAA,EAAA,uEAAA,CAAAH,UAAAG,OAAAA,EAAA;AAAA,IAAA,IAAI,QAAA,GAAW,gBAAA,EAAA;AAYf,IAAA,SAAS,MAAM,KAAA,EAAO;AACpB,MAAA,IAAI,OAAO,KAAA,IAAS,QAAA,IAAY,QAAA,CAAS,KAAK,CAAA,EAAG;AAC/C,QAAA,OAAO,KAAA;AAAA,MACT;AACA,MAAA,IAAI,SAAU,KAAA,GAAQ,EAAA;AACtB,MAAA,OAAQ,UAAU,GAAA,IAAQ,CAAA,GAAI,KAAA,IAAU,YAAa,IAAA,GAAO,MAAA;AAAA,IAC9D;AAEA,IAAAA,QAAO,OAAA,GAAU,KAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACpBjB,IAAA,eAAA,GAAA,UAAA,CAAA;AAAA,EAAA,yEAAA,CAAAH,UAAAG,OAAAA,EAAA;AAAA,IAAA,IAAI,QAAA,GAAW,gBAAA,EAAA;AAAf,IAAA,IACI,KAAA,GAAQ,aAAA,EAAA;AAUZ,IAAA,SAAS,OAAA,CAAQ,QAAQ,IAAA,EAAM;AAC7B,MAAA,IAAA,GAAO,QAAA,CAAS,MAAM,MAAM,CAAA;AAE5B,MAAA,IAAI,KAAA,GAAQ,CAAA,EACR,MAAA,GAAS,IAAA,CAAK,MAAA;AAElB,MAAA,OAAO,MAAA,IAAU,IAAA,IAAQ,KAAA,GAAQ,MAAA,EAAQ;AACvC,QAAA,MAAA,GAAS,MAAA,CAAO,KAAA,CAAM,IAAA,CAAK,KAAA,EAAO,CAAC,CAAC,CAAA;AAAA,MACtC;AACA,MAAA,OAAQ,KAAA,IAAS,KAAA,IAAS,MAAA,GAAU,MAAA,GAAS,MAAA;AAAA,IAC/C;AAEA,IAAAA,QAAO,OAAA,GAAU,OAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACvBjB,IAAA,WAAA,GAAA,UAAA,CAAA;AAAA,EAAA,oEAAA,CAAAH,UAAAG,OAAAA,EAAA;AAAA,IAAA,IAAI,OAAA,GAAU,eAAA,EAAA;AA2Bd,IAAA,SAASqC,IAAAA,CAAI,MAAA,EAAQ,IAAA,EAAM,YAAA,EAAc;AACvC,MAAA,IAAI,SAAS,MAAA,IAAU,IAAA,GAAO,MAAA,GAAY,OAAA,CAAQ,QAAQ,IAAI,CAAA;AAC9D,MAAA,OAAO,MAAA,KAAW,SAAY,YAAA,GAAe,MAAA;AAAA,IAC/C;AAEA,IAAArC,QAAO,OAAA,GAAUqC,IAAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;AChCjB,IAAA,WAAA,GAAA,UAAA,CAAA;AAAA,EAAA,0FAAA,CAAAxC,UAAAG,OAAAA,EAAA;AAQA,IAAAA,OAAAA,CAAO,OAAA,GAAU,SAASsC,MAAAA,CAAMC,IAAGlB,EAAAA,EAAG;AACpC,MAAA,IAAIkB,EAAAA,KAAMlB,IAAG,OAAO,IAAA;AAEpB,MAAA,IAAIkB,MAAKlB,EAAAA,IAAK,OAAOkB,MAAK,QAAA,IAAY,OAAOlB,MAAK,QAAA,EAAU;AAC1D,QAAA,IAAIkB,EAAAA,CAAE,WAAA,KAAgBlB,EAAAA,CAAE,WAAA,EAAa,OAAO,KAAA;AAE5C,QAAA,IAAI,QAAQP,EAAAA,EAAG,IAAA;AACf,QAAA,IAAI,KAAA,CAAM,OAAA,CAAQyB,EAAC,CAAA,EAAG;AACpB,UAAA,MAAA,GAASA,EAAAA,CAAE,MAAA;AACX,UAAA,IAAI,MAAA,IAAUlB,EAAAA,CAAE,MAAA,EAAQ,OAAO,KAAA;AAC/B,UAAA,KAAKP,EAAAA,GAAI,QAAQA,EAAAA,EAAAA,KAAQ,CAAA;AACvB,YAAA,IAAI,CAACwB,OAAMC,EAAAA,CAAEzB,EAAC,GAAGO,EAAAA,CAAEP,EAAC,CAAC,CAAA,EAAG,OAAO,KAAA;AACjC,UAAA,OAAO,IAAA;AAAA,QACT;AAGA,QAAA,IAAKyB,EAAAA,YAAa,GAAA,IAASlB,EAAAA,YAAa,GAAA,EAAM;AAC5C,UAAA,IAAIkB,EAAAA,CAAE,IAAA,KAASlB,EAAAA,CAAE,IAAA,EAAM,OAAO,KAAA;AAC9B,UAAA,KAAKP,EAAAA,IAAKyB,GAAE,OAAA,EAAQ;AAClB,YAAA,IAAI,CAAClB,EAAAA,CAAE,GAAA,CAAIP,GAAE,CAAC,CAAC,GAAG,OAAO,KAAA;AAC3B,UAAA,KAAKA,EAAAA,IAAKyB,GAAE,OAAA,EAAQ;AAClB,YAAA,IAAI,CAACD,MAAAA,CAAMxB,EAAAA,CAAE,CAAC,CAAA,EAAGO,EAAAA,CAAE,GAAA,CAAIP,EAAAA,CAAE,CAAC,CAAC,CAAC,CAAA,EAAG,OAAO,KAAA;AACxC,UAAA,OAAO,IAAA;AAAA,QACT;AAEA,QAAA,IAAKyB,EAAAA,YAAa,GAAA,IAASlB,EAAAA,YAAa,GAAA,EAAM;AAC5C,UAAA,IAAIkB,EAAAA,CAAE,IAAA,KAASlB,EAAAA,CAAE,IAAA,EAAM,OAAO,KAAA;AAC9B,UAAA,KAAKP,EAAAA,IAAKyB,GAAE,OAAA,EAAQ;AAClB,YAAA,IAAI,CAAClB,EAAAA,CAAE,GAAA,CAAIP,GAAE,CAAC,CAAC,GAAG,OAAO,KAAA;AAC3B,UAAA,OAAO,IAAA;AAAA,QACT;AAEA,QAAA,IAAI,YAAY,MAAA,CAAOyB,EAAC,KAAK,WAAA,CAAY,MAAA,CAAOlB,EAAC,CAAA,EAAG;AAClD,UAAA,MAAA,GAASkB,EAAAA,CAAE,MAAA;AACX,UAAA,IAAI,MAAA,IAAUlB,EAAAA,CAAE,MAAA,EAAQ,OAAO,KAAA;AAC/B,UAAA,KAAKP,EAAAA,GAAI,QAAQA,EAAAA,EAAAA,KAAQ,CAAA;AACvB,YAAA,IAAIyB,GAAEzB,EAAC,CAAA,KAAMO,EAAAA,CAAEP,EAAC,GAAG,OAAO,KAAA;AAC5B,UAAA,OAAO,IAAA;AAAA,QACT;AAGA,QAAA,IAAIyB,EAAAA,CAAE,WAAA,KAAgB,MAAA,EAAQ,OAAOA,EAAAA,CAAE,WAAWlB,EAAAA,CAAE,MAAA,IAAUkB,EAAAA,CAAE,KAAA,KAAUlB,EAAAA,CAAE,KAAA;AAC5E,QAAA,IAAIkB,EAAAA,CAAE,OAAA,KAAY,MAAA,CAAO,SAAA,CAAU,OAAA,SAAgBA,EAAAA,CAAE,OAAA,EAAQ,KAAMlB,EAAAA,CAAE,OAAA,EAAQ;AAC7E,QAAA,IAAIkB,EAAAA,CAAE,QAAA,KAAa,MAAA,CAAO,SAAA,CAAU,QAAA,SAAiBA,EAAAA,CAAE,QAAA,EAAS,KAAMlB,EAAAA,CAAE,QAAA,EAAS;AAEjF,QAAA,IAAA,GAAO,MAAA,CAAO,KAAKkB,EAAC,CAAA;AACpB,QAAA,MAAA,GAAS,IAAA,CAAK,MAAA;AACd,QAAA,IAAI,WAAW,MAAA,CAAO,IAAA,CAAKlB,EAAC,CAAA,CAAE,QAAQ,OAAO,KAAA;AAE7C,QAAA,KAAKP,EAAAA,GAAI,QAAQA,EAAAA,EAAAA,KAAQ,CAAA;AACvB,UAAA,IAAI,CAAC,MAAA,CAAO,SAAA,CAAU,cAAA,CAAe,IAAA,CAAKO,IAAG,IAAA,CAAKP,EAAC,CAAC,CAAA,EAAG,OAAO,KAAA;AAEhE,QAAA,KAAKA,EAAAA,GAAI,MAAA,EAAQA,EAAAA,EAAAA,KAAQ,CAAA,IAAI;AAC3B,UAAA,IAAI,GAAA,GAAM,KAAKA,EAAC,CAAA;AAEhB,UAAA,IAAI,CAACwB,OAAMC,EAAAA,CAAE,GAAG,GAAGlB,EAAAA,CAAE,GAAG,CAAC,CAAA,EAAG,OAAO,KAAA;AAAA,QACrC;AAEA,QAAA,OAAO,IAAA;AAAA,MACT;AAGA,MAAA,OAAOkB,EAAAA,KAAIA,MAAKlB,EAAAA,KAAIA,EAAAA;AAAA,IACtB,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACvEA,IAAA,mBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,6EAAA,CAAAxB,UAAAG,OAAAA,EAAA;AACA,IAAA,IAAI,cAAA,GAAiB,2BAAA;AAYrB,IAAA,SAAS,YAAY,KAAA,EAAO;AAC1B,MAAA,IAAA,CAAK,QAAA,CAAS,GAAA,CAAI,KAAA,EAAO,cAAc,CAAA;AACvC,MAAA,OAAO,IAAA;AAAA,IACT;AAEA,IAAAA,QAAO,OAAA,GAAU,WAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;AClBjB,IAAA,mBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,6EAAA,CAAAH,UAAAG,OAAAA,EAAA;AASA,IAAA,SAAS,YAAY,KAAA,EAAO;AAC1B,MAAA,OAAO,IAAA,CAAK,QAAA,CAAS,GAAA,CAAI,KAAK,CAAA;AAAA,IAChC;AAEA,IAAAA,QAAO,OAAA,GAAU,WAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACbjB,IAAA,gBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,0EAAA,CAAAH,UAAAG,OAAAA,EAAA;AAAA,IAAA,IAAI,QAAA,GAAW,gBAAA,EAAA;AAAf,IAAA,IACI,WAAA,GAAc,mBAAA,EAAA;AADlB,IAAA,IAEI,WAAA,GAAc,mBAAA,EAAA;AAUlB,IAAA,SAAS,SAAS,MAAA,EAAQ;AACxB,MAAA,IAAI,QAAQ,EAAA,EACR,MAAA,GAAS,MAAA,IAAU,IAAA,GAAO,IAAI,MAAA,CAAO,MAAA;AAEzC,MAAA,IAAA,CAAK,WAAW,IAAI,QAAA,EAAA;AACpB,MAAA,OAAO,EAAE,QAAQ,MAAA,EAAQ;AACvB,QAAA,IAAA,CAAK,GAAA,CAAI,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,MACxB;AAAA,IACF;AAGA,IAAA,QAAA,CAAS,SAAA,CAAU,GAAA,GAAM,QAAA,CAAS,SAAA,CAAU,IAAA,GAAO,WAAA;AACnD,IAAA,QAAA,CAAS,UAAU,GAAA,GAAM,WAAA;AAEzB,IAAAA,QAAO,OAAA,GAAU,QAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC1BjB,IAAA,qBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,+EAAA,CAAAH,UAAAG,OAAAA,EAAA;AAWA,IAAA,SAAS,aAAA,CAAc,KAAA,EAAO,SAAA,EAAW,SAAA,EAAW,SAAA,EAAW;AAC7D,MAAA,IAAI,SAAS,KAAA,CAAM,MAAA,EACf,KAAA,GAAQ,SAAA,IAAa,YAAY,CAAA,GAAI,EAAA,CAAA;AAEzC,MAAA,OAAQ,SAAA,GAAY,KAAA,EAAA,GAAU,EAAE,KAAA,GAAQ,MAAA,EAAS;AAC/C,QAAA,IAAI,UAAU,KAAA,CAAM,KAAK,CAAA,EAAG,KAAA,EAAO,KAAK,CAAA,EAAG;AACzC,UAAA,OAAO,KAAA;AAAA,QACT;AAAA,MACF;AACA,MAAA,OAAO,EAAA;AAAA,IACT;AAEA,IAAAA,QAAO,OAAA,GAAU,aAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACvBjB,IAAA,iBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,2EAAA,CAAAH,UAAAG,OAAAA,EAAA;AAOA,IAAA,SAAS,UAAU,KAAA,EAAO;AACxB,MAAA,OAAO,KAAA,KAAU,KAAA;AAAA,IACnB;AAEA,IAAAA,QAAO,OAAA,GAAU,SAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACXjB,IAAA,qBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,+EAAA,CAAAH,UAAAG,OAAAA,EAAA;AAUA,IAAA,SAAS,aAAA,CAAc,KAAA,EAAO,KAAA,EAAO,SAAA,EAAW;AAC9C,MAAA,IAAI,KAAA,GAAQ,SAAA,GAAY,CAAA,EACpB,MAAA,GAAS,KAAA,CAAM,MAAA;AAEnB,MAAA,OAAO,EAAE,QAAQ,MAAA,EAAQ;AACvB,QAAA,IAAI,KAAA,CAAM,KAAK,CAAA,KAAM,KAAA,EAAO;AAC1B,UAAA,OAAO,KAAA;AAAA,QACT;AAAA,MACF;AACA,MAAA,OAAO,EAAA;AAAA,IACT;AAEA,IAAAA,QAAO,OAAA,GAAU,aAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACtBjB,IAAA,mBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,6EAAA,CAAAH,UAAAG,OAAAA,EAAA;AAAA,IAAA,IAAI,aAAA,GAAgB,qBAAA,EAAA;AAApB,IAAA,IACI,SAAA,GAAY,iBAAA,EAAA;AADhB,IAAA,IAEI,aAAA,GAAgB,qBAAA,EAAA;AAWpB,IAAA,SAAS,WAAA,CAAY,KAAA,EAAO,KAAA,EAAO,SAAA,EAAW;AAC5C,MAAA,OAAO,KAAA,KAAU,KAAA,GACb,aAAA,CAAc,KAAA,EAAO,KAAA,EAAO,SAAS,CAAA,GACrC,aAAA,CAAc,KAAA,EAAO,SAAA,EAAW,SAAS,CAAA;AAAA,IAC/C;AAEA,IAAAA,QAAO,OAAA,GAAU,WAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACnBjB,IAAA,qBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,+EAAA,CAAAH,UAAAG,OAAAA,EAAA;AAAA,IAAA,IAAI,WAAA,GAAc,mBAAA,EAAA;AAWlB,IAAA,SAAS,aAAA,CAAc,OAAO,KAAA,EAAO;AACnC,MAAA,IAAI,MAAA,GAAS,KAAA,IAAS,IAAA,GAAO,CAAA,GAAI,KAAA,CAAM,MAAA;AACvC,MAAA,OAAO,CAAC,CAAC,MAAA,IAAU,YAAY,KAAA,EAAO,KAAA,EAAO,CAAC,CAAA,GAAI,EAAA;AAAA,IACpD;AAEA,IAAAA,QAAO,OAAA,GAAU,aAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;AChBjB,IAAA,yBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,mFAAA,CAAAH,UAAAG,OAAAA,EAAA;AASA,IAAA,SAAS,iBAAA,CAAkB,KAAA,EAAO,KAAA,EAAO,UAAA,EAAY;AACnD,MAAA,IAAI,QAAQ,EAAA,EACR,MAAA,GAAS,KAAA,IAAS,IAAA,GAAO,IAAI,KAAA,CAAM,MAAA;AAEvC,MAAA,OAAO,EAAE,QAAQ,MAAA,EAAQ;AACvB,QAAA,IAAI,UAAA,CAAW,KAAA,EAAO,KAAA,CAAM,KAAK,CAAC,CAAA,EAAG;AACnC,UAAA,OAAO,IAAA;AAAA,QACT;AAAA,MACF;AACA,MAAA,OAAO,KAAA;AAAA,IACT;AAEA,IAAAA,QAAO,OAAA,GAAU,iBAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACrBjB,IAAA,gBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,0EAAA,CAAAH,UAAAG,OAAAA,EAAA;AAQA,IAAA,SAAS,QAAA,CAAS,OAAO,GAAA,EAAK;AAC5B,MAAA,OAAO,KAAA,CAAM,IAAI,GAAG,CAAA;AAAA,IACtB;AAEA,IAAAA,QAAO,OAAA,GAAU,QAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACZjB,IAAA,WAAA,GAAA,UAAA,CAAA;AAAA,EAAA,qEAAA,CAAAH,UAAAG,OAAAA,EAAA;AAAA,IAAA,IAAI,SAAA,GAAY,iBAAA,EAAA;AAAhB,IAAA,IACI,IAAA,GAAO,YAAA,EAAA;AAGX,IAAA,IAAIwC,IAAAA,GAAM,SAAA,CAAU,IAAA,EAAM,KAAK,CAAA;AAE/B,IAAAxC,QAAO,OAAA,GAAUwC,IAAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACNjB,IAAA,YAAA,GAAA,UAAA,CAAA;AAAA,EAAA,qEAAA,CAAA3C,UAAAG,OAAAA,EAAA;AAYA,IAAA,SAAS,IAAA,GAAO;AAAA,IAEhB;AAEA,IAAAA,QAAO,OAAA,GAAU,IAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;AChBjB,IAAA,kBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,4EAAA,CAAAH,UAAAG,OAAAA,EAAA;AAOA,IAAA,SAAS,WAAW,GAAA,EAAK;AACvB,MAAA,IAAI,KAAA,GAAQ,EAAA,EACR,MAAA,GAAS,KAAA,CAAM,IAAI,IAAI,CAAA;AAE3B,MAAA,GAAA,CAAI,OAAA,CAAQ,SAAS,KAAA,EAAO;AAC1B,QAAA,MAAA,CAAO,EAAE,KAAK,CAAA,GAAI,KAAA;AAAA,MACpB,CAAC,CAAA;AACD,MAAA,OAAO,MAAA;AAAA,IACT;AAEA,IAAAA,QAAO,OAAA,GAAU,UAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACjBjB,IAAA,iBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,2EAAA,CAAAH,UAAAG,OAAAA,EAAA;AAAA,IAAA,IAAIwC,IAAAA,GAAM,WAAA,EAAA;AAAV,IAAA,IACI,IAAA,GAAO,YAAA,EAAA;AADX,IAAA,IAEI,UAAA,GAAa,kBAAA,EAAA;AAGjB,IAAA,IAAI,WAAW,CAAA,GAAI,CAAA;AASnB,IAAA,IAAI,YAAY,EAAEA,IAAAA,IAAQ,IAAI,UAAA,CAAW,IAAIA,KAAI,GAAE,EAAE,CAAC,CAAC,CAAA,CAAE,CAAC,KAAM,QAAA,CAAA,GAAY,IAAA,GAAO,SAAS,MAAA,EAAQ;AAClG,MAAA,OAAO,IAAIA,KAAI,MAAM,CAAA;AAAA,IACvB,CAAA;AAEA,IAAAxC,QAAO,OAAA,GAAU,SAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;AClBjB,IAAA,gBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,0EAAA,CAAAH,UAAAG,OAAAA,EAAA;AAAA,IAAA,IAAI,QAAA,GAAW,gBAAA,EAAA;AAAf,IAAA,IACI,aAAA,GAAgB,qBAAA,EAAA;AADpB,IAAA,IAEI,iBAAA,GAAoB,yBAAA,EAAA;AAFxB,IAAA,IAGI,QAAA,GAAW,gBAAA,EAAA;AAHf,IAAA,IAII,SAAA,GAAY,iBAAA,EAAA;AAJhB,IAAA,IAKI,UAAA,GAAa,kBAAA,EAAA;AAGjB,IAAA,IAAI,gBAAA,GAAmB,GAAA;AAWvB,IAAA,SAAS,QAAA,CAAS,KAAA,EAAO,QAAA,EAAU,UAAA,EAAY;AAC7C,MAAA,IAAI,KAAA,GAAQ,EAAA,EACR,QAAA,GAAW,aAAA,EACX,MAAA,GAAS,KAAA,CAAM,MAAA,EACf,QAAA,GAAW,IAAA,EACX,MAAA,GAAS,EAAC,EACV,IAAA,GAAO,MAAA;AAEX,MAAA,IAAI,UAAA,EAAY;AACd,QAAA,QAAA,GAAW,KAAA;AACX,QAAA,QAAA,GAAW,iBAAA;AAAA,MACb,CAAA,MAAA,IACS,UAAU,gBAAA,EAAkB;AACnC,QAAA,IAAI,GAAA,GAAM,QAAA,GAAW,IAAA,GAAO,SAAA,CAAU,KAAK,CAAA;AAC3C,QAAA,IAAI,GAAA,EAAK;AACP,UAAA,OAAO,WAAW,GAAG,CAAA;AAAA,QACvB;AACA,QAAA,QAAA,GAAW,KAAA;AACX,QAAA,QAAA,GAAW,QAAA;AACX,QAAA,IAAA,GAAO,IAAI,QAAA,EAAA;AAAA,MACb,CAAA,MACK;AACH,QAAA,IAAA,GAAO,QAAA,GAAW,EAAC,GAAI,MAAA;AAAA,MACzB;AACA,MAAA,KAAA;AACA,QAAA,OAAO,EAAE,QAAQ,MAAA,EAAQ;AACvB,UAAA,IAAI,KAAA,GAAQ,MAAM,KAAK,CAAA,EACnB,WAAW,QAAA,GAAW,QAAA,CAAS,KAAK,CAAA,GAAI,KAAA;AAE5C,UAAA,KAAA,GAAS,UAAA,IAAc,KAAA,KAAU,CAAA,GAAK,KAAA,GAAQ,CAAA;AAC9C,UAAA,IAAI,QAAA,IAAY,aAAa,QAAA,EAAU;AACrC,YAAA,IAAI,YAAY,IAAA,CAAK,MAAA;AACrB,YAAA,OAAO,SAAA,EAAA,EAAa;AAClB,cAAA,IAAI,IAAA,CAAK,SAAS,CAAA,KAAM,QAAA,EAAU;AAChC,gBAAA,SAAS,KAAA;AAAA,cACX;AAAA,YACF;AACA,YAAA,IAAI,QAAA,EAAU;AACZ,cAAA,IAAA,CAAK,KAAK,QAAQ,CAAA;AAAA,YACpB;AACA,YAAA,MAAA,CAAO,KAAK,KAAK,CAAA;AAAA,UACnB,WACS,CAAC,QAAA,CAAS,IAAA,EAAM,QAAA,EAAU,UAAU,CAAA,EAAG;AAC9C,YAAA,IAAI,SAAS,MAAA,EAAQ;AACnB,cAAA,IAAA,CAAK,KAAK,QAAQ,CAAA;AAAA,YACpB;AACA,YAAA,MAAA,CAAO,KAAK,KAAK,CAAA;AAAA,UACnB;AAAA,QACF;AACA,MAAA,OAAO,MAAA;AAAA,IACT;AAEA,IAAAA,QAAO,OAAA,GAAU,QAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACvEjB,IAAA,gBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,yEAAA,CAAAH,UAAAG,OAAAA,EAAA;AAAA,IAAA,IAAI,QAAA,GAAW,gBAAA,EAAA;AAsBf,IAAA,SAASyC,SAAAA,CAAS,OAAO,UAAA,EAAY;AACnC,MAAA,UAAA,GAAa,OAAO,UAAA,IAAc,UAAA,GAAa,UAAA,GAAa,MAAA;AAC5D,MAAA,OAAQ,KAAA,IAAS,MAAM,MAAA,GAAU,QAAA,CAAS,OAAO,MAAA,EAAW,UAAU,IAAI,EAAC;AAAA,IAC7E;AAEA,IAAAzC,QAAO,OAAA,GAAUyC,SAAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC3B8F,SAAM,CAAA,GAAI;AAAwC,EAAA,MAAA,IAAA,MAAA,iCAAA,CAAA;AAAtD;AAAoE,SAAM,CAAA,GAAI;AAA0C,EAAA,MAAA,IAAA,MAAA,mCAAA,CAAA;AAAxD;AAAuE,SAAG,EAAA,EAAA,EAAI;AAAW,EAAA,IAAA,CAAA,KAAO,UAAA;AAAgB,IAAA,OAAI,UAAA,CAAQ,IAAI,CAAA,CAAA;AAAW,EAAA,IAAA,CAAA,CAAA,KAAO,CAAA,IAAE,CAAA,CAAA,KAAA,UAAA;AAA2B,IAAA,OAAG,CAAA,GAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,CAAA,CAAA;AAAC,EAAA,IAAA;AAAa,IAAA,OAAOC,CAAAA,CAAAA,IAAE,CAAA,CAAA;AAAC,EAAA,CAAA,CAAA,OAAG,EAAA,EAAA;AAAC,IAAA,IAAA;AAAuB,MAAA,OAAOA,CAAAA,CAAAA,IAAAA,CAAE,IAAA,EAAA,EAAA,EAAA,CAAA,CAAA;AAAC,IAAA,CAAA,CAAA,OAAO,EAAA,EAAE;AAAiB,MAAA,OAAA,CAAA,CAAA,IAAA,CAAA,IAAA,IAAA,CAAA,EAAA,IAAA,CAAA,CAAA;AAAC,IAAA;AAAC,EAAA;AAAzM;AAAgY,SAAG,CAAA,GAAI;AAAgD,EAAA,CAAA,IAAA,CAAA,KAAA,CAAA,GAAA,KAAA,EAAA,CAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,MAAA,CAAA,CAAA,CAAA,GAAA,CAAA,GAAA,EAAA,EAAA,CAAA,CAAA,UAAA,CAAA,EAAA,CAAA;AAA3D;AAAyE,SAAI,CAAA,GAAE;AAAC,EAAA,IAAA,CAAA,CAAA,EAAIpC;AAAO,IAAA,IAAE,EAAA,GAAA,EAAA,CAAA,CAAA;AAAG,IAAA,CAAA,GAAA,IAAA;AAAuB,IAAA,KAAA,IAAI,EAAA,GAAI,CAAA,CAAA,MAAA,EAAO,EAAA,IAAEK;AAAG,MAAA,KAAA,IAAK,CAAA,EAAG,CAAA,GAAI,EAAA,EAAA,EAAA,CAAA,GAAA,EAAA;AAAE,QAAA,CAAA,IAAE,CAAA,CAAGA,CAAAA,CAAAA,CAAAA,GAAAA,EAAI;AAAO,MAAA,CAAA,GAAA,EAAA,EAAA,KAAA,CAAA,CAAA,MAAA;AAAC,IAAA;AAAwB,IAAA,CAAA,GAAA,IAAA,EAAG,CAAA,GAAI,KAAA,EAAA,CAAA,SAAA,EAAA,EAAA;AAAa,MAAA,IAAA,CAAA,KAAO,YAAA;AAAgB,QAAA,OAAI,aAAQ,EAAI,CAAA;AAAa,MAAA,IAAA,CAAA,CAAA,KAAO,CAAA,IAAE,CAAA,CAAA,KAAA,YAAA;AAA6B,QAAA,OAAG,CAAA,GAAA,YAAA,EAAA,YAAA,CAAA,EAAA,CAAA;AAAC,MAAA,IAAEL;AAAG,QAAA,CAAA,CAAA,EAAA,CAAA;AAAU,MAAA,CAAA,CAAA,OAAG,EAAA,EAAA;AAAC,QAAA,IAAA;AAAqB,UAAA,OAAOK,CAAAA,CAAAA,IAAAA,CAAE,IAAA,EAAA,EAAA,CAAA;AAAC,QAAA,CAAA,CAAA,OAAO,EAAA,EAAE;AAAe,UAAA,OAAA,CAAA,CAAA,IAAA,CAAA,IAAA,IAAA,CAAA,EAAA,EAAA,CAAA;AAAC,QAAA;AAAGL,MAAAA;AAAG,IAAA,CAAA,EAAA,EAAA,CAAA;AAAC,EAAA;AAAjU;AAAkV,SAAC,CAAA,CAAM,IAAG,EAAA,EAAA;AAAwB,EAAA,CAAA,QAAA,CAAA,EAAA,GAAA,GAAA,EAAA,EAAA,CAAA,IAAA,IAAA,GAAA,KAAA,GAAA,EAAA;AAAzC;AAAuD,SAAA,CAAA,GAAA;AAAJ;ACEiR,SAAOA,IAAE,EAAA,EAAK;AAAO,EAAA,OAAA,EAAA,CAAA,IAAA,CAAA,IAAA,CAAA,EAAA,CAAA;AAA5B;AAAsiB,SAAG,CAAA,CAAA,IAAA,EAAA,EAAU;AAAS,EAAA,IAAA,YAAO,OAAA,EAAA;AAAG,IAAA,OAAG,KAAA;AAAC,EAAA,IAAA;AAAc,IAAA,OAAOA,EAAAA,CAAAA,EAAE,CAAA,EAAA,IAAA;AAAC,EAAA,CAAA,CAAA,OAAO,EAAA,EAAA;AAAE,IAAA,OAAA,KAAA;AAAC,EAAA;AAA7E;AAA4F,SAAO,EAAA,EAAA,EAAA;AAAqF,EAAA,OAAA,OAAA,CAAA,GAAA,MAAA,KAAA,CAAA,CAAA,EAAA,IAAA,CAAA,CAAA,EAAA,CAAA,IAAA,CAAA,CAAA,EAAA,CAAA,IAAA,CAAA,CAAA,EAAA,CAAA,IAAA,EAAA,EAAA,CAAA,IAAA,CAAA,CAAA,EAAA,KAAA,CAAA,CAAA,EAAA,CAAA,IAAA,CAAA,CAAA,EAAA,CAAA,IAAA,CAAA,CAAA,EAAA,CAAA,IAAA,EAAA,EAAA,CAAA,IAAAwB,GAAA,EAAA,CAAA,IAAA,EAAA,EAAA,CAAA;AAAjG;AAAgH,SAAO,EAAA,EAAA,EAAA;AAAkF,EAAA,OAAA,GAAA,IAAA,CAAA,GAAA,YAAA,KAAA,CAAA,CAAA,EAAA,CAAA,GAAA,qBAAA,KAAA,EAAA,CAAA,EAAA,CAAA,IAAA,GAAA,CAAA,EAAA,CAAA,IAAA,WAAA,EAAA,CAAA,MAAA;AAA9F;AAA6G,SAAO,EAAA,EAAA,EAAA;AAAqE,EAAA,OAAA,GAAA,IAAA,IAAA,mBAAA,KAAA,CAAA,CAAA,EAAA,CAAA,GAAA,4BAAA,KAAA,GAAA,EAAA,CAAA;AAAjF;AAAgG,SAAO,EAAA,EAAA,EAAA;AAAyD,EAAA,OAAA,GAAA,IAAA,IAAA,aAAA,KAAA,CAAA,CAAA,EAAA,CAAA,GAAA,sBAAA,KAAA,GAAA,EAAA,CAAA;AAArE;AAAoF,SAAO,EAAA,EAAA,EAAA;AAAyD,EAAA,OAAA,GAAA,IAAA,IAAA,aAAA,KAAA,CAAA,CAAA,EAAA,CAAA,GAAA,sBAAA,KAAA,GAAA,EAAA,CAAA;AAArE;AAAoF,SAAO,EAAA,EAAA,EAAA;AAAqD,EAAA,OAAA,GAAA,IAAA,IAAA,WAAA,KAAA,CAAA,CAAA,EAAA,CAAA,GAAA,oBAAA,KAAA,GAAA,EAAA,CAAA;AAAjE;AAAgF,SAAO,EAAA,EAAA,EAAA;AAAuD,EAAA,OAAA,GAAA,IAAA,IAAA,YAAA,KAAA,CAAA,CAAA,EAAA,CAAA,GAAA,qBAAA,KAAA,GAAA,EAAA,CAAA;AAAnE;AAAkF,SAAO,EAAA,EAAA,EAAA;AAAuD,EAAA,OAAA,GAAA,IAAA,IAAA,YAAA,KAAA,CAAA,CAAA,EAAA,CAAA,GAAA,qBAAA,KAAA,GAAA,EAAA,CAAA;AAAnE;AAAkF,SAAO,EAAA,EAAA,EAAA;AAA2D,EAAA,OAAA,GAAA,IAAA,IAAA,cAAA,KAAA,CAAA,CAAA,EAAA,CAAA,GAAA,uBAAA,KAAA,GAAA,EAAA,CAAA;AAAvE;AAAsF,SAAO,EAAA,EAAA,EAAA;AAA2D,EAAA,OAAA,GAAA,IAAA,IAAA,cAAA,KAAA,CAAA,CAAA,EAAA,CAAA,GAAA,uBAAA,KAAA,GAAA,EAAA,CAAA;AAAvE;AAAsF,SAAOA,GAAA,EAAA,EAAA;AAA6D,EAAA,OAAA,GAAA,IAAA,IAAA,eAAA,KAAA,CAAA,CAAA,EAAA,CAAA,GAAA,wBAAA,KAAA,GAAA,EAAA,CAAA;AAAzE;AAAwF,SAAO,EAAA,EAAA,EAAA;AAA+D,EAAA,OAAA,GAAA,IAAA,IAAA,gBAAA,KAAA,CAAA,CAAA,EAAA,CAAA,GAAA,yBAAA,KAAA,GAAA,EAAA,CAAA;AAA3E;AAA0F,SAAO,GAAA,EAAA,EAAA;AAAqB,EAAA,OAAA,cAAA,KAAA,GAAA,EAAA,CAAA;AAAjC;AAAgD,SAAO,EAAA,EAAA,EAAA;AAAqB,EAAA,OAAA,cAAA,KAAA,GAAA,EAAA,CAAA;AAAjC;AAAgD,SAAO,EAAA,EAAA,EAAA;AAAyB,EAAA,OAAA,kBAAA,KAAA,GAAA,EAAA,CAAA;AAArC;AAAoD,SAAO,EAAA,EAAA,EAAA;AAAyB,EAAA,OAAA,kBAAA,KAAA,GAAA,EAAA,CAAA;AAArC;AAAoD,SAAO,EAAA,EAAA,EAAA;AAA6B,EAAA,OAAA,sBAAA,KAAA,GAAA,EAAA,CAAA;AAAzC;AAAwD,SAAO,EAAA,EAAA,EAAA;AAA0E,EAAA,OAAA,WAAA,IAAA,OAAA,WAAA,KAAA,CAAA,CAAA,UAAA,CAAA,CAAA,EAAA,IAAA,EAAA,YAAA,WAAA,CAAA;AAAtF;AAAqG,SAAO,EAAA,EAAA,EAAA;AAA0B,EAAA,OAAA,mBAAA,KAAA,GAAA,EAAA,CAAA;AAAtC;AAAqD,SAAO,EAAA,EAAA,EAAA;AAAoE,EAAA,OAAA,WAAA,IAAA,OAAA,QAAA,KAAA,CAAA,CAAA,UAAA,CAAA,CAAA,EAAA,IAAA,EAAA,YAAA,QAAA,CAAA;AAAhF;AAA+F,SAAO,EAAA,EAAA,EAAA;AAAmC,EAAA,OAAA,4BAAA,KAAA,GAAA,EAAA,CAAA;AAA/C;AAA8D,SAAO,EAAA,EAAA,EAAA;AAAsF,EAAA,OAAA,WAAA,IAAA,OAAA,iBAAA,KAAA,CAAA,CAAA,UAAA,CAAA,CAAA,EAAA,IAAA,EAAA,YAAA,iBAAA,CAAA;AAAlG;AAAiH,SAAO,EAAExB,EAAAA,EAAEO;AAAE,EAAA,OAAA,CAAA,CAAA,IAAA,EAAA,CAAA;AAAlB;AAAiC,SAAO,EAAEP,EAAAA,EAAE;AAAE,EAAA,OAAA,CAAA,CAAA,IAAA,CAAA,CAAA;AAAlB;AAAiC,SAAO,EAAEA,EAAAA,EAAE;AAAE,EAAA,OAAA,CAAA,CAAA,IAAA,CAAA,CAAA;AAAlB;AAAiC,SAAOqC,EAAAA,EAAAA,EAAG;AAAM,EAAA,OAAA,EAAA,IAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA;AAArB;AAAoC,SAAOC,EAAAA,EAAAA,EAAG;AAAM,EAAA,OAAA,EAAA,IAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA;AAArB;AAAw4G,SAAIC,EAAAA,CAAE,IAAC,EAAA,EAAM;AAAc,EAAA,IAAA,KAAO,EAAA,IAAA,EAAU,EAAA,EAAA,SAAQ,EAAA,EAAIA;AAAqR,EAAA,OAAA,SAAA,CAAA,MAAA,IAAA,CAAA,KAAA,EAAA,CAAA,KAAA,GAAA,SAAA,CAAA,CAAA,CAAA,CAAA,EAAA,SAAA,CAAA,MAAA,IAAA,CAAA,KAAA,EAAA,CAAA,SAAA,SAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,EAAA,CAAA,GAAA,EAAA,CAAA,UAAA,GAAA,EAAA,GAAA,EAAA,IAAA,CAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,CAAA,EAAA,EAAA,CAAA,GAAA,UAAA,CAAA,KAAA,EAAA,CAAA,UAAA,GAAA,KAAA,CAAA,EAAA,EAAA,CAAA,EAAA,CAAA,KAAA,CAAA,KAAA,EAAA,CAAA,KAAA,GAAA,CAAA,CAAA,EAAA,EAAA,CAAA,EAAA,CAAA,MAAA,CAAA,KAAA,GAAA,MAAA,GAAA,KAAA,CAAA,EAAA,EAAA,CAAA,EAAA,CAAA,aAAA,CAAA,KAAA,EAAA,CAAA,aAAA,GAAA,OAAA,EAAA,CAAA,MAAA,KAAA,EAAA,CAAA,OAAA,GAAA,EAAA,CAAA,EAAA,EAAA,CAAA,EAAA,EAAA,EAAA,EAAA,GAAA,KAAA,CAAA;AAArV;AAAuW,SAAIA,EAAAA,CAAE,IAAG,EAAA,EAAA;AAAU,EAAA,IAAA,EAAA,GAAOA,EAAAA,CAAE,MAAA,CAAA,EAAA,CAAA;AAAqD,EAAA,OAAA,KAAA,OAAA,GAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,CAAA,CAAA,GAAA,GAAA,GAAA,EAAA,GAAA,UAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,CAAA,CAAA,IAAA,GAAA,GAAA,EAAA;AAAzF;AAA2G,SAAOvC,EAAAA,CAAAA,IAAAA,EAAAA,EAAAA;AAAC,EAAA,OAAA,EAAA;AAAhB;AAAoC,SAAK,EAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AAAuG,EAAA,IAAA,GAAIoC,aAAAA,IAAYG,EAAAA,IAAG,EAAA,CAAA,EAAA,CAAA,OAAA,CAAA,IAAA,EAAA,CAAA,OAAA,KAAA,CAAA,CAAA,YAAA,CAAA,EAAA,CAAA,eAAA,EAAA,CAAA,WAAA,CAAA,cAAA,EAAA,CAAA,EAAA;AAAE,IAAA,IAAA,EAAA,GAAO,EAAA,CAAI,OAAA,CAAIH,EAAAA,EAAE,EAAGpC,CAAAA;AAAS,IAAA,OAAA,EAAA,CAAA,EAAA,CAAA,KAAA,EAAA,GAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA,EAAA;AAAC,EAAA;AAAoB,EAAA,IAAA,EAAA,GAAA,CAAMK,SAAC,EAAA,EAAA,EAAA,EAAA;AAAE,IAAA,IAAA,GAAA,EAAOL,CAAAA;AAAmC,MAAA,OAAO,EAAA,CAAE,OAAA,CAAA,WAAA,EAAA,WAAA,CAAA;AAAC,IAAA,IAAA,EAAA,CAAIuC,EAAAA,CAAAA,EAAE;AAAuF,MAAA,IAAA,KAAOvC,GAAAA,GAAE,IAAA,CAAQuC,SAAAA,CAAU,EAAA,EAAA,OAAA,CAAA,QAAA,EAAA,EAAA,CAAA,CAAA,QAAA,IAAA,EAAA,KAAA,EAAA,OAAA,CAAA,MAAA,EAAA,GAAA,CAAA,GAAA,GAAA;AAAC,MAAA,OAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,QAAA,CAAA;AAAC,IAAA;AAAS,IAAA,IAAA,GAAA,EAAOvC,CAAAA;AAAyB,MAAA,OAAO,EAAA,CAAA,OAAA,CAAA,EAAA,GAAA,EAAA,EAAA,QAAA,CAAA;AAAE,IAAA,IAAA,GAAA,EAAOA,CAAAA;AAA0B,MAAA,OAAO,EAAA,CAAA,OAAA,CAAA,EAAA,GAAA,EAAA,EAAA,SAAA,CAAA;AAAE,IAAA,IAAA,GAAA,EAAOA,CAAAA;AAA0BA,MAAAA,OAAG,EAAA,CAAA,OAAA,CAAA,MAAA,EAAA,MAAA,CAAA;AAAE,EAAA,CAAA,EAAA,IAAGQ,EAAAA,CAAAA;AAAE,EAAA,IAAA,EAAA;AAAS,IAAA,OAAM,EAAA;AAA6B,EAAA,IAAA,KAAIH,MAAAA,CAAG,IAAA,CAAA,EAAA,CAAA,EAAA,EAAA,GAAA,CAAA,SAAA,EAAA,EAAA;AAAE,IAAA,IAAA,KAAOL,EAAE;AAAuB,IAAA,OAAG,EAAA,CAAA,OAAA,CAAE,SAAA,EAAA,EAAA,EAAA,EAAA;AAAK,MAAA,EAAA,CAAEK,EAAAA,CAAAA,GAAAA,IAAAA;AAAGmC,IAAAA,CAAAA,CAAAA,EAAC,EAAA;AAAE,EAAA,CAAA,EAAA,EAAGxC,CAAAA;AAA8G,EAAA,IAAA,GAAA,UAAA,KAAW,EAAA,GAAA,OAAA,mBAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,KAAA,EAAA,CAAA,QAAA,SAAA,CAAA,IAAA,KAAA,EAAA,CAAA,OAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA;AAAE,IAAA,OAAG,GAAIwC,EAAE,CAAA;AAAQ,EAAA,IAAA,CAAA,KAAMnC,GAAC,MAAA,EAAE;AAAC,IAAA,IAAA,EAAA,CAAIoC,EAAAA,CAAAA,EAAEpC;AAAsB,MAAA,IAAA,EAAA,GAAOL,EAAAA,CAAE,IAAA,GAAQ,IAAA,GAAA,GAAA,IAAA,GAAYyC,EAAAA;AAAgB,MAAA,OAAA,EAAA,CAAA,OAAA,CAAA,WAAA,GAAA,EAAA,GAAA,KAAA,SAAA,CAAA;AAAC,IAAA;AAAS,IAAA,IAAA,GAAA,EAAOzC,CAAAA;AAAsD,MAAA,OAAO,EAAA,CAAA,QAAA,MAAA,CAAA,SAAA,CAAA,SAAA,IAAA,CAAA,EAAA,GAAA,QAAA,CAAA;AAAE,IAAA,IAAA,GAAA,EAAOA,CAAAA;AAAkD,MAAA,OAAO,EAAA,CAAA,QAAA,IAAA,CAAA,SAAA,CAAA,SAAA,IAAA,CAAA,EAAA,GAAA,MAAA,CAAA;AAAE,IAAA,IAAA,GAAA,EAAO,CAAA;AAAK,MAAA,OAAA,GAAA,EAAA,CAAA;AAAC,EAAA;AAA4B,EAAA,IAAIK,EAAAA,EAAC,KAAIgC,EAAAA,EAAE,EAAA,GAAA,OAAM,EAAA,GAAI,CAAA,KAAG,GAAG,CAAA;AAAqD,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,KAAW,EAAA,GAAA,MAAM,EAAA,GAAA,CAAI,KAAA,GAAO,CAAA,CAAA,EAAA,GAAA,EAAU,CAAA,MAAA,KAAS,YAAA,IAAa,EAAA,CAAIK,OAAE,IAAA,GAAI,EAAA,CAAK,OAAA,EAAA,CAAA,GAAU,GAAA,CAAA;AAA+M,EAAA,OAAA,EAAA,CAAA,EAAQF,CAAAA,KAAG,EAAA,GAAEG,MAAIF,MAAAA,CAAI,SAAA,CAAOE,QAAAA,CAAMA,IAAAA,CAAAA,EAAAA,CAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,MAAAA,EAAAA,GAAAA,GAAAA,GAAAA,IAAAA,CAAAA,SAAAA,CAAAA,WAAAA,CAAAA,IAAAA,CAAAA,EAAAA,CAAAA,CAAAA,EAAAA,GAAAA,EAAAA,CAAAA,KAAAA,EAAAA,GAAAA,GAAAA,GAAAA,EAAAA,CAAAA,EAAAA,CAAAA,CAAAA,EAAAA,CAAAA,KAAAA,GAAAA,MAAAA,IAAAA,EAAAA,IAAAA,CAAAA,IAAAA,EAAAA,CAAAA,MAAAA,GAAAA,EAAAA,GAAAA,CAAAA,GAAAA,EAAAA,CAAAA,EAAAA,CAAAA,GAAAA,EAAAA,CAAAA,OAAAA,CAAAA,MAAAA,CAAAA,SAAAA,CAAAA,QAAAA,CAAAA,IAAAA,CAAAA,EAAAA,GAAAA,QAAAA,CAAAA,GAAAA,EAAAA,CAAAA,OAAAA,CAAAA,UAAAA,EAAAA,SAAAA,CAAAA,IAAAA,EAAAA,CAAAA,KAAAA,IAAAA,CAAAA,EAAAA,CAAAA,EAAAA,EAAAA,GAAAA,MAAAA,SAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA;AAAE,IAAA,KAAA,IAAK,EAAA,GAAA,EAAA,EAAQ,EAAA,GAAGH,CAAAA,EAAE,KAAK,EAAA,CAAGxC,MAAAA,EAAIuC,EAAAA,GAAEH,EAAAA,EAAE,EAAA,EAAA;AAA0B,MAAA,EAAA,CAAA,EAAA,EAAO5B,OAAE,EAAS,CAAA,IAAA,EAAA,CAAA,IAAA,CAAW,GAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,IAAA,CAAA,CAAA,GAAA,EAAA,CAAA,KAAA,EAAA,CAAA;AAAC,IAAA,OAAE,EAAA,CAAA,OAAA,CAAa,SAAK,EAAA,EAAK;AAAoB,MAAA,EAAA,CAAEgC,KAAAA,CAAAA,OAAAA,CAAAA,IAAAA,EAAAA,CAAAA,IAAAA,CAAAA,EAAAA,CAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,IAAAA,CAAAA,CAAAA;AAAGxC,IAAAA,CAAAA,CAAAA,EAAEK,EAAAA;EAA4B,CAAA,EAAA,EAAA,EAAA,IAAO,EAAA,EAAGL,EAAAA,EAAEK,EAAEkC,CAAAA,GAAEI,EAAAA,CAAAA,GAAAA,CAAEP,SAAG,EAAA,EAAA;AAAG,IAAA,OAAI,GAAK,EAAA,EAAI,EAAA,EAAE,EAAA,EAAA,EAAA,EAASpC,IAAEK,EAAAA,CAAAA;EAAK,CAAA,CAAA,EAAA,GAAI+B,IAAAA,CAAE,GAAA,KAAA,SAAA,EAAA,EAAA,IAAA,EAAA,EAAA;AAAE,IAAA,IAAGpC,EAAAA,GAAE,CAAA;AAAsB,IAAA,IAAA,EAAA,CAAA,MAAA,CAAOoC,SAAM,EAAA,EAAQ,EAAA,EAAI;AAAoD,MAAA,OAAM,EAAA,EAAA,EAAA,EAAA,CAAA,OAAA,CAAA,IAAA,CAAA,IAAA,CAAA,IAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,CAAA,OAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,MAAA,GAAA,CAAA;AAAG,IAAA,CAAA,EAAA,CAAA,CAAA,GAAA,EAAA;AAA6D,MAAA,OAAOG,EAAAA,CAAG,CAAA,CAAA,IAAElC,EAAAA,KAAE,KAAM,EAAA,GAAK,EAAA,GAAI,KAAA,CAAA,GAAMkC,GAAAA,GAAG,GAAA,IAAA,CAAA,OAAA,CAAA,GAAA,GAAA,GAAA,GAAA,CAAA,CAAA;AAAGN,IAAAA,OAAES,EAAAA,CAAG,CAAA,CAAA,GAAGJ,EAAAA,GAAG,GAAA,GAAEI,EAAAA,CAAEJ,IAAAA,CAAG,IAAA,CAAA,GAAA,GAAA,GAAA,EAAA,CAAA,CAAA,CAAA;EAAC,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,CAAA,CAAA,GAAA,GAAA,CAAA,CAAA,GAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;AAA12D;AAA03D,SAAO,GAAA,EAAA,EAAI;AAAoC,EAAA,OAAA,MAAA,KAAA,CAAA,SAAA,CAAA,QAAA,CAAA,IAAA,CAAA,EAAA,CAAA,GAAA,GAAA;AAArD;AAA+E,SAAIK,GAAEF,EAAAA,EAAER,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA;AAAE,EAAA,IAAA,IAAIA,EAAAA,EAAE,EAAA;AAA4U,EAAA,IAAA,CAAA,KAAO,MAAA,CAAKjC,wBAAAA,CAAAA,EAAAA,EAAAA,EAAAA,KAAAA,EAAAA,KAAAA,EAAAA,EAAAA,CAAAA,EAAAA,GAAAA,EAAAA,GAAAA,GAAAA,EAAAA,GAAAA,EAAAA,CAAAA,MAAAA,EAAAA,CAAAA,OAAAA,CAAAA,iBAAAA,EAAAA,SAAAA,IAAAA,EAAAA,CAAAA,OAAAA,CAAAA,UAAAA,EAAAA,SAAAA,IAAAA,EAAAA,CAAAA,GAAAA,KAAAA,EAAAA,GAAAA,EAAAA,CAAAA,QAAAA,UAAAA,EAAAA,SAAAA,IAAAA,EAAAA,CAAAA,EAAAA,EAAAA,EAAAA,CAAAA,KAAAA,EAAAA,GAAAA,GAAAA,GAAAA,EAAAA,GAAAA,MAAAA,EAAAA,KAAAA,EAAAA,CAAAA,IAAAA,CAAAA,OAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,CAAAA,GAAAA,CAAAA,EAAAA,GAAAA,GAAAA,EAAAA,CAAAA,GAAAA,GAAAA,EAAAA,EAAAA,EAAAA,CAAAA,OAAAA,IAAAA,CAAAA,GAAAA,EAAAA,CAAAA,EAAAA,EAAAA,GAAAA,KAAAA,EAAAA,EAAAA,GAAAA,CAAAA,CAAAA,EAAAA,QAAAA,IAAAA,CAAAA,GAAAA,EAAAA,KAAAA,EAAAA,GAAAA,KAAAA,EAAAA,CAAAA,KAAAA,CAAAA,IAAAA,CAAAA,CAAAA,GAAAA,CAAAA,SAAAA,EAAAA,EAAAA;AAAG,IAAA,OAAO,IAAA,GAAM,EAAA;AAA8C,EAAA,CAAA,CAAA,CAAA,IAAA,CAAA,IAAO,CAAA,CAAA,OAAMA,CAAAA,CAAAA,GAAAA,IAAAA,GAAAA,EAAAA,CAAAA,KAAAA,CAAAA,IAAAA,CAAAA,CAAAA,GAAAA,CAAAA,SAAAA,EAAAA,EAAAA;AAAG,IAAA,OAAO,KAAA,GAAOyC,EAAAA;AAA4C,EAAA,CAAA,CAAA,CAAA,IAAA,CAAGD,IAAGhC,CAAAA,CAAAA,GAAE,EAAA,GAAM,EAAA,CAAA,OAAA,CAAO,YAAA,EAAA,SAAA,CAAA,CAAA,EAAA,EAAA,CAAA,EAAA,CAAA,EAAA;AAAE,IAAA,IAAA,EAAA,IAAOiC,EAAAA,CAAAA,KAAAA,CAAAA,OAAAA,CAAAA;AAAGE,MAAAA,OAAE,EAAA;AAA2M,IAAA,CAAA,KAAA,IAAA,CAAA,SAAA,CAAA,KAAA,EAAA,CAAA,EAAA,MAAA,8BAAA,CAAA,IAAA,EAAA,GAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,CAAA,SAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,MAAA,MAAA,EAAA,GAAA,EAAA,CAAA,QAAA,IAAA,EAAA,KAAA,EAAA,OAAA,CAAA,MAAA,EAAA,GAAA,CAAA,CAAA,OAAA,CAAA,YAAA,GAAA,CAAA,EAAA,KAAA,EAAA,CAAA,OAAA,CAAA,IAAA,QAAA,CAAA,CAAA;AAAC,EAAA;AAAe,EAAA,OAAA,KAAA,IAAA,GAAA,EAAA;AAA9vB;AAA8wB,SAAO,GAAA,EAAA,EAAM;AAAU,EAAA,OAAA,KAAA,CAAA,QAAA,EAAA,CAAA;AAA7B;AAA6C,SAAO,GAAA,EAAA,EAAA;AAAmB,EAAA,OAAA,aAAA,OAAA,EAAA;AAAhC;AAAgD,SAAO,GAAA,EAAA,EAAA;AAAQ,EAAA,OAAA,IAAA,KAAA,EAAA;AAArB;AAAqC,SAAO,GAAA,EAAA,EAAA;AAAkB,EAAA,OAAA,YAAA,OAAA,EAAA;AAA/B;AAA+C,SAAO,GAAA,EAAA,EAAA;AAAkB,EAAA,OAAA,YAAA,OAAA,EAAA;AAA/B;AAA+C,SAAO,GAAA,EAAA,EAAA;AAAU,EAAA,OAAA,MAAA,KAAA,EAAA;AAAvB;AAAuC,SAAO,GAAG3C,EAAAA,EAAC;AAA4B,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,IAAA,iBAAA,KAAA,GAAA,EAAA,CAAA;AAA7C;AAA6D,SAAO,GAAA,EAAA,EAAA;AAA4B,EAAA,OAAA,QAAA,IAAA,OAAA,EAAA,IAAA,IAAA,KAAA,EAAA;AAAzC;AAAyD,SAAO,GAAGA,EAAAA,EAAC;AAA0B,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,IAAA,eAAA,KAAA,GAAA,EAAA,CAAA;AAA3C;AAA2D,SAAO,GAAGA,EAAAA,EAAC;AAAiD,EAAA,OAAA,GAAA,EAAA,CAAA,KAAA,qBAAA,EAAA,CAAA,EAAA,KAAA,EAAA,YAAA,KAAA,CAAA;AAAlE;AAAkF,SAAO,GAAA,EAAA,EAAA;AAAoB,EAAA,OAAA,cAAA,OAAA,EAAA;AAAjC;AAAiD,SAAO,GAAA,EAAA,EAAO;AAA0B,EAAA,OAAA,MAAA,CAAA,SAAA,CAAA,QAAA,CAAA,IAAA,CAAA,EAAA,CAAA;AAA9C;AAA8D,SAAOA,GAAAA,EAAAA,EAAE;AAAoC,EAAA,OAAA,EAAA,GAAA,KAAA,GAAA,GAAA,EAAA,CAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA;AAAnD;AAA+oC,SAAIA,EAAAA,GAAE;AAA8E,EAAA,IAAA,EAAA,uBAAyB,IAAA,EAAA,EAAS,KAAGK,CAAC,EAAA,CAAE,EAAA,CAAA,QAAA,EAAQ,CAAA,EAAA,GAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,EAAA,CAAA,EAAA,CAAA,YAAA,CAAA,CAAA,CAAA,IAAA,CAAA,GAAA,CAAA;AAAC,EAAA,OAAA,CAAA,EAAA,CAAA,OAAA,EAAA,EAAA,EAAA,CAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,EAAA,CAAA,CAAA,IAAA,CAAA,GAAA,CAAA;AAA1I;AAA4J,SAAO,EAAA,CAAA,IAAO,EAAA,EAAA;AAAkC,EAAA,OAAA,MAAA,CAAA,SAAA,CAAA,cAAA,CAAA,IAAA,CAAA,IAAA,EAAA,CAAA;AAAxD;AAA+V,SAAIL,EAAAA,CAAE,IAAA,EAAA,EAAA;AAAC,EAAA,IAAA,CAAA,EAAA,EAAIuC;AAAuDA,IAAAA,IAAE,EAAA,GAAA,IAAOvC,KAAAA,CAAEA,yCAAEuC,CAAAA;AAAE,IAAA,EAAA,CAAA,MAAA,GAAA,IAAA,EAAA,GAAA,EAAA;AAAC,EAAA;AAAW,EAAA,OAAA,GAAA,EAAA,CAAA;AAArG;;ACet0Y,EAAA,OAAS;AAMf,IAAA,GAAA,CAAA,OAAO,MAAA,EAAA;AACN,MAAA,IAAI,CAAA,MAAA,EAAU;AACb,QAAA,OAAK,MAAA,CAAQ,GAAA;UACZ,IAAA,uBAAA;AACC,YAAA,kBAAA;AACC,YAAA,gBAAA,EAAA,OAAA,IAAA,yBAAA;AACA,YAAA,MAAA;AACA,YAAA;AAAA;AACA,SAAA;AACD,MAAA;AAEF,MAAA,MAAA,UAAA,GAAA,KAAA,CAAA,OAAA,CAAA,GAAA,CAAA;AAEA,MAAA,MAAM,KAAA,GAAA,UAAA,GAAmB,GAAA,CAAA,GAAA,CAAQ,CAAG,EAAA,KAAA,IAAA,UAAA,CAAAR,OAAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA,GAAA,IAAA,UAAA,CAAAA,OAAAA,EAAA,QAAA,GAAA,CAAA;AAEpC,MAAA,MAAM,SAAA,GAAQ,iBAAqBzC,QAAAA,EAAO,KAAA,EAAI,UAAU,CAAA,GAAIA,QAAAA,CAAI,OAAWA,QAAAA,CAAA,SAAA;AAE3E,MAAA,IAAA,SAAA,EAAM;AAEN,QAAA,OAAI,SAAA,CAAW,SAAA,CAAA,CAAA,GAAA,CAAA,KAAA,CAAA;AACd,MAAA;AACD,MAAA,OAAA,MAAA,CAAA,GAAA,KAAA,CAAA;AAEA,IAAA;AAAsB,GAAA;AACvB;AA9Bc,SAAA,gBAAA,CAAAA,QAAAA,EAAA,KAAA,EAAA,UAAA,EAAA;AAkChB,EAAA,IAAAA,QAAAA,CAAS,OAAA,MAAA,EAAoE;AAC5E,IAAA,OAAI,UAAA,GAAe,CAAA,KAAA,CAAW,IAAA,CAAA,CAAA,QAAA,CAAA,GAAA,CAAA,GAAA,OAAA,CAAA,KAAA,CAAA;AAC7B,EAAA;AACD,EAAA,IAAA,OAAAA,QAAAA,CAAA,EAAA,KAAA,UAAA,EAAA;AAEA,IAAA,OAAIA,QAAAA,CAAO,GAAQ,KAAA,CAAA;AAClB,EAAA;AACD,EAAA,OAAA,UAAAA,QAAAA,CAAA,EAAA;AAEA;AC5DD,SAAI,2BAAoB,OAAA,EAAA;AAMjB,EAAA,iBAAA,GAAS,OAAA;AACf;AADe,SAAA,0BAAA,GAAA;AAOT,EAAA,OAAS,iBAAA;AACf;;ACXM,EAAA,OAAS,OAAA,SAAA,KAAmE,UAAA,GAAA,SAAA,EAAA,GAAA,SAAA;AAClF;ACUM,SAAe,SAAA,KAAA,EAAf;;;ACdP,EAAA,MAAO,YAAA,GAAA,IAAA,eAAA,CAAA6C,OAAAA,EAAmB,KAAA,EAAA,WAAAS,OAAA,CAAA;AAC1B,EAAA,OAAO,YAAA,CAAc,WAAA,KAAA,CAAA,MAAA;AAEd;AAGN,SAAOC,QAAAA,CAAAA,IAAY,EAAA,EAAA;AACpB,EAAA,OAAA,EAAA,GAAA,EAAA;AAJgB;;ACDT,EAAA,OAAS,EAAA,IAAA,EAAA;AACf;AADe,SAAA,WAAA,CAAA,IAAA,EAAA,EAAA;AAMT,EAAA,OAAS,EAAA,GAAA,EAAA;AACf;AADe,SAAA,kBAAA,CAAA,IAAA,EAAA,EAAA;AAMT,EAAA,OAAS,EAAA,IAAA,EAAA;AACf;AADe,SAAA,KAAA,CAAA,IAAA,EAAA,EAAA;AAMT,EAAA,OAAS,EAAA,KAAA,EAAA;AACf;AADe,SAAA,QAAA,CAAA,IAAA,EAAA,EAAA;AAMT,EAAA,OAAS,EAAA,KAAMZ,EAAAA;AACrB;AAMA,SAAOA,qBAAAA,CAAMlB,UAAAA,EAAAA,IAAAA,EAAAA,QAAAA,EAAAA,QAAAA,QAAAA,EAAAA;AACd,EAAA,OAAA;AAFgB,IAAA,GAAA,CAAA,KAAA,EAAA;;;ACZhB,GAAA;AAOC;AAEE,SAAA,mBAAA,CAAkB,OAAMzB,QAAAA,EAAc;AAEsE,EAAA,MAC7G,QAAA,GAAA,qBAAA,KAAA,CAAA,CAAA;AACD,EAAA,OAAA,qBAAA,CAAA,QAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,OAAAA,QAAA,CAAA;AACD;AAEO,SAAS,0BAAA,CAAsC,OAAAA,QAAAA,EAA8C;AACnG,EAAA,MAAM,QAAA,GAAW,sBAAqB,KAAK,CAAA,CAAA;AAC3C,EAAA,OAAO,qBAAA,CAAsB,eAAA,EAAU,oCAAA,EAAyC,QAAA,EAAc,OAAAA,QAAA,CAAA;AAC/F;AAEO,SAAS,sBAAA,CAAA,OAA8BA,QAAAA,EAAe;AAC5D,EAAA,MAAM,QAAA,GAAW,qBAAA,KAAsB,CAAA,CAAA;AACvC,EAAA,OAAO,qBAAA,CAAsB,WAAA,EAAA,gCAAA,EAAiB,QAAA,EAAsC,OAAAA,QAAU,CAAA;AAC/F;AAEO,SAAS,6BAAA,CAAyC,OAAAA,QAAAA,EAA8C;AACtG,EAAA,MAAM,QAAA,GAAW,sBAAqB,KAAK,CAAA,CAAA;AAC3C,EAAA,OAAO,qBAAA,CAAsB,kBAAA,EAAa,uCAAA,EAA4C,QAAA,EAAc,OAAAA,QAAA,CAAA;AACrG;AAEO,SAAS,gBAAA,CAAA,OAAAA,QAAAA,EAAiC;AAChD,EAAA,MAAM,QAAA,GAAW,uBAAsB,KAAK,CAAA,CAAA;AAC5C,EAAA,OAAO,qBAAA,CAAsB,KAAA,EAAA,0BAAA,EAAoB,QAAA,EAAA,OAAAA,QAAA,CAAA;AAClD;AAEO,SAAS,mBAAA,CAAoB,OAAeA,QAAAA,EAA8C;AAChG,EAAA,MAAM,QAAA,GAAW,uBAAuB,KAAK,CAAA,CAAA;AAC7C,EAAA,OAAO,qBAAA,CAAsB,QAAA,EAAO,6BAAA,EAA4B,QAAA,EAAU,OAAOA,QAAO,CAAA;AACzF;AAEO,SAAS,gBAAA,CAAA,KAAA,EAAuB,SAAA,EAAeA,QAAAA,EAA8C;AACnG,EAAA,MAAM,QAAA,GAAW,CAAA,mBAAA,EAAA,KAAuB,CAAA,sBAAA,EAAK,SAAA,CAAA,CAAA;AAC7C,EAAA,OAAO;AACR,IAAA,GAAA,CAAA,KAAA,EAAA;AAHgB,MAAA,OAAA,KAAA,CAAA,UAAA,KAAA,IAAA,KAAA,CAAA,SAAA,SAAA,GAAA,MAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAA,GAAA,CAAA,IAAA,wBAAA,0BAAA,EAAAA,QAAAA,EAAA,WAAA,sBAAA,EAAA,KAAA,EAAA,QAAA,CAAA,CAAA;AAKT,IAAA;AACN,GAAA;AACA;AAEE,SAAA,yBAAA,CAAuB,KAAA,EAAS,GAAA,EAAMA,QAAAA,EAAS;AAEmF,EAAA,MACnI,QAAA,GAAA,CAAA,mBAAA,EAAA,KAAA,CAAA,uBAAA,EAAA,GAAA,CAAA,CAAA;AACD,EAAA,OAAA;AACD,IAAA,GAAA,CAAA,KAAA,EAAA;AATgB,MAAA,OAAA,KAAA,CAAA,MAAA,IAAA,KAAA,IAAA,KAAA,CAAA,MAAA,IAAA,MAAA,MAAA,CAAA,EAAA,CAAA,KAAA,CAAA,GAAA,MAAA,CAAA,GAAA;AAWT,QAAA,IAAS,wBAA6B,mCAAA,EAA0EA,QAAAA,EAAA,OAAA,IAAA,sBAAA,EAAA,OAAA,QAAA;AACtH,OAAA;AACA,IAAA;AAAO,GAAA;AAEL;AAG+H,SAC7H,yBAAA,CAAA,UAAA,EAAA,SAAA,EAAAA,QAAAA,EAAA;AAAA,EAAA,MACH,QAAA,GAAA,CAAA,kBAAA,EAAA,UAAA,CAAA,sBAAA,EAAA,SAAA,CAAA,CAAA;AACD,EAAA,OAAA;AACD,IAAA,GAAA,CAAA,KAAA,EAAA;AAXgB,MAAA,OAAA,KAAA,CAAA,MAAA,GAAA,UAAA,IAAA,KAAA,CAAA,MAAA,GAAA,YAAA,MAAA,CAAA,EAAA,CAAA,KAAA,CAAA,GAAA,MAAA,CAAA,GAAA;AAaT,QAAA,IAAS,wBAA6B,mCAAA,EAAqFA,QAAAA,EAAA,OAAA,IAAA,sBAAA,EAAA,OAAA,QAAA;AACjI,OAAA;AACA,IAAA;AAAO,GAAA;AAEL;AAG+H,SAC7H,YAAAA,QAAAA,EAAA;AAAA,EAAA,OACH;AACD,IAAA,GAAA,CAAA,KAAA,EAAA;AACD,MAAA,OAAA,SAAA,KAAA,CAAA,GAAA,OAAA,EAAA,CAAA,KAAA,IAAA,MAAA,CAAA,GAAA;QAXgB,IAAA,uBAAA;AAaA,UAAA,qBAAA;AACRA,UAAAA,QAAAA,EAAA,OAAA,IAAA,6BAAA;AACF,UAAA,KAAA;AACH,UAAA;AAGG;AAAI,OAAA;AACH,IAAA;AACoB,GAAA;AACpB;ACMP,SAAA,gBAAA,CAAA,UAAA,EAAA,IAAA,EAAA,QAAA,EAAA,QAAAA,QAAAA,EAAA;AAlGyF,EAAA,OAAA;AAA5E,IAAA,GAAA,CAAA,KAAA,EAAA;;;ACLb,GAAA;AAOC;AAEE,SAAA,cAAA,CAAkB,OAAOA,QAAAA,EAAM;AAE6E,EAAA,MAC7G,QAAA,GAAA,cAAA,KAAA,CAAA,CAAA,CAAA;AACD,EAAA,OAAA,gBAAA,CAAA,QAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,OAAAA,QAAA,CAAA;AACD;AAEO,SAAS,qBAAA,CAA8B,OAAAA,QAAAA,EAAiD;AAC9F,EAAA,MAAM,QAAA,GAAW,eAAc,KAAK,CAAA,CAAA,CAAA;AACpC,EAAA,OAAO,gBAAA,CAAiB,eAAA,EAAU,8BAAA,EAAmC,QAAA,EAAc,OAAAA,QAAA,CAAA;AACpF;AAEO,SAAS,iBAAA,CAAA,OAAsBA,QAAAA,EAAe;AACpD,EAAA,MAAM,QAAA,GAAW,cAAA,KAAe,CAAA,CAAA,CAAA;AAChC,EAAA,OAAO,gBAAA,CAAiB,WAAA,EAAA,0BAAA,EAAiB,QAAA,EAAgC,OAAAA,QAAU,CAAA;AACpF;AAEO,SAAS,wBAAA,CAAiC,OAAAA,QAAAA,EAAiD;AACjG,EAAA,MAAM,QAAA,GAAW,eAAc,KAAK,CAAA,CAAA,CAAA;AACpC,EAAA,OAAO,gBAAA,CAAiB,kBAAA,EAAa,iCAAA,EAAsC,QAAA,EAAc,OAAAA,QAAA,CAAA;AAC1F;AAEO,SAAS,WAAA,CAAA,OAAAA,QAAAA,EAAyB;AACxC,EAAA,MAAM,QAAA,GAAW,gBAAe,KAAK,CAAA,CAAA,CAAA;AACrC,EAAA,OAAO,gBAAA,CAAiB,KAAA,EAAA,oBAAA,EAAoB,QAAA,EAAA,OAAAA,QAAA,CAAA;AAC7C;AAEO,SAAS,cAAA,CAAY,OAAeA,QAAAA,EAAiD;AAC3F,EAAA,MAAM,QAAA,GAAW,gBAAgB,KAAK,CAAA,CAAA,CAAA;AACtC,EAAA,OAAO,gBAAA,CAAiB,QAAA,EAAO,uBAAA,EAAsB,QAAA,EAAU,OAAOA,QAAO,CAAA;AAC9E;AAEO,SAAS,iBAAA,CAAe,SAAeA,QAAAA,EAAiD;AAC9F,EAAA,MAAM,QAAA,GAAW,cAAA,OAAqB,CAAA,QAAA,CAAA;AACtC,EAAA,OAAO;AACR,IAAA,GAAA,CAAA,KAAA,EAAA;AAHgB,MAAA,OAAA,QAAA,OAAA,KAAA,EAAA,GAAA,MAAA,CAAA,EAAA,CAAA,KAAA,CAAA,GAAA,MAAA,CAAA,GAAA,CAAA,IAAA,wBAAA,0BAAA,EAAAA,QAAAA,EAAA,WAAA,yBAAA,EAAA,KAAA,EAAA,QAAA,CAAA,CAAA;AAKT,IAAA;AACN,GAAA;AACA;ACMD,SAAA,YAAAA,QAAAA,EAAA;AAtDwE,EAAA,OAAA;AAA3D,IAAA,GAAA,CAAA,KAAA,EAAA;;;ACRN,GAAA;AACN;AAEE,SAAA,aACGA,QAAAA,EAAU;AAC8G,EAAA,OAC5H;AACD,IAAA,GAAA,CAAA,KAAA,EAAA;AACD,MAAA,OAAA,KAAA,GAAA,MAAA,CAAA,GAAA,CAAA,IAAA,wBAAA,qBAAA,EAAAA,QAAAA,EAAA,OAAA,IAAA,uBAAA,EAAA,OAAA,OAAA,CAAA,CAAA,GAAA,MAAA,CAAA,GAAA,KAAA,CAAA;AARgB,IAAA;AAUT,GAAA;AACN;ACWD,SAAA,cAAA,CAAA,UAAA,EAAA,IAAA,EAAA,QAAA,EAAA,QAAAA,QAAAA,EAAA;AAtBoF,EAAA,OAAA;AAAvE,IAAA,GAAA,CAAA,KAAA,EAAA;;;ACSb,GAAA;AAOC;AAEE,SAAA,YAAA,CAAO,OAAWA,QAAAA,EAAc;AAE0E,EAAA,MAC3G,QAAA,GAAA,CAAA,WAAA,EAAA,KAAA,CAAA,WAAA,EAAA,CAAA,CAAA;AACD,EAAA,OAAA,eAAA,QAAA,EAAA,qBAAA,EAAA,UAAA,KAAA,CAAA,OAAA,IAAAA,QAAA,CAAA;AACD;AAEO,SAAS,mBAAA,CAA0B,OAAAA,QAAAA,EAA+C;AACxF,EAAA,MAAM,QAAA,GAAW,CAAA,YAAA,EAAc,KAAA,CAAM,WAAA,EAAa,CAAA,CAAA;AAClD,EAAA,OAAO,eAAe,eAAA,EAAU,4BAAA,EAAiC,UAAc,KAAA,CAAG,OAAA,IAAOA,QAAA,CAAA;AAC1F;AAEO,SAAS,eAAA,CAAA,OAAoBA,QAAAA,EAAa;AAChD,EAAA,MAAM,QAAA,GAAW,CAAA,WAAA,EAAA,KAAA,CAAe,WAAA,EAAkB,CAAA,CAAA;AAClD,EAAA,OAAO,eAAe,WAAA,EAAA,wBAAA,EAAiB,UAA8B,KAAA,CAAA,OAAA,IAAgBA,QAAQ,CAAA;AAC9F;AAEO,SAAS,sBAAA,CAA6B,OAAAA,QAAAA,EAA+C;AAC3F,EAAA,MAAM,QAAA,GAAW,CAAA,YAAA,EAAc,KAAA,CAAM,WAAA,EAAa,CAAA,CAAA;AAClD,EAAA,OAAO,eAAe,kBAAA,EAAa,+BAAA,EAAoC,UAAc,KAAA,CAAG,OAAA,IAAOA,QAAA,CAAA;AAChG;AAEO,SAAS,SAAA,CAAA,OAAAA,QAAAA,EAAuB;AACtC,EAAA,MAAM,QAAA,GAAW,CAAA,aAAA,EAAe,KAAA,CAAM,WAAA,EAAa,CAAA,CAAA;AACnD,EAAA,OAAO,eAAe,KAAA,EAAA,kBAAA,EAAoB,UAAA,KAAA,CAAA,OAAA,IAAiCA,QAAA,CAAA;AAC5E;AAEO,SAAS,YAAA,CAAU,OAAaA,QAAAA,EAA+C;AACrF,EAAA,MAAM,QAAA,GAAW,CAAA,aAAA,EAAgB,KAAA,CAAM,WAAA,EAAa,CAAA,CAAA;AACpD,EAAA,OAAO,eAAe,QAAA,EAAO,qBAAA,EAAoB,UAAgB,KAAA,CAAA,OAAA,IAAWA,QAAO,CAAA;AACpF;AAEO,SAAS,YAAAA,QAAAA,EAA0B;AACzC,EAAA,OAAM;AACN,IAAA,GAAA,CAAA,KAAA,EAAO;AACR,MAAA,OAAA,MAAA,CAAA,MAAA,KAAA,CAAA,OAAA,EAAA,CAAA,GAAA,MAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAA,GAAA,CAAA,IAAA,wBAAA,oBAAA,EAAAA,QAAAA,EAAA,WAAA,oBAAA,EAAA,KAAA,EAAA,kBAAA,CAAA,CAAA;AAHgB,IAAA;AAKT,GAAA;AACN;AAEE,SAAA,UAAOA,QAAAA,EAAa;AAEgH,EAAA,OACrI;AACD,IAAA,GAAA,CAAA,KAAA,EAAA;AACD,MAAA,OAAA,MAAA,CAAA,MAAA,KAAA,CAAA,OAAA,EAAA,CAAA,GAAA,MAAA,CAAA,IAAA,IAAA,uBAAA,CAAA,oBAAAA,QAAAA,EAAA,OAAA,IAAA,sBAAA,KAAA,EAAA,kBAAA,CAAA,CAAA,GAAA,MAAA,CAAA,GAAA,KAAA,CAAA;AARgB,IAAA;AAUT,GAAA;AACN;AC/DD,SAAA,gBAAA,CAAA,UAAA,EAAA,IAAA,EAAA,QAAA,EAAA,QAAAA,QAAAA,EAAA;AANsE,EAAA,OAAA;AAAzD,IAAA,GAAA,CAAA,KAAA,EAAA;;;ACiBb,GAAA;AAOC;AAEE,SAAA,cAAA,CAAkB,OAAOA,QAAAA,EAAM;AAE6E,EAAA,MAC7G,QAAA,GAAA,cAAA,KAAA,CAAA,CAAA;AACD,EAAA,OAAA,gBAAA,CAAA,QAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,OAAAA,QAAA,CAAA;AACD;AAEO,SAAS,qBAAA,CAA8B,OAAAA,QAAAA,EAAiD;AAC9F,EAAA,MAAM,QAAA,GAAW,eAAc,KAAK,CAAA,CAAA;AACpC,EAAA,OAAO,gBAAA,CAAiB,eAAA,EAAU,8BAAA,EAAmC,QAAA,EAAc,OAAAA,QAAA,CAAA;AACpF;AAEO,SAAS,iBAAA,CAAA,OAAsBA,QAAAA,EAAe;AACpD,EAAA,MAAM,QAAA,GAAW,cAAA,KAAe,CAAA,CAAA;AAChC,EAAA,OAAO,gBAAA,CAAiB,WAAA,EAAA,0BAAA,EAAiB,QAAA,EAAgC,OAAAA,QAAU,CAAA;AACpF;AAEO,SAAS,wBAAA,CAAiC,OAAAA,QAAAA,EAAiD;AACjG,EAAA,MAAM,QAAA,GAAW,eAAc,KAAK,CAAA,CAAA;AACpC,EAAA,OAAO,gBAAA,CAAiB,kBAAA,EAAa,iCAAA,EAAsC,QAAA,EAAc,OAAAA,QAAA,CAAA;AAC1F;AAEO,SAAS,WAAA,CAAA,OAAAA,QAAAA,EAAyB;AACxC,EAAA,MAAM,QAAA,GAAW,gBAAe,KAAK,CAAA,CAAA;AACrC,EAAA,OAAO,gBAAA,CAAiB,KAAA,EAAA,oBAAA,EAAoB,QAAA,EAAA,OAAAA,QAAA,CAAA;AAC7C;AAEO,SAAS,cAAA,CAAY,OAAeA,QAAAA,EAAiD;AAC3F,EAAA,MAAM,QAAA,GAAW,gBAAgB,KAAK,CAAA,CAAA;AACtC,EAAA,OAAO,gBAAA,CAAiB,QAAA,EAAO,uBAAA,EAAsB,QAAA,EAAU,OAAOA,QAAO,CAAA;AAC9E;AAEO,SAAS,UAAAA,QAAAA,EAAe;AAC9B,EAAA,OAAM;AACN,IAAA,GAAA,CAAA,KAAA,EAAO;AACR,MAAA,OAAA,MAAA,CAAA,UAAA,KAAA,CAAA,GAAA,OAAA,EAAA,CAAA,KAAA,IAAA,MAAA,CAAA,GAAA;QAHgB,IAAA,uBAAA;AAKA,UAAA,kBAAA;AACRA,UAAAA,QAAAA,EAAA,OAAA,IAAA,+BAAA;AACF,UAAA,KAAA;AACH,UAAA;AAGG;AAAI,OAAA;AACH,IAAA;AACoB,GAAA;AACpB;AAED,SACD,cAAAA,QAAAA,EAAA;AAAA,EAAA,OACH;AACD,IAAA,GAAA,CAAA,KAAA,EAAA;AACD,MAAA,OAAA,MAAA,CAAA,cAAA,KAAA,CAAA,GAAA,OAAA,EAAA,CAAA,KAAA,IAAA,MAAA,CAAA,GAAA;QAfgB,IAAA,uBAAA;AAiBA,UAAA,sBAAA;AACRA,UAAAA,QAAAA,EAAA,OAAA,IAAA,mCAAA;AACF,UAAA,KAAA;AACH,UAAA;AAGG;AAAI,OAAA;AACH,IAAA;AACoB,GAAA;AACpB;AAED,SACD,aAAAA,QAAAA,EAAA;AAAA,EAAA,OACH;AACD,IAAA,GAAA,CAAA,KAAA,EAAA;AACD,MAAA,OAAA,MAAA,CAAA,SAAA,KAAA,CAAA,GAAA,OAAA,EAAA,CAAA,KAAA,IAAA,MAAA,CAAA,GAAA;QAfgB,IAAA,uBAAA;AAiBA,UAAA,qBAAA;AACRA,UAAAA,QAAAA,EAAA,OAAA,IAAA,2BAAA;AACF,UAAA,KAAA;AACH,UAAA;AAGG;AAAI,OAAA;AACH,IAAA;AACoB,GAAA;AACpB;AAED,SACD,UAAAA,QAAAA,EAAA;AAAA,EAAA,OACH;AACD,IAAA,GAAA,CAAA,KAAA,EAAA;AACD,MAAA,OAAA,MAAA,CAAA,MAAA,KAAA,CAAA,GAAA,OAAA,EAAA,CAAA,KAAA,IAAA,MAAA,CAAA,GAAA;AAfgB,QAAA,IAAA,wBAAA,uBAAA,EAAAA,QAAAA,EAAA,OAAA,IAAA,sBAAA,EAAA,OAAA,kBAAA;AAiBT,OAAA;AACN,IAAA;AAAO,GAAA;AAEL;AAG6H,SAC3H,aAAAA,QAAAA,EAAA;AAAA,EAAA,OACH;AACD,IAAA,GAAA,CAAA,KAAA,EAAA;AACD,MAAA,OAAA,MAAA,CAAA,KAAA,CAAA,KAAA,CAAA,GAAA,MAAA,CAAA,GAAA;AAVgB,QAAA,IAAA,wBAAA,0BAAA,EAAAA,QAAAA,EAAA,OAAA,IAAA,sBAAA,EAAA,OAAA,kBAAA;OAYT,GAAS,MAAA,CAAA,GAAA,KAAa,CAAA;AAC5B,IAAA;AAAO,GAAA;AAEL;AAEgI,SAC9H,iBAAA,CACgB,SAAAA,QAAAA,EAAA;AAAA,EAAA,MACnB,QAAA,GAAA,cAAA,OAAA,CAAA,MAAA,CAAA;AACD,EAAA,OAAA;AACD,IAAA,GAAA,CAAA,KAAA,EAAA;AAVgB,MAAA,OAAA,QAAA,OAAA,KAAA,CAAA,GAAA,MAAA,CAAA,EAAA,CAAA,KAAA,CAAA,GAAA,MAAA,CAAA,GAAA,CAAA,IAAA,wBAAA,0BAAA,EAAAA,QAAAA,EAAA,WAAA,yBAAA,EAAA,KAAA,EAAA,QAAA,CAAA,CAAA;AAYT,IAAA;AACN,GAAA;AACA;ACxI0D,SAAA,cAAAwD,MAAAA,EAAA;AAApD,EAAA,IAAM,CAAAA,MAAAA;;;ACHb,EAAA,IAAM,OAAA,KAAA,EAAA;AAqBC,IAAA,OAAS,KAAA;AAIf,EAAA,IAAI,OAAA,GAAC,EAAA;AAAO,IAAA,OAAO,KAAA;AAGnB,EAAA,MAAM,cAAU,OAAA,GAAc,CAAA;AAK9B,EAAA,IAAIA,MAAAA,CAAA,QAAA,CAAY,GAAA,EAAA,WAAA,CAAA;AAAI,IAAA,OAAO,KAAA;AAO3B,EAAA,IAAIA,MAAAA,CAAA,SAAU,WAAA,GAAA,GAAA;AAAI,IAAA,OAAO,KAAA;AAEzB,EAAA,IAAA,QAAA,GAAMA,MAAAA,CAAc,OAAA,CAAA,GAAA,EAAU,WAAA,CAAA;AAK9B,EAAA,IAAI,QAAA,KAAM,EAAA;AAA4B,IAAA,OAAO,KAAA;AAO7C,EAAA,IAAI,YAAA,GAAe,WAAA;AAAmB,EAAA,GAAA;AAGtC,IAAA,IAAI,WAAW,YAAA,GAAc,EAAA;AAMzB,MAAA,OAAA,KAAA;AAAiB,IAAA,YAAA,GAAO,QAAA,GAAA,CAAA;AAgB5B,EAAA,CAAA,QAAA,CAAI,QAAA,GAAeA,MAAAA,CAAA,OAAA,CAAA,GAAA,EAAA,YAAA,CAAA,MAAA,EAAA;AACnB,EAAA,IAAGA,MAAAA,CAAA,SAAA,YAAA,GAAA,EAAA;AACF,IAAA,OAAI,KAAA;AAA8B,EAAA,OAAA,YAAA,CAAO,IAAA,CAAAA,MAAAA,CAAA,KAAA,CAAA,CAAA,EAAA,OAAA,CAAA,CAAA,IAAA,mBAAA,CAAAA,MAAAA,CAAA,KAAA,CAAA,WAAA,CAAA,CAAA;AAEzC;AAKD,SAAI,oBAAe,MAAA,EAAe;AAAI,EAAA,IAAA;AAYtC,IAAA,OAAO,IAAA,GAAA,CAAA,CAAA,OAAA,EAAkB,MAAM,CAAA,CAAA,EAAM,QAAA,KAAW,MAAA;EACjD,CAAA,CAAA,MAAA;AAhFgB,IAAA,OAAA,KAAA;AAkFhB,EAAA;AACC;ACtGD,SAAM,OAAU,EAAA,EAAI;AAGpB,EAAA,OAAM,OAAA,CAAQ,KAAA,EAAA,CAAA;AACd;AAWA,SAAA,OAAA,EAAA,EAAA;AAEO,EAAA,OAAS,OAAA,CAAOT,KAAoB,EAAA,CAAA;AAC1C;AADe,SAAA,KAAA,EAAA,EAAA;AAIT,EAAA,IAAA,OAAS,EAAA,CAAA;AACf,IAAA,OAAO,CAAA;AACR,EAAA,IAAA,OAAA,EAAA,CAAA;AAFgB,IAAA,OAAA,CAAA;AAIT,EAAA,OAAS,CAAA;AACf;AAGD,SAAA,oBAAA,KAAA,EAAA;AAJgB,EAAA,OAAA,gBAAA,CAAA,KAAA,KAAA,CAAA;;ACahB,SAAA,mBAAA,GAAA,EAAA;AAxC8F,EAAA,QAAA,IAAA,MAAA;IAAjF,KAAA,CAAA;;;ACLN,MAAA,OAAS,IAAA,CAAA,CAAA;AACf,IAAA,KAAA,CAAA,EAAQ;AACP,MAAA,MAAK,CAAA,GAAA,EAAA,GAAA,CAAA,GAAA,GAAA;AACJ,MAAA,OAAO,CAAA,GAAA,WAAM,GAAA,CAAA,GAAA,MAAA,CAAA,IAAA,GAAA,CAAA,GAAA,MAAA,CAAA;AACd,IAAA;IACC,SAAO;AACR,MAAA,OAAQ,IAAA,MAAA,KAAA;AACP,QAAA,KAAA,MAAY,MAAO,GAAA,EAAA;AACnB,UAAA,MAAO,MAAA,GAAI,EAAA,CAAW,GAAA,MAAO,CAAA;AAC9B,UAAA,IAAA,MAAA;AACA,YAAA,OAAS,MAAA;AACR,QAAA;AACC,QAAA,OAAA,IAAA;AACC,MAAA,CAAA;AACA,IAAA;AAAY;AAAO;AAKtB,SACD,mBAAA,CAAA/C,UAAA,gBAAA,EAAA;AACD,EAAA,MAAA,MAAA,EAAA;AArBgB,EAAA,IAAAA,UAAA,gBAAA,EAAA,MAAA;;;ACaT,IAAA,GAAA,CAAA,IAAA,CAAS,gBAAA,CAAoBA,QAAAA,CAAsB,cAAA,EAAA,gBAAqC,CAAA,CAAA;AAC9F,EAAA,OAAM,eAAA,CAA2F,GAAA,GAAA,CAAA;AAEjG;AACA,SAAI,kBAAA,CAAS,kBAAgBA,QAAAA,EAAA;AAAQ,EAAA,OAAI,CAAA,KAAA,EAAK,GAAA,KAAA,gBAAA,CAAyB,QAAA,CAAA,IAAgB,QAAA,CAAA,GAAA,IAAA,GAAiB,IAAA,qCAAA,kBAAA,EAAAA,QAAAA,EAAA,OAAA,IAAA,sBAAA,EAAA,OAAA,gBAAA,CAAA;AAExG;AANe,SAAA,gBAAA,CAAA,gBAAAA,QAAAA,EAAA;AAShB,EAAA,OAAS,CAAA,KAAA,EAAA,GAAA,KAAA,cAAA,CAAmB,QAAA,CAAoC,IAAA,QAA4B,CAAA,GAAA,IAAA,GAAA,IAAA,qCAAA,kBAAA,EAAAA,QAAAA,EAAA,OAAA,IAAA,oBAAA,EAAA,OAAA,cAAA,CAAA;AAC3F;AAOA,SAAO,sBAAA,CACN,UAAA,EAAe,IAAA,EAAS,QAAA,EAAI,QACzBA,QAAAA,EACI;AACT,EAAA,OAAA;AALS,IAAA,GAAA,CAAA,KAAA,EAAA;;;ACOT,GAAA;AAOC;AAEE,SAAA,oBAAA,CAAwB,QAAQA,QAAAA,EAAM;AAEuE,EAAA,MAC9G,QAAA,GAAA,qBAAA,MAAA,CAAA,CAAA;AACD,EAAA,OAAA,sBAAA,CAAA,QAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,QAAAA,QAAA,CAAA;AACD;AAEO,SAAS,2BAAA,CAAqB,QAAgBA,QAAAA,EAAiD;AACrG,EAAA,MAAM,QAAA,GAAW,sBAAqB,MAAM,CAAA,CAAA;AAC5C,EAAA,OAAO,sBAAA,CAAuB,eAAA,EAAU,oCAAA,EAAyC,QAAA,EAAQ,QAAOA,QAAA,CAAA;AACjG;AAEO,SAAS,uBAAA,CAAA,QAA4BA,QAAAA,EAAgB;AAC3D,EAAA,MAAM,QAAA,GAAW,qBAAA,MAAsB,CAAA,CAAA;AACvC,EAAA,OAAO,sBAAA,CAAuB,WAAA,EAAA,gCAAA,EAAiB,QAAA,EAAsC,QAAUA,QAAA,CAAA;AAChG;AAEO,SAAS,8BAAA,CAAwB,QAAgBA,QAAAA,EAAiD;AACxG,EAAA,MAAM,QAAA,GAAW,sBAAqB,MAAM,CAAA,CAAA;AAC5C,EAAA,OAAO,sBAAA,CAAuB,kBAAA,EAAa,uCAAA,EAA4C,QAAA,EAAQ,QAAOA,QAAA,CAAA;AACvG;AAEO,SAAS,iBAAA,CAAA,QAAAA,QAAAA,EAA+B;AAC9C,EAAA,MAAM,QAAA,GAAW,uBAAsB,MAAM,CAAA,CAAA;AAC7C,EAAA,OAAO,sBAAA,CAAuB,KAAA,EAAA,0BAAA,EAAoB,QAAA,EAAA,QAAAA,QAAA,CAAA;AACnD;AAEO,SAAS,oBAAA,CAAkB,QAAgBA,QAAAA,EAAiD;AAClG,EAAA,MAAM,QAAA,GAAW,uBAAuB,MAAM,CAAA,CAAA;AAC9C,EAAA,OAAO,sBAAA,CAAuB,QAAA,EAAO,6BAAA,EAA4B,QAAA,EAAU,QAAQA,QAAO,CAAA;AAC3F;AAEO,SAAS,YAAAA,QAAAA,EAAqB;AACpC,EAAA,OAAM;AACN,IAAA,GAAA,CAAA,KAAA,EAAO;AACR,MAAA,OAAA,cAAA,KAAA,CAAA,GAAA,OAAA,EAAA,CAAA,KAAA,IAAA,MAAA,CAAA,GAAA;QAHgB,IAAA,uBAAA;AAKA,UAAA,oBAAA;AACRA,UAAAA,QAAAA,EAAA,OAAA,IAAA,uBAAA;AACF,UAAA,KAAA;AACH,UAAA;AAGG;AAAI,OAAA;AACH,IAAA;AACoB,GAAA;AACpB;AAED,SACD,oBAAA,CAAA,IAAA,EAAA,QAAA,EAAA,KAAA,EAAAA,QAAAA,EAAA;AAAA,EAAA,OACH;AACD,IAAA,GAAA,CAAA,KAAA,EAAA;AACD,MAAA,OAAA,MAAA,IAAA,CAAA,KAAA,IAAA,MAAA,CAAA,EAAA,CAAA,KAAA,CAAA,GAAA,MAAA,CAAA,GAAA,CAAA,IAAA,wBAAA,IAAA,EAAAA,QAAAA,EAAA,WAAA,uBAAA,EAAA,KAAA,EAAA,QAAA,CAAA,CAAA;AAfgB,IAAA;AAiBhB,GAAA;AACC;AAEE,SAAA,SAAA,CAAaA,UAAK,gBAAA,EACL;AACgG,EAAA,MAC9G,WAAA,GAAA,mBAAA,CAAAA,QAAAA,EAAA,gBAAA,CAAA;AACD,EAAA,OAAA;AACD,IAAA,GAAA,CAAA,KAAA,EAAA;AARS,MAAA,IAAA,GAAA;AAUF,MAAA,IAAS;AACT,QAAA,GAAA,GAAA,IAAA,IAAc,KAAA,CAAA;MACpB,CAAA,CAAA,MAAO;AACF,QAAA,OAAe,MAAA,CAAA,GAAA;AACd,UAAA,IAAA,wBAAA,kBAAA,EAAA,gBAAA,EAAA,OAAA,IAAA,aAAA,EAAA,OAAA,yBAAA;AACJ,SAAA;AACC,MAAA;AACD,MAAA,MAAA,iBAAA,GAAQ,WAAA,CAAA,KAAA,EAAA,GAAA,CAAA;AACP,MAAA,IAAA,iBAAA,KAAc,IAAA;AAAA,QAAA,OACT,MAAA,CAAA,GAAA,KAAA,CAAA;AAAwH,MAAA,OAC7H,MAAA,CAAA,IAAA,iBAAA,CAAA;AAAA,IAAA;AAGD,GAAA;AACA;AACA,SAAA,QAAA,CAAO,SAAWA,QAAAA,EAAA;AAAiB,EAAA,MACpC,SAAA,GAAA,OAAA,GAAA,CAAA,CAAA,EAAA,OAAA,CAAA,CAAA,GAAA,EAAA;AACD,EAAA,MAAA,cAAA,OAAA,KAAA,CAAA,GAAA,MAAA,GAAA,OAAA,KAAA,IAAA,MAAA,GAAA,IAAA;AACD,EAAA,MAAA,IAAA,GAAA,gBAAA,SAAA,CAAA,EAAA,CAAA;AAlBgB,EAAA,MAAA,OAAA,GAAA,aAAA,SAAA,CAAA,QAAA,CAAA;AAoBT,EAAA,MAAA,QAAA,GAAkB,uBAAkE,SAAA,CAAA,QAAA,CAAA;AAC1F,EAAA,OAAM;AACN,IAAA,GAAA,CAAM,KAAA,EAAA;AAEN,MAAA,OAAM,YAAO,KAAA,CAAA,GAAgB,MAAA,CAAS,EAAA,CAAA,KAAA,CAAA,GAAA,MAAA,CAAA,GAAA,CAAA,IAAA,wBAAA,IAAA,EAAAA,QAAAA,EAAA,WAAA,OAAA,EAAA,KAAA,EAAA,QAAA,CAAA,CAAA;AACtC,IAAA;AACA,GAAA;AACA;AAEE,SAAA,WAAA,CAAO,OAAYA,QAAAA,EAChB;AAC0F,EAAA,OAC9F,qBAAA,oBAAA,EAAA,CAAA,SAAA,EAAA,KAAA,CAAA,0BAAA,CAAA,EAAA,OAAAA,QAAA,CAAA;AAAA;AAZc,SAAA,UAAA,CAAA,EAAA,OAAA,GAAA,CAAA,EAAA,WAAA,KAAA,EAAA,GAAA,EAAA,EAAAA,QAAAA,EAAA;AAgBT,EAAA,OAAA,KAAS,OAAA,GAAY,KAAA,CAAA;AAC3B,EAAA,MAAA,QAAO,IAAA,MAAA;AACR,IAAA,CAAA,6BAAA,EAAA,OAAA,CAAA,2CAAA,EAAA,QAAA,GAAA,uCAAA,GAAA,EAAA,CAAA,EAAA,CAAA;AAFgB,IAAA;AAIT,GAAA;AACN,EAAA,MAAA,QAAA,GAAA,CAAA,sBAAA,EAAY,OAAA,OAAA,KAAA,QAAA,GAAA,IAAA,OAAA,CAAA,CAAA,GAAA,CAAA,aAAA,EAAA,OAAA,CAAA,CAAA,CAAA,CAAA;AACZ,EAAA,OAAM,oBAAA,CAAY,mBAAA,EAAA,QAAA,EAAA,KAAA,EAAAA,QAAA,CAAA;AAAA;AAIjB,SACD,WAAAA,QAAAA,EAAA;AACA,EAAA,OAAM;AACN,IAAA,GAAA,CAAA,KAAA,EAAO;AACR,MAAA,MAAAgB,KAAAA,GAAA,IAAA,CAAA,KAAA,CAAA,KAAA,CAAA;AAVgB,MAAA,OAAA,MAAA,CAAA,KAAA,CAAAA,KAAA,CAAA,GAAA,MAAA,CAAA,GAAA;QAYT,IAAS,uBAAA;AACR,UAAA,mBAAA;AACFhB,UAAAA,QAAAA,EAAe,OAAA,IAAA,qBAAA;AAClB,UAAA,KAAA;AAEA,UAAA;AAEG;OAAI,GACH,MAAA,CAAA,GAAA,KAAA,CAAA;AAAA,IAAA;AACoB,GAAA;AACpB;AAED,SACD,YACWA,QAAAA,EAAK;AAAA,EAAA,OACnB;AACD,IAAA,GAAA,CAAA,KAAA,EAAA;AACD,MAAA,OAAA,oBAAA,KAAA,CAAA,GAAA,OAAA,EAAA,CAAA,KAAA,IAAA,MAAA,CAAA,GAAA;QAjBgB,IAAA,uBAAA;AAmBA,UAAA,oBAAA;AACRA,UAAAA,QAAAA,EAAA,OAAA,IAAA,sBAAA;AACF,UAAA,KAAA;AACH,UAAA;AAGG;AAAI,OAAA;AACH,IAAA;AACoB,GAAA;AACpB;AChIP,SAAA,8BAAA,CAAA,UAAA,EAAA,IAAA,EAAA,QAAA,EAAA,QAAAA,QAAAA,EAAA;AAvD6F,EAAA,OAAA;AAAhF,IAAA,GAAA,CAAA,KAAA,EAAA;;;ACYb,GAAA;AAOC;AAEE,SAAA,4BAAA,CAAwB,OAAYA,QAAAA,EACjC;AACoH,EAAA,MACxH,QAAA,GAAA,yBAAA,KAAA,CAAA,CAAA;AACD,EAAA,OAAA,8BAAA,CAAA,QAAA,EAAA,sCAAA,EAAA,QAAA,EAAA,OAAAA,QAAA,CAAA;AACD;AAEO,SAAS,mCAAA,CAAkE,OAAAA,QAAAA,EAA4C;AAC7H,EAAA,MAAM,QAAA,GAAW,0BAAyB,KAAK,CAAA,CAAA;AAC/C,EAAA,OAAO,8BAAA,CAA+B,eAAA,EAAU,6CAAA,EAAkD,QAAA,EAAc,OAAAA,QAAA,CAAA;AACjH;AAEO,SAAS,+BAAA,CAAA,OAA0DA,QAAAA,EAAe;AACxF,EAAA,MAAM,QAAA,GAAW,yBAAA,KAA0B,CAAA,CAAA;AAC3C,EAAA,OAAO,8BAAA,CAA+B,WAAA,EAAA,yCAAA,EAAiB,QAAA,EAA+C,OAAAA,QAAU,CAAA;AACjH;AAEO,SAAS,sCAAA,CAAqE,OAAAA,QAAAA,EAA4C;AAChI,EAAA,MAAM,QAAA,GAAW,0BAAyB,KAAK,CAAA,CAAA;AAC/C,EAAA,OAAO,8BAAA,CAA+B,kBAAA,EAAa,gDAAA,EAAqD,QAAA,EAAc,OAAAA,QAAA,CAAA;AACvH;AAEO,SAAS,yBAAA,CAAA,OAAAA,QAAAA,EAA6D;AAC5E,EAAA,MAAM,QAAA,GAAW,2BAA0B,KAAK,CAAA,CAAA;AAChD,EAAA,OAAO,8BAAA,CAA+B,KAAA,EAAA,mCAAA,EAAoB,QAAA,EAAA,OAAAA,QAAA,CAAA;AAC3D;AAEO,SAAS,4BAAA,CAAgD,OAAeA,QAAAA,EAA4C;AAC1H,EAAA,MAAM,QAAA,GAAW,2BAA2B,KAAK,CAAA,CAAA;AACjD,EAAA,OAAO,8BAAA,CAA+B,QAAA,EAAO,sCAAA,EAAqC,QAAA,EAAU,OAAOA,QAAO,CAAA;AAC3G;AAEO,SAAS,yBAAA,CAAA,KAAA,EAAmD,SAAA,EAAeA,QAAAA,EAA4C;AAC7H,EAAA,MAAM,QAAA,GAAW,CAAA,uBAAA,EAAA,KAA2B,CAAA,0BAAA,EAAK,SAAA,CAAA,CAAA;AACjD,EAAA,OAAO;AACR,IAAA,GAAA,CAAA,KAAA,EAAA;AAHgB,MAAA,OAAA,KAAA,CAAA,UAAA,IAAA,KAAA,IAAA,KAAA,CAAA,UAAA,GAAA,YAAA,MAAA,CAAA,EAAA,CAAA,KAAA,CAAA,GAAA,MAAA,CAAA,GAAA;QAKT,IAAS,uBAAA;AACT,UAAA,mCAAA;AACCA,UAAAA,QAAAA,EAAA,OAAA,IAAA,iCAAA;AACF,UAAA,KAAA;AACH,UAAA;AAGG;AAAI,OAAA;AACH,IAAA;AACoB,GAAA;AACpB;AAED,SACD,kCAAA,CAAA,KAAA,EAAA,GAAA,EAAAA,QAAAA,EAAA;AAAA,EAAA,MACH,QAAA,GAAA,CAAA,uBAAA,EAAA,KAAA,CAAA,2BAAA,EAAA,GAAA,CAAA,CAAA;AACD,EAAA,OAAA;AACD,IAAA,GAAA,CAAA,KAAA,EAAA;AAhBgB,MAAA,OAAA,KAAA,CAAA,UAAA,IAAA,KAAA,IAAA,KAAA,CAAA,UAAA,IAAA,MAAA,MAAA,CAAA,EAAA,CAAA,KAAA,CAAA,GAAA,MAAA,CAAA,GAAA;QAkBT,IAAS,uBAAA;AACT,UAAA,4CAAA;AACCA,UAAAA,QAAAA,EAAA,OAAA,IAAA,iCAAA;AACF,UAAA,KAAA;AACH,UAAA;AAGG;AAAI,OAAA;AACH,IAAA;AACoB,GAAA;AACpB;AAED,SACD,kCAAA,CAAA,UAAA,EAAA,SAAA,EAAAA,QAAAA,EAAA;AAAA,EAAA,MACH,QAAA,GAAA,CAAA,sBAAA,EAAA,UAAA,CAAA,0BAAA,EAAA,SAAA,CAAA,CAAA;AACD,EAAA,OAAA;AACD,IAAA,GAAA,CAAA,KAAA,EAAA;AAhBgB,MAAA,OAAA,KAAA,CAAA,UAAA,GAAA,UAAA,IAAA,KAAA,CAAA,UAAA,GAAA,YAAA,MAAA,CAAA,EAAA,CAAA,KAAA,CAAA,GAAA,MAAA,CAAA,GAAA;QAkBT,IAAS,uBAAA;AAKT,UAAA,4CAAA;AACCA,UAAAA,QAAAA,EAAA,OAAA,IAAA,iCAAA;AACF,UAAA,KAAA;AACH,UAAA;AAGG;AAAI,OAAA;AACH,IAAA;AACoB,GAAA;AACpB;AAED,SACD,0BAAA,CAAA,UAAA,EAAA,IAAA,EAAA,QAAA,EAAA,QAAAA,QAAAA,EAAA;AAAA,EAAA,OACH;AACD,IAAA,GAAA,CAAA,KAAA,EAAA;AACD,MAAA,OAAA,WAAA,KAAA,CAAA,MAAA,EAAA,MAAA,CAAA,GAAA,MAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAA,GAAA,CAAA,IAAA,wBAAA,IAAA,EAAAA,QAAAA,EAAA,WAAA,4BAAA,EAAA,KAAA,EAAA,QAAA,CAAA,CAAA;AApBgB,IAAA;AAsBhB,GAAA;AAOC;AAEE,SAAA,wBAAA,CAAwB,OAAQA,QAAAA,EAC7B;AAC+G,EAAA,MACnH,QAAA,GAAA,qBAAA,KAAA,CAAA,CAAA;AACD,EAAA,OAAA,0BAAA,CAAA,QAAA,EAAA,kCAAA,EAAA,QAAA,EAAA,OAAAA,QAAA,CAAA;AACD;AAEO,SAAS,+BAAA,CAA8D,OAAAA,QAAAA,EAA4C;AACzH,EAAA,MAAM,QAAA,GAAW,sBAAqB,KAAK,CAAA,CAAA;AAC3C,EAAA,OAAO,0BAAA,CAA2B,eAAA,EAAU,yCAAA,EAA8C,QAAA,EAAc,OAAAA,QAAA,CAAA;AACzG;AAEO,SAAS,2BAAA,CAAA,OAAsDA,QAAAA,EAAe;AACpF,EAAA,MAAM,QAAA,GAAW,qBAAA,KAAsB,CAAA,CAAA;AACvC,EAAA,OAAO,0BAAA,CAA2B,WAAA,EAAA,qCAAA,EAAiB,QAAA,EAA2C,OAAAA,QAAU,CAAA;AACzG;AAEO,SAAS,kCAAA,CAAiE,OAAAA,QAAAA,EAA4C;AAC5H,EAAA,MAAM,QAAA,GAAW,sBAAqB,KAAK,CAAA,CAAA;AAC3C,EAAA,OAAO,0BAAA,CAA2B,kBAAA,EAAa,4CAAA,EAAiD,QAAA,EAAc,OAAAA,QAAA,CAAA;AAC/G;AAEO,SAAS,qBAAA,CAAA,OAAAA,QAAAA,EAAyD;AACxE,EAAA,MAAM,QAAA,GAAW,uBAAsB,KAAK,CAAA,CAAA;AAC5C,EAAA,OAAO,0BAAA,CAA2B,KAAA,EAAA,+BAAA,EAAoB,QAAA,EAAA,OAAAA,QAAA,CAAA;AACvD;AAEO,SAAS,wBAAA,CAA4C,OAAeA,QAAAA,EAA4C;AACtH,EAAA,MAAM,QAAA,GAAW,uBAAuB,KAAK,CAAA,CAAA;AAC7C,EAAA,OAAO,0BAAA,CAA2B,QAAA,EAAO,kCAAA,EAAiC,QAAA,EAAU,OAAOA,QAAO,CAAA;AACnG;AAEO,SAAS,qBAAA,CAAA,KAAA,EAA+C,SAAA,EAAeA,QAAAA,EAA4C;AACzH,EAAA,MAAM,QAAA,GAAW,CAAA,mBAAA,EAAA,KAAuB,CAAA,sBAAA,EAAK,SAAA,CAAA,CAAA;AAC7C,EAAA,OAAO;AACR,IAAA,GAAA,CAAA,KAAA,EAAA;AAHgB,MAAA,OAAA,KAAA,CAAA,MAAA,IAAA,KAAA,IAAA,KAAA,CAAA,MAAA,GAAA,YAAA,MAAA,CAAA,EAAA,CAAA,KAAA,CAAA,GAAA,MAAA,CAAA,GAAA;QAKT,IAAS,uBAAA;AACT,UAAA,+BAAA;AACCA,UAAAA,QAAAA,EAAA,OAAA,IAAA,4BAAA;AACF,UAAA,KAAA;AACH,UAAA;AAGG;AAAI,OAAA;AACH,IAAA;AACoB,GAAA;AACpB;AAED,SACD,8BAAA,CAAA,KAAA,EAAA,GAAA,EAAAA,QAAAA,EAAA;AAAA,EAAA,MACH,QAAA,GAAA,CAAA,mBAAA,EAAA,KAAA,CAAA,uBAAA,EAAA,GAAA,CAAA,CAAA;AACD,EAAA,OAAA;AACD,IAAA,GAAA,CAAA,KAAA,EAAA;AAhBgB,MAAA,OAAA,KAAA,CAAA,MAAA,IAAA,KAAA,IAAA,KAAA,CAAA,MAAA,IAAA,MAAA,MAAA,CAAA,EAAA,CAAA,KAAA,CAAA,GAAA,MAAA,CAAA,GAAA;QAkBT,IAAS,uBAAA;AACT,UAAA,wCAAA;AACCA,UAAAA,QAAAA,EAAA,OAAA,IAAA,4BAAA;AACF,UAAA,KAAA;AACH,UAAA;AAGG;AAAI,OAAA;AACH,IAAA;AACoB,GAAA;AACpB;AAED,SACD,8BAAA,CAAA,UAAA,EAAA,SAAA,EAAAA,QAAAA,EAAA;AAAA,EAAA,MACH,QAAA,GAAA,CAAA,kBAAA,EAAA,UAAA,CAAA,sBAAA,EAAA,SAAA,CAAA,CAAA;AACD,EAAA,OAAA;AACD,IAAA,GAAA,CAAA,KAAA,EAAA;AAhBgB,MAAA,OAAA,KAAA,CAAA,MAAA,GAAA,UAAA,IAAA,KAAA,CAAA,MAAA,GAAA,YAAA,MAAA,CAAA,EAAA,CAAA,KAAA,CAAA,GAAA,MAAA,CAAA,GAAA;QAkBT,IAAS,uBAAA;AAKT,UAAA,wCAAA;AACCA,UAAAA,QAAAA,EAAA,OAAA,IAAA,4BAAA;AACF,UAAA,KAAA;AACH,UAAA;AAGG;AAAI,OAAA;AACH,IAAA;AACoB,GAAA;AACpB;AvB1NPyD,IAAAA,UAAAA,EAAAA,UAAAA,EAAAA,eAAAA,EAAAA,UAAAA,EAAAA,MAAAA,EFAM,CAAA,EAAE,CAAA,EAAE,CAAA,EAAiF,CAAA,EAAO,CAAA,EAA+e,CAAA,EAAK,CAAA,EAAK,CAAA,EAAK,CAAA,EAAwpC,CAAA,ECEnrD/C,EAAAA,EAA4BwC,EAAAA,EAAc,EAAA,EAA6G,EAAA,EAAwK,EAAA,EAA6D,EAAA,EAA8B,GAAA,EAAgC,GAAA,EAA0B,GAAA,EAAmE,GAAA,EAA0BE,GAAAA,EAAa,EAAA,EAA6FlC,EAAAA,EAAc,EAAA,EAA4KR,GAAAA,EAAwQ,GAAA,EAA2H,GAAA,EAAQyC,GAAAA,EAAIR,IAAI,EAAA,EAAuEK,EAAAA,EAA6B,EAAA,EAAiC,CAAA,EAAmCU,GAAAA,EAAqC,EAAA,EAA8HC,CAAAA,EAA+B,CAAA,EAAE1C,EAAAA,EAAgC,EAAA,EAAgC,CAAA,EAAoC8B,CAAAA,EAAyCC,CAAAA,EAAsC,CAAA,EAA0jI,CAAA,EAAK,CAAA,EAAM,CAAA,EAAiD,EAAA,EAA2H,EAAA,EAAqxB,EAAA,EAAW,EAAA,EAA0K,EAAA,EAAk1J,EAAA,EAA2e,EAAA,EyBQh0YY,QAAAA,EAAAA,mBAAAA,ECPS,4BAAA,EACA,UAAA,EAEiC,SAAA,EAAA,oBAAA,ECiB2B,mBAAA,EAAA,wBAAA,EClBQ,uBAAA,EAAA,OAAA,ECLjC,MAAA,EAAA,iBAAA,EAAA,cAAA,EzBcT,aAAA,EGuGtC,wBuBhF8B,qBAAA,EAG/B,gBAAA,ECFyB,eAAA,EAEzB,eAAA,EvBwEE,cAAA,EC3CD,gBAAA,ECLU,eAAA,ECxCV,iBAAA,ECAU,gBAAA,ECuDV,cAAA,EmBzBU,aAAA,EAKX,wBAAA,ECpBqC,uBAAA,EAErC,kBAAA,ECrBoB,iBAAA,EAGpB,iBAAA,ECDoB,gBAAA,EAGpB,eAAA,ECpBW,cAAA,EAGX,iBAAA,EtBHW,gBAAA,ECiJV,gBAAA,EsBjDU,eAAA,EAKX,qBAAA,EC7EE,oBAAA,EAEF,qBAAA,ECQyB,oBAAA,EAEzB,iBAAA,ECHoB,gBAAA,EAGpB,cAAA,ECTgC,aAAA,EAEhC,eAAA,EC4FE,gBAIF,gBAAA,ECiKE,eAAA,EAGF,qBAAA,ECjSW,oBAAA,EAGX,gBAAA,ECwCE,eAAA,EAMF,aAAA,E7BlBE,YAAA,EAMF,YAAA,ECuEC,KAAA,EACD,KAAA,EANS,OAAA,EAAA,KAAA,EAAA,OAAA,ECzER,gBAAA,E4BhCA,qCAAA,E3BwCoC,oCAAA,EGuJpC,gBAAA,EyBpFQ,eAAA,EAGT,eAAA,ECnEE,cAAA,EAMF,aAAA,ECNE,YAAA,EAMF,cAAA,ECnCW,aAAA,EAGX,sBAAA,ECiCyB,qBAAA,EAEzB,oBAAA,E5BGoB,mBAAA,ECqKnB,MAAA,EACD,KAAA,E4B9Na,WAAA,ECsBZ,oBAAA,ECwFU,mBAAA,EAKX,SCyDQ,MAAA,EAGR,EAAA;;;;;;AtDjLA,IAAAH,aAAgB,MAAA,CAAA,cAAA;;AFAhB,IAA2F,CAAA,GAAE,eAAG,OAAA,UAAA,GAAA,aAAA,WAAA,IAAA,OAAA,OAAA,IAAA,GAAA,UAAA;AAAE,IAAA,CAAA,GAAA,IAAS,EAAG;AAAoD,IAAA,MAAA,CAAA,GAAS,GAAG,CAAA;AAAsD,IAAA,MAAA,CAAA,GAAS,GAAE/C,CAAAA;AAAwM,IAAA,MAAA,CAAC,GAAA,GAAU,CAAA;AAAC,IAAA,CAAA,CAAA,WAAG;AAAC,MAAA,IAAA;AAA6C,QAAA,CAAA,GAAA,UAAA,IAAS,OAAA,UAAA,GAAA,UAAA,GAAA,CAAA;AAAC,MAAA,CAAA,CAAA,OAAE,EAAA,EAAA;AAAE,QAAA,CAAA,GAAA,CAAA;AAAC,MAAA;AAAI,MAAA,IAAA;AAAiD,QAAA,CAAA,GAAA,UAAA,IAAS,OAAA,YAAA,GAAA,YAAA,GAAA,CAAA;AAAC,MAAA,CAAA,CAAA,OAAE,EAAA,EAAA;AAAE,QAAA,CAAA,GAAA,CAAA;AAAG,MAAA;IAAE,CAAA,GAAA;AAAA,IAAW,IAAE,EAAA;AAAb,IAAgB,CAAA,GAAE,KAAA;AAAG,IAAA,CAAA,GAAA,EAAA;AAAqE,IAAA,MAAA,CAAA,GAAS,GAAG,CAAA;AAA+T,IAAA,MAAA,CAAA,GAAS,GAAEA,CAAAA;AAAwC,IAAA,MAAA,CAAA,GAAS,GAAG,CAAA;AAAE,IAAA,MAAA,CAAE,GAAA,GAAS,CAAA;AAAY,IAAA,CAAA,CAAA,QAAA,GAAM,SAAU,EAAA,EAAA;AAAoB,MAAA,IAAG,EAAA,GAAA,IAAA,KAAA,CAAU,SAAA,CAAO,SAAA,CAAA,CAAA;AAAE,MAAA,IAAA,UAAQoC,MAAAA,GAAIA,CAAAA;AAAuB,QAAA,KAAA,IAAEA,EAAAA,GAAG,CAAA,EAAE,EAAA,GAAA,SAAA,CAAW,MAAA,EAAA,EAAA,EAAA;AAAI,UAAA,EAAA,CAAK,EAAA,GAAI,CAAEpC,CAAAA,GAAEK,SAAAA,CAAI,EAAI,CAAA;AAAkB,MAAA,CAAA,CAAE,IAAA,CAAE,IAAA,CAAA,CAAU,EAAA,EAAA,EAAI,CAAA,CAAA,EAAA,CAAA,KAAA,CAAA,CAAU,MAAA,IAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA;IAAC,CAAA,EAAC,CAAA,CAAA,SAAA,CAAS,GAAA,GAAI,WAAY;AAAgB,MAAA,CAAE,QAAE,CAAA,EAAM,GAAA,CAAA,MAAU,IAAA,EAAA,CAAE,IAAA,IAAQ,GAAG,KAAE,CAAA;IAA2M,CAAA,EAAA,CAAA,CAAA,QAAQ,SAAA,EAAA,CAAA,CAAA,UAAA,IAAA,EAAA,CAAA,CAAA,GAAA,GAAA,EAAA,EAAA,CAAA,CAAA,OAAA,EAAA,EAAA,CAAA,CAAA,OAAA,GAAA,EAAA,EAAA,CAAA,CAAA,WAAA,EAAA,EAAA,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,CAAA,CAAA,cAAA,CAAA,EAAA,CAAA,CAAA,IAAA,GAAA,CAAA,EAAA,CAAA,CAAA,GAAA,GAAA,GAAA,CAAA,CAAA,cAAA,GAAA,CAAA,EAAA,CAAA,CAAA,kBAAA,GAAA,CAAA,EAAA,EAAA,IAAA,GAAA,CAAA,EAAA,CAAA,CAAA,eAAA,GAAA,CAAA,EAAA,CAAA,CAAA,sBAAA,CAAA,EAAA,CAAA,CAAA,SAAA,GAAA,SAAA,EAAA,EAAA;AAAC,MAAA,OAAI,EAAA;IAAoB,CAAA,EAAA,CAAA,CAAA,OAAA,GAAU,SAAM,EAAA,EAAA;AAAmC,MAAA,MAAI,IAAI,MAAA,kCAAU,CAAA;IAAC,CAAA,EAAA,CAAA,CAAA,MAAO,WAAA;AAAG,MAAA,OAAI,GAAA;IAAkB,CAAA,EAAA,CAAA,CAAA,KAAA,GAAU,SAAM,EAAA,EAAA;AAAiC,MAAA,MAAI,IAAA,MAAM,gCAAU,CAAA;IAAC,CAAA,EAAA,CAAA,CAAA,QAAO,WAAA;AAAC,MAAA,OAAA,CAAA;AAAE,IAAA,CAAA;AAAQ,IAAE,CAAA,GAAA,CAAA;AAAY,IAAA,CAAA,CAAE,WAAA;AAAK,IAAA,CAAA,CAAE,IAAA;AAAQ,IAAA,CAAA,CAAE,OAAA;AAAQ,IAAA,CAAA,CAAE,OAAA;AAAM,IAAA,CAAA,CAAE,KAAA;AAAI,IAAA,CAAA,CAAE,GAAA;AAAK,IAAA,CAAA,CAAE,IAAA;AAAI,IAAA,CAAA,CAAE,GAAA;AAAU,IAAA,CAAA,CAAE,SAAA;AAAS,IAAA,CAAA,CAAE,QAAA;AAAI,IAAA,CAAA,CAAE,GAAA;AAAG,IAAA,CAAA,CAAE,EAAA;AAAK,IAAA,CAAA,CAAE,IAAA;AAAgB,IAAA,CAAA,CAAE,eAAA;AAAoB,IAAA,CAAA,CAAE,mBAAA;AAAmB,IAAA,CAAA,CAAE,kBAAA;AAAe,IAAA,CAAA,CAAE,cAAA;AAAM,IAAA,CAAA,CAAE,KAAA;AAAM,IAAA,CAAA,CAAE,KAAA;AAAQ,IAAA,CAAA,CAAE,OAAA;;ACE78D,IAAqEL,KAAE,UAAA,IAAO,OAAU,MAAA,IAAA,QAAA,IAAA,OAAA,MAAA,CAAA,WAAA;AAAxF,IAAiGwC,EAAAA,GAAE,OAAA,SAAA,CAAA,QAAA;AAAY,IAAA,EAAA,mBAAe,MAAA,CAAA,SAAU,EAAA,EAAOA;AAA6D,MAAA,OAAzG,EAAA,EAAA,IAAA,EAAA,IAAA,QAAA,IAAA,OAAA,EAAA,IAAA,MAAA,CAAA,WAAA,IAAA,EAAA,CAAA,IAAA,oBAAA,KAAA,EAAA,CAAA,IAAA,CAAA,EAAA,CAAA;AAAnG,IAAA,CAAA,EAAA,GAA8MJ,CAAAA;AAAc,IAAA,EAAA,mBAAe,MAAA,CAAO/B,SAAG,EAAA,EAAA;AAAgI,MAAA,OAArK,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,IAAA,IAAA,KAAA,EAAA,IAAA,QAAA,IAAA,OAAA,EAAA,IAAA,QAAA,IAAA,OAAA,EAAA,CAAA,UAAA,EAAA,CAAA,MAAA,IAAA,CAAA,IAAA,gBAAA,KAAA,EAAA,CAAA,IAAA,CAAA,EAAA,CAAA,IAAA,mBAAA,KAAA,EAAA,CAAA,IAAA,CAAA,EAAA,CAAA,MAAA,CAAA;AAAhN,IAAA,CAAA,EAAA,GAAuXkC,CAAAA;AAAa,IAAA,MAAOC,WAAE;AAAY,MAAA,OAAA,GAAA,SAAA,CAAA;IAAEA,CAAAA,GAAAA;AAAsB,IAAA,EAAA,CAAA,iBAAA,GAAUJ,EAAAA;AAAE,IAAI,EAAA,GAAA,KAAI,EAAA,GAAO,EAAA;AAAf,IAAkC,GAAA,GAAI,OAAA,SAAA,CAAS,QAAA;AAA/C,IAAkE,GAAA,GAAI,SAAA,SAAA,CAAA,QAAA;AAAtE,IAA4F,GAAA,GAAI,qBAAA;AAAhG,IAA+J,MAAI,UAAA,IAAO,OAAA,MAAA,IAAA,QAAA,IAAA,OAAA,MAAA,CAAA,WAAA;AAA1K,IAAyLM,MAAE,MAAA,CAAA,cAAA;AAAW,IAAA,MAAI,WAAA;AAAI,MAAA,IAAA,CAAA,GAAA;AAAU,QAAA,OAAG,KAAA;AAAC,MAAA,IAAA;AAA0C,QAAA,OAAOrC,QAAAA,CAAE,uBAAA,CAAA,EAAA;AAAC,MAAA,CAAA,CAAA,OAAA,EAAA,EAAA;AAAG,MAAA;IAAnR,CAAA,GAAA;AAAA,IAAmSG,EAAAA,GAAE,EAAA,GAAA,GAAA,CAAA,EAAA,IAAA,EAAA;AAAY,IAAA,EAAA,mBAAmB,MAAA,CAAOkC,SAAM,EAAA,EAAI;AAA+E,MAAA,OAA/H,UAAA,IAAA,OAAA,EAAA,KAAA,CAAA,CAAA,GAAA,CAAA,IAAA,CAAA,IAAA,IAAA,CAAA,EAAA,CAAA,CAAA,KAAA,GAAA,GAAA,IAAA,EAAA,CAAA,KAAA,KAAA,4BAAA,KAAA,GAAA,CAAA,KAAA,EAAA,CAAA,CAAA,CAAA;AAAiI,IAAA,CAAA,EAAA,GAAI,CAAA;AAAmD,IAAA1C,MAAIK,UAAAA,IAASL,OAAI,OAAA,MAAA,GAAiB,SAAOA,IAAE,EAAA,EAAA;AAA8E,MAAA,EAAA,KAAE,EAAA,CAAA,SAAa,EAAA,EAAA,EAAA,CAAA,YAAA,MAAA,CAAA,MAAA,CAAA,GAAA,SAAA,EAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,UAAA,EAAA,KAAA,EAAA,UAAA,IAAA,EAAA,YAAA,EAAA,IAAA,EAAA,EAAA,CAAA,CAAA;IAAC,CAAA,GAAA,SAAK,IAAA,EAAA,EAAA;AAAC,MAAA,IAAAK,EAAAA,EAAE;AAAS,QAAA,EAAA,CAAA,MAAA,GAAM,EAAA;AAAW,QAAA,IAAX,EAAA,0BAAA,WAAA;AAAamC,QAAAA,CAAAA,EAAE,GAAA,CAAA;AAAkE,QAAA,EAAA,CAAA,SAAA,GAAA,EAAA,CAAA,SAAA,EAAA,EAAA,CAAA,SAAA,GAAA,IAAA,EAAA,EAAA,EAAA,EAAA,CAAA,SAAA,CAAA,WAAA,GAAA,EAAA;AAAC,MAAA;AAAE,IAAA,CAAA;AAAoB,IAAA,GAAA,mBAAU,MAAA,CAAU,SAAU,EAAA,EAAA;AAAoF,MAAA,OAA9H,EAAA,IAAA,QAAA,IAAA,OAAA,EAAA,IAAA,cAAA,OAAA,EAAA,CAAA,IAAA,IAAA,UAAA,IAAA,OAAA,EAAA,CAAA,IAAA,IAAA,UAAA,IAAA,OAAA,EAAA,CAAA,SAAA;AAAR,IAAA,CAAA,EAAA,KAAwI,CAAA;AAAxI,IAA+I,MAAI,EAAA;AAAnJ,IAAuJC,GAAAA,GAAEU,GAAAA;AAAzJ,IAA2JlB,EAAAA,GAAEzB,EAAAA;AAAE,IAAA,EAAA,GAAS,EAAA;AAA6B,IAAA,MAAA,CAAI6B,KAAE,KAAA,CAAA;AAAN,IAAiCC,EAAAA,GAAE,eAAa,OAAO,MAAA;AAAvD,IAA8D,EAAA,GAAEA,eAAG,OAAS,MAAA;AAA5E,IAA+F,CAAA,GAAA,EAAA,IAAI,MAAA,KAAa,MAAA,CAAO,WAAA;AAAvH,IAAkIU,GAAAA,GAAE,eAAa,OAAO,UAAA;AAAY,IAAG,EAAA,GAAA,eAAK,OAAA,WAAA;AAAE,IAAA,IAAA,GAAA,IAAM,CAAA;AAAiHC,MAAAA,CAAAA,GAAE,MAAA,CAAI,cAAA,CAAiB,UAAA,CAAQ,SAAA,CAAA,EAAA,CAAA,GAAA,GAAA,CAAA,MAAA,CAAA,wBAAA,CAAA,CAAA,EAAA,MAAA,CAAA,WAAA,EAAA,GAAA,CAAA;AAAnC,IAAqC1C,EAAAA,GAAE,GAAA,CAAI,MAAA,CAAO,SAAA,CAAU,QAAO,CAAA;AAAnE,IAAqE,EAAA,GAAE,GAAA,CAAI,MAAA,CAAO,SAAA,CAAU,OAAO,CAAA;AAAnG,IAAqG,CAAA,GAAE,GAAA,CAAI,MAAA,CAAA,SAAA,CAAQ,OAAU,CAAA;AAAS,IAAG8B,CAAAA,GAAAA,GAAAA,CAAAA,OAAAA,CAAAA,SAAAA,CAAAA,OAAAA,CAAAA;AAAE,IAAA,IAAA,EAAA;AAAuCC,MAAAA,CAAAA,GAAAA,GAAAA,CAAAA,MAAAA,CAAAA,SAAAA,CAAAA,OAAAA,CAAAA;AAAE,IAAA,IAAA,EAAA;AAAoC,MAAA,CAAA,GAAS,GAAA,CAAEtC,MAAAA,CAAI,SAAA,CAAA,OAAA,CAAA;AAAwE,IAAA,MAAA,CAAA,GAAS,GAAEA,CAAAA;AAAgG,IAAA,MAAA,CAAA,GAAS,GAAEA,CAAAA;AAA6F,IAAA,MAAA,CAAA,GAAS,GAAEA,CAAAA;AAAgF,IAAA,MAAA,CAAA,GAAS,GAAEA,CAAAA;AAAoE,IAAA,MAAA,CAAA,GAAS,GAAEA,CAAAA;AAAoE,IAAA,MAAA,CAAA,GAAS,GAAEA,CAAAA;AAAgE,IAAA,MAAA,CAAA,GAAS,GAAEA,CAAAA;AAAkE,IAAA,MAAA,CAAA,GAAS,GAAEA,CAAAA;AAAkE,IAAA,MAAA,CAAA,GAAS,GAAEA,CAAAA;AAAsE,IAAA,MAAA,CAAA,GAAS,GAAEA,CAAAA;AAAsE,IAAA,MAAA,CAAA,GAAS,GAAEA,CAAAA;AAAwE,IAAA,MAAA,CAAAwB,IAAS,GAAExB,CAAAA;AAA0E,IAAA,MAAA,CAAA,GAASoD,GAAEpD,CAAAA;AAAgC,IAAA,MAAA,CAAA,IAAWA,GAAAA,CAAAA;AAAgC,IAAA,MAAA,CAAA,GAAS,GAAEA,CAAAA;AAAoC,IAAA,MAAA,CAAA,GAAS,GAAEA,CAAAA;AAAoC,IAAA,MAAA,CAAA,GAAS,GAAEA,CAAAA;AAAwC,IAAA,MAAA,CAAA,GAAS,GAAEA,CAAAA;AAAqF,IAAA,MAAA,CAAA,GAAS,GAAEA,CAAAA;AAAqC,IAAA,MAAA,CAAA,GAAS,GAAEA,CAAAA;AAA+E,IAAA,MAAA,CAAA,GAAS,GAAEA,CAAAA;AAA8C,IAAA,MAAA,CAAA,GAAS,GAAEA,CAAAA;AAAiG,IAAA,MAAA,CAAA,GAAS,GAAEA,CAAAA;AAAiB,IAAA,MAAA,CAAA,GAAS,GAAEA,CAAAA;AAAiB,IAAA,MAAA,CAAA,GAAS,GAAEA,CAAAA;AAAiB,IAAA,MAAA,CAAA,GAAS,GAAEA,CAAAA;AAAoB,IAAA,MAAA,CAAA,GAAS,GAAEA,CAAAA;AAAoB,IAAA,MAAA,CAAI,GAAA,GAAA,CAAA;AAAwE,IAAA,GAAA,CAAA,iBAAA,GAAoB,IAAA,GAAA,CAAO,mBAAA,GAASA,IAAa,GAAA,CAAA,SAAA,GAAS,SAAU,EAAA,EAAA;AAAyE,MAAA,OAAM,eAAA,OAAkB,OAAA,IAAW,EAAA,YAAA,OAAA,IAAA,SAAA,EAAA,IAAA,QAAA,IAAA,OAAA,EAAA,IAAA,cAAA,OAAA,EAAA,CAAA,IAAA,IAAA,UAAA,IAAA,OAAA,EAAA,CAAA,KAAA;IAAC,CAAA,EAAA,GAAA,CAAA,iBAAA,GAAsB,SAAO,EAAA,EAAA;AAAgC,MAAA,OAAM,EAAA,IAAA,WAAA,CAAe,MAAA,GAAI,WAAA,CAAe,MAAA,CAAI,EAAA,CAAA,GAAA,CAAA,CAAA,EAAA,CAAA,IAAA,CAAA,CAAA,EAAoB,CAAA;IAA6P,CAAA,EAAA,GAAA,CAAA,eAAO,CAAA,EAAa,GAAA,CAAA,eAAe,CAAA,EAAA,GAAA,CAAA,mBAAA,GAAaA,CAAAA,EAAa,GAAA,CAAA,aAAA,GAAA,GAAA,GAAA,CAAA,aAAA,GAAA,GAAA,GAAA,CAAA,WAAA,GAAA,GAAA,GAAA,CAAA,YAAA,GAAA,CAAA,EAAA,GAAA,CAAA,YAAA,GAAA,CAAA,EAAA,IAAA,cAAA,GAAA,CAAA,EAAA,IAAA,cAAA,GAAA,CAAA,EAAA,IAAA,eAAA,GAAAwB,EAAAA,EAAA,GAAA,CAAA,gBAAA,GAAA,CAAA,EAAA,EAAA,CAAA,UAAA,WAAA,IAAA,OAAA,GAAA,IAAA,EAAA,iBAAA,IAAA,GAAA,EAAA,CAAA,EAAA,GAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA;AAAI,MAAA,OAAI,WAAA,IAAQ,OAAa,GAAA,KAAO,EAAA,CAAA,UAAO,EAAA,CAAA,EAAA,IAAA,EAAA,YAAS,GAAA,CAAA;AAAsB,IAAA,CAAA,EAAA,CAAA,CAAA,OAAA,GAAO,WAAA,IAAa,OAAO,GAAA,IAAQ,CAAA,iBAAaxB,IAAAA,GAAAA,EAAAA,CAAAA,EAAa,GAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA;AAAI,MAAA,OAAI,WAAA,IAAQ,OAAa,GAAA,KAAO,CAAA,CAAA,UAAW,CAAA,CAAA,EAAA,IAAA,EAAA,YAAI,GAAA,CAAA;AAAmC,IAAA,CAAA,EAAA,CAAA,CAAA,OAAA,GAAO,WAAA,IAAa,OAAO,OAAA,IAAY,CAAA,iBAAaA,IAAAA,OAAAA,EAAa,CAAA,EAAA,GAAA,CAAA,SAAA,GAAA,SAAA,EAAA,EAAA;AAAQ,MAAA,OAAI,WAAA,IAAQ,OAAa,OAAA,KAAO,CAAA,CAAA,UAAW,CAAA,CAAA,EAAA,IAAA,EAAA,YAAI,OAAA,CAAA;AAAmC,IAAA,CAAA,EAAA,CAAA,CAAA,OAAA,GAAU,WAAA,IAAA,OAAA,OAAA,IAAA,CAAA,iBAAA,IAAA,OAAA,EAAA,CAAA,EAAA,GAAA,CAAA,SAAA,GAAA,SAAA,EAAA,EAAA;AAAC,MAAA,OAAI,EAAA,EAAA,CAAA;IAAsV,CAAA,EAAA,CAAA,CAAA,UAAO,WAAA,IAAA,OAAA,eAA8B,CAAA,CAAA,IAAA,WAAA,EAAA,CAAA,EAAA,GAAA,CAAA,gBAAA,CAAA,EAAA,CAAA,CAAA,OAAA,GAAA,WAAA,IAAA,OAAA,WAAA,IAAA,eAAA,OAAA,QAAA,IAAA,CAAA,CAAA,IAAA,QAAA,CAAA,IAAA,YAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAA,IAAA,UAAA,GAAA,CAAA,EAAA,CAAA,CAAA,OAAA,GAAA,WAAA,IAAA,OAAA,qBAAA,CAAA,CAAA,IAAA,iBAAA,EAAA,CAAA,EAAA,GAAA,CAAA,sBAAA,CAAA,EAAA,GAAA,CAAA,eAAA,GAAA,SAAA,EAAA,EAAA;AAAC,MAAA,OAAM,wBAAA,KAAyB,GAAA,EAAA,CAAA;IAAC,CAAA,EAAA,GAAA,CAAA,aAAA,GAAO,SAAA,EAAA,EAAA;AAA8B,MAAA,OAAM,uBAAA,KAAyB,GAAA,EAAA,CAAA;IAAC,CAAA,EAAA,GAAA,CAAA,aAAA,GAAO,SAAA,EAAA,EAAA;AAA8B,MAAA,OAAM,uBAAA,KAA2BA,GAAE,EAAA,CAAA;IAAC,CAAA,EAAA,GAAA,CAAA,iBAAA,GAAO,SAAuBiD,EAAAA,EAAG;AAAC,MAAA,OAAM,oBAAA,KAAA,GAA4B,EAAA,CAAA;IAAY,CAAA,EAAA,GAAA,CAAA,2BAAA,GAAO,SAAkCjD,EAAAA,EAAC;AAAC,MAAA,OAAM,6BAAA,KAAqB,GAAA,EAAe,CAAA;AAAmG,IAAA,CAAA,EAAA,IAAA,cAAA,GAAgB,CAAA,EAAG,IAAG,cAAA,GAAWA,CAAAA,EAAC,IAAA,eAAA,GAAA,CAAA,EAAA,GAAA,CAAA,cAAA,GAAA,GAAA,GAAA,CAAA,cAAA,GAAA,GAAA,GAAA,CAAA,gBAAA,GAAA,SAAA,EAAA,EAAA;AAAC,MAAA,OAAM,CAAA,CAAA,EAAA,CAAA,IAAA,CAAA,CAAA,EAAA,CAAA,IAAiB,CAAA,CAAA,EAAA,CAAA,IAASA,CAAAA,CAAAA,EAAE,CAAA,IAAA,EAAA,EAAA,CAAA;IAAC,CAAA,EAAA,GAAA,CAAA,gBAAA,GAAmB,SAAG,EAAA,EAAA;AAAE,MAAA,OAAG,GAAA,KAAU,CAAA,CAAA,EAAA,CAAA,IAAA,EAAA,EAAa,CAAA,CAAA;AAAgD,IAAA,CAAA,EAAA,CAAA,SAAA,EAAO,YAAA,EAAmBA,yBAAiB,CAAA,CAAA,OAAA,CAAM,SAAU,EAAA,EAAA;AAAC,MAAA,MAAA,CAAA,eAAgBA,GAAAA,EAAE,EAAA,EAAA,EAAA,UAAA,EAAA,KAAA,EAAA,OAA+B,WAAA;AAAE,QAAA,MAAC,IAAA,KAAA,CAAA,EAAA,GAAA,+BAAA,CAAA;AAAI,MAAA,CAAA,EAAA,CAAA;IAAE,CAAA,CAAA;AAAA,IAAqF,CAAA,GAAE,eAAC,OAAA,UAAA,GAAA,aAAA,WAAA,IAAA,OAAA,OAAA,IAAA,GAAA,UAAA;AAAxF,IAA0F,IAAE,EAAA;AAA5F,IAAgG,CAAA,GAAA,CAAA;AAAiD,IAAA,EAAA,GAAA,MAAA,CAAU,yBAAA,IAAoBoC,SAAIA,EAAAA,EAAI;AAAW,MAAA,KAAA,IAAIA,EAAAA,GAAE,MAAA,CAAE,IAAA,CAAO,EAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,CAAA,EAAyBpC,EAAAA,GAAEK,EAAAA,CAAG,MAAA,EAAC,EAAA,EAAA;AAAE,QAAA,EAAA,CAAA,EAAA,CAAOkC,EAAAA,CAAAA,CAAAA,GAAAA,OAAAA,wBAAAA,CAAAA,EAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,CAAAA;AAAC,MAAA,OAAA,EAAA;AAA1P,IAAA,CAAA;AAA0Q,IAAE,EAAA,GAAA,UAAA;AAAmB,IAAA,CAAA,CAAA,MAAA,GAAOvC,SAAG,EAAA,EAAA;AAAC,MAAA,IAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAQK;AAAgC,QAAA,KAAA,IAAE,KAAQ,EAAA,EAAA,KAAUkC,CAAAA,EAAE,EAAA,GAAC,UAAA,MAAA,EAAA,EAAA,EAAA;AAAE,UAAA,EAAA,CAAA,IAAA,CAAS,EAAA,CAAA,SAAA,CAAQ,EAAA,CAAA,CAAA,CAAA;AAAC,QAAA,OAAA,EAAA,CAAA,KAAA,GAAA,CAAA;AAACA,MAAAA;AAAI,MAAA,EAAA,GAAA,CAAA;AAAmE,MAAA,KAAA,IAAG,EAAA,GAAA,SAAA,EAAOvC,EAAAA,GAAAA,EAAAA,CAAAA,MAAAA,EAAAA,EAAAA,GAAAA,MAAAA,CAAAA,EAAAA,CAAAA,CAAAA,OAAAA,CAAAA,EAAAA,EAAAA,SAAAA,EAAAA,EAAAA;AAAE,QAAA,IAAA,IAAA,KAAO,EAAA;AAAI,UAAA,OAAGuC,GAAAA;AAAK,QAAA,IAAA,EAAA,IAAOvC,EAAAA;AAAE,UAAA,OAAOA,EAAAA;AAAE,QAAA,QAAK,EAAA;UAAK,KAAA,IAAA;AAAsB,YAAA,OAAI,MAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA,CAAA;UAAK,KAAA,IAAA;AAAsB,YAAA,OAAI,MAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA,CAAA;UAAK,KAAA,IAAA;AAAI,YAAA,IAAA;AAA6B,cAAA,OAAOA,IAAAA,CAAE,SAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA,CAAA;AAAC,YAAA,CAAA,CAAA,OAAO,EAAA,EAAA;AAAY,cAAA,OAAA,YAAA;AAAC,YAAA;AAAQ,UAAA;AAAQ,YAAA,OAAA,EAAA;AAAG;MAAsB,CAAA,CAAA,EAAA,EAAA,GAAI,EAAA,CAAG,EAAC,CAAA,EAAG2C,KAAGH,EAAAA,EAAAA,EAAAA,GAAG,EAAA,CAAIG,EAAAA,EAAAA,CAAAA;AAAe,QAAA,EAAA,CAAA,EAAOH,CAAAA,IAAAA,CAAAA,EAAAA,CAAAA,EAAAA,CAAAA,GAAAA,EAAAA,IAAAA,GAAAA,GAAAA,EAAAA,GAAAA,EAAAA,IAAAA,GAAAA,GAAAA,EAAAA,CAAAA,EAAAA,CAAAA;AAAC,MAAA,OAAI,EAAA;AAAwB,IAAA,CAAA,EAAA,CAAA,CAAA,SAAA,GAAY,SAAG,EAAA,EAAA,EAAA,EAAO;AAAc,MAAA,IAAA,MAAA,KAAOxC,CAAAA,IAAAA,IAAAA,KAAAA,CAAAA,CAAAA,aAAAA;AAAE,QAAA,OAAG,EAAA;AAAW,MAAA,IAAA,MAAA,KAAO,CAAA;AAAW,QAAA,OAAA,WAAS;AAAuC,UAAA,OAAA,CAAA,CAAA,UAAA,EAAA,EAAA,EAAA,EAAA,KAAA,CAAA,IAAA,IAAA,GAAA,SAAA,CAAA;AAAE,QAAA,CAAA;AAAS,MAAA,IAAA,EAAA,GAAO,KAAA;AAAW,MAAA,OAAIuC,WAAE;AAAC,QAAA,IAAA,CAAA,EAAA,EAAK;AAAiB,UAAA,IAAA,CAAA,CAAA,gBAAA;AAAqB,YAAA,MAAA,IAAA,MAAA,EAAA,CAAA;AAAwD,UAAA,CAAA,CAAA,gBAAA,GAAA,QAAA,KAAA,CAAA,EAAA,IAAA,OAAA,CAAA,KAAA,CAAA,EAAA,CAAA,EAAA,EAAA,GAAA,IAAA;AAAC,QAAA;AAAiC,QAAA,OAAA,EAAA,CAAA,KAAA,CAAA,IAAA,IAAA,CAAA,EAAA,SAAA,CAAA;AAAC,MAAA,CAAA;AAAE,IAAA,CAAA;AAAA,IAAU,KAAG,EAAA;AAAK,IAAG,EAAA,GAAE,IAAA;AAAoB,IAAA,IAAA,CAAA,CAAA,IAAK,UAAA,EAAI;AAAW,MAAA,EAAA,GAAG,EAAA,GAAA,CAAG,UAAA;AAAyH,MAAA,EAAA,GAAA,EAAA,CAAA,QAAA,oBAAA,EAAA,MAAA,EAAA,OAAA,CAAA,KAAA,EAAA,IAAA,CAAA,CAAA,OAAA,CAAA,MAAA,KAAA,CAAA,CAAA,aAAA,EAAA,EAAA,GAAA,IAAA,MAAA,CAAA,GAAA,GAAA,EAAA,GAAA,GAAA,EAAA,GAAA,CAAA;AAAnJ,IAAA;AAAmf,IAAA,MAAA,CAAA,IAAS,IAAGvC,CAAAA;AAAuF,IAAA,MAAA,CAAA,IAAS,IAAGA,CAAAA;AAAc,IAAA,MAAA,CAAA,IAAS,IAAGA,CAAAA;AAAw2D,IAAA,MAAA,CAAA,IAAS,IAAGA,CAAAA;AAAmD,IAAA,MAAA,CAAA,IAAS,IAAGA,CAAAA;AAA4vB,IAAA,MAAA,CAAA,IAAS,IAAGA,CAAAA;AAA2B,IAAA,MAAA,CAAA,IAAS,IAAGA,CAAAA;AAA8B,IAAA,MAAA,CAAA,IAAS,IAAGA,CAAAA;AAAmB,IAAA,MAAA,CAAA,IAAS,IAAGA,CAAAA;AAA6B,IAAA,MAAA,CAAA,IAAS,IAAGA,CAAAA;AAA6B,IAAA,MAAA,CAAA,IAAS,IAAGA,CAAAA;AAAqB,IAAA,MAAA,CAAA,IAAS,IAAGA,CAAAA;AAA2C,IAAA,MAAA,CAAA,IAAS,IAAGA,CAAAA;AAAuC,IAAA,MAAA,CAAA,IAAS,IAAGA,CAAAA;AAAyC,IAAA,MAAA,CAAA,IAAS,IAAGA,CAAAA;AAAgE,IAAA,MAAA,CAAA,IAAS,IAAGA,CAAAA;AAA+B,IAAA,MAAA,CAAA,IAAS,IAAGA,CAAAA;AAA4C,IAAA,MAAA,CAAA,IAAS,IAAGA,CAAAA;AAAiD,IAAA,MAAA,CAAE,IAAA,IAAS,CAAA;AAAY,IAAA,CAAA,CAAA,QAAA,GAAKA,SAAE,EAAA,EAAY;AAAS,MAAA,IAAA,KAAM,EAAA,CAAA,WAAA,EAAQ,EAAA,CAAA,GAAA,EAAA,CAAA;AAAC,QAAA,IAAA,EAAA,CAAIK,IAAAA,CAAE,EAAE,CAAA,EAAA;AAAI,UAAA,IAAGL,KAAG,CAAA,CAAA,GAAA;AAAW,UAAA,EAAA,CAAA,EAAA,IAAIuC,WAAW;AAAmB,YAAA,IAAA,EAAA,GAAQ,CAAA,CAAA,MAAA,CAAM,KAAA,CAAA,GAAYvC,SAAIuC,CAAAA;AAAG,YAAA,OAAA,CAAA,KAAA,CAAA,WAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA;AAAE,UAAA,CAAA;AAAM,QAAA,CAAA;AAAiB,UAAA,EAAA,CAAA,EAAA,IAAA,WAAA;AAAE,UAAA,CAAA;AAAY,MAAA,OAAI,GAAA,EAAA,CAAA;IAAqa,CAAA,EAAA,CAAA,CAAA,UAAO,EAAA,EAAMvC,EAAAA,CAAAA,SAAAA,EAAAA,IAAAA,EAAAA,CAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,QAAAA,CAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,SAAAA,EAAAA,CAAAA,GAAAA,EAAAA,CAAAA,EAAAA,OAAAA,EAAAA,CAAAA,CAAAA,EAAAA,EAAAA,GAAAA,KAAAA,EAAAA,CAAAA,EAAAA,EAAAA,EAAAA,CAAAA,EAAAA,IAAAA,EAAAA,CAAAA,EAAAA,EAAAA,EAAAA,CAAAA,EAAAA,KAAAA,EAAAA,CAAAA,EAAAA,EAAAA,EAAAA,CAAAA,EAAAA,IAAAA,EAAAA,CAAAA,EAAAA,EAAAA,EAAAA,CAAAA,EAAAA,MAAAA,CAAAA,EAAAA,EAAAA,EAAAA,CAAAA,EAAAA,KAAAA,EAAAA,CAAAA,IAAAA,EAAAA,CAAAA,EAAAA,OAAAA,EAAAA,CAAAA,EAAAA,EAAAA,EAAAA,GAAAA,GAAAA,EAAAA,CAAAA,EAAAA,EAAAA,EAAAA,CAAAA,EAAAA,MAAAA,EAAAA,CAAAA,EAAAA,EAAAA,EAAAA,CAAAA,EAAAA,EAAAA,EAAAA,CAAAA,MAAAA,GAAAA,EAAAA,OAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EAAAA,QAAAA,EAAAA,OAAAA,EAAAA,QAAAA,EAAAA,WAAAA,MAAAA,EAAAA,IAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EAAAA,OAAAA,EAAAA,IAAAA,EAAAA,WAAAA,MAAAA,EAAAA,KAAAA,EAAAA,EAAAA,CAAAA,CAAAA,KAAAA,GAAAA,GAAAA,EAAAA,EAAAA,OAAAA,GAAAA,EAAAA,EAAAA,CAAAA,CAAAA,SAAAA,GAAAA,EAAAA,EAAAA,CAAAA,CAAAA,SAAAA,EAAAA,EAAAA,CAAAA,CAAAA,iBAAAA,GAAAA,SAAAA,EAAAA,EAAAA;AAAC,MAAA,OAAI,IAAA,IAAS,EAAA;IAAwC,CAAA,EAAA,CAAA,CAAA,WAAO,EAAA,EAAA,CAAA,CAAU,WAAOA,EAAAA,EAAAA,CAAAA,CAAAA,QAAAA,GAAAA,SAAAA,EAAAA,EAAAA;AAAC,MAAA,OAAI,YAAY,OAAK,EAAA;AAA4J,IAAA,CAAA,EAAA,CAAA,CAAA,WAAA,GAAcA,EAAAA,EAAAA,CAAAA,CAAG,WAAA,EAAA,EAAW,CAAA,CAAA,KAAA,CAAOA,QAAAA,GAAG,EAAA,EAAU,CAAA,CAAA,QAAA,GAAU,EAAA,EAAA,EAAA,MAAA,GAAU,EAAA,EAAOA,CAAAA,CAAAA,KAAAA,CAAG,MAAA,GAAU,EAAA,EAAA,CAAA,CAAA,OAAA,GAAU,IAAA,CAAA,CAAA,KAAA,CAASA,aAAAA,GAAAA,EAAAA,EAAAA,EAAAA,UAAAA,GAAAA,EAAAA,EAAAA,CAAAA,CAAAA,WAAAA,GAAAA,SAAAA,EAAAA,EAAAA;AAAC,MAAA,OAAI,IAAA,KAAS,EAAA,IAAA,SAAA,IAAA,OAAA,MAAA,QAAA,IAAA,OAAA,EAAA,IAAA,QAAA,IAAA,OAAA,EAAA,IAAA,QAAA,IAAA,OAAA,MAAA,MAAA,KAAA,EAAA;AAAI,IAAA,CAAA,EAAA,EAAI,QAAA,GAAI,GAAA;AAAyE,IAAA,EAAA,GAAS,CAAA,KAAA,EAAI,KAAA,EAAA,KAAA,EAAA,KAAA,EAAA,KAAA,EAAA,KAAA,EAAA,KAAA,EAAA,KAAA,EAAA,KAAA,EAAA,KAAA,EAAA,OAAA,KAAA,CAAA;AAAuI,IAAA,MAAA,CAAA,IAAS,IAAGA,CAAAA;AAAsD,IAAA,MAAA,CAAE,IAAI,IAAA,CAAA;AAAW,IAAA,CAAA,CAAA,MAAA,WAAY;AAA4C,MAAA,OAAA,CAAI,GAAA,CAAA,WAAe,EAAA,EAAA,EAAA,EAAQ,MAAA,CAAA,KAAA,CAAWK,CAAAA,EAAAA,SAAE,CAAA,CAAA;AAAC,IAAA,CAAA,EAAA,EAAA,QAAA,GAAQ,GAAA,EAAI,EAAA,OAAA,GAAA,SAAA,IAAA,EAAA,EAAA;AAAE,MAAA,IAAA,CAAA,EAAA,IAAOL,CAAAA,EAAAA,CAAAA,EAAAA,CAAAA;AAAE,QAAA,OAAQuC,EAAAA;AAAiC,MAAA,KAAA,IAAIH,KAAE,MAAA,CAAMA,IAAAA,CAAE,EAAA,CAAA,EAAA,EAAA,GAAA,GAAA,MAAA,EAAA,EAAA,EAAA;AAAE,QAAA,EAAA,CAAA,GAAOpC,EAAAA,CAAAA,IAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EAAAA,CAAAA,CAAAA;AAAC,MAAA,OAAA,EAAA;AAAE,IAAA,CAAA;AAAyE,IAAA,KAAS,WAAA,IAAO,OAAA,MAAA,mBAAA,MAAA,CAAA,uBAAA,CAAA,GAAA,MAAA;AAA+F,IAAA,MAAA,CAAE,IAAA,IAAU,CAAA;AAAY,IAAA,CAAA,CAAA,SAAA,GAAG,SAAY,EAAA,EAAOA;AAAE,MAAA,IAAA,cAAU,OAAU,EAAA;AAAoD,QAAA,MAAG,IAAIA,UAAM,kDAAA,CAAA;AAAC,MAAA,IAAA,EAAA,IAAIK,EAAAA,CAAAA,EAAAA,CAAAA,EAAAA;AAAE,QAAA,IAAG,EAAA;AAA4B,QAAA,IAAA,UAAA,IAAU,QAAU,EAAA,GAAA,EAAA,CAAA,EAAA,CAAA,CAAA;AAAiE,UAAA,MAAO,IAAA,UAAO,+DAAoD,CAAA;AAAsB,QAAA,OAAA,MAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,KAAA,EAAA,YAAA,EAAA,IAAA,EAAA,CAAA,EAAA,EAAA;AAAC,MAAA;AAAa,MAAA,SAAA,EAAA,GAAQA;AAAiC,QAAA,KAAA,IAAEL,IAAEuC,EAAAA,EAAEH,EAAAA,GAAAA,IAAAA,OAAAA,CAAAA,SAAAA,IAAAA,EAAAA,EAAAA;AAAI,UAAA,EAAA,GAAE5B,IAAG,EAAA,GAAEgC,EAAAA;QAA2B,CAAA,CAAA,EAAAhC,KAAE,EAAK,EAAA,KAAA,CAAA,EAAUgC,EAAAA,GAAE,UAAA,MAAA,EAAA,EAAA,EAAA;AAAEhC,UAAAA,EAAAA,CAAE,IAAA,CAAM,SAAA,CAASR,EAAEoC,CAAAA,CAAAA;AAAG,QAAA,EAAA,CAAApC,IAAAA,CAAEuC,SAAKlC,EAAAA,EAAG,EAAA,EAAA;AAAI,UAAA,EAAA,GAAA,EAAA,CAAA,EAAA,CAAA,GAAA,EAAA,CAAA,EAAA,CAAA;QAAE,CAAA,CAAA;AAAI,QAAA,IAAAL;AAAmB,UAAA,EAAA,CAAA,KAAA,CAAOA,IAAAA,IAAE,CAAA,EAAA,EAAA,CAAA;AAAC,QAAA,CAAA,CAAA,OAAG,EAAA,EAAA;AAAE,UAAA,EAAA,CAAA,EAAA,CAAA;AAAC,QAAA;AAAQ,QAAA,OAAA,EAAA;AAAnM,MAAA;AAAoM,MAAA,MAAA,CAAO,IAAA,GAAO,CAAA;AAA+J,MAAA,OAAI,MAAA,CAAU,cAAA,CAAY,EAAA,EAAA,MAAA,CAAA,cAAA,CAAuB,EAAA,CAAA,CAAA,EAAA,EAAA,IAAA,MAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,KAAA,EAAA,YAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,CAAA,EAAA,CAAA,CAAA;AAAC,IAAA,CAAA,EAAA,EAAA,SAAA,CAAG,MAAA,GAAY,IAAOA,CAAAA,CAAAA,WAAAA,GAAAA,SAAAA,EAAAA,EAAAA;AAAE,MAAA,IAAA,cAAU,OAAU,EAAA;AAAoD,QAAA,MAAA,IAASK,UAAG,kDAAA,CAAA;AAAC,MAAA,SAAA,EAAA,GAAQA;AAAgC,QAAA,KAAA,IAAE,KAAK,EAAA,EAAA,KAAY,CAAA,EAAA,EAAA,GAAA,UAAA,MAAA,EAAA,EAAA,EAAA;AAAE,UAAA,EAAA,CAAI+B,IAAAA,CAAE/B,SAAAA,CAAM,EAAA,CAAA,CAAA;AAAE,QAAA,IAAG,EAAA,GAAA,GAAA,GAAA,EAAA;AAAqB,QAAA,IAAA,cAAU,OAAU,EAAA;AAA8C,UAAA,MAAIG,IAAE,UAAQgC,4CAAY,CAAA;AAAC,QAAA,IAAA,EAAA,GAAOJ,IAAAA,IAAE,CAAA,EAAM5B,EAAAA,0BAAW,WAAA;AAAC,UAAA,OAAtC,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,SAAA,CAAA;AAAwCR,QAAAA,CAAAA,EAAE,GAAA,CAAA;AAAmC,QAAA,EAAA,CAAA,MAAE,IAAA,IAAW,CAAA,EAAA,EAAK,CAAA,CAAA,IAAA,CAAK,SAAO,EAAA,EAAA;AAAE,UAAA,CAAA,CAAI,SAASA,EAAAA,CAAE,IAAA,CAAA,IAAA,EAAA,IAAA,EAAA,EAAA,CAAA,CAAA;AAAC,QAAA,CAAA,EAAA,SAAE,EAAA,EAAY;AAAkB,UAAA,CAAA,CAAA,SAAA,EAAA,CAAA,IAAA,CAAA,IAAA,EAAA,EAAA,EAAA,EAAA,CAAA,CAAA;QAAE,CAAA,CAAA;AAAxV,MAAA;AAAyV,MAAA,MAAA,CAAO,IAAA,GAAO,CAAA;AAA6E,MAAA,OAAA,MAAA,CAAA,cAAA,CAAA,EAAA,EAAA,MAAA,CAAA,eAAA,EAAA,CAAA,CAAA,EAAA,MAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA,EAAA;;AwDC3sb,IAAA,CAAA,CAAE,OAAA;AAAY,IAAA,CAAA,CAAE,WAAA;AAAS,IAAA,CAAA,CAAE,QAAA;AAAU,IAAA,CAAA,CAAE,SAAA;AAAO,IAAA,CAAA,CAAE,MAAA;AAAS,IAAA,CAAA,CAAE,QAAA;AAAQ,IAAA,CAAA,CAAE,OAAA;AAAQ,IAAA,CAAA,CAAE,OAAA;AAAU,IAAA,CAAA,CAAE,SAAA;AAAS,IAAA,CAAA,CAAE,QAAA;AAAO,IAAA,CAAA,CAAE,MAAA;AAAQ,IAAA,CAAA,CAAE,OAAA;AAAW,IAAA,CAAA,CAAE,UAAA;AAAO,IAAA,CAAA,CAAE,MAAA;AAAkB,IAAA,CAAA,CAAE,iBAAA;AAAS,IAAA,CAAA,CAAE,QAAA;AAAS,IAAA,CAAA,CAAE,QAAA;AAAY,IAAA,CAAA,CAAE,WAAA;AAAS,IAAA,CAAA,CAAE,QAAA;AAAS,IAAA,CAAA,CAAE,QAAA;AAAS,IAAA,CAAA,CAAE,QAAA;AAAY,IAAA,CAAA,CAAE,WAAA;AAAI,IAAA,CAAA,CAAE,GAAA;AAEtQ,IAAA,CAAA,CAAA,SAAA;AACA,IAAA,CAAA,CAAA,OAAA;AACA,IAAA,CAAA,CAAA,WAAA;AACA,IAAA,CAAA,CAAA,QAAA;AACA,IAAA,CAAA,CAAA,SAAA;AACA,IAAA,CAAA,CAAA,MAAA;AACA,IAAA,CAAA,CAAA,QAAA;AACA,IAAA,CAAA,CAAA,OAAA;AACA,IAAA,CAAA,CAAA,OAAA;AACA,IAAA,CAAA,CAAA,SAAA;AACA,IAAA,CAAA,CAAA,QAAA;AACA,IAAA,CAAA,CAAA,MAAA;AACA,IAAA,CAAA,CAAA,OAAA;AACA,IAAA,CAAA,CAAA,UAAA;AACA,IAAA,CAAA,CAAA,MAAA;AACA,IAAA,CAAA,CAAA,iBAAA;AACA,IAAA,CAAA,CAAA,QAAA;AACA,IAAA,CAAA,CAAA,QAAA;AACA,IAAA,CAAA,CAAA,WAAA;AACA,IAAA,CAAA,CAAA,QAAA;AACA,IAAA,CAAA,CAAA,QAAA;AACA,IAAA,CAAA,CAAA,QAAA;AACA,IAAA,CAAA,CAAA,WAAA;AACA,IAAA,CAAA,CAAA,GAAA;AACA,IAAA,CAAA,CAAA,SAAA;AAEA,IAAA,CAAA,CAAA,KAAA;;A/B1BA,IAAA,CAAA,CAAA,WAAA;AACA,IAAA,CAAA,CAAA,QAAA;AACA,IAAA,CAAA,CAAA,SAAA;AACA,IAAA,CAAA,CAAA,MAAA;AACA,IAAA,CAAA,CAAA,QAAA;AACA,IAAIkD,WAAAA,CAAAA,CAAW,OAAA;AACf,IAAA,CAAA,CAAA,OAAA;AACA,IAAA,CAAA,CAAA,SAAA;AACA,IAAA,CAAA,CAAA,QAAA;AACA,IAAA,CAAA,CAAA,MAAA;AACA,IAAA,CAAA,CAAA,OAAA;AACA,IAAA,CAAA,CAAA,UAAA;AACA,IAAA,CAAA,CAAA,MAAA;AACA,IAAA,CAAA,CAAA,iBAAA;AACA,IAAA,CAAA,CAAA,QAAA;AACA,IAAA,CAAA,CAAA,QAAA;AACA,IAAA,CAAA,CAAA,WAAA;AACA,IAAA,CAAA,CAAA,QAAA;AACA,IAAA,CAAA,CAAA,QAAA;AACA,IAAA,CAAA,CAAA,QAAA;AACA,IAAA,CAAA,CAAA,WAAA;AACA,IAAA,CAAA,CAAA,GAAA;AACA,IAAA,CAAA,CAAA,SAAA;AACA,IAAA,CAAA,CAAA,KAAA;AACA,IAAA,CAAA,CAAA,cAAc,UAAA,CAAA,WAAA;AAEd,IAAA,CAAA,CAAA,cAAMG,UAAAA,CAAgB,WAAA;;AC5Bf,IAAM,4BAAA,mBAA6B,MAAA,CAAI,GAAA,CAAA,uCAA4B,CAAA;AACnE,IAAM,UAAA,GAAA,MAAAC,WAAAA,SAAsC,KAAA,CAAI;MAEhD,MAAA,GAAe;AACd,QAAA,OAA6B;AACnC,UAAA,IAAA,EAAO,IAAA,CAAA,IAAA;AACN,UAAA,OAAA,EAAM,IAAA,CAAK;AAAA,SAAA;AACG,MAAA;MAEhB,CAAA,mBAAA,CAAA,CAAA,KAAA,EAAAhE,QAAAA,EAAA;AAEW,QAAA,OAAA,GAAA,IAAA,CAAA,4BAAqE,CAAA,CAAA,KAAA,EAAAA,QAAA,CAAA;AAC/E,EAAA,IAAA,CAAA,MAAO,KAAA,CAAQ,IAAA,CAAA,MAAA,OAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA;AAAkD,MAAA;AAA4C,KAAA;AAI/G,IAAA,MAAA,CAAA,YAAA,WAAA,CAAA;AAb8C,IAAA,SAAA,GAAA,UAAA;;MCiBvC,WAAA,CAAe,UAAA,EAAA,SAAA,KAAA,EAAA;AAId,QAAA,KAAA,CAAA,OAAY,CAAA;AAClB,QAAA,IAAA,CAAA,UAAA,GAAa,UAAA;AACb,QAAA,IAAA,CAAK,KAAA,GAAA,KAAA;AACL,MAAA;MACD,MAAA,GAAA;AAEgB,QAAA,OAA0C;AACzD,UAAA,IAAA,EAAO,IAAA,CAAA,IAAA;AACN,UAAA,UAAA,EAAW,IAAA,CAAA,UAAA;AACX,UAAA,KAAA,EAAA,IAAA,CAAY,KAAA;AACZ,UAAA,OAAA,EAAO,IAAA,CAAK;AAAA,SAAA;AACE,MAAA;AACf,KAAA;AAEF,IAAA,MAAA,CAAA,sBAAA,qBAAA,CAAA;AAlByE,IAAA,mBAAA,GAAA,oBAAA;;MClBlE,WAAA,CAAM,UAAA,EAAA,OAAA,EAAN,KAAA,EAAM,QAAA,EAAA;AAGL,QAAA,KAAA,CAAA,UAAA,EAAY,SAAkC,KAAiB,CAAA;AACrE,QAAA,IAAA,CAAA,QAAA,GAAM,QAAA;AACN,MAAA;MACD,MAAA,GAAA;AAEgB,QAAA,OAA8C;AAC7D,UAAA,IAAA,EAAO,IAAA,CAAA,IAAA;AACN,UAAA,UAAA,EAAW,IAAA,CAAA,UAAA;AACX,UAAA,KAAA,EAAA,IAAA,CAAY,KAAA;AACZ,UAAA,QAAA,EAAO,IAAA,CAAK,QAAA;AACZ,UAAA,OAAA,EAAA,IAAA,CAAU;AAAK,SAAA;AACD,MAAA;MAEhB,CAAA,4BAAA,CAAA,CAAA,KAAA,EAAAA,QAAAA,EAAA;AAEW,QAAA,MAAA,UAAA,GAAAA,QAAAA,CAA4B,OAAA,CAAE,IAAA,CAAe,YAAyC,QAAA,CAAA;AAChG,QAAA,IAAA,QAAM,CAAA,EAAA;AACN,UAAA,OAAIA,QAAAA,CAAW,OAAA,CAAA,CAAA,0BAAA,EAAA,UAAA,KAAA,SAAA,CAAA;AACd,QAAA;AACD,QAAA,MAAA,UAAA,GAAA,EAAA,GAAAA,QAAAA,EAAA,KAAA,EAAAA,QAAAA,CAAA,KAAA,KAAA,IAAA,GAAA,IAAA,GAAAA,QAAAA,CAAA,KAAA,GAAA,CAAA,EAAA;AAEA,QAAA,MAAM,OAAA,GAAA;IAENA,QAAAA,CAAM,OAAA,CAAU,GAAA,EAAA,WAAA,CAAA,CAAA,CAAA,CAAA;AAAO,QAAA,MAAA,KAAA,GAAQ,SAAa,IAAA,CAAA,KAAA,EAAY,UAAA,CAAA,CAAA,OAAA,CAAA,OAAA,OAAA,CAAA;AACxD,QAAA,MAAM,MAAA,GAAQiE,GAAAA,QAAAA,CAAQ,OAAA,CAAK,2BAA2B,SAAc,CAAA,MAAA,UAAA,CAAA,CAAA;AAEpE,QAAA,MAAM,OAAA,GAASjE,QAAAA,CAAG,OAAA,CAAQ,IAAA,CAAQ,SAAA,QAAA,CAAA;AAClC,QAAA,MAAM,aAAA,GAAU;IAChBA,QAAAA,CAAM,OAAA,CAAA,YAAA,EAAgB,QAAA,CAAA,CAAA,EAAAA,SAAA,OAAA,CAAA,IAAA,CAAA,QAAA,EAAA,SAAA,CAAA,CAAA,CAAA;AAAO,QAAA,MAAA,UAAA,GAAgB;AAC7CA,EAAAA,EAAAA,QAAAA,CAAM,QAAA,WAAA,EAAa,QAAA,CAAA,CAAA,EAAA,OAAA,GAAA,KAAA,CAAA,CAAA;AAAO,QAAA,OAAA,GAAQ,MAAQ;IAC1C,OAAO;EAAS,aAAc;EAAK,UAAA,CAAA,CAAA;AAAkB,MAAA;AAAU,KAAA;AAEjE,IAAA,MAAA,CAAA,0BAAA,yBAAA,CAAA;AAnCiF,IAAA,uBAAA,GAAA,wBAAA;;MCL1E,WAAA,CAAA,OAAA,EAAM,OAAmC,KAAA,EAAA;AAKvC,QAAA,IAAA,CAAA,OAAA,GAAY,OAAA;AACnB,QAAA,IAAA,OAAA,EAAK;AACL,UAAA,IAAA,CAAI,KAAA,GAAS,KAAA;QACZ,CAAA,MAAK;AACN,UAAA,IAAA,CAAO,KAAA,GAAA,KAAA;AACN,QAAA;AAAa,MAAA;MAEf,IAAA,GAAA;AAEO,QAAA,OAA4C,IAAA,CAAA,OAAA;AAClD,MAAA;MACD,KAAA,GAAA;AAEO,QAAA,OAA8C,CAAA,IAAA,CAAA,OAAA;AACpD,MAAA;MACD,MAAA,GAAA;AAEO,QAAA,IAAA,KAAY,IAAA,EAAA;AAClB,UAAA,OAAS,IAAA,CAAK,KAAA;AAAG,QAAA,MAAA,IAAA,CAAO,KAAA;AACxB,MAAA;AACD,MAAA,OAAA,GAAA,KAAA,EAAA;AAEA,QAAA,OAAc,IAA+BkE,QAAAA,CAAwB,IAAA,EAAA,KAAA,CAAA;AACpE,MAAA;AACD,MAAA,OAAA,IAAA,KAAA,EAAA;AAEA,QAAA,OAAc,IAAgCA,QAAAA,CAAwB,KAAA,EAAA,MAAA,EAAA,KAAA,CAAA;AACrE,MAAA;AAA+C,KAAA;AAEjD,IAAA,MAAA,CAAA,SAAA,QAAA,CAAA;AAlCgD,IAAA,MAAA,GAAA,OAAA;A5BiDhD,IAAA,MAAA,CAAA,gBAAA,gBAAA,CAAA;AAYA,IAAA,MAAA,CAAA,kBAAA,kBAAA,CAAA;;ACrDA,IAAA,MAAA,CAAA,4BAAA,4BAAA,CAAA;AAOA,IAAA,MAAA,CAAA,4BAAA,4BAAA,CAAA;ACVA,IAAA,MAAA,CAAA,UAAA,UAAA,CAAA;;ACSO,MAAA,WAAA,CAAe,gBAAA,GAAA,EAAA,EAAA,WAAA,GAAiB,EAAA,EAAA;AAO/B,QAAA,IAAA,CAAA,cAAY,EAAA;AAHnB,QAAA,IAAA,CAAU,mBAAA,GAA0C,IAAA;AACpD,QAAA,IAAA,CAAU,WAAA,GAAA,WAAA;AAGT,QAAA,IAAA,CAAK,gBAAA,GAAc,gBAAA;AACnB,MAAA;AACD,MAAA,SAAA,CAAA,MAAA,EAAA;AAEO,QAAA,IAAA,CAAA,MAAA,GAAU,MAAA;AAChB,QAAA,OAAK,IAAA;AACL,MAAA;MACD,QAAA,CAAAlE,QAAAA,GAAA,KAAA,gBAAA,EAAA;AAEO,QAAA,OAAS,IAAA,cAAA,CAAiC,CAAA,IAAA,gBAAA,CAAiD,MAAA,EAAAA,QAAA,CAAA,EAAA,IAAA,CAAA,KAAA,EAAA,CAAA,EAAAA,QAAA,CAAA;AACjG,MAAA;MACD,QAAA,CAAAA,QAAAA,GAAA,KAAA,gBAAA,EAAA;AAEO,QAAA,OAAS,IAAA,cAAA,CAAiC,CAAA,IAAA,gBAAA,CAA4C,IAAA,EAAAA,QAAA,CAAA,EAAA,IAAA,CAAA,KAAA,EAAA,CAAA,EAAAA,QAAA,CAAA;AAC5F,MAAA;MACD,OAAA,CAAAA,QAAAA,GAAA,KAAA,gBAAA,EAAA;AAEO,QAAA,OAAQ,IAAA,cAAA,CAAiC,CAAA,IAAA,gBAAA,CAAwDA,QAAA,CAAA,EAAA,IAAA,CAAA,KAAA,EAAA,CAAA,EAAAA,QAAA,CAAA;AACvG,MAAA;MACD,KAAA,CAAAA,QAAAA,GAAA,KAAA,gBAAA,EAAA;AAEO,QAAA,OAAM,IAAA,cAAA,CAAiC,IAAA,CAAA,KAAA,IAAuCA,QAAA,CAAA;AACpF,MAAA;MACD,GAAA,CAAAA,QAAAA,GAAA,KAAA,gBAAA,EAAA;AAEO,QAAA,OAAI,IAAA,YAAA,CAAiC,IAAA,CAAA,KAAA,IAAmCA,QAAA,CAAA;AAC9E,MAAA;AACD,MAAA,EAAA,CAAA,GAAA,UAAA,EAAA;AAEO,QAAA,OAAS,IAAA,cAAA,CAAgE,CAAA,IAAA,CAAA,KAAA,IAAA,GAAA,UAAA,CAAA,EAAA,IAAA,CAAA,gBAAA,CAAA;AAC/E,MAAA;MACD,SAAA,CAAA,EAAA,EAAAA,QAAAA,GAAA,IAAA,CAAA,gBAAA,EAAA;AAIO,QAAA,OAAA,IAAA,CAAkC,aAAA;AACxC,UAAA;AACC,YAAA,GAAA,EAAA,CAAA,KAAA,KAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,KAAA,CAAA;AAAA,WAAA;AAEAA,UAAAA;AAAA,SAAA;AACA,MAAA;MAEF,OAAA,CAAA,EAAA,EAAAA,QAAAA,GAAA,IAAA,CAAA,gBAAA,EAAA;AAIO,QAAA,OACN,IAAA,CACA,aAAA;AAEA,UAAA;YACC,GAAA,EAAA;AAAA,WAAA;AAEAA,UAAAA;AAAA,SAAA;AACA,MAAA;MAEF,OAAA,CAAA,KAAA,EAAAA,QAAAA,GAAA,IAAA,CAAA,gBAAA,EAAA;AAEO,QAAA,OACN,IAAA,gBAAA,CACiC,IAAA,CAAA,KAAA,EAAA,EAAA,OACSA,QAAA,CAAA;AAC1C,MAAA;MACD,IAAA,CAAA,GAAA,EAAAA,UAAA,gBAAA,EAAA;AAEO,QAAA,OACN,KACA,aAAA,CACA,cAAA,CACO,KAAAA,QAAAA,EAAA,IAAA,EAAA,gBAAA,CAAA,CAAA;AACP,MAAA;AACD,MAAA,QAAA,CAAA,WAAA,EAAA;AAEO,QAAA,MAAA,KAAA,GAAS,KAAA,KAAA,EAA2B;AAC1C,QAAA,KAAA,CAAM,WAAA,GAAa,WAAA;AACnB,QAAA,OAAM,KAAA;AACN,MAAA;AACD,MAAA,GAAA,CAAA,KAAA,EAAA;AAEO,QAAA,IAAI,MAAA,GAAsC,IAAA,CAAA,MAAA,CAAA,KAAA,CAAA;AAChD,QAAA,IAAI,OAAA,KAAA,EAAS;AACb,UAAA,OAAI,MAAA;AAAgB,QAAA,KAAA,MAAO,UAAA,IAAA,KAAA,WAAA,EAAA;AAE3B,UAAA,MAAA,GAAW,UAAA,CAAA,GAAA,CAAc,MAAA,CAAK,KAAA,EAAA,KAAa,MAAA,CAAA;AAC1C,UAAA,IAAA,OAAS,KAAA,EAAA;AACT,YAAA;AAAoB,QAAA;AACrB,QAAA,OAAA,MAAA;AAEA,MAAA;AACD,MAAA,KAAA,CAAA,KAAA,EAAA;AAEO,QAAA,IAAuB,CAAA,KAAA,oBAAA,EAAmB;AAGhD,UAAA,OAAK,IAAA,CAAK,MAAA,CAAA,KAAA,CAAA,CAAA,MAAA,EAAsB;AAC/B,QAAA;AACD,QAAA,OAAA,KAAA,WAAA,CAAA,MAAA,CAAA,CAAA,EAAA,EAAA,eAAA,UAAA,CAAA,GAAA,CAAA,EAAA,CAAA,CAAA,QAAA,EAAA,IAAA,CAAA,OAAA,KAAA,CAAA,CAAA,QAAA,CAAA;AAEA,MAAA;AACD,MAAA,EAAA,CAAA,KAAA,EAAA;AAEO,QAAA,OAAoB,IAAA,CAA4B,GAAA,CAAA,KAAA,CAAA,CAAA,IAAA,EAAA;AACtD,MAAA;;;;;;AACD,MAAA,oBAAA,CAAAmE,oBAAAA,EAAA;AAOO,QAAA,MAAA,KAAA,GAAA,KAAqB,KAAA,EAAA;AAC3B,QAAA,KAAA,CAAM,mBAAA,GAAmBA,oBAAAA;AACzB,QAAA,OAAM,KAAA;AACN,MAAA;MACD,oBAAA,GAAA;AAEO,QAAA,OAAA,QAAA,CAAA,KAAuB,mBAAA,CAAA;AAC7B,MAAA;AACD,MAAA,IAAA,oBAAA,GAAA;AAEA,QAAA,OAAc,QAAA,CAAA,IAAA,CAAA,mBAAgC,CAAA,IAAA,0BAAA,EAAA;AAC7C,MAAA;MACD,KAAA,GAAA;AAEU,QAAA,MAAc,KAAA,GAAA,OAAA,CAAA,SAAA,CAAA,IAAA,CAAA,WAAA,EAAA,CAAA,IAAA,CAAA,gBAAA,EAAA,IAAA,CAAA,WAAA,CAAA,CAAA;AACvB,QAAA,KAAA,CAAM,sBAAsB,IAAA,CAAU,mBAAA;AACtC,QAAA,OAAM,KAAA;AACN,MAAA;MACD,aAAA,CAAA,UAAA,EAAA,gBAAA,GAAA,IAAA,CAAA,gBAAA,EAAA;AAIU,QAAA,MAAA,KAAA,GAAc,KAAA,KAAA,EAA4B;AACnD,QAAA,KAAA,CAAM,gBAAA,GAAmB,gBAAA;AACzB,QAAA,KAAA,CAAM,WAAA,GAAA,KAAA,CAAmB,WAAA,CAAA,MAAA,CAAA,UAAA,CAAA;AACzB,QAAA,OAAM,KAAA;AACN,MAAA;AAAO,KAAA;AAET,IAAA,MAAA,CAAA,gBAAA,eAAA,CAAA;AAlJuC,IAAA,aAAA,GAAA,cAAA;ACVtC,IAAA,MAAA,CAAI,UAAM,UAAS,CAAA;;ACApB,IAAA,MAAA,CAAA,iBAAA,iBAAA,CAAA;AAMA,IAAA,MAAA,CAAA,aAAA,aAAA,CAAA;AAMA,IAAA,MAAA,CAAA,oBAAA,oBAAA,CAAA;AAMA,IAAA,MAAA,CAAA,OAAA,OAAA,CAAA;AAMA,IAAA,MAAA,CAAA,UAAA,UAAA,CAAA;ACDQ,IAAA,MAAA,CACN,uBAAgB,uBAAA,CAAA;AART,IAAA,MAAA,CAAA,qBAAA,qBAAA,CAAA;AAgBO,IAAA,MAAA,CAAA,4BAAA,4BAAA,CAAA;AAKA,IAAA,MAAA,CAAA,wBAAA,wBAAA,CAAA;AAKA,IAAA,MAAA,CAAA,+BAAA,+BAAA,CAAA;AAKA,IAAA,MAAA,CAAA,kBAAA,kBAAA,CAAA;AAKA,IAAA,MAAA,CAAA,qBAAA,qBAAA,CAAA;AAYR,IAAA,MAAA,CACN,kBAAgB,kBAAA,CAAA;AAcL,IAAA,MAAA,CAAA,2BACH,2BAAwB,CAAA;AAYrB,IAAA,MAAA,CAAA,2BACH,2BAAwB,CAAA;AAgB3B,IAAA,MAAA,CAAA,aACD,aAAA,CAAA;AAEJ,IACD,sBAAA,GAAA,MAAAC,uBAAAA,SAAA,SAAA,CAAA;AACD,MAAA,WAAA,CAAA,QAAA,gBAAA,EAAA;AAfgB,QAAA,KAAA,CAAA,gBAAA,EAAA,WAAA,6BAAA,CAAA;;;MuBnGT,CAAA,4BAAA,CAAA,CAAA,KAAA,EAAMpE,QAAAA,EAAA;AAGL,QAAA,IAAA,QAAY,CAAA,EAAA;AAClB,UAAA,OAAMA,QAAAA,CAAA,OAAA,CAAkB,yBAAA,EAAW,SAAA,CAAA;AAEnC,QAAA;AACD,QAAA,MAAA,UAAA,GAAA,EAAA,GAAAA,QAAAA,EAAA,KAAA,EAAAA,QAAAA,CAAA,KAAA,KAAA,IAAA,GAAA,IAAA,GAAAA,QAAAA,CAAA,KAAA,GAAA,CAAA,EAAA,SAAA,IAAA,EAAA;AAEW,QAAA,MAAA,OAAA,GAAA;IACVA,QAAAA,CAAI,OAAA,CAAW,GAAA,EAAA,WAAA,CAAA,CAAA,CAAA,CAAA;AACd,QAAA,MAAA,SAAO,CAAA,EAAQA,QAAAA,CAAQ,OAAA,CAAA,uBAAA,EAA2B,SAAS,CAAA,CAAA,EAAA,EAAAA,QAAAA,CAAA,OAAA,CAAA,KAAA,MAAA,CAAA,MAAA,CAAA,QAAA,EAAA,EAAA,QAAA,CAAA,CAAA,CAAA,CAAA;AAC5D,QAAA,MAAA,OAAA,GAAAA,QAAAA,CAAA,OAAA,CAAA,IAAA,CAAA,SAAA,QAAA,CAAA;AAEA,QAAA,MAAM,MAAA,GAAA,KAAa,MAAA,CAAK,GAAA,CAAA,CAAA,CAAS,GAAA,EAAA,KAAO,CAAA,KAAQ;AAEhD,UAAA,MAAM,QAAA,GAAUoE,uBAAAA,CAAA,cAAA,CAAA,GAAA,EAAApE,QAAA,CAAA;AAAO,UAAA,MAAQ,IAAA,GAAA,KAAA,CAAa,4BAAY,CAAA,CAAA,KAAA,GAAA,GAAA,UAAA,CAAA,CAAA,OAAA,CAAA,KAAA,EAAA,OAAA,CAAA;AAExD,UAAA,OAAM,CAAA,OAAA,EAAY,QAAQ,CAAA,EAAA,OAAQ,GAAA,IAAA,CAAA,CAAA;QAClC,CAAA,CAAA,CAAA,KAAM,MAAA,CAAA;AACN,QAAA,OAAM,GAAA,MAAS;IAEb,OAAA;;EAGA,MAAA,CAAA,CAAA;AAA0C,MAAA;MAG5C,OAAA,cAAA,CAAgB,KAAAA,QAAAA,EAAA;AAAO,QAAA,IAAA,OAAO,GAAA,KAAA,QAAA;AAAA,UAAA,OAAAA,QAAAA,CAAA,OAAA,CAAA,CAAA,CAAA,EAAA,GAAA,IAAA,QAAA,CAAA;AAAO,QAAA,IAAM,OAAA,GAAA,KAAA,QAAA;AAC5C,UAAA,OAAA,IAAAA,QAAAA,CAAA,OAAA,CAAA,IAAA,QAAA,EAAA,EAAA,QAAA,CAAA,CAAA,CAAA,CAAA;AAEA,QAAA,OAAe,CAAA,CAAA,EAAAA,SAAA,OAAA,CAAiC,QAAA,EAAyC,QAAA,CAAA,CAAA,CAAA,EAAA,IAAA,WAAA,CAAA,EAAA,CAAA;AACxF,MAAA;AAA6B,KAAA;AAC7B,IAAA,MAAA,CAAA,wBAAmB,uBAAA,CAAA;AAAU,IAAA,qBAAA,GAAmB,sBAAA;AAGlD,IAAA,gBAAA,GAAA,MAAAqE,iBAAAA,SAAA,SAAA,CAAA;MApCqD,WAAA,CAAA,SAAA,EAAA,SAAA,KAAA,EAAA;AAAxC,QAAA,KAAA,CAAA,OAAA,CAAA;;;ACAN,MAAA;MAIC,MAAA,GAAA;AACN,QAAA,OAAM;AAEN,UAAA,IAAA,EAAK,IAAA,CAAA,IAAA;UACL,OAAA,EAAK,oCAAA;AACN,UAAA,SAAA,EAAA,IAAA,CAAA,SAAA;AAEgB,UAAA,KAAA,EAAmC,IAAA,CAAA;AAClD,SAAA;AAAO,MAAA;MACK,CAAA,4BACF,CAAA,CAAA,KAAA,EAAArE,QAAAA,EAAA;AAAA,QAAA,MACT,SAAA,GAAgBA,QAAAA,CAAA,OAAA,CAAA,IAAA,CAAA,WAAA,QAAA,CAAA;AAAA,QAAA,IAChB,QAAO,CAAA,EAAK;AACb,UAAA,OAAAA,QAAAA,CAAA,OAAA,CAAA,CAAA,kBAAA,EAAA,SAAA,KAAA,SAAA,CAAA;AACD,QAAA;AAEW,QAAA,MAAA,UAAA,GAAA,EAAA,GAAAA,QAAAA,EAA8B,KAAA,EAAeA,QAAAA,CAAyC,KAAA,KAAA,IAAA,GAAA,IAAA,GAAAA,QAAAA,CAAA,KAAA,GAAA,CAAA,EAAA,SAAA,IAAA,EAAA;AAChG,QAAA,MAAM,OAAA,GAAA;IACNA,QAAAA,CAAI,OAAA,CAAW,GAAA,EAAA,WAAA,CAAA,CAAA,CAAA,CAAA;AACd,QAAA,MAAA,KAAA,GAAO,SAAQ,IAAA,CAAQ,KAAA,EAAA,UAAA,CAAA,CAAqB,OAAA,CAAS,OAAK,OAAS,CAAA;AACpE,QAAA,MAAA,MAAA,GAAA,GAAAA,QAAAA,CAAA,OAAA,CAAA,mBAAA,SAAA,CAAA,MAAA,SAAA,CAAA,CAAA;AAEA,QAAA,MAAM,OAAA,GAAAA,QAAAA,CAAkB,OAAA,CAAA,IAAA,CAAS,SAAO,QAAQ,CAAA;AAEhD,QAAA,MAAM,UAAA,GAAU;AAAOA,EAAAA,EAAAA,QAAAA,CAAQ,QAAQ,WAAA,EAAK,QAAY,CAAA,CAAA,EAAA,OAAA,GAAA,KAAA,CAAA,CAAA;AACxD,QAAA,OAAM,GAAA,MAAQiE;IAEd,OAAM;EACN,UAAM,CAAA,CAAA;AACN,MAAA;AAAmB,KAAA;AACnB,IAAA,MAAA,CAAA,kBAAgB,iBAAA,CAAA;AAAA,IAAO,eAAA,GAAO,gBAAA;AAEhC,IAAA,eAAA,GAAA,MAAAK,gBAAAA,SAAA,aAAA,CAAA;AApC+C,MAAA,WAAA,CAAA,WAAA,gBAAA,GAAA,EAAA,EAAA,WAAA,GAAA,EAAA,EAAA;AAAlC,QAAA,KAAA,CAAA,kBAAN,WAAA,CAAA;;;MvBgBA,cAAA,CAAM,MAAA,EAANtE,QAAAA,GAAM,IAAA,CAAA,gBAAA,EAA2D;AAGhE,QAAA,OAAA,IAAA,CAAY,aAAA,CAA6B,mBAAA,CAAyC,MAAA,EAAAA,QAA0C,CAAG,CAAA;AACrI,MAAA;MACA,qBAAA,CAAiB,MAAA,EAAAA,QAAAA,GAAA,IAAA,CAAA,gBAAA,EAAA;AAClB,QAAA,OAAA,IAAA,CAAA,aAAA,CAAA,0BAAA,CAAA,MAAA,EAAAA,QAAA,CAAA,CAAA;AAEO,MAAA;MAIN,iBAAA,CAAY,MAAA,EAAAA,QAAAA,GAAc,IAAA,CAAA,gBAAA,EAA4B;AACvD,QAAA,OAAA,IAAA,CAAA,aAAA,CAAA,sBAAA,CAAA,MAAA,EAAAA,QAAA,CAAA,CAAA;AAEO,MAAA;MAIN,wBAAA,CAAY,MAAA,EAAcA,QAAAA,GAAA,IAAA,CAAA,gBAAA,EAAmC;AAC9D,QAAA,OAAA,IAAA,CAAA,aAAA,CAAA,6BAAA,CAAA,MAAA,EAAAA,QAAA,CAAA,CAAA;AAEO,MAAA;MAIN,WAAA,CAAO,MAAA,EAAKA,QAAAA,GAAc,IAAA,CAAA,gBAAA,EAAuB;AAClD,QAAA,OAAA,IAAA,CAAA,aAAA,CAAA,gBAAA,CAAA,MAAA,EAAAA,QAAA,CAAA,CAAA;AAEO,MAAA;MAIN,cAAA,CAAY,MAAA,EAAAA,QAAAA,GAAc,IAAA,CAAA,gBAAA,EAAA;AAC3B,QAAA,OAAA,IAAA,CAAA,aAAA,CAAA,mBAAA,CAAA,MAAA,EAAAA,QAAA,CAAA,CAAA;AAEO,MAAA;AACN,MAAA,WAAA,CAAO,KAAA,EAAK,SAAA,EAAcA,QAAAA,GAAA,IAAA,CAAiB,gBAAA,EAAkC;AAC9E,QAAA,OAAA,KAAA,aAAA,CAAA,gBAAA,CAAA,KAAA,EAAA,SAAA,EAAAA,QAAA,CAAA,CAAA;AAEO,MAAA;AACN,MAAA,oBAAA,CAAY,OAAA,EAAc,KAAA,EAAAA,QAAAA,GAAA,IAAA,CAAoB,gBAAA,EAAkC;AACjF,QAAA,OAAA,KAAA,aAAA,CAAA,yBAAA,CAAA,OAAA,EAAA,KAAA,EAAAA,QAAA,CAAA,CAAA;AAEO,MAAA;AAKN,MAAA,oBAAA,CAAY,UAAA,EAAc,SAAA,EAAAA,QAAAA,GAAwB,IAAA,CAAA,gBAAA,EAAqC;AACxF,QAAA,OAAA,KAAA,aAAA,CAAA,yBAAA,CAAA,UAAA,EAAA,SAAA,EAAAA,QAAA,CAAA,CAAA;AAEO,MAAA;MAKN,MAAA,CAAAA,QAAAA,GAAY,KAAA,gBAAA,EAAc;AAC3B,QAAA,OAAA,IAAA,CAAA,aAAA,CAAA,WAAA,CAAAA,QAAA,CAAA,CAAA;AAEO,MAAA;MAKN,KAAA,GAAA;AACD,QAAA,OAAA,OAAA,CAAA,SAAA,CAAA,IAAA,CAAA,WAAA,EAAA,CAAA,IAAA,CAAA,SAAA,EAAA,IAAA,CAAA,gBAAA,EAAA,IAAA,CAAA,WAAA,CAAA,CAAA;AAEO,MAAA;AACN,MAAA,MAAA,CAAA,MAAA,EAAY;AACb,QAAA,IAAA,CAAA,KAAA,CAAA,OAAA,CAAA,MAAA,CAAA,EAAA;AAEmB,UAAA,OAAc,MAAA,CAAA,GAAA,CAAA,IAAA,eAAA,CAAA,YAAA,EAAA,KAAA,gBAAA,CAAA,OAAA,IAAA,mBAAA,EAAA,MAAA,CAAA,CAAA;AAChC,QAAA;AACD,QAAA,IAAA,CAAA,KAAA,oBAAA,EAAA;AAEU,UAAA,OAAO,MAAA,CAAqE,GAAA,MAAA,CAAA;AACrF,QAAA;AACC,QAAA,MAAA,SAAO,EAAO;AACf,QAAA,MAAA,cAAA,EAAA;AAEA,QAAA,KAAA,IAAK,EAAA,GAAK,CAAA,EAAA,EAAA,GAAA,MAAA,CAAA,QAAsB,EAAA,EAAA,EAAA;AAC/B,UAAA,MAAA,SAAc,IAAA,CAAG,SAAA,CAAW,GAAA,CAAA,MAAA,CAAA,EAAA,CAAA,CAAA;AAC7B,UAAA,IAAA,OAAA,IAAA,EAAA;AAEA,YAAA,WAAA,CAAuC,IAAA,CAAA,OAAA,KAAA,CAAA;;AAGvC,YAAA,MAAA,CAASkB,IAAAA,CAAI,CAAGA,EAAAA,EAAAA,MAAAA,CAAI,KAAO,CAAA,CAAA;AAC1B,QAAA;AACA,QAAA,OAAI,MAAA,CAAO,MAAA,KAAK,CAAA,GAAA,MAAA,CAAA,GAAA,WAAA,CAAA,GAAA,MAAA,CAAA,GAAA,CAAA,IAAA,qBAAA,CAAA,MAAA,EAAA,IAAA,CAAA,gBAAA,CAAA,CAAA;AAAG,MAAA;AAA6B,KAAA;AAC3C,IAAA,MAAA,CAAA,iBAAaA,gBAAiB,CAAA;AAAA,IACpC,cAAA,GAAA,eAAA;AC1FM,IAAA,MAAA,CACN,kBAAmB,kBAAA,CAAA;AARZ,IAAA,MAAA,CAAA,gBAAA,gBAAA,CAAA;AAgBO,IAAA,MAAA,CAAA,uBAAA,uBAAA,CAAA;AAKA,IAAA,MAAA,CAAA,mBAAA,mBAAA,CAAA;AAKA,IAAA,MAAA,CAAA,0BAAA,0BAAA,CAAA;AAKA,IAAA,MAAA,CAAA,aAAA,aAAA,CAAA;AAKA,IAAA,MAAA,CAAA,gBAAA,gBAAA,CAAA;AAYR,IAAA,MAAA,CACN,mBAAmB,mBAAA,CAAA;AAInB,IACD,gBAAA,GAAA,MAAAqD,iBAAAA,SAAA,aAAA,CAAA;MACD,QAAA,CAAA,MAAA,EAAAvE,QAAAA,GAAA,IAAA,CAAA,gBAAA,EAAA;AATgB,QAAA,OAAA,IAAA,CAAA,aAAA,CAAA,cAAA,CAAA,MAAA,EAAAA,QAAA,CAAA,CAAA;;;AC9CH,QAAA,OAAA,IAAA,CAAA,aAAA,CAAA,qBAAA,CAAA,MAAA,EAA0CA,QAAA,CAAiB,CAAA;AAChE,MAAA;MACN,WAAA,CAAO,MAAA,EAAKA,QAAAA,GAAc,IAAA,CAAA,gBAAA,EAAuB;AAClD,QAAA,OAAA,IAAA,CAAA,aAAA,CAAA,iBAAA,CAAA,MAAA,EAAAA,QAAA,CAAA,CAAA;AAEO,MAAA;MACN,kBAAA,CAAY,MAAA,EAAAA,QAAAA,GAAc,IAAA,CAAA,gBAAA,EAA8B;AACzD,QAAA,OAAA,IAAA,CAAA,aAAA,CAAA,wBAAA,CAAA,MAAA,EAAAA,QAAA,CAAA,CAAA;AAEO,MAAA;MACN,KAAA,CAAA,MAAA,EAAYA,QAAAA,GAAA,IAAA,CAAc,gBAAA,EAAkB;AAC7C,QAAA,OAAA,IAAA,CAAA,aAAA,CAAA,WAAA,CAAA,MAAA,EAAAA,QAAA,CAAA,CAAA;AAEO,MAAA;MACN,QAAA,CAAO,MAAA,EAAKA,QAAAA,GAAA,IAAA,CAAc,gBAAA,EAAA;AAC3B,QAAA,OAAA,IAAA,CAAA,aAAA,CAAA,cAAA,CAAA,MAAA,EAAAA,QAAA,CAAA,CAAA;AAEO,MAAA;MACN,QAAA,CAAOA,QAAAA,GAAK,KAAA,gBAAA,EAA0B;AACvC,QAAA,OAAA,IAAA,CAAA,kBAAA,CAAA,EAAA,EAAAA,QAAA,CAAA;AAEO,MAAA;MACN,QAAA,CAAOA,QAAAA,GAAK,KAAA,gBAAA,EAAc;AAC3B,QAAA,OAAA,IAAA,CAAA,QAAA,CAAA,EAAA,EAAAA,QAAA,CAAA;AAEO,MAAA;MACN,WAAA,CAAO,MAAA,EAAKA,QAAAA,GAAA,IAAA,CAAmB,gBAAA,EAAW;AAC3C,QAAA,OAAA,IAAA,CAAA,aAAA,CAAA,iBAAA,CAAA,MAAA,EAAAA,QAAA,CAAA,CAAA;AAEO,MAAA;MACN,GAAA,CAAAA,QAAAA,GAAY,KAAA,gBAAA,EAAoB;AACjC,QAAA,OAAA,IAAA,CAAA,UAAA,CAAA,KAAA,KAAA,QAAA,CAAA,GAAA,CAAA,KAAA,GAAA,KAAA,EAAAA,QAAA,CAAA;AAEO,MAAA;MACN,IAAA,CAAA,IAAA,EAAOA,QAAAA,GAAK,IAAA,CAAA,gBAAA,EAAc;AAC3B,QAAA,OAAA,IAAA,CAAA,UAAA,CAAA,KAAA,KAAA,OAAA,MAAA,CAAA,IAAA,EAAA,KAAA,CAAA,EAAAA,QAAA,CAAA;AAEO,MAAA;MACN,KAAA,CAAA,IAAA,EAAOA,QAAAA,GAAK,IAAA,CAAW,gBAAA,EAAmB;AAC3C,QAAA,OAAA,IAAA,CAAA,UAAA,CAAA,KAAA,KAAA,OAAA,OAAA,CAAA,IAAA,EAAA,KAAA,CAAA,EAAAA,QAAA,CAAA;AAEO,MAAA;AACN,MAAA,MAAA,CAAA,KAAA,EAAY;AACb,QAAA,OAAA,OAAA,KAAA,KAAA,QAAA,GAAA,MAAA,CAAA,EAAA,CAAA,KAAA,CAAA,GAAA,MAAA,CAAA,GAAA,CAAA,IAAA,gBAAA,YAAA,EAAA,IAAA,CAAA,iBAAA,OAAA,IAAA,6BAAA,EAAA,KAAA,CAAA,CAAA;AAEO,MAAA;AACN,KAAA;AAA0E,IAAA,MAAA,CAC3E,kBAAA,iBAAA,CAAA;AAAA,IAEU,eAAA,GAAmD,gBAAA;ACxDtD,IAAA,MAAA,CACN,aAAoB,aAAA,CAAA;AASd,IAAA,MAAA,CACN,cAAoB,cAAA,CAAA;AAIpB,IACD,iBAAA,GAAA,MAAAwE,kBAAAA,SAAA,aAAA,CAAA;MACD,IAAA,CAAAxE,QAAAA,GAAA,KAAA,gBAAA,EAAA;AARgB,QAAA,OAAA,IAAA,CAAA,aAAA,CAAA,WAAA,CAAAA,QAAA,CAAA,CAAA;;;ACVH,QAAA,OAAA,IAAA,CAAA,aAAA,CAAA,YAAA,CAAAA,QAAA,CAAA,CAAA;AACL,MAAA;MACN,KAAA,CAAA,KAAA,EAAOA,QAAAA,GAAK,IAAA,CAAc,gBAAA,EAAY;AACvC,QAAA,OAAA,QAAA,IAAA,CAAA,IAAA,CAAAA,QAAA,CAAA,GAAA,IAAA,CAAA,MAAAA,QAAA,CAAA;AAEO,MAAA;MACN,QAAA,CAAO,KAAA,EAAKA,QAAAA,GAAA,IAAA,CAAc,gBAAA,EAAuC;AAClE,QAAA,OAAA,QAAA,IAAA,CAAA,KAAA,CAAAA,QAAA,CAAA,GAAA,IAAA,CAAA,KAAAA,QAAA,CAAA;AAEO,MAAA;AACN,MAAA,MAAA,CAAA,KAAA,EAAQ;AACT,QAAA,OAAA,OAAA,KAAA,KAAA,SAAA,GAAA,MAAA,CAAA,EAAA,CAAA,KAAA,CAAA,GAAA,MAAA,CAAA,GAAA,CAAA,IAAA,gBAAA,aAAA,EAAA,IAAA,CAAA,iBAAA,OAAA,IAAA,8BAAA,EAAA,KAAA,CAAA,CAAA;AAEO,MAAA;AACN,KAAA;AAAuD,IAAA,MAAA,CACxD,mBAAA,kBAAA,CAAA;AAAA,IAEU,gBAAA,GAAmD,iBAAA;ACDtD,IAAA,MAAA,CACN,gBAAiB,gBAAA,CAAA;AARV,IAAA,MAAA,CAAA,cAAA,cAAA,CAAA;AAgBO,IAAA,MAAA,CAAA,qBAAA,qBAAA,CAAA;AAKA,IAAA,MAAA,CAAA,iBAAA,iBAAA,CAAA;AAKA,IAAA,MAAA,CAAA,wBAAA,wBAAA,CAAA;AAKA,IAAA,MAAA,CAAA,WAAA,WAAA,CAAA;AAKA,IAAA,MAAA,CAAA,cAAA,cAAA,CAAA;AAWR,IAAA,MAAA,CACN,aAAiB,aAAA,CAAA;AASX,IAAA,MAAA,CACN,WAAiB,WAAA,CAAA;AAIjB,IACD,cAAA,GAAA,MAAAyE,eAAAA,SAAA,aAAA,CAAA;MACD,QAAA,CAAA,IAAA,EAAAzE,QAAAA,GAAA,IAAA,CAAA,gBAAA,EAAA;AARgB,QAAA,OAAA,IAAA,CAAA,cAAA,YAAA,CAAA,IAAA,KAAA,IAAA,CAAA,EAAAA,QAAA,CAAA,CAAA;;;AmBzDH,QAAA,OAAA,IAAA,CAAA,cAAA,mBAAA,CAAsB,IAAA,KAAA,IAAA,CAAA,EAAoBA,QAAA,CAAA,CAAA;AAC/C,MAAA;MACN,WAAA,CAAO,IAAA,EAAKA,QAAAA,GAAc,IAAA,CAAA,gBAAA,EAAsB;AACjD,QAAA,OAAA,IAAA,CAAA,cAAA,eAAA,CAAA,IAAA,KAAA,IAAA,CAAA,EAAAA,QAAA,CAAA,CAAA;AAEO,MAAA;MACN,kBAAA,CAAY,IAAA,EAAAA,QAAAA,GAAc,IAAA,CAAA,gBAAA,EAA6B;AACxD,QAAA,OAAA,IAAA,CAAA,cAAA,sBAAA,CAAA,IAAA,KAAA,IAAA,CAAA,EAAAA,QAAA,CAAA,CAAA;AAEO,MAAA;MACN,KAAA,CAAA,IAAA,EAAOA,QAAAA,GAAK,IAAA,CAAA,gBAAA,EAA8B;AAC3C,QAAA,MAAA,QAAA,GAAA,IAAA,IAAA,CAAA,IAAA,CAAA;AAEO,QAAA,OAAA,MAAA,CAAA,KAAA,CAAmB,QAAA,CAA8B,OAAA,EAAiC,CAAA,GAAA,IAAA,CAAA,OAAA,CAAAA,QAAwB,IAAA,IAAA,CAAA,aAAA,CAAA,SAAA,CAAA,QAAA,EAAAA,QAAA,CAAA,CAAA;AAChH,MAAA;MACD,QAAA,CAAA,IAAA,EAAAA,QAAAA,GAAA,IAAA,CAAA,gBAAA,EAAA;AAEO,QAAA,MAAM,QAAA,GAA8B,IAA4B,IAAA,CAAK,IAAA,CAAA;AAC3E,QAAA,OAAM,MAAA,CAAA,KAAA,CAAW,QAAA,CAAS,OAAA,EAAI,CAAA,GAAA,IAAA,CAAA,KAAA,CAAAA,QAAA,IAAA,IAAA,CAAA,aAAA,CAAA,YAAA,CAAA,QAAA,EAAAA,QAAA,CAAA,CAAA;AAC9B,MAAA;MAGD,KAAA,CAAAA,QAAAA,GAAA,KAAA,gBAAA,EAAA;AAEO,QAAA,OAAS,IAAA,CAAA,aAAA,CAA0D,SAAA,CAAKA,QAAA,CAAA,CAAA;AAC9E,MAAA;MACA,OAAA,CAAAA,QAAAA,GAAc,KAAM,gBAAA,EAAkB;AAGvC,QAAA,OAAA,IAAA,CAAA,aAAA,CAAA,WAAA,CAAAA,QAAA,CAAA,CAAA;AAEO,MAAA;AACN,MAAA,MAAA,CAAA,KAAA,EAAY;AACb,QAAA,OAAA,iBAAA,IAAA,GAAA,MAAA,CAAA,EAAA,CAAA,KAAA,IAAA,MAAA,CAAA,GAAA,CAAA,IAAA,eAAA,CAAA,YAAA,IAAA,CAAA,gBAAA,CAAA,OAAA,IAAA,iBAAA,EAAA,KAAA,CAAA,CAAA;AAEO,MAAA;AACN,KAAA;AAA8C,IAAA,MAAA,CAC/C,gBAAA,eAAA,CAAA;AAAA,IAEU,aAAA,GAAsD,cAAA;AAKjE,IAAA,wBAAA,GAAA,MAAA0E,yBAAAA,SAAA,eAAA,CAAA;MA5CuD,WAAA,CAAA,SAAA,EAAA,OAAA,EAAA,KAAA,EAAA,QAAA,EAAA;AAA1C,QAAA,KAAA,CAAA,SAAA,EAAN,SAAA,KAAA,CAAA;;;MCVA,MAAA,GAAM;AAGL,QAAA,OAAA;AACN,UAAA,IAAA,EAAM,IAAA,CAAA,IAAA;AACN,UAAA,SAAA,EAAK,IAAA,CAAW,SAAA;AACjB,UAAA,KAAA,EAAA,IAAA,CAAA,KAAA;AAEgB,UAAA,QAAA,EAA8C,IAAA,CAAA,QAAA;AAC7D,UAAA,OAAA,EAAO,IAAA,CAAA;AAAA,SAAA;AACK,MAAA;MACK,CAAA,4BACJ,CAAA,CAAA,KAAA,EAAA1E,QAAAA,EAAA;AAAA,QAAA,MACZ,SAAA,GAAeA,QAAAA,CAAA,OAAA,CAAA,IAAA,CAAA,WAAA,QAAA,CAAA;AAAA,QAAA,IACf,QAAS,CAAA,EAAA;AACV,UAAA,OAAAA,QAAAA,CAAA,OAAA,CAAA,CAAA,0BAAA,EAAA,SAAA,KAAA,SAAA,CAAA;AACD,QAAA;AAEW,QAAA,MAAA,UAAA,GAAA,EAAA,GAAAA,QAAAA,EAA8B,KAAA,EAAeA,QAAAA,CAAyC,KAAA,KAAA,IAAA,GAAA,IAAA,GAAAA,QAAAA,CAAA,KAAA,GAAA,CAAA,EAAA;AAChG,QAAA,MAAM,OAAA,GAAA;IACNA,QAAAA,CAAI,OAAA,CAAW,GAAA,EAAA,WAAA,CAAA,CAAA,CAAA,CAAA;AACd,QAAA,MAAA,QAAA,GAAe,SAAQ,IAAA,CAAA,QAAA,EAAA,UAAA,CAAA,CAAA,OAAA,CAA6B,OAAc,OAAA,CAAA;AACnE,QAAA,MAAA,KAAA,GAAA,SAAA,IAAA,CAAA,KAAA,EAAA,UAAA,CAAA,CAAA,OAAA,CAAA,OAAA,OAAA,CAAA;AAEA,QAAA,MAAM,MAAA,GAAA,GAAAA,QAAAA,CAAkB,OAAA,CAAS,2BAAyB,SAAO,CAAA,MAAO,SAAQ,CAAA,CAAA;AAEhF,QAAA,MAAM,OAAA,GAAUA,QAAAA,CAAA,OAAA,CAAA,IAAA,CAAA,SAAA,QAAA,CAAA;AAAO,QAAA,MAAA,aAAA,GAAqB;AAC5CA,EAAAA,EAAAA,QAAAA,CAAM,QAAA,WAAA,EAAmB,QAAK,CAAA,CAAA,EAAU,OAAA,GAAU,QAAE,CAAA,CAAA;AACpD,QAAA,MAAM,UAAA,GAAQiE;AAEdjE,EAAAA,EAAAA,QAAAA,CAAM,QAAS,WAAA,EAAW,QAAQ,CAAA,CAAA,EAAA,OAAA,GAAA,KAAA,CAAA,CAAA;AAClC,QAAA,OAAM,GAAA,MAAU;IAChB,OAAM;EAAgB,aAAe;EACrC,UAAM,CAAA,CAAA;AAAa,MAAA;AACnB,KAAA;AAAgB,IAAA,MAAA,CAAO,0BAAO,yBAAA,CAAA;AAAA,IAAK,uBAAA,GAAa,wBAAA;AAElD,IAAA,kBAAA,GAAA,MAAA2E,mBAAAA,SAAA,aAAA,CAAA;AApCgE,MAAA,WAAA,CAAA,UAAA,gBAAA,GAAA,EAAA,EAAA,WAAA,GAAA,EAAA,EAAA;AAAnD,QAAA,KAAA,CAAA,kBAAA,WAAN,CAAA;;;ACCA,MAAA,MAAA,CAAM,KAAA,EAAA;AAGL,QAAA,OAAA,iBAAsC,IAAA,CAAA,QAAA,GAAsC,OAAG,EAAA,CAAA,KAAA,IAA0C,MAAA,CAAG,GAAA,CAAA,IAAA,uBAAA,CAAA,eAAA,EAAA,KAAA,gBAAA,CAAA,OAAA,IAAA,YAAA,KAAA,EAAA,IAAA,CAAA,QAAA,CAAA,CAAA;AAClI,MAAA;MACA,KAAA,GAAK;AACN,QAAA,OAAA,OAAA,CAAA,SAAA,CAAA,IAAA,CAAA,WAAA,EAAA,CAAA,IAAA,CAAA,QAAA,EAAA,IAAA,CAAA,gBAAA,EAAA,IAAA,CAAA,WAAA,CAAA,CAAA;AAEU,MAAA;AACT,KAAA;AAE6H,IAAA,MAAA,CAC9H,oBAAA,mBAAA,CAAA;AAAA,IAEmB,iBAAA,GAAc,kBAAA;AAGlC,IAAA,iBAAA,GAAA,MAAAC,kBAAAA,SAAA,aAAA,CAAA;AAjB2D,MAAA,WAAA,CAAA,SAAA,gBAAA,GAAA,EAAA,EAAA,WAAA,GAAA,EAAA,EAAA;AAA9C,QAAA,KAAA,CAAA,kBAAN,WAAA,CAAA;;;ACAA,MAAA,MAAA,CAAM,KAAA,EAAA;AAGL,QAAA,OAAA,MAAA,CAAY,EAAA,CAAA,KAAA,EAAY,IAAA,CAAA,QAAA,IAAsC,MAAA,CAAG,EAAA,CAAA,KAAyC,CAAA,GAAI,MAAA,CAAA,GAAA;UACpH,IAAM,uBAAA,CAAkB,gBAAW,IAAA,CAAA,gBAAA,CAAA,WAAA,8BAAA,EAAA,KAAA,EAAA,KAAA,QAAA;AACnC,SAAA;AACD,MAAA;MAEU,KAAA,GAAO;AAChB,QAAA,OAAO,OAAA,CAAO,SAAA,CAAU,IAAA,CAAK,WAAA,EAC1B,CAAA,IAAA,CAAO,QAAA,EAAa,IAAA,CACpB,gBAAA,EAAO,IAAA,CAAA,WAAA,CAAA,CAAA;AAAA,MAAA;AAC0H,KAAA;AAClI,IAAA,MAAA,CACH,mBAAA,kBAAA,CAAA;AAAA,IAEmB,gBAAA,GAAc,iBAAA;AAGlC,IAAA,eAAA,GAAA,MAAAC,gBAAAA,SAAA,aAAA,CAAA;AAnB0D,MAAA,MAAA,CAAA,KAAA,EAAA;AAA7C,QAAA,OAAA,MAAA,CAAA,GAAA,CAAA,IAAN,eAAA,CAAA,WAAA,EAAA,KAAA,gBAAA,CAAA,OAAA,IAAA,mCAAA,EAAA,KAAA,CAAA,CAAA;;;ACFA,IAAA,MAAA,CAAM,iBAAN,gBAAM,CAAA;AAA4C,IAC9C,cAAA,GAAuD,eAAA;AAGlE,IAAA,iBAAA,GAAA,MAAAC,kBAAAA,SAAA,aAAA,CAAA;AAJyD,MAAA,MAAA,CAAA,KAAA,EAAA;AAA5C,QAAA,OAAA,UAAN,MAAA,IAAA,KAAA,KAAA,OAAA,MAAA,CAAA,EAAA,CAAA,KAAA,CAAA,GAAA,MAAA,CAAA,GAAA,CAAA,IAAA,gBAAA,aAAA,EAAA,IAAA,CAAA,iBAAA,OAAA,IAAA,4BAAA,EAAA,KAAA,CAAA,CAAA;;;AtBAA,IAAA,MAAA,CAAM,mBAAN,kBAAM,CAAA;AAAyD,IAC3D,gBAAA,GAAkE,iBAAA;ACuBrE,IAAA,MAAA,CACN,kBAAmB,kBAAA,CAAA;AARZ,IAAA,MAAA,CAAA,gBAAA,gBAAA,CAAA;AAgBO,IAAA,MAAA,CAAA,uBAAA,uBAAA,CAAA;AAKA,IAAA,MAAA,CAAA,mBAAA,mBAAA,CAAA;AAKA,IAAA,MAAA,CAAA,0BAAA,0BAAA,CAAA;AAKA,IAAA,MAAA,CAAA,aAAA,aAAA,CAAA;AAKA,IAAA,MAAA,CAAA,gBAAA,gBAAA,CAAA;AAoBT,IAAA,MAAA,CAAA,WACD,WAAA,CAAA;AAgBC,IAAA,MAAA,CAAA,eACD,eAAA,CAAA;AAgBC,IAAA,MAAA,CAAA,cACD,cAAA,CAAA;AAWO,IAAA,MAAA,CAAA,WACH,WAAA,CAAA;AAUG,IAAA,MAAA,CAAA,cACH,cAAA,CAAA;AASF,IAAA,MAAA,CACN,mBAAmB,mBAAA,CAAA;AAInB,IACD,gBAAA,GAAA,MAAAC,iBAAAA,SAAA,aAAA,CAAA;MACD,QAAA,CAAA,MAAA,EAAA/E,QAAAA,GAAA,IAAA,CAAA,gBAAA,EAAA;AATgB,QAAA,OAAA,IAAA,CAAA,aAAA,CAAA,cAAA,CAAA,MAAA,EAAAA,QAAA,CAAA,CAAA;;;AsB1HH,QAAA,OAAA,IAAA,CAAA,aAAA,CAAA,qBAAA,CAAA,MAAA,EAA0CA,QAAA,CAAiB,CAAA;AAChE,MAAA;MACN,WAAA,CAAO,MAAA,EAAKA,QAAAA,GAAc,IAAA,CAAA,gBAAA,EAAuB;AAClD,QAAA,OAAA,IAAA,CAAA,aAAA,CAAA,iBAAA,CAAA,MAAA,EAAAA,QAAA,CAAA,CAAA;AAEO,MAAA;MACN,kBAAA,CAAY,MAAA,EAAAA,QAAAA,GAAc,IAAA,CAAA,gBAAA,EAA8B;AACzD,QAAA,OAAA,IAAA,CAAA,aAAA,CAAA,wBAAA,CAAA,MAAA,EAAAA,QAAA,CAAA,CAAA;AAEO,MAAA;MACN,KAAA,CAAA,MAAA,EAAYA,QAAAA,GAAA,IAAA,CAAc,gBAAA,EAAkB;AAC7C,QAAA,OAAA,MAAA,CAAA,KAAA,CAAA,MAAA,CAAA,GAAA,KAAA,aAAA,CAAA,SAAA,CAAAA,QAAA,CAAA,IAAA,IAAA,CAAA,aAAA,CAAA,WAAA,CAAA,MAAA,EAAAA,QAAA,CAAA,CAAA;AAEO,MAAA;MACN,QAAA,CAAO,MAAA,EAAKA,QAAAA,GAAA,IAAA,CAAc,gBAAA,EAAA;AAC3B,QAAA,OAAA,MAAA,CAAA,KAAA,CAAA,MAAA,CAAA,GAAA,KAAA,aAAA,CAAA,YAAA,CAAAA,QAAA,CAAA,IAAA,IAAA,CAAA,aAAA,CAAA,cAAA,CAAA,MAAA,EAAAA,QAAA,CAAA,CAAA;AAEO,MAAA;MACN,GAAA,CAAAA,QAAAA,GAAO,KAAO,gBAAA,EACL;AAEV,QAAA,OAAA,IAAA,CAAA,aAAA,CAAA,SAAA,CAAAA,QAAA,CAAA,CAAA;AAEO,MAAA;MACN,OAAA,CAAAA,QAAAA,GAAc,KAAM,gBAAA,EACZ;AAET,QAAA,OAAA,IAAA,CAAA,aAAA,CAAA,aAAA,CAAAA,QAAA,CAAA,CAAA;AAEO,MAAA;MACN,MAAA,CAAAA,QAAAA,GAAY,KAAA,gBAAA,EAAwB;AACrC,QAAA,OAAA,IAAA,CAAA,aAAA,CAAA,YAAA,CAAAA,QAAA,CAAA,CAAA;AAEO,MAAA;MACN,QAAA,CAAOA,QAAAA,GAAK,KAAA,gBAAA,EAA4B;AACzC,QAAA,OAAA,IAAA,CAAA,kBAAA,CAAA,CAAA,EAAAA,QAAA,CAAA;AAEO,MAAA;MACN,QAAA,CAAOA,QAAAA,GAAK,KAAA,gBAAA,EAA2B;AACxC,QAAA,OAAA,IAAA,CAAA,QAAA,CAAA,CAAA,EAAAA,QAAA,CAAA;AAEO,MAAA;MACN,WAAA,CAAO,OAAA,EAAKA,QAAAA,GAAA,IAAA,CAAsB,gBAAA,EAAO;AAC1C,QAAA,OAAA,IAAA,CAAA,aAAA,CAAA,iBAAA,CAAA,OAAA,EAAAA,QAAA,CAAA,CAAA;AAEO,MAAA;MACN,GAAA,CAAAA,QAAAA,GAAY,KAAA,gBAAA,EAAmB;AAChC,QAAA,OAAA,IAAA,CAAA,SAAA,CAAA,IAAA,CAAA,GAAA,EAAAA,QAAA,CAAA;AAEO,MAAA;MACN,IAAA,CAAAA,QAAAA,GAAY,KAAA,gBAAA,EAAc;AAC3B,QAAA,OAAA,IAAA,CAAA,SAAA,CAAA,IAAA,CAAA,IAAA,EAAAA,QAAA,CAAA;AAEO,MAAA;MACN,KAAA,CAAAA,QAAAA,GAAY,KAAA,gBAAA,EAA4C;AACzD,QAAA,OAAA,IAAA,CAAA,SAAA,CAAA,IAAA,CAAA,KAAA,EAAAA,QAAA,CAAA;AAEO,MAAA;MACN,KAAA,CAAAA,QAAAA,GAAY,KAAA,gBAAA,EAA6C;AAC1D,QAAA,OAAA,IAAA,CAAA,SAAA,CAAA,IAAA,CAAA,KAAA,EAAAA,QAAA,CAAA;AAEO,MAAA;MACN,MAAA,CAAAA,QAAAA,GAAY,KAAA,gBAAA,EAA8C;AAC3D,QAAA,OAAA,IAAA,CAAA,SAAA,CAAA,IAAA,CAAA,MAAA,EAAAA,QAAA,CAAA;AAEO,MAAA;MACN,KAAA,CAAAA,QAAAA,GAAY,KAAA,gBAAA,EAA8C;AAC3D,QAAA,OAAA,IAAA,CAAA,SAAA,CAAA,IAAA,CAAA,KAAA,EAAAA,QAAA,CAAA;AAEO,MAAA;MACN,IAAA,CAAAA,QAAAA,GAAY,KAAA,gBAAA,EAA+C;AAC5D,QAAA,OAAA,IAAA,CAAA,SAAA,CAAA,IAAA,CAAA,IAAA,EAAAA,QAAA,CAAA;AAEO,MAAA;AACN,MAAA,MAAA,CAAA,KAAA,EAAY;AACb,QAAA,OAAA,OAAA,KAAA,KAAA,QAAA,GAAA,MAAA,CAAA,EAAA,CAAA,KAAA,CAAA,GAAA,MAAA,CAAA,GAAA,CAAA,IAAA,gBAAA,YAAA,EAAA,IAAA,CAAA,iBAAA,OAAA,IAAA,6BAAA,EAAA,KAAA,CAAA,CAAA;AAEO,MAAA;AACN,KAAA;AAAgE,IAAA,MAAA,CACjE,kBAAA,iBAAA,CAAA;AAAA,IAEU,eAAA,GAAmD,gBAAA;AAK9D,IAAA,qBAAA,GAAA,MAAAgF,sBAAAA,SAAA,SAAA,CAAA;AAtFwE,MAAA,WAAA,CAAA,UAAA,gBAAA,EAAA;AAA3D,QAAA,KAAA,CAAA,gBAAA,EAAN,WAAA,gCAAA,CAAA;;;MCfA,MAAA,GAAM;AAGL,QAAA,OAAA;AACN,UAAA,IAAA,EAAM,IAAA,CAAA,IAAA;AACN,UAAA,OAAA,EAAK,IAAA,CAAW,OAAA;AACjB,UAAA,QAAA,EAAA,IAAA,CAAA;AAEgB,SAAA;AACf,MAAA;MAAO,CAAA,4BACK,CAAA,CAAA,KAAA,EAAAhF,QAAAA,EAAA;AAAA,QAAA,MACX,WAAcA,QAAAA,CAAA,OAAA,CAAA,KAAA,QAAA,CAAA,QAAA,IAAA,QAAA,CAAA;AAAA,QAAA,IACd,QAAU,CAAA,EAAA;AACX,UAAA,OAAAA,QAAAA,CAAA,OAAA,CAAA,CAAA,uBAAA,EAAA,QAAA,KAAA,SAAA,CAAA;AACD,QAAA;AAEW,QAAA,MAAA,MAAA,GAAA,GAAAA,QAAAA,CAAA,OAAA,CAA8B,wBAAwD,SAAA,CAAA,MAAA,QAAA,CAAA,CAAA;AAChG,QAAA,MAAM,OAAA,GAAAA,QAAAA,CAAW,OAAA,CAAQ,IAAA,CAAQ,SAAK,QAAS,CAAA;AAC/C,QAAA,OAAI,GAAA,MAAW;IACd,OAAA,CAAA,CAAA;AAAuE,MAAA;AAGxE,KAAA;AACA,IAAA,MAAA,CAAA,uBAAwB,sBAAsB,CAAA;AAC9C,IAAA,oBAAA,GAAgB,qBAAA;AAElB,IAAA,qBAAA,GAAA,MAAAiF,sBAAAA,SAAA,SAAA,CAAA;MA1BoD,WAAA,CAAA,QAAA,EAAA,OAAAjF,QAAAA,EAAA;AAAvC,QAAA,KAAA,CAAAA,QAAAA,EAAA,WAAN,8BAAA,CAAA;;;ACAA,MAAA;MAIC,MAAA,GAAA;AACN,QAAA,OAAM;AAEN,UAAA,IAAA,EAAK,IAAA,CAAA,IAAA;AACL,UAAA,OAAA,EAAK,IAAA,CAAQ,OAAA;AACd,UAAA,QAAA,EAAA,IAAA,CAAA,QAAA;AAEgB,UAAA,KAAA,EAAuC,IAAA,CAAA;AACtD,SAAA;AAAO,MAAA;MACK,CAAA,4BACG,CAAA,CAAA,KAAA,EAAAA,QAAAA,EAAA;AAAA,QAAA,MACd,WAAeA,QAAAA,CAAA,OAAA,CAAA,KAAA,QAAA,CAAA,QAAA,IAAA,QAAA,CAAA;AAAA,QAAA,IACf,QAAO,CAAA,EAAK;AACb,UAAA,OAAAA,QAAAA,CAAA,OAAA,CAAA,CAAA,uBAAA,EAAA,QAAA,KAAA,SAAA,CAAA;AACD,QAAA;AAEW,QAAA,MAAA,UAAA,GAAA,EAAA,GAAAA,QAAAA,EAA8B,KAAA,EAAeA,QAAAA,CAAyC,KAAA,KAAA,IAAA,GAAA,IAAA,GAAAA,QAAAA,CAAA,KAAA,GAAA,CAAA,EAAA,SAAA,IAAA,EAAA;AAChG,QAAA,MAAM,OAAA,GAAA;IACNA,QAAAA,CAAI,OAAA,CAAW,GAAA,EAAA,WAAA,CAAA,CAAA,CAAA,CAAA;AACd,QAAA,MAAA,KAAA,GAAO,SAAQ,IAAA,CAAQ,KAAA,EAAA,UAAA,CAAA,CAAA,OAAA,CAA0B,OAAQ,OAAK,CAAA;AAC/D,QAAA,MAAA,MAAA,GAAA,GAAAA,QAAAA,CAAA,OAAA,CAAA,wBAAA,SAAA,CAAA,MAAA,QAAA,CAAA,CAAA;AAEA,QAAA,MAAM,OAAA,GAAAA,QAAAA,CAAkB,OAAA,CAAA,IAAA,CAAS,SAAO,QAAQ,CAAA;AAEhD,QAAA,MAAM,UAAA,GAAU;AAAOA,EAAAA,EAAAA,QAAAA,CAAQ,QAAQ,WAAA,EAAK,QAAY,CAAA,CAAA,EAAA,OAAA,GAAA,KAAA,CAAA,CAAA;AACxD,QAAA,OAAM,GAAA,MAAQiE;IAEd,OAAM;EACN,UAAM,CAAA,CAAA;AACN,MAAA;AAAmB,KAAA;AACnB,IAAA,MAAA,CAAA,uBAAgB,sBAAA,CAAA;AAAA,IAAO,oBAAA,GAAO,qBAAA;AAEhC,IAAA,iBAAA,GAAA,MAAAiB,kBAAAA,SAAA,aAAA,CAAA;AApCoD,MAAA,WAAA,CAAA,WAAA,KAAA,EAAA,gBAAA,GAAA,EAAA,EAAA,WAAA,GAAA,EAAA,EAAA;AAAvC,QAAA,KAAA,CAAA,kBAAN,WAAA,CAAA;;;ACEA,MAAA;MAIC,OAAA,CAAA,KAAA,EACNlF,QAAAA,GACA,IAAA,CACA,gBAAA,EAAA;AAGA,QAAA,MAAM,KAAA,GAAA,KAAA,KAAA,EAAkB;AACxB,QAAA,KAAA,CAAK,gBAAA,GAAYA,QAAAA;AACjB,QAAA,KAAA,CAAK,YAAA,GAAe,KAAA;AACrB,QAAA,OAAA,KAAA;AAEgB,MAAA;AAIf,MAAA,MAAA,CAAA,KAAA,EAAM;AACN,QAAA,OAAM,OAAA,KAAA,KAAA,WAAA,GAAmB,MAAA,CAAA,GAAA,QAAA,CAAA,IAAA,CAAA,YAAA,CAAA,CAAA,GAAA,IAAA,CAAA,SAAA,CAAA,QAAA,EAAA,KAAA,CAAA;AACzB,MAAA;MACA,KAAA,GAAA;AACD,QAAA,OAAA,OAAA,CAAA,SAAA,CAAA,IAAA,CAAA,WAAA,EAAA,CAAA,IAAA,CAAA,SAAA,EAAA,IAAA,CAAA,YAAA,EAAA,IAAA,CAAA,gBAAA,EAAA,IAAA,CAAA,WAAA,CAAA,CAAA;AAEU,MAAA;AACT,KAAA;AAEiC,IAAA,MAAA,CAClC,mBAAA,kBAAA,CAAA;AAAA,IAEmB,gBAAA,GAAc,iBAAA;AAGlC,IAAA,cAAA,GAAA,MAAAmF,eAAAA,SAAA,SAAA,CAAA;AAlC0D,MAAA,WAAA,CAAA,QAAA,gBAAA,EAAA;AAA7C,QAAA,KAAA,CAAA,gBAAA,EAAN,WAAA,6BAAA,CAAA;;;MCHA,CAAA,4BAAM,CAAA,CAAA,KAAA,EAAAnF,QAAAA,EAAA;AAGL,QAAA,IAAA,QAAY,CAAA,EAAA;AAClB,UAAA,OAAMA,QAAAA,CAAA,OAAA,CAAkB,iBAAA,EAAW,SAAA,CAAA;AAEnC,QAAA;AACD,QAAA,MAAA,UAAA,GAAA,EAAA,GAAAA,QAAAA,EAAA,KAAA,EAAAA,QAAAA,CAAA,KAAA,KAAA,IAAA,GAAA,IAAA,GAAAA,QAAAA,CAAA,KAAA,GAAA,CAAA,EAAA,SAAA,IAAA,EAAA;AAEW,QAAA,MAAA,OAAA,GAAA;IACVA,QAAAA,CAAI,OAAA,CAAW,GAAA,EAAA,WAAA,CAAA,CAAA,CAAA,CAAA;AACd,QAAA,MAAA,SAAO,CAAA,EAAQA,QAAAA,CAAQ,OAAA,CAAA,eAAA,EAAmB,SAAS,CAAA,CAAA,EAAA,EAAAA,QAAAA,CAAA,OAAA,CAAA,KAAA,MAAA,CAAA,MAAA,CAAA,QAAA,EAAA,EAAA,QAAA,CAAA,CAAA,CAAA,CAAA;AACpD,QAAA,MAAA,OAAA,GAAAA,QAAAA,CAAA,OAAA,CAAA,IAAA,CAAA,SAAA,QAAA,CAAA;AAEA,QAAA,MAAM,SAAA,IAAA,CAAa,MAAA,CAAK,GAAA,CAAA,CAAA,OAAS,EAAA,KAAO;AAExC,UAAA,MAAM,QAAUA,QAAAA,CAAA,OAAA,CAAA,CAAA,KAAA,CAAA,EAAA,QAAA,IAAA,QAAA,CAAA;AAAO,UAAA,MAAQ,IAAA,GAAA,KAAA,CAAa,4BAAY,CAAA,CAAA,KAAA,GAAA,GAAA,UAAA,CAAA,CAAA,OAAA,CAAA,KAAA,EAAA,OAAA,CAAA;AAExD,UAAA,OAAM,CAAA,EAAA,EAAA,KAAY,CAAA,CAAA,EAAA,IAAQ,CAAA,CAAA;QAC1B,CAAA,CAAA,CAAA,KAAM,MAAA,CAAA;AACN,QAAA,OAAM,GAAA,MAAS;IAEb,OAAA;;EAGA,MAAA,CAAA,CAAA;AAAyB,MAAA;AAG3B,KAAA;AAAgB,IAAA,MAAA,CAAO,gBAAO,eAAA,CAAA;AAAA,IAAA,aAAA,GAAA,cAAA;AAEhC,IAAA,eAAA,GAAA,MAAAoF,gBAAAA,SAAA,aAAA,CAAA;AA9B6C,MAAA,WAAA,CAAA,UAAA,EAAA,gBAAA,EAAA,WAAA,GAAA,EAAA,EAAA;AAAhC,QAAA,KAAA,CAAA,kBAAN,WAAA,CAAA;;;MCIA,QAAA,CAAMpF,QAAAA,GAAA,KAAN,gBAAA,EAAM;AAGL,QAAA,IAAA,IAAA,CAAA,WAAY,MAAA,KAAyC,CAAA;AAC3D,UAAA,OAAM,IAAAoF,gBAAAA,CAAkB,CAAA,IAAA,gBAAA,CAAW,MAAA,EAAApF,QAAA,CAAA,CAAA,EAAA,IAAA,CAAA,gBAAA,EAAA,IAAA,CAAA,WAAA,CAAA;AACnC,QAAA,MAAK,CAAA,SAAA,CAAA,GAAa,IAAA,CAAA,UAAA;AACnB,QAAA,IAAA,qBAAA,gBAAA,EAAA;AAEgB,UAAA,IAAA,UAAS,QAAA,KAAiC,MAAA;AACrD,YAAA,OAAK,KAAA,KAAA,EAAW;AACnB,UAAA,IAAA,SAAA,CAAW,aAA8B,IAAA,EAAK;AAE/C,YAAA,OAAO,IAAAoF,gBAAAA;cACH,CAAA,IAAA,iBAAqBpF,QAAA,CAAA,EAAA,GAAA,IAAA,CAAkB,UAAA,CAAA,KAAA,CAAA,CAAA,CAAA,CAAA;cAEtC,IAAA,CAAA,gBAAA;cAAkC,IAAA,CAAO;AAG7C,aAAA;AACC,UAAA;AAAW,QAAA,CAAA,MAAA,IACL,qBAAiB,gBAAA,EAAkB;AAAmB,UAAA,OAC3D,KAAK,KAAA,EAAA;AAAA,QAAA;AACA,QAAA,OACN,IAAAoF,gBAAAA,CAAA,CAAA,IAAA,gBAAA,CAAA,MAAA,EAAApF,QAAA,CAAA,EAAA,GAAA,IAAA,CAAA,UAAA,CAAA,EAAA,KAAA,gBAAA,CAAA;AAAA,MAAA;MACD,QAAA,CACDA,QAAAA,GAAW,KAAA,gBAAA,EAAqB;AAE/B,QAAA,IAAA,IAAA,CAAO,WAAW,MAAA,KAAA,CAAA;AACnB,UAAA,OAAA,KAAA,KAAA,EAAA;AAEA,QAAA,MAAA,CAAO,SAAI,CAAA,GAAA,IAAA,CAAA,UAAA;AACZ,QAAA,IAAA,qBAAA,gBAAA,EAAA;AAEO,UAAA,IAAA,SAAA,CAAS,aAAiC,MAAA,EAAA;AAG5C,YAAA,OAAK,IAAAoF,gBAAAA,CAAsB,IAAA,CAAA,UAAA,CAAA,KAAA,CAAA,CAAA,CAAA,EAAA,IAAA,CAAA,gBAAA,EAAA,IAAA,CAAA,WAAA,CAAA;AAAG,UAAA;AAElC,QAAA,CAAA,MAAA,IAAO,qBAAkB,gBAAA,EAAA;AACzB,UAAA,OAAI,IAAAA,gBAAAA;YACH,CAAA,IAAI,gBAAA,CAAU,IAAA,EAAapF,QAAW,CAAA,EAAA,GAAA,IAAA,CAAA,UAAA,CAAA,KAAA,CAAA,CAAA,CAAA,CAAA;YACrC,IAAA,CAAA,gBAAA;YACD,IAAA,CAAA;AACD,WAAA;AACC,QAAA;AAAW,QAAA,OACT,KAAI,KAAA,EAAA;AAA4D,MAAA;MAC5D,QAAA,CACLA,QAAAA,GAAK,KAAA,gBAAA,EAAA;AAAA,QAAA,IACN,IAAA,CAAA,UAAA,CAAA,MAAA,KAAA,CAAA,EAAA;AACD,UAAA,OAAA,IAAAoF,gBAAAA,CAAA,CAAA,IAAA,gBAAA,CAAA,IAAA,EAAApF,QAAA,CAAA,CAAA,EAAA,IAAA,CAAA,gBAAA,EAAA,IAAA,CAAA,WAAA,CAAA;AAEA,QAAA;AACD,QAAA,MAAA,CAAA,SAAA,CAAA,GAAA,IAAA,CAAA,UAAA;AAEgB,QAAA,IAAA,qBAA0C,gBAAA,EAA4C;AACrG,UAAA,IAAI,UAAK,QAAA,KAAW,IAAA;AACnB,YAAA,OAAO,KAAI,KAAA,EAAA;AACZ,UAAA,IAAA,SAAA,CAAA,aAAA,MAAA,EAAA;AAEA,YAAA,OAAO,IAAAoF,gBAAAA;cACH,CAAA,IAAA,iBAAqBpF,QAAA,CAAA,EAAA,GAAA,IAAA,CAAkB,UAAA,CAAA,KAAA,CAAA,CAAA,CAAA,CAAA;cAEtC,IAAA,CAAA,gBAAA;cAA6B,IAAA,CAAO;AAGxC,aAAA;AACC,UAAA;AAAW,QAAA,CAAA,MAAA,IACL,qBAAiB,gBAAA,EAAkB;AAAmB,UAAA,OAC3D,KAAK,KAAA,EAAA;AAAA,QAAA;AACA,QAAA,OACN,IAAAoF,gBAAAA,CAAA,CAAA,IAAA,gBAAA,CAAA,IAAA,EAAApF,QAAA,CAAA,EAAA,GAAA,IAAA,CAAA,UAAA,CAAA,EAAA,KAAA,gBAAA,CAAA;AAAA,MAAA;MACD,OAAA,CACDA,QAAAA,GAAW,KAAA,gBAAA,EAAqB;AAE/B,QAAA,IAAA,IAAA,CAAO,UAAA,CAAW,MAAA,KAAA,CAAA,EAAA;AACnB,UAAA,OAAA,IAAAoF,gBAAAA,CAAA,CAAA,IAAA,gBAAA,CAAApF,QAAA,CAAA,CAAA,EAAAA,QAAAA,EAAA,IAAA,CAAA,WAAA,CAAA;AAEA,QAAA;AACD,QAAA,MAAA,CAAA,SAAA,CAAA,GAAA,IAAA,CAAA,UAAA;AAEgB,QAAA,IAAA,qBAAyC,gBAAA,EAAwD;AAChH,UAAA,IAAI,SAAA,CAAK,QAAA,KAAW,IAAA,IAAc,SAAA,CAAA,aAAA,MAAA,EAAA;AACjC,YAAA,OAAO,IAAIoF,gBAAAA;cACZ,CAAA,IAAA,iBAAApF,QAAA,CAAA,EAAA,GAAA,IAAA,CAAA,UAAA,CAAA,KAAA,CAAA,CAAA,CAAA,CAAA;AAEMA,cAAAA,QAAAA;cACF,IAAA,CAAA;AAEH,aAAA;AACC,UAAA;AAAW,QAAA,CAAA,MAAA,IACL,qBAAiB,gBAAA,EAAkB;AAAmB,UAAA,OAC3D,KAAA,KAAA,EAAA;AAAA,QAAA;AACK,QAAA,OACN,IAAAoF,gBAAAA,CAAA,CAAA,IAAA,gBAAA,CAAApF,QAAA,CAAA,EAAA,GAAA,IAAA,CAAA,UAAA,CAAA,EAAAA,QAAA,CAAA;AAAA,MAAA;AACD,MAAA,EAAA,CAAA,GACD,UAAA,EAAW;AAEV,QAAA,OAAA,IAAOoF,gBAAAA,CAAW,CAAA,GAAA,IAAA,CAAA,YAAA,GAAA,UAAA,CAAA,EAAA,IAAA,CAAA,gBAAA,CAAA;AAAA,MAAA;MAGnB,KAAA,GAAA;AACD,QAAA,OAAA,OAAA,CAAA,SAAA,CAAA,IAAA,CAAA,WAAA,EAAA,CAAA,IAAA,CAAA,UAAA,EAAA,IAAA,CAAA,gBAAA,EAAA,IAAA,CAAA,WAAA,CAAA,CAAA;AAEgB,MAAA;AACf,MAAA,MAAA,CAAA,KAAA,EAAW;AACZ,QAAA,MAAA,SAAA,EAAA;AAEmB,QAAA,KAAA,MAAc,SAAA,IAAA,KAAA,UAAA,EAAA;AAChC,UAAA,MAAO,MAAA,GAAQ,SAAA,CAAU,GAAA,CAAK,KAAA,CAAA;AAC/B,UAAA,IAAA,OAAA,IAAA,EAAA;AAEU,YAAA,OAAO,MAAA;AAChB,UAAA,MAAA,CAAM,IAAA,CAAA,OAAuB,KAAA,CAAA;AAE7B,QAAA;AACC,QAAA,OAAA,OAAM,GAAA,CAAS,IAAA,cAAmB,MAAA,EAAA,IAAA,CAAA,gBAAA,CAAA,CAAA;AAClC,MAAA;AAAmB,KAAA;AACnB,IAAA,MAAA,CAAA,iBAAY,gBAAa,CAAA;AAAA,IAC1B,cAAA,GAAA,eAAA;AAIF,IAAA,gBAAA,GAAA,MAAAC,iBAAAA,SAAA,aAAA,CAAA;MA1HwD,WAAA,CAAA,KAAA,EAAA,WAAA,CAAA,EAAA,gBAAA,GAAA,EAAA,EAAA,WAAA,GAAA,EAAA,EAAA;AAA3C,QAAA,KAAA,CAAA,kBAAN,WAAA,CAAA;;;ACMM,QAAA,IAAA,CAAA,qBAAA,uBAAA,GAAA,EAAsE;AAU3E,QAAA,IAAA,CAAA,iCAAA,uBAGN,GAAA,EAAsC;AAGtC,QAAA,IAAA,CAAA,KAAA,GAAM,KAAA;AAbP,QAAA,IAAA,CAAiB,QAAA,GAA8B,QAAA;AAG/C,QAAA,QAAiB,KAAA,QAAA;UACjB,KAAiB,CAAA;AACjB,YAAA,IAAA,CAAiB,cAAA,GAAA,CAAA,KAAA,KAAA,IAAA,CAAoC,qBAAI,KAAwC,CAAA;AAShG,YAAA;AACA,UAAA,KAAK,CAAA,EAAW;AAEhB,YAAA,IAAA,CAAQ,cAAA,GAAe,CAAA,KAAA,KAAA,IAAA,CAAA,qBAAA,KAAA,CAAA;AACtB,YAAA;AACC,UAAA;UACA,KAAA,CAAA;AACD,YAAA,IAAA,CAAK,cAAA,GAAgC,CAAA,KAAA,KAAA,IAAA,CAAA,0BAAA,KAAA,CAAA;AACpC,YAAA;AACA;AAAA,QAAA,MACD,YAAA,GAAA,MAAA,CAAA,OAAA,CAAA,KAAA,CAAA;AAAA,QAAA,IAAA,CACA,OAAK,YAAA,CAAA,GAAA,CAAA,CAAA,CAAA,GAAA,MAAA,GAAA,CAAA;AACJ,QAAA,KAAA,MAAK,CAAA,GAAA,EAAA,SAAiB,CAAA,IAAC,YAAA,EAAe;AACtC,UAAA,IAAA,qBAAA,cAAA,EAAA;AACF,YAAA,MAAA,CAAA,iCAAA,CAAA,GAAA,SAAA,CAAA,YAAA,CAAA;AAEA,YAAA,IAAM,6CAAmC,gBAAA,EAAA;AACpC,cAAA,IAAA,CAAA,qBAAA,CAA0B,GAAA,CAAG,GAAA,EAAM,SAAG,CAAA;AAE3C,YAAA,CAAA,MAAA,IAAY,6CAAiC,gBAAA,EAAA;AACxC,cAAA,IAAA,iCAAA,CAAqC,aAAA,MAAA,EAAA;AAExC,gBAAA,IAAA,CAAO,qBAAA,CAAA,GAAA,CAAA,GAAA,EAAiC,SAAI,CAAA;cAE5C,CAAA,MAAI;AACH,gBAAA,IAAA,CAAK,YAAA,CAAA,GAAA,CAAA,GAAA,EAAsB,SAAS,CAAA;AACrC,cAAA;AACC,YAAA,CAAA,MAAA,IAAI,qBAAA,gBAAA,EAAkC;AACrC,cAAA,IAAA,CAAA,iCAAA,CAAoC,GAAA,CAAA,GAAA,EAAS,SAAA,CAAA;YAAA,CAAA,MAC9C;AACC,cAAA,IAAA,CAAA,YAAA,CAAK,GAAA,CAAa,GAAA,EAAI,SAAK,CAAA;AAAS,YAAA;AACrC,UAAA,CAAA,MAAA,IACD,qBAAW,gBAAA,EAAqB;AAC/B,YAAA,IAAA,CAAA,qBAAA,CAAK,GAAA,CAAA,GAAA,EAAA,SAAsC,CAAA;AAAc,UAAA,CAAA,MAAA,IACnD,qBAAA,gBAAA,EAAA;AACN,YAAA,IAAA,SAAA,CAAK,aAAiB,MAAA,EAAK;AAC5B,cAAA,IAAA,CAAA,qBAAA,CAAA,GAAA,CAAA,GAAA,EAAA,SAAA,CAAA;YACD,CAAA,MAAA;AACC,cAAA,IAAA,CAAK,YAAA,CAAA,GAAA,CAAA,GAAA,EAAsB,SAAS,CAAA;AACrC,YAAA;AACC,UAAA,CAAA,MAAA,IAAI,qBAAuB,gBAAA,EAAW;AACrC,YAAA,IAAA,CAAA,iCAAA,CAAoC,GAAA,CAAA,GAAA,EAAS,SAAA,CAAA;UAAA,CAAA,MAC9C;AACC,YAAA,IAAA,CAAA,YAAA,CAAK,GAAA,CAAa,GAAA,EAAI,SAAK,CAAA;AAAS,UAAA;AACrC,QAAA;AAEA,MAAA;MAAyD,MAAA,CAC1DrF,QAAAA,GAAO,KAAA,gBAAA,EAAA;AACN,QAAA,OAAA,OAAA,CAAK,SAAA,CAAa,IAAA,CAAI,WAAA,EAAc,CAAA,IAAA,CAAA,KAAA,EAAA,CAAA,EAAAA,QAAAA,EAAA,IAAA,CAAA,WAAA,CAAA,CAAA;AAAA,MAAA;MACrC,MAAA,CACDA,QAAAA,GAAA,KAAA,gBAAA,EAAA;AACD,QAAA,OAAA,OAAA,CAAA,SAAA,CAAA,IAAA,CAAA,WAAA,EAAA,CAAA,IAAA,CAAA,KAAA,EAAA,CAAA,EAAAA,QAAAA,EAAA,IAAA,CAAA,WAAA,CAAA,CAAA;AAEO,MAAA;MACN,WAAA,CAAOA,QAAAA,GAAQ,KAAU,gBAAA,EAAkB;AAC5C,QAAA,OAAA,OAAA,CAAA,SAAA,CAAA,IAAA,CAAA,WAAA,EAAA,CAAA,IAAA,CAAA,KAAA,EAAA,CAAA,EAAAA,QAAAA,EAAA,IAAA,CAAA,WAAA,CAAA,CAAA;AAEO,MAAA;MACN,OAAA,CAAAA,QAAAA,GAAe,KAAA,gBAAA,EAAe;AAC/B,QAAA,MAAA,QAAA,MAAA,CAAA,WAAA,CAAA,KAAA,IAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,IAAA,CAAA,MAAA,GAAA,CAAA,CAAA,SAAAA,QAAA,CAAA,CAAA,CAAA,CAAA;AAEO,QAAA,OAAA,OAAA,CAAY,SAAA,CAAiC,IAAA,CAAA,WAAA,EAAwB,CAAA,KAAA,EAAA,IAAA,CAAA,QAAA,EAAAA,QAAAA,EAAA,IAAA,CAAA,WAAA,CAAA,CAAA;AAC3E,MAAA;MACD,QAAA,CAAAA,QAAAA,GAAA,KAAA,gBAAA,EAAA;AAEO,QAAA,MAAQ,QAAA,MAAA,CAAiC,WAAA;UAC/C,IAAA,CAAM,IAAA,CAAA,GAAA,CAAQ,CAAA,GAAA,KAAO;AACrB,YAAA,IAAO,SAAA,GAAQ,IAAA,CAAU,KAAA,CAAK,GAAA,CAAA;AAC/B,YAAA,IAAA,SAAA,YAAA,cAAA;AAEO,cAAA,SAAA,GAAqC,SAAA,CAAK,SAAAA,QAAmE,CAAA;AACnH,YAAA,OAAM,CAAA,KAAQ,SAAO,CAAA;UACpB,CAAA;AACC,SAAA;AACA,QAAA,OAAA,OAAA,CAAI,SAAA,CAAA,IAAA,CAAqB,WAAA,EAAA,CAAA,KAAA,EAAA,IAAA,CAAA,QAAA,EAAAA,QAAAA,EAAA,IAAA,CAAA,WAAA,CAAA,CAAA;AAAgB,MAAA;MACzC,MAAA,CAAA,MAAA,EAAQA,QAAAA,GAAK,IAAA,CAAS,gBAAA,EAAA;AAAA,QAAA,MACtB,KAAA,GAAA,EAAA,GAAA,IAAA,CAAA,KAAA,EAAA,GAAA,MAAA,YAAAqF,iBAAAA,GAAA,MAAA,CAAA,KAAA,GAAA,MAAA,EAAA;AACF,QAAA,OAAA,OAAA,CAAA,SAAA,CAAA,IAAA,CAAA,WAAA,EAAA,CAAA,KAAA,EAAA,IAAA,CAAA,QAAA,EAAArF,QAAAA,EAAA,IAAA,CAAA,WAAA,CAAA,CAAA;AACA,MAAA;MACD,IAAA,CAAA,IAAA,EAAAA,QAAAA,GAAA,IAAA,CAAA,gBAAA,EAAA;AAEO,QAAA,MACN,QACA,MAAA,CAAA,WAAA;AAEA,UAAA,IAAA,CAAM,OAAQ,CAAA,GAAA,KAAK,KAAK,IAAA,CAAO,QAAA,CAAI,GAAA,CAAA,CAAA,CAAA,GAAA,CAAkB,CAAA,QAAA,CAAA,GAAA,EAAA,KAAkB,KAAA,CAAO,GAAA,CAAA,CAAA;AAC9E,SAAA;AACD,QAAA,OAAA,OAAA,CAAA,SAAA,CAAA,IAAA,CAAA,WAAA,EAAA,CAAA,KAAA,EAAA,IAAA,CAAA,QAAA,EAAAA,QAAAA,EAAA,IAAA,CAAA,WAAA,CAAA,CAAA;AAEO,MAAA;MAIN,IAAA,CAAA,IAAA,EAAMA,QAAAA,GAAQ,IAAA,CAAO,gBAAA,EAAA;AAAA,QAAA,MACpB,QAAY,MAAA,CAAC,WAAA;AACd,UAAA,IAAA,CAAA,KAAA,MAAA,CAAA,CAAA,QAAA,CAAA,IAAA,CAAA,SAAA,GAAA,CAAA,EAAA,GAAA,CAAA,CAAA,QAAA,CAAA,GAAA,EAAA,KAAA,KAAA,CAAA,GAAA,CAAA,CAAA;AACA,SAAA;AACD,QAAA,OAAA,OAAA,CAAA,SAAA,CAAA,IAAA,CAAA,WAAA,EAAA,CAAA,KAAA,EAAA,IAAA,CAAA,QAAA,EAAAA,QAAAA,EAAA,IAAA,CAAA,WAAA,CAAA,CAAA;AAEO,MAAA;AAIN,MAAA,MAAA,CAAA,KAAA,EAAM;AAAe,QAAA,MACpB,cAAkB,OAAA,KAAA;AACnB,QAAA,IAAA,gBAAA,QAAA,EAAA;AACA,UAAA,OAAO,MAAA,CAAQ,GAAA;YAChB,IAAA,eAAA;AAE0B,cAAA,aAAA;cACnB,IAAA,CAAA,gBAAA,CAAqB,OAAA,IAAA,CAAA,iDAAA,EAAA,WAAA,CAAA,QAAA,CAAA;AACvB,cAAA;AACH;AAAc,WAAA;AACT,QAAA;AACH,QAAA,IAAA,UACK,IAAA,EAAA;AAA2F,UAAA,OAChG,MAAA,CAAA,GAAA,CAAA,IAAA,eAAA,CAAA,aAAA,EAAA,KAAA,gBAAA,CAAA,OAAA,IAAA,mCAAA,EAAA,KAAA,CAAA,CAAA;AAAA,QAAA;AACD,QAAA,IACD,KAAA,CAAA,OAAA,CAAA,KAAA,CAAA,EAAA;AACD,UAAA,OAAA,MAAA,CAAA,GAAA,CAAA,IAAA,eAAA,CAAA,aAAA,EAAA,KAAA,gBAAA,CAAA,OAAA,IAAA,uCAAA,EAAA,KAAA,CAAA,CAAA;AAEA,QAAA;AACC,QAAA,IAAA,CAAA,KAAO,oBAAA,EAAe;AACvB,UAAA,OAAA,MAAA,CAAA,GAAA,KAAA,CAAA;AAEA,QAAA;AACC,QAAA,KAAA,MAAO,SAAA,IAAe,MAAA,CAAA,MAAA,CAAA,IAAA,CAAgB,KAAA,CAAA,EAAA;AACvC,UAAA,SAAA,CAAA,SAAA,CAAA,IAAA,CAAA,MAAA,IAAA,KAAA,CAAA;AAEA,QAAA;AACC,QAAA,OAAA,IAAA,CAAO,eAAoB,KAAA,CAAA;AAAA,MAAA;MAG5B,KAAA,GAAA;AACC,QAAA,OAAA,OAAA,CAAU,SAAA,CAAU,IAAA,CAAK,WAAA,EAAgB,CAAA,IAAA,CAAA,KAAA,EAAA,IAAA,CAAA,QAAA,EAAA,IAAA,CAAA,gBAAA,EAAA,IAAA,CAAA,WAAA,CAAA,CAAA;AAAA,MAAA;AAG1C,MAAA,oBAAA,CAAY,KAAA,EAAA;AACb,QAAA,MAAA,SAAA,EAAA;AAEmB,QAAA,MAAc,cAAA,EAAA;AAChC,QAAA,MAAA,eAAe,IAAU,GAAA,CAAA,MAAA,CAAK,OAAA,CAAc,KAAK,CAAA,CAAA;AAClD,QAAA,MAAA,YAAA,mBAAA,MAAA,CAAA,CAAA,GAAA,EAAA,SAAA,KAAA;AAEQ,UAAA,MAAA,MAAA,GAAA,SAAA,CAAsE,GAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA;AAC7E,UAAA,IAAM,MAAA,CAAA,MAAsC,EAAA;AAC5C,YAAA,WAAA,CAAM,GAAA,IAAe,MAAA,CAAA,KAAA;UACrB,CAAA,MAAM;AAEN,YAAA,MAAM,QAAA,MAAA,CAAe,KAAA;AACpB,YAAA,MAAA,CAAM,IAAA,CAAA,CAAS,GAAA,EAAA,KAAU,CAAA,CAAA;AAEzB,UAAA;AACC,QAAA,CAAA,EAAA,cAAY,CAAA;AAAc,QAAA,KAAA,MACpB,CAAA,GAAA,EAAA,SAAA,CAAA,IAAA,KAAA,YAAA,EAAA;AACN,UAAA,IAAA,YAAA,CAAc,MAAA,CAAO,GAAA,CAAA,EAAA;AACrB,YAAA,YAAA,CAAa,KAAK,SAAM,CAAA;UACzB,CAAA,MAAA;AARoB,YAAA,MAAA,CAAA,IAAA,CAAA,CAAA,GAAA,EAAA,IAAA,qBAAA,GAAA,EAAA,IAAA,CAAA,gBAAA,CAAA,CAAA,CAAA;AAWrB,UAAA;AACC,QAAA;AACC,QAAA,KAAA,MAAA,CAAA,GAAA,EAAa,SAAK,CAAA,IAAS,KAAA,iCAAA,EAAA;AAC5B,UAAA,YAAA,CAAO,OAAA,GAAA,CAAA;AACN,UAAA,YAAA,CAAO,KAAM,SAAS,CAAA;AAAiD,QAAA;AAEzE,QAAA,IAAA,YAAA,CAAA,SAAA,CAAA,EAAA;AAGA,UAAA,OAAA,MAAA,CAAY,MAAA,KAAc,CAAA,GAAK,MAAA,CAAK,GAAA,WAAA,CAAA,GAAA,MAAA,CAAA,GAAA,CAAA,IAAmC,qBAAA,CAAA,MAAA,EAAA,IAAA,CAAA,gBAAA,CAAA,CAAA;AACtE,QAAA;AACA,QAAA,MAAA,oCAAA,GAA2B,IAAA,CAAA,qBAAA,CAAA,IAAA,GAAA,YAAA,CAAA,IAAA;AAC5B,QAAA,IAAA,oCAAA,EAAA;AAGA,UAAA,KAAA,MAAI,CAAA,GAAa,CAAA,IAAA,YAAA,EAAY;AAC5B,YAAA,MAAO,SAAA,GAAO,IAAA,CAAW,qBAAA,CACZ,GAAA,CAAW,GACrB,CAAA;AACJ,YAAA,IAAA,SAAA,EAAA;AAIM,cAAA,YAAA,CAAA,KAAA,SAAA,CAAA;AAEF,YAAA;AACH,UAAA;QACC,CAAA,MAAA;AAEA,UAAA,KAAA,MAAI,CAAA,GAAA,EAAW,SAAA,CAAA,IAAA,KAAA,qBAAA,EAAA;AACd,YAAA,IAAA,YAAA,CAAa,MAAA,CAAK,GAAA,CAAA,EAAS;AAC5B,cAAA,YAAA,CAAA,KAAA,SAAA,CAAA;AACD,YAAA;AACD,UAAA;AACC,QAAA;AACC,QAAA,OAAA,MAAA,CAAI,MAAA,KAAa,CAAA,GAAO,MAAA,CAAM,GAAA,WAAA,CAAA,GAAA,MAAA,CAAA,GAAA,CAAA,IAAA,qBAAA,CAAA,MAAA,EAAA,IAAA,CAAA,gBAAA,CAAA,CAAA;AAC7B,MAAA;AAA2B,MAAA,oBAAA,CAC5B,KAAA,EAAA;AAAA,QAAA,MACD,SAAA,EAAA;AACD,QAAA,MAAA,cAAA,EAAA;AAEA,QAAA,MAAA,eAAc,IAAW,GAAA,CACtB,MAAA,CAAO,OAAA,CAAG,KAAA,CAAW,CAAA;AAEzB,QAAA,MAAA,YAAA,mBAAA,MAAA,CAAA,CAAA,GAAA,EAAA,SAAA,KAAA;AAEQ,UAAA,MAAA,MAAA,GAAA,SAAA,CAAsE,GAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA;AAC7E,UAAA,IAAM,MAAA,CAAA,MAAsC,EAAA;AAC5C,YAAA,WAAA,CAAM,GAAA,IAAe,MAAA,CAAA,KAAA;UACrB,CAAA,MAAM;AAEN,YAAA,MAAM,QAAA,MAAA,CAAe,KAAA;AACpB,YAAA,MAAA,CAAM,IAAA,CAAA,CAAS,GAAA,EAAA,KAAU,CAAA,CAAA;AAEzB,UAAA;AACC,QAAA,CAAA,EAAA,cAAY,CAAA;AAAc,QAAA,KAAA,MACpB,CAAA,GAAA,EAAA,SAAA,CAAA,IAAA,KAAA,YAAA,EAAA;AACN,UAAA,IAAA,YAAA,CAAc,MAAA,CAAO,GAAA,CAAA,EAAA;AACrB,YAAA,YAAA,CAAa,KAAK,SAAM,CAAA;UACzB,CAAA,MAAA;AARoB,YAAA,MAAA,CAAA,IAAA,CAAA,CAAA,GAAA,EAAA,IAAA,qBAAA,GAAA,EAAA,IAAA,CAAA,gBAAA,CAAA,CAAA,CAAA;AAWrB,UAAA;AACC,QAAA;AACC,QAAA,KAAA,MAAA,CAAA,GAAA,EAAa,SAAK,CAAA,IAAS,KAAA,iCAAA,EAAA;AAC5B,UAAA,YAAA,CAAO,OAAA,GAAA,CAAA;AACN,UAAA,YAAA,CAAO,KAAM,SAAS,CAAA;AAAiD,QAAA;AAEzE,QAAA,KAAA,MAAA,CAAA,GAAA,EAAA,SAAA,CAAA,IAAA,KAAA,qBAAA,EAAA;AAGA,UAAA,IAAA,YAAA,CAAiB,SAAS,CAAA,EAAK;AAC9B,YAAA;AACA,UAAA;AACD,UAAA,IAAA,YAAA,CAAA,MAAA,CAAA,GAAA,CAAA,EAAA;AAEA,YAAA,YAAA,CAAiB,KAAA,SAAc,CAAA;AAG9B,UAAA;AACC,QAAA;AAAA,QAAA,IACD,YAAA,CAAA,SAAA,CAAA,EAAA;AAEA,UAAA,KAAA,MAAI,CAAA,GAAA,EAAa,MAAA,CAAA,IAAU,YAAA,CAAG,SAAA,EAAA;AAC7B,YAAA,MAAA,CAAA,IAAA,CAAA,CAAa,GAAA,EAAK,IAAA,oBAAA,CAAS,KAAA,MAAA,EAAA,IAAA,CAAA,gBAAA,CAAA,CAAA,CAAA;AAC5B,UAAA;AACD,QAAA;AAEA,QAAA,OAAI,MAAA,CAAA,MAAA,KAAa,CAAA,GAAY,MAAA,CAAA,GAAA,WAAA,CAAA,GAAA,MAAA,CAAA,GAAA,CAAA,IAAA,qBAAA,CAAA,MAAA,EAAA,IAAA,CAAA,gBAAA,CAAA,CAAA;AAC5B,MAAA;AACC,MAAA,yBAAA,CAAkB,KAAA,EAAI;AAAwD,QAAA,MAC/E,MAAA,GAAA,IAAA,CAAA,oBAAA,CAAA,KAAA,CAAA;AACD,QAAA,OAAA,MAAA,CAAA,KAAA,EAAA,GAAA,MAAA,GAAA,MAAA,CAAA,EAAA,CAAA,EAAA,GAAA,KAAA,EAAA,GAAA,MAAA,CAAA,KAAA,EAAA,CAAA;AAEA,MAAA;AAEsE,KAAA;AACvE,IAAA,MAAA,CAEQ,kBAAA,iBAA2E,CAAA;AAClF,IAAA,eAAA,GAAe,gBAAA;AAGjB,IAAA,qBAAA,GAAA,MAAAsF,sBAAAA,SAAA,aAAA,CAAA;AAxRoG,MAAA,MAAA,CAAA,KAAA,EAAA;AAAvF,QAAA,OAAA,MAAA,CAAA,GAAA,KAAN,CAAA;;;ACVA,IAAA,MAAA,CAAM,uBAAN,sBAAM,CAAA;AAAuE,IACzE,oBAAA,GAAmD,qBAAA;AAG9D,IAAA,gBAAA,GAAA,MAAAC,iBAAAA,SAAA,aAAA,CAAA;AAJoF,MAAA,WAAA,CAAA,WAAA,gBAAA,GAAA,EAAA,EAAA,WAAA,GAAA,EAAA,EAAA;AAAvE,QAAA,KAAA,CAAA,kBAAN,WAAA,CAAA;;;MCIA,KAAA,GAAM;AAGL,QAAA,OAAA,OAAA,CACN,SAAA,CACA,IAAA,CAAA,WAAA,EAAsC,CACtC,IAAA,CAAA,SAAA,EAA0D,IAAA,CACzD,gBAAA,EAAA,IAAA,CAAA,WAAA,CAAA,CAAA;AACD,MAAA;AACA,MAAA,MAAA,CAAK,KAAA,EAAA;AACN,QAAA,IAAA,OAAA,UAAA,QAAA,EAAA;AAEmB,UAAA,OAAc,MAAA,CAAA,GAAA,CAAA,IAAA,eAAA,CAAA,aAAA,EAAA,KAAA,gBAAA,CAAA,OAAA,IAAA,oBAAA,EAAA,KAAA,CAAA,CAAA;AAChC,QAAA;AACD,QAAA,IAAA,UAAA,IAAA,EAAA;AAEU,UAAA,OAAO,MAAA,CAAoF,GAAA,CAAA,IAAA,eAAA,CAAA,aAAA,EAAA,KAAA,gBAAA,CAAA,OAAA,IAAA,mCAAA,EAAA,KAAA,CAAA,CAAA;AACpG,QAAA;AACC,QAAA,IAAA,KAAA,CAAO,OAAA,CAAO,KAAI,CAAA,EAAI;AACvB,UAAA,OAAA,MAAA,CAAA,GAAA,CAAA,IAAA,eAAA,CAAA,aAAA,EAAA,KAAA,gBAAA,CAAA,OAAA,IAAA,uCAAA,EAAA,KAAA,CAAA,CAAA;AAEA,QAAA;AACC,QAAA,IAAA,CAAA,KAAO,oBAAA,EAAe;AACvB,UAAA,OAAA,MAAA,CAAA,GAAA,KAAA,CAAA;AAEA,QAAA;AACC,QAAA,MAAA,SAAO,EAAO;AACf,QAAA,MAAA,cAAA,EAAA;AAEA,QAAA,KAAA,MAAU,CAAA,GAAA,EAAA,GAAA,KAAA,MAAA,CAAsB,OAAA,CAAA,KAAA,CAAA,EAAA;AAC/B,UAAA,MAAA,MAAA,GAAc,IAAA,CAAG,SAAA,CAA0B,GAAA,CAAA,GAAA,CAAA;AAC5C,UAAA,IAAA,OAAA,IAAA,EAAA;AAEA,YAAA,WAAA,CAAuC,GAAA,IAAA,MAAA,CAAA,KAAA;;AAGvC,YAAA,MAAA,CAAW,IAAA,CAAC,CAAK,GAAA,EAAG,MAAA,CAAK,KAAO,CAAA,CAAA;AAC/B,QAAA;AACA,QAAA,OAAI,MAAA,CAAO,MAAA,KAAK,CAAA,GAAA,MAAA,CAAA,GAAA,WAAA,CAAA,GAAA,MAAA,CAAA,GAAA,CAAA,IAAA,qBAAA,CAAA,MAAA,EAAA,IAAA,CAAA,gBAAA,CAAA,CAAA;AAAG,MAAA;AAA0B,KAAA;AACxC,IAAA,MAAA,CAAA,kBAAa,iBAAmB,CAAA;AAAA,IACtC,eAAA,GAAA,gBAAA;AAMF,IAAA,aAAA,GAAA,MAAAC,cAAAA,SAAA,aAAA,CAAA;AA9CyE,MAAA,WAAA,CAAA,SAAA,EAAA,gBAAA,EAAA,WAAA,GAAA,EAAA,EAAA;AAA5D,QAAA,KAAA,CAAA,kBAAN,WAAA,CAAA;;;M7BAA,KAAA,GAAM;AAGL,QAAA,OAAA,OAAA,CAAY,SAAA,CAA6B,IAAA,CAAA,WAAA,EAAqC,CAAA,IAAA,CAAA,SAAA,EAAkD,IAAA,CAAA,gBAAA,EAAA,IAAA,CAAA,WAAA,CAAA,CAAA;AACtI,MAAA;AACA,MAAA,MAAA,CAAK,MAAA,EAAA;AACN,QAAA,IAAA,EAAA,kBAAA,GAAA,CAAA,EAAA;AAEmB,UAAA,OAAc,MAAA,CAAA,GAAA,CAAA,IAAA,eAAA,CAAA,UAAA,EAAA,KAAA,gBAAA,CAAA,OAAA,IAAA,gBAAA,EAAA,MAAA,CAAA,CAAA;AAChC,QAAA;AACD,QAAA,IAAA,CAAA,KAAA,oBAAA,EAAA;AAEU,UAAA,OAAO,MAAA,CAAkE,GAAA,MAAA,CAAA;AAClF,QAAA;AACC,QAAA,MAAA,SAAO,EAAO;AACf,QAAA,MAAA,WAAA,uBAAA,GAAA,EAAA;AAEA,QAAA,KAAA,MAAU,SAAA,MAAA,EAAA;AACT,UAAA,MAAA,MAAA,GAAc,IAAA,CAAG,SAAA,CAAM,GAAA,CAAA,KAAA,CAAA;AACxB,UAAA,IAAA,OAAA,IAAA,EAAA;AAEA,YAAA,WAAA,CAA6B,GAAA,CAAA,OAAA,KAAA,CAAA;;AAG7B,YAAA,MAAA,CAAW,IAAA,CAAA,OAAS,KAAQ,CAAA;AAC3B,QAAA;AACA,QAAA,OAAI,MAAA,CAAO,MAAA,KAAK,CAAA,GAAA,MAAA,CAAA,GAAA,WAAA,CAAA,GAAA,MAAA,CAAA,GAAA,CAAA,IAAA,aAAA,CAAA,MAAA,EAAA,IAAA,CAAA,gBAAA,CAAA,CAAA;AAAG,MAAA;AAA4B,KAAA;AAC1C,IAAA,MAAA,CAAA,eAAY,cAAa,CAAA;AAAA,IAC/B,YAAA,GAAA,aAAA;AAMF,IAAA,YAAA,GAAA,gDAAA;AC8C4B,IAAA,MAAA,CAC3B,eAAU,eAAyB,CAAA;AAqBlC,IAAA,MAAA,CAAA,qBAAe,qBAAoB,CAAA;AAE5B,IACR,KAAA,GAAA,sDAAA;AACD,IAAA,KAAA,GAAA,CAAA,CAAA,EAAA,KAAA,CAAA,OAAA,EAAA,KAAA,CAAA,CAAA;AANS,IAAA,OAAA,GAAA,IAAA,MAAA,CAAA,CAAA,CAAA,EAAA,KAAA,CAAA,CAAA,CAAA,CAAA;;;MCvGT,CAAA,KAAA,EAAM,KAAQ,CAAA,QAAA,EAAA,KAAA,CAAA,OAAA,EAAA,KAAA,WAAA,KAAA,CAAA,EAAA,EAAA,KAAA,CAAA,OAAA,EAAA,KAAA,CAAA,SAAA,EAAA,KAAA,CAAA,GAAA,EAAA,KAAA,CAAA,aAAA,EAAA,KAAA,CAAA,UAAA,EAAA,KAAA,UAAA,KAAA,CAAA,GAAA,EAAA,KAAA,CAAA,aAAA,EAAA,KAAA,CAAA,UAAA,EAAA,KAAA,CAAA,OAAA,EAAA,KAAA,CAAA,GAAA,EAAA,KAAA,CAAA,aAAA,EAAA,KAAA,aAAA,KAAA,CAAA,OAAA,EAAA,KAAA,CAAA,GAAA,EAAA,KAAA,CAAA,aAAA,EAAA,KAAA,CAAA,UAAA,EAAA,KAAA,CAAA,OAAA,EAAA,KAAA,CAAA,GAAA,EAAA,KAAA,sBAAA,KAAA,CAAA,OAAA,EAAA,KAAA,CAAA,KAAA,EAAA,KAAA,CAAA,kCAAA;AACd,KAAA;AAKoB,IAAA,MAAA,CACnB,QACY,QAAA,CAAA;AAab,IAAA,MAAA,CAAA,QAAA,QAAA,CAAA;AAOgB,IAAA,MAAA,CAAA,MAAO,MAAA,CAAA;AAEtB,IAAA,gBAAA,GAAO,iEAAA;;A4BhCP,IAAA,qCAAA,GAAkC,MAAAC,sCAAAA,SAAA,mBAAA,CAAA;MACnC,WAAA,CAAA,UAAA,EAAA,OAAA,EAAA,KAAA,EAAA,QAAA,EAAA;AAFgB,QAAA,KAAA,CAAA,UAAA,EAAA,SAAA,KAAA,CAAA;;;M3BGT,MAAA,GAAM;AAGL,QAAA,OAAA;AACN,UAAA,IAAA,EAAM,IAAA,CAAA,IAAA;AACN,UAAA,OAAA,EAAK,IAAA,CAAW,OAAA;AACjB,UAAA,UAAA,EAAA,IAAA,CAAA,UAAA;AAEgB,UAAA,KAAA,EAA2D,IAAA,CAAA,KAAA;AAC1E,UAAA,QAAA,EAAO,IAAA,CAAA;AAAA,SAAA;AACK,MAAA;MACG,CAAA,4BACG,CAAA,CAAA,KAAA,EAAAzF,QAAAA,EAAA;AAAA,QAAA,MACjB,UAAA,GAAYA,QAAAA,CAAA,OAAA,CAAA,IAAA,CAAA,YAAA,QAAA,CAAA;AAAA,QAAA,IACZ,QAAU,CAAA,EAAA;AACX,UAAA,OAAAA,QAAAA,CAAA,OAAA,CAAA,CAAA,uCAAA,EAAA,UAAA,KAAA,SAAA,CAAA;AACD,QAAA;AAEW,QAAA,MAAA,UAAA,GAAA,EAAA,GAAAA,QAAAA,EAA8B,KAAA,EAAeA,QAAAA,CAAyC,KAAA,KAAA,IAAA,GAAA,IAAA,GAAAA,QAAAA,CAAA,KAAA,GAAA,CAAA,EAAA;AAChG,QAAA,MAAM,YAAA,GAAaA,QAAAA,CAAQ,OAAA,CAAQ,GAAA,EAAK,WAAY,CAAA;AACpD,QAAA,MAAI,OAAA,GAAW;IACd,YAAO,CAAA,CAAA,CAAA;AACR,QAAA,MAAA,KAAA,GAAA,SAAA,IAAA,CAAA,KAAA,EAAA,UAAA,CAAA,CAAA,OAAA,CAAA,OAAA,OAAA,CAAA;AAEA,QAAA,MAAM,MAAA,GAAA,GAAAA,QAAAA,CAAkB,OAAA,CAAS,wCAAuC,SAAQ,CAAA,MAAW,UAAA,CAAA,CAAA;AAE3F,QAAA,MAAM,OAAA,GAAAA,QAAAA,CAAe,OAAA,CAAQ,IAAA,CAAQ,SAAK,QAAW,CAAA;AACrD,QAAA,MAAM,eAAA,GAAU;IAAO,YAAY,CAAA,GAAA,CAAA;AACnC,QAAA,MAAM,aAAA,GAAQiE;IAEdjE,QAAAA,CAAM,OAAA,CAAS,kCAAmB,QAAA,CAAA,GAAA,eAAwC,CAAA,EAAA,KAAU,QAAA,CAAM,GAAA,CAAA,CAAA,QAAA,KAAUA,QAAAA,CAAA,QAAA,QAAA,EAAA,SAAA,CAAA,CAAA,CAAA,IAAA,CAAA,eAAA,CAAA,CAAA,CAAA;AACpG,QAAA,MAAM,UAAA,GAAU;AAEhBA,EAAAA,EAAAA,QAAAA,CAAM,QAAA,WAAA,EAAkB,QAAA,CAAA,CAAA,EAAA,OAAA,GAAA,KAAA,CAAA,CAAA;AAAO,QAAA,OAAA,GAAA,MAAY;IAC3C,OAAM;EAAgB,aAAe;EAGrC,UAAM,CAAA,CAAA;AAAa,MAAA;AACnB,KAAA;AAAgB,IAAA,MAAA,CAAO,uCAAO,sCAAA,CAAA;AAAA,IAAK,oCAAA,GAAa,qCAAA;AC1B9C,IAAA,MAAA,CAAA,iBAAO,iBAAA,CAAA;ACD6B,IAAA,MAAA,CAAA,qBAAS,qBAA2B,CAAA;AAI5E,IAAA,MAAA,CAAA,oBAAA,oBAAA,CAAA;AAOA,IAAA,MAAA,CAAA,kBAAA,kBAAA,CAAA;ACgBQ,IAAA,MAAA,CACN,wBAAmB,wBAAA,CAAA;AARZ,IAAA,MAAA,CAAA,sBAAA,sBAAA,CAAA;AAgBO,IAAA,MAAA,CAAA,6BAAA,6BAAA,CAAA;AAKA,IAAA,MAAA,CAAA,yBAAA,yBAAA,CAAA;AAKA,IAAA,MAAA,CAAA,gCAAA,gCAAA,CAAA;AAKA,IAAA,MAAA,CAAA,mBAAA,mBAAA,CAAA;AAKA,IAAA,MAAA,CAAA,sBAAA,sBAAA,CAAA;AAoBT,IAAA,MAAA,CAAA,aACD,aAAA,CAAA;AAOE,IAAA,MAAA,CACN,sBAAmB,sBAAA,CAAA;AAsBc,IAAA,MAAA,CAAA,WAAO,WAAU,CAAA;AAa5C,IAAA,MAAA,CACN,UAAmB,UAAA,CAAA;AAMrB,IAAA,MAAA,CAAA,aAAA,aAAA,CAAA;AAWE,IAAA,MAAA,CACA,YAAA,YAAA,CAAA;AAiBK,IAAA,MAAA,CAAA,YACD,YAAA,CAAA;AAiBC,IAAA,MAAA,CAAA,aACD,aAAA,CAAA;AAEJ,IACD,gBAAA,GAAA,MAAA0F,iBAAAA,SAAA,aAAA,CAAA;MACD,cAAA,CAAA,MAAA,EAAA1F,QAAAA,GAAA,IAAA,CAAA,gBAAA,EAAA;AAfgB,QAAA,OAAA,IAAA,CAAA,aAAA,CAAA,oBAAA,CAAA,MAAA,EAAAA,QAAA,CAAA,CAAA;;;AyB7JH,QAAA,OAAA,IAAA,CAAA,aAAA,CAAA,2BAAA,CAA0C,MAAA,EAAAA,QAAiB,CAAA,CAAA;AAChE,MAAA;MACN,iBAAA,CAAY,MAAA,EAAAA,QAAAA,GAAc,IAAA,CAAA,gBAAA,EAA6B;AACxD,QAAA,OAAA,IAAA,CAAA,aAAA,CAAA,uBAAA,CAAA,MAAA,EAAAA,QAAA,CAAA,CAAA;AAEO,MAAA;MACN,wBAAA,CAAY,MAAA,EAAcA,QAAAA,GAAA,IAAA,CAAA,gBAAA,EAAoC;AAC/D,QAAA,OAAA,IAAA,CAAA,aAAA,CAAA,8BAAA,CAAA,MAAA,EAAAA,QAAA,CAAA,CAAA;AAEO,MAAA;MACN,WAAA,CAAO,MAAA,EAAKA,QAAAA,GAAc,IAAA,CAAA,gBAAA,EAAwB;AACnD,QAAA,OAAA,IAAA,CAAA,aAAA,CAAA,iBAAA,CAAA,MAAA,EAAAA,QAAA,CAAA,CAAA;AAEO,MAAA;MACN,cAAA,CAAY,MAAA,EAAAA,QAAAA,GAAc,IAAA,CAAA,gBAAA,EAAA;AAC3B,QAAA,OAAA,IAAA,CAAA,aAAA,CAAA,oBAAA,CAAA,MAAA,EAAAA,QAAA,CAAA,CAAA;AAEO,MAAA;MACN,KAAA,CAAAA,QAAAA,GAAY,KAAA,gBAAA,EAAc;AAC3B,QAAA,OAAA,IAAA,CAAA,aAAA,CAAA,WAAA,CAAAA,QAAA,CAAA,CAAA;AAEO,MAAA;MACN,GAAA,CAAAA,QAAAA,EAAO,gBAAA,GAAmB,IAAA,CAAA,gBAAA,EAAqB;AAChD,QAAA,MAAA,UAAA,GAAA,IAAA,CAAA,YAAA,CAAAA,QAAA,CAAA;AAEO,QAAA,IAAM,UAAA,EAA4B;AACxC,UAAA,OAAO,IAAA,CAAK,aAAA,CAAc,SAAA,CAAYA,QAAAA,EAA0B,gBAAA,CAAA,CAAA;AACjE,QAAA;AAIO,QAAA,OAAI,IAAA,CAAyC,aAAA,CAAA,SAAA,CAA0C,MAAA,EAAA,gBAAwB,CAAA,CAAA;AACrH,MAAA;MAEA,IAAA,CAAAA,QAAAA,EAAI,gBAAA,GAAY,IAAA,CAAA,gBAAA,EAAA;AACf,QAAA,MAAA,iBAAA,GAAY,IAAA,CAAc,mBAAA,CAAmBA,QAAA,CAAA;AAC9C,QAAA,IAAA,iBAAA,EAAA;AAEA,UAAA,OAAO,IAAA,CAAK,aAAA,CAAc,UAAA,CAAUA,QAAAA,EAAW,gBAAmC,CAAA,CAAA;AACnF,QAAA;AAIO,QAAA,OAAK,IAAA,CAAgD,aAAA,CAAA,UAAA,CAA0C,MAAA,EAAA,gBAAwB,CAAA,CAAA;AAC7H,MAAA;MAEA,KAAA,CAAI,KAAA,EAAAA,QAAAA,GAAA,IAAA,CAAmB,gBAAA,EAAA;AACtB,QAAA,OAAA,IAAA,CAAO,aAAA,CAAK,WAAA,CAAc,KAAA,EAAWA,QAAS,CAAA,CAAA;AAAmC,MAAA;MAGlF,IAAA,CAAAA,QAAAA,GAAY,KAAA,gBAAA,EAAc;AAC3B,QAAA,OAAA,IAAA,CAAA,aAAA,CAAA,UAAA,CAAAA,QAAA,CAAA,CAAA;AAEO,MAAA;MACN,IAAA,CAAAA,QAAAA,GAAY,KAAA,gBAAA,EAAc;AAC3B,QAAA,OAAA,IAAA,CAAA,EAAA,CAAA,CAAA,EAAAA,QAAA,CAAA;AAEO,MAAA;MACN,IAAA,CAAAA,QAAAA,GAAY,KAAA,gBAAA,EAAc;AAC3B,QAAA,OAAA,IAAA,CAAA,EAAA,CAAA,CAAA,EAAAA,QAAA,CAAA;AAEO,MAAA;MACN,EAAA,CAAA,OAAA,EAAOA,QAAAA,GAAW,IAAA,CAAO,gBAAA,EAAA;AAC1B,QAAA,OAAA,IAAA,CAAA,aAAA,CAAA,QAAA,CAAA,OAAA,EAAAA,QAAA,CAAA,CAAA;AAEO,MAAA;MACN,KAAA,CAAAA,QAAAA,GAAY,KAAM,gBAAA,EAAO;AAC1B,QAAA,OAAA,IAAA,CAAA,aAAA,CAAA,WAAA,CAAAA,QAAA,CAAA,CAAA;AAEO,MAAA;AACN,MAAA,MAAA,CAAA,KAAA,EAAY;AACb,QAAA,OAAA,OAAA,KAAA,KAAA,QAAA,GAAA,MAAA,CAAA,EAAA,CAAA,KAAA,CAAA,GAAA,MAAA,CAAA,GAAA,CAAA,IAAA,gBAAA,YAAA,EAAA,IAAA,CAAA,iBAAA,OAAA,IAAA,6BAAA,EAAA,KAAA,CAAA,CAAA;AAEO,MAAA;AACN,MAAA,YAAA,CAAOA,QAAAA,EAAK;AACb,QAAA,OAAAA,UAAA,OAAA,KAAA,MAAA;AAEU,MAAA;AACT,MAAA,mBAAA,CAAcA,QAAAA,EAAU;AAGzB,QAAA,OAAAA,UAAA,OAAA,KAAA,MAAA;AAEQ,MAAA;AACP,KAAA;AAAkD,IAAA,MAAA,CACnD,kBAAA,iBAAA,CAAA;AAAA,IAEQ,eAAA,GAAoB,gBAAA;AAG7B,IAAA,eAAA,GAAA,MAAA2F,gBAAAA,SAAA,aAAA,CAAA;AA1FwE,MAAA,WAAA,CAAA,YAAA,gBAAA,GAAA,EAAA,EAAA,WAAA,GAAA,EAAA,EAAA;AAA3D,QAAA,KAAA,CAAA,kBAAN,WAAA,CAAA;;;ACfA,MAAA;MAGC,KAAA,GAAA;AAKN,QAAA,OAAM,OAAA,CAAA,SAAA,CAAkB,IAAA,CAAA,WAAA,EAAW,CAAA,IAAA,CAAA,UAAA,EAAA,IAAA,CAAA,gBAAA,EAAA,IAAA,CAAA,WAAA,CAAA,CAAA;AAPpC,MAAA;AAQC,MAAA,MAAA,CAAK,MAAA,EAAA;AACN,QAAA,IAAA,CAAA,KAAA,CAAA,OAAA,CAAA,MAAA,CAAA,EAAA;AAEmB,UAAA,OAAc,MAAA,CAAA,GAAA,CAAA,IAAA,eAAA,CAAA,YAAA,EAAA,KAAA,gBAAA,CAAA,OAAA,IAAA,mBAAA,EAAA,MAAA,CAAA,CAAA;AAChC,QAAA;AACD,QAAA,IAAA,MAAA,CAAA,MAAA,KAAA,IAAA,CAAA,UAAA,CAAA,MAAA,EAAA;AAEU,UAAA,OAAO,MAAA,CAA0E,GAAA;YACtF,IAAC,eAAA,CAAc,YAAA,EAAS,IAAA,CAAA,gBAAA,CAAA,OAAA,IAAA,+BAAA,IAAA,CAAA,UAAA,CAAA,MAAA,CAAA,CAAA,EAAA,MAAA;AAC3B,WAAA;AACD,QAAA;AAEA,QAAA,IAAI,CAAA,KAAA,oBAAA,EAAuB;AAC1B,UAAA,OAAO,MAAA,CAAO,GAAA,MAAA,CAAA;AAAA,QAAA;AACqH,QAAA,MACnI,SAAA,EAAA;AACD,QAAA,MAAA,cAAA,EAAA;AAEA,QAAA,KAAA,IAAK,EAAA,GAAK,CAAA,EAAA,EAAA,GAAA,MAAA,CAAA,QAAsB,EAAA,EAAA,EAAA;AAC/B,UAAA,MAAA,MAAA,GAAc,KAAG,UAAA,CAAgB,EAAA,EAAA,GAAA,CAAA,MAAA,CAAA,EAAA,CAAA,CAAA;AAClC,UAAA,IAAA,OAAA,IAAA,EAAA;AAEA,YAAA,WAAA,CAAuC,IAAA,CAAA,OAAA,KAAA,CAAA;;AAGvC,YAAA,MAAA,CAASzE,IAAAA,CAAI,CAAGA,EAAAA,EAAAA,MAAAA,CAAI,KAAO,CAAA,CAAA;AAC1B,QAAA;AACA,QAAA,OAAI,MAAA,CAAO,MAAA,KAAK,CAAA,GAAA,MAAA,CAAA,GAAA,WAAA,CAAA,GAAA,MAAA,CAAA,GAAA,CAAA,IAAA,qBAAA,CAAA,MAAA,EAAA,IAAA,CAAA,gBAAA,CAAA,CAAA;AAAG,MAAA;AAA6B,KAAA;AAC3C,IAAA,MAAA,CAAA,iBAAaA,gBAAiB,CAAA;AAAA,IACpC,cAAA,GAAA,eAAA;AAMF,IAAA,aAAA,GAAA,MAAA0E,cAAAA,SAAA,aAAA,CAAA;AA5C2E,MAAA,WAAA,CAAA,cAAAC,eAAAA,EAAA,gBAAA,GAAA,EAAA,EAAA,WAAA,GAAA,EAAA,EAAA;AAA9D,QAAA,KAAA,CAAA,kBAAN,WAAA,CAAA;;;ACAA,MAAA;MAIC,KAAA,GAAA;AAMN,QAAA,OAAM,OAAA,CAAA,SAAA,CAAkB,IAAA,CAAA,WAAA,EAAW,CAAA,IAAA,CAAA,YAAA,EAAA,IAAA,CAAA,cAAA,EAAA,IAAA,CAAA,gBAAA,EAAA,IAAA,CAAA,WAAA,CAAA,CAAA;AACnC,MAAA;AACA,MAAA,MAAA,CAAK,KAAA,EAAA;AACN,QAAA,IAAA,EAAA,iBAAA,GAAA,CAAA,EAAA;AAEmB,UAAA,OAAc,MAAA,CAAA,GAAA,CAAA,IAAA,eAAA,CAAA,aAAA,EAAA,KAAA,gBAAA,CAAA,OAAA,IAAA,gBAAA,EAAA,KAAA,CAAA,CAAA;AAChC,QAAA;AACD,QAAA,IAAA,CAAA,KAAA,oBAAA,EAAA;AAEU,UAAA,OAAO,MAAA,CAA4E,GAAA,KAAA,CAAA;AAC5F,QAAA;AACC,QAAA,MAAA,SAAO,EAAO;AACf,QAAA,MAAA,WAAA,uBAAA,GAAA,EAAA;AAEA,QAAA,KAAA,MAAU,CAAA,GAAA,EAAA,GAAA,CAAA,IAAA,KAAA,CAAA,SAAsB,EAAA;AAC/B,UAAA,MAAA,SAAA,GAAiB,IAAA,CAAK,YAAA,CAAA,GAAA,CAAA,GAAA,CAAA;AACvB,UAAA,MAAA,WAAA,GAAA,IAAA,CAAA,cAAA,CAAA,GAAA,CAAA,GAAA,CAAA;AAEA,UAAA,MAAM,EAAA,QAAiC,GAAA,MAAA;AACvC,UAAA,IAAM,UAAA,KAAA,EAAc;AAEpB,YAAA,MAAA,CAAW,IAAA,CAAC,CAAK,GAAA,EAAG,SAAA,CAAW,KAAA,CAAA,CAAA;AAC9B,UAAA,IAAA,YAAM,KAAA,EAAY;AAClB,YAAA,MAAA,CAAM,IAAA,CAAA,CAAA,GAAA,EAAc,WAAA,CAAK,KAAA,CAAA,CAAA;AACzB,UAAA,IAAA,OAAQ,MAAA,KAAW,MAAA;AACnB,YAAA,WAAA,CAAc,GAAA,CAAA,SAAA,CAAM,KAAA,EAAA,WAAA,CAAA,KAAA,CAAA;AAAG,QAAA;AACvB,QAAA,OAAI,MAAA,CAAA,MAAA,KAAkB,CAAA,GAAA,MAAA,CAAA,GAAA,WAAA,CAAA,GAAA,MAAA,CAAA,GAAA,CAAA,IAAA,qBAAA,CAAA,MAAA,EAAA,IAAA,CAAA,gBAAA,CAAA,CAAA;AAAG,MAAA;AACzB,KAAA;AAA8B,IAAA,MAAA,CAAA,eAAY,cAAc,CAAA;AAA0B,IACnF,YAAA,GAAA,aAAA;AAMF,IAAA,cAAA,GAAA,MAAAC,eAAAA,SAAA,aAAA,CAAA;AA5CiE,MAAA,WAAA,CAAA,WAAA,gBAAA,GAAA,EAAA,EAAA,WAAA,GAAA,EAAA,EAAA;AAApD,QAAA,KAAA,CAAA,kBAAN,WAAA,CAAA;;;MCHA,KAAA,GAAM;AAGL,QAAA,OAAA,OAAA,CAAY,SAAA,CAAkC,IAAA,CAAA,WAAA,EAAsC,CAAG,IAAA,CAAA,SAAA,EAA0C,IAAA,CAAG,gBAAA,EAAA,IAAA,CAAA,WAAA,CAAA,CAAA;AAC1I,MAAA;AACA,MAAA,MAAA,CAAK,MAAA,EAAA;AACN,QAAA,OAAA,IAAA,CAAA,SAAA,CAAA,MAAA,CAAA,CAAA,IAAA,MAAA,CAAA;AAEmB,MAAA;AAClB,KAAA;AAAoG,IAAA,MAAA,CACrG,gBAAA,eAAA,CAAA;AAAA,IAEU,aAAA,GAAmD,cAAA;AAG9D,IAAA,sBAAA,GAAA,MAAAC,uBAAAA,SAAA,SAAA,CAAA;MAfqG,WAAA,CAAA,KAAA,EAAA,IAAA,EAAA,YAAA,EAAA,gBAAA,EAAA;AAAxF,QAAA,KAAA,CAAA,gBAAA,EAAN,WAAA,4DAAA,CAAA;;;ACAM,QAAA,IAAA,CAAA,YAAA,GAAA,YAAA;AAKL,MAAA;MAMN,MAAA,GAAM;AAEN,QAAA,OAAK;AACL,UAAA,IAAA,EAAK,IAAA,CAAA,IAAA;AACL,UAAA,OAAA,EAAK,IAAA,CAAA,OAAA;AACN,UAAA,KAAA,EAAA,IAAA,CAAA,KAAA;AAEgB,UAAA,QAAA,EAAyC,IAAA,CAAA,QAAA;AACxD,UAAA,YAAA,EAAO,CAAA,GAAA,IAAA,CAAA,YAAA,CAAA,SAAA;AAAA,SAAA;AACK,MAAA;MACG,CAAA,4BACF,CAAA,CAAA,KAAA,EAAA/F,QAAAA,EAAA;AAAA,QAAA,MACZ,QAAUA,QAAAA,CAAK,OAAA,CAAA,KAAA,KAAA,CAAA,QAAA,IAAA,QAAA,CAAA;AAAA,QAAA,IACf,QAAA,CAAA,EAAA;AACD,UAAA,OAAAA,QAAAA,CAAA,OAAA,CAAA,CAAA,wBAAA,EAAA,KAAA,KAAA,SAAA,CAAA;AACD,QAAA;AAEW,QAAA,MAAA,OAAA,GAAA;IACVA,QAAAA,CAAM,OAAA,CAAQ,GAAA,EAAA,WAAgB,CAAA,CAAA,CAAA,CAAA;AAC9B,QAAA,MAAI,KAAA,GAAQ,IAAA,CAAG,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAA;AACd,UAAA,MAAA,SAAA,GAAe,IAAA,CAAQ,YAAA,CAAA,GAAA,CAAA,GAAA,CAAA;AACxB,UAAA,OAAA,GAAAA,QAAAA,CAAA,OAAA,CAAA,KAAA,QAAA,CAAA,OAAAA,QAAAA,CAAA,OAAA;AAEA,YAAA,SAAA,CAAM,QAAA,EAAU;YAAO,OAAQ,SAAA,KAAa,WAAY,QAAA,GAAA;WACxD,CAAA,CAAA;QAEE,CAAA,CAAA,CAAA,KAAM,OAAA,CAAA;AACN,QAAA,MAAA,MAAA,GAAU,GAAAA,QAAAA,CAAQ,OAAA,CAAa,yBAAwB,SAAA,CAAA,MAAA,KAAA,CAAA,CAAA;AAAA,QAAA,MACtD,OAAA,GAAUA,QAAAA,CAAS,OAAA,CAAA,IAAA,CAAA,SAAA,QAAA,CAAA;AAAA,QAAA,MACnB,UAAA,GAAO,CAAA,EAAA,OAAc,CAAA,EAAA,KAAW,CAAA,CAAA;AAAW,QAAA,OAC3C,GAAA,MAAA;IACF,OACC;EAEF,UAAM,CAAA,CAAA;AACN,MAAA;AACA,KAAA;AACA,IAAA,MAAA,CAAA,wBAAgB,uBAAA,CAAA;AAAA,IAAO,qBAAA,GAAO,sBAAA;AAEhC,IAAA,oBAAA,GAAA,MAAAgG,qBAAAA,SAAA,aAAA,CAAA;MAlDqD,WAAA,CAAA,SAAA,EAAA,gBAAA,GAAA,EAAA,EAAA;AAAxC,QAAA,KAAA,CAAA,gBAAA,CAAA;;;A5BCA,QAAA,IAAA,CAAA,SAAA,GAAA,SAAA;AAML,QAAA,IAAA,CAAA,WAAY,MAAA,CAAc,IAAA,CAAA,SAAA,CAAA,CAAA,MAAA,CAAyC,CAAA,GAAA,KAAA;AACzE,UAAA,OAAM,OAAA,SAAA,CAAgB,SAAA,CAAA,GAAA,CAAA,CAAA,KAAA,QAAA;QALvB,CAAA,CAAA;AAEA,QAAA,KAAA,MAAiB,GAAA,IAAA,KAAc,QAAA,EAAA;AAI9B,UAAA,MAAK,SAAA,GAAY,UAAA,GAAA,CAAA;AAEjB,UAAA,IAAA,CAAK,WAAA,CAAW,GAAA,CAAO,GAAA,EAAK,SAAS,CAAA;AACpC,UAAA,IAAA,CAAA,WAAA,CAAc,GAAA,CAAA,SAAA,EAAU,SAAc,CAAA;AACtC,UAAA,IAAA,OAAA,cAAA,QAAA,EAAA;AAED,YAAA,IAAA,CAAA,kBAAA,GAAuB,IAAA;AACtB,YAAA,IAAA,CAAM,WAAA,CAAY,GAAA,CAAA,CAAA,EAAA,SAAa,IAAA,SAAA,CAAA;AAE/B,UAAA;AACA,QAAA;AAEA,MAAA;AACC,MAAA,MAAA,CAAA,KAAA,EAAK;AACL,QAAA,MAAA,cAAK,OAAgB,KAAA;AAAyB,QAAA,IAC/C,gBAAA,QAAA,EAAA;AACD,UAAA,IAAA,CAAA,KAAA,kBAAA,EAAA;AACD,YAAA,OAAA,MAAA,CAAA,GAAA;AAE0B,cAAA,IAAA,gBAA6E,iBAAA,EAAA,IAAA,CAAA,gBAAA,CAAA,OAAA,IAAA,qCAAA,KAAA;AACtG,aAAA;AAEA,UAAA;AACC,QAAA,CAAA,MAAA,IAAK,gBAAK,QAAA,EAAoB;AAC7B,UAAA,OAAA,MAAA,CAAO,GAAA;AAAO,YAAA,IACb,gBAAI,iBAAA,EAAgB,IAAA,CAAmB,gBAAA,CAAK,OAAA,IAAiB,+CAAqD,KAAA;AAAA,WAAA;AACnH,QAAA;AAEF,QAAA,MAAA,MAAA,GAAW,KAAA;AAEV,QAAA,MAAA,iBAAA,GAAc,IAAA,CAAA,WAAA,CAAA,GAAA,CAAA,MAAA,CAAA;AAAA,QAAA,OACb,OAAI,iBAAA,KAAgB,WAAA,GAAwB,OAAA,GAAA,CAAA,IAAiB,sBAAW,MAAA,EAAA,IAAA,CAAA,QAAA,EAAA,IAAA,CAAA,aAAoD,IAAA,CAAA,gBAAA,CAAA,CAAA,GAAA,MAAA,CAAA,GAAA,iBAAA,CAAA;AAAA,MAAA;MAC7H,KAAA,GACD;AAEA,QAAA,OAAM,OAAA,CAAS,UAAA,IAAA,CAAA,WAAA,EAAA,CAAA,IAAA,CAAA,SAAA,EAAA,IAAA,CAAA,gBAAA,CAAA,CAAA;AAEf,MAAA;AAEA,KAAA;AAE8B,IAAA,MAAA,CAC/B,sBAAA,qBAAA,CAAA;AAAA,IAEmB,mBAAA,GAAc,oBAAA;ACjC1B,IAAA,MAAA,CACN,gCAAc,gCAAA,CAAA;AARP,IAAA,MAAA,CAAA,8BAAA,8BAAA,CAAA;AAgBO,IAAA,MAAA,CAAA,qCAAA,qCAAA,CAAA;AAKA,IAAA,MAAA,CAAA,iCAAA,iCAAA,CAAA;AAKA,IAAA,MAAA,CAAA,wCAAA,wCAAA,CAAA;AAKA,IAAA,MAAA,CAAA,2BAAA,2BAAA,CAAA;AAKA,IAAA,MAAA,CAAA,8BAAA,8BAAA,CAAA;AAqBT,IAAA,MAAA,CAAA,2BACD,2BAAA,CAAA;AAiBC,IAAA,MAAA,CAAA,oCACD,oCAAA,CAAA;AAqBC,IAAA,MAAA,CAAA,oCACD,oCAAA,CAAA;AAaE,IAAA,MAAA,CACN,4BAAc,4BAAA,CAAA;AARP,IAAA,MAAA,CAAA,0BAAA,0BAAA,CAAA;AAgBO,IAAA,MAAA,CAAA,iCAAA,iCAAA,CAAA;AAKA,IAAA,MAAA,CAAA,6BAAA,6BAAA,CAAA;AAKA,IAAA,MAAA,CAAA,oCAAA,oCAAA,CAAA;AAKA,IAAA,MAAA,CAAA,uBAAA,uBAAA,CAAA;AAKA,IAAA,MAAA,CAAA,0BAAA,0BAAA,CAAA;AAqBT,IAAA,MAAA,CAAA,uBACD,uBAAA,CAAA;AAiBC,IAAA,MAAA,CAAA,gCACD,gCAAA,CAAA;AAqBC,IAAA,MAAA,CAAA,gCACD,gCAAA,CAAA;AAEJ,IACD,SAAA,CAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,KAAA,GAAA,CAAA;AACD,IAAA,KAAA,mBAAA,MAAA,CAAA,CAAA,IAAA,KAAA;AApBgB,MAAA,OAAA,CAAA,EAAA,MAAA,CAAA,QAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,WAAA,EAAA,CAAA,GAAA,IAAA,GAAA,GAAA,CAAA,CAAA,EAAA,IAAA,CAAA,CAAA;;A4B1MT,IAAM,WAAA,GAAQ;MACpB,SAAA,EAAU,CAAA,OAAO,EAAA,YAAe,SAAA;MACjC,UAAA,EAFqB,CAAA,OAAA,EAAA,YAAA,UAAA;;;MCWd,WAAA,EAAM,CAAA,OAAc,EAAA,YAAA,WAAA;MAC1B,UAAA,EAAYrF,CAAAA,OAA+BA,EAAAA,YAAa,UAAA;MACxD,WAAA,EAAaA,CAAAA,OAAgCA,EAAAA,YAAa,WAAA;MAC1D,YAAA,EAAA,CAAA,OAAoBA,EAAAA,YAAuCA,YAAAA;MAC3D,YAAA,EAAaA,CAAAA,OAAgCA,EAAAA,YAAa,YAAA;MAC1D,aAAA,EAAcA,CAAAA,OAAiCA,EAAAA,YAAa,aAAA;MAC5D,cAAA,EAAaA,CAAAA,OAAgCA,EAAAA,YAAa,cAAA;AAC1D,MAAA,UAAA,EAAA,CAAa,EAAA,KAACA,WAAAA,CAAiCA,OAAa,EAAA,CAAA,IAAA,EAAA,EAAA,YAAA,QAAA;AAAA,KAAA;AAGI,IAChE,oBAAA,GAAqDA,MAAAA,qBAAAA,SAAa,aAAA,CAAA;AAClE,MAAA,WAAA,CAAY,MAACA,gBAAAA,GAA4C,EAAA,EAAQ,WAAA,GAAOA,EAAAA,EAAAA;AACzE,QAAA,KAAA,CAAA,kBAAA,WAAA,CAAA;;;MCEO,kBAAA,CAAM,MAAA,EAANX,QAAAA,GAAM,IAAA,CAAA,gBAAA,EAAkD;AAGvD,QAAA,OAAA,IAAA,CAAY,aAAA,CAAsB,4BAAA,CAAmF,MAAA,EAAGA,QAAA,CAAA,CAAA;AAC9H,MAAA;MACA,yBAAA,CAAY,MAAA,EAAAA,QAAAA,GAAA,IAAA,CAAA,gBAAA,EAAA;AACb,QAAA,OAAA,IAAA,CAAA,aAAA,CAAA,mCAAA,CAAA,MAAA,EAAAA,QAAA,CAAA,CAAA;AAEO,MAAA;MACN,qBAAA,CAAY,MAAA,EAAcA,QAAAA,GAAA,IAAA,CAAA,gBAAA,EAA6B;AACxD,QAAA,OAAA,IAAA,CAAA,aAAA,CAAA,+BAAA,CAAA,MAAA,EAAAA,QAAA,CAAA,CAAA;AAEO,MAAA;MACN,4BAAA,CAA0B,MAAA,EAAAA,QAAAA,GAAA,IAAA,CAAA,gBAAA,EAAoC;AAC/D,QAAA,OAAA,IAAA,CAAA,aAAA,CAAA,sCAAA,CAAA,MAAA,EAAAA,QAAA,CAAA,CAAA;AAEO,MAAA;MACN,eAAA,CAAY,MAAA,EAAAA,QAAAA,GAAc,IAAA,CAAA,gBAAA,EAAA;AAC3B,QAAA,OAAA,IAAA,CAAA,aAAA,CAAA,yBAAA,CAAA,MAAA,EAAAA,QAAA,CAAA,CAAA;AAEO,MAAA;MACN,kBAAA,CAAY,MAAA,EAAAA,QAAAA,GAAc,IAAA,CAAA,gBAAA,EAAA;AAC3B,QAAA,OAAA,IAAA,CAAA,aAAA,CAAA,4BAAA,CAAA,MAAA,EAAAA,QAAA,CAAA,CAAA;AAEO,MAAA;AACN,MAAA,eAAA,CAAY,KAAA,EAAA,SAAA,EAAcA,QAAAA,GAAA,IAAA,CAAA,gBAAA,EAAkC;AAC7D,QAAA,OAAA,KAAA,aAAA,CAAA,yBAAA,CAAA,KAAA,EAAA,SAAA,EAAAA,QAAA,CAAA,CAAA;AAEO,MAAA;AACN,MAAA,wBAAA,CAAY,OAAA,EAAc,KAAA,EAAAA,QAAAA,GAAA,IAAA,CAAA,gBAAA,EAA6C;AACxE,QAAA,OAAA,KAAA,aAAA,CAAA,kCAAA,CAAA,OAAA,EAAA,KAAA,EAAAA,QAAA,CAAA,CAAA;AAEO,MAAA;AACN,MAAA,wBAAA,CAAY,UAAA,EAAc,SAAA,EAAAA,QAAAA,GAA0B,IAAA,CAAO,gBAAA,EAAmB;AAC/E,QAAA,OAAA,KAAA,aAAA,CAAA,kCAAA,CAAA,UAAA,EAAA,SAAA,EAAAA,QAAA,CAAA,CAAA;AAEO,MAAA;MACN,cAAA,CAAY,MAAA,EAAAA,QAAAA,GAAc,IAAA,CAAA,gBAAA,EAAA;AAC3B,QAAA,OAAA,IAAA,CAAA,aAAA,CAAA,wBAAA,CAAA,MAAA,EAAAA,QAAA,CAAA,CAAA;AAEO,MAAA;MACN,qBAAA,CAAY,MAAA,EAAcA,QAAAA,GAAA,IAAA,CAAA,gBAAA,EAAmC;AAC9D,QAAA,OAAA,IAAA,CAAA,aAAA,CAAA,+BAAA,CAAA,MAAA,EAAAA,QAAA,CAAA,CAAA;AAEO,MAAA;MACN,iBAAA,CAAY,MAAA,EAAAA,QAAAA,GAAc,IAAA,CAAA,gBAAA,EAAyB;AACpD,QAAA,OAAA,IAAA,CAAA,aAAA,CAAA,2BAAA,CAAA,MAAA,EAAAA,QAAA,CAAA,CAAA;AAEO,MAAA;MACN,wBAAA,CAAY,MAAA,EAAcA,QAAAA,GAAA,IAAA,CAAA,gBAAA,EAAgC;AAC3D,QAAA,OAAA,IAAA,CAAA,aAAA,CAAA,kCAAA,CAAA,MAAA,EAAAA,QAAA,CAAA,CAAA;AAEO,MAAA;MACN,WAAA,CAAO,MAAA,EAAKA,QAAAA,GAAc,IAAA,CAAA,gBAAA,EAAA;AAC3B,QAAA,OAAA,IAAA,CAAA,aAAA,CAAA,qBAAA,CAAA,MAAA,EAAAA,QAAA,CAAA,CAAA;AAEO,MAAA;MACN,cAAA,CAAY,MAAA,EAAAA,QAAAA,GAAc,IAAA,CAAA,gBAAA,EAAA;AAC3B,QAAA,OAAA,IAAA,CAAA,aAAA,CAAA,wBAAA,CAAA,MAAA,EAAAA,QAAA,CAAA,CAAA;AAEO,MAAA;AACN,MAAA,WAAA,CAAO,KAAA,EAAK,SAAA,EAAcA,QAAAA,GAAA,IAAA,CAAA,gBAAA,EAA8B;AACzD,QAAA,OAAA,KAAA,aAAA,CAAA,qBAAA,CAAA,KAAA,EAAA,SAAA,EAAAA,QAAA,CAAA,CAAA;AAEO,MAAA;AACN,MAAA,oBAAA,CAAY,OAAA,EAAc,KAAA,EAAAA,QAAAA,GAAA,IAAA,CAAA,gBAAA,EAAyC;AACpE,QAAA,OAAA,KAAA,aAAA,CAAA,8BAAA,CAAA,OAAA,EAAA,KAAA,EAAAA,QAAA,CAAA,CAAA;AAEO,MAAA;AACN,MAAA,oBAAA,CAAY,UAAA,EAAc,SAAA,EAAAA,QAAAA,GAAsB,IAAA,CAAO,gBAAA,EAAmB;AAC3E,QAAA,OAAA,KAAA,aAAA,CAAA,8BAAA,CAAA,UAAA,EAAA,SAAA,EAAAA,QAAA,CAAA,CAAA;AAEO,MAAA;MACN,KAAA,GAAA;AACD,QAAA,OAAA,OAAA,CAAA,SAAA,CAAA,IAAA,CAAA,WAAA,EAAA,CAAA,IAAA,CAAA,IAAA,EAAA,IAAA,CAAA,gBAAA,EAAA,IAAA,CAAA,WAAA,CAAA,CAAA;AAEO,MAAA;AACN,MAAA,MAAA,CAAA,KAAA,EAAY;AACb,QAAA,OAAA,WAAA,CAAA,IAAA,CAAA,IAAA,CAAA,CAAA,KAAA,IAAA,MAAA,CAAA,EAAA,CAAA,KAAA,CAAA,GAAA,MAAA,CAAA,GAAA,CAAA,IAAA,eAAA,CAAA,gBAAA,EAAA,IAAA,CAAA,gBAAA,CAAA,OAAA,IAAA,CAAA,SAAA,EAAA,KAAA,CAAA,IAAA,CAAA,IAAA,CAAA,CAAA,CAAA,EAAA,KAAA,CAAA,CAAA;AAEmB,MAAA;AAClB,KAAA;AAA+F,IAAA,MAAA,CAChG,sBAAA,qBAAA,CAAA;AAAA,IAEU,mBAAA,GAAmD,oBAAA;AAK9D,IAAA,OAAA,GAAA,MAAAiG,QAAAA,CAAA;AAzFgF,MAAA,MAAA,CAAAjG,QAAAA,EAAA;AAAnE,QAAA,OAAA,IAAA,gBAANA,QAAA,CAAA;;;ACAM,QAAA,OAAA,IAAN,gBAAaA,QAAA,CAAA;AACZ,MAAA;AACN,MAAA,MAAA,CAAAA,QAAAA,EAAW;AACZ,QAAA,OAAA,IAAA,gBAAAA,QAAA,CAAA;AAEO,MAAA;AACN,MAAA,OAAA,CAAAA,QAAAA,EAAW;AACZ,QAAA,OAAA,IAAA,iBAAAA,QAAA,CAAA;AAEO,MAAA;AACN,MAAA,IAAA,CAAAA,QAAAA,EAAW;AACZ,QAAA,OAAA,IAAA,cAAAA,QAAA,CAAA;AAEO,MAAA;AACN,MAAA,MAAA,CAAA,OAAWA,QAAAA,EAAA;AACZ,QAAA,OAAA,IAAA,eAAA,CAAA,KAAA,EAAA,CAAA,EAAAA,QAAA,CAAA;AAEO,MAAA;AACN,MAAA,SAAA,CAAOA,QAAAA,EAAI;AACZ,QAAA,OAAA,KAAA,OAAA,CAAA,MAAA,EAAA,EAAA,aAAA,EAAAA,UAAA,CAAA;AAEO,MAAA;AACN,MAAA,IAAA,CAAAA,QAAAA,EAAW;AACZ,QAAA,OAAA,KAAA,OAAA,CAAA,IAAA,EAAA,EAAA,aAAA,EAAAA,UAAA,CAAA;AAEO,MAAA;AACN,MAAA,OAAA,CAAAA,QAAAA,EAAY;AACb,QAAA,OAAA,IAAA,iBAAAA,QAAA,CAAA;AAEO,MAAA;AACN,MAAA,GAAA,CAAAA,QAAAA,EAAO;AACR,QAAA,OAAA,IAAA,qBAAAA,QAAA,CAAA;AAEO,MAAA;AACN,MAAA,OAAA,CAAAA,QAAAA,EAAW;AACZ,QAAA,OAAA,IAAA,qBAAAA,QAAA,CAAA;AAEO,MAAA;AACN,MAAA,KAAA,CAAAA,QAAAA,EAAW;AACZ,QAAA,OAAA,IAAA,eAAAA,QAAA,CAAA;AAEO,MAAA;AACN,MAAA,IAAA,CAAA,QAAWA,QAAAA,EAAA;AACZ,QAAA,OAAA,IAAA,CAAA,KAAA;UAEO,MAAA,CAAM,GAAA,CAA4B,CAAA,KAAA,KAAA,IAAA,CAAA,OAAA,CAAA,OAAA,EAAA,aAAA,EAAAA,QAAAA,EAAA,CAAA,CAAA;AACxCA,UAAAA;AACD,SAAA;AAEO,MAAA;AACN,MAAA,UAAA,CAAO,WAAKA,QAAAA,EAAA;AAAA,QAAA,OACX,IAAO,mBAAA,CAAoB,SAAA,EAAQA,QAAS,CAAA;AAAyB,MAAA;AACrE,MAAA,OAAA,CACD,OAAAA,QAAAA,EAAA;AACD,QAAA,IAAA,iBAAA,IAAA,EAAA;AAEO,UAAA,OAAqC,IAAA,CAAA,KAAAA,QAAAA,EAAc,WAAoD,EAAA,KAAA,CAAA,KAAA,EAAAA,UAAA,aAAA,CAAA;AAC7G,QAAA;AACD,QAAA,OAAA,IAAA,gBAAA,CAAA,KAAA,EAAAA,QAAAA,EAAA,aAAA,CAAA;AAEO,MAAA;AACN,MAAA,QAAA,CAAI,UAAAA,QAAAA,EAAiB;AACpB,QAAA,OAAA,IAAO,iBAAA,CAAmB,QAAA,EAAWA,QAAE,CAAA;AAAmC,MAAA;AAG3E,MAAA,KAAA,CAAA,YAAWA,QAAAA,EAAA;AACZ,QAAA,OAAA,IAAA,cAAA,CAAA,UAAA,EAAAA,QAAA,CAAA;AAEO,MAAA;AACN,MAAA,KAAA,CAAA,WAAWA,QAAAA,EAAA;AACZ,QAAA,OAAA,IAAA,cAAA,CAAA,SAAA,EAAAA,QAAA,CAAA;AAEO,MAAA;MACN,UAAA,CAAO,IAAA,GAAI,cAAeA,QAAAA,EAAY;AACvC,QAAA,OAAA,IAAA,mBAAA,CAAA,IAAA,EAAAA,QAAA,CAAA;AAIO,MAAA;AACN,MAAA,SAAA,CAAOA,QAAAA,EAAI;AACZ,QAAA,OAAA,IAAA,CAAA,UAAA,CAAA,WAAA,EAAAA,QAAA,CAAA;AAEO,MAAA;AACN,MAAA,UAAA,CAAOA,QAAAA,EAAI;AACZ,QAAA,OAAA,IAAA,CAAA,UAAA,CAAA,YAAA,EAAAA,QAAA,CAAA;AAEO,MAAA;AACN,MAAA,iBAAA,CAAYA,QAAAA,EAAsB;AACnC,QAAA,OAAA,IAAA,CAAA,UAAA,CAAA,mBAAA,EAAAA,QAAA,CAAA;AAEO,MAAA;AACN,MAAA,UAAA,CAAOA,QAAAA,EAAK;AACb,QAAA,OAAA,IAAA,CAAA,UAAA,CAAA,YAAA,EAAAA,QAAA,CAAA;AAEO,MAAA;AACN,MAAA,WAAA,CAAOA,QAAAA,EAAK;AACb,QAAA,OAAA,IAAA,CAAA,UAAA,CAAA,aAAA,EAAAA,QAAA,CAAA;AAEO,MAAA;AACN,MAAA,UAAA,CAAOA,QAAAA,EAAK;AACb,QAAA,OAAA,IAAA,CAAA,UAAA,CAAA,YAAA,EAAAA,QAAA,CAAA;AAEO,MAAA;AACN,MAAA,WAAA,CAAOA,QAAAA,EAAK;AACb,QAAA,OAAA,IAAA,CAAA,UAAA,CAAA,aAAA,EAAAA,QAAA,CAAA;AAEO,MAAA;AACN,MAAA,YAAA,CAAOA,QAAAA,EAAK;AACb,QAAA,OAAA,IAAA,CAAA,UAAA,CAAA,cAAA,EAAAA,QAAA,CAAA;AAEO,MAAA;AACN,MAAA,YAAA,CAAOA,QAAAA,EAAK;AACb,QAAA,OAAA,IAAA,CAAA,UAAA,CAAA,cAAA,EAAAA,QAAA,CAAA;AAEO,MAAA;AACN,MAAA,aAAA,CAAYA,QAAAA,EAAA;AACb,QAAA,OAAA,IAAA,CAAA,UAAA,CAAA,eAAA,EAAAA,QAAA,CAAA;AAEO,MAAA;AACN,MAAA,cAAA,CAAYA,QAAAA,EAAA;AACb,QAAA,OAAA,IAAA,CAAA,UAAA,CAAA,gBAAA,EAAAA,QAAA,CAAA;AAEO,MAAA;AACN,MAAA,KAAA,CAAA,YAAYA,QAAAA,EAA0B;AACvC,QAAA,OAAA,IAAA,cAAA,CAAA,UAAA,EAAAA,QAAA,CAAA;AAEO,MAAA;AACN,MAAA,GAAA,CAAA,WAAYA,QAAAA,EAAA;AACb,QAAA,OAAA,IAAA,YAAA,CAAA,SAAA,EAAAA,QAAA,CAAA;AAEO,MAAA;AACN,MAAA,MAAA,CAAA,WAAWA,QAAAA,EAAA;AACZ,QAAA,OAAA,IAAA,eAAA,CAAA,SAAA,EAAAA,QAAA,CAAA;AAEO,MAAA;MACN,GAAA,CAAA,YAAA,EAAW6F,iBAAa7F,QAAAA,EAAW;AACpC,QAAA,OAAA,IAAA,YAAA,CAAA,YAAA,EAAA6F,eAAAA,EAAA7F,QAAA,CAAA;AAEO,MAAA;AACN,MAAA,IAAA,CAAA,WAAWA,QAAAA,EAAA;AACZ,QAAA,OAAA,IAAA,aAAA,CAAA,SAAA,EAAAA,QAAA,CAAA;AAEO,MAAA;AACN,KAAA;AAA6D,IAAA,MAAA,CAC9D,SAAA,QAAA,CAAA;AAAA,IAEO,MAAA,GAAuC,OAAA;AAG/C,IAAA,EAAA,GAAA,IAAA,MAAA,EAAA;;;;;AEnEO,SAAS,cAAA,CAAe,IAAA,EAAcA,QAAAA,GAAiC,EAAC,EAAW;AACzF,EAAA,MAAM;AACL,IAAA,SAAA,EAAAkG,UAAAA,GAAY,IAAA;AACZ,IAAA,UAAA,EAAAC,WAAAA,GAAa,IAAA;AACb,IAAA,IAAA,EAAAC,KAAAA,GAAO,IAAA;AACP,IAAA,MAAA,EAAAC,OAAAA,GAAS,IAAA;AACT,IAAA,SAAA,EAAAC,UAAAA,GAAY,IAAA;AACZ,IAAA,aAAA,EAAAC,cAAAA,GAAgB,IAAA;AAChB,IAAA,OAAA,EAAAC,QAAAA,GAAU,IAAA;IACV,gBAAA,GAAmB,IAAA;IACnB,iBAAA,GAAoB,IAAA;IACpB,MAAA,GAAS,IAAA;AACT,IAAA,OAAA,EAAAC,QAAAA,GAAU,KAAA;IACV,YAAA,GAAe,KAAA;IACf,YAAA,GAAe,KAAA;IACf,UAAA,GAAa;GACd,GAAIzG,QAAAA;AAEJ,EAAA,IAAI,CAAC,gBAAA,EAAkB;AACtB,IAAA,OAAO,IAAA,CACL,MAAM,KAAK,CAAA,CACX,IAAI,CAAC,SAAA,EAAW,OAAO,KAAA,KAAU;AACjC,MAAA,IAAI,QAAQ,CAAA,IAAK,KAAA,KAAU,KAAA,CAAM,MAAA,GAAS,GAAG,OAAO,SAAA;AACpD,MAAA,OAAO,eAAe,SAAA,EAAW;QAChC,UAAA,EAAAmG,WAAAA;QACA,IAAA,EAAAC,KAAAA;QACA,MAAA,EAAAC,OAAAA;QACA,SAAA,EAAAC,UAAAA;QACA,aAAA,EAAAC,cAAAA;QACA,OAAA,EAAAC,QAAAA;AACA,QAAA,iBAAA;AACA,QAAA,MAAA;QACA,OAAA,EAAAC,QAAAA;AACA,QAAA,YAAA;AACA,QAAA,YAAA;AACA,QAAA;OACA,CAAA;AACF,IAAA,CAAC,CAAA,CACA,IAAA,CAAKP,UAAAA,GAAY,WAAA,GAAc,KAAK,CAAA;AACvC,EAAA;AAEA,EAAA,IAAI,CAAC,iBAAA,EAAmB;AACvB,IAAA,OAAO,IAAA,CACL,MAAM,yBAAyB,CAAA,CAC/B,IAAI,CAAC,SAAA,EAAW,OAAO,KAAA,KAAU;AACjC,MAAA,IAAI,QAAQ,CAAA,IAAK,KAAA,KAAU,KAAA,CAAM,MAAA,GAAS,GAAG,OAAO,SAAA;AACpD,MAAA,OAAO,eAAe,SAAA,EAAW;QAChC,SAAA,EAAAA,UAAAA;QACA,IAAA,EAAAE,KAAAA;QACA,MAAA,EAAAC,OAAAA;QACA,SAAA,EAAAC,UAAAA;QACA,aAAA,EAAAC,cAAAA;QACA,OAAA,EAAAC,QAAAA;AACA,QAAA,MAAA;QACA,OAAA,EAAAC,QAAAA;AACA,QAAA,YAAA;AACA,QAAA,YAAA;AACA,QAAA;OACA,CAAA;AACF,IAAA,CAAC,CAAA,CACA,IAAA,CAAKN,WAAAA,GAAa,KAAA,GAAQ,GAAG,CAAA;AAChC,EAAA;AAEA,EAAA,IAAI,GAAA,GAAM,IAAA;AACV,EAAA,IAAI,MAAA,EAAQ,GAAA,GAAM,YAAA,CAAa,GAAG,CAAA;AAClC,EAAA,IAAIA,WAAAA,EAAY,GAAA,GAAM,gBAAA,CAAiB,GAAG,CAAA;AAC1C,EAAA,IAAID,UAAAA,EAAW,GAAA,GAAM,eAAA,CAAgB,GAAG,CAAA;AACxC,EAAA,IAAIG,OAAAA,EAAQ,GAAA,GAAM,YAAA,CAAa,GAAG,CAAA;AAClC,EAAA,IAAID,KAAAA,EAAM,GAAA,GAAM,UAAA,CAAW,GAAG,CAAA;AAC9B,EAAA,IAAIE,UAAAA,EAAW,GAAA,GAAM,eAAA,CAAgB,GAAG,CAAA;AACxC,EAAA,IAAIC,cAAAA,EAAe,GAAA,GAAM,mBAAA,CAAoB,GAAG,CAAA;AAChD,EAAA,IAAIC,QAAAA,EAAS,GAAA,GAAM,aAAA,CAAc,GAAG,CAAA;AACpC,EAAA,IAAIC,QAAAA,EAAS,GAAA,GAAM,aAAA,CAAc,GAAG,CAAA;AACpC,EAAA,IAAI,YAAA,EAAc,GAAA,GAAM,kBAAA,CAAmB,GAAG,CAAA;AAC9C,EAAA,IAAI,YAAA,EAAc,GAAA,GAAM,kBAAA,CAAmB,GAAG,CAAA;AAC9C,EAAA,IAAI,UAAA,EAAY,GAAA,GAAM,gBAAA,CAAiB,GAAG,CAAA;AAC1C,EAAA,OAAO,GAAA;AACR;AAOO,SAAS,gBAAgB,IAAA,EAAsB;AACrD,EAAA,OAAO,IAAA,CAAK,UAAA,CAAW,KAAA,EAAO,WAAW,CAAA;AAC1C;AAOO,SAAS,iBAAiB,IAAA,EAAsB;AACtD,EAAA,OAAO,IAAA,CAAK,WAAW,2BAAA,EAA6B,CAAC,UAAW,KAAA,CAAM,MAAA,KAAW,CAAA,GAAI,QAAA,GAAW,KAAM,CAAA;AACvG;AAOO,SAAS,aAAa,IAAA,EAAsB;AAClD,EAAA,IAAI,GAAA,GAAM,CAAA;AACV,EAAA,MAAM,UAAU,IAAA,CAAK,UAAA;AACpB,IAAA,yEAAA;AACA,IAAA,CAACC,IAAG,KAAA,KAAU;AACb,MAAA,IAAI,KAAA,KAAU,IAAA,EAAM,OAAO,EAAE,GAAA,GAAM,IAAI,CAAA,GAAA,EAAM,KAAK,CAAA,CAAA,GAAK,CAAA,EAAG,KAAK,CAAA,GAAA,CAAA;AAC/D,MAAA,OAAO,MAAM,KAAK,CAAA,CAAA;AACnB,IAAA;AACD,GAAA;AACA,EAAA,GAAA,GAAM,CAAA;AACN,EAAA,OAAO,OAAA,CAAQ,UAAA;AACd,IAAA,qFAAA;AACA,IAAA,CAACA,IAAG,KAAA,KAAU;AACb,MAAA,IAAI,KAAA,KAAU,IAAA,EAAM,OAAO,EAAE,GAAA,GAAM,IAAI,CAAA,GAAA,EAAM,KAAK,CAAA,CAAA,GAAK,CAAA,EAAG,KAAK,CAAA,GAAA,CAAA;AAC/D,MAAA,OAAO,MAAM,KAAK,CAAA,CAAA;AACnB,IAAA;AACD,GAAA;AACD;AAOO,SAAS,WAAW,IAAA,EAAsB;AAChD,EAAA,IAAI,GAAA,GAAM,CAAA;AACV,EAAA,OAAO,IAAA,CAAK,UAAA,CAAW,YAAA,EAAc,CAACA,IAAG,KAAA,KAAU;AAClD,IAAA,IAAI,KAAA,SAAc,EAAE,GAAA,GAAM,IAAI,CAAA,EAAG,KAAK,CAAA,MAAA,CAAA,GAAW,CAAA,MAAA,EAAS,KAAK,CAAA,CAAA;AAC/D,IAAA,OAAO,QAAA;EACR,CAAC,CAAA;AACF;AAOO,SAAS,gBAAgB,IAAA,EAAsB;AACrD,EAAA,IAAI,GAAA,GAAM,CAAA;AACV,EAAA,OAAO,IAAA,CAAK,UAAA,CAAW,4CAAA,EAA8C,CAACA,IAAG,KAAA,KAAU;AAClF,IAAA,IAAI,KAAA,SAAc,EAAE,GAAA,GAAM,IAAI,CAAA,EAAG,KAAK,CAAA,MAAA,CAAA,GAAW,CAAA,MAAA,EAAS,KAAK,CAAA,CAAA;AAC/D,IAAA,OAAO,QAAA;EACR,CAAC,CAAA;AACF;AAOO,SAAS,oBAAoB,IAAA,EAAsB;AACzD,EAAA,OAAO,IAAA,CAAK,UAAA,CAAW,IAAA,EAAM,QAAQ,CAAA;AACtC;AAOO,SAAS,cAAc,IAAA,EAAsB;AACnD,EAAA,OAAO,IAAA,CAAK,UAAA,CAAW,IAAA,EAAM,QAAQ,CAAA;AACtC;AAOO,SAAS,aAAa,IAAA,EAAsB;AAClD,EAAA,OAAO,IAAA,CAAK,UAAA,CAAW,IAAA,EAAM,MAAM,CAAA;AACpC;AAOO,SAAS,cAAc,IAAA,EAAsB;AACnD,EAAA,OAAO,IAAA,CAAK,UAAA,CAAW,kCAAA,EAAoC,YAAY,CAAA;AACxE;AAOO,SAAS,mBAAmB,IAAA,EAAsB;AACxD,EAAA,OAAO,IAAA,CAAK,UAAA,CAAW,mBAAA,EAAqB,UAAU,CAAA;AACvD;AAOO,SAAS,mBAAmB,IAAA,EAAsB;AACxD,EAAA,OAAO,IAAA,CAAK,UAAA,CAAW,cAAA,EAAgB,OAAO,CAAA;AAC/C;AAOO,SAAS,iBAAiB,IAAA,EAAsB;AACtD,EAAA,OAAO,IAAA,CAAK,UAAA,CAAW,eAAA,EAAiB,MAAM,CAAA;AAC/C;ACtSO,SAAS,SAAA,CAAU,UAAkB,OAAA,EAA0B;AACrE,EAAA,OAAO,YAAY,MAAA,GAAY,CAAA;EAAW,QAAQ;AAAa,MAAA,CAAA,GAAA,CAAA,MAAA,EAAS,QAAQ;EAAK,OAAO;;AAC7F;AAQO,SAAS,WAAmC,OAAA,EAAoC;AACtF,EAAA,OAAO,KAAK,OAAO,CAAA,EAAA,CAAA;AACpB;AAQO,SAAS,OAA+B,OAAA,EAAkC;AAChF,EAAA,OAAO,IAAI,OAAO,CAAA,CAAA,CAAA;AACnB;AAQO,SAAS,KAA6B,OAAA,EAAoC;AAChF,EAAA,OAAO,KAAK,OAAO,CAAA,EAAA,CAAA;AACpB;AASO,SAAS,WAAmC,OAAA,EAAoC;AACtF,EAAA,OAAO,UAAU,OAAO,CAAA;AACzB;AAQO,SAAS,UAAkC,OAAA,EAAoC;AACrF,EAAA,OAAO,KAAK,OAAO,CAAA,EAAA,CAAA;AACpB;AAQO,SAAS,cAAsC,OAAA,EAAoC;AACzF,EAAA,OAAO,KAAK,OAAO,CAAA,EAAA,CAAA;AACpB;AASO,SAAS,MAA8B,OAAA,EAAkC;AAC/E,EAAA,OAAO,KAAK,OAAO,CAAA,CAAA;AACpB;AASO,SAAS,WAAmC,OAAA,EAAoC;AACtF,EAAA,OAAO,OAAO,OAAO,CAAA,CAAA;AACtB;AAiBO,SAAS,cAAc,GAAA,EAAmB;AAChD,EAAA,OAAO,IAAI,GAAG,CAAA,CAAA,CAAA;AACf;AAuDO,SAAS,SAAA,CAAU,OAAA,EAAiB,GAAA,EAAmB,KAAA,EAAgB;AAC7E,EAAA,OAAO,KAAA,GAAQ,CAAA,CAAA,EAAI,OAAO,CAAA,EAAA,EAAK,GAAG,CAAA,EAAA,EAAK,KAAK,CAAA,EAAA,CAAA,GAAO,CAAA,CAAA,EAAI,OAAO,CAAA,EAAA,EAAK,GAAG,CAAA,CAAA,CAAA;AACvE;AAQO,SAAS,QAAgC,OAAA,EAAoC;AACnF,EAAA,OAAO,KAAK,OAAO,CAAA,EAAA,CAAA;AACpB;AAQO,SAAS,YAAsC,MAAA,EAAgC;AACrF,EAAA,OAAO,KAAK,MAAM,CAAA,CAAA,CAAA;AACnB;AAQO,SAAS,eAA4C,SAAA,EAAyC;AACpG,EAAA,OAAO,KAAK,SAAS,CAAA,CAAA,CAAA;AACtB;AAQO,SAAS,YAAsC,MAAA,EAAiC;AACtF,EAAA,OAAO,MAAM,MAAM,CAAA,CAAA,CAAA;AACpB;AAQO,SAAS,kBAA4C,MAAA,EAA+C;AAC1G,EAAA,OAAO,oBAAoB,MAAM,CAAA,CAAA,CAAA;AAClC;AA2DO,SAAS,kCAAA,CAMf,WAAA,EACA,mBAAA,EACA,cAAA,EACA,SAAA,EAI6C;AAC7C,EAAA,IAAI,cAAc,MAAA,EAAW;AAC5B,IAAA,OAAO,KAAK,WAAW,CAAA,CAAA,EAAI,mBAAmB,CAAA,CAAA,EAAI,cAAe,IAAI,SAAS,CAAA,CAAA,CAAA;AAC/E,EAAA;AAEA,EAAA,IAAI,mBAAmB,MAAA,EAAW;AACjC,IAAA,OAAO,CAAA,EAAA,EAAK,WAAW,CAAA,CAAA,EAAI,mBAAmB,IAAI,cAAc,CAAA,CAAA,CAAA;AACjE,EAAA;AAEA,EAAA,OAAO,CAAA,EAAA,EAAK,WAAW,CAAA,CAAA,EAAI,mBAAmB,CAAA,CAAA,CAAA;AAC/C;AAgEO,SAAS,WAAA,CACf,kBACA,QAAA,EACyD;AACzD,EAAA,MAAM1G,QAAAA,GACL,OAAO,gBAAA,KAAqB,QAAA,GACzB;IACA,EAAA,EAAI,gBAAA;AACJ,IAAA,QAAA,EAAU,QAAA,IAAY;GACvB,GACC,gBAAA;AAEJ,EAAA,MAAM,EAAE,EAAA,EAAI,QAAA,EAAU,UAAA,EAAY,IAAA,EAAM,WAAU,GAAIA,QAAAA;AAEtD,EAAA,OAAO,CAAA,CAAA,EAAI,aAAa,GAAA,GAAM,EAAE,IAAI,SAAA,IAAa,OAAO,IAAI,EAAE,CAAA,CAAA,CAAA;AAC/D;AA8CO,SAAS,WAAA,CACf,WACA,OAAA,EAC2G;AAC3G,EAAA,OAAO,CAAA,6BAAA,EAAgC,OAAA,IAAW,KAAK,CAAA,CAAA,EAAI,SAAS,CAAA,CAAA;AACrE;AA+BO,SAAS,WAAA,CACf,SAAA,EACA,SAAA,EACA,OAAA,EAGsE;AACtE,EAAA,OAAO,CAAA,EAAG,OAAA,KAAY,MAAA,GAAY,WAAA,CAAY,SAAS,CAAA,GAAI,WAAA,CAAY,SAAA,EAAW,OAAO,CAAC,CAAA,CAAA,EAAI,SAAS,CAAA,CAAA;AACxG;AA+CO,SAAS,OAAA,CAAQ,SAAiB,KAAA,EAAsB;AAC9D,EAAA,QAAQ,KAAA;IACP,KAAK,CAAA;AACJ,MAAA,OAAO,OAAO,OAAO,CAAA,CAAA;IACtB,KAAK,CAAA;AACJ,MAAA,OAAO,MAAM,OAAO,CAAA,CAAA;AACrB,IAAA;AACC,MAAA,OAAO,KAAK,OAAO,CAAA,CAAA;AACrB;AACD;AAYA,SAAS,YAAA,CAAa,OAAA,EAAiC,WAAA,EAAsB,KAAA,GAAQ,CAAA,EAAW;AAC/F,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,OAAO,CAAA,EAAG;AAC3B,IAAA,OAAO,OAAA,CAAQ,GAAA,CAAI,CAAC2G,QAAAA,KAAY,YAAA,CAAaA,QAAAA,EAAS,WAAA,EAAa,KAAA,GAAQ,CAAC,CAAC,CAAA,CAAE,IAAA,CAAK,IAAI,CAAA;AACzF,EAAA;AAEA,EAAA,OAAO,CAAA,EAAG,IAAA,CAAK,MAAA,CAAO,KAAA,GAAQ,CAAC,CAAC,CAAA,EAAG,WAAA,GAAc,CAAA,EAAG,WAAW,CAAA,CAAA,CAAA,GAAM,GAAG,IAAI,OAAO,CAAA,CAAA;AACpF;AAQO,SAAS,WAAA,CAAY,IAAA,EAA8B,WAAA,GAAc,CAAA,EAAW;AAClF,EAAA,OAAO,aAAa,IAAA,EAAM,IAAA,CAAK,GAAA,CAAI,WAAA,EAAa,CAAC,CAAC,CAAA;AACnD;AAOO,SAAS,cAAc,IAAA,EAAsC;AACnE,EAAA,OAAO,aAAa,IAAI,CAAA;AACzB;AAQO,SAAS,QAAgC,OAAA,EAAmC;AAClF,EAAA,OAAO,MAAM,OAAO,CAAA,CAAA;AACrB;AAuCO,SAAS,IAAA,CAAK,eAA+B,KAAA,EAAuC;AAC1F,EAAA,IAAI,OAAO,kBAAkB,QAAA,EAAU;AAEtC,IAAA,aAAA,GAAgB,IAAA,CAAK,OAAO,aAAA,EAAe,OAAA,MAAa,IAAA,CAAK,GAAA,MAAS,GAAK,CAAA;AAC5E,EAAA;AAEA,EAAA,OAAO,OAAO,UAAU,QAAA,GAAW,CAAA,GAAA,EAAM,aAAa,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA,CAAA,GAAM,CAAA,GAAA,EAAM,aAAa,CAAA,CAAA,CAAA;AACzF;AAyBO,SAAS,oBAAA,CACf,eACA,KAAA,EAGqE;AACrE,EAAA,MAAM,GAAA,GAAM,6CAA6C,aAAa,CAAA,MAAA,CAAA;AACtE,EAAA,OAAO,KAAA,GAAQ,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA,GAAK,GAAA;AACpC;AA6BO,SAAS,KAAA,CAA4BnD,QAAc,OAAA,EAAsD;AAC/G,EAAA,IAAI,OAAA,EAAS;AAEZ,IAAA,MAAM,eAAe,IAAI,eAAA;AACxB,MAAA,MAAA,CAAO,YAAY,MAAA,CAAO,OAAA,CAAQ,OAAO,CAAA,CAAE,IAAI,CAAC,CAAC,GAAA,EAAK,KAAK,MAAM,CAAC,GAAA,CAAI,aAAY,EAAG,KAAK,CAAC,CAAC;AAC7F,KAAA;AAEA,IAAA,OAAO,CAAA,CAAA,EAAIA,MAAK,CAAA,CAAA,EAAI,YAAA,CAAa,UAAU,CAAA,CAAA,CAAA;AAC5C,EAAA;AAEA,EAAA,OAAO,IAAIA,MAAK,CAAA,CAAA,CAAA;AACjB;AAQO,SAAS,YAA8CoD,YAAAA,EAA0B;AACvF,EAAA,IAAI,CAACA,YAAAA,CAAY,UAAA,CAAW,GAAG,CAAA,EAAG;AACjC,IAAA,MAAM,IAAI,MAAM,0CAA0C,CAAA;AAC3D,EAAA;AAEA,EAAA,OAAO,IAAIA,YAAW,CAAA,CAAA,CAAA;AACvB;;;;;;ADpmBgB,IAAAC,OAAAA,CAAA,gBAAA,gBAAA,CAAA;AAoFA,IAAAA,OAAAA,CAAA,iBAAA,iBAAA,CAAA;AASA,IAAAA,OAAAA,CAAA,kBAAA,kBAAA,CAAA;AASA,IAAAA,OAAAA,CAAA,cAAA,cAAA,CAAA;AAwBA,IAAAA,OAAAA,CAAA,YAAA,YAAA,CAAA;AAaA,IAAAA,OAAAA,CAAA,iBAAA,iBAAA,CAAA;AAaA,IAAAA,OAAAA,CAAA,qBAAA,qBAAA,CAAA;AASA,IAAAA,OAAAA,CAAA,eAAA,eAAA,CAAA;AASA,IAAAA,OAAAA,CAAA,cAAA,cAAA,CAAA;AASA,IAAAA,OAAAA,CAAA,eAAA,eAAA,CAAA;AASA,IAAAA,OAAAA,CAAA,oBAAA,oBAAA,CAAA;AASA,IAAAA,OAAAA,CAAA,oBAAA,oBAAA,CAAA;AASA,IAAAA,OAAAA,CAAA,kBAAA,kBAAA,CAAA;ACpSA,IAAAA,OAAAA,CAAA,WAAA,WAAA,CAAA;AAUA,IAAAA,OAAAA,CAAA,YAAA,YAAA,CAAA;AAUA,IAAAA,OAAAA,CAAA,QAAA,QAAA,CAAA;AAUA,IAAAA,OAAAA,CAAA,MAAA,MAAA,CAAA;AAWA,IAAAA,OAAAA,CAAA,YAAA,YAAA,CAAA;AAUA,IAAAA,OAAAA,CAAA,WAAA,WAAA,CAAA;AAUA,IAAAA,OAAAA,CAAA,eAAA,eAAA,CAAA;AAWA,IAAAA,OAAAA,CAAA,OAAA,OAAA,CAAA;AAWA,IAAAA,OAAAA,CAAA,YAAA,YAAA,CAAA;AAmBA,IAAAA,OAAAA,CAAA,eAAA,eAAA,CAAA;AAyDA,IAAAA,OAAAA,CAAA,WAAA,WAAA,CAAA;AAUA,IAAAA,OAAAA,CAAA,SAAA,SAAA,CAAA;AAUA,IAAAA,OAAAA,CAAA,aAAA,aAAA,CAAA;AAUA,IAAAA,OAAAA,CAAA,gBAAA,gBAAA,CAAA;AAUA,IAAAA,OAAAA,CAAA,aAAA,aAAA,CAAA;AAUA,IAAAA,OAAAA,CAAA,mBAAA,mBAAA,CAAA;AA6DA,IAAAA,OAAAA,CAAA,oCAAA,oCAAA,CAAA;AAuFA,IAAAA,OAAAA,CAAA,aAAA,aAAA,CAAA;AA6DA,IAAAA,OAAAA,CAAA,aAAA,aAAA,CAAA;AAoCA,IAAAA,OAAAA,CAAA,aAAA,aAAA,CAAA;AAuDA,IAAAA,OAAAA,CAAA,SAAA,SAAA,CAAA;AAqBP,IAAAA,OAAAA,CAAA,cAAA,cAAA,CAAA;AAcO,IAAAA,OAAAA,CAAA,aAAA,aAAA,CAAA;AASA,IAAAA,OAAAA,CAAA,eAAA,eAAA,CAAA;AAUA,IAAAA,OAAAA,CAAA,SAAA,SAAA,CAAA;AAyCA,IAAAA,OAAAA,CAAA,MAAA,MAAA,CAAA;AAgCA,IAAAA,OAAAA,CAAA,sBAAA,sBAAA,CAAA;AAqCA,IAAAA,OAAAA,CAAA,OAAA,OAAA,CAAA;AAmBA,IAAAA,OAAAA,CAAA,aAAA,aAAA,CAAA;;;;;;;;;ACrpBH,IAAA5G,SAAA,cAAA,GAAiB,IAAA;AAK9B,IAAA,IAAY6G,eAAAA;AAAZ,IAAA,CAAA,SAAYA,eAAAA,EAAc;AAIzB,MAAAA,eAAAA,CAAAA,eAAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAA;AAKA,MAAAA,eAAAA,CAAAA,eAAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAA;AAIA,MAAAA,eAAAA,CAAAA,eAAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAA;AAIA,MAAAA,eAAAA,CAAAA,eAAAA,CAAA,gBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,gBAAA;AAIA,MAAAA,eAAAA,CAAAA,eAAAA,CAAA,kBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,kBAAA;AAIA,MAAAA,eAAAA,CAAAA,eAAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAA;AAIA,MAAAA,eAAAA,CAAAA,eAAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAA;AAIA,MAAAA,eAAAA,CAAAA,eAAAA,CAAA,qBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,qBAAA;AAIA,MAAAA,eAAAA,CAAAA,eAAAA,CAAA,gBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,gBAAA;AAIA,MAAAA,eAAAA,CAAAA,eAAAA,CAAA,OAAA,CAAA,GAAA,EAAA,CAAA,GAAA,OAAA;AAIA,MAAAA,eAAAA,CAAAA,eAAAA,CAAA,cAAA,CAAA,GAAA,EAAA,CAAA,GAAA,cAAA;AAIA,MAAAA,eAAAA,CAAAA,eAAAA,CAAA,yBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,yBAAA;AACD,IAAA,CAAA,EAlDYA,eAAAA,KAAc7G,QAAAA,CAAA,cAAA,GAAd6G,eAAAA,GAAc,EAAA,CAAA,CAAA;AAuD1B,IAAA,IAAYC,kBAAAA;AAAZ,IAAA,CAAA,SAAYA,kBAAAA,EAAiB;AAI5B,MAAAA,kBAAAA,CAAAA,kBAAAA,CAAA,cAAA,CAAA,GAAA,GAAA,CAAA,GAAA,cAAA;AAMA,MAAAA,kBAAAA,CAAAA,kBAAAA,CAAA,eAAA,CAAA,GAAA,IAAA,CAAA,GAAA,eAAA;AAMA,MAAAA,kBAAAA,CAAAA,kBAAAA,CAAA,aAAA,CAAA,GAAA,IAAA,CAAA,GAAA,aAAA;AAMA,MAAAA,kBAAAA,CAAAA,kBAAAA,CAAA,kBAAA,CAAA,GAAA,IAAA,CAAA,GAAA,kBAAA;AAMA,MAAAA,kBAAAA,CAAAA,kBAAAA,CAAA,sBAAA,CAAA,GAAA,IAAA,CAAA,GAAA,sBAAA;AAIA,MAAAA,kBAAAA,CAAAA,kBAAAA,CAAA,sBAAA,CAAA,GAAA,IAAA,CAAA,GAAA,sBAAA;AAMA,MAAAA,kBAAAA,CAAAA,kBAAAA,CAAA,YAAA,CAAA,GAAA,IAAA,CAAA,GAAA,YAAA;AAIA,MAAAA,kBAAAA,CAAAA,kBAAAA,CAAA,aAAA,CAAA,GAAA,IAAA,CAAA,GAAA,aAAA;AAIA,MAAAA,kBAAAA,CAAAA,kBAAAA,CAAA,iBAAA,CAAA,GAAA,IAAA,CAAA,GAAA,iBAAA;AAMA,MAAAA,kBAAAA,CAAAA,kBAAAA,CAAA,cAAA,CAAA,GAAA,IAAA,CAAA,GAAA,cAAA;AAMA,MAAAA,kBAAAA,CAAAA,kBAAAA,CAAA,kBAAA,CAAA,GAAA,IAAA,CAAA,GAAA,kBAAA;AAIA,MAAAA,kBAAAA,CAAAA,kBAAAA,CAAA,mBAAA,CAAA,GAAA,IAAA,CAAA,GAAA,mBAAA;AAMA,MAAAA,kBAAAA,CAAAA,kBAAAA,CAAA,gBAAA,CAAA,GAAA,IAAA,CAAA,GAAA,gBAAA;AAQA,MAAAA,kBAAAA,CAAAA,kBAAAA,CAAA,mBAAA,CAAA,GAAA,IAAA,CAAA,GAAA,mBAAA;AACD,IAAA,CAAA,EA7EYA,kBAAAA,KAAiB9G,QAAAA,CAAA,iBAAA,GAAjB8G,kBAAAA,GAAiB,EAAA,CAAA,CAAA;AAkF7B,IAAA,IAAYC,kBAAAA;AAAZ,IAAA,CAAA,SAAYA,kBAAAA,EAAiB;AAC5B,MAAAA,kBAAAA,CAAAA,kBAAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAA;AACA,MAAAA,kBAAAA,CAAAA,kBAAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAA;AACA,MAAAA,kBAAAA,CAAAA,kBAAAA,CAAA,iBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,iBAAA;AAIA,MAAAA,kBAAAA,CAAAA,kBAAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAA;AACA,MAAAA,kBAAAA,CAAAA,kBAAAA,CAAA,kBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,kBAAA;AAIA,MAAAA,kBAAAA,CAAAA,kBAAAA,CAAA,wBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,wBAAA;AACA,MAAAA,kBAAAA,CAAAA,kBAAAA,CAAA,mBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,mBAAA;AACA,MAAAA,kBAAAA,CAAAA,kBAAAA,CAAA,eAAA,CAAA,GAAA,EAAA,CAAA,GAAA,eAAA;AACA,MAAAA,kBAAAA,CAAAA,kBAAAA,CAAA,cAAA,CAAA,GAAA,EAAA,CAAA,GAAA,cAAA;AACA,MAAAA,kBAAAA,CAAAA,kBAAAA,CAAA,kBAAA,CAAA,GAAA,GAAA,CAAA,GAAA,kBAAA;AACA,MAAAA,kBAAAA,CAAAA,kBAAAA,CAAA,gBAAA,CAAA,GAAA,GAAA,CAAA,GAAA,gBAAA;AACA,MAAAA,kBAAAA,CAAAA,kBAAAA,CAAA,eAAA,CAAA,GAAA,GAAA,CAAA,GAAA,eAAA;AACA,MAAAA,kBAAAA,CAAAA,kBAAAA,CAAA,uBAAA,CAAA,GAAA,IAAA,CAAA,GAAA,uBAAA;AACA,MAAAA,kBAAAA,CAAAA,kBAAAA,CAAA,oBAAA,CAAA,GAAA,IAAA,CAAA,GAAA,oBAAA;AACA,MAAAA,kBAAAA,CAAAA,kBAAAA,CAAA,gBAAA,CAAA,GAAA,IAAA,CAAA,GAAA,gBAAA;AACA,MAAAA,kBAAAA,CAAAA,kBAAAA,CAAA,wBAAA,CAAA,GAAA,IAAA,CAAA,GAAA,wBAAA;AACA,MAAAA,kBAAAA,CAAAA,kBAAAA,CAAA,qBAAA,CAAA,GAAA,KAAA,CAAA,GAAA,qBAAA;AACA,MAAAA,kBAAAA,CAAAA,kBAAAA,CAAA,gBAAA,CAAA,GAAA,KAAA,CAAA,GAAA,gBAAA;AACA,MAAAA,kBAAAA,CAAAA,kBAAAA,CAAA,sBAAA,CAAA,GAAA,KAAA,CAAA,GAAA,sBAAA;AACA,MAAAA,kBAAAA,CAAAA,kBAAAA,CAAA,6BAAA,CAAA,GAAA,OAAA,CAAA,GAAA,6BAAA;AACA,MAAAA,kBAAAA,CAAAA,kBAAAA,CAAA,yBAAA,CAAA,GAAA,OAAA,CAAA,GAAA,yBAAA;AACA,MAAAA,kBAAAA,CAAAA,kBAAAA,CAAA,mBAAA,CAAA,GAAA,QAAA,CAAA,GAAA,mBAAA;AACA,MAAAA,kBAAAA,CAAAA,kBAAAA,CAAA,oBAAA,CAAA,GAAA,QAAA,CAAA,GAAA,oBAAA;AACD,IAAA,CAAA,EA9BYA,kBAAAA,KAAiB/G,QAAAA,CAAA,iBAAA,GAAjB+G,kBAAAA,GAAiB,EAAA,CAAA,CAAA;AAmC7B,IAAA,IAAYC,sBAAAA;AAAZ,IAAA,CAAA,SAAYA,sBAAAA,EAAqB;AAChC,MAAAA,sBAAAA,CAAA,qCAAA,CAAA,GAAA,wCAAA;AACA,MAAAA,sBAAAA,CAAA,+BAAA,CAAA,GAAA,kCAAA;AACA,MAAAA,sBAAAA,CAAA,0BAAA,CAAA,GAAA,6BAAA;AACA,MAAAA,sBAAAA,CAAA,0BAAA,CAAA,GAAA,6BAAA;AACA,MAAAA,sBAAAA,CAAA,0BAAA,CAAA,GAAA,6BAAA;AACA,MAAAA,sBAAAA,CAAA,eAAA,CAAA,GAAA,gBAAA;AACA,MAAAA,sBAAAA,CAAA,eAAA,CAAA,GAAA,gBAAA;AACA,MAAAA,sBAAAA,CAAA,mBAAA,CAAA,GAAA,qBAAA;AACA,MAAAA,sBAAAA,CAAA,eAAA,CAAA,GAAA,gBAAA;AACA,MAAAA,sBAAAA,CAAA,mBAAA,CAAA,GAAA,oBAAA;AACA,MAAAA,sBAAAA,CAAA,mBAAA,CAAA,GAAA,oBAAA;AACA,MAAAA,sBAAAA,CAAA,mBAAA,CAAA,GAAA,oBAAA;AACA,MAAAA,sBAAAA,CAAA,0BAAA,CAAA,GAAA,8BAAA;AACA,MAAAA,sBAAAA,CAAA,aAAA,CAAA,GAAA,eAAA;AACA,MAAAA,sBAAAA,CAAA,gBAAA,CAAA,GAAA,kBAAA;AACA,MAAAA,sBAAAA,CAAA,aAAA,CAAA,GAAA,cAAA;AACA,MAAAA,sBAAAA,CAAA,aAAA,CAAA,GAAA,cAAA;AACA,MAAAA,sBAAAA,CAAA,mBAAA,CAAA,GAAA,qBAAA;AACA,MAAAA,sBAAAA,CAAA,yBAAA,CAAA,GAAA,2BAAA;AACA,MAAAA,sBAAAA,CAAA,gBAAA,CAAA,GAAA,kBAAA;AACA,MAAAA,sBAAAA,CAAA,mBAAA,CAAA,GAAA,qBAAA;AACA,MAAAA,sBAAAA,CAAA,mBAAA,CAAA,GAAA,qBAAA;AACA,MAAAA,sBAAAA,CAAA,mBAAA,CAAA,GAAA,qBAAA;AACA,MAAAA,sBAAAA,CAAA,iBAAA,CAAA,GAAA,mBAAA;AACA,MAAAA,sBAAAA,CAAA,iBAAA,CAAA,GAAA,mBAAA;AACA,MAAAA,sBAAAA,CAAA,iBAAA,CAAA,GAAA,mBAAA;AACA,MAAAA,sBAAAA,CAAA,2BAAA,CAAA,GAAA,8BAAA;AACA,MAAAA,sBAAAA,CAAA,2BAAA,CAAA,GAAA,8BAAA;AACA,MAAAA,sBAAAA,CAAA,2BAAA,CAAA,GAAA,8BAAA;AACA,MAAAA,sBAAAA,CAAA,4BAAA,CAAA,GAAA,gCAAA;AACA,MAAAA,sBAAAA,CAAA,+BAAA,CAAA,GAAA,mCAAA;AACA,MAAAA,sBAAAA,CAAA,4BAAA,CAAA,GAAA,+BAAA;AACA,MAAAA,sBAAAA,CAAA,4BAAA,CAAA,GAAA,+BAAA;AACA,MAAAA,sBAAAA,CAAA,6BAAA,CAAA,GAAA,gCAAA;AACA,MAAAA,sBAAAA,CAAA,4BAAA,CAAA,GAAA,+BAAA;AACA,MAAAA,sBAAAA,CAAA,kBAAA,CAAA,GAAA,mBAAA;AACA,MAAAA,sBAAAA,CAAA,qBAAA,CAAA,GAAA,uBAAA;AACA,MAAAA,sBAAAA,CAAA,aAAA,CAAA,GAAA,cAAA;AACA,MAAAA,sBAAAA,CAAA,mBAAA,CAAA,GAAA,oBAAA;AACA,MAAAA,sBAAAA,CAAA,mBAAA,CAAA,GAAA,oBAAA;AACA,MAAAA,sBAAAA,CAAA,mBAAA,CAAA,GAAA,oBAAA;AACA,MAAAA,sBAAAA,CAAA,mBAAA,CAAA,GAAA,oBAAA;AACA,MAAAA,sBAAAA,CAAA,cAAA,CAAA,GAAA,eAAA;AACA,MAAAA,sBAAAA,CAAA,cAAA,CAAA,GAAA,eAAA;AACA,MAAAA,sBAAAA,CAAA,eAAA,CAAA,GAAA,gBAAA;AACA,MAAAA,sBAAAA,CAAA,eAAA,CAAA,GAAA,gBAAA;AACA,MAAAA,sBAAAA,CAAA,mBAAA,CAAA,GAAA,qBAAA;AACA,MAAAA,sBAAAA,CAAA,oBAAA,CAAA,GAAA,uBAAA;AACA,MAAAA,sBAAAA,CAAA,uBAAA,CAAA,GAAA,0BAAA;AACA,MAAAA,sBAAAA,CAAA,oBAAA,CAAA,GAAA,sBAAA;AACA,MAAAA,sBAAAA,CAAA,uBAAA,CAAA,GAAA,yBAAA;AACA,MAAAA,sBAAAA,CAAA,0BAAA,CAAA,GAAA,6BAAA;AACA,MAAAA,sBAAAA,CAAA,4BAAA,CAAA,GAAA,+BAAA;AACA,MAAAA,sBAAAA,CAAA,eAAA,CAAA,GAAA,gBAAA;AACA,MAAAA,sBAAAA,CAAA,gBAAA,CAAA,GAAA,iBAAA;AACA,MAAAA,sBAAAA,CAAA,aAAA,CAAA,GAAA,cAAA;AACA,MAAAA,sBAAAA,CAAA,OAAA,CAAA,GAAA,OAAA;AACA,MAAAA,sBAAAA,CAAA,SAAA,CAAA,GAAA,SAAA;AACA,MAAAA,sBAAAA,CAAA,qBAAA,CAAA,GAAA,uBAAA;AACA,MAAAA,sBAAAA,CAAA,qBAAA,CAAA,GAAA,uBAAA;AACA,MAAAA,sBAAAA,CAAA,qBAAA,CAAA,GAAA,uBAAA;AACA,MAAAA,sBAAAA,CAAA,oBAAA,CAAA,GAAA,qBAAA;AACA,MAAAA,sBAAAA,CAAA,oBAAA,CAAA,GAAA,qBAAA;AACA,MAAAA,sBAAAA,CAAA,oBAAA,CAAA,GAAA,qBAAA;AACA,MAAAA,sBAAAA,CAAA,cAAA,CAAA,GAAA,eAAA;AACA,MAAAA,sBAAAA,CAAA,cAAA,CAAA,GAAA,eAAA;AACA,MAAAA,sBAAAA,CAAA,gBAAA,CAAA,GAAA,kBAAA;AACA,MAAAA,sBAAAA,CAAA,qBAAA,CAAA,GAAA,uBAAA;AACA,MAAAA,sBAAAA,CAAA,oBAAA,CAAA,GAAA,sBAAA;AACA,MAAAA,sBAAAA,CAAA,cAAA,CAAA,GAAA,eAAA;AACA,MAAAA,sBAAAA,CAAA,aAAA,CAAA,GAAA,cAAA;AACA,MAAAA,sBAAAA,CAAA,YAAA,CAAA,GAAA,aAAA;AACA,MAAAA,sBAAAA,CAAA,wBAAA,CAAA,GAAA,2BAAA;AACA,MAAAA,sBAAAA,CAAA,mBAAA,CAAA,GAAA,qBAAA;AACA,MAAAA,sBAAAA,CAAA,kBAAA,CAAA,GAAA,oBAAA;AACA,MAAAA,sBAAAA,CAAA,gBAAA,CAAA,GAAA,iBAAA;AACD,IAAA,CAAA,EA7EYA,sBAAAA,KAAqBhH,QAAAA,CAAA,qBAAA,GAArBgH,sBAAAA,GAAqB,EAAA,CAAA,CAAA;AA8zDjC,IAAA,IAAYC,oCAAAA;AAAZ,IAAA,CAAA,SAAYA,oCAAAA,EAAmC;AAI9C,MAAAA,oCAAAA,CAAAA,oCAAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAA;AAIA,MAAAA,oCAAAA,CAAAA,oCAAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAA;AACD,IAAA,CAAA,EATYA,oCAAAA,KAAmCjH,QAAAA,CAAA,mCAAA,GAAnCiH,oCAAAA,GAAmC,EAAA,CAAA,CAAA;;;;;;;;;AC5hE/C,IAAA,IAAM,eAAA,GAAkB,WAAA;AACxB,IAAA,IAAM,eAAA,GAAkB,EAAA;AAKX,IAAAjH,SAAA,kBAAA,GAAqB;;;;;;MAMjC,IAAA,EAAM,qBAAA;;;;;;;;MAQN,gBAAA,EAAkB,sBAAA;;;;;;;;MAQlB,wBAAA,EAA0B,uBAAA;;;;;;MAM1B,OAAA,EAAS,qBAAA;;;;;;MAMT,IAAA,EAAM,sBAAA;;;;;;MAMN,YAAA,EACC,2PAAA;;;;;;MAMD,KAAA,EAAO,sDAAA;;;;;;MAMP,aAAA,EAAe,qDAAA;;;;;;MAMf,WAAA,EAAa,uCAAA;;;;;;AAMb,MAAA,SAAA,EAAW,IAAI,MAAA,CAAO,CAAA,wBAAA,EAA2B,eAAe,CAAA,cAAA,EAAiB,eAAe,CAAA,KAAA,CAAO,CAAA;;;;;;AAMvG,MAAA,sBAAA,EAAwB,IAAI,MAAA,CAAO,CAAA,wBAAA,EAA2B,eAAe,CAAA,GAAA,CAAK,CAAA;;;;;;AAMlF,MAAA,eAAA,EAAiB,IAAI,MAAA,CAAO,CAAA,wBAAA,EAA2B,eAAe,CAAA,aAAA,EAAgB,eAAe,CAAA,GAAA,CAAK,CAAA;;;;;;MAM1G,eAAA,EAAiB,mDAAA;;;;;;MAMjB,UAAA,EAAY;;AAQb,IAAA,MAAA,CAAO,MAAA,CAAOA,SAAA,kBAAkB,CAAA;;;;;;;;;ACxGnB,IAAAA,SAAA,mBAAA,GAAsB;;;;;;AAMlC,MAAA,mBAAA,EAAqB,EAAA,IAAM,EAAA;;;;AAK3B,MAAA,WAAA,EAAa,EAAA,IAAM,EAAA;;;;AAInB,MAAA,UAAA,EAAY,EAAA,IAAM,EAAA;;;;AAIlB,MAAA,aAAA,EAAe,EAAA,IAAM,EAAA;;;;;;AAMrB,MAAA,cAAA,EAAgB,EAAA,IAAM,EAAA;;;;AAItB,MAAA,WAAA,EAAa,EAAA,IAAM,EAAA;;;;;;AAMnB,MAAA,YAAA,EAAc,EAAA,IAAM,EAAA;;;;AAIpB,MAAA,YAAA,EAAc,EAAA,IAAM,EAAA;;;;;;AAMpB,MAAA,eAAA,EAAiB,EAAA,IAAM,EAAA;;;;;;AAMvB,MAAA,MAAA,EAAQ,EAAA,IAAM,EAAA;;;;;;AAMd,MAAA,WAAA,EAAa,EAAA,IAAM,GAAA;;;;;;;AAOnB,MAAA,YAAA,EAAc,EAAA,IAAM,GAAA;;;;;;AAMpB,MAAA,eAAA,EAAiB,EAAA,IAAM,GAAA;;;;;;AAMvB,MAAA,cAAA,EAAgB,EAAA,IAAM,GAAA;;;;;;AAMtB,MAAA,UAAA,EAAY,EAAA,IAAM,GAAA;;;;;;AAMlB,MAAA,WAAA,EAAa,EAAA,IAAM,GAAA;;;;;;AAMnB,MAAA,kBAAA,EAAoB,EAAA,IAAM,GAAA;;;;;;;AAO1B,MAAA,eAAA,EAAiB,EAAA,IAAM,GAAA;;;;;;AAMvB,MAAA,iBAAA,EAAmB,EAAA,IAAM,GAAA;;;;AAIzB,MAAA,iBAAA,EAAmB,EAAA,IAAM,GAAA;;;;;;AAMzB,MAAA,OAAA,EAAS,EAAA,IAAM,GAAA;;;;;;AAMf,MAAA,KAAA,EAAO,EAAA,IAAM,GAAA;;;;;;AAMb,MAAA,WAAA,EAAa,EAAA,IAAM,GAAA;;;;;;AAMnB,MAAA,aAAA,EAAe,EAAA,IAAM,GAAA;;;;;;AAMrB,MAAA,WAAA,EAAa,EAAA,IAAM,GAAA;;;;;;AAMnB,MAAA,MAAA,EAAQ,EAAA,IAAM,GAAA;;;;AAId,MAAA,cAAA,EAAgB,EAAA,IAAM,GAAA;;;;AAItB,MAAA,eAAA,EAAiB,EAAA,IAAM,GAAA;;;;;;AAMvB,MAAA,WAAA,EAAa,EAAA,IAAM,GAAA;;;;;;AAMnB,MAAA,cAAA,EAAgB,EAAA,IAAM,GAAA;;;;;;AAMtB,MAAA,uBAAA,EAAyB,EAAA,IAAM,GAAA;;;;AAI/B,MAAA,sBAAA,EAAwB,EAAA,IAAM,GAAA;;;;;;AAM9B,MAAA,sBAAA,EAAwB,EAAA,IAAM,GAAA;;;;;;AAM9B,MAAA,cAAA,EAAgB,EAAA,IAAM,GAAA;;;;;;AAMtB,MAAA,YAAA,EAAc,EAAA,IAAM,GAAA;;;;;;AAMpB,MAAA,aAAA,EAAe,EAAA,IAAM,GAAA;;;;;;AAMrB,MAAA,mBAAA,EAAqB,EAAA,IAAM,GAAA;;;;;;AAM3B,MAAA,oBAAA,EAAsB,EAAA,IAAM,GAAA;;;;;;AAM5B,MAAA,mBAAA,EAAqB,EAAA,IAAM,GAAA;;;;;;AAM3B,MAAA,qBAAA,EAAuB,EAAA,IAAM,GAAA;;;;;;AAM7B,MAAA,qBAAA,EAAuB,EAAA,IAAM,GAAA;;;;;AAK7B,MAAA,eAAA,EAAiB,EAAA,IAAM,GAAA;;;;AAIvB,MAAA,gCAAA,EAAkC,EAAA,IAAM,GAAA;;;;;;AAMxC,MAAA,aAAA,EAAe,EAAA,IAAM,GAAA;;;;AAIrB,MAAA,sBAAA,EAAwB,EAAA,IAAM,GAAA;;;;;;AAM9B,MAAA,YAAA,EAAc,EAAA,IAAM,GAAA;;;;;;AAMpB,MAAA,iBAAA,EAAmB,EAAA,IAAM,GAAA;;;;;;AAMzB,MAAA,iBAAA,EAAmB,EAAA,IAAM,GAAA;;;;;;AAMzB,MAAA,SAAA,EAAW,EAAA,IAAM,GAAA;;;;;;AAMjB,MAAA,eAAA,EAAiB,EAAA,IAAM,GAAA;;;;;;AAMvB,MAAA,WAAA,EAAa,EAAA,IAAM,GAAA;;;;;;AAMnB,MAAA,cAAA,EAAgB,EAAA,IAAM;;AAQvB,IAAA,MAAA,CAAO,MAAA,CAAOA,SAAA,mBAAmB,CAAA;;;;;;;;;AClIjC,IAAA,IAAYkH,iBAAAA;AAAZ,IAAA,CAAA,SAAYA,iBAAAA,EAAgB;AAI3B,MAAAA,iBAAAA,CAAAA,iBAAAA,CAAA,kBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,kBAAA;AAIA,MAAAA,iBAAAA,CAAAA,iBAAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAA;AAIA,MAAAA,iBAAAA,CAAAA,iBAAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,GAAA,aAAA;AAIA,MAAAA,iBAAAA,CAAAA,iBAAAA,CAAA,eAAA,CAAA,GAAA,EAAA,CAAA,GAAA,eAAA;AAIA,MAAAA,iBAAAA,CAAAA,iBAAAA,CAAA,0CAAA,CAAA,GAAA,EAAA,CAAA,GAAA,0CAAA;AAIA,MAAAA,iBAAAA,CAAAA,iBAAAA,CAAA,iBAAA,CAAA,GAAA,IAAA,CAAA,GAAA,iBAAA;AAIA,MAAAA,iBAAAA,CAAAA,iBAAAA,CAAA,iBAAA,CAAA,GAAA,IAAA,CAAA,GAAA,iBAAA;AAIA,MAAAA,iBAAAA,CAAAA,iBAAAA,CAAA,wBAAA,CAAA,GAAA,IAAA,CAAA,GAAA,wBAAA;AAMA,MAAAA,iBAAAA,CAAAA,iBAAAA,CAAA,qBAAA,CAAA,GAAA,KAAA,CAAA,GAAA,qBAAA;AAMA,MAAAA,iBAAAA,CAAAA,iBAAAA,CAAA,4BAAA,CAAA,GAAA,KAAA,CAAA,GAAA,4BAAA;AAIA,MAAAA,iBAAAA,CAAAA,iBAAAA,CAAA,+BAAA,CAAA,GAAA,KAAA,CAAA,GAAA,+BAAA;AAIA,MAAAA,iBAAAA,CAAAA,iBAAAA,CAAA,UAAA,CAAA,GAAA,MAAA,CAAA,GAAA,UAAA;AAIA,MAAAA,iBAAAA,CAAAA,iBAAAA,CAAA,uBAAA,CAAA,GAAA,MAAA,CAAA,GAAA,uBAAA;AAKA,MAAAA,iBAAAA,CAAAA,iBAAAA,CAAA,8BAAA,CAAA,GAAA,MAAA,CAAA,GAAA,8BAAA;AAIA,MAAAA,iBAAAA,CAAAA,iBAAAA,CAAA,oBAAA,CAAA,GAAA,OAAA,CAAA,GAAA,oBAAA;AAIA,MAAAA,iBAAAA,CAAAA,iBAAAA,CAAA,yBAAA,CAAA,GAAA,OAAA,CAAA,GAAA,yBAAA;AACD,IAAA,CAAA,EAtEYA,iBAAAA,KAAgBlH,QAAAA,CAAA,gBAAA,GAAhBkH,iBAAAA,GAAgB,EAAA,CAAA,CAAA;AAyG5B,IAAA,IAAYC,sCAAAA;AAAZ,IAAA,CAAA,SAAYA,sCAAAA,EAAqC;AAIhD,MAAAA,sCAAAA,CAAAA,sCAAAA,CAAA,wBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,wBAAA;AAIA,MAAAA,sCAAAA,CAAAA,sCAAAA,CAAA,2BAAA,CAAA,GAAA,CAAA,CAAA,GAAA,2BAAA;AAIA,MAAAA,sCAAAA,CAAAA,sCAAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAA;AAIA,MAAAA,sCAAAA,CAAAA,sCAAAA,CAAA,iBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,iBAAA;AAIA,MAAAA,sCAAAA,CAAAA,sCAAAA,CAAA,yBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,yBAAA;AAIA,MAAAA,sCAAAA,CAAAA,sCAAAA,CAAA,4BAAA,CAAA,GAAA,CAAA,CAAA,GAAA,4BAAA;AAIA,MAAAA,sCAAAA,CAAAA,sCAAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAA;AAIA,MAAAA,sCAAAA,CAAAA,sCAAAA,CAAA,iBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,iBAAA;AACD,IAAA,CAAA,EAjCYA,sCAAAA,KAAqCnH,QAAAA,CAAA,qCAAA,GAArCmH,sCAAAA,GAAqC,EAAA,CAAA,CAAA;AAsCjD,IAAA,IAAYC,8BAAAA;AAAZ,IAAA,CAAA,SAAYA,8BAAAA,EAA6B;AAIxC,MAAAA,8BAAAA,CAAAA,8BAAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAA;AAIA,MAAAA,8BAAAA,CAAAA,8BAAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAA;AAIA,MAAAA,8BAAAA,CAAAA,8BAAAA,CAAA,mBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,mBAAA;AACD,IAAA,CAAA,EAbYA,8BAAAA,KAA6BpH,QAAAA,CAAA,6BAAA,GAA7BoH,8BAAAA,GAA6B,EAAA,CAAA,CAAA;;;;;;;;;ACnLzC,IAAA,IAAYC,cAAAA;AAAZ,IAAA,CAAA,SAAYA,cAAAA,EAAa;AACxB,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,GAAA,aAAA;AAEA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,eAAA,CAAA,GAAA,EAAA,CAAA,GAAA,eAAA;AACA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,eAAA,CAAA,GAAA,EAAA,CAAA,GAAA,eAAA;AACA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,eAAA,CAAA,GAAA,EAAA,CAAA,GAAA,eAAA;AACA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,wBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,wBAAA;AACA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,wBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,wBAAA;AACA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,wBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,wBAAA;AAEA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,YAAA,CAAA,GAAA,EAAA,CAAA,GAAA,YAAA;AACA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,aAAA,CAAA,GAAA,EAAA,CAAA,GAAA,aAAA;AACA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,cAAA,CAAA,GAAA,EAAA,CAAA,GAAA,cAAA;AACA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,iBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,iBAAA;AACA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,cAAA,CAAA,GAAA,EAAA,CAAA,GAAA,cAAA;AACA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,kBAAA;AACA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,YAAA,CAAA,GAAA,EAAA,CAAA,GAAA,YAAA;AACA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,kBAAA;AACA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,QAAA,CAAA,GAAA,EAAA,CAAA,GAAA,QAAA;AAEA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,YAAA,CAAA,GAAA,EAAA,CAAA,GAAA,YAAA;AACA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,YAAA,CAAA,GAAA,EAAA,CAAA,GAAA,YAAA;AACA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,YAAA,CAAA,GAAA,EAAA,CAAA,GAAA,YAAA;AAEA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,cAAA,CAAA,GAAA,EAAA,CAAA,GAAA,cAAA;AACA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,cAAA,CAAA,GAAA,EAAA,CAAA,GAAA,cAAA;AACA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,cAAA,CAAA,GAAA,EAAA,CAAA,GAAA,cAAA;AAEA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,eAAA,CAAA,GAAA,EAAA,CAAA,GAAA,eAAA;AACA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,eAAA,CAAA,GAAA,EAAA,CAAA,GAAA,eAAA;AACA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,eAAA,CAAA,GAAA,EAAA,CAAA,GAAA,eAAA;AAEA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,aAAA,CAAA,GAAA,EAAA,CAAA,GAAA,aAAA;AACA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,aAAA,CAAA,GAAA,EAAA,CAAA,GAAA,aAAA;AACA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,aAAA,CAAA,GAAA,EAAA,CAAA,GAAA,aAAA;AAEA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,eAAA,CAAA,GAAA,EAAA,CAAA,GAAA,eAAA;AACA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,mBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,mBAAA;AACA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,YAAA,CAAA,GAAA,EAAA,CAAA,GAAA,YAAA;AACA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,cAAA,CAAA,GAAA,EAAA,CAAA,GAAA,cAAA;AAEA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,mBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,mBAAA;AACA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,mBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,mBAAA;AACA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,mBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,mBAAA;AACA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,qBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,qBAAA;AACA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,qBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,qBAAA;AACA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,qBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,qBAAA;AAEA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,eAAA,CAAA,GAAA,EAAA,CAAA,GAAA,eAAA;AACA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,eAAA,CAAA,GAAA,EAAA,CAAA,GAAA,eAAA;AACA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,eAAA,CAAA,GAAA,EAAA,CAAA,GAAA,eAAA;AAEA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,2BAAA,CAAA,GAAA,GAAA,CAAA,GAAA,2BAAA;AACA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,2BAAA,CAAA,GAAA,GAAA,CAAA,GAAA,2BAAA;AACA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,2BAAA,CAAA,GAAA,GAAA,CAAA,GAAA,2BAAA;AAEA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,cAAA,CAAA,GAAA,GAAA,CAAA,GAAA,cAAA;AACA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,cAAA,CAAA,GAAA,GAAA,CAAA,GAAA,cAAA;AACA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,cAAA,CAAA,GAAA,GAAA,CAAA,GAAA,cAAA;AAEA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,oCAAA,CAAA,GAAA,GAAA,CAAA,GAAA,oCAAA;AAEA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,uBAAA,CAAA,GAAA,GAAA,CAAA,GAAA,uBAAA;AACA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,uBAAA,CAAA,GAAA,GAAA,CAAA,GAAA,uBAAA;AACA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,uBAAA,CAAA,GAAA,GAAA,CAAA,GAAA,uBAAA;AAEA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,0BAAA,CAAA,GAAA,GAAA,CAAA,GAAA,0BAAA;AACA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,0BAAA,CAAA,GAAA,GAAA,CAAA,GAAA,0BAAA;AACA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,0BAAA,CAAA,GAAA,GAAA,CAAA,GAAA,0BAAA;AACA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,4BAAA,CAAA,GAAA,GAAA,CAAA,GAAA,4BAAA;AACA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,6BAAA,CAAA,GAAA,GAAA,CAAA,GAAA,6BAAA;AACA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,yCAAA,CAAA,GAAA,GAAA,CAAA,GAAA,yCAAA;AACA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,8BAAA,CAAA,GAAA,GAAA,CAAA,GAAA,8BAAA;AAEA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,mCAAA,CAAA,GAAA,GAAA,CAAA,GAAA,mCAAA;AACA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,kCAAA,CAAA,GAAA,GAAA,CAAA,GAAA,kCAAA;AAEA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,wBAAA,CAAA,GAAA,GAAA,CAAA,GAAA,wBAAA;AACA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,wBAAA,CAAA,GAAA,GAAA,CAAA,GAAA,wBAAA;AACA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,wBAAA,CAAA,GAAA,GAAA,CAAA,GAAA,wBAAA;AACA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,kBAAA,CAAA,GAAA,GAAA,CAAA,GAAA,kBAAA;AACA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,kBAAA,CAAA,GAAA,GAAA,CAAA,GAAA,kBAAA;AAEA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,oBAAA,CAAA,GAAA,GAAA,CAAA,GAAA,oBAAA;AACA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,oBAAA,CAAA,GAAA,GAAA,CAAA,GAAA,oBAAA;AACD,IAAA,CAAA,EArFYA,cAAAA,KAAarH,QAAAA,CAAA,aAAA,GAAbqH,cAAAA,GAAa,EAAA,CAAA,CAAA;AAgNzB,IAAA,IAAYC,oBAAAA;AAAZ,IAAA,CAAA,SAAYA,oBAAAA,EAAmB;AAC9B,MAAAA,oBAAAA,CAAA,MAAA,CAAA,GAAA,GAAA;AACA,MAAAA,oBAAAA,CAAA,QAAA,CAAA,GAAA,GAAA;AACD,IAAA,CAAA,EAHYA,oBAAAA,KAAmBtH,QAAAA,CAAA,mBAAA,GAAnBsH,oBAAAA,GAAmB,EAAA,CAAA,CAAA;;;;;;;;;ACpS/B,IAAA,IAAYC,8BAAAA;AAAZ,IAAA,CAAA,SAAYA,8BAAAA,EAA6B;AAIxC,MAAAA,8BAAAA,CAAAA,8BAAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAA;AAIA,MAAAA,8BAAAA,CAAAA,8BAAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAA;AAIA,MAAAA,8BAAAA,CAAAA,8BAAAA,CAAA,eAAA,CAAA,GAAA,CAAA,CAAA,GAAA,eAAA;AAIA,MAAAA,8BAAAA,CAAAA,8BAAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,GAAA,aAAA;AAIA,MAAAA,8BAAAA,CAAAA,8BAAAA,CAAA,eAAA,CAAA,GAAA,CAAA,CAAA,GAAA,eAAA;AACD,IAAA,CAAA,EArBYA,8BAAAA,KAA6BvH,QAAAA,CAAA,6BAAA,GAA7BuH,8BAAAA,GAA6B,EAAA,CAAA,CAAA;AA8EzC,IAAA,IAAYC,oCAAAA;AAAZ,IAAA,CAAA,SAAYA,oCAAAA,EAAmC;AAI9C,MAAAA,oCAAAA,CAAAA,oCAAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAA;AAIA,MAAAA,oCAAAA,CAAAA,oCAAAA,CAAA,eAAA,CAAA,GAAA,CAAA,CAAA,GAAA,eAAA;AAIA,MAAAA,oCAAAA,CAAAA,oCAAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAA;AACD,IAAA,CAAA,EAbYA,oCAAAA,KAAmCxH,QAAAA,CAAA,mCAAA,GAAnCwH,oCAAAA,GAAmC,EAAA,CAAA,CAAA;AAkB/C,IAAA,IAAYC,4BAAAA;AAAZ,IAAA,CAAA,SAAYA,4BAAAA,EAA2B;AAItC,MAAAA,4BAAAA,CAAAA,4BAAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,GAAA,aAAA;AAIA,MAAAA,4BAAAA,CAAAA,4BAAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAA;AACD,IAAA,CAAA,EATYA,4BAAAA,KAA2BzH,QAAAA,CAAA,2BAAA,GAA3ByH,4BAAAA,GAA2B,EAAA,CAAA,CAAA;AA8BvC,IAAA,IAAYC,yBAAAA;AAAZ,IAAA,CAAA,SAAYA,yBAAAA,EAAwB;AAKnC,MAAAA,yBAAAA,CAAAA,yBAAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAA;AAIA,MAAAA,yBAAAA,CAAAA,yBAAAA,CAAA,kBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,kBAAA;AAIA,MAAAA,yBAAAA,CAAAA,yBAAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAA;AAIA,MAAAA,yBAAAA,CAAAA,yBAAAA,CAAA,wBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,wBAAA;AACD,IAAA,CAAA,EAlBYA,yBAAAA,KAAwB1H,QAAAA,CAAA,wBAAA,GAAxB0H,yBAAAA,GAAwB,EAAA,CAAA,CAAA;;;;;;;;;ACyIpC,IAAA,IAAYC,cAAAA;AAAZ,IAAA,CAAA,SAAYA,cAAAA,EAAa;AAIxB,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,gBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,gBAAA;AAIA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAA;AACD,IAAA,CAAA,EATYA,cAAAA,KAAa3H,QAAAA,CAAA,aAAA,GAAb2H,cAAAA,GAAa,EAAA,CAAA,CAAA;AAczB,IAAA,IAAYC,gBAAAA;AAAZ,IAAA,CAAA,SAAYA,gBAAAA,EAAe;AAI1B,MAAAA,gBAAAA,CAAAA,gBAAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAA;AAIA,MAAAA,gBAAAA,CAAAA,gBAAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAA;AAIA,MAAAA,gBAAAA,CAAAA,gBAAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,GAAA,aAAA;AACD,IAAA,CAAA,EAbYA,gBAAAA,KAAe5H,QAAAA,CAAA,eAAA,GAAf4H,gBAAAA,GAAe,EAAA,CAAA,CAAA;AA2F3B,IAAA,IAAYC,YAAAA;AAAZ,IAAA,CAAA,SAAYA,YAAAA,EAAW;AAItB,MAAAA,YAAAA,CAAAA,YAAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAA;AAIA,MAAAA,YAAAA,CAAAA,YAAAA,CAAA,IAAA,CAAA,GAAA,CAAA,CAAA,GAAA,IAAA;AAIA,MAAAA,YAAAA,CAAAA,YAAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAA;AAIA,MAAAA,YAAAA,CAAAA,YAAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAA;AAMA,MAAAA,YAAAA,CAAAA,YAAAA,CAAA,eAAA,CAAA,GAAA,CAAA,CAAA,GAAA,eAAA;AAMA,MAAAA,YAAAA,CAAAA,YAAAA,CAAA,mBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,mBAAA;AAIA,MAAAA,YAAAA,CAAAA,YAAAA,CAAA,oBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,oBAAA;AAIA,MAAAA,YAAAA,CAAAA,YAAAA,CAAA,cAAA,CAAA,GAAA,EAAA,CAAA,GAAA,cAAA;AAIA,MAAAA,YAAAA,CAAAA,YAAAA,CAAA,eAAA,CAAA,GAAA,EAAA,CAAA,GAAA,eAAA;AAMA,MAAAA,YAAAA,CAAAA,YAAAA,CAAA,iBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,iBAAA;AAMA,MAAAA,YAAAA,CAAAA,YAAAA,CAAA,gBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,gBAAA;AAIA,MAAAA,YAAAA,CAAAA,YAAAA,CAAA,YAAA,CAAA,GAAA,EAAA,CAAA,GAAA,YAAA;AAMA,MAAAA,YAAAA,CAAAA,YAAAA,CAAA,YAAA,CAAA,GAAA,EAAA,CAAA,GAAA,YAAA;AAUA,MAAAA,YAAAA,CAAAA,YAAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAA;AAOA,MAAAA,YAAAA,CAAAA,YAAAA,CAAA,iBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,iBAAA;AAMA,MAAAA,YAAAA,CAAAA,YAAAA,CAAA,mBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,mBAAA;AAMA,MAAAA,YAAAA,CAAAA,YAAAA,CAAA,oBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,oBAAA;AACD,IAAA,CAAA,EA5FYA,YAAAA,KAAW7H,QAAAA,CAAA,WAAA,GAAX6H,YAAAA,GAAW,EAAA,CAAA,CAAA;AA8FvB,IAAA,IAAYC,iBAAAA;AAAZ,IAAA,CAAA,SAAYA,iBAAAA,EAAgB;AAI3B,MAAAA,iBAAAA,CAAAA,iBAAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAA;AAIA,MAAAA,iBAAAA,CAAAA,iBAAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAA;AACD,IAAA,CAAA,EATYA,iBAAAA,KAAgB9H,QAAAA,CAAA,gBAAA,GAAhB8H,iBAAAA,GAAgB,EAAA,CAAA,CAAA;AAqD5B,IAAA,IAAYC,cAAAA;AAAZ,IAAA,CAAA,SAAYA,cAAAA,EAAa;AACxB,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAA;AACA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAA;AACD,IAAA,CAAA,EAHYA,cAAAA,KAAa/H,QAAAA,CAAA,aAAA,GAAb+H,cAAAA,GAAa,EAAA,CAAA,CAAA;AAmCzB,IAAA,IAAYC,0BAAAA;AAAZ,IAAA,CAAA,SAAYA,0BAAAA,EAAyB;AACpC,MAAAA,0BAAAA,CAAAA,0BAAAA,CAAA,SAAA,CAAA,GAAA,EAAA,CAAA,GAAA,SAAA;AACA,MAAAA,0BAAAA,CAAAA,0BAAAA,CAAA,QAAA,CAAA,GAAA,IAAA,CAAA,GAAA,QAAA;AACA,MAAAA,0BAAAA,CAAAA,0BAAAA,CAAA,WAAA,CAAA,GAAA,IAAA,CAAA,GAAA,WAAA;AACA,MAAAA,0BAAAA,CAAAA,0BAAAA,CAAA,SAAA,CAAA,GAAA,KAAA,CAAA,GAAA,SAAA;AACD,IAAA,CAAA,EALYA,0BAAAA,KAAyBhI,QAAAA,CAAA,yBAAA,GAAzBgI,0BAAAA,GAAyB,EAAA,CAAA,CAAA;AA2CrC,IAAA,IAAYC,kBAAAA;AAAZ,IAAA,CAAA,SAAYA,kBAAAA,EAAiB;AAI5B,MAAAA,kBAAAA,CAAAA,kBAAAA,CAAA,eAAA,CAAA,GAAA,CAAA,CAAA,GAAA,eAAA;AAIA,MAAAA,kBAAAA,CAAAA,kBAAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,GAAA,aAAA;AAIA,MAAAA,kBAAAA,CAAAA,kBAAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAA;AAIA,MAAAA,kBAAAA,CAAAA,kBAAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAA;AACD,IAAA,CAAA,EAjBYA,kBAAAA,KAAiBjI,QAAAA,CAAA,iBAAA,GAAjBiI,kBAAAA,GAAiB,EAAA,CAAA,CAAA;AAiC7B,IAAA,IAAYC,aAAAA;AAAZ,IAAA,CAAA,SAAYA,aAAAA,EAAY;AAIvB,MAAAA,aAAAA,CAAAA,aAAAA,CAAA,kBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,kBAAA;AAIA,MAAAA,aAAAA,CAAAA,aAAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAA;AAIA,MAAAA,aAAAA,CAAAA,aAAAA,CAAA,uBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,uBAAA;AAKA,MAAAA,aAAAA,CAAAA,aAAAA,CAAA,YAAA,CAAA,GAAA,EAAA,CAAA,GAAA,YAAA;AAIA,MAAAA,aAAAA,CAAAA,aAAAA,CAAA,QAAA,CAAA,GAAA,EAAA,CAAA,GAAA,QAAA;AAIA,MAAAA,aAAAA,CAAAA,aAAAA,CAAA,wBAAA,CAAA,GAAA,GAAA,CAAA,GAAA,wBAAA;AAIA,MAAAA,aAAAA,CAAAA,aAAAA,CAAA,SAAA,CAAA,GAAA,GAAA,CAAA,GAAA,SAAA;AAIA,MAAAA,aAAAA,CAAAA,aAAAA,CAAA,wBAAA,CAAA,GAAA,GAAA,CAAA,GAAA,wBAAA;AAIA,MAAAA,aAAAA,CAAAA,aAAAA,CAAA,0BAAA,CAAA,GAAA,KAAA,CAAA,GAAA,0BAAA;AACD,IAAA,CAAA,EAtCYA,aAAAA,KAAYlI,QAAAA,CAAA,YAAA,GAAZkI,aAAAA,GAAY,EAAA,CAAA,CAAA;;;;;;;;;ACpkBxB,IAAA,IAAYC,qBAAAA;AAAZ,IAAA,CAAA,SAAYA,qBAAAA,EAAoB;AAC/B,MAAAA,qBAAAA,CAAA,QAAA,CAAA,GAAA,QAAA;AACA,MAAAA,qBAAAA,CAAA,cAAA,CAAA,GAAA,KAAA;AACA,MAAAA,qBAAAA,CAAA,MAAA,CAAA,GAAA,MAAA;AAIA,MAAAA,qBAAAA,CAAA,WAAA,CAAA,GAAA,WAAA;AACA,MAAAA,qBAAAA,CAAA,SAAA,CAAA,GAAA,SAAA;AACD,IAAA,CAAA,EATYA,qBAAAA,KAAoBnI,QAAAA,CAAA,oBAAA,GAApBmI,qBAAAA,GAAoB,EAAA,CAAA,CAAA;AAsJhC,IAAA,IAAYC,iBAAAA;AAAZ,IAAA,CAAA,SAAYA,iBAAAA,EAAgB;AAC3B,MAAAA,iBAAAA,CAAA,SAAA,CAAA,GAAA,SAAA;AACA,MAAAA,iBAAAA,CAAA,MAAA,CAAA,GAAA,MAAA;AACA,MAAAA,iBAAAA,CAAA,SAAA,CAAA,GAAA,SAAA;AACA,MAAAA,iBAAAA,CAAA,KAAA,CAAA,GAAA,KAAA;AACA,MAAAA,iBAAAA,CAAA,SAAA,CAAA,GAAA,SAAA;AACA,MAAAA,iBAAAA,CAAA,UAAA,CAAA,GAAA,UAAA;AACA,MAAAA,iBAAAA,CAAA,KAAA,CAAA,GAAA,KAAA;AACA,MAAAA,iBAAAA,CAAA,KAAA,CAAA,GAAA,KAAA;AACD,IAAA,CAAA,EATYA,iBAAAA,KAAgBpI,QAAAA,CAAA,gBAAA,GAAhBoI,iBAAAA,GAAgB,EAAA,CAAA,CAAA;AAc5B,IAAA,IAAYC,aAAAA;AAAZ,IAAA,CAAA,SAAYA,aAAAA,EAAY;AAIvB,MAAAA,aAAAA,CAAAA,aAAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAA;AAIA,MAAAA,aAAAA,CAAAA,aAAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAA;AAIA,MAAAA,aAAAA,CAAAA,aAAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAA;AAIA,MAAAA,aAAAA,CAAAA,aAAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAA;AAIA,MAAAA,aAAAA,CAAAA,aAAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAA;AAIA,MAAAA,aAAAA,CAAAA,aAAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAA;AACD,IAAA,CAAA,EAzBYA,aAAAA,KAAYrI,QAAAA,CAAA,YAAA,GAAZqI,aAAAA,GAAY,EAAA,CAAA,CAAA;AAgCxB,IAAA,IAAYC,kBAAAA;AAAZ,IAAA,CAAA,SAAYA,kBAAAA,EAAiB;AAI5B,MAAAA,kBAAAA,CAAAA,kBAAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAA;AAIA,MAAAA,kBAAAA,CAAAA,kBAAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAA;AAIA,MAAAA,kBAAAA,CAAAA,kBAAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAA;AACD,IAAA,CAAA,EAbYA,kBAAAA,KAAiBtI,QAAAA,CAAA,iBAAA,GAAjBsI,kBAAAA,GAAiB,EAAA,CAAA,CAAA;AA0G7B,IAAA,IAAYC,cAAAA;AAAZ,IAAA,CAAA,SAAYA,cAAAA,EAAa;AACxB,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAA;AACA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAA;AACA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAA;AACA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,GAAA,aAAA;AACA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,MAAA,CAAA,GAAA,EAAA,CAAA,GAAA,MAAA;AACA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,MAAA,CAAA,GAAA,EAAA,CAAA,GAAA,MAAA;AACA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,qBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,qBAAA;AACA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,0BAAA,CAAA,GAAA,GAAA,CAAA,GAAA,0BAAA;AACA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,UAAA,CAAA,GAAA,GAAA,CAAA,GAAA,UAAA;AACD,IAAA,CAAA,EAVYA,cAAAA,KAAavI,QAAAA,CAAA,aAAA,GAAbuI,cAAAA,GAAa,EAAA,CAAA,CAAA;;;;;;;;;AC/FzB,IAAA,IAAYC,iCAAAA;AAAZ,IAAA,CAAA,SAAYA,iCAAAA,EAAgC;AAC3C,MAAAA,iCAAAA,CAAAA,iCAAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,GAAA,aAAA;AACA,MAAAA,iCAAAA,CAAAA,iCAAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAA;AACD,IAAA,CAAA,EAHYA,iCAAAA,KAAgCxI,QAAAA,CAAA,gCAAA,GAAhCwI,iCAAAA,GAAgC,EAAA,CAAA,CAAA;AAQ5C,IAAA,IAAYC,2BAAAA;AAAZ,IAAA,CAAA,SAAYA,2BAAAA,EAA0B;AACrC,MAAAA,2BAAAA,CAAAA,2BAAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAA;AACA,MAAAA,2BAAAA,CAAAA,2BAAAA,CAAA,qBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,qBAAA;AACA,MAAAA,2BAAAA,CAAAA,2BAAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAA;AACD,IAAA,CAAA,EAJYA,2BAAAA,KAA0BzI,QAAAA,CAAA,0BAAA,GAA1ByI,2BAAAA,GAA0B,EAAA,CAAA,CAAA;AAStC,IAAA,IAAYC,cAAAA;AAAZ,IAAA,CAAA,SAAYA,cAAAA,EAAa;AACxB,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAA;AACA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAA;AACD,IAAA,CAAA,EAHYA,cAAAA,KAAa1I,QAAAA,CAAA,aAAA,GAAb0I,cAAAA,GAAa,EAAA,CAAA,CAAA;AAQzB,IAAA,IAAYC,eAAAA;AAAZ,IAAA,CAAA,SAAYA,eAAAA,EAAc;AACzB,MAAAA,eAAAA,CAAAA,eAAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAA;AACA,MAAAA,eAAAA,CAAAA,eAAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAA;AACA,MAAAA,eAAAA,CAAAA,eAAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAA;AACA,MAAAA,eAAAA,CAAAA,eAAAA,CAAA,eAAA,CAAA,GAAA,CAAA,CAAA,GAAA,eAAA;AACD,IAAA,CAAA,EALYA,eAAAA,KAAc3I,QAAAA,CAAA,cAAA,GAAd2I,eAAAA,GAAc,EAAA,CAAA,CAAA;AAU1B,IAAA,IAAYC,uBAAAA;AAAZ,IAAA,CAAA,SAAYA,uBAAAA,EAAsB;AAIjC,MAAAA,uBAAAA,CAAAA,uBAAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAA;AAIA,MAAAA,uBAAAA,CAAAA,uBAAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAA;AAIA,MAAAA,uBAAAA,CAAAA,uBAAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAA;AAIA,MAAAA,uBAAAA,CAAAA,uBAAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAA;AAIA,MAAAA,uBAAAA,CAAAA,uBAAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAA;AACD,IAAA,CAAA,EArBYA,uBAAAA,KAAsB5I,QAAAA,CAAA,sBAAA,GAAtB4I,uBAAAA,GAAsB,EAAA,CAAA,CAAA;AA0BlC,IAAA,IAAYC,iBAAAA;AAAZ,IAAA,CAAA,SAAYA,iBAAAA,EAAgB;AAC3B,MAAAA,iBAAAA,CAAAA,iBAAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAA;AACA,MAAAA,iBAAAA,CAAAA,iBAAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAA;AACA,MAAAA,iBAAAA,CAAAA,iBAAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAA;AACA,MAAAA,iBAAAA,CAAAA,iBAAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAA;AACD,IAAA,CAAA,EALYA,iBAAAA,KAAgB7I,QAAAA,CAAA,gBAAA,GAAhB6I,iBAAAA,GAAgB,EAAA,CAAA,CAAA;AAO5B,IAAA,IAAYC,aAAAA;AAAZ,IAAA,CAAA,SAAYA,aAAAA,EAAY;AACvB,MAAAA,aAAAA,CAAAA,aAAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAA;AACA,MAAAA,aAAAA,CAAAA,aAAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAA;AACA,MAAAA,aAAAA,CAAAA,aAAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAA;AACD,IAAA,CAAA,EAJYA,aAAAA,KAAY9I,QAAAA,CAAA,YAAA,GAAZ8I,aAAAA,GAAY,EAAA,CAAA,CAAA;AASxB,IAAA,IAAYC,wBAAAA;AAAZ,IAAA,CAAA,SAAYA,wBAAAA,EAAuB;AAIlC,MAAAA,wBAAAA,CAAAA,wBAAAA,CAAA,2BAAA,CAAA,GAAA,CAAA,CAAA,GAAA,2BAAA;AAIA,MAAAA,wBAAAA,CAAAA,wBAAAA,CAAA,8BAAA,CAAA,GAAA,CAAA,CAAA,GAAA,8BAAA;AAIA,MAAAA,wBAAAA,CAAAA,wBAAAA,CAAA,oCAAA,CAAA,GAAA,CAAA,CAAA,GAAA,oCAAA;AAIA,MAAAA,wBAAAA,CAAAA,wBAAAA,CAAA,iCAAA,CAAA,GAAA,CAAA,CAAA,GAAA,iCAAA;AAIA,MAAAA,wBAAAA,CAAAA,wBAAAA,CAAA,+CAAA,CAAA,GAAA,EAAA,CAAA,GAAA,+CAAA;AAIA,MAAAA,wBAAAA,CAAAA,wBAAAA,CAAA,qDAAA,CAAA,GAAA,EAAA,CAAA,GAAA,qDAAA;AACD,IAAA,CAAA,EAzBYA,wBAAAA,KAAuB/I,QAAAA,CAAA,uBAAA,GAAvB+I,wBAAAA,GAAuB,EAAA,CAAA,CAAA;AA8BnC,IAAA,IAAYC,aAAAA;AAAZ,IAAA,CAAA,SAAYA,aAAAA,EAAY;AAIvB,MAAAA,aAAAA,CAAA,gBAAA,CAAA,GAAA,iBAAA;AAIA,MAAAA,aAAAA,CAAA,cAAA,CAAA,GAAA,eAAA;AAMA,MAAAA,aAAAA,CAAA,iCAAA,CAAA,GAAA,oCAAA;AAIA,MAAAA,aAAAA,CAAA,gBAAA,CAAA,GAAA,iBAAA;AAIA,MAAAA,aAAAA,CAAA,QAAA,CAAA,GAAA,QAAA;AAIA,MAAAA,aAAAA,CAAA,WAAA,CAAA,GAAA,WAAA;AAIA,MAAAA,aAAAA,CAAA,+BAAA,CAAA,GAAA,iCAAA;AAIA,MAAAA,aAAAA,CAAA,kBAAA,CAAA,GAAA,oBAAA;AAIA,MAAAA,aAAAA,CAAA,wBAAA,CAAA,GAAA,0BAAA;AAIA,MAAAA,aAAAA,CAAA,cAAA,CAAA,GAAA,cAAA;AAIA,MAAAA,aAAAA,CAAA,YAAA,CAAA,GAAA,YAAA;AAIA,MAAAA,aAAAA,CAAA,mBAAA,CAAA,GAAA,qBAAA;AAOA,MAAAA,aAAAA,CAAA,KAAA,CAAA,GAAA,KAAA;AAIA,MAAAA,aAAAA,CAAA,iBAAA,CAAA,GAAA,kBAAA;AAIA,MAAAA,aAAAA,CAAA,cAAA,CAAA,GAAA,eAAA;AAOA,MAAAA,aAAAA,CAAA,aAAA,CAAA,GAAA,eAAA;AAIA,MAAAA,aAAAA,CAAA,+BAAA,CAAA,GAAA,kCAAA;AAIA,MAAAA,aAAAA,CAAA,gBAAA,CAAA,GAAA,iBAAA;AAMA,MAAAA,aAAAA,CAAA,qBAAA,CAAA,GAAA,sBAAA;AAIA,MAAAA,aAAAA,CAAA,cAAA,CAAA,GAAA,eAAA;AAIA,MAAAA,aAAAA,CAAA,MAAA,CAAA,GAAA,MAAA;AAIA,MAAAA,aAAAA,CAAA,WAAA,CAAA,GAAA,WAAA;AAIA,MAAAA,aAAAA,CAAA,gBAAA,CAAA,GAAA,iBAAA;AAIA,MAAAA,aAAAA,CAAA,gBAAA,CAAA,GAAA,iBAAA;AAIA,MAAAA,aAAAA,CAAA,oBAAA,CAAA,GAAA,sBAAA;AACA,MAAAA,aAAAA,CAAA,cAAA,CAAA,GAAA,eAAA;AAIA,MAAAA,aAAAA,CAAA,WAAA,CAAA,GAAA,YAAA;AAIA,MAAAA,aAAAA,CAAA,uCAAA,CAAA,GAAA,2CAAA;AAIA,MAAAA,aAAAA,CAAA,0BAAA,CAAA,GAAA,4BAAA;AAIA,MAAAA,aAAAA,CAAA,YAAA,CAAA,GAAA,YAAA;AAIA,MAAAA,aAAAA,CAAA,uBAAA,CAAA,GAAA,yBAAA;AAIA,MAAAA,aAAAA,CAAA,WAAA,CAAA,GAAA,YAAA;AAIA,MAAAA,aAAAA,CAAA,UAAA,CAAA,GAAA,UAAA;AAIA,MAAAA,aAAAA,CAAA,YAAA,CAAA,GAAA,aAAA;AAIA,MAAAA,aAAAA,CAAA,sBAAA,CAAA,GAAA,wBAAA;AAIA,MAAAA,aAAAA,CAAA,WAAA,CAAA,GAAA,YAAA;AAIA,MAAAA,aAAAA,CAAA,oBAAA,CAAA,GAAA,sBAAA;AAIA,MAAAA,aAAAA,CAAA,eAAA,CAAA,GAAA,gBAAA;AAMA,MAAAA,aAAAA,CAAA,gCAAA,CAAA,GAAA,mCAAA;AACD,IAAA,CAAA,EAtKYA,aAAAA,KAAYhJ,QAAAA,CAAA,YAAA,GAAZgJ,aAAAA,GAAY,EAAA,CAAA,CAAA;AAuWxB,IAAA,IAAYC,iBAAAA;AAAZ,IAAA,CAAA,SAAYA,iBAAAA,EAAgB;AAI3B,MAAAA,iBAAAA,CAAAA,iBAAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAA;AAIA,MAAAA,iBAAAA,CAAAA,iBAAAA,CAAA,qBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,qBAAA;AAIA,MAAAA,iBAAAA,CAAAA,iBAAAA,CAAA,sBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,sBAAA;AAIA,MAAAA,iBAAAA,CAAAA,iBAAAA,CAAA,mBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,mBAAA;AAIA,MAAAA,iBAAAA,CAAAA,iBAAAA,CAAA,SAAA,CAAA,GAAA,EAAA,CAAA,GAAA,SAAA;AAIA,MAAAA,iBAAAA,CAAAA,iBAAAA,CAAA,oBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,oBAAA;AAIA,MAAAA,iBAAAA,CAAAA,iBAAAA,CAAA,sBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,sBAAA;AAIA,MAAAA,iBAAAA,CAAAA,iBAAAA,CAAA,2CAAA,CAAA,GAAA,GAAA,CAAA,GAAA,2CAAA;AAKA,MAAAA,iBAAAA,CAAAA,iBAAAA,CAAA,uBAAA,CAAA,GAAA,GAAA,CAAA,GAAA,uBAAA;AAIA,MAAAA,iBAAAA,CAAAA,iBAAAA,CAAA,8BAAA,CAAA,GAAA,GAAA,CAAA,GAAA,8BAAA;AAIA,MAAAA,iBAAAA,CAAAA,iBAAAA,CAAA,4BAAA,CAAA,GAAA,IAAA,CAAA,GAAA,4BAAA;AACD,IAAA,CAAA,EA9CYA,iBAAAA,KAAgBjJ,QAAAA,CAAA,gBAAA,GAAhBiJ,iBAAAA,GAAgB,EAAA,CAAA,CAAA;AAuJ5B,IAAA,IAAYC,0BAAAA;AAAZ,IAAA,CAAA,SAAYA,0BAAAA,EAAyB;AACpC,MAAAA,0BAAAA,CAAAA,0BAAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAA;AACA,MAAAA,0BAAAA,CAAAA,0BAAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAA;AACD,IAAA,CAAA,EAHYA,0BAAAA,KAAyBlJ,QAAAA,CAAA,yBAAA,GAAzBkJ,0BAAAA,GAAyB,EAAA,CAAA,CAAA;AAoGrC,IAAA,IAAYC,iBAAAA;AAAZ,IAAA,CAAA,SAAYA,iBAAAA,EAAgB;AAI3B,MAAAA,iBAAAA,CAAA,QAAA,CAAA,GAAA,QAAA;AAIA,MAAAA,iBAAAA,CAAA,SAAA,CAAA,GAAA,SAAA;AAIA,MAAAA,iBAAAA,CAAA,SAAA,CAAA,GAAA,SAAA;AAIA,MAAAA,iBAAAA,CAAA,SAAA,CAAA,GAAA,SAAA;AAKA,MAAAA,iBAAAA,CAAA,SAAA,CAAA,GAAA,SAAA;AACD,IAAA,CAAA,EAtBYA,iBAAAA,KAAgBnJ,QAAAA,CAAA,gBAAA,GAAhBmJ,iBAAAA,GAAgB,EAAA,CAAA,CAAA;AAiG5B,IAAA,IAAYC,6BAAAA;AAAZ,IAAA,CAAA,SAAYA,6BAAAA,EAA4B;AAIvC,MAAAA,6BAAAA,CAAA,OAAA,CAAA,GAAA,OAAA;AACD,IAAA,CAAA,EALYA,6BAAAA,KAA4BpJ,QAAAA,CAAA,4BAAA,GAA5BoJ,6BAAAA,GAA4B,EAAA,CAAA,CAAA;AAqGxC,IAAA,IAAYC,oBAAAA;AAAZ,IAAA,CAAA,SAAYA,oBAAAA,EAAmB;AAI9B,MAAAA,oBAAAA,CAAAA,oBAAAA,CAAA,mBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,mBAAA;AAIA,MAAAA,oBAAAA,CAAAA,oBAAAA,CAAA,oBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,oBAAA;AACD,IAAA,CAAA,EATYA,oBAAAA,KAAmBrJ,QAAAA,CAAA,mBAAA,GAAnBqJ,oBAAAA,GAAmB,EAAA,CAAA,CAAA;AAc/B,IAAA,IAAYC,0BAAAA;AAAZ,IAAA,CAAA,SAAYA,0BAAAA,EAAyB;AACpC,MAAAA,0BAAAA,CAAAA,0BAAAA,CAAA,gBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,gBAAA;AACA,MAAAA,0BAAAA,CAAAA,0BAAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAA;AACD,IAAA,CAAA,EAHYA,0BAAAA,KAAyBtJ,QAAAA,CAAA,yBAAA,GAAzBsJ,0BAAAA,GAAyB,EAAA,CAAA,CAAA;;;;;;;;;AC3lCrC,IAAA,IAAYC,2CAAAA;AAAZ,IAAA,CAAA,SAAYA,2CAAAA,EAA0C;AACrD,MAAAA,2CAAAA,CAAAA,2CAAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAA;AACA,MAAAA,2CAAAA,CAAAA,2CAAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAA;AACA,MAAAA,2CAAAA,CAAAA,2CAAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAA;AACA,MAAAA,2CAAAA,CAAAA,2CAAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAA;AACD,IAAA,CAAA,EALYA,2CAAAA,KAA0CvJ,QAAAA,CAAA,0CAAA,GAA1CuJ,2CAAAA,GAA0C,EAAA,CAAA,CAAA;AAUtD,IAAA,IAAYC,yCAAAA;AAAZ,IAAA,CAAA,SAAYA,yCAAAA,EAAwC;AACnD,MAAAA,yCAAAA,CAAAA,yCAAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAA;AACA,MAAAA,yCAAAA,CAAAA,yCAAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAA;AACA,MAAAA,yCAAAA,CAAAA,yCAAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAA;AACA,MAAAA,yCAAAA,CAAAA,yCAAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAA;AACA,MAAAA,yCAAAA,CAAAA,yCAAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAA;AACA,MAAAA,yCAAAA,CAAAA,yCAAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAA;AACA,MAAAA,yCAAAA,CAAAA,yCAAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAA;AACD,IAAA,CAAA,EARYA,yCAAAA,KAAwCxJ,QAAAA,CAAA,wCAAA,GAAxCwJ,yCAAAA,GAAwC,EAAA,CAAA,CAAA;AAapD,IAAA,IAAYC,uCAAAA;AAAZ,IAAA,CAAA,SAAYA,uCAAAA,EAAsC;AACjD,MAAAA,uCAAAA,CAAAA,uCAAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAA;AACA,MAAAA,uCAAAA,CAAAA,uCAAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAA;AACA,MAAAA,uCAAAA,CAAAA,uCAAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAA;AACA,MAAAA,uCAAAA,CAAAA,uCAAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAA;AACA,MAAAA,uCAAAA,CAAAA,uCAAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAA;AACA,MAAAA,uCAAAA,CAAAA,uCAAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAA;AACA,MAAAA,uCAAAA,CAAAA,uCAAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAA;AACA,MAAAA,uCAAAA,CAAAA,uCAAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAA;AACA,MAAAA,uCAAAA,CAAAA,uCAAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAA;AACA,MAAAA,uCAAAA,CAAAA,uCAAAA,CAAA,SAAA,CAAA,GAAA,EAAA,CAAA,GAAA,SAAA;AACA,MAAAA,uCAAAA,CAAAA,uCAAAA,CAAA,UAAA,CAAA,GAAA,EAAA,CAAA,GAAA,UAAA;AACA,MAAAA,uCAAAA,CAAAA,uCAAAA,CAAA,UAAA,CAAA,GAAA,EAAA,CAAA,GAAA,UAAA;AACD,IAAA,CAAA,EAbYA,uCAAAA,KAAsCzJ,QAAAA,CAAA,sCAAA,GAAtCyJ,uCAAAA,GAAsC,EAAA,CAAA,CAAA;AAsElD,IAAA,IAAYC,8BAAAA;AAAZ,IAAA,CAAA,SAAYA,8BAAAA,EAA6B;AACxC,MAAAA,8BAAAA,CAAAA,8BAAAA,CAAA,eAAA,CAAA,GAAA,CAAA,CAAA,GAAA,eAAA;AACA,MAAAA,8BAAAA,CAAAA,8BAAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAA;AACA,MAAAA,8BAAAA,CAAAA,8BAAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAA;AACD,IAAA,CAAA,EAJYA,8BAAAA,KAA6B1J,QAAAA,CAAA,6BAAA,GAA7B0J,8BAAAA,GAA6B,EAAA,CAAA,CAAA;AASzC,IAAA,IAAYC,0BAAAA;AAAZ,IAAA,CAAA,SAAYA,0BAAAA,EAAyB;AACpC,MAAAA,0BAAAA,CAAAA,0BAAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAA;AACA,MAAAA,0BAAAA,CAAAA,0BAAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAA;AACA,MAAAA,0BAAAA,CAAAA,0BAAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAA;AACA,MAAAA,0BAAAA,CAAAA,0BAAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAA;AACD,IAAA,CAAA,EALYA,0BAAAA,KAAyB3J,QAAAA,CAAA,yBAAA,GAAzB2J,0BAAAA,GAAyB,EAAA,CAAA,CAAA;AAUrC,IAAA,IAAYC,gCAAAA;AAAZ,IAAA,CAAA,SAAYA,gCAAAA,EAA+B;AAI1C,MAAAA,gCAAAA,CAAAA,gCAAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAA;AACD,IAAA,CAAA,EALYA,gCAAAA,KAA+B5J,QAAAA,CAAA,+BAAA,GAA/B4J,gCAAAA,GAA+B,EAAA,CAAA,CAAA;;;;;;;;;ACzO3C,IAAA,IAAYC,6BAAAA;AAAZ,IAAA,CAAA,SAAYA,6BAAAA,EAA4B;AACvC,MAAAA,6BAAAA,CAAAA,6BAAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAA;AACA,MAAAA,6BAAAA,CAAAA,6BAAAA,CAAA,iBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,iBAAA;AACA,MAAAA,6BAAAA,CAAAA,6BAAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAA;AACA,MAAAA,6BAAAA,CAAAA,6BAAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAA;AACA,MAAAA,6BAAAA,CAAAA,6BAAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAA;AACA,MAAAA,6BAAAA,CAAAA,6BAAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAA;AACA,MAAAA,6BAAAA,CAAAA,6BAAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAA;AACA,MAAAA,6BAAAA,CAAAA,6BAAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAA;AACA,MAAAA,6BAAAA,CAAAA,6BAAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,GAAA,aAAA;AACA,MAAAA,6BAAAA,CAAAA,6BAAAA,CAAA,QAAA,CAAA,GAAA,EAAA,CAAA,GAAA,QAAA;AACA,MAAAA,6BAAAA,CAAAA,6BAAAA,CAAA,YAAA,CAAA,GAAA,EAAA,CAAA,GAAA,YAAA;AACD,IAAA,CAAA,EAZYA,6BAAAA,KAA4B7J,QAAAA,CAAA,4BAAA,GAA5B6J,6BAAAA,GAA4B,EAAA,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;ACoDxC,IAAA,YAAA,CAAA,kBAAA7J,QAAA,CAAA;;;;;;;;;ACZA,IAAA,IAAY8J,iCAAAA;AAAZ,IAAA,CAAA,SAAYA,iCAAAA,EAAgC;AAC3C,MAAAA,iCAAAA,CAAAA,iCAAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAA;AACA,MAAAA,iCAAAA,CAAAA,iCAAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAA;AACA,MAAAA,iCAAAA,CAAAA,iCAAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAA;AACD,IAAA,CAAA,EAJYA,iCAAAA,KAAgC9J,QAAAA,CAAA,gCAAA,GAAhC8J,iCAAAA,GAAgC,EAAA,CAAA,CAAA;AAS/B,IAAA9J,SAAA,wCAAA,GAA2C;;MAEvD,QAAA,EAAU,CAAC,OAAA,KAAwC,MAAA,CAAO,OAAO,CAAA;AACjE,MAAA,WAAA,EAAa,CAAC,OAAA,KAAwC,MAAA,CAAO,MAAA,CAAO,OAAO,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;ACjClF,IAAA,YAAA,CAAA,qBAAAA,QAAA,CAAA;AAEA,IAAA,YAAA,CAAA,uBAAAA,QAAA,CAAA;AAwGA,IAAA,IAAY+J,uBAAAA;AAAZ,IAAA,CAAA,SAAYA,uBAAAA,EAAsB;AAIjC,MAAAA,uBAAAA,CAAAA,uBAAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAA;AAIA,MAAAA,uBAAAA,CAAAA,uBAAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAA;AAIA,MAAAA,uBAAAA,CAAAA,uBAAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAA;AAIA,MAAAA,uBAAAA,CAAAA,uBAAAA,CAAA,mBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,mBAAA;AACD,IAAA,CAAA,EAjBYA,uBAAAA,KAAsB/J,QAAAA,CAAA,sBAAA,GAAtB+J,uBAAAA,GAAsB,EAAA,CAAA,CAAA;AAsBlC,IAAA,IAAYC,2BAAAA;AAAZ,IAAA,CAAA,SAAYA,2BAAAA,EAA0B;AAIrC,MAAAA,2BAAAA,CAAAA,2BAAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAA;AAIA,MAAAA,2BAAAA,CAAAA,2BAAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,GAAA,aAAA;AACD,IAAA,CAAA,EATYA,2BAAAA,KAA0BhK,QAAAA,CAAA,0BAAA,GAA1BgK,2BAAAA,GAA0B,EAAA,CAAA,CAAA;AActC,IAAA,IAAYC,uBAAAA;AAAZ,IAAA,CAAA,SAAYA,uBAAAA,EAAsB;AAIjC,MAAAA,uBAAAA,CAAAA,uBAAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAA;AAIA,MAAAA,uBAAAA,CAAAA,uBAAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAA;AAIA,MAAAA,uBAAAA,CAAAA,uBAAAA,CAAA,gBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,gBAAA;AACD,IAAA,CAAA,EAbYA,uBAAAA,KAAsBjK,QAAAA,CAAA,sBAAA,GAAtBiK,uBAAAA,GAAsB,EAAA,CAAA,CAAA;AAkBlC,IAAA,IAAYC,6BAAAA;AAAZ,IAAA,CAAA,SAAYA,6BAAAA,EAA4B;AAIvC,MAAAA,6BAAAA,CAAAA,6BAAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAA;AAKA,MAAAA,6BAAAA,CAAAA,6BAAAA,CAAA,uBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,uBAAA;AACD,IAAA,CAAA,EAVYA,6BAAAA,KAA4BlK,QAAAA,CAAA,4BAAA,GAA5BkK,6BAAAA,GAA4B,EAAA,CAAA,CAAA;;;;;;;;;AC5KxC,IAAA,IAAYC,gBAAAA;AAAZ,IAAA,CAAA,SAAYA,gBAAAA,EAAe;AAC1B,MAAAA,gBAAAA,CAAAA,gBAAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAA;AACA,MAAAA,gBAAAA,CAAAA,gBAAAA,CAAA,oBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,oBAAA;AACA,MAAAA,gBAAAA,CAAAA,gBAAAA,CAAA,kBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,kBAAA;AACA,MAAAA,gBAAAA,CAAAA,gBAAAA,CAAA,gCAAA,CAAA,GAAA,CAAA,CAAA,GAAA,gCAAA;AACA,MAAAA,gBAAAA,CAAAA,gBAAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,GAAA,aAAA;AACD,IAAA,CAAA,EANYA,gBAAAA,KAAenK,QAAAA,CAAA,eAAA,GAAfmK,gBAAAA,GAAe,EAAA,CAAA,CAAA;AAkE3B,IAAA,IAAYC,wBAAAA;AAAZ,IAAA,CAAA,SAAYA,wBAAAA,EAAuB;AAIlC,MAAAA,wBAAAA,CAAAA,wBAAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAA;AAIA,MAAAA,wBAAAA,CAAAA,wBAAAA,CAAA,0BAAA,CAAA,GAAA,CAAA,CAAA,GAAA,0BAAA;AAIA,MAAAA,wBAAAA,CAAAA,wBAAAA,CAAA,kCAAA,CAAA,GAAA,CAAA,CAAA,GAAA,kCAAA;AAIA,MAAAA,wBAAAA,CAAAA,wBAAAA,CAAA,uBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,uBAAA;AAIA,MAAAA,wBAAAA,CAAAA,wBAAAA,CAAA,eAAA,CAAA,GAAA,CAAA,CAAA,GAAA,eAAA;AAIA,MAAAA,wBAAAA,CAAAA,wBAAAA,CAAA,sCAAA,CAAA,GAAA,CAAA,CAAA,GAAA,sCAAA;AAIA,MAAAA,wBAAAA,CAAAA,wBAAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAA;AAOA,MAAAA,wBAAAA,CAAAA,wBAAAA,CAAA,iBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,iBAAA;AAQA,MAAAA,wBAAAA,CAAAA,wBAAAA,CAAA,gBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,gBAAA;AACD,IAAA,CAAA,EA5CYA,wBAAAA,KAAuBpK,QAAAA,CAAA,uBAAA,GAAvBoK,wBAAAA,GAAuB,EAAA,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;ACxDnC,IAAA,YAAA,CAAA,+BAAApK,QAAA,CAAA;AAMA,IAAA,YAAA,CAAA,qBAAAA,QAAA,CAAA;;;;;;;;;AC6EA,IAAA,IAAYqK,YAAAA;AAAZ,IAAA,CAAA,SAAYA,YAAAA,EAAW;AACtB,MAAAA,YAAAA,CAAAA,YAAAA,CAAA,eAAA,CAAA,GAAA,CAAA,CAAA,GAAA,eAAA;AACD,IAAA,CAAA,EAFYA,YAAAA,KAAWrK,QAAAA,CAAA,WAAA,GAAXqK,YAAAA,GAAW,EAAA,CAAA,CAAA;AAOvB,IAAA,IAAYC,WAAAA;AAAZ,IAAA,CAAA,SAAYA,WAAAA,EAAU;AACrB,MAAAA,WAAAA,CAAAA,WAAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAA;AACA,MAAAA,WAAAA,CAAAA,WAAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAA;AACA,MAAAA,WAAAA,CAAAA,WAAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAA;AACD,IAAA,CAAA,EAJYA,WAAAA,KAAUtK,QAAAA,CAAA,UAAA,GAAVsK,WAAAA,GAAU,EAAA,CAAA,CAAA;AAStB,IAAA,IAAYC,iBAAAA;AAAZ,IAAA,CAAA,SAAYA,iBAAAA,EAAgB;AAC3B,MAAAA,iBAAAA,CAAAA,iBAAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAA;AACA,MAAAA,iBAAAA,CAAAA,iBAAAA,CAAA,qBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,qBAAA;AACD,IAAA,CAAA,EAHYA,iBAAAA,KAAgBvK,QAAAA,CAAA,gBAAA,GAAhBuK,iBAAAA,GAAgB,EAAA,CAAA,CAAA;;;;;;;;;AC0J5B,IAAA,IAAYC,YAAAA;AAAZ,IAAA,CAAA,SAAYA,YAAAA,EAAW;AACtB,MAAAA,YAAAA,CAAAA,YAAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAA;AACA,MAAAA,YAAAA,CAAAA,YAAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAA;AACA,MAAAA,YAAAA,CAAAA,YAAAA,CAAA,iBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,iBAAA;AACA,MAAAA,YAAAA,CAAAA,YAAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAA;AACA,MAAAA,YAAAA,CAAAA,YAAAA,CAAA,mBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,mBAAA;AACA,MAAAA,YAAAA,CAAAA,YAAAA,CAAA,mBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,mBAAA;AACA,MAAAA,YAAAA,CAAAA,YAAAA,CAAA,sBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,sBAAA;AACA,MAAAA,YAAAA,CAAAA,YAAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAA;AACA,MAAAA,YAAAA,CAAAA,YAAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAA;AACA,MAAAA,YAAAA,CAAAA,YAAAA,CAAA,iBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,iBAAA;AACA,MAAAA,YAAAA,CAAAA,YAAAA,CAAA,iBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,iBAAA;AACA,MAAAA,YAAAA,CAAAA,YAAAA,CAAA,iBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,iBAAA;AACA,MAAAA,YAAAA,CAAAA,YAAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,kBAAA;AAEA,MAAAA,YAAAA,CAAAA,YAAAA,CAAA,4BAAA,CAAA,GAAA,EAAA,CAAA,GAAA,4BAAA;AACA,MAAAA,YAAAA,CAAAA,YAAAA,CAAA,2BAAA,CAAA,GAAA,EAAA,CAAA,GAAA,2BAAA;AACA,MAAAA,YAAAA,CAAAA,YAAAA,CAAA,yCAAA,CAAA,GAAA,EAAA,CAAA,GAAA,yCAAA;AACA,MAAAA,YAAAA,CAAAA,YAAAA,CAAA,uCAAA,CAAA,GAAA,EAAA,CAAA,GAAA,uCAAA;AACA,MAAAA,YAAAA,CAAAA,YAAAA,CAAA,eAAA,CAAA,GAAA,EAAA,CAAA,GAAA,eAAA;AACA,MAAAA,YAAAA,CAAAA,YAAAA,CAAA,OAAA,CAAA,GAAA,EAAA,CAAA,GAAA,OAAA;AACA,MAAAA,YAAAA,CAAAA,YAAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,kBAAA;AACA,MAAAA,YAAAA,CAAAA,YAAAA,CAAA,sBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,sBAAA;AACA,MAAAA,YAAAA,CAAAA,YAAAA,CAAA,qBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,qBAAA;AACA,MAAAA,YAAAA,CAAAA,YAAAA,CAAA,oBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,oBAAA;AACA,MAAAA,YAAAA,CAAAA,YAAAA,CAAA,sBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,sBAAA;AACA,MAAAA,YAAAA,CAAAA,YAAAA,CAAA,0BAAA,CAAA,GAAA,EAAA,CAAA,GAAA,0BAAA;AACA,MAAAA,YAAAA,CAAAA,YAAAA,CAAA,0BAAA,CAAA,GAAA,EAAA,CAAA,GAAA,0BAAA;AACA,MAAAA,YAAAA,CAAAA,YAAAA,CAAA,YAAA,CAAA,GAAA,EAAA,CAAA,GAAA,YAAA;AACA,MAAAA,YAAAA,CAAAA,YAAAA,CAAA,UAAA,CAAA,GAAA,EAAA,CAAA,GAAA,UAAA;AACA,MAAAA,YAAAA,CAAAA,YAAAA,CAAA,cAAA,CAAA,GAAA,EAAA,CAAA,GAAA,cAAA;AAIA,MAAAA,YAAAA,CAAAA,YAAAA,CAAA,gBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,gBAAA;AACA,MAAAA,YAAAA,CAAAA,YAAAA,CAAA,YAAA,CAAA,GAAA,EAAA,CAAA,GAAA,YAAA;AACA,MAAAA,YAAAA,CAAAA,YAAAA,CAAA,qCAAA,CAAA,GAAA,EAAA,CAAA,GAAA,qCAAA;AAEA,MAAAA,YAAAA,CAAAA,YAAAA,CAAA,+BAAA,CAAA,GAAA,EAAA,CAAA,GAAA,+BAAA;AACA,MAAAA,YAAAA,CAAAA,YAAAA,CAAA,gCAAA,CAAA,GAAA,EAAA,CAAA,GAAA,gCAAA;AACA,MAAAA,YAAAA,CAAAA,YAAAA,CAAA,yBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,yBAAA;AACA,MAAAA,YAAAA,CAAAA,YAAAA,CAAA,+BAAA,CAAA,GAAA,EAAA,CAAA,GAAA,+BAAA;AAEA,MAAAA,YAAAA,CAAAA,YAAAA,CAAA,sBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,sBAAA;AAEA,MAAAA,YAAAA,CAAAA,YAAAA,CAAA,YAAA,CAAA,GAAA,EAAA,CAAA,GAAA,YAAA;AACD,IAAA,CAAA,EA9CYA,YAAAA,KAAWxK,QAAAA,CAAA,WAAA,GAAXwK,YAAAA,GAAW,EAAA,CAAA,CAAA;AA2FvB,IAAA,IAAYC,oBAAAA;AAAZ,IAAA,CAAA,SAAYA,oBAAAA,EAAmB;AAC9B,MAAAA,oBAAAA,CAAAA,oBAAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAA;AACA,MAAAA,oBAAAA,CAAAA,oBAAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAA;AACA,MAAAA,oBAAAA,CAAAA,oBAAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAA;AACA,MAAAA,oBAAAA,CAAAA,oBAAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,GAAA,aAAA;AACD,IAAA,CAAA,EALYA,oBAAAA,KAAmBzK,QAAAA,CAAA,mBAAA,GAAnByK,oBAAAA,GAAmB,EAAA,CAAA,CAAA;AAU/B,IAAA,IAAYC,qBAAAA;AAAZ,IAAA,CAAA,SAAYA,qBAAAA,EAAoB;AAI/B,MAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAA;AAIA,MAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAA;AACD,IAAA,CAAA,EATYA,qBAAAA,KAAoB1K,QAAAA,CAAA,oBAAA,GAApB0K,qBAAAA,GAAoB,EAAA,CAAA,CAAA;AAchC,IAAA,IAAYC,aAAAA;AAAZ,IAAA,CAAA,SAAYA,aAAAA,EAAY;AAIvB,MAAAA,aAAAA,CAAAA,aAAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,GAAA,aAAA;AAIA,MAAAA,aAAAA,CAAAA,aAAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,GAAA,aAAA;AAIA,MAAAA,aAAAA,CAAAA,aAAAA,CAAA,gBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,gBAAA;AAIA,MAAAA,aAAAA,CAAAA,aAAAA,CAAA,sBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,sBAAA;AAIA,MAAAA,aAAAA,CAAAA,aAAAA,CAAA,QAAA,CAAA,GAAA,EAAA,CAAA,GAAA,QAAA;AAIA,MAAAA,aAAAA,CAAAA,aAAAA,CAAA,WAAA,CAAA,GAAA,EAAA,CAAA,GAAA,WAAA;AAIA,MAAAA,aAAAA,CAAAA,aAAAA,CAAA,WAAA,CAAA,GAAA,EAAA,CAAA,GAAA,WAAA;AAIA,MAAAA,aAAAA,CAAAA,aAAAA,CAAA,SAAA,CAAA,GAAA,GAAA,CAAA,GAAA,SAAA;AAIA,MAAAA,aAAAA,CAAAA,aAAAA,CAAA,kCAAA,CAAA,GAAA,GAAA,CAAA,GAAA,kCAAA;AAIA,MAAAA,aAAAA,CAAAA,aAAAA,CAAA,iCAAA,CAAA,GAAA,IAAA,CAAA,GAAA,iCAAA;AAIA,MAAAA,aAAAA,CAAAA,aAAAA,CAAA,uBAAA,CAAA,GAAA,IAAA,CAAA,GAAA,uBAAA;AAIA,MAAAA,aAAAA,CAAAA,aAAAA,CAAA,gBAAA,CAAA,GAAA,IAAA,CAAA,GAAA,gBAAA;AAIA,MAAAA,aAAAA,CAAAA,aAAAA,CAAA,aAAA,CAAA,GAAA,KAAA,CAAA,GAAA,aAAA;AAMA,MAAAA,aAAAA,CAAAA,aAAAA,CAAA,gBAAA,CAAA,GAAA,KAAA,CAAA,GAAA,gBAAA;AACD,IAAA,CAAA,EA3DYA,aAAAA,KAAY3K,QAAAA,CAAA,YAAA,GAAZ2K,aAAAA,GAAY,EAAA,CAAA,CAAA;AAkOxB,IAAA,IAAYC,UAAAA;AAAZ,IAAA,CAAA,SAAYA,UAAAA,EAAS;AAIpB,MAAAA,UAAAA,CAAA,MAAA,CAAA,GAAA,MAAA;AAIA,MAAAA,UAAAA,CAAA,OAAA,CAAA,GAAA,OAAA;AAIA,MAAAA,UAAAA,CAAA,OAAA,CAAA,GAAA,OAAA;AAIA,MAAAA,UAAAA,CAAA,MAAA,CAAA,GAAA,MAAA;AAIA,MAAAA,UAAAA,CAAA,SAAA,CAAA,GAAA,SAAA;AAIA,MAAAA,UAAAA,CAAA,MAAA,CAAA,GAAA,MAAA;AAMA,MAAAA,UAAAA,CAAA,uBAAA,CAAA,GAAA,yBAAA;AAIA,MAAAA,UAAAA,CAAA,YAAA,CAAA,GAAA,aAAA;AACD,IAAA,CAAA,EAnCYA,UAAAA,KAAS5K,QAAAA,CAAA,SAAA,GAAT4K,UAAAA,GAAS,EAAA,CAAA,CAAA;AA6PrB,IAAA,IAAYC,gBAAAA;AAAZ,IAAA,CAAA,SAAYA,gBAAAA,EAAe;AAI1B,MAAAA,gBAAAA,CAAAA,gBAAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAA;AACD,IAAA,CAAA,EALYA,gBAAAA,KAAe7K,QAAAA,CAAA,eAAA,GAAf6K,gBAAAA,GAAe,EAAA,CAAA,CAAA;AAkC3B,IAAA,IAAYC,qBAAAA;AAAZ,IAAA,CAAA,SAAYA,qBAAAA,EAAoB;AAI/B,MAAAA,qBAAAA,CAAA,UAAA,CAAA,GAAA,UAAA;AAIA,MAAAA,qBAAAA,CAAA,MAAA,CAAA,GAAA,OAAA;AAIA,MAAAA,qBAAAA,CAAA,MAAA,CAAA,GAAA,OAAA;AACD,IAAA,CAAA,EAbYA,qBAAAA,KAAoB9K,QAAAA,CAAA,oBAAA,GAApB8K,qBAAAA,GAAoB,EAAA,CAAA,CAAA;AA4DhC,IAAA,IAAYC,cAAAA;AAAZ,IAAA,CAAA,SAAYA,cAAAA,EAAa;AAIxB,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAA;AAIA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAA;AAIA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAA;AAIA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAA;AAIA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAA;AAIA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAA;AAIA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,mBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,mBAAA;AAIA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,eAAA,CAAA,GAAA,CAAA,CAAA,GAAA,eAAA;AAIA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAA;AAIA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,aAAA,CAAA,GAAA,EAAA,CAAA,GAAA,aAAA;AAIA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,WAAA,CAAA,GAAA,EAAA,CAAA,GAAA,WAAA;AAIA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,cAAA,CAAA,GAAA,EAAA,CAAA,GAAA,cAAA;AAIA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,MAAA,CAAA,GAAA,EAAA,CAAA,GAAA,MAAA;AAIA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,WAAA,CAAA,GAAA,EAAA,CAAA,GAAA,WAAA;AAIA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,uBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,uBAAA;AAIA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,WAAA,CAAA,GAAA,EAAA,CAAA,GAAA,WAAA;AAIA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,OAAA,CAAA,GAAA,EAAA,CAAA,GAAA,OAAA;AAIA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,YAAA,CAAA,GAAA,EAAA,CAAA,GAAA,YAAA;AAMA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,YAAA,CAAA,GAAA,EAAA,CAAA,GAAA,YAAA;AAMA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,eAAA,CAAA,GAAA,EAAA,CAAA,GAAA,eAAA;AAMA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,UAAA,CAAA,GAAA,EAAA,CAAA,GAAA,UAAA;AAQA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAA;AACD,IAAA,CAAA,EAnGYA,cAAAA,KAAa/K,QAAAA,CAAA,aAAA,GAAb+K,cAAAA,GAAa,EAAA,CAAA,CAAA;AA0MzB,IAAA,IAAYC,YAAAA;AAAZ,IAAA,CAAA,SAAYA,YAAAA,EAAW;AAItB,MAAAA,YAAAA,CAAAA,YAAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAA;AAIA,MAAAA,YAAAA,CAAAA,YAAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAA;AAIA,MAAAA,YAAAA,CAAAA,YAAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAA;AAIA,MAAAA,YAAAA,CAAAA,YAAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAA;AAIA,MAAAA,YAAAA,CAAAA,YAAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAA;AAIA,MAAAA,YAAAA,CAAAA,YAAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAA;AACD,IAAA,CAAA,EAzBYA,YAAAA,KAAWhL,QAAAA,CAAA,WAAA,GAAXgL,YAAAA,GAAW,EAAA,CAAA,CAAA;AA8BvB,IAAA,IAAYC,eAAAA;AAAZ,IAAA,CAAA,SAAYA,eAAAA,EAAc;AAIzB,MAAAA,eAAAA,CAAAA,eAAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAA;AAIA,MAAAA,eAAAA,CAAAA,eAAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAA;AACD,IAAA,CAAA,EATYA,eAAAA,KAAcjL,QAAAA,CAAA,cAAA,GAAdiL,eAAAA,GAAc,EAAA,CAAA,CAAA;AAyJ1B,IAAA,IAAYC,2BAAAA;AAAZ,IAAA,CAAA,SAAYA,2BAAAA,EAA0B;AACrC,MAAAA,2BAAAA,CAAA,SAAA,CAAA,GAAA,SAAA;AACA,MAAAA,2BAAAA,CAAA,MAAA,CAAA,GAAA,MAAA;AACA,MAAAA,2BAAAA,CAAA,MAAA,CAAA,GAAA,MAAA;AACD,IAAA,CAAA,EAJYA,2BAAAA,KAA0BlL,QAAAA,CAAA,0BAAA,GAA1BkL,2BAAAA,GAA0B,EAAA,CAAA,CAAA;AAyGtC,IAAA,IAAYC,8BAAAA;AAAZ,IAAA,CAAA,SAAYA,8BAAAA,EAA6B;AACxC,MAAAA,8BAAAA,CAAAA,8BAAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAA;AACA,MAAAA,8BAAAA,CAAAA,8BAAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAA;AACA,MAAAA,8BAAAA,CAAAA,8BAAAA,CAAA,eAAA,CAAA,GAAA,CAAA,CAAA,GAAA,eAAA;AACA,MAAAA,8BAAAA,CAAAA,8BAAAA,CAAA,gBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,gBAAA;AACD,IAAA,CAAA,EALYA,8BAAAA,KAA6BnL,QAAAA,CAAA,6BAAA,GAA7BmL,8BAAAA,GAA6B,EAAA,CAAA,CAAA;AAyKzC,IAAA,IAAYC,qBAAAA;AAAZ,IAAA,CAAA,SAAYA,qBAAAA,EAAoB;AAC/B,MAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAA;AACA,MAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAA;AACD,IAAA,CAAA,EAHYA,qBAAAA,KAAoBpL,QAAAA,CAAA,oBAAA,GAApBoL,qBAAAA,GAAoB,EAAA,CAAA,CAAA;;;;;;;;;ACniDhC,IAAA,IAAYC,gBAAAA;AAAZ,IAAA,CAAA,SAAYA,gBAAAA,EAAe;AAI1B,MAAAA,gBAAAA,CAAAA,gBAAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAA;AAIA,MAAAA,gBAAAA,CAAAA,gBAAAA,CAAA,qBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,qBAAA;AAIA,MAAAA,gBAAAA,CAAAA,gBAAAA,CAAA,eAAA,CAAA,GAAA,CAAA,CAAA,GAAA,eAAA;AAIA,MAAAA,gBAAAA,CAAAA,gBAAAA,CAAA,kBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,kBAAA;AAIA,MAAAA,gBAAAA,CAAAA,gBAAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAA;AAIA,MAAAA,gBAAAA,CAAAA,gBAAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAA;AAIA,MAAAA,gBAAAA,CAAAA,gBAAAA,CAAA,iBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,iBAAA;AAIA,MAAAA,gBAAAA,CAAAA,gBAAAA,CAAA,yBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,yBAAA;AACD,IAAA,CAAA,EAjCYA,gBAAAA,KAAerL,QAAAA,CAAA,eAAA,GAAfqL,gBAAAA,GAAe,EAAA,CAAA,CAAA;AAsE3B,IAAA,IAAYC,SAAAA;AAAZ,IAAA,CAAA,SAAYA,SAAAA,EAAQ;AAInB,MAAAA,SAAAA,CAAAA,SAAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAA;AAKA,MAAAA,SAAAA,CAAAA,SAAAA,CAAA,mBAAA,CAAA,GAAA,GAAA,CAAA,GAAA,mBAAA;AAIA,MAAAA,SAAAA,CAAAA,SAAAA,CAAA,kBAAA,CAAA,GAAA,GAAA,CAAA,GAAA,kBAAA;AACD,IAAA,CAAA,EAdYA,SAAAA,KAAQtL,QAAAA,CAAA,QAAA,GAARsL,SAAAA,GAAQ,EAAA,CAAA,CAAA;AAmBpB,IAAA,IAAYC,QAAAA;AAAZ,IAAA,CAAA,SAAYA,QAAAA,EAAO;AAIlB,MAAAA,QAAAA,CAAAA,QAAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAA;AAIA,MAAAA,QAAAA,CAAAA,QAAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAA;AAIA,MAAAA,QAAAA,CAAAA,QAAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAA;AAIA,MAAAA,QAAAA,CAAAA,QAAAA,CAAA,mBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,mBAAA;AACD,IAAA,CAAA,EAjBYA,QAAAA,KAAOvL,QAAAA,CAAA,OAAA,GAAPuL,QAAAA,GAAO,EAAA,CAAA,CAAA;AAoEnB,IAAA,IAAYC,mBAAAA;AAAZ,IAAA,CAAA,SAAYA,mBAAAA,EAAkB;AAI7B,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAA;AAIA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAA;AAIA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAA;AACD,IAAA,CAAA,EAbYA,mBAAAA,KAAkBxL,QAAAA,CAAA,kBAAA,GAAlBwL,mBAAAA,GAAkB,EAAA,CAAA,CAAA;;;;;;;;;AC5M9B,IAAA,IAAYC,aAAAA;AAAZ,IAAA,CAAA,SAAYA,aAAAA,EAAY;AAIvB,MAAAA,aAAAA,CAAA,KAAA,CAAA,GAAA,KAAA;AAOA,MAAAA,aAAAA,CAAA,aAAA,CAAA,GAAA,aAAA;AAIA,MAAAA,aAAAA,CAAA,gBAAA,CAAA,GAAA,kBAAA;AAMA,MAAAA,aAAAA,CAAA,OAAA,CAAA,GAAA,OAAA;AAMA,MAAAA,aAAAA,CAAA,UAAA,CAAA,GAAA,UAAA;AAOA,MAAAA,aAAAA,CAAA,QAAA,CAAA,GAAA,QAAA;AAOA,MAAAA,aAAAA,CAAA,YAAA,CAAA,GAAA,aAAA;AAMA,MAAAA,aAAAA,CAAA,mBAAA,CAAA,GAAA,qBAAA;AAMA,MAAAA,aAAAA,CAAA,cAAA,CAAA,GAAA,UAAA;AAKA,MAAAA,aAAAA,CAAA,cAAA,CAAA,GAAA,eAAA;AAIA,MAAAA,aAAAA,CAAA,sBAAA,CAAA,GAAA,wBAAA;AAIA,MAAAA,aAAAA,CAAA,KAAA,CAAA,GAAA,KAAA;AAIA,MAAAA,aAAAA,CAAA,oBAAA,CAAA,GAAA,sBAAA;AAIA,MAAAA,aAAAA,CAAA,cAAA,CAAA,GAAA,gBAAA;AAIA,MAAAA,aAAAA,CAAA,eAAA,CAAA,GAAA,iBAAA;AAIA,MAAAA,aAAAA,CAAA,sBAAA,CAAA,GAAA,wBAAA;AAIA,MAAAA,aAAAA,CAAA,iBAAA,CAAA,GAAA,kBAAA;AAIA,MAAAA,aAAAA,CAAA,OAAA,CAAA,GAAA,OAAA;AAIA,MAAAA,aAAAA,CAAA,0BAAA,CAAA,GAAA,4BAAA;AAIA,MAAAA,aAAAA,CAAA,wBAAA,CAAA,GAAA,0BAAA;AAIA,MAAAA,aAAAA,CAAA,yBAAA,CAAA,GAAA,2BAAA;AAIA,MAAAA,aAAAA,CAAA,0BAAA,CAAA,GAAA,2BAAA;AAIA,MAAAA,aAAAA,CAAA,mBAAA,CAAA,GAAA,oBAAA;AAIA,MAAAA,aAAAA,CAAA,gBAAA,CAAA,GAAA,iBAAA;AAMA,MAAAA,aAAAA,CAAA,iBAAA,CAAA,GAAA,kBAAA;AAMA,MAAAA,aAAAA,CAAA,sBAAA,CAAA,GAAA,uBAAA;AAMA,MAAAA,aAAAA,CAAA,4BAAA,CAAA,GAAA,8BAAA;AAMA,MAAAA,aAAAA,CAAA,sCAAA,CAAA,GAAA,0CAAA;AACD,IAAA,CAAA,EA3IYA,aAAAA,KAAYzL,QAAAA,CAAA,YAAA,GAAZyL,aAAAA,GAAY,EAAA,CAAA,CAAA;;;;;;;;;ACiGxB,IAAA,IAAYC,UAAAA;AAAZ,IAAA,CAAA,SAAYA,UAAAA,EAAS;AAIpB,MAAAA,UAAAA,CAAAA,UAAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAA;AACD,IAAA,CAAA,EALYA,UAAAA,KAAS1L,QAAAA,CAAA,SAAA,GAAT0L,UAAAA,GAAS,EAAA,CAAA,CAAA;;;;;;;;;ACpDrB,IAAA,IAAYC,eAAAA;AAAZ,IAAA,CAAA,SAAYA,eAAAA,EAAc;AAIzB,MAAAA,eAAAA,CAAAA,eAAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAA;AACD,IAAA,CAAA,EALYA,eAAAA,KAAc3L,QAAAA,CAAA,cAAA,GAAd2L,eAAAA,GAAc,EAAA,CAAA,CAAA;;;;;;;;;ACJ1B,IAAA,IAAYC,0BAAAA;AAAZ,IAAA,CAAA,SAAYA,0BAAAA,EAAyB;AAOpC,MAAAA,0BAAAA,CAAAA,0BAAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAA;AAIA,MAAAA,0BAAAA,CAAAA,0BAAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAA;AACD,IAAA,CAAA,EAZYA,0BAAAA,KAAyB5L,QAAAA,CAAA,yBAAA,GAAzB4L,0BAAAA,GAAyB,EAAA,CAAA,CAAA;;;;;;;;;AC0BrC,IAAA,IAAYC,YAAAA;AAAZ,IAAA,CAAA,SAAYA,YAAAA,EAAW;AAItB,MAAAA,YAAAA,CAAAA,YAAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAA;AAIA,MAAAA,YAAAA,CAAAA,YAAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAA;AACD,IAAA,CAAA,EATYA,YAAAA,KAAW7L,QAAAA,CAAA,WAAA,GAAX6L,YAAAA,GAAW,EAAA,CAAA,CAAA;AAcvB,IAAA,IAAYC,kBAAAA;AAAZ,IAAA,CAAA,SAAYA,kBAAAA,EAAiB;AAC5B,MAAAA,kBAAAA,CAAAA,kBAAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAA;AACA,MAAAA,kBAAAA,CAAAA,kBAAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAA;AACA,MAAAA,kBAAAA,CAAAA,kBAAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAA;AACA,MAAAA,kBAAAA,CAAAA,kBAAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAA;AACD,IAAA,CAAA,EALYA,kBAAAA,KAAiB9L,QAAAA,CAAA,iBAAA,GAAjB8L,kBAAAA,GAAiB,EAAA,CAAA,CAAA;;;;;;;;;ACf7B,IAAA,IAAYC,0BAAAA;AAAZ,IAAA,CAAA,SAAYA,0BAAAA,EAAyB;AACpC,MAAAA,0BAAAA,CAAAA,0BAAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAA;AACA,MAAAA,0BAAAA,CAAAA,0BAAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAA;AACD,IAAA,CAAA,EAHYA,0BAAAA,KAAyB/L,QAAAA,CAAA,yBAAA,GAAzB+L,0BAAAA,GAAyB,EAAA,CAAA,CAAA;AAQrC,IAAA,IAAYC,eAAAA;AAAZ,IAAA,CAAA,SAAYA,eAAAA,EAAc;AACzB,MAAAA,eAAAA,CAAA,OAAA,CAAA,GAAA,OAAA;AACA,MAAAA,eAAAA,CAAA,WAAA,CAAA,GAAA,WAAA;AACA,MAAAA,eAAAA,CAAA,UAAA,CAAA,GAAA,WAAA;AACD,IAAA,CAAA,EAJYA,eAAAA,KAAchM,QAAAA,CAAA,cAAA,GAAdgM,eAAAA,GAAc,EAAA,CAAA,CAAA;;;;;;;;;ACqC1B,IAAA,IAAYC,UAAAA;AAAZ,IAAA,CAAA,SAAYA,UAAAA,EAAS;AAIpB,MAAAA,UAAAA,CAAAA,UAAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAA;AAIA,MAAAA,UAAAA,CAAAA,UAAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAA;AAIA,MAAAA,UAAAA,CAAAA,UAAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAA;AAIA,MAAAA,UAAAA,CAAAA,UAAAA,CAAA,iBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,iBAAA;AAIA,MAAAA,UAAAA,CAAAA,UAAAA,CAAA,QAAA,CAAA,GAAA,EAAA,CAAA,GAAA,QAAA;AAIA,MAAAA,UAAAA,CAAAA,UAAAA,CAAA,uBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,uBAAA;AAIA,MAAAA,UAAAA,CAAAA,UAAAA,CAAA,uBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,uBAAA;AAIA,MAAAA,UAAAA,CAAAA,UAAAA,CAAA,uBAAA,CAAA,GAAA,GAAA,CAAA,GAAA,uBAAA;AAIA,MAAAA,UAAAA,CAAAA,UAAAA,CAAA,uBAAA,CAAA,GAAA,GAAA,CAAA,GAAA,uBAAA;AAIA,MAAAA,UAAAA,CAAAA,UAAAA,CAAA,uBAAA,CAAA,GAAA,GAAA,CAAA,GAAA,uBAAA;AAIA,MAAAA,UAAAA,CAAAA,UAAAA,CAAA,gBAAA,CAAA,GAAA,IAAA,CAAA,GAAA,gBAAA;AAIA,MAAAA,UAAAA,CAAAA,UAAAA,CAAA,yBAAA,CAAA,GAAA,IAAA,CAAA,GAAA,yBAAA;AAIA,MAAAA,UAAAA,CAAAA,UAAAA,CAAA,iBAAA,CAAA,GAAA,KAAA,CAAA,GAAA,iBAAA;AAIA,MAAAA,UAAAA,CAAAA,UAAAA,CAAA,aAAA,CAAA,GAAA,KAAA,CAAA,GAAA,aAAA;AAIA,MAAAA,UAAAA,CAAAA,UAAAA,CAAA,mBAAA,CAAA,GAAA,MAAA,CAAA,GAAA,mBAAA;AAIA,MAAAA,UAAAA,CAAAA,UAAAA,CAAA,oBAAA,CAAA,GAAA,MAAA,CAAA,GAAA,oBAAA;AAIA,MAAAA,UAAAA,CAAAA,UAAAA,CAAA,qBAAA,CAAA,GAAA,MAAA,CAAA,GAAA,qBAAA;AAMA,MAAAA,UAAAA,CAAAA,UAAAA,CAAA,SAAA,CAAA,GAAA,OAAA,CAAA,GAAA,SAAA;AAIA,MAAAA,UAAAA,CAAAA,UAAAA,CAAA,gBAAA,CAAA,GAAA,OAAA,CAAA,GAAA,gBAAA;AAIA,MAAAA,UAAAA,CAAAA,UAAAA,CAAA,iBAAA,CAAA,GAAA,OAAA,CAAA,GAAA,iBAAA;AASA,MAAAA,UAAAA,CAAAA,UAAAA,CAAA,aAAA,CAAA,GAAA,cAAA,CAAA,GAAA,aAAA;AAOA,MAAAA,UAAAA,CAAAA,UAAAA,CAAA,cAAA,CAAA,GAAA,gBAAA,CAAA,GAAA,cAAA;AAOA,MAAAA,UAAAA,CAAAA,UAAAA,CAAA,wBAAA,CAAA,GAAA,gBAAA,CAAA,GAAA,wBAAA;AACD,IAAA,CAAA,EA1GYA,UAAAA,KAASjM,QAAAA,CAAA,SAAA,GAATiM,UAAAA,GAAS,EAAA,CAAA,CAAA;AA+GrB,IAAA,IAAYC,gBAAAA;AAAZ,IAAA,CAAA,SAAYA,gBAAAA,EAAe;AAC1B,MAAAA,gBAAAA,CAAAA,gBAAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAA;AACA,MAAAA,gBAAAA,CAAAA,gBAAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAA;AACA,MAAAA,gBAAAA,CAAAA,gBAAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAA;AACA,MAAAA,gBAAAA,CAAAA,gBAAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAA;AACD,IAAA,CAAA,EALYA,gBAAAA,KAAelM,QAAAA,CAAA,eAAA,GAAfkM,gBAAAA,GAAe,EAAA,CAAA,CAAA;AA2D3B,IAAA,IAAYC,kBAAAA;AAAZ,IAAA,CAAA,SAAYA,kBAAAA,EAAiB;AAC5B,MAAAA,kBAAAA,CAAA,aAAA,CAAA,GAAA,cAAA;AACA,MAAAA,kBAAAA,CAAA,WAAA,CAAA,GAAA,WAAA;AACA,MAAAA,kBAAAA,CAAA,SAAA,CAAA,GAAA,SAAA;AACA,MAAAA,kBAAAA,CAAA,WAAA,CAAA,GAAA,QAAA;AACA,MAAAA,kBAAAA,CAAA,aAAA,CAAA,GAAA,aAAA;AACA,MAAAA,kBAAAA,CAAA,QAAA,CAAA,GAAA,QAAA;AACA,MAAAA,kBAAAA,CAAA,MAAA,CAAA,GAAA,MAAA;AACA,MAAAA,kBAAAA,CAAA,WAAA,CAAA,GAAA,WAAA;AACA,MAAAA,kBAAAA,CAAA,UAAA,CAAA,GAAA,UAAA;AACA,MAAAA,kBAAAA,CAAA,QAAA,CAAA,GAAA,QAAA;AACA,MAAAA,kBAAAA,CAAA,WAAA,CAAA,GAAA,WAAA;AACA,MAAAA,kBAAAA,CAAA,iBAAA,CAAA,GAAA,iBAAA;AACA,MAAAA,kBAAAA,CAAA,UAAA,CAAA,GAAA,UAAA;AACA,MAAAA,kBAAAA,CAAA,QAAA,CAAA,GAAA,QAAA;AACA,MAAAA,kBAAAA,CAAA,oBAAA,CAAA,GAAA,aAAA;AACA,MAAAA,kBAAAA,CAAA,QAAA,CAAA,GAAA,QAAA;AACA,MAAAA,kBAAAA,CAAA,WAAA,CAAA,GAAA,WAAA;AACA,MAAAA,kBAAAA,CAAA,QAAA,CAAA,GAAA,QAAA;AACA,MAAAA,kBAAAA,CAAA,SAAA,CAAA,GAAA,SAAA;AACA,MAAAA,kBAAAA,CAAA,OAAA,CAAA,GAAA,OAAA;AACA,MAAAA,kBAAAA,CAAA,OAAA,CAAA,GAAA,OAAA;AACA,MAAAA,kBAAAA,CAAA,QAAA,CAAA,GAAA,QAAA;AACA,MAAAA,kBAAAA,CAAA,QAAA,CAAA,GAAA,QAAA;AACA,MAAAA,kBAAAA,CAAA,GAAA,CAAA,GAAA,SAAA;AAIA,MAAAA,kBAAAA,CAAA,SAAA,CAAA,GAAA,SAAA;AACA,MAAAA,kBAAAA,CAAA,MAAA,CAAA,GAAA,MAAA;AACA,MAAAA,kBAAAA,CAAA,SAAA,CAAA,GAAA,SAAA;AACD,IAAA,CAAA,EA/BYA,kBAAAA,KAAiBnM,QAAAA,CAAA,iBAAA,GAAjBmM,kBAAAA,GAAiB,EAAA,CAAA,CAAA;AAiC7B,IAAA,IAAYC,qBAAAA;AAAZ,IAAA,CAAA,SAAYA,qBAAAA,EAAoB;AAI/B,MAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAA;AAIA,MAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAA;AACD,IAAA,CAAA,EATYA,qBAAAA,KAAoBpM,QAAAA,CAAA,oBAAA,GAApBoM,qBAAAA,GAAoB,EAAA,CAAA,CAAA;AAoFhC,IAAA,IAAYC,iBAAAA;AAAZ,IAAA,CAAA,SAAYA,iBAAAA,EAAgB;AAC3B,MAAAA,iBAAAA,CAAA,OAAA,CAAA,GAAA,OAAA;AACA,MAAAA,iBAAAA,CAAA,WAAA,CAAA,GAAA,YAAA;AACA,MAAAA,iBAAAA,CAAA,QAAA,CAAA,GAAA,QAAA;AACA,MAAAA,iBAAAA,CAAA,QAAA,CAAA,GAAA,QAAA;AACA,MAAAA,iBAAAA,CAAA,SAAA,CAAA,GAAA,SAAA;AACA,MAAAA,iBAAAA,CAAA,QAAA,CAAA,GAAA,QAAA;AACA,MAAAA,iBAAAA,CAAA,OAAA,CAAA,GAAA,OAAA;AACA,MAAAA,iBAAAA,CAAA,KAAA,CAAA,GAAA,KAAA;AACA,MAAAA,iBAAAA,CAAA,MAAA,CAAA,GAAA,MAAA;AACA,MAAAA,iBAAAA,CAAA,QAAA,CAAA,GAAA,QAAA;AACA,MAAAA,iBAAAA,CAAA,OAAA,CAAA,GAAA,OAAA;AACD,IAAA,CAAA,EAZYA,iBAAAA,KAAgBrM,QAAAA,CAAA,gBAAA,GAAhBqM,iBAAAA,GAAgB,EAAA,CAAA,CAAA;;;;;;;;;ACnP5B,IAAA,IAAYC,uBAAAA;AAAZ,IAAA,CAAA,SAAYA,uBAAAA,EAAsB;AAIjC,MAAAA,uBAAAA,CAAAA,uBAAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAA;AAIA,MAAAA,uBAAAA,CAAAA,uBAAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAA;AACD,IAAA,CAAA,EATYA,uBAAAA,KAAsBtM,QAAAA,CAAA,sBAAA,GAAtBsM,uBAAAA,GAAsB,EAAA,CAAA,CAAA;AA6BlC,IAAA,IAAYC,4BAAAA;AAAZ,IAAA,CAAA,SAAYA,4BAAAA,EAA2B;AAItC,MAAAA,4BAAAA,CAAA,uBAAA,CAAA,GAAA,wBAAA;AAIA,MAAAA,4BAAAA,CAAA,yBAAA,CAAA,GAAA,0BAAA;AAIA,MAAAA,4BAAAA,CAAA,mBAAA,CAAA,GAAA,oBAAA;AAMA,MAAAA,4BAAAA,CAAA,mBAAA,CAAA,GAAA,oBAAA;AAMA,MAAAA,4BAAAA,CAAA,mBAAA,CAAA,GAAA,oBAAA;AAIA,MAAAA,4BAAAA,CAAA,qBAAA,CAAA,GAAA,uBAAA;AACD,IAAA,CAAA,EA7BYA,4BAAAA,KAA2BvM,QAAAA,CAAA,2BAAA,GAA3BuM,4BAAAA,GAA2B,EAAA,CAAA,CAAA;AAkCvC,IAAA,IAAYC,YAAAA;AAAZ,IAAA,CAAA,SAAYA,YAAAA,EAAW;AAItB,MAAAA,YAAAA,CAAAA,YAAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAA;AAIA,MAAAA,YAAAA,CAAAA,YAAAA,CAAA,iBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,iBAAA;AAIA,MAAAA,YAAAA,CAAAA,YAAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,GAAA,aAAA;AACD,IAAA,CAAA,EAbYA,YAAAA,KAAWxM,QAAAA,CAAA,WAAA,GAAXwM,YAAAA,GAAW,EAAA,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;AC9NvB,IAAA,YAAA,CAAA,kBAAAxM,QAAA,CAAA;AACA,IAAA,YAAA,CAAA,uBAAAA,QAAA,CAAA;AACA,IAAA,YAAA,CAAA,oBAAAA,QAAA,CAAA;AACA,IAAA,YAAA,CAAA,0BAAAA,QAAA,CAAA;AACA,IAAA,YAAA,CAAA,mBAAAA,QAAA,CAAA;AAEA,IAAA,YAAA,CAAA,mBAAAA,QAAA,CAAA;AACA,IAAA,YAAA,CAAA,iBAAAA,QAAA,CAAA;AACA,IAAA,YAAA,CAAA,+BAAAA,QAAA,CAAA;AACA,IAAA,YAAA,CAAA,wBAAAA,QAAA,CAAA;AACA,IAAA,YAAA,CAAA,kBAAAA,QAAA,CAAA;AACA,IAAA,YAAA,CAAA,mBAAAA,QAAA,CAAA;AACA,IAAA,YAAA,CAAA,wBAAAA,QAAA,CAAA;AACA,IAAA,YAAA,CAAA,kBAAAA,QAAA,CAAA;AACA,IAAA,YAAA,CAAA,wBAAAA,QAAA,CAAA;AACA,IAAA,YAAA,CAAA,gBAAAA,QAAA,CAAA;AAEA,IAAA,YAAA,CAAA,yBAAAA,QAAA,CAAA;AACA,IAAA,YAAA,CAAA,mBAAAA,QAAA,CAAA;AACA,IAAA,YAAA,CAAA,iBAAAA,QAAA,CAAA;AAEA,IAAA,YAAA,CAAA,gBAAAA,QAAA,CAAA;AAEA,IAAA,YAAA,CAAA,mBAAAA,QAAA,CAAA;;;;;;;;;ACoBA,IAAA,IAAM,OAAA,GAAU,mBAAA;AAEH,IAAAA,SAAA,iBAAA,GAAoB;AAChC,MAAA,IAAA,CAAK,KAAA,EAAa;AACjB,QAAA,MAAM,MAAA,GAAS,OAAA,CAAQ,IAAA,CAAK,KAAK,CAAA;AAEjC,QAAA,OAAA,CAAQ,SAAA,GAAY,CAAA;AAEpB,QAAA,OAAO,MAAA;AACR,MAAA;;;;;;;;;;ACjDD,IAAA,IAAYyM,mBAAAA;AAAZ,IAAA,CAAA,SAAYA,mBAAAA,EAAkB;AAC7B,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,gBAAA,CAAA,GAAA,KAAA,CAAA,GAAA,gBAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,oBAAA,CAAA,GAAA,KAAA,CAAA,GAAA,oBAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,gBAAA,CAAA,GAAA,KAAA,CAAA,GAAA,gBAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,cAAA,CAAA,GAAA,KAAA,CAAA,GAAA,cAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,oBAAA,CAAA,GAAA,KAAA,CAAA,GAAA,oBAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,eAAA,CAAA,GAAA,KAAA,CAAA,GAAA,eAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,eAAA,CAAA,GAAA,KAAA,CAAA,GAAA,eAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,gBAAA,CAAA,GAAA,KAAA,CAAA,GAAA,gBAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,4BAAA,CAAA,GAAA,KAAA,CAAA,GAAA,4BAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,iBAAA,CAAA,GAAA,KAAA,CAAA,GAAA,iBAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,aAAA,CAAA,GAAA,KAAA,CAAA,GAAA,aAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,cAAA,CAAA,GAAA,KAAA,CAAA,GAAA,cAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,aAAA,CAAA,GAAA,KAAA,CAAA,GAAA,aAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,cAAA,CAAA,GAAA,KAAA,CAAA,GAAA,cAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,gBAAA,CAAA,GAAA,KAAA,CAAA,GAAA,gBAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,uBAAA,CAAA,GAAA,KAAA,CAAA,GAAA,uBAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,gBAAA,CAAA,GAAA,KAAA,CAAA,GAAA,gBAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,cAAA,CAAA,GAAA,KAAA,CAAA,GAAA,cAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,YAAA,CAAA,GAAA,KAAA,CAAA,GAAA,YAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,YAAA,CAAA,GAAA,KAAA,CAAA,GAAA,YAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,qBAAA,CAAA,GAAA,KAAA,CAAA,GAAA,qBAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,oBAAA,CAAA,GAAA,KAAA,CAAA,GAAA,oBAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,cAAA,CAAA,GAAA,KAAA,CAAA,GAAA,cAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,cAAA,CAAA,GAAA,KAAA,CAAA,GAAA,cAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,eAAA,CAAA,GAAA,KAAA,CAAA,GAAA,eAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,6BAAA,CAAA,GAAA,KAAA,CAAA,GAAA,6BAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,wBAAA,CAAA,GAAA,KAAA,CAAA,GAAA,wBAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,iBAAA,CAAA,GAAA,KAAA,CAAA,GAAA,iBAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,eAAA,CAAA,GAAA,KAAA,CAAA,GAAA,eAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,uCAAA,CAAA,GAAA,KAAA,CAAA,GAAA,uCAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,sBAAA,CAAA,GAAA,KAAA,CAAA,GAAA,sBAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,mCAAA,CAAA,GAAA,KAAA,CAAA,GAAA,mCAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,gBAAA,CAAA,GAAA,KAAA,CAAA,GAAA,gBAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,oBAAA,CAAA,GAAA,KAAA,CAAA,GAAA,oBAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,oBAAA,CAAA,GAAA,KAAA,CAAA,GAAA,oBAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,2BAAA,CAAA,GAAA,KAAA,CAAA,GAAA,2BAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,mBAAA,CAAA,GAAA,KAAA,CAAA,GAAA,mBAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,sCAAA,CAAA,GAAA,KAAA,CAAA,GAAA,sCAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,sBAAA,CAAA,GAAA,KAAA,CAAA,GAAA,sBAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,oCAAA,CAAA,GAAA,KAAA,CAAA,GAAA,oCAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,2BAAA,CAAA,GAAA,KAAA,CAAA,GAAA,2BAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,4BAAA,CAAA,GAAA,KAAA,CAAA,GAAA,4BAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,gCAAA,CAAA,GAAA,KAAA,CAAA,GAAA,gCAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,YAAA,CAAA,GAAA,KAAA,CAAA,GAAA,YAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,cAAA,CAAA,GAAA,KAAA,CAAA,GAAA,cAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,2BAAA,CAAA,GAAA,KAAA,CAAA,GAAA,2BAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,4BAAA,CAAA,GAAA,KAAA,CAAA,GAAA,4BAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,kDAAA,CAAA,GAAA,KAAA,CAAA,GAAA,kDAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,mDAAA,CAAA,GAAA,KAAA,CAAA,GAAA,mDAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,+CAAA,CAAA,GAAA,KAAA,CAAA,GAAA,+CAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,wBAAA,CAAA,GAAA,KAAA,CAAA,GAAA,wBAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,+CAAA,CAAA,GAAA,KAAA,CAAA,GAAA,+CAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,+BAAA,CAAA,GAAA,KAAA,CAAA,GAAA,+BAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,iBAAA,CAAA,GAAA,KAAA,CAAA,GAAA,iBAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,sBAAA,CAAA,GAAA,KAAA,CAAA,GAAA,sBAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,qBAAA,CAAA,GAAA,KAAA,CAAA,GAAA,qBAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,2EAAA,CAAA,GAAA,KAAA,CAAA,GAAA,2EAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,qCAAA,CAAA,GAAA,KAAA,CAAA,GAAA,qCAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,8BAAA,CAAA,GAAA,KAAA,CAAA,GAAA,8BAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,+BAAA,CAAA,GAAA,KAAA,CAAA,GAAA,+BAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,yCAAA,CAAA,GAAA,KAAA,CAAA,GAAA,yCAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,kCAAA,CAAA,GAAA,KAAA,CAAA,GAAA,kCAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,kCAAA,CAAA,GAAA,KAAA,CAAA,GAAA,kCAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,gCAAA,CAAA,GAAA,KAAA,CAAA,GAAA,gCAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,8BAAA,CAAA,GAAA,KAAA,CAAA,GAAA,8BAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,iCAAA,CAAA,GAAA,KAAA,CAAA,GAAA,iCAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,gCAAA,CAAA,GAAA,KAAA,CAAA,GAAA,gCAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,qCAAA,CAAA,GAAA,KAAA,CAAA,GAAA,qCAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,6CAAA,CAAA,GAAA,KAAA,CAAA,GAAA,6CAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,+BAAA,CAAA,GAAA,KAAA,CAAA,GAAA,+BAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,sCAAA,CAAA,GAAA,KAAA,CAAA,GAAA,sCAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,qCAAA,CAAA,GAAA,KAAA,CAAA,GAAA,qCAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,wCAAA,CAAA,GAAA,KAAA,CAAA,GAAA,wCAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,yBAAA,CAAA,GAAA,KAAA,CAAA,GAAA,yBAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,2CAAA,CAAA,GAAA,KAAA,CAAA,GAAA,2CAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,kCAAA,CAAA,GAAA,KAAA,CAAA,GAAA,kCAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,8CAAA,CAAA,GAAA,KAAA,CAAA,GAAA,8CAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,kDAAA,CAAA,GAAA,KAAA,CAAA,GAAA,kDAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,yCAAA,CAAA,GAAA,KAAA,CAAA,GAAA,yCAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,uDAAA,CAAA,GAAA,KAAA,CAAA,GAAA,uDAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,gCAAA,CAAA,GAAA,KAAA,CAAA,GAAA,gCAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,4CAAA,CAAA,GAAA,KAAA,CAAA,GAAA,4CAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,yDAAA,CAAA,GAAA,KAAA,CAAA,GAAA,yDAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,wCAAA,CAAA,GAAA,KAAA,CAAA,GAAA,wCAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,uDAAA,CAAA,GAAA,KAAA,CAAA,GAAA,uDAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,mDAAA,CAAA,GAAA,KAAA,CAAA,GAAA,mDAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,0CAAA,CAAA,GAAA,KAAA,CAAA,GAAA,0CAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,sCAAA,CAAA,GAAA,KAAA,CAAA,GAAA,sCAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,qCAAA,CAAA,GAAA,KAAA,CAAA,GAAA,qCAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,wCAAA,CAAA,GAAA,KAAA,CAAA,GAAA,wCAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,mDAAA,CAAA,GAAA,KAAA,CAAA,GAAA,mDAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,oCAAA,CAAA,GAAA,KAAA,CAAA,GAAA,oCAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,cAAA,CAAA,GAAA,KAAA,CAAA,GAAA,cAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,mBAAA,CAAA,GAAA,KAAA,CAAA,GAAA,mBAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,8BAAA,CAAA,GAAA,KAAA,CAAA,GAAA,8BAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,wCAAA,CAAA,GAAA,KAAA,CAAA,GAAA,wCAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,uBAAA,CAAA,GAAA,KAAA,CAAA,GAAA,uBAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,sCAAA,CAAA,GAAA,KAAA,CAAA,GAAA,sCAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,yBAAA,CAAA,GAAA,KAAA,CAAA,GAAA,yBAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,0BAAA,CAAA,GAAA,KAAA,CAAA,GAAA,0BAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,iCAAA,CAAA,GAAA,KAAA,CAAA,GAAA,iCAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,qCAAA,CAAA,GAAA,KAAA,CAAA,GAAA,qCAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,iCAAA,CAAA,GAAA,KAAA,CAAA,GAAA,iCAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,kCAAA,CAAA,GAAA,KAAA,CAAA,GAAA,kCAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,6CAAA,CAAA,GAAA,KAAA,CAAA,GAAA,6CAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,oCAAA,CAAA,GAAA,KAAA,CAAA,GAAA,oCAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,mCAAA,CAAA,GAAA,KAAA,CAAA,GAAA,mCAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,uCAAA,CAAA,GAAA,KAAA,CAAA,GAAA,uCAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,sBAAA,CAAA,GAAA,KAAA,CAAA,GAAA,sBAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,mCAAA,CAAA,GAAA,KAAA,CAAA,GAAA,mCAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,oDAAA,CAAA,GAAA,KAAA,CAAA,GAAA,oDAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,4CAAA,CAAA,GAAA,KAAA,CAAA,GAAA,4CAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,mDAAA,CAAA,GAAA,KAAA,CAAA,GAAA,mDAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,yDAAA,CAAA,GAAA,KAAA,CAAA,GAAA,yDAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,iCAAA,CAAA,GAAA,KAAA,CAAA,GAAA,iCAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,eAAA,CAAA,GAAA,KAAA,CAAA,GAAA,eAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,oBAAA,CAAA,GAAA,KAAA,CAAA,GAAA,oBAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,gCAAA,CAAA,GAAA,KAAA,CAAA,GAAA,gCAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,qBAAA,CAAA,GAAA,KAAA,CAAA,GAAA,qBAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,wCAAA,CAAA,GAAA,KAAA,CAAA,GAAA,wCAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,0BAAA,CAAA,GAAA,KAAA,CAAA,GAAA,0BAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,8BAAA,CAAA,GAAA,KAAA,CAAA,GAAA,8BAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,oCAAA,CAAA,GAAA,KAAA,CAAA,GAAA,oCAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,mDAAA,CAAA,GAAA,KAAA,CAAA,GAAA,mDAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,iCAAA,CAAA,GAAA,KAAA,CAAA,GAAA,iCAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,+BAAA,CAAA,GAAA,KAAA,CAAA,GAAA,+BAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,oBAAA,CAAA,GAAA,KAAA,CAAA,GAAA,oBAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,oBAAA,CAAA,GAAA,KAAA,CAAA,GAAA,oBAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,cAAA,CAAA,GAAA,KAAA,CAAA,GAAA,cAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,gBAAA,CAAA,GAAA,KAAA,CAAA,GAAA,gBAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,yCAAA,CAAA,GAAA,KAAA,CAAA,GAAA,yCAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,iBAAA,CAAA,GAAA,KAAA,CAAA,GAAA,iBAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,+CAAA,CAAA,GAAA,KAAA,CAAA,GAAA,+CAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,0BAAA,CAAA,GAAA,KAAA,CAAA,GAAA,0BAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,oCAAA,CAAA,GAAA,KAAA,CAAA,GAAA,oCAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,sCAAA,CAAA,GAAA,KAAA,CAAA,GAAA,sCAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,0BAAA,CAAA,GAAA,KAAA,CAAA,GAAA,0BAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,4BAAA,CAAA,GAAA,KAAA,CAAA,GAAA,4BAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,qBAAA,CAAA,GAAA,KAAA,CAAA,GAAA,qBAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,aAAA,CAAA,GAAA,KAAA,CAAA,GAAA,aAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,mBAAA,CAAA,GAAA,KAAA,CAAA,GAAA,mBAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,gDAAA,CAAA,GAAA,KAAA,CAAA,GAAA,gDAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,8BAAA,CAAA,GAAA,KAAA,CAAA,GAAA,8BAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,2CAAA,CAAA,GAAA,KAAA,CAAA,GAAA,2CAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,uBAAA,CAAA,GAAA,KAAA,CAAA,GAAA,uBAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,mBAAA,CAAA,GAAA,KAAA,CAAA,GAAA,mBAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,gCAAA,CAAA,GAAA,KAAA,CAAA,GAAA,gCAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,qBAAA,CAAA,GAAA,KAAA,CAAA,GAAA,qBAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,0BAAA,CAAA,GAAA,KAAA,CAAA,GAAA,0BAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,cAAA,CAAA,GAAA,KAAA,CAAA,GAAA,cAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,YAAA,CAAA,GAAA,KAAA,CAAA,GAAA,YAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,sBAAA,CAAA,GAAA,KAAA,CAAA,GAAA,sBAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,oBAAA,CAAA,GAAA,KAAA,CAAA,GAAA,oBAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,mCAAA,CAAA,GAAA,KAAA,CAAA,GAAA,mCAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,4BAAA,CAAA,GAAA,KAAA,CAAA,GAAA,4BAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,+CAAA,CAAA,GAAA,KAAA,CAAA,GAAA,+CAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,iCAAA,CAAA,GAAA,KAAA,CAAA,GAAA,iCAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,oBAAA,CAAA,GAAA,KAAA,CAAA,GAAA,oBAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,+BAAA,CAAA,GAAA,KAAA,CAAA,GAAA,+BAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,mCAAA,CAAA,GAAA,KAAA,CAAA,GAAA,mCAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,8BAAA,CAAA,GAAA,KAAA,CAAA,GAAA,8BAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,2CAAA,CAAA,GAAA,KAAA,CAAA,GAAA,2CAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,+EAAA,CAAA,GAAA,KAAA,CAAA,GAAA,+EAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,kCAAA,CAAA,GAAA,KAAA,CAAA,GAAA,kCAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,mDAAA,CAAA,GAAA,KAAA,CAAA,GAAA,mDAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,0CAAA,CAAA,GAAA,KAAA,CAAA,GAAA,0CAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,gCAAA,CAAA,GAAA,KAAA,CAAA,GAAA,gCAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,uBAAA,CAAA,GAAA,KAAA,CAAA,GAAA,uBAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,2BAAA,CAAA,GAAA,KAAA,CAAA,GAAA,2BAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,0CAAA,CAAA,GAAA,KAAA,CAAA,GAAA,0CAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,4BAAA,CAAA,GAAA,KAAA,CAAA,GAAA,4BAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,kCAAA,CAAA,GAAA,KAAA,CAAA,GAAA,kCAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,wCAAA,CAAA,GAAA,KAAA,CAAA,GAAA,wCAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,wDAAA,CAAA,GAAA,KAAA,CAAA,GAAA,wDAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,gDAAA,CAAA,GAAA,KAAA,CAAA,GAAA,gDAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,sBAAA,CAAA,GAAA,KAAA,CAAA,GAAA,sBAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,yBAAA,CAAA,GAAA,KAAA,CAAA,GAAA,yBAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,4CAAA,CAAA,GAAA,KAAA,CAAA,GAAA,4CAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,6CAAA,CAAA,GAAA,KAAA,CAAA,GAAA,6CAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,yCAAA,CAAA,GAAA,KAAA,CAAA,GAAA,yCAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,6BAAA,CAAA,GAAA,KAAA,CAAA,GAAA,6BAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,0CAAA,CAAA,GAAA,KAAA,CAAA,GAAA,0CAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,yCAAA,CAAA,GAAA,KAAA,CAAA,GAAA,yCAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,mCAAA,CAAA,GAAA,KAAA,CAAA,GAAA,mCAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,uCAAA,CAAA,GAAA,KAAA,CAAA,GAAA,uCAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,yCAAA,CAAA,GAAA,KAAA,CAAA,GAAA,yCAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,mCAAA,CAAA,GAAA,KAAA,CAAA,GAAA,mCAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,4BAAA,CAAA,GAAA,KAAA,CAAA,GAAA,4BAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,oBAAA,CAAA,GAAA,KAAA,CAAA,GAAA,oBAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,6BAAA,CAAA,GAAA,KAAA,CAAA,GAAA,6BAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,4BAAA,CAAA,GAAA,MAAA,CAAA,GAAA,4BAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,uBAAA,CAAA,GAAA,IAAA,CAAA,GAAA,uBAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,uBAAA,CAAA,GAAA,MAAA,CAAA,GAAA,uBAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,kDAAA,CAAA,GAAA,MAAA,CAAA,GAAA,kDAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,gCAAA,CAAA,GAAA,MAAA,CAAA,GAAA,gCAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,cAAA,CAAA,GAAA,MAAA,CAAA,GAAA,cAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,sBAAA,CAAA,GAAA,MAAA,CAAA,GAAA,sBAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,kCAAA,CAAA,GAAA,MAAA,CAAA,GAAA,kCAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,kCAAA,CAAA,GAAA,MAAA,CAAA,GAAA,kCAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,8CAAA,CAAA,GAAA,MAAA,CAAA,GAAA,8CAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,iCAAA,CAAA,GAAA,MAAA,CAAA,GAAA,iCAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,6CAAA,CAAA,GAAA,MAAA,CAAA,GAAA,6CAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,0CAAA,CAAA,GAAA,MAAA,CAAA,GAAA,0CAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,sCAAA,CAAA,GAAA,MAAA,CAAA,GAAA,sCAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,kDAAA,CAAA,GAAA,MAAA,CAAA,GAAA,kDAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,4BAAA,CAAA,GAAA,IAAA,CAAA,GAAA,4BAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,wCAAA,CAAA,GAAA,MAAA,CAAA,GAAA,wCAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,wCAAA,CAAA,GAAA,GAAA,CAAA,GAAA,wCAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,sCAAA,CAAA,GAAA,MAAA,CAAA,GAAA,sCAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,4DAAA,CAAA,GAAA,MAAA,CAAA,GAAA,4DAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,mEAAA,CAAA,GAAA,MAAA,CAAA,GAAA,mEAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,6CAAA,CAAA,GAAA,MAAA,CAAA,GAAA,6CAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,4CAAA,CAAA,GAAA,MAAA,CAAA,GAAA,4CAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,oCAAA,CAAA,GAAA,IAAA,CAAA,GAAA,oCAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,6CAAA,CAAA,GAAA,IAAA,CAAA,GAAA,6CAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,8CAAA,CAAA,GAAA,MAAA,CAAA,GAAA,8CAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,+CAAA,CAAA,GAAA,MAAA,CAAA,GAAA,+CAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,kBAAA,CAAA,GAAA,GAAA,CAAA,GAAA,kBAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,mBAAA,CAAA,GAAA,IAAA,CAAA,GAAA,mBAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,aAAA,CAAA,GAAA,MAAA,CAAA,GAAA,aAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,mCAAA,CAAA,GAAA,MAAA,CAAA,GAAA,mCAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,wBAAA,CAAA,GAAA,MAAA,CAAA,GAAA,wBAAA;AACA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,qCAAA,CAAA,GAAA,MAAA,CAAA,GAAA,qCAAA;AAEA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,6BAAA,CAAA,GAAA,MAAA,CAAA,GAAA,6BAAA;AACD,IAAA,CAAA,EAnUYA,mBAAAA,KAAkBzM,QAAAA,CAAA,kBAAA,GAAlByM,mBAAAA,GAAkB,EAAA,CAAA,CAAA;AAwU9B,IAAA,IAAYC,OAAAA;AAAZ,IAAA,CAAA,SAAYA,OAAAA,EAAM;AACjB,MAAAA,OAAAA,CAAA,YAAA,CAAA,GAAA,IAAA;AACA,MAAAA,OAAAA,CAAA,WAAA,CAAA,GAAA,OAAA;AACA,MAAAA,OAAAA,CAAA,WAAA,CAAA,GAAA,OAAA;AACA,MAAAA,OAAAA,CAAA,WAAA,CAAA,GAAA,IAAA;AACA,MAAAA,OAAAA,CAAA,WAAA,CAAA,GAAA,OAAA;AACA,MAAAA,OAAAA,CAAA,WAAA,CAAA,GAAA,OAAA;AACA,MAAAA,OAAAA,CAAA,UAAA,CAAA,GAAA,IAAA;AACA,MAAAA,OAAAA,CAAA,OAAA,CAAA,GAAA,IAAA;AACA,MAAAA,OAAAA,CAAA,QAAA,CAAA,GAAA,IAAA;AACA,MAAAA,OAAAA,CAAA,OAAA,CAAA,GAAA,IAAA;AACA,MAAAA,OAAAA,CAAA,SAAA,CAAA,GAAA,IAAA;AACA,MAAAA,OAAAA,CAAA,QAAA,CAAA,GAAA,IAAA;AACA,MAAAA,OAAAA,CAAA,QAAA,CAAA,GAAA,IAAA;AACA,MAAAA,OAAAA,CAAA,OAAA,CAAA,GAAA,IAAA;AACA,MAAAA,OAAAA,CAAA,OAAA,CAAA,GAAA,IAAA;AACA,MAAAA,OAAAA,CAAA,WAAA,CAAA,GAAA,IAAA;AACA,MAAAA,OAAAA,CAAA,SAAA,CAAA,GAAA,IAAA;AACA,MAAAA,OAAAA,CAAA,UAAA,CAAA,GAAA,IAAA;AACA,MAAAA,OAAAA,CAAA,QAAA,CAAA,GAAA,IAAA;AACA,MAAAA,OAAAA,CAAA,YAAA,CAAA,GAAA,IAAA;AACA,MAAAA,OAAAA,CAAA,WAAA,CAAA,GAAA,IAAA;AACA,MAAAA,OAAAA,CAAA,QAAA,CAAA,GAAA,IAAA;AACA,MAAAA,OAAAA,CAAA,cAAA,CAAA,GAAA,OAAA;AACA,MAAAA,OAAAA,CAAA,UAAA,CAAA,GAAA,IAAA;AACA,MAAAA,OAAAA,CAAA,SAAA,CAAA,GAAA,IAAA;AACA,MAAAA,OAAAA,CAAA,WAAA,CAAA,GAAA,OAAA;AACA,MAAAA,OAAAA,CAAA,cAAA,CAAA,GAAA,QAAA;AACA,MAAAA,OAAAA,CAAA,SAAA,CAAA,GAAA,OAAA;AACA,MAAAA,OAAAA,CAAA,MAAA,CAAA,GAAA,IAAA;AACA,MAAAA,OAAAA,CAAA,SAAA,CAAA,GAAA,IAAA;AACA,MAAAA,OAAAA,CAAA,WAAA,CAAA,GAAA,IAAA;AACA,MAAAA,OAAAA,CAAA,YAAA,CAAA,GAAA,IAAA;AACD,IAAA,CAAA,EAjCYA,OAAAA,KAAM1M,QAAAA,CAAA,MAAA,GAAN0M,OAAAA,GAAM,EAAA,CAAA,CAAA;;;;;;;;;AC4ElB,IAAA,IAAYC,aAAAA;AAAZ,IAAA,CAAA,SAAYA,aAAAA,EAAY;AACvB,MAAAA,aAAAA,CAAAA,aAAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAA;AACA,MAAAA,aAAAA,CAAAA,aAAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAA;AACD,IAAA,CAAA,EAHYA,aAAAA,KAAY3M,QAAAA,CAAA,YAAA,GAAZ2M,aAAAA,GAAY,EAAA,CAAA,CAAA;;;;;;;;;AC9TxB,IAAA,IAAYC,qBAAAA;AAAZ,IAAA,CAAA,SAAYA,qBAAAA,EAAoB;AAC/B,MAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAA;AACA,MAAAA,qBAAAA,CAAAA,qBAAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAA;AACD,IAAA,CAAA,EAHYA,qBAAAA,KAAoB5M,QAAAA,CAAA,oBAAA,GAApB4M,qBAAAA,GAAoB,EAAA,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;ACxFhC,IAAA,IAAA,WAAA,GAAA,iBAAA,EAAA;AAGA,IAAA,YAAA,CAAA,mBAAA5M,QAAA,CAAA;AAIA,IAAA,YAAA,CAAA,oBAAAA,QAAA,CAAA;AAOA,IAAA,YAAA,CAAA,yBAAAA,QAAA,CAAA;AAWa,IAAAA,SAAA,UAAA,GAAa,IAAA;AAEb,IAAAA,SAAA,MAAA,GAA6B;;;;;;AAMzC,MAAA,iCAAA,CAAkC,aAAA,EAAwB;AACzD,QAAA,OAAO,iBAAiB,aAAa,CAAA,0BAAA,CAAA;AACtC,MAAA,CAAA;;;;;;AAOA,MAAA,wBAAA,CAAyB,OAAA,EAAkB;AAC1C,QAAA,OAAO,WAAW,OAAO,CAAA,sBAAA,CAAA;AAC1B,MAAA,CAAA;;;;;;;AAQA,MAAA,uBAAA,CAAwB,SAAoB,MAAA,EAAiB;AAC5D,QAAA,OAAO,CAAA,QAAA,EAAW,OAAO,CAAA,uBAAA,EAA0B,MAAM,CAAA,CAAA;AAC1D,MAAA,CAAA;;;;;AAMA,MAAA,aAAA,CAAc,OAAA,EAAkB;AAC/B,QAAA,OAAO,WAAW,OAAO,CAAA,WAAA,CAAA;AAC1B,MAAA,CAAA;;;;;;;AAQA,MAAA,OAAA,CAAQ,SAAA,EAAoB;AAC3B,QAAA,OAAO,aAAa,SAAS,CAAA,CAAA;AAC9B,MAAA,CAAA;;;;;;AAOA,MAAA,eAAA,CAAgB,SAAA,EAAoB;AACnC,QAAA,OAAO,aAAa,SAAS,CAAA,SAAA,CAAA;AAC9B,MAAA,CAAA;;;;;;;AAQA,MAAA,cAAA,CAAe,WAAsB,SAAA,EAAoB;AACxD,QAAA,OAAO,CAAA,UAAA,EAAa,SAAS,CAAA,UAAA,EAAa,SAAS,CAAA,CAAA;AACpD,MAAA,CAAA;;;;;AAMA,MAAA,uBAAA,CAAwB,WAAsB,SAAA,EAAoB;AACjE,QAAA,OAAO,CAAA,UAAA,EAAa,SAAS,CAAA,UAAA,EAAa,SAAS,CAAA,UAAA,CAAA;AACpD,MAAA,CAAA;;;;;;;;MASA,yBAAA,CAA0B,SAAA,EAAsB,WAAsB,KAAA,EAAa;AAClF,QAAA,OAAO,CAAA,UAAA,EAAa,SAAS,CAAA,UAAA,EAAa,SAAS,cAAc,KAAK,CAAA,IAAA,CAAA;AACvE,MAAA,CAAA;;;;;;;MAQA,0BAAA,CAA2B,SAAA,EAAsB,SAAA,EAAsB,KAAA,EAAe,MAAA,EAAiB;AACtG,QAAA,OAAO,aAAa,SAAS,CAAA,UAAA,EAAa,SAAS,CAAA,WAAA,EAAc,KAAK,IAAI,MAAM,CAAA,CAAA;AACjF,MAAA,CAAA;;;;;;;;MASA,sBAAA,CAAuB,SAAA,EAAsB,WAAsB,KAAA,EAAa;AAC/E,QAAA,OAAO,CAAA,UAAA,EAAa,SAAS,CAAA,UAAA,EAAa,SAAS,cAAc,KAAK,CAAA,CAAA;AACvE,MAAA,CAAA;;;;;AAMA,MAAA,0BAAA,CAA2B,WAAsB,SAAA,EAAoB;AACpE,QAAA,OAAO,CAAA,UAAA,EAAa,SAAS,CAAA,UAAA,EAAa,SAAS,CAAA,UAAA,CAAA;AACpD,MAAA,CAAA;;;;;AAMA,MAAA,iBAAA,CAAkB,SAAA,EAAoB;AACrC,QAAA,OAAO,aAAa,SAAS,CAAA,qBAAA,CAAA;AAC9B,MAAA,CAAA;;;;;;AAOA,MAAA,iBAAA,CAAkB,WAAsB,WAAA,EAAsB;AAC7D,QAAA,OAAO,CAAA,UAAA,EAAa,SAAS,CAAA,aAAA,EAAgB,WAAW,CAAA,CAAA;AACzD,MAAA,CAAA;;;;;;AAOA,MAAA,cAAA,CAAe,SAAA,EAAoB;AAClC,QAAA,OAAO,aAAa,SAAS,CAAA,QAAA,CAAA;AAC9B,MAAA,CAAA;;;;;AAMA,MAAA,gBAAA,CAAiB,SAAA,EAAoB;AACpC,QAAA,OAAO,aAAa,SAAS,CAAA,UAAA,CAAA;AAC9B,MAAA,CAAA;;;;;AAMA,MAAA,aAAA,CAAc,SAAA,EAAoB;AACjC,QAAA,OAAO,aAAa,SAAS,CAAA,OAAA,CAAA;AAC9B,MAAA,CAAA;;;;;AAMA,MAAA,mBAAA,CAAoB,SAAA,EAAoB;AACvC,QAAA,OAAO,aAAa,SAAS,CAAA,cAAA,CAAA;AAC9B,MAAA,CAAA;;;;;;AAOA,MAAA,kBAAA,CAAmB,WAAsB,SAAA,EAAoB;AAC5D,QAAA,OAAO,CAAA,UAAA,EAAa,SAAS,CAAA,eAAA,EAAkB,SAAS,CAAA,CAAA;AACzD,MAAA,CAAA;;;;;;;AAQA,MAAA,WAAA,CAAY,SAAA,EAAoB;AAC/B,QAAA,OAAO,aAAa,SAAS,CAAA,KAAA,CAAA;AAC9B,MAAA,CAAA;;;;;;;;AASA,MAAA,UAAA,CAAW,WAAsB,SAAA,EAAoB;AACpD,QAAA,OAAO,CAAA,UAAA,EAAa,SAAS,CAAA,MAAA,EAAS,SAAS,CAAA,CAAA;AAChD,MAAA,CAAA;;;;;;AAOA,MAAA,gBAAA,CAAiB,WAAsB,MAAA,EAAiB;AACvD,QAAA,OAAO,CAAA,UAAA,EAAa,SAAS,CAAA,YAAA,EAAe,MAAM,CAAA,CAAA;AACnD,MAAA,CAAA;;;;;;AAOA,MAAA,WAAA,CAAY,OAAA,EAAkB;AAC7B,QAAA,OAAO,WAAW,OAAO,CAAA,OAAA,CAAA;AAC1B,MAAA,CAAA;;;;;;;AAQA,MAAA,UAAA,CAAW,SAAoB,OAAA,EAAkB;AAChD,QAAA,OAAO,CAAA,QAAA,EAAW,OAAO,CAAA,QAAA,EAAW,OAAO,CAAA,CAAA;AAC5C,MAAA,CAAA;;;;;;;MAQA,MAAA,GAAM;AACL,QAAA,OAAO,SAAA;AACR,MAAA,CAAA;;;;;;;AAQA,MAAA,KAAA,CAAM,OAAA,EAAkB;AACvB,QAAA,OAAO,WAAW,OAAO,CAAA,CAAA;AAC1B,MAAA,CAAA;;;;;AAMA,MAAA,YAAA,CAAa,OAAA,EAAkB;AAC9B,QAAA,OAAO,WAAW,OAAO,CAAA,QAAA,CAAA;AAC1B,MAAA,CAAA;;;;;;;AAQA,MAAA,aAAA,CAAc,OAAA,EAAkB;AAC/B,QAAA,OAAO,WAAW,OAAO,CAAA,SAAA,CAAA;AAC1B,MAAA,CAAA;;;;;;;;;MAUA,WAAA,CAAY,OAAA,EAAoB,SAA4B,KAAA,EAAK;AAChE,QAAA,OAAO,CAAA,QAAA,EAAW,OAAO,CAAA,SAAA,EAAY,MAAM,CAAA,CAAA;AAC5C,MAAA,CAAA;;;;;AAMA,MAAA,YAAA,CAAa,OAAA,EAAkB;AAC9B,QAAA,OAAO,WAAW,OAAO,CAAA,QAAA,CAAA;AAC1B,MAAA,CAAA;;;;;AAMA,MAAA,kBAAA,CAAmB,OAAA,EAAkB;AACpC,QAAA,OAAO,WAAW,OAAO,CAAA,eAAA,CAAA;AAC1B,MAAA,CAAA;;;;;;;AAQA,MAAA,0BAAA,CAA2B,OAAA,EAAkB;AAC5C,QAAA,OAAO,WAAW,OAAO,CAAA,iBAAA,CAAA;AAC1B,MAAA,CAAA;;;;;;MAOA,eAAA,CAAgB,OAAA,EAAoB,UAAqB,MAAA,EAAiB;AACzE,QAAA,OAAO,CAAA,QAAA,EAAW,OAAO,CAAA,SAAA,EAAY,QAAQ,UAAU,MAAM,CAAA,CAAA;AAC9D,MAAA,CAAA;;;;;;;AAQA,MAAA,QAAA,CAAS,OAAA,EAAkB;AAC1B,QAAA,OAAO,WAAW,OAAO,CAAA,IAAA,CAAA;AAC1B,MAAA,CAAA;;;;;AAMA,MAAA,SAAA,CAAU,OAAA,EAAkB;AAC3B,QAAA,OAAO,WAAW,OAAO,CAAA,KAAA,CAAA;AAC1B,MAAA,CAAA;;;;;;;AAQA,MAAA,QAAA,CAAS,SAAoB,MAAA,EAAiB;AAC7C,QAAA,OAAO,CAAA,QAAA,EAAW,OAAO,CAAA,MAAA,EAAS,MAAM,CAAA,CAAA;AACzC,MAAA,CAAA;;;;;;;AAQA,MAAA,UAAA,CAAW,OAAA,EAAkB;AAC5B,QAAA,OAAO,WAAW,OAAO,CAAA,MAAA,CAAA;AAC1B,MAAA,CAAA;;;;;;;AAQA,MAAA,SAAA,CAAU,SAAoB,MAAA,EAAiB;AAC9C,QAAA,OAAO,CAAA,QAAA,EAAW,OAAO,CAAA,OAAA,EAAU,MAAM,CAAA,CAAA;AAC1C,MAAA,CAAA;;;;;AAMA,MAAA,qBAAA,CAAsB,OAAA,EAAkB;AACvC,QAAA,OAAO,WAAW,OAAO,CAAA,oBAAA,CAAA;AAC1B,MAAA,CAAA;;;;;;AAOA,MAAA,UAAA,CAAW,OAAA,EAAkB;AAC5B,QAAA,OAAO,WAAW,OAAO,CAAA,MAAA,CAAA;AAC1B,MAAA,CAAA;;;;;AAMA,MAAA,iBAAA,CAAkB,OAAA,EAAkB;AACnC,QAAA,OAAO,WAAW,OAAO,CAAA,QAAA,CAAA;AAC1B,MAAA,CAAA;;;;;AAMA,MAAA,YAAA,CAAa,OAAA,EAAkB;AAC9B,QAAA,OAAO,WAAW,OAAO,CAAA,QAAA,CAAA;AAC1B,MAAA,CAAA;;;;;AAMA,MAAA,iBAAA,CAAkB,OAAA,EAAkB;AACnC,QAAA,OAAO,WAAW,OAAO,CAAA,aAAA,CAAA;AAC1B,MAAA,CAAA;;;;;AAMA,MAAA,gBAAA,CAAiB,SAAoB,aAAA,EAAwB;AAC5D,QAAA,OAAO,CAAA,QAAA,EAAW,OAAO,CAAA,cAAA,EAAiB,aAAa,CAAA,CAAA;AACxD,MAAA,CAAA;;;;;;AAOA,MAAA,mBAAA,CAAoB,OAAA,EAAkB;AACrC,QAAA,OAAO,WAAW,OAAO,CAAA,OAAA,CAAA;AAC1B,MAAA,CAAA;;;;;AAMA,MAAA,eAAA,CAAgB,OAAA,EAAkB;AACjC,QAAA,OAAO,WAAW,OAAO,CAAA,YAAA,CAAA;AAC1B,MAAA,CAAA;;;;;AAMA,MAAA,cAAA,CAAe,OAAA,EAAkB;AAChC,QAAA,OAAO,WAAW,OAAO,CAAA,WAAA,CAAA;AAC1B,MAAA,CAAA;;;;;AAMA,MAAA,gBAAA,CAAiB,OAAA,EAAkB;AAClC,QAAA,OAAO,WAAW,OAAO,CAAA,WAAA,CAAA;AAC1B,MAAA,CAAA;;;;;;AAOA,MAAA,MAAA,CAAO,IAAA,EAAY;AAClB,QAAA,OAAO,YAAY,IAAI,CAAA,CAAA;AACxB,MAAA,CAAA;;;;;;AAOA,MAAA,QAAA,CAAS,IAAA,EAAY;AACpB,QAAA,OAAO,qBAAqB,IAAI,CAAA,CAAA;AACjC,MAAA,CAAA;;;;;;AAOA,MAAA,cAAA,CAAe,OAAA,EAAkB;AAChC,QAAA,OAAO,WAAW,OAAO,CAAA,UAAA,CAAA;AAC1B,MAAA,CAAA;;;;;;;AAQA,MAAA,aAAA,CAAc,SAAoB,IAAA,EAAY;AAC7C,QAAA,OAAO,CAAA,QAAA,EAAW,OAAO,CAAA,WAAA,EAAc,IAAI,CAAA,CAAA;AAC5C,MAAA,CAAA;;;;;MAMA,gBAAA,CAAiB,SAAA,EAAsB,WAAsB,QAAA,EAAgB;AAC5E,QAAA,OAAO,CAAA,UAAA,EAAa,SAAS,CAAA,OAAA,EAAU,SAAS,YAAY,QAAQ,CAAA,CAAA;AACrE,MAAA,CAAA;;;;;AAMA,MAAA,UAAA,CAAW,WAAsB,SAAA,EAAoB;AACpD,QAAA,OAAO,CAAA,UAAA,EAAa,SAAS,CAAA,OAAA,EAAU,SAAS,CAAA,OAAA,CAAA;AACjD,MAAA,CAAA;;;;;;AAOA,MAAA,OAAA,CAAQ,UAAqB,SAAA,EAAqB;AACjD,QAAA,MAAM,KAAA,GAAQ,CAAC,EAAA,EAAI,UAAA,EAAY,QAAQ,CAAA;AAEvC,QAAA,IAAI,SAAA;AAAW,UAAA,KAAA,CAAM,IAAA,CAAK,YAAY,SAAS,CAAA;AAE/C,QAAA,KAAA,CAAM,KAAK,SAAS,CAAA;AAEpB,QAAA,OAAO,KAAA,CAAM,KAAK,GAAG,CAAA;AAGtB,MAAA,CAAA;;;;;AAMA,MAAA,kBAAA,CAAmB,OAAA,EAAkB;AACpC,QAAA,OAAO,WAAW,OAAO,CAAA,eAAA,CAAA;AAC1B,MAAA,CAAA;;;;;;AAOA,MAAA,cAAA,CAAe,WAAsB,cAAA,EAAoC;AACxE,QAAA,OAAO,CAAA,UAAA,EAAa,SAAS,CAAA,kBAAA,EAAqB,cAAc,CAAA,CAAA;AACjE,MAAA,CAAA;;;;;AAMA,MAAA,4BAAA,CAA6B,SAAA,EAAoB;AAChD,QAAA,OAAO,aAAa,SAAS,CAAA,mCAAA,CAAA;AAC9B,MAAA,CAAA;;;;;;;;;;AAWA,MAAA,aAAA,CAAc,UAAqB,MAAA,EAA0B;AAC5D,QAAA,MAAM,KAAA,GAAQ,CAAC,EAAA,EAAI,UAAA,EAAY,UAAU,gBAAgB,CAAA;AAEzD,QAAA,IAAI,MAAA;AAAQ,UAAA,KAAA,CAAM,KAAK,MAAM,CAAA;AAE7B,QAAA,OAAO,KAAA,CAAM,KAAK,GAAG,CAAA;AAGtB,MAAA,CAAA;;;;;;;;;AAUA,MAAA,IAAA,CAAK,SAA4B,KAAA,EAAK;AACrC,QAAA,OAAO,UAAU,MAAM,CAAA,CAAA;AACxB,MAAA,CAAA;;;;;;AAOA,MAAA,6BAAA,CAA8B,aAAA,EAAwB;AACrD,QAAA,OAAO,2BAA2B,aAAa,CAAA,gBAAA,CAAA;AAChD,MAAA,CAAA;;;;;MAMA,UAAA,GAAU;AACT,QAAA,OAAO,CAAA,iBAAA,CAAA;AACR,MAAA,CAAA;;;;;AAMA,MAAA,eAAA,CAAgB,OAAA,EAAkB;AACjC,QAAA,OAAO,qBAAqB,OAAO,CAAA,OAAA,CAAA;AACpC,MAAA,CAAA;;;;;AAMA,MAAA,SAAA,CAAU,OAAA,EAAkB;AAC3B,QAAA,OAAO,qBAAqB,OAAO,CAAA,CAAA;AACpC,MAAA,CAAA;;;;;MAMA,YAAA,GAAY;AACX,QAAA,OAAO,CAAA,mBAAA,CAAA;AACR,MAAA,CAAA;;;;;MAMA,eAAA,GAAe;AACd,QAAA,OAAO,CAAA,sBAAA,CAAA;AACR,MAAA,CAAA;;;;;MAMA,YAAA,GAAY;AACX,QAAA,OAAO,CAAA,cAAA,CAAA;AACR,MAAA,CAAA;;;;;;AAOA,MAAA,eAAA,CAAgB,SAAA,EAAoB;AACnC,QAAA,OAAO,aAAa,SAAS,CAAA,SAAA,CAAA;AAC9B,MAAA,CAAA;;;;;AAMA,MAAA,aAAA,CAAc,OAAA,EAAkB;AAC/B,QAAA,OAAO,WAAW,OAAO,CAAA,SAAA,CAAA;AAC1B,MAAA,CAAA;;;;;;;;;;;;;AAcA,MAAA,OAAA,CAAQ,WAAsB,YAAA,EAAqB;AAClD,QAAA,MAAM,KAAA,GAAQ,CAAC,EAAA,EAAI,UAAA,EAAY,SAAS,CAAA;AAExC,QAAA,IAAI,YAAA;AAAc,UAAA,KAAA,CAAM,KAAK,YAAY,CAAA;AAEzC,QAAA,OAAO,KAAA,CAAM,KAAK,GAAG,CAAA;AACtB,MAAA,CAAA;;;;;;;;;;;;;;MAeA,cAAA,CAAe,SAAA,EAAsB,YAAA,EAAsB,SAAA,GAAqC,WAAA,EAAW;AAC1G,QAAA,OAAO,CAAA,UAAA,EAAa,SAAS,CAAA,CAAA,EAAI,YAAY,aAAa,SAAS,CAAA,CAAA;AACpE,MAAA,CAAA;;;;;;MAOA,eAAA,CAAgB,SAAA,EAAsB,cAAsB,QAAA,EAA4B;AACvF,QAAA,OAAO,CAAA,UAAA,EAAa,SAAS,CAAA,CAAA,EAAI,YAAY,IAAI,QAAQ,CAAA,CAAA;AAC1D,MAAA,CAAA;;;;;MAMA,OAAA,GAAO;AACN,QAAA,OAAO,CAAA,QAAA,CAAA;AACR,MAAA,CAAA;;;;;MAMA,UAAA,GAAU;AACT,QAAA,OAAO,CAAA,YAAA,CAAA;AACR,MAAA,CAAA;;;;;MAMA,wBAAA,GAAwB;AACvB,QAAA,OAAO,CAAA,wBAAA,CAAA;AACR,MAAA,CAAA;;;;;MAMA,0BAAA,GAA0B;AACzB,QAAA,OAAO,CAAA,WAAA,CAAA;AACR,MAAA,CAAA;;;;;MAMA,mBAAA,GAAmB;AAClB,QAAA,OAAO,CAAA,iBAAA,CAAA;AACR,MAAA,CAAA;;;;;MAMA,mBAAA,GAAmB;AAClB,QAAA,OAAO,CAAA,aAAA,CAAA;AACR,MAAA,CAAA;;;;;MAMA,qBAAA,GAAqB;AACpB,QAAA,OAAO,CAAA,oBAAA,CAAA;AACR,MAAA,CAAA;;;;;;;AAQA,MAAA,mBAAA,CAAoB,aAAA,EAAwB;AAC3C,QAAA,OAAO,iBAAiB,aAAa,CAAA,SAAA,CAAA;AACtC,MAAA,CAAA;;;;;;;AAQA,MAAA,kBAAA,CAAmB,eAA0B,SAAA,EAAoB;AAChE,QAAA,OAAO,CAAA,cAAA,EAAiB,aAAa,CAAA,UAAA,EAAa,SAAS,CAAA,CAAA;AAC5D,MAAA,CAAA;;;;;;;AAQA,MAAA,wBAAA,CAAyB,eAA0B,OAAA,EAAkB;AACpE,QAAA,OAAO,CAAA,cAAA,EAAiB,aAAa,CAAA,QAAA,EAAW,OAAO,CAAA,SAAA,CAAA;AACxD,MAAA,CAAA;;;;;;;MAQA,uBAAA,CAAwB,aAAA,EAA0B,SAAoB,SAAA,EAAoB;AACzF,QAAA,OAAO,CAAA,cAAA,EAAiB,aAAa,CAAA,QAAA,EAAW,OAAO,aAAa,SAAS,CAAA,CAAA;AAC9E,MAAA,CAAA;;;;;AAMA,MAAA,mBAAA,CAAoB,eAA0B,gBAAA,EAAwB;AACrE,QAAA,OAAO,CAAA,cAAA,EAAiB,aAAa,CAAA,CAAA,EAAI,gBAAgB,CAAA,SAAA,CAAA;AAC1D,MAAA,CAAA;;;;;;;;AASA,MAAA,uBAAA,CAAwB,OAAA,EAAkB;AACzC,QAAA,OAAO,WAAW,OAAO,CAAA,oBAAA,CAAA;AAC1B,MAAA,CAAA;;;;;;;;MASA,eAAA,CAAgB,OAAA,EAAoB,SAA4B,KAAA,EAAK;AACpE,QAAA,OAAO,CAAA,QAAA,EAAW,OAAO,CAAA,cAAA,EAAiB,MAAM,CAAA,CAAA;AACjD,MAAA,CAAA;;;;;;AAOA,MAAA,mCAAA,CAAoC,eAA0B,OAAA,EAAkB;AAC/E,QAAA,OAAO,CAAA,cAAA,EAAiB,aAAa,CAAA,QAAA,EAAW,OAAO,CAAA,qBAAA,CAAA;AACxD,MAAA,CAAA;;;;;;MAOA,6BAAA,CAA8B,aAAA,EAA0B,SAAoB,SAAA,EAAoB;AAC/F,QAAA,OAAO,CAAA,cAAA,EAAiB,aAAa,CAAA,QAAA,EAAW,OAAO,aAAa,SAAS,CAAA,YAAA,CAAA;AAC9E,MAAA,CAAA;;;;;;AAOA,MAAA,kBAAA,CAAmB,OAAA,EAAkB;AACpC,QAAA,OAAO,WAAW,OAAO,CAAA,eAAA,CAAA;AAC1B,MAAA,CAAA;;;;;MAMA,cAAA,GAAc;AACb,QAAA,OAAO,CAAA,gBAAA,CAAA;AACR,MAAA,CAAA;;;;;;;AAQA,MAAA,aAAA,CAAc,SAAA,EAAoB;AACjC,QAAA,OAAO,oBAAoB,SAAS,CAAA,CAAA;AACrC,MAAA,CAAA;;;;;AAMA,MAAA,OAAA,CAAQ,SAAA,EAAoB;AAC3B,QAAA,OAAO,aAAa,SAAS,CAAA,CAAA;AAC9B,MAAA,CAAA;;;;;MAMA,YAAA,GAAY;AACX,QAAA,OAAO,gBAAA;AACR,MAAA,CAAA;;;;;AAMA,MAAA,WAAA,CAAY,MAAA,EAAiB;AAC5B,QAAA,OAAO,kBAAkB,MAAM,CAAA,CAAA;AAChC,MAAA,CAAA;;;;;;;MAQA,iBAAA,GAAiB;AAChB,QAAA,OAAO,gBAAA;AACR,MAAA,CAAA;;;;;;AAOA,MAAA,aAAA,CAAc,OAAA,EAAkB;AAC/B,QAAA,OAAO,WAAW,OAAO,CAAA,SAAA,CAAA;AAC1B,MAAA,CAAA;;;;;;;AAQA,MAAA,YAAA,CAAa,SAAoB,SAAA,EAAoB;AACpD,QAAA,OAAO,CAAA,QAAA,EAAW,OAAO,CAAA,UAAA,EAAa,SAAS,CAAA,CAAA;AAChD,MAAA,CAAA;;;;;;AAOA,MAAA,oBAAA,CAAqB,OAAA,EAAkB;AACtC,QAAA,OAAO,WAAW,OAAO,CAAA,iBAAA,CAAA;AAC1B,MAAA,CAAA;;;;;;;AAQA,MAAA,mBAAA,CAAoB,SAAoB,qBAAA,EAAgC;AACvE,QAAA,OAAO,CAAA,QAAA,EAAW,OAAO,CAAA,kBAAA,EAAqB,qBAAqB,CAAA,CAAA;AACpE,MAAA,CAAA;;;;;AAMA,MAAA,wBAAA,CAAyB,SAAoB,qBAAA,EAAgC;AAC5E,QAAA,OAAO,CAAA,QAAA,EAAW,OAAO,CAAA,kBAAA,EAAqB,qBAAqB,CAAA,MAAA,CAAA;AACpE,MAAA,CAAA;;;;;;AAOA,MAAA,eAAA,CAAgB,OAAA,EAAkB;AACjC,QAAA,OAAO,WAAW,OAAO,CAAA,WAAA,CAAA;AAC1B,MAAA,CAAA;;;;;AAMA,MAAA,oBAAA,CAAqB,OAAA,EAAkB;AACtC,QAAA,OAAO,WAAW,OAAO,CAAA,iBAAA,CAAA;AAC1B,MAAA,CAAA;;;;;;MAOA,kBAAA,GAAkB;AACjB,QAAA,OAAO,mBAAA;AACR,MAAA,CAAA;;;;;;AAOA,MAAA,YAAA,CAAa,aAAA,EAAwB;AACpC,QAAA,OAAO,iBAAiB,aAAa,CAAA,aAAA,CAAA;AACtC,MAAA,CAAA;;;;;;AAOA,MAAA,WAAA,CAAY,eAA0B,aAAA,EAAwB;AAC7D,QAAA,OAAO,CAAA,cAAA,EAAiB,aAAa,CAAA,cAAA,EAAiB,aAAa,CAAA,CAAA;AACpE,MAAA,CAAA;;;;;AAMA,MAAA,IAAA,CAAK,aAAA,EAAwB;AAC5B,QAAA,OAAO,iBAAiB,aAAa,CAAA,KAAA,CAAA;AACtC,MAAA,CAAA;;;;;AAMA,MAAA,YAAA,CAAa,OAAA,EAAkB;AAC9B,QAAA,OAAO,WAAW,OAAO,CAAA,SAAA,CAAA;AAC1B,MAAA,CAAA;;;;;AAMA,MAAA,kBAAA,CAAmB,eAA0B,aAAA,EAAwB;AACpE,QAAA,OAAO,CAAA,cAAA,EAAiB,aAAa,CAAA,cAAA,EAAiB,aAAa,CAAA,QAAA,CAAA;AACpE,MAAA,CAAA;;;;;;AAOA,MAAA,iBAAA,CAAkB,aAAA,EAAwB;AACzC,QAAA,OAAO,iBAAiB,aAAa,CAAA,OAAA,CAAA;AACtC,MAAA,CAAA;;;;;;;AAQA,MAAA,gBAAA,CAAiB,eAA0B,OAAA,EAAkB;AAC5D,QAAA,OAAO,CAAA,cAAA,EAAiB,aAAa,CAAA,QAAA,EAAW,OAAO,CAAA,CAAA;AACxD,MAAA,CAAA;;;;;AAMA,MAAA,gBAAA,CAAiB,KAAA,EAAgB;AAChC,QAAA,OAAO,SAAS,KAAK,CAAA,cAAA,CAAA;AACtB,MAAA,CAAA;;;;;AAMA,MAAA,eAAA,CAAgB,OAAkB,cAAA,EAAyB;AAC1D,QAAA,OAAO,CAAA,MAAA,EAAS,KAAK,CAAA,eAAA,EAAkB,cAAc,CAAA,CAAA;AACtD,MAAA,CAAA;;;;;AAMA,MAAA,mBAAA,CAAoB,SAAA,EAAoB;AACvC,QAAA,OAAO,aAAa,SAAS,CAAA,sBAAA,CAAA;AAC9B,MAAA,CAAA;;;;;MAMA,uBAAA,GAAuB;AACtB,QAAA,OAAO,4BAAA;AACR,MAAA,CAAA;;;;;;AAOA,MAAA,qBAAA,CAAsB,OAAA,EAAkB;AACvC,QAAA,OAAO,WAAW,OAAO,CAAA,kBAAA,CAAA;AAC1B,MAAA,CAAA;;;;;;;AAQA,MAAA,oBAAA,CAAqB,SAAoB,OAAA,EAAkB;AAC1D,QAAA,OAAO,CAAA,QAAA,EAAW,OAAO,CAAA,mBAAA,EAAsB,OAAO,CAAA,CAAA;AACvD,MAAA;;AAGD,IAAA,KAAA,MAAW,CAAC,KAAK,EAAE,CAAA,IAAK,OAAO,OAAA,CAAQA,QAAAA,CAAA,MAAM,CAAA,EAAG;AAC/C,MAAAA,QAAAA,CAAA,MAAA,CAAO,GAA0B,CAAA,GAAI,IAAI,IAAA,KAAmD;AAC3F,QAAA,MAAM,OAAA,GAAU,IAAA,CAAK,GAAA,CAAI,CAAC,GAAA,KAAO;AAChC,UAAA,IAAI,GAAA,EAAK;AAER,YAAA,IAAI,YAAA,iBAAA,CAAkB,IAAA,CAAK,MAAA,CAAO,GAAG,CAAC,CAAA,EAAG;AACxC,cAAA,OAAO,GAAA;AACR,YAAA;AAEA,YAAA,OAAO,mBAAmB,GAAG,CAAA;AAC9B,UAAA;AAEA,UAAA,OAAO,GAAA;QACR,CAAC,CAAA;AAED,QAAA,OAAO,EAAA,CAAG,IAAA,CAAK,IAAA,EAAM,GAAG,OAAO,CAAA;AAChC,MAAA,CAAA;AACD,IAAA;AAGA,IAAA,MAAA,CAAO,MAAA,CAAOA,SAAA,MAAM,CAAA;AAEP,IAAAA,SAAA,wBAAA,GAA2B,oBAAA;AAIxC,IAAA,IAAY6M,YAAAA;AAAZ,IAAA,CAAA,SAAYA,YAAAA,EAAW;AACtB,MAAAA,YAAAA,CAAA,MAAA,CAAA,GAAA,MAAA;AACA,MAAAA,YAAAA,CAAA,KAAA,CAAA,GAAA,KAAA;AACA,MAAAA,YAAAA,CAAA,MAAA,CAAA,GAAA,MAAA;AACA,MAAAA,YAAAA,CAAA,KAAA,CAAA,GAAA,KAAA;AACA,MAAAA,YAAAA,CAAA,QAAA,CAAA,GAAA,MAAA;AACD,IAAA,CAAA,EANYA,YAAAA,KAAW7M,QAAAA,CAAA,WAAA,GAAX6M,YAAAA,GAAW,EAAA,CAAA,CAAA;AAQV,IAAA7M,SAAA,SAAA,GAAmC;;;;;;;;;AAS/C,MAAA,KAAA,CAAkC,SAAoB,MAAA,EAAc;AACnE,QAAA,OAAO,CAAA,QAAA,EAAW,OAAO,CAAA,CAAA,EAAI,MAAM,CAAA,CAAA;AACpC,MAAA,CAAA;;;;;;;;;MAUA,SAAA,CAA0C,OAAA,EAAoB,WAAmB,MAAA,EAAc;AAC9F,QAAA,OAAO,CAAA,OAAA,EAAU,OAAO,CAAA,CAAA,EAAI,SAAS,IAAI,MAAM,CAAA,CAAA;AAChD,MAAA,CAAA;;;;;;;MAQA,WAAA,CAA8C,OAAA,EAAoB,aAAqB,MAAA,EAAc;AACpG,QAAA,OAAO,CAAA,UAAA,EAAa,OAAO,CAAA,CAAA,EAAI,WAAW,IAAI,MAAM,CAAA,CAAA;AACrD,MAAA,CAAA;;;;;;;MAQA,oBAAA,CACC,OAAA,EACA,sBACA,MAAA,EAAc;AAEd,QAAA,OAAO,CAAA,oBAAA,EAAuB,OAAO,CAAA,CAAA,EAAI,oBAAoB,IAAI,MAAM,CAAA,CAAA;AACxE,MAAA,CAAA;;;;;;;;;MAUA,WAAA,CAA8C,OAAA,EAAoB,aAAqB,MAAA,EAAc;AACpG,QAAA,OAAO,CAAA,SAAA,EAAY,OAAO,CAAA,CAAA,EAAI,WAAW,IAAI,MAAM,CAAA,CAAA;AACpD,MAAA,CAAA;;;;;;;;;MAUA,UAAA,CAA4C,MAAA,EAAmB,YAAoB,MAAA,EAAc;AAChG,QAAA,OAAO,CAAA,SAAA,EAAY,MAAM,CAAA,CAAA,EAAI,UAAU,IAAI,MAAM,CAAA,CAAA;AAClD,MAAA,CAAA;;;;;;;;;;;AAYA,MAAA,iBAAA,CAAyD,KAAA,EAAY;AACpE,QAAA,OAAO,kBAAkB,KAAK,CAAA,IAAA,CAAA;AAC/B,MAAA,CAAA;;;;;;;;;MAUA,UAAA,CAA4C,MAAA,EAAmB,YAAoB,MAAA,EAAc;AAChG,QAAA,OAAO,CAAA,SAAA,EAAY,MAAM,CAAA,CAAA,EAAI,UAAU,IAAI,MAAM,CAAA,CAAA;AAClD,MAAA,CAAA;;;;;;;;;MAUA,iBAAA,CACC,OAAA,EACA,MAAA,EACA,YAAA,EACA,MAAA,EAAc;AAEd,QAAA,OAAO,WAAW,OAAO,CAAA,OAAA,EAAU,MAAM,CAAA,SAAA,EAAY,YAAY,IAAI,MAAM,CAAA,CAAA;AAC5E,MAAA,CAAA;;;;;;;;;AAUA,MAAA,oBAAA,CAAqB,QAAmB,oBAAA,EAA4B;AACnE,QAAA,OAAO,CAAA,oBAAA,EAAuB,MAAM,CAAA,CAAA,EAAI,oBAAoB,CAAA,IAAA,CAAA;AAC7D,MAAA,CAAA;;;;;;;AAQA,MAAA,gBAAA,CAAiB,yBAAA,EAAiC;AACjD,QAAA,OAAO,8BAA8B,yBAAyB,CAAA,IAAA,CAAA;AAC/D,MAAA,CAAA;;;;;;;MAQA,eAAA,CACC,aAAA,EACA,iBACA,MAAA,EAAc;AAEd,QAAA,OAAO,CAAA,WAAA,EAAc,aAAa,CAAA,CAAA,EAAI,eAAe,IAAI,MAAM,CAAA,CAAA;AAChE,MAAA,CAAA;;;;;;;MAQA,gBAAA,CACC,aAAA,EACA,uBACA,MAAA,EAAc;AAEd,QAAA,OAAO,CAAA,WAAA,EAAc,aAAa,CAAA,CAAA,EAAI,qBAAqB,IAAI,MAAM,CAAA,CAAA;AACtE,MAAA,CAAA;;;;;;;MAQA,gBAAA,CACC,aAAA,EACA,oBACA,MAAA,EAAc;AAEd,QAAA,OAAO,CAAA,YAAA,EAAe,aAAa,CAAA,CAAA,EAAI,kBAAkB,IAAI,MAAM,CAAA,CAAA;AACpE,MAAA,CAAA;;;;;;;MAQA,eAAA,CACC,aAAA,EACA,aAAA,EACA,mBAAA,EACA,MAAA,EAAc;AAEd,QAAA,OAAO,eAAe,aAAa,CAAA,cAAA,EAAiB,aAAa,CAAA,OAAA,EAAU,mBAAmB,IAAI,MAAM,CAAA,CAAA;AACzG,MAAA,CAAA;;;;;;;AAQA,MAAA,iBAAA,CAA0D,0BAAqC,MAAA,EAAc;AAC5G,QAAA,OAAO,eAAeA,QAAAA,CAAA,wBAAwB,CAAA,OAAA,EAAU,wBAAwB,IAAI,MAAM,CAAA,CAAA;AAC3F,MAAA,CAAA;;;;;;;AAQA,MAAA,cAAA,CACC,aAAA,EACA,OAAA,EACA,MAAA,GAAiB6M,YAAAA,CAAY,GAAA,EAAa;AAE1C,QAAA,OAAO,CAAA,YAAA,EAAe,aAAa,CAAA,OAAA,EAAU,OAAO,IAAI,MAAM,CAAA,CAAA;AAC/D,MAAA,CAAA;;;;;;;MAQA,QAAA,CAAwC,MAAA,EAAmB,UAAkB,MAAA,EAAc;AAC1F,QAAA,OAAO,CAAA,YAAA,EAAe,MAAM,CAAA,CAAA,EAAI,QAAQ,IAAI,MAAM,CAAA,CAAA;AACnD,MAAA,CAAA;;;;;;;AAQA,MAAA,OAAA,CAAsC,WAAsB,MAAA,EAAc;AACzE,QAAA,OAAO,CAAA,UAAA,EAAa,SAAS,CAAA,CAAA,EAAI,MAAM,CAAA,CAAA;AACxC,MAAA,CAAA;;;;;;;MAQA,QAAA,CAAwC,MAAA,EAAmB,UAAkB,MAAA,EAAc;AAC1F,QAAA,OAAO,CAAA,YAAA,EAAe,MAAM,CAAA,CAAA,EAAI,QAAQ,IAAI,MAAM,CAAA,CAAA;AACnD,MAAA,CAAA;;;;;;;MAQA,wBAAA,CACC,qBAAA,EACA,+BACA,MAAA,EAAc;AAEd,QAAA,OAAO,CAAA,cAAA,EAAiB,qBAAqB,CAAA,CAAA,EAAI,6BAA6B,IAAI,MAAM,CAAA,CAAA;AACzF,MAAA,CAAA;;;;;;;MAQA,iBAAA,CACC,OAAA,EACA,MAAA,EACA,iBAAA,EACA,MAAA,EAAc;AAEd,QAAA,OAAO,WAAW,OAAO,CAAA,OAAA,EAAU,MAAM,CAAA,SAAA,EAAY,iBAAiB,IAAI,MAAM,CAAA,CAAA;AACjF,MAAA,CAAA;;;;;AAMA,MAAA,eAAA,CAAgB,OAAA,EAAkB;AACjC,QAAA,OAAO,sBAAsB,OAAO,CAAA,CAAA;AACrC,MAAA,CAAA;;;;;;;MAQA,aAAA,CAAkD,OAAA,EAAoB,eAAuB,MAAA,EAAc;AAC1G,QAAA,OAAO,CAAA,kBAAA,EAAqB,OAAO,CAAA,CAAA,EAAI,aAAa,IAAI,MAAM,CAAA,CAAA;AAC/D,MAAA;;AAGD,IAAA,KAAA,MAAW,CAAC,KAAK,EAAE,CAAA,IAAK,OAAO,OAAA,CAAQ7M,QAAAA,CAAA,SAAS,CAAA,EAAG;AAClD,MAAAA,QAAAA,CAAA,SAAA,CAAU,GAA6B,CAAA,GAAI,IAAI,IAAA,KAAmD;AACjG,QAAA,MAAM,OAAA,GAAU,IAAA,CAAK,GAAA,CAAI,CAAC,GAAA,KAAO;AAChC,UAAA,IAAI,GAAA,EAAK;AAER,YAAA,IAAI,YAAA,iBAAA,CAAkB,IAAA,CAAK,MAAA,CAAO,GAAG,CAAC,CAAA,EAAG;AACxC,cAAA,OAAO,GAAA;AACR,YAAA;AAEA,YAAA,OAAO,mBAAmB,GAAG,CAAA;AAC9B,UAAA;AAEA,UAAA,OAAO,GAAA;QACR,CAAC,CAAA;AAED,QAAA,OAAO,EAAA,CAAG,IAAA,CAAK,IAAA,EAAM,GAAG,OAAO,CAAA;AAChC,MAAA,CAAA;AACD,IAAA;AAGA,IAAA,MAAA,CAAO,MAAA,CAAOA,SAAA,SAAS,CAAA;AAwCV,IAAAA,SAAA,UAAA,GAAa;MACzB,GAAA,EAAK,CAAA,yBAAA,EAA4BA,SAAA,UAAU,CAAA,CAAA;MAC3C,GAAA,EAAK,4BAAA;MACL,KAAA,EAAO,8BAAA;MACP,MAAA,EAAQ,oBAAA;MACR,QAAA,EAAU,qBAAA;MACV,IAAA,EAAM,sBAAA;MACN,cAAA,EAAgB;;AAIjB,IAAA,MAAA,CAAO,MAAA,CAAOA,SAAA,UAAU,CAAA;AAEX,IAAAA,SAAA,YAAA,GAAe;MAC3B,gBAAA,EAAkB,CAAA,EAAGA,SAAA,UAAA,CAAW,GAAG,GAAGA,QAAAA,CAAA,MAAA,CAAO,qBAAqB,CAAA,CAAA;MAClE,QAAA,EAAU,CAAA,EAAGA,SAAA,UAAA,CAAW,GAAG,GAAGA,QAAAA,CAAA,MAAA,CAAO,qBAAqB,CAAA,CAAA;;;;MAI1D,kBAAA,EAAoB,CAAA,EAAGA,SAAA,UAAA,CAAW,GAAG,GAAGA,QAAAA,CAAA,MAAA,CAAO,uBAAuB,CAAA;;AAIvE,IAAA,MAAA,CAAO,MAAA,CAAOA,SAAA,YAAY,CAAA;;;;;;;;;ACp4C1B,IAAA,IAAY8M,cAAAA;AAAZ,IAAA,CAAA,SAAYA,cAAAA,EAAa;AACxB,MAAAA,cAAAA,CAAA,YAAA,CAAA,GAAA,YAAA;AACA,MAAAA,cAAAA,CAAA,aAAA,CAAA,GAAA,aAAA;AACA,MAAAA,cAAAA,CAAA,YAAA,CAAA,GAAA,YAAA;AACD,IAAA,CAAA,EAJYA,cAAAA,KAAa9M,QAAAA,CAAA,aAAA,GAAb8M,cAAAA,GAAa,EAAA,CAAA,CAAA;AAqGzB,IAAA,IAAYC,yBAAAA;AAAZ,IAAA,CAAA,SAAYA,yBAAAA,EAAwB;AACnC,MAAAA,yBAAAA,CAAA,YAAA,CAAA,GAAA,cAAA;AACA,MAAAA,yBAAAA,CAAA,eAAA,CAAA,GAAA,gBAAA;AACD,IAAA,CAAA,EAHYA,yBAAAA,KAAwB/M,QAAAA,CAAA,wBAAA,GAAxB+M,yBAAAA,GAAwB,EAAA,CAAA,CAAA;AAQpC,IAAA,IAAYC,gCAAAA;AAAZ,IAAA,CAAA,SAAYA,gCAAAA,EAA+B;AAC1C,MAAAA,gCAAAA,CAAAA,gCAAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,GAAA,aAAA;AACA,MAAAA,gCAAAA,CAAAA,gCAAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,GAAA,aAAA;AACA,MAAAA,gCAAAA,CAAAA,gCAAAA,CAAA,qBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,qBAAA;AACA,MAAAA,gCAAAA,CAAAA,gCAAAA,CAAA,eAAA,CAAA,GAAA,CAAA,CAAA,GAAA,eAAA;AACD,IAAA,CAAA,EALYA,gCAAAA,KAA+BhN,QAAAA,CAAA,+BAAA,GAA/BgN,gCAAAA,GAA+B,EAAA,CAAA,CAAA;AAmD3C,IAAA,IAAYC,sBAAAA;AAAZ,IAAA,CAAA,SAAYA,sBAAAA,EAAqB;AAIhC,MAAAA,sBAAAA,CAAA,cAAA,CAAA,GAAA,cAAA;AAIA,MAAAA,sBAAAA,CAAA,kBAAA,CAAA,GAAA,mBAAA;AAIA,MAAAA,sBAAAA,CAAA,gBAAA,CAAA,GAAA,gBAAA;AAIA,MAAAA,sBAAAA,CAAA,YAAA,CAAA,GAAA,YAAA;AAIA,MAAAA,sBAAAA,CAAA,WAAA,CAAA,GAAA,WAAA;AAIA,MAAAA,sBAAAA,CAAA,mBAAA,CAAA,GAAA,oBAAA;AAIA,MAAAA,sBAAAA,CAAA,iBAAA,CAAA,GAAA,kBAAA;AAIA,MAAAA,sBAAAA,CAAA,gBAAA,CAAA,GAAA,iBAAA;AAIA,MAAAA,sBAAAA,CAAA,SAAA,CAAA,GAAA,UAAA;AAIA,MAAAA,sBAAAA,CAAA,aAAA,CAAA,GAAA,cAAA;AACD,IAAA,CAAA,EAzCYA,sBAAAA,KAAqBjN,QAAAA,CAAA,qBAAA,GAArBiN,sBAAAA,GAAqB,EAAA,CAAA,CAAA;AA8CjC,IAAA,IAAYC,iBAAAA;AAAZ,IAAA,CAAA,SAAYA,iBAAAA,EAAgB;AAC3B,MAAAA,iBAAAA,CAAAA,iBAAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAA;AACA,MAAAA,iBAAAA,CAAAA,iBAAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAA;AACA,MAAAA,iBAAAA,CAAAA,iBAAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAA;AACA,MAAAA,iBAAAA,CAAAA,iBAAAA,CAAA,iBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,iBAAA;AACA,MAAAA,iBAAAA,CAAAA,iBAAAA,CAAA,iBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,iBAAA;AACA,MAAAA,iBAAAA,CAAAA,iBAAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAA;AACD,IAAA,CAAA,EAPYA,iBAAAA,KAAgBlN,QAAAA,CAAA,gBAAA,GAAhBkN,iBAAAA,GAAgB,EAAA,CAAA,CAAA;AAY5B,IAAA,IAAYC,cAAAA;AAAZ,IAAA,CAAA,SAAYA,cAAAA,EAAa;AAIxB,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,cAAA,CAAA,GAAA,GAAA,CAAA,GAAA,cAAA;AAIA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,oBAAA,CAAA,GAAA,IAAA,CAAA,GAAA,oBAAA;AAIA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,oBAAA,CAAA,GAAA,IAAA,CAAA,GAAA,oBAAA;AAIA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,gBAAA,CAAA,GAAA,GAAA,CAAA,GAAA,gBAAA;AAIA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,gBAAA,CAAA,GAAA,IAAA,CAAA,GAAA,gBAAA;AAIA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,cAAA,CAAA,GAAA,IAAA,CAAA,GAAA,cAAA;AAIA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,cAAA,CAAA,GAAA,IAAA,CAAA,GAAA,cAAA;AAIA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,gBAAA,CAAA,GAAA,IAAA,CAAA,GAAA,gBAAA;AAIA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,oBAAA,CAAA,GAAA,IAAA,CAAA,GAAA,oBAAA;AAIA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,iBAAA,CAAA,GAAA,IAAA,CAAA,GAAA,iBAAA;AAIA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,eAAA,CAAA,GAAA,IAAA,CAAA,GAAA,eAAA;AAIA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,cAAA,CAAA,GAAA,IAAA,CAAA,GAAA,cAAA;AAIA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,aAAA,CAAA,GAAA,IAAA,CAAA,GAAA,aAAA;AAIA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,eAAA,CAAA,GAAA,IAAA,CAAA,GAAA,eAAA;AAIA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,4BAAA,CAAA,GAAA,IAAA,CAAA,GAAA,4BAAA;AAIA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,oBAAA,CAAA,GAAA,IAAA,CAAA,GAAA,oBAAA;AAIA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,iBAAA,CAAA,GAAA,IAAA,CAAA,GAAA,iBAAA;AAIA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,aAAA,CAAA,GAAA,GAAA,CAAA,GAAA,aAAA;AAIA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,uBAAA,CAAA,GAAA,IAAA,CAAA,GAAA,uBAAA;AAIA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,kBAAA,CAAA,GAAA,IAAA,CAAA,GAAA,kBAAA;AAIA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,0BAAA,CAAA,GAAA,IAAA,CAAA,GAAA,0BAAA;AAIA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,iCAAA,CAAA,GAAA,IAAA,CAAA,GAAA,iCAAA;AAIA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,uBAAA,CAAA,GAAA,IAAA,CAAA,GAAA,uBAAA;AAIA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,oBAAA,CAAA,GAAA,IAAA,CAAA,GAAA,oBAAA;AAIA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,kBAAA,CAAA,GAAA,IAAA,CAAA,GAAA,kBAAA;AAIA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,eAAA,CAAA,GAAA,IAAA,CAAA,GAAA,eAAA;AAIA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,4BAAA,CAAA,GAAA,IAAA,CAAA,GAAA,4BAAA;AAIA,MAAAA,cAAAA,CAAAA,cAAAA,CAAA,aAAA,CAAA,GAAA,IAAA,CAAA,GAAA,aAAA;AACD,IAAA,CAAA,EAjHYA,cAAAA,KAAanN,QAAAA,CAAA,aAAA,GAAbmN,cAAAA,GAAa,EAAA,CAAA,CAAA;AAsHzB,IAAA,IAAYC,mBAAAA;AAAZ,IAAA,CAAA,SAAYA,mBAAAA,EAAkB;AAI7B,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,aAAA,CAAA,GAAA,GAAA,CAAA,GAAA,aAAA;AAIA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,kBAAA,CAAA,GAAA,IAAA,CAAA,GAAA,kBAAA;AAIA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,eAAA,CAAA,GAAA,IAAA,CAAA,GAAA,eAAA;AAIA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,iBAAA,CAAA,GAAA,GAAA,CAAA,GAAA,iBAAA;AAIA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,eAAA,CAAA,GAAA,IAAA,CAAA,GAAA,eAAA;AAIA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,aAAA,CAAA,GAAA,IAAA,CAAA,GAAA,aAAA;AAIA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,cAAA,CAAA,GAAA,IAAA,CAAA,GAAA,cAAA;AAIA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,gBAAA,CAAA,GAAA,IAAA,CAAA,GAAA,gBAAA;AAIA,MAAAA,mBAAAA,CAAAA,mBAAAA,CAAA,iBAAA,CAAA,GAAA,IAAA,CAAA,GAAA,iBAAA;AACD,IAAA,CAAA,EArCYA,mBAAAA,KAAkBpN,QAAAA,CAAA,kBAAA,GAAlBoN,mBAAAA,GAAkB,EAAA,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;AC1Z9B,IAAA,YAAA,CAAA,mBAAApN,QAAA,CAAA;AAEa,IAAAA,SAAA,UAAA,GAAa,GAAA;AAyC1B,IAAA,IAAYqN,YAAAA;AAAZ,IAAA,CAAA,SAAYA,YAAAA,EAAW;AAItB,MAAAA,YAAAA,CAAA,sBAAA,CAAA,GAAA,wBAAA;AAIA,MAAAA,YAAAA,CAAA,oBAAA,CAAA,GAAA,sBAAA;AAIA,MAAAA,YAAAA,CAAA,cAAA,CAAA,GAAA,cAAA;AAIA,MAAAA,YAAAA,CAAA,WAAA,CAAA,GAAA,WAAA;AAIA,MAAAA,YAAAA,CAAA,8BAAA,CAAA,GAAA,iCAAA;AAIA,MAAAA,YAAAA,CAAA,gBAAA,CAAA,GAAA,iBAAA;AAMA,MAAAA,YAAAA,CAAA,0BAAA,CAAA,GAAA,6BAAA;AAIA,MAAAA,YAAAA,CAAA,qBAAA,CAAA,GAAA,sBAAA;AACA,MAAAA,YAAAA,CAAA,qBAAA,CAAA,GAAA,uBAAA;AAIA,MAAAA,YAAAA,CAAA,UAAA,CAAA,GAAA,WAAA;AAIA,MAAAA,YAAAA,CAAA,UAAA,CAAA,GAAA,UAAA;AAIA,MAAAA,YAAAA,CAAA,sBAAA,CAAA,GAAA,wBAAA;AAIA,MAAAA,YAAAA,CAAA,YAAA,CAAA,GAAA,aAAA;AAIA,MAAAA,YAAAA,CAAA,aAAA,CAAA,GAAA,cAAA;AAIA,MAAAA,YAAAA,CAAA,sBAAA,CAAA,GAAA,wBAAA;AAIA,MAAAA,YAAAA,CAAA,iBAAA,CAAA,GAAA,kBAAA;AAIA,MAAAA,YAAAA,CAAA,UAAA,CAAA,GAAA,WAAA;AAIA,MAAAA,YAAAA,CAAA,WAAA,CAAA,GAAA,YAAA;AAIA,MAAAA,YAAAA,CAAA,UAAA,CAAA,GAAA,WAAA;AAIA,MAAAA,YAAAA,CAAA,qBAAA,CAAA,GAAA,uBAAA;AAIA,MAAAA,YAAAA,CAAA,kBAAA,CAAA,GAAA,mBAAA;AAIA,MAAAA,YAAAA,CAAA,yBAAA,CAAA,GAAA,4BAAA;AAIA,MAAAA,YAAAA,CAAA,SAAA,CAAA,GAAA,UAAA;AAIA,MAAAA,YAAAA,CAAA,SAAA,CAAA,GAAA,UAAA;AAIA,MAAAA,YAAAA,CAAA,kBAAA,CAAA,GAAA,oBAAA;AAIA,MAAAA,YAAAA,CAAA,iBAAA,CAAA,GAAA,mBAAA;AAIA,MAAAA,YAAAA,CAAA,sBAAA,CAAA,GAAA,wBAAA;AAIA,MAAAA,YAAAA,CAAA,eAAA,CAAA,GAAA,gBAAA;AAIA,MAAAA,YAAAA,CAAA,uBAAA,CAAA,GAAA,yBAAA;AAIA,MAAAA,YAAAA,CAAA,uBAAA,CAAA,GAAA,yBAAA;AAIA,MAAAA,YAAAA,CAAA,yBAAA,CAAA,GAAA,2BAAA;AAIA,MAAAA,YAAAA,CAAA,2BAAA,CAAA,GAAA,8BAAA;AAIA,MAAAA,YAAAA,CAAA,wBAAA,CAAA,GAAA,2BAAA;AAIA,MAAAA,YAAAA,CAAA,0BAAA,CAAA,GAAA,6BAAA;AAIA,MAAAA,YAAAA,CAAA,SAAA,CAAA,GAAA,SAAA;AAIA,MAAAA,YAAAA,CAAA,mBAAA,CAAA,GAAA,qBAAA;AAIA,MAAAA,YAAAA,CAAA,oBAAA,CAAA,GAAA,sBAAA;AAIA,MAAAA,YAAAA,CAAA,wBAAA,CAAA,GAAA,2BAAA;AAIA,MAAAA,YAAAA,CAAA,aAAA,CAAA,GAAA,cAAA;AAIA,MAAAA,YAAAA,CAAA,qBAAA,CAAA,GAAA,uBAAA;AAIA,MAAAA,YAAAA,CAAA,kBAAA,CAAA,GAAA,oBAAA;AAIA,MAAAA,YAAAA,CAAA,sBAAA,CAAA,GAAA,yBAAA;AACA,MAAAA,YAAAA,CAAA,uBAAA,CAAA,GAAA,2BAAA;AAIA,MAAAA,YAAAA,CAAA,kBAAA,CAAA,GAAA,oBAAA;AACA,MAAAA,YAAAA,CAAA,mBAAA,CAAA,GAAA,sBAAA;AAIA,MAAAA,YAAAA,CAAA,eAAA,CAAA,GAAA,gBAAA;AAIA,MAAAA,YAAAA,CAAA,WAAA,CAAA,GAAA,WAAA;AAIA,MAAAA,YAAAA,CAAA,aAAA,CAAA,GAAA,aAAA;AAIA,MAAAA,YAAAA,CAAA,qBAAA,CAAA,GAAA,sBAAA;AACD,IAAA,CAAA,EA9LYA,YAAAA,KAAWrN,QAAAA,CAAA,WAAA,GAAXqN,YAAAA,GAAW,EAAA,CAAA,CAAA;AAujCvB,IAAA,IAAYC,UAAAA;AAAZ,IAAA,CAAA,SAAYA,UAAAA,EAAS;AAIpB,MAAAA,UAAAA,CAAA,gBAAA,CAAA,GAAA,iBAAA;AACA,MAAAA,UAAAA,CAAA,cAAA,CAAA,GAAA,eAAA;AACA,MAAAA,UAAAA,CAAA,qBAAA,CAAA,GAAA,uBAAA;AACA,MAAAA,UAAAA,CAAA,kBAAA,CAAA,GAAA,mBAAA;AACA,MAAAA,UAAAA,CAAA,eAAA,CAAA,GAAA,gBAAA;AACA,MAAAA,UAAAA,CAAA,mBAAA,CAAA,GAAA,qBAAA;AAIA,MAAAA,UAAAA,CAAA,mBAAA,CAAA,GAAA,oBAAA;AAIA,MAAAA,UAAAA,CAAA,mBAAA,CAAA,GAAA,oBAAA;AACA,MAAAA,UAAAA,CAAA,OAAA,CAAA,GAAA,OAAA;AAIA,MAAAA,UAAAA,CAAA,UAAA,CAAA,GAAA,WAAA;AAIA,MAAAA,UAAAA,CAAA,cAAA,CAAA,GAAA,eAAA;AACA,MAAAA,UAAAA,CAAA,aAAA,CAAA,GAAA,cAAA;AACA,MAAAA,UAAAA,CAAA,aAAA,CAAA,GAAA,cAAA;AAIA,MAAAA,UAAAA,CAAA,eAAA,CAAA,GAAA,gBAAA;AAIA,MAAAA,UAAAA,CAAA,eAAA,CAAA,GAAA,gBAAA;AAIA,MAAAA,UAAAA,CAAA,eAAA,CAAA,GAAA,gBAAA;AAIA,MAAAA,UAAAA,CAAA,oBAAA,CAAA,GAAA,qBAAA;AAIA,MAAAA,UAAAA,CAAA,SAAA,CAAA,GAAA,SAAA;AAIA,MAAAA,UAAAA,CAAA,eAAA,CAAA,GAAA,gBAAA;AACA,MAAAA,UAAAA,CAAA,OAAA,CAAA,GAAA,OAAA;AAIA,MAAAA,UAAAA,CAAA,oBAAA,CAAA,GAAA,qBAAA;AACA,MAAAA,UAAAA,CAAA,eAAA,CAAA,GAAA,gBAAA;AACA,MAAAA,UAAAA,CAAA,cAAA,CAAA,GAAA,eAAA;AACA,MAAAA,UAAAA,CAAA,oBAAA,CAAA,GAAA,sBAAA;AACA,MAAAA,UAAAA,CAAA,uBAAA,CAAA,GAAA,yBAAA;AACA,MAAAA,UAAAA,CAAA,qBAAA,CAAA,GAAA,uBAAA;AAIA,MAAAA,UAAAA,CAAA,sBAAA,CAAA,GAAA,yBAAA;AAIA,MAAAA,UAAAA,CAAA,kBAAA,CAAA,GAAA,oBAAA;AAIA,MAAAA,UAAAA,CAAA,kBAAA,CAAA,GAAA,oBAAA;AAIA,MAAAA,UAAAA,CAAA,kBAAA,CAAA,GAAA,oBAAA;AACD,IAAA,CAAA,EA/EYA,UAAAA,KAAStN,QAAAA,CAAA,SAAA,GAATsN,UAAAA,GAAS,EAAA,CAAA,CAAA;;;;;;;;AClmCrB,IAAAtN,SAAA,eAAA,GAAA,eAAA;AAUA,IAAAA,SAAA,kBAAA,GAAA,kBAAA;AAYA,IAAAA,SAAA,iCAAA,GAAA,iCAAA;AAYA,IAAAA,SAAA,oCAAA,GAAA,oCAAA;AAcA,IAAAA,SAAA,+BAAA,GAAA,+BAAA;AAYA,IAAAA,SAAA,kCAAA,GAAA,kCAAA;AAcA,IAAAA,SAAA,YAAA,GAAA,YAAA;AAUA,IAAAA,SAAA,mBAAA,GAAA,mBAAA;AAYA,IAAAA,SAAA,wBAAA,GAAA,wBAAA;AAYA,IAAAA,SAAA,6BAAA,GAAA,6BAAA;AAYA,IAAAA,SAAA,mCAAA,GAAA,mCAAA;AAYA,IAAAA,SAAA,uCAAA,GAAA,uCAAA;AAoBA,IAAAA,SAAA,wCAAA,GAAA,wCAAA;AAYA,IAAAA,SAAA,0CAAA,GAAA,0CAAA;AA9KA,IAAA,IAAA,OAAA,GAAA,YAAA,EAAA;AAUA,IAAA,SAAgB,gBAAgB,WAAA,EAA2B;AAC1D,MAAA,OAAO,OAAA,CAAQ,GAAA,CAAI,WAAA,EAAa,MAAM,CAAA;AACvC,IAAA;AAQA,IAAA,SAAgB,mBAAmB,WAAA,EAA2B;AAC7D,MAAA,OAAO,OAAA,CAAQ,GAAA,CAAI,WAAA,EAAa,UAAU,CAAA;AAC3C,IAAA;AAUA,IAAA,SAAgB,kCACf,WAAA,EAA6C;AAE7C,MAAA,OAAO,gBAAgB,WAAW,CAAA;AACnC,IAAA;AAQA,IAAA,SAAgB,qCACf,WAAA,EAA6C;AAE7C,MAAA,OAAO,mBAAmB,WAAW,CAAA;AACtC,IAAA;AAUA,IAAA,SAAgB,gCACf,WAAA,EAA2C;AAE3C,MAAA,OAAO,gBAAgB,WAAW,CAAA;AACnC,IAAA;AAQA,IAAA,SAAgB,mCACf,WAAA,EAA2C;AAE3C,MAAA,OAAO,mBAAmB,WAAW,CAAA;AACtC,IAAA;AAUA,IAAA,SAAgB,aAAa,SAAA,EAA6B;AACzD,MAAA,OAAO,SAAA,CAAU,KAAA,KAAU,OAAA,CAAA,WAAA,CAAY,IAAA;AACxC,IAAA;AAQA,IAAA,SAAgB,oBAAoB,SAAA,EAA6B;AAChE,MAAA,OAAO,CAAC,CAAC,OAAA,CAAA,WAAA,CAAY,IAAA,EAAM,OAAA,CAAA,WAAA,CAAY,OAAO,CAAA,CAAE,QAAA,CAAS,SAAA,CAAU,KAAK,CAAA;AACzE,IAAA;AAUA,IAAA,SAAgB,yBAAyB,WAAA,EAA2B;AACnE,MAAA,OAAO,WAAA,CAAY,IAAA,KAAS,OAAA,CAAA,eAAA,CAAgB,WAAA;AAC7C,IAAA;AAUA,IAAA,SAAgB,8BACf,WAAA,EAA2B;AAE3B,MAAA,OAAO,WAAA,CAAY,IAAA,KAAS,OAAA,CAAA,eAAA,CAAgB,gBAAA;AAC7C,IAAA;AAQA,IAAA,SAAgB,oCACf,WAAA,EAA2C;AAE3C,MAAA,OAAO,WAAA,CAAY,IAAA,CAAK,cAAA,KAAmB,OAAA,CAAA,aAAA,CAAc,MAAA;AAC1D,IAAA;AAQA,IAAA,SAAgB,wCACf,WAAA,EAA2C;AAE3C,MAAA,OAAO;AACN,QAAA,OAAA,CAAA,aAAA,CAAc,YAAA;AACd,QAAA,OAAA,CAAA,aAAA,CAAc,UAAA;AACd,QAAA,OAAA,CAAA,aAAA,CAAc,UAAA;AACd,QAAA,OAAA,CAAA,aAAA,CAAc,iBAAA;AACd,QAAA,OAAA,CAAA,aAAA,CAAc;QACb,QAAA,CAAS,WAAA,CAAY,KAAK,cAAc,CAAA;AAC3C,IAAA;AAUA,IAAA,SAAgB,yCACf,WAAA,EAA6C;AAE7C,MAAA,OAAO,WAAA,CAAY,IAAA,CAAK,IAAA,KAAS,OAAA,CAAA,sBAAA,CAAuB,SAAA;AACzD,IAAA;AAQA,IAAA,SAAgB,2CACf,WAAA,EAA6C;AAE7C,MAAA,OACC,WAAA,CAAY,IAAA,CAAK,IAAA,KAAS,OAAA,CAAA,sBAAA,CAAuB,WACjD,WAAA,CAAY,IAAA,CAAK,IAAA,KAAS,OAAA,CAAA,sBAAA,CAAuB,IAAA;AAEnD,IAAA;;;;;;;;;;;;;;;;;;;;;;;;;ACxMA,IAAA,YAAA,CAAA,eAAAA,QAAA,CAAA;AACA,IAAA,YAAA,CAAA,mBAAAA,QAAA,CAAA;AACA,IAAA,YAAA,CAAA,gBAAAA,QAAA,CAAA;AACA,IAAA,YAAA,CAAA,gBAAAA,QAAA,CAAA;AACA,IAAA,YAAA,CAAA,gBAAAA,QAAA,CAAA;AACA,IAAA,YAAA,CAAA,qBAAAA,QAAA,CAAA;AACA,IAAAA,SAAA,KAAA,GAAA,YAAA,EAAA;;;;;ACNA,IAAA,UAAA,CAAA,CASa,4BAAA,CAAA,CAEA,sBAAA,CAAA,CAEA,0BAAA,CAAA,CAYA,WAAA,CAAA,CAGA,WAAA,CAAA,CACA,aAAA,CAAA,CAmCA,sBAAA,CAAA,CAMA,MAAA,CAAA,CA6BA,0BAAA,CAAA,CACA,oBAAA,CAAA,CAUA,cAAA;AA9Gb,IAAA,QAAA,GAAA,KAAA,CAAA;AAAA,EAAA,2FAAA,GAAA;AAAA,IAAA,UAAA,GAAgB,OAAA,CAAA,YAAA,EAAA,CAAA;AAGT,IAAiD,WAAA+B,OAAAA,CAAI,wCAAA;AACrD,IAAmB,WAAAA,OAAAA,CAAI,UAAA;AACvB,IAAsB,WAAAA,OAAAA,CAAI,aAAA;AAC1B,IAAyB,WAAAA,OAAAA,CAAI,gBAAA;AAC7B,IAAqB,WAAAA,OAAAA,CAAI,YAAA;AACzB,IAA6B,WAAAA,OAAAA,CAAI,oBAAA;AACjC,IAAM,4BAAA,GAA+B,WAAAA,OAAAA,CAAI,4BAAA;AACzC,IAAyC,WAAAA,OAAAA,CAAI,gCAAA;AAC7C,IAAM,sBAAA,GAAyB,WAAAA,OAAAA,CAAI,sBAAA;AACnC,IAAyB,WAAAA,OAAAA,CAAI,gBAAA;AAC7B,IAAM,0BAAA,GAA6B,WAAAA,OAAAA,CAAI,0BAAA;AACvC,IAA8C,WAAAA,OAAAA,CAAI,qCAAA;AAClD,IAAsC,WAAAA,OAAAA,CAAI,6BAAA;AAC1C,IAAoC,WAAAA,OAAAA,CAAI,2BAAA;AACxC,IAA+B,WAAAA,OAAAA,CAAI,sBAAA;AACnC,IAAwB,WAAAA,OAAAA,CAAI,eAAA;AAC5B,IAAsB,WAAAA,OAAAA,CAAI,aAAA;AAC1B,IAA4B,WAAAA,OAAAA,CAAI,mBAAA;AAChC,IAAiC,WAAAA,OAAAA,CAAI,wBAAA;AACrC,IAAoC,WAAAA,OAAAA,CAAI,2BAAA;AACxC,IAA4C,WAAAA,OAAAA,CAAI,mCAAA;AAChD,IAAsC,WAAAA,OAAAA,CAAI,6BAAA;AAC1C,IAAM,WAAA,GAAc,WAAAA,OAAAA,CAAI,WAAA;AACxB,IAAkB,WAAAA,OAAAA,CAAI,SAAA;AACtB,IAAqB,WAAAA,OAAAA,CAAI,YAAA;AACzB,IAAM,WAAA,GAAc,WAAAA,OAAAA,CAAI,WAAA;AACxB,IAAM,aAAA,GAAgB,WAAAA,OAAAA,CAAI,aAAA;AAC1B,IAA0B,WAAAA,OAAAA,CAAI,iBAAA;AAC9B,IAA6B,WAAAA,OAAAA,CAAI,oBAAA;AACjC,IAAkB,WAAAA,OAAAA,CAAI,SAAA;AACtB,IAA6B,WAAAA,OAAAA,CAAI,oBAAA;AACjC,IAAwB,WAAAA,OAAAA,CAAI,eAAA;AAC5B,IAAqC,WAAAA,OAAAA,CAAI,4BAAA;AACzC,IAA2B,WAAAA,OAAAA,CAAI,kBAAA;AAC/B,IAAwB,WAAAA,OAAAA,CAAI,eAAA;AAC5B,IAA0B,WAAAA,OAAAA,CAAI,iBAAA;AAC9B,IAA8B,WAAAA,OAAAA,CAAI,qBAAA;AAClC,IAA0B,WAAAA,OAAAA,CAAI,iBAAA;AAC9B,IAAuB,WAAAA,OAAAA,CAAI,cAAA;AAC3B,IAAuB,WAAAA,OAAAA,CAAI,cAAA;AAC3B,IAAyC,WAAAA,OAAAA,CAAI,gCAAA;AAC7C,IAAmC,WAAAA,OAAAA,CAAI,0BAAA;AACvC,IAAqB,WAAAA,OAAAA,CAAI,YAAA;AACzB,IAAqB,WAAAA,OAAAA,CAAI,YAAA;AACzB,IAAsB,WAAAA,OAAAA,CAAI,aAAA;AAC1B,IAAyB,WAAAA,OAAAA,CAAI,gBAAA;AAC7B,IAAuB,WAAAA,OAAAA,CAAI,cAAA;AAC3B,IAA4B,WAAAA,OAAAA,CAAI,mBAAA;AAChC,IAAkC,WAAAA,OAAAA,CAAI,yBAAA;AACtC,IAAyB,WAAAA,OAAAA,CAAI,gBAAA;AAC7B,IAAsC,WAAAA,OAAAA,CAAI,6BAAA;AAC1C,IAAwC,WAAAA,OAAAA,CAAI,+BAAA;AAC5C,IAAmD,WAAAA,OAAAA,CAAI,0CAAA;AACvD,IAA+C,WAAAA,OAAAA,CAAI,sCAAA;AACnD,IAAiD,WAAAA,OAAAA,CAAI,wCAAA;AACrD,IAAkC,WAAAA,OAAAA,CAAI,yBAAA;AACtC,IAAgC,WAAAA,OAAAA,CAAI,uBAAA;AACpC,IAA+B,WAAAA,OAAAA,CAAI,sBAAA;AACnC,IAAyB,WAAAA,OAAAA,CAAI,gBAAA;AAC7B,IAAoB,WAAAA,OAAAA,CAAI,WAAA;AACxB,IAAkC,WAAAA,OAAAA,CAAI,yBAAA;AACtC,IAAM,sBAAA,GAAyB,WAAAA,OAAAA,CAAI,sBAAA;AACnC,IAAgC,WAAAA,OAAAA,CAAI,uBAAA;AACpC,IAAwB,WAAAA,OAAAA,CAAI,eAAA;AAC5B,IAAoB,WAAAA,OAAAA,CAAI,WAAA;AACxB,IAAyB,WAAAA,OAAAA,CAAI,gBAAA;AAC7B,IAAmB,WAAAA,OAAAA,CAAI,UAAA;AACvB,IAAM,MAAA,GAAS,WAAAA,OAAAA,CAAI,MAAA;AACnB,IAAqC,WAAAA,OAAAA,CAAI,4BAAA;AACzC,IAA4B,WAAAA,OAAAA,CAAI,mBAAA;AAChC,IAAqB,WAAAA,OAAAA,CAAI,YAAA;AACzB,IAA6B,WAAAA,OAAAA,CAAI,oBAAA;AACjC,IAAoB,WAAAA,OAAAA,CAAI,WAAA;AACxB,IAAyB,WAAAA,OAAAA,CAAI,gBAAA;AAC7B,IAAqB,WAAAA,OAAAA,CAAI,YAAA;AACzB,IAAqB,WAAAA,OAAAA,CAAI,YAAA;AACzB,IAAsB,WAAAA,OAAAA,CAAI,aAAA;AAC1B,IAA4B,WAAAA,OAAAA,CAAI,mBAAA;AAChC,IAAuB,WAAAA,OAAAA,CAAI,cAAA;AAC3B,IAA6B,WAAAA,OAAAA,CAAI,oBAAA;AACjC,IAA2B,WAAAA,OAAAA,CAAI,kBAAA;AAC/B,IAA2B,WAAAA,OAAAA,CAAI,kBAAA;AAC/B,IAAoB,WAAAA,OAAAA,CAAI,WAAA;AACxB,IAAsB,WAAAA,OAAAA,CAAI,aAAA;AAC1B,IAAsB,WAAAA,OAAAA,CAAI,aAAA;AAC1B,IAAkB,WAAAA,OAAAA,CAAI,SAAA;AACtB,IAAmB,WAAAA,OAAAA,CAAI,UAAA;AACvB,IAAiC,WAAAA,OAAAA,CAAI,wBAAA;AACrC,IAAwC,WAAAA,OAAAA,CAAI,+BAAA;AAC5C,IAAqB,WAAAA,OAAAA,CAAI,YAAA;AACzB,IAAyB,WAAAA,OAAAA,CAAI,gBAAA;AAC7B,IAAkB,WAAAA,OAAAA,CAAI,SAAA;AACtB,IAAmB,WAAAA,OAAAA,CAAI,UAAA;AACvB,IAAe,WAAAA,OAAAA,CAAI,MAAA;AACnB,IAAiB,WAAAA,OAAAA,CAAI,QAAA;AACrB,IAAgB,WAAAA,OAAAA,CAAI,OAAA;AACpB,IAAM,0BAAA,GAA6B,WAAAA,OAAAA,CAAI,0BAAA;AACvC,IAAM,oBAAA,GAAuB,WAAAA,OAAAA,CAAI,oBAAA;AACjC,IAAsB,WAAAA,OAAAA,CAAI,aAAA;AAC1B,IAAkC,WAAAA,OAAAA,CAAI,yBAAA;AACtC,IAA0B,WAAAA,OAAAA,CAAI,iBAAA;AAC9B,IAA0B,WAAAA,OAAAA,CAAI,iBAAA;AAC9B,IAAiC,WAAAA,OAAAA,CAAI,wBAAA;AACrC,IAAoB,WAAAA,OAAAA,CAAI,WAAA;AACxB,IAA2B,WAAAA,OAAAA,CAAI,kBAAA;AAC/B,IAAkC,WAAAA,OAAAA,CAAI,yBAAA;AACtC,IAAuB,WAAAA,OAAAA,CAAI,cAAA;AAC3B,IAAM,cAAA,GAAiB,WAAAA,OAAAA,CAAI,cAAA;AAC3B,IAAkC,WAAAA,OAAAA,CAAI,yBAAA;AACtC,IAA0B,WAAAA,OAAAA,CAAI,iBAAA;AAC9B,IAAsC,WAAAA,OAAAA,CAAI,6BAAA;AAC1C,IAAkB,WAAAA,OAAAA,CAAI,SAAA;AACtB,IAAwB,WAAAA,OAAAA,CAAI,eAAA;AAC5B,IAAc,WAAAA,OAAAA,CAAI,KAAA;AAClB,IAAyB,WAAAA,OAAAA,CAAI,gBAAA;AAC7B,IAA4C,WAAAA,OAAAA,CAAI,mCAAA;AAChD,IAA8B,WAAAA,OAAAA,CAAI,qBAAA;AAClC,IAAoB,WAAAA,OAAAA,CAAI,WAAA;AACxB,IAA0B,WAAAA,OAAAA,CAAI,iBAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC5G9B,SAAS,KAAY,EAAA,EAA8B;AACzD,EAAA,IAAI,YAAA;AAEJ,EAAA,OAAO,MAAO,iBAAiB,EAAA,EAAG;AACnC;AC2BO,UAAU,MAAMwL,MAAAA,EAA8B;AACpD,EAAA,IAAI,QAAA;AACJ,EAAA,IAAI,KAAA,GAAQ,CAAA;AACZ,EAAA,IAAI,IAAA,GAAO,CAAA;AAEX,EAAA,IAAI,OAAOA,WAAU,QAAA,EAAU;AAC9B,IAAA,QAAA,GAAWA,MAAAA;EACZ,CAAA,MAAO;AACN,IAAA,KAAA,GAAQA,MAAAA,CAAM,KAAA;AACd,IAAA,QAAA,GAAWA,MAAAA,CAAM,GAAA;AACjB,IAAA,IAAA,GAAOA,OAAM,IAAA,IAAQ,CAAA;AACtB,EAAA;AAEA,EAAA,KAAA,IAAS,KAAA,GAAQ,KAAA,EAAO,KAAA,GAAQ,QAAA,EAAU,SAAS,IAAA,EAAM;AACxD,IAAA,MAAM,KAAA;AACP,EAAA;AACD;ACtDO,SAAS,gBAAA,CAAiB,SAAiB,UAAA,EAAoB;AACrE,EAAA,OAAO,MAAA,CAAO,MAAA,CAAO,OAAO,CAAA,IAAK,GAAG,CAAA,GAAI,UAAA;AACzC;ACNO,SAAS,gCAAA,GAAmC;AAElD,EAAA,IAAI,OAAO,UAAA,CAAW,OAAA,KAAY,WAAA,EAAa;AAC9C,IAAA,OAAO,OAAA,IAAW,cAAc,WAAA,IAAe,UAAA;AAChD,EAAA;AAEA,EAAA,IAAI,UAAA,IAAc,WAAW,OAAA,EAAS;AACrC,IAAA,OAAO,UAAU,UAAA,CAAW,OAAA,CAAQ,QAAA,IAAY,KAAA,IAAS,WAAW,OAAA,CAAQ,QAAA;AAC7E,EAAA;AAEA,EAAA,OAAO,KAAA;AACR;ACRO,SAAS,oBAAA,GAA+B;AAG9C,EAAA,IAAI,OAAO,UAAA,CAAW,WAAA,KAAgB,WAAA,EAAa;AAClD,IAAA,OAAO,uBAAA;AACR,EAAA;AAGA,EAAA,IAAI,OAAO,UAAA,CAAW,EAAA,KAAO,eAAe,OAAO,UAAA,CAAW,kBAAkB,WAAA,EAAa;AAE5F,IAAA,OAAO,oBAAA;AACR,EAAA;AAIA,EAAA,IAAI,OAAO,UAAA,CAAW,OAAA,KAAY,WAAA,EAAa;AAC9C,IAAA,OAAO,wBAAA;AACR,EAAA;AAGA,EAAA,IAAI,OAAO,UAAA,CAAW,OAAA,KAAY,QAAA,EAAU;AAE3C,IAAA,IAAI,OAAO,UAAA,CAAW,SAAA,KAAc,QAAA,EAAU;AAE7C,MAAA,OAAO,WAAW,SAAA,CAAU,SAAA;AAC7B,IAAA;AAEA,IAAA,OAAO,oBAAA;AACR,EAAA;AAEA,EAAA,IAAI,UAAA,IAAc,WAAW,OAAA,EAAS;AACrC,IAAA,IAAI,MAAA,IAAU,UAAA,CAAW,OAAA,CAAQ,QAAA,EAAU;AAC1C,MAAA,OAAO,CAAA,KAAA,EAAQ,UAAA,CAAW,OAAA,CAAQ,QAAA,CAAS,IAAI,CAAA,CAAA;AAChD,IAAA;AAEA,IAAA,IAAI,KAAA,IAAS,UAAA,CAAW,OAAA,CAAQ,QAAA,EAAU;AACzC,MAAA,OAAO,CAAA,IAAA,EAAO,UAAA,CAAW,OAAA,CAAQ,QAAA,CAAS,GAAG,CAAA,CAAA;AAC9C,IAAA;AAEA,IAAA,IAAI,MAAA,IAAU,UAAA,CAAW,OAAA,CAAQ,QAAA,EAAU;AAC1C,MAAA,OAAO,CAAA,QAAA,EAAW,UAAA,CAAW,OAAA,CAAQ,QAAA,CAAS,IAAI,CAAA,CAAA;AACnD,IAAA;AACD,EAAA;AAEA,EAAA,OAAO,oBAAA;AACR;AC7CO,SAAS,eAAA,GAAkB;AAKjC,EAAA,MAAA,CAAO,OAAA,4BAAmB,gBAAgB,CAAA;AAE1C,EAAA,MAAA,CAAO,YAAA,4BAAwB,qBAAqB,CAAA;AACrD;ACIO,SAAS,gBAAgB,cAAA,EAAmE;AAClG,EAAA,OAAO,cAAA,KAAmB,IAAA,IAAQ,OAAO,cAAA,KAAmB,YAAY,QAAA,IAAY,cAAA;AACrF;ACDO,SAAS,YAAY,cAAA,EAA+D;AAC1F,EAAA,OAAO,cAAA,KAAmB,IAAA,IAAQ,OAAO,cAAA,KAAmB,YAAY,QAAA,IAAY,cAAA;AACrF;ACfa,IAAA,UAAA,CAAA,CAAA,OAAA;;;;;ARQG,IAAA3G,OAAAA,CAAA,MAAA,MAAA,CAAA;AC+BC,IAAAA,OAAAA,CAAA,OAAA,OAAA,CAAA;ACtCD,IAAAA,OAAAA,CAAA,kBAAA,kBAAA,CAAA;ACJA,IAAAA,OAAAA,CAAA,kCAAA,kCAAA,CAAA;ACGA,IAAAA,OAAAA,CAAA,sBAAA,sBAAA,CAAA;ACAA,IAAAA,OAAAA,CAAA,iBAAA,iBAAA,CAAA;ACYA,IAAAA,OAAAA,CAAA,iBAAA,iBAAA,CAAA;ACCA,IAAAA,OAAAA,CAAA,aAAA,aAAA,CAAA;ACbT,KAAA,MAAM,sBAAA,SAA8B,KAAA,CAAM;AAGzC,MAAA,WAAA,CAIU,MAQA,OAAA,EACf;AACD,QAAA,KAAA,CAAM,uBAAuB,IAAA,CAAK,MAAM,CAAA,+BAAA,EAAkC,IAAA,CAAK,WAAW,CAAA,SAAA,CAAW,CAAA;AAVrF,QAAA,IAAA,CAAA,IAAA,GAAA,IAAA;AAQA,QAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AAGjB,MAAA;MAvBD;AAKiD,QAAAA,OAAAA,CAAA,MAAA,uBAAA,CAAA;AAAA;AACvB,MAAA,IAAA,GAAO,sBAAA,CAAsB,IAAA;AAkBvD,MAAA;;;;;ACxBA,IAAA,uBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,sFAAA,CAAA5G,UAAAG,OAAAA,EAAA;AAMA,IAAAA,OAAAA,CAAO,OAAA,GAAU,SAASsC,MAAAA,CAAMC,IAAGlB,EAAAA,EAAG;AACpC,MAAA,IAAIkB,EAAAA,KAAMlB,IAAG,OAAO,IAAA;AAEpB,MAAA,IAAIkB,MAAKlB,EAAAA,IAAK,OAAOkB,MAAK,QAAA,IAAY,OAAOlB,MAAK,QAAA,EAAU;AAC1D,QAAA,IAAIkB,EAAAA,CAAE,WAAA,KAAgBlB,EAAAA,CAAE,WAAA,EAAa,OAAO,KAAA;AAE5C,QAAA,IAAI,QAAQP,EAAAA,EAAG,IAAA;AACf,QAAA,IAAI,KAAA,CAAM,OAAA,CAAQyB,EAAC,CAAA,EAAG;AACpB,UAAA,MAAA,GAASA,EAAAA,CAAE,MAAA;AACX,UAAA,IAAI,MAAA,IAAUlB,EAAAA,CAAE,MAAA,EAAQ,OAAO,KAAA;AAC/B,UAAA,KAAKP,EAAAA,GAAI,QAAQA,EAAAA,EAAAA,KAAQ,CAAA;AACvB,YAAA,IAAI,CAACwB,OAAMC,EAAAA,CAAEzB,EAAC,GAAGO,EAAAA,CAAEP,EAAC,CAAC,CAAA,EAAG,OAAO,KAAA;AACjC,UAAA,OAAO,IAAA;AAAA,QACT;AAIA,QAAA,IAAIyB,EAAAA,CAAE,WAAA,KAAgB,MAAA,EAAQ,OAAOA,EAAAA,CAAE,WAAWlB,EAAAA,CAAE,MAAA,IAAUkB,EAAAA,CAAE,KAAA,KAAUlB,EAAAA,CAAE,KAAA;AAC5E,QAAA,IAAIkB,EAAAA,CAAE,OAAA,KAAY,MAAA,CAAO,SAAA,CAAU,OAAA,SAAgBA,EAAAA,CAAE,OAAA,EAAQ,KAAMlB,EAAAA,CAAE,OAAA,EAAQ;AAC7E,QAAA,IAAIkB,EAAAA,CAAE,QAAA,KAAa,MAAA,CAAO,SAAA,CAAU,QAAA,SAAiBA,EAAAA,CAAE,QAAA,EAAS,KAAMlB,EAAAA,CAAE,QAAA,EAAS;AAEjF,QAAA,IAAA,GAAO,MAAA,CAAO,KAAKkB,EAAC,CAAA;AACpB,QAAA,MAAA,GAAS,IAAA,CAAK,MAAA;AACd,QAAA,IAAI,WAAW,MAAA,CAAO,IAAA,CAAKlB,EAAC,CAAA,CAAE,QAAQ,OAAO,KAAA;AAE7C,QAAA,KAAKP,EAAAA,GAAI,QAAQA,EAAAA,EAAAA,KAAQ,CAAA;AACvB,UAAA,IAAI,CAAC,MAAA,CAAO,SAAA,CAAU,cAAA,CAAe,IAAA,CAAKO,IAAG,IAAA,CAAKP,EAAC,CAAC,CAAA,EAAG,OAAO,KAAA;AAEhE,QAAA,KAAKA,EAAAA,GAAI,MAAA,EAAQA,EAAAA,EAAAA,KAAQ,CAAA,IAAI;AAC3B,UAAA,IAAI,GAAA,GAAM,KAAKA,EAAC,CAAA;AAEhB,UAAA,IAAI,CAACwB,OAAMC,EAAAA,CAAE,GAAG,GAAGlB,EAAAA,CAAE,GAAG,CAAC,CAAA,EAAG,OAAO,KAAA;AAAA,QACrC;AAEA,QAAA,OAAO,IAAA;AAAA,MACT;AAGA,MAAA,OAAOkB,EAAAA,KAAIA,MAAKlB,EAAAA,KAAIA,EAAAA;AAAA,IACtB,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACuPA,SAAS,SAAS,YAAA,EAAc;AAC5B,EAAA,IAAI,IAAI,EAAA,EAAI,EAAA;AACZ,EAAA,MAAM,UAAA,GAAa,YAAA,CAAa,GAAA,CAAI,CAAA,WAAA,KAAe,YAAY,SAAS,CAAA;AAIxE,EAAA,MAAM,mBAAmB,QAAA,CAAS,YAAA;AAClC,EAAA,IAAI,qBAAqB,IAAA,EAAM;AAC3B,IAAA,MAAM,aAAA,GAAgB,UAAA,CACjB,GAAA,CAAI,CAAA,KAAA,KAAS,KAAA,CAAM,gBAAgB,CAAC,CAAA,CACpC,MAAA,CAAO,CAAA,IAAA,KAAQ,OAAO,IAAA,KAAS,UAAU,CAAA;AAC9C,IAAA,MAAM,oBAAA,GAAuB,YAAa,IAAA,EAAM;AAC5C,MAAA,KAAA,IAAS,YAAA,IAAgB,aAAA;AACrB,QAAA,YAAA,CAAa,KAAA,CAAM,MAAM,IAAI,CAAA;AAAA,IACrC,CAAA;AACA,IAAA,MAAM,UAAA,GAAa,EAAE,CAAC,gBAAgB,GAAG,oBAAA,EAAqB;AAC9D,IAAA,UAAA,CAAW,KAAK,UAAU,CAAA;AAAA,EAC9B;AACA,EAAA,SAAS,cAAc,IAAA,EAAM;AACzB,IAAA,KAAA,MAAW,WAAA,IAAe,YAAA;AAEtB,MAAA,SAAA,CAAU,IAAA,EAAM,IAAI,WAAA,CAAY,GAAG,IAAI,CAAC,CAAA;AAC5C,IAAA,IAAI,gBAAA,KAAqB,IAAA,IAAQ,OAAO,IAAA,CAAK,gBAAgB,CAAA,KAAM,UAAA;AAC/D,MAAA,IAAA,CAAK,gBAAgB,CAAA,CAAE,KAAA,CAAM,IAAA,EAAM,IAAI,CAAA;AAAA,EAC/C;AACA,EAAA,UAAA,CAAW,SAAA,GAAY,QAAA,CAAS,iBAAA,KAAsB,MAAA,GAChD,aAAA,CAAc,YAAY,UAAU,CAAA,GACpC,aAAA,CAAc,UAAA,EAAY,UAAU,CAAA;AAC1C,EAAA,MAAA,CAAO,eAAe,UAAA,EAAY,QAAA,CAAS,eAAA,KAAoB,MAAA,GACzD,cAAc,YAAA,EAAc,IAAA,EAAM,CAAC,WAAW,CAAC,CAAA,GAC/C,QAAA,CAAS,YAAA,EAAc,QAAA,CAAS,SAAS,CAAC,CAAA;AAChD,EAAA,IAAI,mBAAA,GAAsB,UAAA;AAC1B,EAAA,IAAI,QAAA,CAAS,yBAAyB,MAAA,EAAQ;AAC1C,IAAA,MAAM,eAAA,GAAkB,QAAA,CAAS,oBAAA,KAAyB,MAAA,GACpD,mBAAA,CAAoB,GAAG,YAAY,CAAA,GACnC,qBAAA,CAAsB,GAAG,YAAY,CAAA;AAC3C,IAAA,KAAA,IAAS,SAAA,IAAA,CAAc,EAAA,GAAK,eAAA,KAAoB,IAAA,IAAQ,oBAAoB,MAAA,GAAS,MAAA,GAAS,eAAA,CAAgB,KAAA,MAAW,IAAA,IAAQ,EAAA,KAAO,MAAA,GAAS,EAAA,GAAK,EAAC,EAAG;AACtJ,MAAA,MAAM,MAAA,GAAS,UAAU,mBAAmB,CAAA;AAC5C,MAAA,IAAI,MAAA,EAAQ;AACR,QAAA,mBAAA,GAAsB,MAAA;AAAA,MAC1B;AAAA,IACJ;AACA,IAAA,4BAAA,CAAA,CAA8B,EAAA,GAAK,eAAA,KAAoB,IAAA,IAAQ,eAAA,KAAoB,SAAS,MAAA,GAAS,eAAA,CAAgB,MAAA,MAAY,IAAA,IAAQ,EAAA,KAAO,MAAA,GAAS,EAAA,GAAK,IAAI,mBAAmB,CAAA;AACrL,IAAA,4BAAA,CAAA,CAA8B,EAAA,GAAK,eAAA,KAAoB,IAAA,IAAQ,eAAA,KAAoB,SAAS,MAAA,GAAS,eAAA,CAAgB,QAAA,MAAc,IAAA,IAAQ,OAAO,MAAA,GAAS,EAAA,GAAK,EAAC,EAAG,oBAAoB,SAAS,CAAA;AAAA,EACrM;AACA,EAAA,cAAA,CAAe,qBAAqB,YAAY,CAAA;AAChD,EAAA,OAAO,mBAAA;AACX;AAnVA,IAIM,SAAA,EAUA,YAUA,kBAAA,EAwBA,aAAA,EAsBA,QAMA,qBAAA,EA8BA,QAAA,EAwCA,eAEA,QAAA,EAQA,MAAA,EACA,mBACA,cAAA,EAiCA,wBAAA,EAQA,kCAOA,eAAA,EAQA,UAAA,EACA,2BAkBA,mBAAA,EAUA,qBAAA,EAQA,uBAyFA,4BAAA,EAeA,GAAA;AAnWN,IAAAgM,SAAAA,GAAA,KAAA,CAAA;AAAA,EAAA,iFAAA,GAAA;AAIA,IAAM,YAAY,CAAC,IAAA,EAAM,GAAA,EAAK,OAAA,GAAU,EAAC,KAAM;AAC3C,MAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,yBAAA,CAA0B,GAAG,CAAA;AAClD,MAAA,KAAA,IAAS,IAAA,IAAQ,OAAA;AACb,QAAA,OAAO,MAAM,IAAI,CAAA;AACrB,MAAA,MAAA,CAAO,gBAAA,CAAiB,MAAM,KAAK,CAAA;AAAA,IACvC,CAAA;AAKA,IAAM,aAAa,CAAC,GAAA,EAAK,YAAA,GAAe,CAAC,GAAG,CAAA,KAAM;AAC9C,MAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,cAAA,CAAe,GAAG,CAAA;AACvC,MAAA,IAAI,KAAA,KAAU,IAAA;AACV,QAAA,OAAO,YAAA;AACX,MAAA,OAAO,WAAW,KAAA,EAAO,CAAC,GAAG,YAAA,EAAc,KAAK,CAAC,CAAA;AAAA,IACrD,CAAA;AAKA,IAAM,kBAAA,GAAqB,IAAI,IAAA,KAAS;AACpC,MAAA,IAAI,KAAK,MAAA,KAAW,CAAA;AAChB,QAAA,OAAO,MAAA;AACX,MAAA,IAAI,WAAA,GAAc,MAAA;AAClB,MAAA,MAAM,cAAc,IAAA,CAAK,GAAA,CAAI,CAAA,GAAA,KAAO,UAAA,CAAW,GAAG,CAAC,CAAA;AACnD,MAAA,OAAO,YAAY,KAAA,CAAM,CAAAC,gBAAcA,WAAAA,CAAW,MAAA,GAAS,CAAC,CAAA,EAAG;AAC3D,QAAA,MAAM,SAAS,WAAA,CAAY,GAAA,CAAI,CAAAA,WAAAA,KAAcA,WAAAA,CAAW,KAAK,CAAA;AAC7D,QAAA,MAAM,oBAAA,GAAuB,OAAO,CAAC,CAAA;AACrC,QAAA,IAAI,MAAA,CAAO,KAAA,CAAM,CAAA,KAAA,KAAS,KAAA,KAAU,oBAAoB,CAAA;AACpD,UAAA,WAAA,GAAc,oBAAA;AAAA;AAEd,UAAA;AAAA,MACR;AACA,MAAA,OAAO,WAAA;AAAA,IACX,CAAA;AAUA,IAAM,gBAAgB,CAAC,WAAA,EAAa,WAAA,EAAa,OAAA,GAAU,EAAC,KAAM;AAC9D,MAAA,IAAI,EAAA;AACJ,MAAA,MAAM,IAAA,GAAA,CAAQ,EAAA,GAAK,kBAAA,CAAmB,GAAG,WAAW,OAAO,IAAA,IAAQ,EAAA,KAAO,MAAA,GAAS,EAAA,GAAK,MAAA,CAAO,SAAA;AAC/F,MAAA,MAAM,UAAA,GAAa,MAAA,CAAO,MAAA,CAAO,IAAI,CAAA;AAIrC,MAAA,MAAM,aAAA,GAAgB,WAAW,IAAI,CAAA;AACrC,MAAA,KAAA,IAAS,aAAa,WAAA,EAAa;AAC/B,QAAA,IAAI,MAAA,GAAS,WAAW,SAAS,CAAA;AAEjC,QAAA,KAAA,IAASxM,KAAI,MAAA,CAAO,MAAA,GAAS,CAAA,EAAGA,EAAAA,IAAK,GAAGA,EAAAA,EAAAA,EAAK;AACzC,UAAA,IAAI,QAAA,GAAW,OAAOA,EAAC,CAAA;AACvB,UAAA,IAAI,aAAA,CAAc,OAAA,CAAQ,QAAQ,CAAA,KAAM,EAAA,EAAI;AACxC,YAAA,SAAA,CAAU,YAAY,QAAA,EAAU,CAAC,aAAA,EAAe,GAAG,OAAO,CAAC,CAAA;AAC3D,YAAA,aAAA,CAAc,KAAK,QAAQ,CAAA;AAAA,UAC/B;AAAA,QACJ;AAAA,MACJ;AACA,MAAA,UAAA,CAAW,WAAA,GAAc,WAAA;AACzB,MAAA,OAAO,UAAA;AAAA,IACX,CAAA;AACA,IAAM,MAAA,GAAS,CAAC,GAAA,KAAQ,GAAA,CAAI,MAAA,CAAO,CAACR,EAAAA,EAAGQ,EAAAA,KAAM,GAAA,CAAI,OAAA,CAAQR,EAAC,CAAA,IAAKQ,EAAC,CAAA;AAMhE,IAAM,qBAAA,GAAwB,CAAC,IAAA,EAAM,WAAA,KAAgB;AACjD,MAAA,MAAM,cAAc,WAAA,CAAY,GAAA,CAAI,CAAA,UAAA,KAAc,UAAA,CAAW,UAAU,CAAC,CAAA;AAExE,MAAA,IAAI,UAAA,GAAa,CAAA;AAGjB,MAAA,IAAI,qBAAA,GAAwB,IAAA;AAC5B,MAAA,OAAO,qBAAA,EAAuB;AAE1B,QAAA,qBAAA,GAAwB,KAAA;AAExB,QAAA,KAAA,IAASA,KAAI,WAAA,CAAY,MAAA,GAAS,CAAA,EAAGA,EAAAA,IAAK,GAAGA,EAAAA,EAAAA,EAAK;AAC9C,UAAA,MAAM,YAAA,GAAe,WAAA,CAAYA,EAAC,CAAA,CAAE,UAAU,CAAA;AAC9C,UAAA,IAAI,YAAA,KAAiB,MAAA,IAAa,YAAA,KAAiB,IAAA,EAAM;AAErD,YAAA,qBAAA,GAAwB,IAAA;AAExB,YAAA,IAAI,MAAA,CAAO,wBAAA,CAAyB,YAAA,EAAc,IAAI,KAAK,MAAA,EAAW;AAClE,cAAA,OAAO,WAAA,CAAYA,EAAC,CAAA,CAAE,CAAC,CAAA;AAAA,YAC3B;AAAA,UACJ;AAAA,QACJ;AACA,QAAA,UAAA,EAAA;AAAA,MACJ;AACA,MAAA,OAAO,MAAA;AAAA,IACX,CAAA;AAKA,IAAM,QAAA,GAAW,CAAC,WAAA,EAAa,SAAA,GAAY,OAAO,SAAA,KAAc,IAAI,KAAA,CAAM,EAAC,EAAG;AAAA,MAC1E,cAAA,GAAiB;AACb,QAAA,OAAO,SAAA;AAAA,MACX,CAAA;AAAA,MACA,cAAA,GAAiB;AACb,QAAA,MAAM,MAAM,qDAAqD,CAAA;AAAA,MACrE,CAAA;AAAA,MACA,wBAAA,CAAyBwF,IAAG,IAAA,EAAM;AAC9B,QAAA,OAAO,MAAA,CAAO,yBAAyB,qBAAA,CAAsB,IAAA,EAAM,WAAW,CAAA,IAAK,IAAI,IAAI,CAAA;AAAA,MAC/F,CAAA;AAAA,MACA,cAAA,GAAiB;AACb,QAAA,MAAM,IAAI,MAAM,6DAA6D,CAAA;AAAA,MACjF,CAAA;AAAA,MACA,GAAA,CAAIA,IAAG,IAAA,EAAM;AACT,QAAA,OAAO,sBAAsB,IAAA,EAAM,WAAW,MAAM,MAAA,IAAa,SAAA,CAAU,IAAI,CAAA,KAAM,MAAA;AAAA,MACzF,CAAA;AAAA,MACA,GAAA,CAAIA,IAAG,IAAA,EAAM;AACT,QAAA,OAAA,CAAQ,qBAAA,CAAsB,IAAA,EAAM,WAAW,CAAA,IAAK,WAAW,IAAI,CAAA;AAAA,MACvE,CAAA;AAAA,MACA,GAAA,CAAIA,EAAAA,EAAG,IAAA,EAAM,GAAA,EAAK;AACd,QAAA,MAAM,kBAAA,GAAqB,qBAAA,CAAsB,IAAA,EAAM,WAAW,CAAA;AAClE,QAAA,IAAI,kBAAA,KAAuB,MAAA;AACvB,UAAA,MAAM,IAAI,MAAM,0DAA0D,CAAA;AAC9E,QAAA,kBAAA,CAAmB,IAAI,CAAA,GAAI,GAAA;AAC3B,QAAA,OAAO,IAAA;AAAA,MACX,CAAA;AAAA,MACA,cAAA,GAAiB;AACb,QAAA,MAAM,IAAI,MAAM,yDAAyD,CAAA;AAAA,MAC7E,CAAA;AAAA,MACA,OAAA,GAAU;AACN,QAAA,OAAO,WAAA,CACF,IAAI,MAAA,CAAO,mBAAmB,EAC9B,MAAA,CAAO,CAAC,MAAM,IAAA,KAAS,IAAA,CAAK,OAAO,IAAA,CAAK,MAAA,CAAO,SAAO,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA,GAAI,CAAC,CAAC,CAAC,CAAA;AAAA,MACtF;AAAA,KACH,CAAA;AAMD,IAAM,aAAA,GAAgB,CAAC,WAAA,EAAa,WAAA,KAAgB,QAAA,CAAS,CAAC,GAAG,WAAA,EAAa,EAAE,WAAA,EAAa,CAAC,CAAA;AAE9F,IAAM,QAAA,GAAW;AAAA,MACb,YAAA,EAAc,IAAA;AAAA,MACd,eAAA,EAAiB,MAAA;AAAA,MACjB,iBAAA,EAAmB,MAAA;AAAA,MACnB,oBAAA,EAAsB;AAAA,KAC1B;AAGA,IAAM,MAAA,uBAAa,OAAA,EAAQ;AAC3B,IAAM,iBAAA,GAAoB,CAAC,KAAA,KAAU,MAAA,CAAO,IAAI,KAAK,CAAA;AACrD,IAAM,iBAAiB,CAAC,UAAA,EAAY,iBAAiB,MAAA,CAAO,GAAA,CAAI,YAAY,YAAY,CAAA;AAiCxF,IAAM,wBAAA,GAA2B,CAAC,EAAA,EAAIiH,GAAAA,KAAO;AACzC,MAAA,IAAI,EAAA,EAAI,EAAA;AACR,MAAA,MAAM,OAAA,GAAU,MAAA,CAAO,CAAC,GAAG,MAAA,CAAO,mBAAA,CAAoB,EAAE,CAAA,EAAG,GAAG,MAAA,CAAO,mBAAA,CAAoBA,GAAE,CAAC,CAAC,CAAA;AAC7F,MAAA,MAAM,eAAe,EAAC;AACtB,MAAA,KAAA,IAAS,GAAA,IAAO,OAAA;AACZ,QAAA,YAAA,CAAa,GAAG,CAAA,GAAI,MAAA,CAAO,CAAC,GAAA,CAAK,KAAK,EAAA,KAAO,IAAA,IAAQ,EAAA,KAAO,MAAA,GAAS,SAAS,EAAA,CAAG,GAAG,CAAA,MAAO,IAAA,IAAQ,OAAO,MAAA,GAAS,EAAA,GAAK,EAAC,EAAI,IAAK,EAAA,GAAKA,GAAAA,KAAO,IAAA,IAAQA,GAAAA,KAAO,SAAS,MAAA,GAASA,GAAAA,CAAG,GAAG,CAAA,MAAO,QAAQ,EAAA,KAAO,MAAA,GAAS,EAAA,GAAK,EAAG,CAAC,CAAA;AACjO,MAAA,OAAO,YAAA;AAAA,IACX,CAAA;AACA,IAAM,gCAAA,GAAmC,CAAC,EAAA,EAAIC,GAAAA,KAAO;AACjD,MAAA,IAAI,EAAA,EAAI,IAAI,EAAA,EAAI,EAAA;AAChB,MAAA,OAAQ;AAAA,QACJ,QAAA,EAAU,wBAAA,CAAA,CAA0B,EAAA,GAAK,EAAA,KAAO,IAAA,IAAQ,EAAA,KAAO,MAAA,GAAS,MAAA,GAAS,EAAA,CAAG,QAAA,MAAc,IAAA,IAAQ,EAAA,KAAO,MAAA,GAAS,EAAA,GAAK,EAAC,EAAA,CAAI,EAAA,GAAKA,GAAAA,KAAO,IAAA,IAAQA,GAAAA,KAAO,MAAA,GAAS,MAAA,GAASA,GAAAA,CAAG,QAAA,MAAc,IAAA,IAAQ,EAAA,KAAO,MAAA,GAAS,EAAA,GAAK,EAAE,CAAA;AAAA,QACjO,MAAA,EAAQ,wBAAA,CAAA,CAA0B,EAAA,GAAK,EAAA,KAAO,IAAA,IAAQ,EAAA,KAAO,MAAA,GAAS,MAAA,GAAS,EAAA,CAAG,MAAA,MAAY,IAAA,IAAQ,EAAA,KAAO,MAAA,GAAS,EAAA,GAAK,EAAC,EAAA,CAAI,EAAA,GAAKA,GAAAA,KAAO,IAAA,IAAQA,GAAAA,KAAO,MAAA,GAAS,MAAA,GAASA,GAAAA,CAAG,MAAA,MAAY,IAAA,IAAQ,EAAA,KAAO,MAAA,GAAS,EAAA,GAAK,EAAE;AAAA,OAC/N;AAAA,IACJ,CAAA;AACA,IAAM,eAAA,GAAkB,CAAC,EAAA,EAAIA,GAAAA,KAAO;AAChC,MAAA,IAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA;AACxB,MAAA,OAAQ;AAAA,QACJ,KAAA,EAAO,MAAA,CAAO,CAAC,GAAA,CAAI,KAAK,EAAA,KAAO,IAAA,IAAQ,EAAA,KAAO,MAAA,GAAS,MAAA,GAAS,EAAA,CAAG,KAAA,MAAW,IAAA,IAAQ,OAAO,MAAA,GAAS,EAAA,GAAK,EAAC,EAAG,GAAA,CAAI,EAAA,GAAKA,GAAAA,KAAO,IAAA,IAAQA,QAAO,MAAA,GAAS,MAAA,GAASA,GAAAA,CAAG,KAAA,MAAW,QAAQ,EAAA,KAAO,MAAA,GAAS,EAAA,GAAK,EAAE,CAAC,CAAA;AAAA,QAC9M,MAAA,EAAQ,gCAAA,CAAA,CAAkC,EAAA,GAAK,EAAA,KAAO,IAAA,IAAQ,EAAA,KAAO,MAAA,GAAS,MAAA,GAAS,EAAA,CAAG,MAAA,MAAY,IAAA,IAAQ,EAAA,KAAO,MAAA,GAAS,EAAA,GAAK,EAAC,EAAA,CAAI,EAAA,GAAKA,GAAAA,KAAO,IAAA,IAAQA,GAAAA,KAAO,MAAA,GAAS,MAAA,GAASA,GAAAA,CAAG,MAAA,MAAY,IAAA,IAAQ,EAAA,KAAO,MAAA,GAAS,EAAA,GAAK,EAAE,CAAA;AAAA,QACnO,QAAA,EAAU,gCAAA,CAAA,CAAkC,EAAA,GAAK,EAAA,KAAO,IAAA,IAAQ,EAAA,KAAO,MAAA,GAAS,MAAA,GAAS,EAAA,CAAG,QAAA,MAAc,IAAA,IAAQ,EAAA,KAAO,MAAA,GAAS,EAAA,GAAK,EAAC,EAAA,CAAI,EAAA,GAAKA,GAAAA,KAAO,IAAA,IAAQA,GAAAA,KAAO,MAAA,GAAS,MAAA,GAASA,GAAAA,CAAG,QAAA,MAAc,IAAA,IAAQ,EAAA,KAAO,MAAA,GAAS,EAAA,GAAK,EAAE;AAAA,OAC7O;AAAA,IACJ,CAAA;AACA,IAAM,UAAA,uBAAiB,GAAA,EAAI;AAC3B,IAAM,yBAAA,GAA4B,IAAI,OAAA,KAAY;AAC9C,MAAA,IAAI,EAAA;AACJ,MAAA,MAAM,UAAA,uBAAiB,GAAA,EAAI;AAC3B,MAAA,MAAM,2BAAW,IAAI,GAAA,CAAI,CAAC,GAAG,OAAO,CAAC,CAAA;AACrC,MAAA,OAAO,QAAA,CAAS,OAAO,CAAA,EAAG;AACtB,QAAA,KAAA,IAAS,SAAS,QAAA,EAAU;AACxB,UAAA,MAAM,iBAAA,GAAoB,WAAW,KAAA,CAAM,SAAS,EAAE,GAAA,CAAI,CAAA,KAAA,KAAS,MAAM,WAAW,CAAA;AACpF,UAAA,MAAM,YAAA,GAAA,CAAgB,KAAK,iBAAA,CAAkB,KAAK,OAAO,IAAA,IAAQ,EAAA,KAAO,MAAA,GAAS,EAAA,GAAK,EAAC;AACvF,UAAA,MAAM,qBAAA,GAAwB,CAAC,GAAG,iBAAA,EAAmB,GAAG,YAAY,CAAA;AACpE,UAAA,MAAM,UAAA,GAAa,sBAAsB,MAAA,CAAO,CAAAxK,OAAK,CAAC,UAAA,CAAW,GAAA,CAAIA,EAAC,CAAC,CAAA;AACvE,UAAA,KAAA,IAAS,QAAA,IAAY,UAAA;AACjB,YAAA,QAAA,CAAS,IAAI,QAAQ,CAAA;AACzB,UAAA,UAAA,CAAW,IAAI,KAAK,CAAA;AACpB,UAAA,QAAA,CAAS,OAAO,KAAK,CAAA;AAAA,QACzB;AAAA,MACJ;AACA,MAAA,OAAO,CAAC,GAAG,UAAU,CAAA;AAAA,IACzB,CAAA;AACA,IAAM,mBAAA,GAAsB,IAAI,OAAA,KAAY;AACxC,MAAA,MAAM,0BAA0B,yBAAA,CAA0B,GAAG,OAAO,CAAA,CAC/D,IAAI,CAAA,KAAA,KAAS,UAAA,CAAW,GAAA,CAAI,KAAK,CAAC,CAAA,CAClC,MAAA,CAAO,CAAAyK,WAAAA,KAAc,CAAC,CAACA,WAAU,CAAA;AACtC,MAAA,IAAI,wBAAwB,MAAA,IAAU,CAAA;AAClC,QAAA,OAAO,EAAC;AACZ,MAAA,IAAI,wBAAwB,MAAA,IAAU,CAAA;AAClC,QAAA,OAAO,wBAAwB,CAAC,CAAA;AACpC,MAAA,OAAO,uBAAA,CAAwB,OAAO,CAAC,EAAA,EAAID,QAAO,eAAA,CAAgB,EAAA,EAAIA,GAAE,CAAC,CAAA;AAAA,IAC7E,CAAA;AACA,IAAM,qBAAA,GAAwB,IAAI,OAAA,KAAY;AAC1C,MAAA,MAAM,kBAAkB,OAAA,CAAQ,GAAA,CAAI,CAAA,KAAA,KAAS,qBAAA,CAAsB,KAAK,CAAC,CAAA;AACzE,MAAA,IAAI,gBAAgB,MAAA,KAAW,CAAA;AAC3B,QAAA,OAAO,EAAC;AACZ,MAAA,IAAI,gBAAgB,MAAA,KAAW,CAAA;AAC3B,QAAA,OAAO,gBAAgB,CAAC,CAAA;AAC5B,MAAA,OAAO,eAAA,CAAgB,OAAO,CAAC,EAAA,EAAIA,QAAO,eAAA,CAAgB,EAAA,EAAIA,GAAE,CAAC,CAAA;AAAA,IACrE,CAAA;AACA,IAAM,qBAAA,GAAwB,CAAC,KAAA,KAAU;AACrC,MAAA,IAAI,kBAAA,GAAqB,UAAA,CAAW,GAAA,CAAI,KAAK,CAAA;AAC7C,MAAA,IAAI,CAAC,kBAAA,EAAoB;AACrB,QAAA,kBAAA,GAAqB,EAAC;AACtB,QAAA,UAAA,CAAW,GAAA,CAAI,OAAO,kBAAkB,CAAA;AAAA,MAC5C;AACA,MAAA,OAAO,kBAAA;AAAA,IACX,CAAA;AAkFA,IAAM,4BAAA,GAA+B,CAAC,uBAAA,EAAyB,MAAA,KAAW;AACtE,MAAA,MAAM,iBAAiB,uBAAA,CAAwB,QAAA;AAC/C,MAAA,MAAM,mBAAmB,uBAAA,CAAwB,MAAA;AACjD,MAAA,IAAI,cAAA;AACA,QAAA,KAAA,IAAS,GAAA,IAAO,cAAA;AACZ,UAAA,KAAA,IAAS,SAAA,IAAa,eAAe,GAAG,CAAA;AACpC,YAAA,SAAA,CAAU,QAAQ,GAAG,CAAA;AACjC,MAAA,IAAI,gBAAA;AACA,QAAA,KAAA,IAAS,GAAA,IAAO,gBAAA;AACZ,UAAA,KAAA,IAAS,SAAA,IAAa,iBAAiB,GAAG,CAAA;AACtC,YAAA,SAAA,CAAU,QAAQ,GAAA,EAAK,MAAA,CAAO,wBAAA,CAAyB,MAAA,EAAQ,GAAG,CAAC,CAAA;AAAA,IACnF,CAAA;AAIA,IAAM,GAAA,GAAM,CAAA,GAAI,WAAA,KAAgB,CAAA,cAAA,KAAkB;AAE9C,MAAA,MAAM,UAAA,GAAa,MAAM,GAAG,WAAA,CAAY,OAAO,CAAC,cAAc,CAAC,CAAC,CAAA;AAChE,MAAA,MAAA,CAAO,cAAA,CAAe,YAAY,MAAA,EAAQ;AAAA,QACtC,OAAO,cAAA,CAAe,IAAA;AAAA,QACtB,QAAA,EAAU;AAAA,OACb,CAAA;AACD,MAAA,OAAO,UAAA;AAAA,IACX,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACpWO,SAAS,gBAAA,GAAmB;AAClC,EAAA,OAAQ,QAAA,GAAW,IAAA;AACpB;AAOO,SAAS,iBAAA,GAAoB;AACnC,EAAA,OAAQ,QAAA,GAAW,KAAA;AACpB;AAKO,SAAS,mBAAA,GAAsB;AACrC,EAAA,OAAO,QAAA;AACR;ACHO,SAAS,mBAAA,CAAoB,cAAsB,MAAA,EAAgC;AACzF,EAAA,oBAAA,CAAqB,KAAA,CAAA,CAAO,MAAA,EAAQ,MAAA,IAAU,CAAA,IAAK,YAAY,CAAA;AAChE;AClBO,SAAS,eAAyB,GAAA,EAAwC;AAChF,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,GAAA,CAAI,CAAC,CAAC,CAAA,EAAG,OAAO,CAAC,GAAG,GAAA,CAAI,CAAC,CAAC,CAAA;AAC5C,EAAA,OAAO,GAAA;AACR;ACqEO,SAAS,oCAAA,CAAqC5N,UAA0C,QAAA,EAAmB;AACjH,EAAA,iBAAA,CAAkB,MAAM,QAAQ,CAAA;AAChC,EAAA,gBAAA,CAAiB,MAAMA,QAAO,CAAA;AAC/B;AAIO,SAAS,0CAAA,CAA2C,OAAgB,KAAA,EAAgB;AAC1F,EAAA,8BAAA,CAA+B,MAAM,KAAK,CAAA;AAC1C,EAAA,8BAAA,CAA+B,MAAM,KAAK,CAAA;AAC3C;AAWO,SAAS,iCACf,KAAA,EACA,KAAA,EACA,KAAA,EACA,QAAA,EACA,OACA,GAAA,EACC;AACD,EAAA,IAAI,KAAA,KAAU,YAAY,OAAA,EAAS;AAClC,IAAA,IAAI,CAAC,KAAA,EAAO;AACX,MAAA,MAAM,IAAI,WAAW,sCAAsC,CAAA;AAC5D,IAAA;AAEA,IAAA,IAAI,QAAA,IAAY,KAAA,IAAS,GAAA,IAAO,KAAA,EAAO;AACtC,MAAA,MAAM,IAAI,WAAW,gEAAgE,CAAA;AACtF,IAAA;EACD,CAAA,MAAO;AACN,IAAA,IAAI,KAAA,EAAO;AACV,MAAA,MAAM,IAAI,WAAW,8CAA8C,CAAA;AACpE,IAAA;AAEA,IAAA,IAAI,OAAO,QAAA,EAAU;AACpB,MAAA,MAAM,IAAI,WAAW,2CAA2C,CAAA;AACjE,IAAA;AAEA,IAAA,IAAI,CAAC,KAAA,IAAS,CAAC,KAAA,EAAO;AACrB,MAAA,MAAM,IAAI,WAAW,wDAAwD,CAAA;AAC9E,IAAA;AAEA,IAAA,IAAI,KAAA,KAAU,YAAY,IAAA,EAAM;AAC/B,MAAA,IAAI,CAAC,GAAA,EAAK;AACT,QAAA,MAAM,IAAI,WAAW,+BAA+B,CAAA;AACrD,MAAA;AACD,IAAA,CAAA,MAAA,IAAW,GAAA,EAAK;AACf,MAAA,MAAM,IAAI,WAAW,qDAAqD,CAAA;AAC3E,IAAA;AACD,EAAA;AACD;AC/FO,SAAS,0BAAA,CAA2B,UAAmB,KAAA,EAAwB;AACrF,EAAA,iBAAA,CAAkB,MAAM,QAAQ,CAAA;AAChC,EAAA,uBAAA,CAAwB,MAAM,KAAK,CAAA;AACpC;ACWO,SAAS,qBAAA,CACf,OACA,kBAAA,EAC8B;AAC9B+C,EAAAA,EAAAA,CAAE,SAAS,kBAAkB,CAAA,CAAE,qBAAqB,mBAAmB,CAAA,CAAE,MAAM,KAAK,CAAA;AACrF;AAEO,SAAS,sBAAA,CAEd,KAAA,EAAgB,GAAA,EAAa,GAAA,EAAa,kBAAA,EAA0E;AACrH,EAAA,CAAC,kBAAA,GAAqBA,GAAE,QAAA,CAAS,kBAAkB,IAAIA,EAAAA,CAAE,QAAA,CAAS,gBAAgB,CAAA,EAChF,KAAA,GACA,wBAAA,CAAyB,GAAG,EAC5B,qBAAA,CAAsB,GAAG,EACzB,oBAAA,CAAqB,mBAAmB,CAAA,CACxC,KAAA,CAAM,KAAK,CAAA;AACd;ACgEO,SAAS,uBACf,IAAA,EACmB;AACnB,EAAA,IAAI,gBAAgB,gBAAA,EAAkB;AACrC,IAAA,OAAO,IAAA;AACR,EAAA;AAEA,EAAA,QAAQ,KAAK,IAAA;AACZ,IAAA,KAAKiI,aAAAA,CAAc,SAAA;AAClB,MAAA,OAAO,IAAI,iBAAiB,IAAI,CAAA;AACjC,IAAA,KAAKA,aAAAA,CAAc,MAAA;AAClB,MAAA,OAAO,IAAI,cAAc,IAAI,CAAA;AAC9B,IAAA,KAAKA,aAAAA,CAAc,YAAA;AAClB,MAAA,OAAO,IAAI,wBAAwB,IAAI,CAAA;AACxC,IAAA,KAAKA,aAAAA,CAAc,SAAA;AAClB,MAAA,OAAO,IAAI,iBAAiB,IAAI,CAAA;AACjC,IAAA,KAAKA,aAAAA,CAAc,UAAA;AAClB,MAAA,OAAO,IAAI,sBAAsB,IAAI,CAAA;AACtC,IAAA,KAAKA,aAAAA,CAAc,UAAA;AAClB,MAAA,OAAO,IAAI,sBAAsB,IAAI,CAAA;AACtC,IAAA,KAAKA,aAAAA,CAAc,iBAAA;AAClB,MAAA,OAAO,IAAI,6BAA6B,IAAI,CAAA;AAC7C,IAAA,KAAKA,aAAAA,CAAc,aAAA;AAClB,MAAA,OAAO,IAAI,yBAAyB,IAAI,CAAA;AACzC,IAAA,KAAKA,aAAAA,CAAc,IAAA;AAClB,MAAA,OAAO,IAAI,YAAY,IAAI,CAAA;AAC5B,IAAA,KAAKA,aAAAA,CAAc,SAAA;AAClB,MAAA,OAAO,IAAI,iBAAiB,IAAI,CAAA;AACjC,IAAA,KAAKA,aAAAA,CAAc,OAAA;AAClB,MAAA,OAAO,IAAI,eAAe,IAAI,CAAA;AAC/B,IAAA,KAAKA,aAAAA,CAAc,SAAA;AAClB,MAAA,OAAO,IAAI,iBAAiB,IAAI,CAAA;AACjC,IAAA,KAAKA,aAAAA,CAAc,WAAA;AAClB,MAAA,OAAO,IAAI,mBAAmB,IAAI,CAAA;AACnC,IAAA,KAAKA,aAAAA,CAAc,SAAA;AAClB,MAAA,OAAO,IAAI,iBAAiB,IAAI,CAAA;AACjC,IAAA,KAAKA,aAAAA,CAAc,YAAA;AAClB,MAAA,OAAO,IAAI,oBAAoB,IAAI,CAAA;AACpC,IAAA,KAAKA,aAAAA,CAAc,KAAA;AAClB,MAAA,OAAO,IAAI,aAAa,IAAI,CAAA;AAC7B,IAAA,KAAKA,aAAAA,CAAc,UAAA;AAClB,MAAA,OAAO,IAAI,kBAAkB,IAAI,CAAA;AAClC,IAAA;AAEC,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,0CAAA,EAA6C,IAAA,CAAK,IAAI,CAAA,CAAE,CAAA;AAC1E;AACD;AAEA,SAAS,SAAA,CACR,SACA,WAAA,EACqB;AACrB,EAAA,OAAO,OAAA,YAAmB,WAAA;AAC3B;AAEO,SAAS,cAAA,CACf,SACA,WAAA,EACC;AACD,EAAA,IAAI,SAAA,CAAU,OAAA,EAAS,WAAW,CAAA,EAAG;AACpC,IAAA,OAAO,OAAA;AACR,EAAA;AAEA,EAAA,IAAI,OAAO,YAAY,UAAA,EAAY;AAClC,IAAA,OAAO,OAAA,CAAQ,IAAI,WAAA,EAAa,CAAA;AACjC,EAAA;AAEA,EAAA,OAAO,IAAI,YAAY,OAAO,CAAA;AAC/B;ACzLO,SAAS8C,2BAAAA,CACf,QAAA,EACA,KAAA,EACA,UAAA,EACC;AACD,EAAA,iBAAA,CAAkB,MAAM,QAAQ,CAAA;AAChC,EAAA,cAAA,CAAe,MAAM,KAAK,CAAA;AAC1B,EAAA,mBAAA,CAAoB,MAAM,UAAU,CAAA;AACrC;ACNO,SAAS,aAAa,IAAA,EAAuC;AACnE,EAAA,aAAA,CAAc,MAAM,IAAI,CAAA;AACzB;AASO,SAAS,oBAAoB,WAAA,EAAqD;AACxFC,EAAAA,qBAAAA,CAAqB,MAAM,WAAW,CAAA;AACvC;AAGO,SAAS,eAAe,MAAA,EAAiB;AAC/C,EAAA,OAAO,eAAA,CAAgB,MAAM,MAAM,CAAA;AACpC;AAEO,SAAS,yBAAyB/N,QAAAA,EAAuE;AAC/G,EAAA,uBAAA,CAAwB,MAAMA,QAAO,CAAA;AACtC;AAEO,SAAS8N,2BAAAA,CACf,IAAA,EACA,WAAA,EACA9N,QAAAA,EACC;AAED,EAAA,YAAA,CAAa,IAAI,CAAA;AAGjB,EAAA,mBAAA,CAAoB,WAAW,CAAA;AAG/B,EAAA,wBAAA,CAAyBA,QAAO,CAAA;AACjC;AAIO,SAAS,0BAA0B,KAAA,EAA0C;AACnF,EAAA,gBAAA,CAAiB,MAAM,KAAK,CAAA;AAC7B;AAEO,SAAS,iBAAiB,QAAA,EAAgD;AAChF,EAAA,gBAAA,CAAiB,MAAM,QAAQ,CAAA;AAChC;AAIO,SAAS,qBAAA,CAAsB,cAAsB,OAAA,EAAqD;AAChH,EAAA,sBAAA,CAAuB,KAAA,CAAA,CAAO,OAAA,EAAS,MAAA,IAAU,CAAA,IAAK,YAAY,CAAA;AACnE;AAEO,SAASgO,sBAAAA,CAEd,OAAgB,kBAAA,EAAuE;AACxFjL,EAAAA,EAAAA,CAAE,QAAA,CAAS,kBAAkB,CAAA,CAAE,KAAA,CAAM,KAAK,CAAA;AAC3C;AAQO,SAAS,wBAAwB,KAAA,EAAkD;AACzF,EAAA,wBAAA,CAAyB,MAAM,KAAK,CAAA;AACrC;AAIO,SAAS,qBAAqB,KAAA,EAA6D;AACjG,EAAA,qBAAA,CAAsB,MAAM,KAAK,CAAA;AAClC;AAaO,SAAS,iCAAiC,WAAA,EAAsB;AACtE,EAAA,OAAO,yBAAA,CAA0B,MAAM,WAAW,CAAA;AACnD;AAEO,SAAS,aAAa,KAAA,EAA0C;AACtE,EAAA,gBAAA,CAAiB,MAAM,KAAK,CAAA;AAC7B;AClGO,SAASkL,2BAA0B,KAAA,EAA0C;AACnFC,EAAAA,iBAAAA,CAAiB,MAAM,KAAK,CAAA;AAC7B;AAEO,SAASC,cAAa,IAAA,EAAuC;AACnEC,EAAAA,cAAAA,CAAc,MAAM,IAAI,CAAA;AACzB;AAEO,SAAS,aAAa,IAAA,EAAuD;AACnF,EAAA,aAAA,CAAc,MAAM,IAAI,CAAA;AACzB;AAEO,SAASN,2BAAAA,CAA2B,MAAc,IAAA,EAAc;AAEtEK,EAAAA,aAAAA,CAAa,IAAI,CAAA;AAGjB,EAAA,YAAA,CAAa,IAAI,CAAA;AAClB;AAIO,SAASE,sBAAqB,KAAA,EAA6D;AACjGC,EAAAA,sBAAAA,CAAsB,MAAM,KAAK,CAAA;AAClC;AAaO,SAASC,kCAAiC,WAAA,EAAsB;AACtE,EAAA,OAAOC,0BAAAA,CAA0B,MAAM,WAAW,CAAA;AACnD;AChDO,SAAS,YAAY,IAAA,EAAgB;AAC3C,EAAA,OAAA,CACE,IAAA,CAAK,KAAA,EAAO,MAAA,IAAU,CAAA,KACtB,KAAK,WAAA,EAAa,MAAA,IAAU,CAAA,CAAA,IAC5B,IAAA,CAAK,MAAA,EAAQ,MAAA,CAAO,CAAC,IAAA,EAAM,SAAS,IAAA,GAAO,IAAA,CAAK,IAAA,CAAK,MAAA,GAAS,IAAA,CAAK,KAAA,CAAM,MAAA,EAAQ,CAAC,KAAK,CAAA,CAAA,IACvF,IAAA,CAAK,MAAA,EAAQ,IAAA,CAAK,MAAA,IAAU,CAAA,CAAA,IAC5B,IAAA,CAAK,MAAA,EAAQ,KAAK,MAAA,IAAU,CAAA,CAAA;AAE/B;ACbA,IAAA,sBAAA,CAAA,CAAA,UAAA,CAAA,CAAA,iBAAA,CAAA,CAAA,OAAA,CAAA,CAAA,SAAA,CAAA,CAAA,eAAA,CAAA,CVFA,kBAAA,CAAA,CDAI,QAAA,CAAA,CCIS,kBAAA,CAAA,CAEA,mBAAA,CAAA,CAEA,sBAEA,mBAAA,CAAA,CAQA,yBAAA,CAAA,CAEA,oBAAA,CAAA,CAMA,mBAAA,CAAA,CAKA,iBAAA,CAAA,CAQA,YAAA,CAAA,CAQA,oBAAA,CAAA,CAQA,YAAA,CAAA,CAMA,gBASA,oBAAA,CAAA,CAOA,mBAAA,CAAA,CAOA,oBAAA,CAAA,CAOA,kBAAA,CAAA,CAEA,cAAA,CAAA,CE7FbC,mBAAAA,CAAAA,CSYa,6BAAA,CAAA,CTPA,aAOA,iBAAA,CAAA,CAMA,cAAA,CAAA,CAUA,iBAAA,CAAA,CAEA,oBAAA,CAAA,CAMA,oBAAA,CAAA,CAEA,oBAAA,CAAA,CACA,eAAA,CAAA,CAOA,8BAAA,CAAA,CASA,qBAUA,eAAA,CAAA,CAEA,gBAAA,CAAA,CAIA,sBAAA,CAAA,CAYA,gBAAA,CAAA,CAOA,qBAAA,CAAA,CAEA,YAAA,CAAA,CUnES,gBAAA,CAAA,CCDT,aAAA,CAAA,CCxBbA,qBAIa,mBAAA,CAAA,CCGA,iBAAA,CAAA,CZPbA,mBAAAA,CAAAA,CAKa,uBAAA,CAAA,CACA,kBAAA,CAAA,CAMA,kBAAA,CAAA,CAMA,iBAAA,CAAA,CACA,cAAA,CAAA,CACAC,uBACA,cAAA,CAAA,CAMA,kBAAA,CAAA,CajBS,qBAAA,CAAA,CCIT,wBAAA,CAAA,CCAA,4BAAA,CAAA,CCDA,qBAAA,CAAA,CCbbD,mBAAAA,CAAAA,CAKM,uBAAA,CAAA,CASO,4BAYA,8BAAA,CAAA,CAcA,uBAAA,CAAA,CAWA,uBAAA,CAAA,CAWA,+BAAA,CAAA,CAUA,2BC7DA,uBAAA,CAAA,CCEA,qBAAA,CAAA,CZMA,gBAAA,CAAA,CanBbA,mBAAAA,CAAAA,CAca,gBCsBA,YAAA,CAAA,CpBpCbA,mBAAAA,CAAAA,CqBKa,gBAAA,CAAA,CrBMA,0BAAA,CAAA,CAWAV,qBAAAA,CAAAA,CAMA,aAAA,CAAA,CAQA,gBAAA,CAAA,CAEA,gBAAA,CAAA,CAEA,kBAEA,2BAAA,CAAA,CAMA,kBAAA,CAAA,CAKA,uBAAA,CAAA,CsBjDA,WAAA,CAAA,CCCA,gBAAA,CAAA,CCAA,kBAAA,CAAA,CCmCA,gBAAA,CAAA,CCpCA,uBAAA,CAAA,CCSA,qBCMA,cAAA,CAAA,CCgCA,gBAAA,CAAA,C3BnDbU,mBAAAA,CAAAA,CAOa,cAAA,CAAA,CAKA,mBAAA,CAAA,CCZbA,mBAAAA,CAAAA,CAaM,aAAA,CAAA,CAWAV,uBAKA,eAAA,CAAA,CAMA,uBAAA,CAAA,CAwBA,gBAAA,CAAA,CAUA,sBAAA,CAAA,CAYO,0BAUP,qBAAA,CAAA,CAMA,yBAAA,CAAA,CAmBO,iBAAA,CAAA,CAIA,yBAAA,CAAA,C2BlHA,0BCmBA,kBAAA,CAAA,CClBS,4BAAA,CAAA,CCDT,4BAAA,CAAA,CCAA,yBAAA,CAAA,CCIP,mBAAA,CAAA,CAkBA,qBAAA,CAAA,CAKO,yCAAA,CAAA,CCxBA,yBAAA,CAAA,CCNS,iDCAhBG,iBAAAA,CAAAA,CAKO,6CAAA,CAAA,CCHP,eAAA,CAAA,CACA,eAAA,CAAA,CACA,gBAAA,CAAA,CAWO,wCAAA,CAAA,CCVP,eAAA,CAAA,CAUO,yBAAA,CAAA,CCZA,+BCEPS,gBAAAA,CAAAA,CAUO,wBAAA,CAAA,CCZA,sBAAA,CAAA,CCCPC,mBAAAA,CAAAA,CACAC,mBAAAA,CAAAA,CAMO,wBAAA,CAAA,CCRA,sBAAA,CAAA,CCYA,yBAAA,CAAA,CCAA,oCAyEA,6BAAA,CAAA,CClFA,6BAAA,CAAA,CCQA,mBAAA,CAAA,C7CjBbJ,oBAAAA,CAAAA,CAKML,gBAMA,aAAA,CAAA,CAGAF,iBAAAA,CAAAA,CAsBAI,sBAAAA,CAAAA,CAMAE,0BAAAA,CAAAA,CAeOM,oBAIAC,0BAAAA;;;AR7Db,IAAA,QAAA,EAAA;AsDGA,IAAA,SAAA,EAAA;ApDHA,IAAA,QAAA,EAAA;AACA,IAAA,QAAA,EAAA;A+BCA,IAAA,QAAA,EAAA;A5BDA,IAAA,QAAA,EAAA;AQDA,IAAA,QAAA,EAAA;AEAA,IAAA,QAAA,EAAA;ADAA,IAAA,QAAA,EAAA;AACA,IAAA,QAAA,EAAA;AUSA,IAAA,QAAA,EAAA;APVA,IAAA,QAAA,EAAA;AdAA,IAAA,QAAA,EAAA;AACA,IAAA,QAAA,EAAA;AeDA,IAAA,QAAA,EAAA;ACAA,IAAA,QAAA,EAAA;AEAA,IAAA,QAAA,EAAA;ADAA,IAAA,QAAA,EAAA;AACA,IAAA,QAAA,EAAA;AEDA,IAAA,QAAA,EAAA;AZAA,IAAAC,UAAAA,EAAAA;AACA,IAAA,QAAA,EAAA;AACA,IAAA,sBAAA,GAAoB,OAAA,CAAA,uBAAA,EAAA,CAAA;AaFpB,IAAA,QAAA,EAAA;AACA,IAAA,QAAA,EAAA;AMYA,IAAA,QAAA,EAAA;AzBbA,IAAA,QAAA,EAAA;AACA,IAAA,QAAA,EAAA;AqBAA,IAAA,QAAA,EAAA;ACDA,IAAA,QAAA,EAAA;ACCA,IAAA,QAAA,EAAA;ACAA,IAAA,QAAA,EAAA;AGEA,IAAA,QAAA,EAAA;ACKA,IAAA,QAAA,EAAA;AuBGA,IAAA,QAAA,EAAA;AjDXA,IAAA,QAAA,EAAA;ACAA,IAAA,QAAA,EAAA;AACA,IAAA,QAAA,EAAA;A8CMA,IAAAvB,SAAAA,EAAAA;AlBPA,IAAA,QAAA,EAAA;AEAA,IAAA,QAAA,EAAA;ACAA,IAAA,QAAA,EAAA;AEAA,IAAA,QAAA,EAAA;AACA,IAAAA,SAAAA,EAAAA;ADDA,IAAA,QAAA,EAAA;AACA,IAAA,QAAA,EAAA;AKDA,IAAA,QAAA,EAAA;AACA,IAAA,QAAA,EAAA;AACA,IAAAA,SAAAA,EAAAA;AFFA,IAAA,QAAA,EAAA;ACAA,IAAA,QAAA,EAAA;AACA,IAAA,QAAA,EAAA;AEDA,IAAA,QAAA,EAAA;ACAA,IAAA,QAAA,EAAA;AACA,IAAA,QAAA,EAAA;AACA,IAAAA,SAAAA,EAAAA;ACFA,IAAA,QAAA,EAAA;ACAA,IAAA,QAAA,EAAA;AACA,IAAA,QAAA,EAAA;AACA,IAAAA,SAAAA,EAAAA;ACFA,IAAA,QAAA,EAAA;AEAA,IAAA,QAAA,EAAA;AAKA,IAAAA,SAAAA,EAAAA;A3CLA,IAAA,QAAA,EAAA;AACA,IAAA,QAAA,EAAA;;;;;;;;;;;;;;;;ARDA,IAAA,qBAAA,EAAA;AAAA,IAAAwB,UAAA,kBAAA,EAAA;AAAA,MAAA,YAAA,EAAA,MAAA,YAAA;AAAA,MAAA,mBAAA,EAAA,MAAA,mBAAA;AAAA,MAAA,cAAA,EAAA,MAAA,cAAA;AAAA,MAAA,oBAAA,EAAA,MAAA,oBAAA;AAAA,MAAA,oBAAA,EAAA,MAAA,oBAAA;AAAA,MAAA,mBAAA,EAAA,MAAA,mBAAA;AAAA,MAAA,yBAAA,EAAA,MAAA,yBAAA;AAAA,MAAA,oBAAA,EAAA,MAAA,oBAAA;AAAA,MAAA,oBAAA,EAAA,MAAA,oBAAA;AAAA,MAAA,oBAAA,EAAA,MAAA,oBAAA;AAAA,MAAA,kBAAA,EAAA,MAAA,kBAAA;AAAA,MAAA,mBAAA,EAAA,MAAA,mBAAA;AAAA,MAAA,mBAAA,EAAA,MAAA,mBAAA;AAAA,MAAA,iBAAA,EAAA,MAAA,iBAAA;AAAA,MAAA,kBAAA,EAAA,MAAA,kBAAA;AAAA,MAAA,cAAA,EAAA,MAAA,cAAA;AAAA,MAAA,YAAA,EAAA,MAAA,YAAA;AAAA,MAAA,mBAAA,EAAA,MAAA;KAAA,CAAA;ADAA,IAAI,QAAA,GAAW,IAAA;AAOC,IAAApI,OAAAA,CAAA,kBAAA,kBAAA,CAAA;AASA,IAAAA,OAAAA,CAAA,mBAAA,mBAAA,CAAA;AAOA,IAAAA,OAAAA,CAAA,qBAAA,qBAAA,CAAA;ACnBT,IAAM,kBAAA,GAAqB,GAAE,MAAA,EAAO,CAAE,sBAAsB,GAAG,CAAA,CAAE,qBAAqB,mBAAmB,CAAA;AAEzG,IAAM,mBAAA,GAAsB,GAAE,MAAA,EAAO,CAAE,sBAAsB,IAAK,CAAA,CAAE,qBAAqB,mBAAmB,CAAA;AAE5G,IAAM,oBAAA,GAAuB,EAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,EAAS;AAElD,IAAM,mBAAA,GAAsB,GACjC,MAAA,CAAO;MACP,IAAA,EAAM,kBAAA;MACN,KAAA,EAAO,mBAAA;MACP,MAAA,EAAQ;KACR,CAAA,CACA,qBAAqB,mBAAmB,CAAA;AAEnC,IAAM,yBAAA,GAA4B,mBAAA,CAAoB,KAAA,EAAM,CAAE,qBAAqB,mBAAmB,CAAA;AAEtG,IAAM,oBAAA,GAAuB,GAAE,MAAA,EAAO,CAAE,gBAAgB,EAAE,CAAA,CAAE,qBAAqB,mBAAmB,CAAA;AAE3F,IAAAA,OAAAA,CAAA,qBAAA,qBAAA,CAAA;AAIT,IAAM,mBAAA,GAAsB,mBACjC,wBAAA,CAAyB,CAAC,EAC1B,QAAA,EAAS,CACT,qBAAqB,mBAAmB,CAAA;AAEnC,IAAM,iBAAA,GAAoB,EAAA,CAC/B,MAAA,EAAO,CACP,GAAA,CAAI;MACJ,gBAAA,EAAkB,CAAC,OAAA,EAAS,QAAA,EAAU,aAAa;AACpD,KAAC,CAAA,CACA,OAAA,EAAQ,CACR,oBAAA,CAAqB,mBAAmB,CAAA;AAEnC,IAAM,YAAA,GAAe,EAAA,CAC1B,MAAA,EAAO,CACP,GAAA,CAAI;MACJ,gBAAA,EAAkB,CAAC,SAAS,QAAQ;AACrC,KAAC,CAAA,CACA,OAAA,EAAQ,CACR,oBAAA,CAAqB,mBAAmB,CAAA;AAEnC,IAAM,oBAAA,GAAuB,GAClC,MAAA,CAAO;MACP,IAAA,EAAM,mBAAA;MACN,OAAA,EAAS,iBAAA;MACT,GAAA,EAAK;KACL,CAAA,CACA,qBAAqB,mBAAmB,CAAA;AAEnC,IAAM,YAAA,GAAe,EAAA,CAC1B,MAAA,EAAO,CACP,GAAA,EAAI,CACJ,kBAAA,CAAmB,CAAC,CAAA,CACpB,eAAA,CAAgB,GAAG,CAAA,CACnB,qBAAqB,mBAAmB,CAAA;AACnC,IAAM,cAAA,GAAiB,EAAA,CAC5B,MAAA,EAAO,CACP,GAAA,GACA,kBAAA,CAAmB,CAAC,CAAA,CACpB,eAAA,CAAgB,QAAQ,CAAA,CACxB,GAAG,EAAA,CAAE,KAAA,CAAM,CAAC,YAAA,EAAc,YAAA,EAAc,YAAY,CAAC,CAAC,CAAA,CACtD,QAAA,EAAS,CACT,oBAAA,CAAqB,mBAAmB,CAAA;AAEnC,IAAM,oBAAA,GAAuB,EAAA,CAClC,MAAA,EAAO,CACP,wBAAA,CAAyB,CAAC,CAAA,CAC1B,qBAAA,CAAsB,IAAK,CAAA,CAC3B,QAAA,EAAS,CACT,qBAAqB,mBAAmB,CAAA;AAEnC,IAAM,mBAAA,GAAsB,EAAA,CACjC,MAAA,EAAO,CACP,wBAAA,CAAyB,CAAC,CAAA,CAC1B,qBAAA,CAAsB,IAAK,CAAA,CAC3B,QAAA,EAAS,CACT,qBAAqB,mBAAmB,CAAA;AAEnC,IAAM,oBAAA,GAAuB,GAClC,MAAA,CAAO;MACP,IAAA,EAAM,mBAAA;MACN,OAAA,EAAS;KACT,CAAA,CACA,qBAAqB,mBAAmB,CAAA;AAEnC,IAAM,kBAAA,GAAqB,EAAA,CAAE,KAAA,CAAM,CAAC,GAAE,MAAA,EAAO,EAAG,EAAA,CAAE,IAAA,EAAM,CAAC,CAAA,CAAE,QAAA,EAAS,CAAE,qBAAqB,mBAAmB,CAAA;AAE9G,IAAM,cAAA,GAAiB,mBAC5B,wBAAA,CAAyB,CAAC,EAC1B,QAAA,EAAS,CACT,qBAAqB,mBAAmB,CAAA;AC1F1B,IAAAA,OAAAA,CAAA,gBAAA,gBAAA,CAAA;AuD+DT,KAAA,MAAmB;MArE1B;AAqE0B,QAAAA,OAAAA,CAAA,MAAA,cAAA,CAAA;AAAA;;;;AAIT,MAAA,IAAA;;;;;;MAOT,WAAA,CAAY,IAAA,GAAiB,EAAC,EAAG;AACvC,QAAA,IAAA,CAAK,IAAA,GAAO,EAAE,GAAG,IAAA,EAAK;AACtB,QAAA,IAAI,IAAA,CAAK,SAAA,EAAW,IAAA,CAAK,IAAA,CAAK,SAAA,GAAY,IAAI,IAAA,CAAK,IAAA,CAAK,SAAS,CAAA,CAAE,WAAA,EAAY;AAChF,MAAA;;;;;;;;;;;;;;;;;;;;;;;;;AA0BO,MAAA,SAAA,CAAA,GAAa,MAAA,EAA0C;AAC7D,QAAA,MAAM,gBAAA,GAAmB,eAAe,MAAM,CAAA;AAE9C,QAAA,mBAAA,CAAoB,gBAAA,CAAiB,MAAA,EAAQ,IAAA,CAAK,IAAA,CAAK,MAAM,CAAA;AAG7D,QAAA,yBAAA,CAA0B,MAAM,gBAAgB,CAAA;AAEhD,QAAA,IAAI,IAAA,CAAK,KAAK,MAAA,EAAQ,IAAA,CAAK,KAAK,MAAA,CAAO,IAAA,CAAK,GAAG,gBAAgB,CAAA;AAC1D,aAAA,IAAA,CAAK,KAAK,MAAA,GAAS,gBAAA;AACxB,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA+BO,YAAA,CAAa,KAAA,EAAe,gBAAwB,MAAA,EAA+B;AAEzF,QAAA,mBAAA,CAAoB,MAAA,CAAO,MAAA,GAAS,WAAA,EAAa,IAAA,CAAK,KAAK,MAAM,CAAA;AAGjE,QAAA,yBAAA,CAA0B,MAAM,MAAM,CAAA;AACtC,QAAA,IAAI,IAAA,CAAK,IAAA,CAAK,MAAA,EAAQ,IAAA,CAAK,IAAA,CAAK,OAAO,MAAA,CAAO,KAAA,EAAO,WAAA,EAAa,GAAG,MAAM,CAAA;AACtE,aAAA,IAAA,CAAK,KAAK,MAAA,GAAS,MAAA;AACxB,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;;;;;;AAYO,MAAA,SAAA,CAAA,GAAa,MAAA,EAA0C;AAC7D,QAAA,IAAA,CAAK,YAAA,CAAa,CAAA,EAAG,IAAA,CAAK,IAAA,CAAK,MAAA,EAAQ,UAAU,CAAA,EAAG,GAAG,cAAA,CAAe,MAAM,CAAC,CAAA;AAC7E,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;AAQO,MAAA,SAAA,CAAU7G,QAAAA,EAA0C;AAC1D,QAAA,IAAIA,aAAY,IAAA,EAAM;AACrB,UAAA,IAAA,CAAK,KAAK,MAAA,GAAS,MAAA;AACnB,UAAA,OAAO,IAAA;AACR,QAAA;AAGA,QAAA,oBAAA,CAAqB,MAAMA,QAAO,CAAA;AAElC,QAAA,IAAA,CAAK,IAAA,CAAK,MAAA,GAAS,EAAE,IAAA,EAAMA,QAAAA,CAAQ,IAAA,EAAM,GAAA,EAAKA,QAAAA,CAAQ,GAAA,EAAK,QAAA,EAAUA,QAAAA,CAAQ,OAAA,EAAQ;AACrF,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;AAOO,MAAA,QAAA,CAAS,KAAA,EAAuC;AAEtD,QAAA,cAAA,CAAe,MAAM,KAAK,CAAA;AAE1B,QAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACzB,UAAA,MAAM,CAAC,GAAA,EAAK,KAAA,EAAO,IAAI,CAAA,GAAI,KAAA;AAC3B,UAAA,IAAA,CAAK,IAAA,CAAK,KAAA,GAAA,CAAS,GAAA,IAAO,EAAA,KAAO,SAAS,CAAA,CAAA,GAAK,IAAA;AAC/C,UAAA,OAAO,IAAA;AACR,QAAA;AAEA,QAAA,IAAA,CAAK,IAAA,CAAK,QAAQ,KAAA,IAAS,MAAA;AAC3B,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;AAOO,MAAA,cAAA,CAAe,WAAA,EAAkC;AAEvD,QAAA,oBAAA,CAAqB,MAAM,WAAW,CAAA;AAEtC,QAAA,IAAA,CAAK,IAAA,CAAK,cAAc,WAAA,IAAe,MAAA;AACvC,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;AAOO,MAAA,SAAA,CAAUA,QAAAA,EAA0C;AAC1D,QAAA,IAAIA,aAAY,IAAA,EAAM;AACrB,UAAA,IAAA,CAAK,KAAK,MAAA,GAAS,MAAA;AACnB,UAAA,OAAO,IAAA;AACR,QAAA;AAGA,QAAA,oBAAA,CAAqB,MAAMA,QAAO,CAAA;AAElC,QAAA,IAAA,CAAK,IAAA,CAAK,SAAS,EAAE,IAAA,EAAMA,SAAQ,IAAA,EAAM,QAAA,EAAUA,SAAQ,OAAA,EAAQ;AACnE,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;AAOO,MAAA,QAAA,CAAS,GAAA,EAA0B;AAEzC,QAAA,iBAAA,CAAkB,MAAM,GAAG,CAAA;AAE3B,QAAA,IAAA,CAAK,IAAA,CAAK,KAAA,GAAQ,GAAA,GAAM,EAAE,KAAI,GAAI,MAAA;AAClC,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;AAOO,MAAA,YAAA,CAAa,GAAA,EAA0B;AAE7C,QAAA,iBAAA,CAAkB,MAAM,GAAG,CAAA;AAE3B,QAAA,IAAA,CAAK,IAAA,CAAK,SAAA,GAAY,GAAA,GAAM,EAAE,KAAI,GAAI,MAAA;AACtC,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;MAOO,YAAA,CAAa,SAAA,GAAkC,IAAA,CAAK,GAAA,EAAI,EAAS;AAEvE,QAAA,kBAAA,CAAmB,MAAM,SAAS,CAAA;AAElC,QAAA,IAAA,CAAK,IAAA,CAAK,YAAY,SAAA,GAAY,IAAI,KAAK,SAAS,CAAA,CAAE,aAAY,GAAI,MAAA;AACtE,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;AAOO,MAAA,QAAA,CAAS,KAAA,EAA4B;AAE3C,QAAA,cAAA,CAAe,MAAM,KAAK,CAAA;AAE1B,QAAA,IAAA,CAAK,IAAA,CAAK,QAAQ,KAAA,IAAS,MAAA;AAC3B,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;AAOO,MAAA,MAAA,CAAO,GAAA,EAA0B;AAEvC,QAAA,YAAA,CAAa,MAAM,GAAG,CAAA;AAEtB,QAAA,IAAA,CAAK,IAAA,CAAK,MAAM,GAAA,IAAO,MAAA;AACvB,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;;;MASO,MAAA,GAAmB;AACzB,QAAA,OAAO,EAAE,GAAG,IAAA,CAAK,IAAA,EAAK;AACvB,MAAA;AACD,MAAA;AtDjUA,IAAAyO,sBAAA,EAAA;AAAA,IAAAQ,UAAAR,mBAAAA,EAAA;AAAA,MAAA,oBAAA,EAAA,MAAA,oBAAA;AAAA,MAAA,oBAAA,EAAA,MAAA,oBAAA;AAAA,MAAA,qBAAA,EAAA,MAAA,qBAAA;AAAA,MAAA,iBAAA,EAAA,MAAA,iBAAA;AAAA,MAAA,gBAAA,EAAA,MAAA,gBAAA;AAAA,MAAA,iBAAA,EAAA,MAAA,iBAAA;AAAA,MAAA,cAAA,EAAA,MAAA,cAAA;AAAA,MAAA,WAAA,EAAA,MAAA,WAAA;AAAA,MAAA,mBAAA,EAAA,MAAA,mBAAA;AAAA,MAAA,8BAAA,EAAA,MAAA,8BAAA;AAAA,MAAA,eAAA,EAAA,MAAA,eAAA;AAAA,MAAA,eAAA,EAAA,MAAA,eAAA;AAAA,MAAA,sBAAA,EAAA,MAAA,sBAAA;AAAA,MAAA,gBAAA,EAAA,MAAA,gBAAA;AAAA,MAAA,oBAAA,EAAA,MAAA,oBAAA;AAAA,MAAA,YAAA,EAAA,MAAA,YAAA;AAAA,MAAA,gCAAA,EAAA,MAAA,gCAAA;AAAA,MAAA,0CAAA,EAAA,MAAA,0CAAA;AAAA,MAAA,oCAAA,EAAA,MAAA;KAAA,CAAA;ASYO,IAAM,gCAAN,MAAkF;;;;;;;;;;;;;;;;;;;;;;;MAuBjF,WAAA,CAAmB,IAAA,GAAqC,EAAC,EAAG;AAAzC,QAAA,IAAA,CAAA,IAAA,GAAA,IAAA;AAA0C,MAAA;MAnCrE;AAYyF,QAAA5H,OAAAA,CAAA,MAAA,+BAAA,CAAA;AAAA;;;;;;AA8BjF,MAAA,QAAA,CAAS,KAAA,EAAe;AAC9B,QAAA,IAAA,CAAK,IAAA,CAAK,KAAA,GAAQ,8BAAA,CAA+B,KAAA,CAAM,KAAK,CAAA;AAC5D,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;AAOO,MAAA,QAAA,CAAS,KAAA,EAAe;AAC9B,QAAA,IAAA,CAAK,IAAA,CAAK,KAAA,GAAQ,8BAAA,CAA+B,KAAA,CAAM,KAAK,CAAA;AAC5D,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;AAOO,MAAA,cAAA,CAAe,WAAA,EAAqB;AAC1C,QAAA,IAAA,CAAK,IAAA,CAAK,WAAA,GAAc,8BAAA,CAA+B,KAAA,CAAM,WAAW,CAAA;AACxE,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;AAOO,MAAA,UAAA,CAAW,YAAY,IAAA,EAAM;AACnC,QAAA,IAAA,CAAK,IAAA,CAAK,OAAA,GAAU,gBAAA,CAAiB,KAAA,CAAM,SAAS,CAAA;AACpD,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;AAOO,MAAA,QAAA,CAAS,KAAA,EAAiC;AAChD,QAAA,IAAA,CAAK,IAAA,CAAK,KAAA,GAAQ,cAAA,CAAe,KAAA,CAAM,KAAK,CAAA;AAC5C,QAAA,OAAO,IAAA;AACR,MAAA;;;;MAKO,MAAA,GAA8B;AACpC,QAAA,0CAAA,CAA2C,IAAA,CAAK,IAAA,CAAK,KAAA,EAAO,IAAA,CAAK,KAAK,KAAK,CAAA;AAE3E,QAAA,OAAO;AACN,UAAA,GAAG,IAAA,CAAK;AACT,SAAA;AACD,MAAA;AACD,KAAA;AT5FO,IAAM,WAAA,GAAc9D,EAAAA,CACzB,MAAA,EAAO,CACP,OAAA,EAAQ,CACR,kBAAA,CAAmB,CAAC,CAAA,CACpB,QAAA,CAAS,UAAa,CAAA,CACtB,qBAAqB,mBAAmB,CAAA;AAEnC,IAAM,iBAAA,GAAoBA,EAAAA,CAC/B,MAAA,EAAO,CACP,wBAAA,CAAyB,CAAC,CAAA,CAC1B,qBAAA,CAAsB,GAAG,CAAA,CACzB,oBAAA,CAAqB,mBAAmB,CAAA;AAEnC,IAAM,cAAA,GAAiBA,GAC5B,MAAA,CAAO;AACP,MAAA,EAAA,EAAIA,GAAE,MAAA,EAAO;AACb,MAAA,IAAA,EAAMA,GAAE,MAAA,EAAO;AACf,MAAA,QAAA,EAAUA,GAAE,OAAA;AACb,KAAC,EACA,OAAA,EAAQ,CACR,MAAA,EAAO,CACP,qBAAqB,mBAAmB,CAAA;AAEnC,IAAM,iBAAA,GAAoBA,GAAE,OAAA,EAAQ;AAEpC,IAAM,oBAAA,GAAuBA,EAAAA,CAClC,MAAA,EAAO,CACP,wBAAA,CAAyB,CAAC,CAAA,CAC1B,qBAAA,CAAsB,EAAE,CAAA,CACxB,oBAAA,CAAqB,mBAAmB,CAAA;AAEnC,IAAM,oBAAA,GAAuBA,EAAAA,CAAE,UAAA,CAAW,WAAW,CAAA;AAErD,IAAM,oBAAA,GAAuBA,GAAE,MAAA,EAAO,CAAE,sBAAsB,GAAG,CAAA,CAAE,qBAAqB,mBAAmB,CAAA;AAC3G,IAAM,eAAA,GAAkBA,EAAAA,CAC7B,MAAA,EAAO,CACP,GAAA,EAAI,CACJ,kBAAA,CAAmB,CAAC,CAAA,CACpB,eAAA,CAAgB,EAAE,CAAA,CAClB,qBAAqB,mBAAmB,CAAA;AAEnC,IAAM,8BAAA,GAAiCA,EAAAA,CAC5C,MAAA,EAAO,CACP,wBAAA,CAAyB,CAAC,CAAA,CAC1B,qBAAA,CAAsB,GAAG,CAAA,CACzB,oBAAA,CAAqB,mBAAmB,CAAA;AAKnC,IAAM,mBAAA,GAAsBA,GACjC,MAAA,CAAO;MACP,KAAA,EAAO,8BAAA;MACP,KAAA,EAAO,8BAAA;AACP,MAAA,WAAA,EAAa,+BAA+B,QAAA,EAAS;AACrD,MAAA,KAAA,EAAO,eAAe,QAAA,EAAS;MAC/B,OAAA,EAASA,EAAAA,CAAE,OAAA,EAAQ,CAAE,QAAA;KACrB,CAAA,CACA,qBAAqB,mBAAmB,CAAA;AAEnC,IAAM,kBAAkBA,EAAAA,CAAE,QAAA,CAAS,6BAA6B,CAAA,CAAE,qBAAqB,mBAAmB,CAAA;AAE1G,IAAM,gBAAA,GAAmB,gBAC9B,KAAA,EAAM,CACN,yBAAyB,CAAC,CAAA,CAC1B,qBAAqB,mBAAmB,CAAA;AACnC,IAAM,sBAAA,GAAyBA,EAAAA,CACpC,MAAA,EAAO,CACP,GAAA,EAAI,CACJ,kBAAA,CAAmB,CAAC,CAAA,CACpB,eAAA,CAAgB,EAAE,CAAA,CAClB,qBAAqB,mBAAmB,CAAA;AAE1B,IAAA8D,OAAAA,CAAA,sCAAA,sCAAA,CAAA;AAKT,IAAM,gBAAA,GAAmB9D,GAAE,OAAA,EAAQ;AAE1B,IAAA8D,OAAAA,CAAA,4CAAA,4CAAA,CAAA;AAKT,IAAM,qBAAA,GAAwB9D,GAAE,UAAA,CAAW,WAAW,EAAE,KAAA,EAAM,CAAE,qBAAqB,mBAAmB,CAAA;AAExG,IAAM,YAAA,GAAeA,EAAAA,CAC1B,MAAA,EAAO,CACP,GAAA,CAAI;MACJ,gBAAA,EAAkB,CAAC,OAAA,EAAS,QAAA,EAAU,UAAU;KAChD,CAAA,CACA,qBAAqB,mBAAmB,CAAA;AAE1B,IAAA8D,OAAAA,CAAA,kCAAA,kCAAA,CAAA;AU1ET,IAAe,mBAAf,MAGP;MA5BA;AA4BA,QAAAA,OAAAA,CAAA,MAAA,kBAAA,CAAA;AAAA;;;;AAIiB,MAAA,IAAA;;;;;;AAgBT,MAAA,WAAA,CAAY,IAAA,EAAyB;AAC3C,QAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AACb,MAAA;;;;;;AAOO,MAAA,KAAA,CAAM,EAAA,EAAY;AACxB,QAAA,IAAA,CAAK,IAAA,CAAK,EAAA,GAAK,WAAA,CAAY,KAAA,CAAM,EAAE,CAAA;AACnC,QAAA,OAAO,IAAA;AACR,MAAA;;;;MAKO,OAAA,GAAU;AAChB,QAAA,IAAA,CAAK,KAAK,EAAA,GAAK,MAAA;AACf,QAAA,OAAO,IAAA;AACR,MAAA;AACD,KAAA;AC7CO,IAAM,aAAA,GAAN,cAA4B,gBAAA,CAAqC;MAxBxE;AAwBwE,QAAAA,OAAAA,CAAA,MAAA,eAAA,CAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BhE,MAAA,WAAA,CAAY,IAAA,EAAoC;AACtD,QAAA,KAAA,CAAM,EAAE,IAAA,EAAM,aAAA,CAAc,MAAA,EAAQ,GAAG,MAAM,CAAA;AAC9C,MAAA;;;;;;AAOO,MAAA,QAAA,CAAS,KAAA,EAAoB;AACnC,QAAA,IAAA,CAAK,IAAA,CAAK,KAAA,GAAQ,oBAAA,CAAqB,KAAA,CAAM,KAAK,CAAA;AAClD,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;;;;AAUO,MAAA,MAAA,CAAO,GAAA,EAAa;AACzB,QAAA,IAAA,CAAK,IAAA,CAAmC,GAAA,GAAM,YAAA,CAAa,KAAA,CAAM,GAAG,CAAA;AACrE,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;;;AASO,MAAA,WAAA,CAAY,QAAA,EAAkB;AACnC,QAAA,IAAA,CAAK,IAAA,CAAwC,SAAA,GAAY,iBAAA,CAAkB,KAAA,CAAM,QAAQ,CAAA;AAC1F,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;;AAQO,MAAA,QAAA,CAAS,KAAA,EAAkB;AAChC,QAAA,IAAA,CAAK,KAAqC,MAAA,GAAS,KAAA;AACpD,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;AAOO,MAAA,QAAA,CAAS,KAAA,EAAiC;AAC/C,QAAA,IAAA,CAAK,IAAA,CAAkE,KAAA,GAAQ,cAAA,CAAe,KAAA,CAAM,KAAK,CAAA;AAC1G,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;AAOO,MAAA,WAAA,CAAY,WAAW,IAAA,EAAM;AACnC,QAAA,IAAA,CAAK,IAAA,CAAK,QAAA,GAAW,iBAAA,CAAkB,KAAA,CAAM,QAAQ,CAAA;AACrD,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;AAOO,MAAA,QAAA,CAAS,KAAA,EAAe;AAC7B,QAAA,IAAA,CAAK,IAAA,CAAkE,KAAA,GAAQ,oBAAA,CAAqB,KAAA,CAAM,KAAK,CAAA;AAChH,QAAA,OAAO,IAAA;AACR,MAAA;;;;MAKO,MAAA,GAA6B;AACnC,QAAA,gCAAA;AACC,UAAA,IAAA,CAAK,IAAA,CAAK,KAAA;AACT,UAAA,IAAA,CAAK,IAAA,CAAkE,KAAA;AACvE,UAAA,IAAA,CAAK,IAAA,CAAkE,KAAA;AACvE,UAAA,IAAA,CAAK,IAAA,CAAwC,SAAA;AAC7C,UAAA,IAAA,CAAK,IAAA,CAAqC,MAAA;AAC1C,UAAA,IAAA,CAAK,IAAA,CAAmC;AAC1C,SAAA;AAEA,QAAA,OAAO;AACN,UAAA,GAAG,IAAA,CAAK;AACT,SAAA;AACD,MAAA;AACD,KAAA;ACtJA,IAAA4H,sBAAA,EAAA;AAAA,IAAAQ,UAAAR,mBAAAA,EAAA;AAAA,MAAA,mBAAA,EAAA,MAAA;KAAA,CAAA;AAIO,IAAM,mBAAA,GAAsB1L,GAAE,MAAA,CAAO;MAC3C,IAAA,EAAMA,EAAAA,CAAE,OAAA,CAAQiI,aAAAA,CAAc,UAAU,CAAA;AACxC,MAAA,EAAA,EAAI,YAAY,QAAA,EAAS;MACzB,SAAA,EAAW,iBAAA;MACX,UAAA,EAAYjI,EAAAA,CAAE,QAAO,CAAE,kBAAA,CAAmB,CAAC,CAAA,CAAE,eAAA,CAAgB,EAAE,CAAA,CAAE,QAAA,EAAS;MAC1E,UAAA,EAAYA,EAAAA,CAAE,QAAO,CAAE,kBAAA,CAAmB,CAAC,CAAA,CAAE,eAAA,CAAgB,EAAE,CAAA,CAAE,QAAA,EAAS;MAC1E,QAAA,EAAUA,EAAAA,CAAE,OAAA,EAAQ,CAAE,QAAA;KACtB,CAAA;ACJM,IAAM,iBAAA,GAAN,cAAgC,gBAAA,CAAyC;MAPhF;AAOgF,QAAA8D,OAAAA,CAAA,MAAA,mBAAA,CAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;MAwBxE,WAAA,CAAY,IAAA,GAAwC,EAAC,EAAG;AAC9D,QAAA,KAAA,CAAM,EAAE,IAAA,EAAMmE,aAAAA,CAAc,UAAA,EAAY,GAAG,MAAM,CAAA;AAClD,MAAA;;;;;;AAOO,MAAA,WAAA,CAAY,QAAA,EAAkB;AACpC,QAAA,IAAA,CAAK,KAAK,SAAA,GAAY,QAAA;AACtB,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;AAOO,MAAA,YAAA,CAAa,SAAA,EAAmB;AACtC,QAAA,IAAA,CAAK,KAAK,UAAA,GAAa,SAAA;AACvB,QAAA,OAAO,IAAA;AACR,MAAA;;;;MAKO,cAAA,GAAiB;AACvB,QAAA,IAAA,CAAK,KAAK,UAAA,GAAa,MAAA;AACvB,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;AAOO,MAAA,YAAA,CAAa,SAAA,EAAmB;AACtC,QAAA,IAAA,CAAK,KAAK,UAAA,GAAa,SAAA;AACvB,QAAA,OAAO,IAAA;AACR,MAAA;;;;MAKO,cAAA,GAAiB;AACvB,QAAA,IAAA,CAAK,KAAK,UAAA,GAAa,MAAA;AACvB,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;AAOO,MAAA,WAAA,CAAY,WAAW,IAAA,EAAM;AACnC,QAAA,IAAA,CAAK,KAAK,QAAA,GAAW,QAAA;AACrB,QAAA,OAAO,IAAA;AACR,MAAA;;;;MAKO,MAAA,GAAiC;AACvC,QAAA,mBAAA,CAAoB,KAAA,CAAM,KAAK,IAAI,CAAA;AACnC,QAAA,OAAO,IAAA,CAAK,IAAA;AACb,MAAA;AACD,KAAA;AZlGA,IAAAyD,sBAAA,EAAA;AAAA,IAAAQ,UAAAR,mBAAAA,EAAA;AAAA,MAAA,cAAA,EAAA,MAAA,cAAA;AAAA,MAAA,kBAAA,EAAA,MAAA,kBAAA;AAAA,MAAA,kBAAA,EAAA,MAAA,kBAAA;AAAA,MAAA,oBAAA,EAAA,MAAAC,qBAAAA;AAAA,MAAA,iBAAA,EAAA,MAAA,iBAAA;AAAA,MAAA,kBAAA,EAAA,MAAA,kBAAA;AAAA,MAAA,uBAAA,EAAA,MAAA,uBAAA;AAAA,MAAA,0BAAA,EAAA,MAAA,0BAAA;AAAA,MAAA,cAAA,EAAA,MAAA;KAAA,CAAA;AAKO,IAAM,0BAA0B3L,EAAAA,CAAE,UAAA,CAAW,cAAc,CAAA,CAAE,qBAAqB,mBAAmB,CAAA;AACrG,IAAM,kBAAA,GAAqBA,EAAAA,CAChC,MAAA,EAAO,CACP,GAAA,EAAI,CACJ,kBAAA,CAAmB,CAAC,CAAA,CACpB,eAAA,CAAgB,GAAK,CAAA,CACrB,qBAAqB,mBAAmB,CAAA;AACnC,IAAM,kBAAA,GAAqBA,EAAAA,CAChC,MAAA,EAAO,CACP,GAAA,EAAI,CACJ,kBAAA,CAAmB,CAAC,CAAA,CACpB,eAAA,CAAgB,GAAK,CAAA,CACrB,qBAAqB,mBAAmB,CAAA;AACnC,IAAM,iBAAA,GAAoBA,EAAAA,CAAE,OAAA,EAAQ,CAAE,qBAAqB,mBAAmB,CAAA;AAC9E,IAAM,cAAA,GAAiBA,GAAE,MAAA,EAAO,CAAE,sBAAsB,GAAK,CAAA,CAAE,qBAAqB,mBAAmB,CAAA;AACvG,IAAM2L,qBAAAA,GAAuB3L,GAAE,MAAA,EAAO,CAAE,sBAAsB,GAAG,CAAA,CAAE,qBAAqB,mBAAmB,CAAA;AAC3G,IAAM,cAAA,GAAiBA,EAAAA,CAC5B,MAAA,EAAO,CACP,wBAAA,CAAyB,CAAC,CAAA,CAC1B,qBAAA,CAAsB,EAAE,CAAA,CACxB,oBAAA,CAAqB,mBAAmB,CAAA;AAEnC,IAAM,kBAAA,GAAqBA,GAChC,MAAA,CAAO;MACP,IAAA,EAAMA,EAAAA,CAAE,OAAA,CAAQiI,aAAAA,CAAc,SAAS,CAAA;MACvC,SAAA,EAAW,iBAAA;MACX,KAAA,EAAO,uBAAA;AACP,MAAA,EAAA,EAAI,YAAY,QAAA,EAAS;AACzB,MAAA,UAAA,EAAY,mBAAmB,QAAA,EAAS;AACxC,MAAA,UAAA,EAAY,mBAAmB,QAAA,EAAS;AACxC,MAAA,WAAA,EAAa0D,sBAAqB,QAAA,EAAS;AAC3C,MAAA,KAAA,EAAO,eAAe,QAAA,EAAS;AAC/B,MAAA,QAAA,EAAU,kBAAkB,QAAA;KAC5B,CAAA,CACA,qBAAqB,mBAAmB,CAAA;AAE1B,IAAA7H,OAAAA,CAAA,4BAAA,4BAAA,CAAA;Aa/BT,IAAe,qBAAA,GAAf,cAEG,gBAAA,CAAiC;MAZ3C;AAY2C,QAAAA,OAAAA,CAAA,MAAA,uBAAA,CAAA;AAAA;;;;;;AAMnC,MAAA,cAAA,CAAe,WAAA,EAAqB;AAC1C,QAAA,IAAA,CAAK,IAAA,CAAK,WAAA,GAAc,oBAAA,CAAqB,KAAA,CAAM,WAAW,CAAA;AAC9D,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;AAOO,MAAA,YAAA,CAAa,SAAA,EAAmB;AACtC,QAAA,IAAA,CAAK,IAAA,CAAK,UAAA,GAAa,eAAA,CAAgB,KAAA,CAAM,SAAS,CAAA;AACtD,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;AAOO,MAAA,YAAA,CAAa,SAAA,EAAmB;AACtC,QAAA,IAAA,CAAK,IAAA,CAAK,UAAA,GAAa,eAAA,CAAgB,KAAA,CAAM,SAAS,CAAA;AACtD,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;AAOO,MAAA,WAAA,CAAY,QAAA,EAAkB;AACpC,QAAA,IAAA,CAAK,IAAA,CAAK,SAAA,GAAY,iBAAA,CAAkB,KAAA,CAAM,QAAQ,CAAA;AACtD,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;AAOO,MAAA,WAAA,CAAY,WAAW,IAAA,EAAM;AACnC,QAAA,IAAA,CAAK,IAAA,CAAK,QAAA,GAAW,iBAAA,CAAkB,KAAA,CAAM,QAAQ,CAAA;AACrD,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;;AAQO,MAAA,WAAA,CAAY,WAAW,IAAA,EAAM;AACnC,QAAA,IAAA,CAAK,IAAA,CAAK,QAAA,GAAW,iBAAA,CAAkB,KAAA,CAAM,QAAQ,CAAA;AACrD,QAAA,OAAO,IAAA;AACR,MAAA;;;;MAKO,MAAA,GAAyB;AAC/B,QAAA,iBAAA,CAAkB,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,SAAS,CAAA;AAC3C,QAAA,OAAO;AACN,UAAA,GAAG,IAAA,CAAK;AACT,SAAA;AACD,MAAA;AACD,KAAA;ACrEO,IAAM,wBAAA,GAAN,cAAuC,qBAAA,CAAiD;MAd/F;AAc+F,QAAAA,OAAAA,CAAA,MAAA,0BAAA,CAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;AAwBvF,MAAA,WAAA,CAAY,IAAA,EAA2C;AAC7D,QAAA,KAAA,CAAM,EAAE,GAAG,IAAA,EAAM,IAAA,EAAMmE,aAAAA,CAAc,eAAe,CAAA;AACrD,MAAA;;;;;;AAOO,MAAA,eAAA,CAAA,GAAmB,KAAA,EAAiC;AAC1D,QAAA,MAAM,eAAA,GAAkB,eAAe,KAAK,CAAA;AAC5C,QAAA,IAAA,CAAK,IAAA,CAAK,kBAAkB,EAAC;AAC7B,QAAA,IAAA,CAAK,KAAK,aAAA,CAAc,IAAA,CAAK,GAAG,qBAAA,CAAsB,KAAA,CAAM,eAAe,CAAC,CAAA;AAC5E,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;AAOO,MAAA,eAAA,CAAA,GAAmB,KAAA,EAAiC;AAC1D,QAAA,MAAM,eAAA,GAAkB,eAAe,KAAK,CAAA;AAC5C,QAAA,IAAA,CAAK,IAAA,CAAK,kBAAkB,EAAC;AAC7B,QAAA,IAAA,CAAK,IAAA,CAAK,aAAA,CAAc,MAAA,CAAO,CAAA,EAAG,IAAA,CAAK,IAAA,CAAK,aAAA,CAAc,MAAA,EAAQ,GAAG,qBAAA,CAAsB,KAAA,CAAM,eAAe,CAAC,CAAA;AACjH,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;AAOO,MAAA,kBAAA,CAAA,GAAsB,QAAA,EAAkC;AAC9D,QAAA,MAAM,gBAAA,GAAmB,eAAe,QAAQ,CAAA;AAChD,QAAA,sBAAA,CAAuB,OAAO,IAAA,CAAK,IAAA,CAAK,gBAAgB,MAAA,IAAU,CAAA,IAAK,iBAAiB,MAAM,CAAA;AAC9F,QAAA,IAAA,CAAK,IAAA,CAAK,mBAAmB,EAAC;AAE9B,QAAA,IAAA,CAAK,KAAK,cAAA,CAAe,IAAA;UACxB,GAAG,gBAAA,CAAiB,GAAA,CAAI,CAAC,EAAA,MAAQ;AAChC,YAAA,EAAA;AACA,YAAA,IAAA,EAAM,0BAAA,CAA2B;WAClC,CAAE;AACH,SAAA;AAEA,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;AAOO,MAAA,kBAAA,CAAA,GAAsB,QAAA,EAAkC;AAC9D,QAAA,MAAM,gBAAA,GAAmB,eAAe,QAAQ,CAAA;AAChD,QAAA,sBAAA,CAAuB,KAAA,CAAM,iBAAiB,MAAM,CAAA;AAEpD,QAAA,IAAA,CAAK,IAAA,CAAK,cAAA,GAAiB,gBAAA,CAAiB,GAAA,CAAI,CAAC,EAAA,MAAQ;AACxD,UAAA,EAAA;AACA,UAAA,IAAA,EAAM,0BAAA,CAA2B;SAClC,CAAE,CAAA;AAEF,QAAA,OAAO,IAAA;AACR,MAAA;;;;MAKgB,MAAA,GAAoC;AACnD,QAAA,iBAAA,CAAkB,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,SAAS,CAAA;AAE3C,QAAA,OAAO;AACN,UAAA,GAAG,IAAA,CAAK;AACT,SAAA;AACD,MAAA;AACD,KAAA;ACnGO,IAAM,4BAAA,GAAN,cAA2C,qBAAA,CAAqD;MAdvG;AAcuG,QAAAnE,OAAAA,CAAA,MAAA,8BAAA,CAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;AAuB/F,MAAA,WAAA,CAAY,IAAA,EAA+C;AACjE,QAAA,KAAA,CAAM,EAAE,GAAG,IAAA,EAAM,IAAA,EAAMmE,aAAAA,CAAc,mBAAmB,CAAA;AACzD,MAAA;;;;;;AAOO,MAAA,eAAA,CAAA,GAAmB,KAAA,EAA+B;AACxD,QAAA,MAAM,gBAAA,GAAmB,eAAe,KAAK,CAAA;AAC7C,QAAA,sBAAA,CAAuB,OAAO,IAAA,CAAK,IAAA,CAAK,gBAAgB,MAAA,IAAU,CAAA,IAAK,iBAAiB,MAAM,CAAA;AAC9F,QAAA,IAAA,CAAK,IAAA,CAAK,mBAAmB,EAAC;AAE9B,QAAA,IAAA,CAAK,KAAK,cAAA,CAAe,IAAA;UACxB,GAAG,gBAAA,CAAiB,GAAA,CAAI,CAAC,EAAA,MAAQ;AAChC,YAAA,EAAA;AACA,YAAA,IAAA,EAAMG,0BAAAA,CAA2B;WAClC,CAAE;AACH,SAAA;AAEA,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;AAOO,MAAA,eAAA,CAAA,GAAmB,KAAA,EAA+B;AACxD,QAAA,MAAM,gBAAA,GAAmB,eAAe,KAAK,CAAA;AAC7C,QAAA,sBAAA,CAAuB,OAAO,IAAA,CAAK,IAAA,CAAK,gBAAgB,MAAA,IAAU,CAAA,IAAK,iBAAiB,MAAM,CAAA;AAC9F,QAAA,IAAA,CAAK,IAAA,CAAK,mBAAmB,EAAC;AAE9B,QAAA,IAAA,CAAK,KAAK,cAAA,CAAe,IAAA;UACxB,GAAG,gBAAA,CAAiB,GAAA,CAAI,CAAC,EAAA,MAAQ;AAChC,YAAA,EAAA;AACA,YAAA,IAAA,EAAMA,0BAAAA,CAA2B;WAClC,CAAE;AACH,SAAA;AAEA,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;AAOO,MAAA,gBAAA,CAAA,GACH,MAAA,EAIF;AACD,QAAA,MAAM,gBAAA,GAAmB,eAAe,MAAM,CAAA;AAC9C,QAAA,sBAAA,CAAuB,OAAO,IAAA,CAAK,IAAA,CAAK,gBAAgB,MAAA,IAAU,CAAA,IAAK,iBAAiB,MAAM,CAAA;AAC9F,QAAA,IAAA,CAAK,IAAA,CAAK,mBAAmB,EAAC;AAC9B,QAAA,IAAA,CAAK,IAAA,CAAK,cAAA,CAAe,IAAA,CAAK,GAAG,gBAAgB,CAAA;AACjD,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;AAOO,MAAA,gBAAA,CAAA,GACH,MAAA,EAIF;AACD,QAAA,MAAM,gBAAA,GAAmB,eAAe,MAAM,CAAA;AAC9C,QAAA,sBAAA,CAAuB,KAAA,CAAM,iBAAiB,MAAM,CAAA;AACpD,QAAA,IAAA,CAAK,KAAK,cAAA,GAAiB,gBAAA;AAC3B,QAAA,OAAO,IAAA;AACR,MAAA;AACD,KAAA;ACtGO,IAAM,qBAAA,GAAN,cAAoC,qBAAA,CAA8C;MAbzF;AAayF,QAAAtE,OAAAA,CAAA,MAAA,uBAAA,CAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;AAuBjF,MAAA,WAAA,CAAY,IAAA,EAAwC;AAC1D,QAAA,KAAA,CAAM,EAAE,GAAG,IAAA,EAAM,IAAA,EAAMmE,aAAAA,CAAc,YAAY,CAAA;AAClD,MAAA;;;;;;AAOO,MAAA,eAAA,CAAA,GAAmB,KAAA,EAA+B;AACxD,QAAA,MAAM,gBAAA,GAAmB,eAAe,KAAK,CAAA;AAC7C,QAAA,sBAAA,CAAuB,OAAO,IAAA,CAAK,IAAA,CAAK,gBAAgB,MAAA,IAAU,CAAA,IAAK,iBAAiB,MAAM,CAAA;AAC9F,QAAA,IAAA,CAAK,IAAA,CAAK,mBAAmB,EAAC;AAE9B,QAAA,IAAA,CAAK,KAAK,cAAA,CAAe,IAAA;UACxB,GAAG,gBAAA,CAAiB,GAAA,CAAI,CAAC,EAAA,MAAQ;AAChC,YAAA,EAAA;AACA,YAAA,IAAA,EAAMG,0BAAAA,CAA2B;WAClC,CAAE;AACH,SAAA;AAEA,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;AAOO,MAAA,eAAA,CAAA,GAAmB,KAAA,EAA+B;AACxD,QAAA,MAAM,gBAAA,GAAmB,eAAe,KAAK,CAAA;AAC7C,QAAA,sBAAA,CAAuB,KAAA,CAAM,iBAAiB,MAAM,CAAA;AAEpD,QAAA,IAAA,CAAK,IAAA,CAAK,cAAA,GAAiB,gBAAA,CAAiB,GAAA,CAAI,CAAC,EAAA,MAAQ;AACxD,UAAA,EAAA;AACA,UAAA,IAAA,EAAMA,0BAAAA,CAA2B;SAClC,CAAE,CAAA;AAEF,QAAA,OAAO,IAAA;AACR,MAAA;AACD,KAAA;AC5EA,IAAAsD,sBAAA,EAAA;AAAA,IAAAQ,UAAAR,mBAAAA,EAAA;AAAA,MAAA,0BAAA,EAAA,MAAA,0BAAA;AAAA,MAAA,8BAAA,EAAA,MAAA,8BAAA;AAAA,MAAA,uBAAA,EAAA,MAAA,uBAAA;AAAA,MAAA,+BAAA,EAAA,MAAA,+BAAA;AAAA,MAAA,yBAAA,EAAA,MAAA,yBAAA;AAAA,MAAA,uBAAA,EAAA,MAAA;KAAA,CAAA;AAKA,IAAM,uBAAA,GAA0B1L,GAAE,MAAA,CAAO;AACxC,MAAA,EAAA,EAAI,YAAY,QAAA,EAAS;AACzB,MAAA,WAAA,EAAaA,GAAE,MAAA,EAAO,CAAE,qBAAA,CAAsB,GAAG,EAAE,QAAA,EAAS;MAC5D,UAAA,EAAYA,EAAAA,CAAE,QAAO,CAAE,kBAAA,CAAmB,CAAC,CAAA,CAAE,eAAA,CAAgB,EAAE,CAAA,CAAE,QAAA,EAAS;MAC1E,UAAA,EAAYA,EAAAA,CAAE,QAAO,CAAE,kBAAA,CAAmB,CAAC,CAAA,CAAE,eAAA,CAAgB,EAAE,CAAA,CAAE,QAAA,EAAS;MAC1E,SAAA,EAAW,iBAAA;MACX,QAAA,EAAUA,EAAAA,CAAE,OAAA,EAAQ,CAAE,QAAA;KACtB,CAAA;AAEM,IAAM,0BAAA,GAA6B,wBACxC,MAAA,CAAO;MACP,IAAA,EAAMA,EAAAA,CAAE,OAAA,CAAQiI,aAAAA,CAAc,aAAa,CAAA;AAC3C,MAAA,aAAA,EAAejI,GAAE,UAAA,CAAW+E,WAAW,CAAA,CAAE,KAAA,GAAQ,QAAA,EAAS;MAC1D,cAAA,EAAgB/E,EAAAA,CACd,OAAO,EAAE,EAAA,EAAIA,GAAE,MAAA,EAAO,EAAG,MAAMA,EAAAA,CAAE,OAAA,CAAQoI,2BAA2B,OAAO,CAAA,EAAG,CAAA,CAC9E,KAAA,GACA,qBAAA,CAAsB,EAAE,EACxB,QAAA;KACF,CAAA,CACA,qBAAqB,mBAAmB,CAAA;AAEnC,IAAM,8BAAA,GAAiC,wBAC5C,MAAA,CAAO;MACP,IAAA,EAAMpI,EAAAA,CAAE,OAAA,CAAQiI,aAAAA,CAAc,iBAAiB,CAAA;AAC/C,MAAA,cAAA,EAAgBjI,GACd,MAAA,CAAO;AACP,QAAA,EAAA,EAAIA,GAAE,MAAA,EAAO;AACb,QAAA,IAAA,EAAMA,EAAAA,CAAE,KAAA,CAAM,CAACA,EAAAA,CAAE,OAAA,CAAQoI,0BAAAA,CAA2B,IAAI,CAAA,EAAGpI,EAAAA,CAAE,OAAA,CAAQoI,0BAAAA,CAA2B,IAAI,CAAC,CAAC;AACvG,OAAC,EACA,KAAA,EAAM,CACN,qBAAA,CAAsB,EAAE,EACxB,QAAA;KACF,CAAA,CACA,qBAAqB,mBAAmB,CAAA;AAEnC,IAAM,uBAAA,GAA0B,wBACrC,MAAA,CAAO;MACP,IAAA,EAAMpI,EAAAA,CAAE,OAAA,CAAQiI,aAAAA,CAAc,UAAU,CAAA;MACxC,cAAA,EAAgBjI,EAAAA,CACd,OAAO,EAAE,EAAA,EAAIA,GAAE,MAAA,EAAO,EAAG,MAAMA,EAAAA,CAAE,OAAA,CAAQoI,2BAA2B,IAAI,CAAA,EAAG,CAAA,CAC3E,KAAA,GACA,qBAAA,CAAsB,EAAE,EACxB,QAAA;KACF,CAAA,CACA,qBAAqB,mBAAmB,CAAA;AAEnC,IAAM,uBAAA,GAA0B,wBACrC,MAAA,CAAO;MACP,IAAA,EAAMpI,EAAAA,CAAE,OAAA,CAAQiI,aAAAA,CAAc,UAAU,CAAA;MACxC,cAAA,EAAgBjI,EAAAA,CACd,OAAO,EAAE,EAAA,EAAIA,GAAE,MAAA,EAAO,EAAG,MAAMA,EAAAA,CAAE,OAAA,CAAQoI,2BAA2B,IAAI,CAAA,EAAG,CAAA,CAC3E,KAAA,GACA,qBAAA,CAAsB,EAAE,EACxB,QAAA;KACF,CAAA,CACA,qBAAqB,mBAAmB,CAAA;AAEnC,IAAM,+BAAA,GAAkCpI,GAC7C,MAAA,CAAO;AACP,MAAA,KAAA,EAAOA,GAAE,MAAA,EAAO,CAAE,yBAAyB,CAAC,CAAA,CAAE,sBAAsB,GAAG,CAAA;AACvE,MAAA,KAAA,EAAOA,GAAE,MAAA,EAAO,CAAE,yBAAyB,CAAC,CAAA,CAAE,sBAAsB,GAAG,CAAA;MACvE,WAAA,EAAaA,EAAAA,CAAE,QAAO,CAAE,wBAAA,CAAyB,CAAC,CAAA,CAAE,qBAAA,CAAsB,GAAG,CAAA,CAAE,QAAA,EAAS;AACxF,MAAA,KAAA,EAAO,eAAe,QAAA,EAAS;MAC/B,OAAA,EAASA,EAAAA,CAAE,OAAA,EAAQ,CAAE,QAAA;KACrB,CAAA,CACA,qBAAqB,mBAAmB,CAAA;AAEnC,IAAM,yBAAA,GAA4B,wBACvC,MAAA,CAAO;MACP,IAAA,EAAMA,EAAAA,CAAE,OAAA,CAAQiI,aAAAA,CAAc,YAAY,CAAA;AAC1C,MAAA,OAAA,EAAS,gCAAgC,KAAA,EAAM,CAAE,yBAAyB,CAAC,CAAA,CAAE,sBAAsB,EAAE;KACrG,CAAA,CACA,OAAA,CAAQ,CAAC,KAAA,KAAU;AACnB,MAAA,IAAI,MAAM,UAAA,KAAe,MAAA,IAAa,MAAM,OAAA,CAAQ,MAAA,GAAS,MAAM,UAAA,EAAY;AAC9E,QAAA,OAAO,MAAA,CAAO,GAAA,CAAI,IAAI,UAAA,CAAW,mEAAmE,CAAC,CAAA;AACtG,MAAA;AAEA,MAAA,IAAI,KAAA,CAAM,eAAe,MAAA,IAAa,KAAA,CAAM,eAAe,MAAA,IAAa,KAAA,CAAM,UAAA,GAAa,KAAA,CAAM,UAAA,EAAY;AAC5G,QAAA,OAAO,MAAA,CAAO,GAAA;AACb,UAAA,IAAI,WAAW,CAAA,4FAAA,CAA8F;AAC9G,SAAA;AACD,MAAA;AAEA,MAAA,OAAO,MAAA,CAAO,GAAG,KAAK,CAAA;IACvB,CAAC,CAAA,CACA,qBAAqB,mBAAmB,CAAA;AC/EnC,IAAM,uBAAA,GAAN,cAAsC,qBAAA,CAAgD;MAX7F;AAW6F,QAAAnE,OAAAA,CAAA,MAAA,yBAAA,CAAA;AAAA;;;;AAI5E,MAAA,OAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCT,MAAA,WAAA,CAAY,IAAA,EAA0C;AAC5D,QAAA,MAAM,EAAE,OAAA,EAAA7G,QAAAA,EAAS,GAAG,QAAA,EAAS,GAAI,QAAQ,EAAC;AAC1C,QAAA,KAAA,CAAM,EAAE,GAAG,QAAA,EAAU,IAAA,EAAMgL,aAAAA,CAAc,cAAc,CAAA;AACvD,QAAA,IAAA,CAAK,OAAA,GAAUhL,QAAAA,EAAS,GAAA,CAAI,CAAC,MAAA,KAAgC,IAAI,6BAAA,CAA8B,MAAM,CAAC,CAAA,IAAK,EAAC;AAC7G,MAAA;;;;;;AAOO,MAAA,UAAA,CAAA,GAAcA,QAAAA,EAA2E;AAC/F,QAAA,MAAM,iBAAA,GAAoB,eAAeA,QAAO,CAAA;AAChD,QAAA,sBAAA,CAAuB,KAAA,CAAM,IAAA,CAAK,OAAA,CAAQ,MAAA,GAAS,kBAAkB,MAAM,CAAA;AAC3E,QAAA,IAAA,CAAK,OAAA,CAAQ,IAAA;AACZ,UAAA,GAAG,iBAAA,CAAkB,GAAA;YAAI,CAAC,gBAAA,KACzB,4BAA4B,6BAAA,GACzB,gBAAA,GACA,IAAI,6BAAA,CAA8B,+BAAA,CAAgC,KAAA,CAAM,gBAAgB,CAAC;AAC7F;AACD,SAAA;AACA,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;AAOO,MAAA,UAAA,CAAA,GAAcA,QAAAA,EAA2E;AAC/F,QAAA,OAAO,KAAK,aAAA,CAAc,CAAA,EAAG,KAAK,OAAA,CAAQ,MAAA,EAAQ,GAAGA,QAAO,CAAA;AAC7D,MAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA6BO,aAAA,CACN,KAAA,EACA,gBACGA,QAAAA,EACF;AACD,QAAA,MAAM,iBAAA,GAAoB,eAAeA,QAAO,CAAA;AAEhD,QAAA,MAAM,KAAA,GAAQ,CAAC,GAAG,IAAA,CAAK,OAAO,CAAA;AAE9B,QAAA,KAAA,CAAM,MAAA;AACL,UAAA,KAAA;AACA,UAAA,WAAA;AACA,UAAA,GAAG,iBAAA,CAAkB,GAAA;YAAI,CAAC,gBAAA,KACzB,4BAA4B,6BAAA,GACzB,gBAAA,GACA,IAAI,6BAAA,CAA8B,+BAAA,CAAgC,KAAA,CAAM,gBAAgB,CAAC;AAC7F;AACD,SAAA;AAEA,QAAA,sBAAA,CAAuB,KAAA,CAAM,MAAM,MAAM,CAAA;AACzC,QAAA,IAAA,CAAK,QAAQ,MAAA,CAAO,CAAA,EAAG,KAAK,OAAA,CAAQ,MAAA,EAAQ,GAAG,KAAK,CAAA;AACpD,QAAA,OAAO,IAAA;AACR,MAAA;;;;MAKgB,MAAA,GAAmC;AAClD,QAAA,oCAAA,CAAqC,IAAA,CAAK,OAAA,EAAS,IAAA,CAAK,IAAA,CAAK,SAAS,CAAA;AAEtE,QAAA,OAAO;AACN,UAAA,GAAG,IAAA,CAAK,IAAA;AACR,UAAA,OAAA,EAAS,KAAK,OAAA,CAAQ,GAAA,CAAI,CAAC,MAAA,KAAW,MAAA,CAAO,QAAQ;AACtD,SAAA;AACD,MAAA;AACD,KAAA;AClIO,IAAM,qBAAA,GAAN,cAAoC,qBAAA,CAA8C;MAbzF;AAayF,QAAA6G,OAAAA,CAAA,MAAA,uBAAA,CAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;AAuBjF,MAAA,WAAA,CAAY,IAAA,EAAwC;AAC1D,QAAA,KAAA,CAAM,EAAE,GAAG,IAAA,EAAM,IAAA,EAAMmE,aAAAA,CAAc,YAAY,CAAA;AAClD,MAAA;;;;;;AAOO,MAAA,eAAA,CAAA,GAAmB,KAAA,EAA+B;AACxD,QAAA,MAAM,gBAAA,GAAmB,eAAe,KAAK,CAAA;AAC7C,QAAA,sBAAA,CAAuB,OAAO,IAAA,CAAK,IAAA,CAAK,gBAAgB,MAAA,IAAU,CAAA,IAAK,iBAAiB,MAAM,CAAA;AAC9F,QAAA,IAAA,CAAK,IAAA,CAAK,mBAAmB,EAAC;AAE9B,QAAA,IAAA,CAAK,KAAK,cAAA,CAAe,IAAA;UACxB,GAAG,gBAAA,CAAiB,GAAA,CAAI,CAAC,EAAA,MAAQ;AAChC,YAAA,EAAA;AACA,YAAA,IAAA,EAAMG,0BAAAA,CAA2B;WAClC,CAAE;AACH,SAAA;AAEA,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;AAOO,MAAA,eAAA,CAAA,GAAmB,KAAA,EAA+B;AACxD,QAAA,MAAM,gBAAA,GAAmB,eAAe,KAAK,CAAA;AAC7C,QAAA,sBAAA,CAAuB,KAAA,CAAM,iBAAiB,MAAM,CAAA;AAEpD,QAAA,IAAA,CAAK,IAAA,CAAK,cAAA,GAAiB,gBAAA,CAAiB,GAAA,CAAI,CAAC,EAAA,MAAQ;AACxD,UAAA,EAAA;AACA,UAAA,IAAA,EAAMA,0BAAAA,CAA2B;SAClC,CAAE,CAAA;AAEF,QAAA,OAAO,IAAA;AACR,MAAA;AACD,KAAA;AZzDO,IAAM,gBAAA,GAAN,cACE,gBAAA,CAET;MAtBA;AAsBA,QAAAtE,OAAAA,CAAA,MAAA,kBAAA,CAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;AAwBQ,MAAA,WAAA,CAAY,IAAA,EAAmE;AACrF,QAAA,KAAA,CAAM,EAAE,IAAA,EAAMmE,aAAAA,CAAc,SAAA,EAAW,GAAG,MAAM,CAAA;AACjD,MAAA;;;;;;AAOO,MAAA,WAAA,CAAY,QAAA,EAAkB;AACpC,QAAA,IAAA,CAAK,IAAA,CAAK,SAAA,GAAY,iBAAA,CAAkB,KAAA,CAAM,QAAQ,CAAA;AACtD,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;;AAQO,MAAA,QAAA,CAAS,KAAA,EAAe;AAC9B,QAAA,IAAA,CAAK,IAAA,CAAK,KAAA,GAAQ,cAAA,CAAe,KAAA,CAAM,KAAK,CAAA;AAC5C,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;AAOO,MAAA,QAAA,CAAS,KAAA,EAAuB;AACtC,QAAA,IAAA,CAAK,IAAA,CAAK,KAAA,GAAQ,uBAAA,CAAwB,KAAA,CAAM,KAAK,CAAA;AACrD,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;AAOO,MAAA,YAAA,CAAa,SAAA,EAAmB;AACtC,QAAA,IAAA,CAAK,IAAA,CAAK,UAAA,GAAa,kBAAA,CAAmB,KAAA,CAAM,SAAS,CAAA;AACzD,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;AAOO,MAAA,YAAA,CAAa,SAAA,EAAmB;AACtC,QAAA,IAAA,CAAK,IAAA,CAAK,UAAA,GAAa,kBAAA,CAAmB,KAAA,CAAM,SAAS,CAAA;AACzD,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;AAOO,MAAA,cAAA,CAAe,WAAA,EAAqB;AAC1C,QAAA,IAAA,CAAK,IAAA,CAAK,WAAA,GAAc0D,qBAAAA,CAAqB,KAAA,CAAM,WAAW,CAAA;AAC9D,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;AAOO,MAAA,QAAA,CAAS,KAAA,EAAe;AAC9B,QAAA,IAAA,CAAK,IAAA,CAAK,KAAA,GAAQ,cAAA,CAAe,KAAA,CAAM,KAAK,CAAA;AAC5C,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;AAOO,MAAA,WAAA,CAAY,WAAW,IAAA,EAAM;AACnC,QAAA,IAAA,CAAK,IAAA,CAAK,QAAA,GAAW,iBAAA,CAAkB,KAAA,CAAM,QAAQ,CAAA;AACrD,QAAA,OAAO,IAAA;AACR,MAAA;;;;MAKO,MAAA,GAAgC;AACtC,QAAA,0BAAA,CAA2B,IAAA,CAAK,IAAA,CAAK,SAAA,EAAW,IAAA,CAAK,KAAK,KAAK,CAAA;AAE/D,QAAA,OAAO;AACN,UAAA,GAAG,IAAA,CAAK;AACT,SAAA;AACD,MAAA;;;;AAKO,MAAA,MAAA,CAAO,KAAA,EAA8E;AAC3F,QAAA,IAAI,eAAA,CAAgB,KAAK,CAAA,EAAG;AAC3B,UAAA,OAAA,IAAO,uBAAAQ,OAAAA,EAAQ,KAAA,CAAM,MAAA,EAAO,EAAG,KAAK,IAAI,CAAA;AACzC,QAAA;AAEA,QAAA,OAAA,IAAO,sBAAA,CAAAA,OAAAA,EAAQ,KAAA,EAAO,IAAA,CAAK,IAAI,CAAA;AAChC,MAAA;AACD,KAAA;AaxJA,IAAAT,sBAAA,EAAA;AAAA,IAAAQ,UAAAR,mBAAAA,EAAA;AAAA,MAAA,cAAA,EAAA,MAAA;KAAA,CAAA;AAcO,IAAM,cAAA,GAAiB1L,GAC5B,MAAA,CAAO;AACP,MAAA,EAAA,EAAI,YAAY,QAAA,EAAS;MACzB,IAAA,EAAMA,EAAAA,CAAE,OAAA,CAAQiI,aAAAA,CAAc,KAAK,CAAA;AACnC,MAAA,KAAA,EAAOjI,GAAE,MAAA,EAAO,CAAE,yBAAyB,CAAC,CAAA,CAAE,sBAAsB,EAAE,CAAA;MACtE,WAAA,EAAaA,EAAAA,CAAE,QAAO,CAAE,wBAAA,CAAyB,CAAC,CAAA,CAAE,qBAAA,CAAsB,GAAG,CAAA,CAAE,QAAA,EAAS;AACxF,MAAA,SAAA,EAAWA,GAAE,KAAA,CAAM;AAClB,QAAA,kBAAA;AACA,QAAA,uBAAA;AACA,QAAA,uBAAA;AACA,QAAA,8BAAA;AACA,QAAA,0BAAA;AACA,QAAA,yBAAA;AACA,QAAA;OACA;KACD,CAAA,CACA,qBAAqB,mBAAmB,CAAA;ACMnC,IAAM,YAAA,GAAN,cAA2B,gBAAA,CAAmC;MApCrE;AAoCqE,QAAA8D,OAAAA,CAAA,MAAA,cAAA,CAAA;AAAA;;;;AAI3C,MAAA,IAAA;;;;;;;;;;;;;;;;;;;;;;MAuBlB,WAAA,CAAY,IAAA,GAAmC,EAAC,EAAG;AACzD,QAAA,KAAA,CAAM,EAAE,IAAA,EAAMmE,aAAAA,CAAc,KAAA,EAAO,CAAA;AAEnC,QAAA,MAAM,EAAE,SAAA,EAAW,GAAG,IAAA,EAAK,GAAI,IAAA;AAE/B,QAAA,IAAA,CAAK,IAAA,GAAO;UACX,GAAG,IAAA;UACH,SAAA,EAAW,SAAA,GAAY,sBAAA,CAAuB,SAAS,CAAA,GAAI,MAAA;AAC3D,UAAA,IAAA,EAAMA,aAAAA,CAAc;AACrB,SAAA;AACD,MAAA;;;;;;AAOO,MAAA,QAAA,CAAS,KAAA,EAAe;AAC9B,QAAA,IAAA,CAAK,KAAK,KAAA,GAAQ,KAAA;AAClB,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;AAOO,MAAA,cAAA,CAAe,WAAA,EAAqB;AAC1C,QAAA,IAAA,CAAK,KAAK,WAAA,GAAc,WAAA;AACxB,QAAA,OAAO,IAAA;AACR,MAAA;;;;MAKO,gBAAA,GAAmB;AACzB,QAAA,IAAA,CAAK,KAAK,WAAA,GAAc,MAAA;AACxB,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;AAOO,MAAA,4BAAA,CACN,KAAA,EAIO;AACP,QAAA,IAAA,CAAK,IAAA,CAAK,SAAA,GAAY,cAAA,CAAe,KAAA,EAAO,uBAAuB,CAAA;AACnE,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;AAOO,MAAA,0BAAA,CACN,KAAA,EACO;AACP,QAAA,IAAA,CAAK,IAAA,CAAK,SAAA,GAAY,cAAA,CAAe,KAAA,EAAO,qBAAqB,CAAA;AACjE,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;AAOO,MAAA,0BAAA,CACN,KAAA,EACO;AACP,QAAA,IAAA,CAAK,IAAA,CAAK,SAAA,GAAY,cAAA,CAAe,KAAA,EAAO,qBAAqB,CAAA;AACjE,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;AAOO,MAAA,iCAAA,CACN,KAAA,EAIO;AACP,QAAA,IAAA,CAAK,IAAA,CAAK,SAAA,GAAY,cAAA,CAAe,KAAA,EAAO,4BAA4B,CAAA;AACxE,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;AAOO,MAAA,6BAAA,CACN,KAAA,EAIO;AACP,QAAA,IAAA,CAAK,IAAA,CAAK,SAAA,GAAY,cAAA,CAAe,KAAA,EAAO,wBAAwB,CAAA;AACpE,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;AAOO,MAAA,qBAAA,CACN,KAAA,EACO;AACP,QAAA,IAAA,CAAK,IAAA,CAAK,SAAA,GAAY,cAAA,CAAe,KAAA,EAAO,gBAAgB,CAAA;AAC5D,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;AAOO,MAAA,sBAAA,CACN,KAAA,EACO;AACP,QAAA,IAAA,CAAK,IAAA,CAAK,SAAA,GAAY,cAAA,CAAe,KAAA,EAAO,iBAAiB,CAAA;AAC7D,QAAA,OAAO,IAAA;AACR,MAAA;;;;MAKgB,MAAA,GAA4B;AAC3C,QAAA,MAAM,EAAE,SAAA,EAAW,GAAG,IAAA,KAAS,IAAA,CAAK,IAAA;AAEpC,QAAA,MAAM,IAAA,GAAO;UACZ,GAAG,IAAA;;AAEH,UAAA,SAAA,EAAW,WAAW,MAAA;AACvB,SAAA;AAEA,QAAA,cAAA,CAAe,MAAM,IAAI,CAAA;AAEzB,QAAA,OAAO,IAAA;AACR,MAAA;AACD,KAAA;ApBpNA,IAAAyD,sBAAA,EAAA;AAAA,IAAAQ,UAAAR,mBAAAA,EAAA;AAAA,MAAA,kBAAA,EAAA,MAAA,kBAAA;AAAA,MAAA,qBAAA,EAAA,MAAA,qBAAA;AAAA,MAAA,uBAAA,EAAA,MAAA,uBAAA;AAAA,MAAA,oBAAA,EAAA,MAAAV,qBAAAA;AAAA,MAAA,gBAAA,EAAA,MAAA,gBAAA;AAAA,MAAA,aAAA,EAAA,MAAA,aAAA;AAAA,MAAA,gBAAA,EAAA,MAAA,gBAAA;AAAA,MAAA,gBAAA,EAAA,MAAA,gBAAA;AAAA,MAAA,2BAAA,EAAA,MAAA,2BAAA;AAAA,MAAA,0BAAA,EAAA,MAAA,0BAAA;AAAA,MAAA,sBAAA,EAAA,MAAA;KAAA,CAAA;AqBKO,IAAM,gBAAA,GAAN,cAA+B,gBAAA,CAAwC;MAL9E;AAK8E,QAAAlH,OAAAA,CAAA,MAAA,kBAAA,CAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;MA0BtE,WAAA,CAAY,IAAA,GAAuC,EAAC,EAAG;AAC7D,QAAA,KAAA,CAAM;AACL,UAAA,IAAA,EAAMmE,aAAAA,CAAc,SAAA;UACpB,GAAG,IAAA;AACH,UAAA,KAAA,EAAO,KAAK,KAAA,GAAQ,EAAE,KAAK,IAAA,CAAK,KAAA,CAAM,KAAI,GAAI;SAC9C,CAAA;AACF,MAAA;;;;;;AAOO,MAAA,cAAA,CAAe,WAAA,EAAqB;AAC1C,QAAA,IAAA,CAAK,IAAA,CAAK,WAAA,GAAc+C,qBAAAA,CAAqB,KAAA,CAAM,WAAW,CAAA;AAC9D,QAAA,OAAO,IAAA;AACR,MAAA;;;;MAKO,gBAAA,GAAmB;AACzB,QAAA,IAAA,CAAK,KAAK,WAAA,GAAc,MAAA;AACxB,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;AAOO,MAAA,UAAA,CAAWvH,WAAU,IAAA,EAAM;AACjC,QAAA,IAAA,CAAK,IAAA,CAAK,OAAA,GAAU,gBAAA,CAAiB,KAAA,CAAMA,QAAO,CAAA;AAClD,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;AAOO,MAAA,MAAA,CAAO,GAAA,EAAa;AAC1B,QAAA,IAAA,CAAK,KAAK,KAAA,GAAQ,0BAAA,CAA2B,KAAA,CAAM,EAAE,KAAK,CAAA;AAC1D,QAAA,OAAO,IAAA;AACR,MAAA;;;;MAKgB,MAAA,GAAgC;AAC/C,QAAA,0BAAA,CAA2B,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,KAAK,CAAA;AAEhD,QAAA,OAAO,EAAE,GAAG,IAAA,CAAK,IAAA,EAAK;AACvB,MAAA;AACD,KAAA;ArB1EO,IAAM,0BAAA,GAA6BzD,GACxC,MAAA,CAAO;MACP,GAAA,EAAKA,EAAAA,CACH,QAAO,CACP,GAAA;AACA,QAAA,EAAE,gBAAA,EAAkB,CAAC,OAAA,EAAS,QAAA,EAAU,aAAa,CAAA,EAAE;AACvD,QAAA,EAAE,SAAS,uEAAA;AACZ;KACD,CAAA,CACA,qBAAqB,mBAAmB,CAAA;AAEnC,IAAMgL,qBAAAA,GAAuBhL,EAAAA,CAClC,MAAA,EAAO,CACP,wBAAA,CAAyB,CAAC,CAAA,CAC1B,qBAAA,CAAsB,IAAK,CAAA,CAC3B,oBAAA,CAAqB,mBAAmB,CAAA;AAEnC,IAAM,aAAA,GAAgBA,GAC3B,MAAA,CAAO;AACP,MAAA,GAAA,EAAKA,EAAAA,CACH,MAAA,EAAO,CACP,GAAA,CAAI,EAAE,gBAAA,EAAkB,CAAC,aAAa,CAAA,EAAE,EAAG,EAAE,OAAA,EAAS,sDAAsD;KAC9G,CAAA,CACA,qBAAqB,mBAAmB,CAAA;AAEnC,IAAM,gBAAA,GAAmBA,GAAE,OAAA,EAAQ;AAEnC,IAAM,gBAAA,GAAmBA,GAAE,OAAA,EAAQ;AAEnC,IAAM,gBAAA,GAAmBA,EAAAA,CAAE,UAAA,CAAW,oBAAoB,CAAA;AAE1D,IAAM,2BAAA,GAA8BA,EAAAA,CACzC,MAAA,EAAO,CACP,wBAAA,CAAyB,CAAC,CAAA,CAC1B,qBAAA,CAAsB,GAAK,CAAA,CAC3B,oBAAA,CAAqB,mBAAmB,CAAA;AAEnC,IAAM,kBAAA,GAAqBA,EAAAA,CAChC,QAAA,CAAS,aAAa,CAAA,CACtB,EAAA,CAAGA,EAAAA,CAAE,QAAA,CAAS,gBAAgB,CAAC,CAAA,CAC/B,oBAAA,CAAqB,mBAAmB,CAAA;AAEnC,IAAM,uBAAA,GAA0B,eAAe,OAAA,EAAQ;AAE9C,IAAA8D,OAAAA,CAAA,uBAAA,uBAAA,CAAA;AAOA,IAAAA,OAAAA,CAAA,wBAAA,wBAAA,CAAA;AsB1DT,IAAM,WAAA,GAAN,cAA0B,gBAAA,CAAmC;MAJpE;AAIoE,QAAAA,OAAAA,CAAA,MAAA,aAAA,CAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;MA0B5D,WAAA,CAAY,IAAA,GAAkC,EAAC,EAAG;AACxD,QAAA,KAAA,CAAM,EAAE,IAAA,EAAMmE,aAAAA,CAAc,IAAA,EAAM,GAAG,MAAM,IAAA,EAAM,IAAA,CAAK,IAAA,GAAO,EAAE,KAAK,IAAA,CAAK,IAAA,CAAK,GAAA,EAAI,GAAI,QAAW,CAAA;AAClG,MAAA;;;;;;AAOO,MAAA,UAAA,CAAWxE,WAAU,IAAA,EAAM;AACjC,QAAA,IAAA,CAAK,IAAA,CAAK,OAAA,GAAU,gBAAA,CAAiB,KAAA,CAAMA,QAAO,CAAA;AAClD,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;AAOO,MAAA,MAAA,CAAO,GAAA,EAAa;AAC1B,QAAA,IAAA,CAAK,KAAK,IAAA,GAAO,aAAA,CAAc,KAAA,CAAM,EAAE,KAAK,CAAA;AAC5C,QAAA,OAAO,IAAA;AACR,MAAA;;;;MAKgB,MAAA,GAA2B;AAC1C,QAAA,aAAA,CAAc,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,IAAI,CAAA;AAElC,QAAA,OAAO,EAAE,GAAG,IAAA,CAAK,IAAA,EAAM,IAAA,EAAM,EAAE,GAAG,IAAA,CAAK,IAAA,CAAK,IAAA,EAAK,EAAE;AACpD,MAAA;AACD,KAAA;ACzDO,IAAM,gBAAA,GAAN,cAA+B,gBAAA,CAAwC;MAL9E;AAK8E,QAAAK,OAAAA,CAAA,MAAA,kBAAA,CAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;MAsBtE,WAAA,CAAY,IAAA,GAAuC,EAAC,EAAG;AAC7D,QAAA,KAAA,CAAM;AACL,UAAA,IAAA,EAAMmE,aAAAA,CAAc,SAAA;UACpB,GAAG;SACH,CAAA;AACF,MAAA;;;;;;AAOO,MAAA,UAAA,CAAW,UAAU,IAAA,EAAM;AACjC,QAAA,IAAA,CAAK,IAAA,CAAK,OAAA,GAAU,gBAAA,CAAiB,KAAA,CAAM,OAAO,CAAA;AAClD,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;AAOO,MAAA,UAAA,CAAW,OAAA,EAA+B;AAChD,QAAA,IAAA,CAAK,IAAA,CAAK,OAAA,GAAU,gBAAA,CAAiB,KAAA,CAAM,OAAO,CAAA;AAClD,QAAA,OAAO,IAAA;AACR,MAAA;;;;MAKO,YAAA,GAAe;AACrB,QAAA,IAAA,CAAK,KAAK,OAAA,GAAU,MAAA;AACpB,QAAA,OAAO,IAAA;AACR,MAAA;;;;MAKgB,MAAA,GAAgC;AAC/C,QAAA,OAAO,EAAE,GAAG,IAAA,CAAK,IAAA,EAAK;AACvB,MAAA;AACD,KAAA;AC/DO,IAAM,kBAAA,GAAN,cAAiC,gBAAA,CAA0C;MALlF;AAKkF,QAAAnE,OAAAA,CAAA,MAAA,oBAAA,CAAA;AAAA;;;;;;;;;;;;;;;;;;;;;MAqB1E,WAAA,CAAY,IAAA,GAAyC,EAAC,EAAG;AAC/D,QAAA,KAAA,CAAM;AACL,UAAA,IAAA,EAAMmE,aAAAA,CAAc,WAAA;UACpB,GAAG;SACH,CAAA;AACF,MAAA;;;;;;AAOO,MAAA,UAAA,CAAW,OAAA,EAAiB;AAClC,QAAA,IAAA,CAAK,IAAA,CAAK,OAAA,GAAU,2BAAA,CAA4B,KAAA,CAAM,OAAO,CAAA;AAC7D,QAAA,OAAO,IAAA;AACR,MAAA;;;;MAKgB,MAAA,GAAkC;AACjD,QAAA,2BAAA,CAA4B,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,OAAO,CAAA;AAEnD,QAAA,OAAO,EAAE,GAAG,IAAA,CAAK,IAAA,EAAK;AACvB,MAAA;AACD,KAAA;ACXO,IAAM,gBAAA,GAAN,cAA+B,gBAAA,CAAwC;MAxC9E;AAwC8E,QAAAnE,OAAAA,CAAA,MAAA,kBAAA,CAAA;AAAA;;;;AAI7D,MAAA,UAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCT,MAAA,WAAA,CAAY,EAAE,UAAA,EAAY,GAAG,IAAA,EAAK,GAAoC,EAAC,EAAG;AAChF,QAAA,KAAA,CAAM,EAAE,IAAA,EAAMmE,aAAAA,CAAc,SAAA,EAAW,GAAG,MAAM,CAAA;AAChD,QAAA,IAAA,CAAK,UAAA,GAAc,YAAY,GAAA,CAAI,CAAC,cAAc,sBAAA,CAAuB,SAAS,CAAC,CAAA,IAClF,EAAC;AACH,MAAA;;;;;;AAOO,MAAA,cAAA,CAAe,KAAA,EAAiC;AAEtD,QAAA,uBAAA,CAAwB,MAAM,KAAK,CAAA;AAEnC,QAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACzB,UAAA,MAAM,CAAC,GAAA,EAAK,KAAA,EAAO,IAAI,CAAA,GAAI,KAAA;AAC3B,UAAA,IAAA,CAAK,IAAA,CAAK,YAAA,GAAA,CAAgB,GAAA,IAAO,EAAA,KAAO,SAAS,CAAA,CAAA,GAAK,IAAA;AACtD,UAAA,OAAO,IAAA;AACR,QAAA;AAEA,QAAA,IAAA,CAAK,KAAK,YAAA,GAAe,KAAA;AACzB,QAAA,OAAO,IAAA;AACR,MAAA;;;;MAKO,gBAAA,GAAmB;AACzB,QAAA,IAAA,CAAK,KAAK,YAAA,GAAe,MAAA;AACzB,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;AAOO,MAAA,sBAAA,CAAA,GACH,UAAA,EAKF;AACD,QAAA,IAAA,CAAK,UAAA,CAAW,IAAA;UACf,GAAG,cAAA,CAAe,UAAU,CAAA,CAAE,GAAA,CAAI,CAAC,SAAA,KAAc,cAAA,CAAe,SAAA,EAAW,gBAA+B,CAAC;AAC5G,SAAA;AACA,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;AAOO,MAAA,iBAAA,CAAA,GACH,UAAA,EACF;AACD,QAAA,IAAA,CAAK,UAAA,CAAW,IAAA,CAAK,GAAG,cAAA,CAAe,UAAU,CAAA,CAAE,GAAA,CAAI,CAAC,SAAA,KAAc,cAAA,CAAe,SAAA,EAAW,WAAW,CAAC,CAAC,CAAA;AAC7G,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;AAOO,MAAA,yBAAA,CAAA,GACH,UAAA,EAGF;AACD,QAAA,IAAA,CAAK,UAAA,CAAW,IAAA;UACf,GAAG,cAAA,CAAe,UAAU,CAAA,CAAE,GAAA,CAAI,CAAC,SAAA,KAAc,cAAA,CAAe,SAAA,EAAW,mBAAmB,CAAC;AAChG,SAAA;AACA,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;AAOO,MAAA,oBAAA,CAAA,GACH,UAAA,EACF;AACD,QAAA,IAAA,CAAK,UAAA,CAAW,IAAA,CAAK,GAAG,cAAA,CAAe,UAAU,CAAA,CAAE,GAAA,CAAI,CAAC,SAAA,KAAc,cAAA,CAAe,SAAA,EAAW,cAAc,CAAC,CAAC,CAAA;AAChH,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;AAOO,MAAA,sBAAA,CAAA,GACH,UAAA,EAGF;AACD,QAAA,IAAA,CAAK,UAAA,CAAW,IAAA,CAAK,GAAG,cAAA,CAAe,UAAU,CAAA,CAAE,GAAA,CAAI,CAAC,SAAA,KAAc,cAAA,CAAe,SAAA,EAAW,gBAAgB,CAAC,CAAC,CAAA;AAClH,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;AAOO,MAAA,wBAAA,CAAA,GACH,UAAA,EAGF;AACD,QAAA,IAAA,CAAK,UAAA,CAAW,IAAA;UACf,GAAG,cAAA,CAAe,UAAU,CAAA,CAAE,GAAA,CAAI,CAAC,SAAA,KAAc,cAAA,CAAe,SAAA,EAAW,kBAAkB,CAAC;AAC/F,SAAA;AACA,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;;;MASO,gBAAA,CACN,KAAA,EACA,gBACG,UAAA,EACF;AACD,QAAA,IAAA,CAAK,UAAA,CAAW,MAAA;AACf,UAAA,KAAA;AACA,UAAA,WAAA;UACA,GAAG,cAAA,CAAe,UAAU,CAAA,CAAE,GAAA;AAAI,YAAA,CAAC,SAAA,KAClC,SAAA,YAAqB,gBAAA,GAAmB,SAAA,GAAY,uBAAuB,SAAS;AACrF;AACD,SAAA;AACA,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;AAOO,MAAA,UAAA,CAAWxE,WAAU,IAAA,EAAM;AACjC,QAAA,IAAA,CAAK,IAAA,CAAK,OAAA,GAAU,gBAAA,CAAiB,KAAA,CAAMA,QAAO,CAAA;AAClD,QAAA,OAAO,IAAA;AACR,MAAA;;;;MAKO,MAAA,GAAgC;AACtC,QAAA,OAAO;AACN,UAAA,GAAG,IAAA,CAAK,IAAA;AACR,UAAA,UAAA,EAAY,KAAK,UAAA,CAAW,GAAA,CAAI,CAAC,SAAA,KAAc,SAAA,CAAU,QAAQ;AAClE,SAAA;AACD,MAAA;AACD,KAAA;AC3OO,IAAM,0BAAN,MAA4E;MAJnF;AAImF,QAAAK,OAAAA,CAAA,MAAA,yBAAA,CAAA;AAAA;;;;AAIlE,MAAA,IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;MA2BT,WAAA,CAAY,IAAA,GAAqC,EAAC,EAAG;AAC3D,QAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AACb,MAAA;;;;;;AAOO,MAAA,cAAA,CAAe,WAAA,EAAqB;AAC1C,QAAA,IAAA,CAAK,IAAA,CAAK,WAAA,GAAckH,qBAAAA,CAAqB,KAAA,CAAM,WAAW,CAAA;AAC9D,QAAA,OAAO,IAAA;AACR,MAAA;;;;MAKO,gBAAA,GAAmB;AACzB,QAAA,IAAA,CAAK,KAAK,WAAA,GAAc,MAAA;AACxB,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;AAOO,MAAA,UAAA,CAAWvH,WAAU,IAAA,EAAM;AACjC,QAAA,IAAA,CAAK,IAAA,CAAK,OAAA,GAAU,gBAAA,CAAiB,KAAA,CAAMA,QAAO,CAAA;AAClD,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;AAOO,MAAA,MAAA,CAAO,GAAA,EAAa;AAC1B,QAAA,IAAA,CAAK,KAAK,KAAA,GAAQ,0BAAA,CAA2B,KAAA,CAAM,EAAE,KAAK,CAAA;AAC1D,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;;;MASO,MAAA,GAA8B;AACpC,QAAA,0BAAA,CAA2B,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,KAAK,CAAA;AAEhD,QAAA,OAAO,EAAE,GAAG,IAAA,CAAK,IAAA,EAAK;AACvB,MAAA;AACD,KAAA;AC5EO,IAAM,mBAAA,GAAN,cAAkC,gBAAA,CAA2C;MAbpF;AAaoF,QAAAK,OAAAA,CAAA,MAAA,qBAAA,CAAA;AAAA;;;;AAInE,MAAA,KAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCT,MAAA,WAAA,CAAY,EAAE,KAAA,EAAO,GAAG,IAAA,EAAK,GAAuC,EAAC,EAAG;AAC9E,QAAA,KAAA,CAAM,EAAE,IAAA,EAAMmE,aAAAA,CAAc,YAAA,EAAc,GAAG,MAAM,CAAA;AACnD,QAAA,IAAA,CAAK,KAAA,GAAQ,KAAA,EAAO,GAAA,CAAI,CAAC,IAAA,KAAS,IAAI,uBAAA,CAAwB,IAAI,CAAC,CAAA,IAAK,EAAC;AAC1E,MAAA;;;;;;AAOO,MAAA,QAAA,CAAA,GACH,KAAA,EAGF;AACD,QAAA,IAAA,CAAK,KAAA,CAAM,IAAA;AACV,UAAA,GAAG,cAAA,CAAe,KAAK,CAAA,CAAE,GAAA,CAAI,CAAC,KAAA,KAAU;AACvC,YAAA,MAAM,MAAA,GAAS,cAAA,CAAe,KAAA,EAAO,uBAAuB,CAAA;AAE5D,YAAA,qBAAA,CAAsB,QAAQ,uBAAuB,CAAA;AACrD,YAAA,OAAO,MAAA;UACR,CAAC;AACF,SAAA;AACA,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;;;MASO,WAAA,CACN,KAAA,EACA,gBACG,KAAA,EAGF;AACD,QAAA,IAAA,CAAK,KAAA,CAAM,MAAA;AACV,UAAA,KAAA;AACA,UAAA,WAAA;AACA,UAAA,GAAG,cAAA,CAAe,KAAK,CAAA,CAAE,GAAA,CAAI,CAAC,KAAA,KAAU;AACvC,YAAA,MAAM,MAAA,GAAS,cAAA,CAAe,KAAA,EAAO,uBAAuB,CAAA;AAE5D,YAAA,qBAAA,CAAsB,QAAQ,uBAAuB,CAAA;AACrD,YAAA,OAAO,MAAA;UACR,CAAC;AACF,SAAA;AACA,QAAA,OAAO,IAAA;AACR,MAAA;;;;MAKO,MAAA,GAAmC;AACzC,QAAA,sBAAA,CAAuB,IAAA,CAAK,KAAA,EAAO,CAAA,EAAG,EAAA,EAAI,uBAAuB,CAAA;AACjE,QAAA,OAAO;AACN,UAAA,GAAG,IAAA,CAAK,IAAA;AACR,UAAA,KAAA,EAAO,KAAK,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,KAAS,IAAA,CAAK,QAAQ;AAC9C,SAAA;AACD,MAAA;AACD,KAAA;ACjGO,IAAM,cAAA,GAAN,cAA6B,gBAAA,CAAsC;MAnB1E;AAmB0E,QAAAnE,OAAAA,CAAA,MAAA,gBAAA,CAAA;AAAA;;;;AAIzD,MAAA,UAAA;;;;AAKA,MAAA,SAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqCT,MAAA,WAAA,CAAY,EAAE,UAAA,EAAY,SAAA,EAAW,GAAG,IAAA,EAAK,GAAkC,EAAC,EAAG;AACzF,QAAA,KAAA,CAAM,EAAE,IAAA,EAAMmE,aAAAA,CAAc,OAAA,EAAS,GAAG,MAAM,CAAA;AAC9C,QAAA,IAAA,CAAK,UAAA,GAAc,YAAY,GAAA,CAAI,CAAC,cAAc,sBAAA,CAAuB,SAAS,CAAC,CAAA,IAAK,EAAC;AACzF,QAAA,IAAA,CAAK,SAAA,GAAY,SAAA,GAAY,sBAAA,CAAuB,SAAS,CAAA,GAAI,MAAA;AAClE,MAAA;;;;;;AAOO,MAAA,kBAAA,CACN,SAAA,EACO;AACP,QAAA,OAAA,CAAQ,GAAA,CAAI,MAAM,WAAA,EAAa,kBAAA,CAAmB,MAAM,cAAA,CAAe,SAAA,EAAW,aAAa,CAAC,CAAC,CAAA;AACjG,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;AAOO,MAAA,qBAAA,CACN,SAAA,EACO;AACP,QAAA,OAAA,CAAQ,GAAA,CAAI,MAAM,WAAA,EAAa,kBAAA,CAAmB,MAAM,cAAA,CAAe,SAAA,EAAW,gBAAgB,CAAC,CAAC,CAAA;AACpG,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;AAOO,MAAA,wBAAA,CAAA,GACH,UAAA,EACF;AACD,QAAA,IAAA,CAAK,UAAA,CAAW,IAAA;AACf,UAAA,GAAG,cAAA,CAAe,UAAU,CAAA,CAAE,GAAA,CAAI,CAAC,KAAA,KAAU;AAC5C,YAAA,MAAM,MAAA,GAAS,cAAA,CAAe,KAAA,EAAO,kBAAkB,CAAA;AAEvD,YAAA,qBAAA,CAAsB,QAAQ,kBAAkB,CAAA;AAChD,YAAA,OAAO,MAAA;UACR,CAAC;AACF,SAAA;AACA,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;;;MASO,2BAAA,CACN,KAAA,EACA,gBACG,UAAA,EAGF;AACD,QAAA,IAAA,CAAK,UAAA,CAAW,MAAA;AACf,UAAA,KAAA;AACA,UAAA,WAAA;AACA,UAAA,GAAG,cAAA,CAAe,UAAU,CAAA,CAAE,GAAA,CAAI,CAAC,KAAA,KAAU;AAC5C,YAAA,MAAM,MAAA,GAAS,cAAA,CAAe,KAAA,EAAO,kBAAkB,CAAA;AAEvD,YAAA,qBAAA,CAAsB,QAAQ,kBAAkB,CAAA;AAChD,YAAA,OAAO,MAAA;UACR,CAAC;AACF,SAAA;AACA,QAAA,OAAO,IAAA;AACR,MAAA;;;;MAKO,MAAA,GAA8B;AACpC,QAAA,sBAAA,CAAuB,IAAA,CAAK,UAAA,EAAY,CAAA,EAAG,CAAA,EAAG,kBAAkB,CAAA;AAChE,QAAA,OAAO;AACN,UAAA,GAAG,IAAA,CAAK,IAAA;AACR,UAAA,UAAA,EAAY,KAAK,UAAA,CAAW,GAAA,CAAI,CAAC,SAAA,KAAc,SAAA,CAAU,QAAQ,CAAA;AACjE,UAAA,SAAA,EAAW,kBAAA,CAAmB,KAAA,CAAM,IAAA,CAAK,SAAS,EAAE,MAAA;AACrD,SAAA;AACD,MAAA;AACD,KAAA;A3BjBgB,IAAAnE,OAAAA,CAAA,wBAAA,wBAAA,CAAA;AAgDP,IAAAA,OAAAA,CAAA,WAAA,WAAA,CAAA;AAOO,IAAAA,OAAAA,CAAA,gBAAA,gBAAA,CAAA;A4B3IT,IAAM,gBAAA,GAAN,cAA0E,gBAAA,CAE/E;MArDF;AAqDE,QAAAA,OAAAA,CAAA,MAAA,kBAAA,CAAA;AAAA;;;;AAIe,MAAA,UAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCT,MAAA,WAAA,CAAY,EAAE,UAAA,EAAY,GAAG,IAAA,EAAK,GAA6D,EAAC,EAAG;AACzG,QAAA,KAAA,CAAM,EAAE,IAAA,EAAMmE,aAAAA,CAAc,SAAA,EAAW,GAAG,MAAM,CAAA;AAChD,QAAA,IAAA,CAAK,UAAA,GAAc,YAAY,GAAA,CAAI,CAAC,cAAc,sBAAA,CAAuB,SAAS,CAAC,CAAA,IAAK,EAAC;AAC1F,MAAA;;;;;;AAOO,MAAA,aAAA,CAAA,GAAiB,UAAA,EAAwC;AAC/D,QAAA,IAAA,CAAK,UAAA,CAAW,IAAA,CAAK,GAAG,cAAA,CAAe,UAAU,CAAC,CAAA;AAClD,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;AAOO,MAAA,aAAA,CAAA,GAAiB,UAAA,EAAwC;AAC/D,QAAA,IAAA,CAAK,UAAA,CAAW,OAAO,CAAA,EAAG,IAAA,CAAK,WAAW,MAAA,EAAQ,GAAG,cAAA,CAAe,UAAU,CAAC,CAAA;AAC/E,QAAA,OAAO,IAAA;AACR,MAAA;;;;MAKO,MAAA,GAAqE;AAC3E,QAAA,OAAO;AACN,UAAA,GAAG,IAAA,CAAK,IAAA;AACR,UAAA,UAAA,EAAY,KAAK,UAAA,CAAW,GAAA,CAAI,CAAC,SAAA,KAAc,SAAA,CAAU,QAAQ;AAClE,SAAA;AACD,MAAA;AACD,KAAA;A3B/HA,IAAAyD,sBAAA,EAAA;AAAA,IAAAQ,UAAAR,mBAAAA,EAAA;AAAA,MAAA,mBAAA,EAAA,MAAA,mBAAA;AAAA,MAAA,cAAA,EAAA,MAAA,cAAA;AAAA,MAAA,0BAAA,EAAA,MAAAX;KAAA,CAAA;AAOO,IAAM,cAAA,GAAiB/K,EAAAA,CAC5B,MAAA,EAAO,CACP,wBAAA,CAAyB,CAAC,CAAA,CAC1B,qBAAA,CAAsB,EAAE,CAAA,CACxB,oBAAA,CAAqB,mBAAmB,CAAA;AACnC,IAAM,mBAAA,GAAsBA,EAAAA,CACjC,KAAA,CAAM,CAACA,EAAAA,CAAE,SAAS,gBAAgB,CAAA,EAAGA,EAAAA,CAAE,QAAA,CAAS,YAAY,CAAA,EAAGA,GAAE,QAAA,CAAS,kBAAkB,CAAC,CAAC,CAAA,CAC9F,KAAA,GACA,wBAAA,CAAyB,CAAC,CAAA,CAC1B,oBAAA,CAAqB,mBAAmB,CAAA;AAE1B,IAAA8D,OAAAA,CAAAiH,6BAAA,4BAAA,CAAA;AiDMT,KAAA,MAAqF;MAxB5F;AAwB4F,QAAAjH,OAAAA,CAAA,MAAA,cAAA,CAAA;AAAA;;;;AAI3E,MAAA,IAAA;;;;AAKA,MAAA,UAAA,GACf,EAAC;;;;;;AAOK,MAAA,WAAA,CAAY,EAAE,UAAA,EAAY,GAAG,IAAA,EAAK,GAAsD,EAAC,EAAG;AAClG,QAAA,IAAA,CAAK,IAAA,GAAO,EAAE,GAAG,IAAA,EAAK;AACtB,QAAA,IAAA,CAAK,UAAA,GAAc,YAAY,GAAA,CAAI,CAAC,cAAc,sBAAA,CAAuB,SAAS,CAAC,CAAA,IAAK,EAAC;AAI1F,MAAA;;;;;;AAOO,MAAA,QAAA,CAAS,KAAA,EAAe;AAC9B,QAAA,IAAA,CAAK,IAAA,CAAK,KAAA,GAAQ,cAAA,CAAe,KAAA,CAAM,KAAK,CAAA;AAC5C,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;AAOO,MAAA,WAAA,CAAY,QAAA,EAAkB;AACpC,QAAA,IAAA,CAAK,IAAA,CAAK,SAAA,GAAY,iBAAA,CAAkB,KAAA,CAAM,QAAQ,CAAA;AACtD,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;;AAQO,MAAA,aAAA,CAAA,GACH,UAAA,EAUF;AACD,QAAA,IAAA,CAAK,UAAA,CAAW,IAAA;AACf,UAAA,GAAG,eAAe,UAAU,CAAA,CAAE,GAAA,CAAI,CAAC,WAAW,GAAA,KAAQ;AACrD,YAAA,IACC,SAAA,YAAqB,gBAAA,IACrB,SAAA,YAAqB,YAAA,IACrB,qBAAqB,kBAAA,EACpB;AACD,cAAA,OAAO,SAAA;AACR,YAAA;AAGA,YAAA,IAAI,qBAAqB,gBAAA,EAAkB;AAC1C,cAAA,OAAO,IAAI,gBAAA,EAAiD,CAAE,aAAA,CAAc,SAAS,CAAA;AACtF,YAAA;AAEA,YAAA,IAAI,UAAU,SAAA,EAAW;AACxB,cAAA,IAAI,SAAA,CAAU,IAAA,KAASmE,aAAAA,CAAc,SAAA,EAAW;AAC/C,gBAAA,OAAO,IAAI,iBAAiD,SAAS,CAAA;AACtE,cAAA;AAEA,cAAA,IAAI,SAAA,CAAU,IAAA,KAASA,aAAAA,CAAc,KAAA,EAAO;AAC3C,gBAAA,OAAO,IAAI,aAAa,SAAS,CAAA;AAClC,cAAA;AAEA,cAAA,IAAI,SAAA,CAAU,IAAA,KAASA,aAAAA,CAAc,WAAA,EAAa;AACjD,gBAAA,OAAO,IAAI,mBAAmB,SAAS,CAAA;AACxC,cAAA;AAGA,cAAA,IAAI,SAAA,CAAU,IAAA,KAASA,aAAAA,CAAc,SAAA,EAAW;AAC/C,gBAAA,OAAO,IAAI,kBAAiD,CAAE,aAAA;AAC7D,kBAAA,IAAI,iBAAiB,SAAS;AAC/B,iBAAA;AACD,cAAA;AACD,YAAA;AAEA,YAAA,MAAM,IAAI,SAAA,CAAU,CAAA,gEAAA,EAAmE,GAAG,CAAA,CAAA,CAAG,CAAA;UAC9F,CAAC;AACF,SAAA;AACA,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;AAOO,MAAA,kBAAA,CAAA,GACH,UAAA,EACF;AACD,QAAA,MAAM,UAAA,GAAa,eAAe,UAAU,CAAA;AAC5C,QAAA,MAAM,QAAA,GAAW,WAAW,GAAA,CAAI,CAAC,UAAU,cAAA,CAAe,KAAA,EAAO,YAAY,CAAC,CAAA;AAE9E,QAAA,IAAA,CAAK,UAAA,CAAW,IAAA,CAAK,GAAG,QAAQ,CAAA;AAEhC,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;AAOO,MAAA,wBAAA,CAAA,GACH,UAAA,EAGF;AACD,QAAA,MAAM,UAAA,GAAa,eAAe,UAAU,CAAA;AAC5C,QAAA,MAAM,QAAA,GAAW,WAAW,GAAA,CAAI,CAAC,QAAQ,cAAA,CAAe,GAAA,EAAK,kBAAkB,CAAC,CAAA;AAEhF,QAAA,IAAA,CAAK,UAAA,CAAW,IAAA,CAAK,GAAG,QAAQ,CAAA;AAEhC,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;;AAQO,MAAA,sBAAA,CAAA,GACH,UAAA,EAOF;AACD,QAAA,MAAM,UAAA,GAAa,eAAe,UAAU,CAAA;AAC5C,QAAA,MAAM,QAAA,GAAW,WAAW,GAAA,CAAI,CAAC,QAAQ,cAAA,CAAe,GAAA,EAAK,gBAAgD,CAAC,CAAA;AAE9G,QAAA,IAAA,CAAK,UAAA,CAAW,IAAA,CAAK,GAAG,QAAQ,CAAA;AAEhC,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;AAOO,MAAA,kBAAA,CAAA,GACH,UAAA,EACF;AACD,QAAA,MAAM,UAAA,GAAa,eAAe,UAAU,CAAA;AAC5C,QAAA,IAAA,CAAK,sBAAsB,CAAA,EAAG,IAAA,CAAK,UAAA,CAAW,MAAA,EAAQ,GAAG,UAAU,CAAA;AAEnE,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA+BO,qBAAA,CACN,KAAA,EACA,gBACG,MAAA,EACI;AACP,QAAA,MAAM,QAAA,GAAW,OAAO,GAAA,CAAI,CAAC,UAAU,cAAA,CAAe,KAAA,EAAO,YAAY,CAAC,CAAA;AAC1E,QAAA,IAAA,CAAK,UAAA,CAAW,MAAA,CAAO,KAAA,EAAO,WAAA,EAAa,GAAG,QAAQ,CAAA;AAEtD,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;;AAQO,MAAA,aAAA,CAAA,GACH,UAAA,EACF;AACD,QAAA,IAAA,CAAK,UAAA,CAAW,OAAO,CAAA,EAAG,IAAA,CAAK,WAAW,MAAA,EAAQ,GAAG,cAAA,CAAe,UAAU,CAAC,CAAA;AAC/E,QAAA,OAAO,IAAA;AACR,MAAA;;;;MAKO,MAAA,GAAkD;AACxD8C,QAAAA,2BAAAA,CAA2B,KAAK,IAAA,CAAK,SAAA,EAAW,KAAK,IAAA,CAAK,KAAA,EAAO,KAAK,UAAU,CAAA;AAEhF,QAAA,OAAO;AACN,UAAA,GAAG,IAAA,CAAK,IAAA;AACR,UAAA,UAAA,EAAY,KAAK,UAAA,CAAW,GAAA,CAAI,CAAC,SAAA,KAAc,SAAA,CAAU,QAAQ;AAClE,SAAA;AACD,MAAA;AACD,MAAA;AhDxQA,IAAAW,sBAAA,EAAA;AAAA,IAAAQ,UAAAR,mBAAAA,EAAA;AAAA,MAAA,qBAAA,EAAA,MAAAT,sBAAAA;AAAA,MAAA,iBAAA,EAAA,MAAA,iBAAA;AAAA,MAAA,yBAAA,EAAA,MAAA,yBAAA;AAAA,MAAA,wBAAA,EAAA,MAAA,wBAAA;AAAA,MAAA,qBAAA,EAAA,MAAA,qBAAA;AAAA,MAAA,oBAAA,EAAA,MAAA,oBAAA;AAAA,MAAA,gCAAA,EAAA,MAAA,gCAAA;AAAA,MAAA,yBAAA,EAAA,MAAA,yBAAA;AAAA,MAAA,mBAAA,EAAA,MAAA,mBAAA;AAAA,MAAA,cAAA,EAAA,MAAA,cAAA;AAAA,MAAA,uBAAA,EAAA,MAAA,uBAAA;AAAA,MAAA,wBAAA,EAAA,MAAA,wBAAA;AAAA,MAAA,YAAA,EAAA,MAAA,YAAA;AAAA,MAAA,YAAA,EAAA,MAAA,YAAA;AAAA,MAAA,gBAAA,EAAA,MAAA,gBAAA;AAAA,MAAA,0BAAA,EAAA,MAAAF;KAAA,CAAA;AAaA,IAAM,aAAA,GAAgB/K,EAAAA,CACpB,MAAA,EAAO,CACP,yBAAyB,CAAC,CAAA,CAC1B,qBAAA,CAAsB,EAAE,CAAA,CACxB,KAAA,CAAM,6DAA6D,CAAA,CACnE,qBAAqB,mBAAmB,CAAA;AAE1B,IAAA8D,OAAAA,CAAA,cAAA,cAAA,CAAA;AAIhB,IAAMkH,qBAAAA,GAAuBhL,EAAAA,CAC3B,MAAA,EAAO,CACP,wBAAA,CAAyB,CAAC,CAAA,CAC1B,qBAAA,CAAsB,GAAG,CAAA,CACzB,oBAAA,CAAqB,mBAAmB,CAAA;AAC1C,IAAM,eAAA,GAAkBA,EAAAA,CAAE,UAAA,CAAW,MAAM,CAAA;AAE3B,IAAA8D,OAAAA,CAAA,qBAAA,qBAAA,CAAA;AAIhB,IAAM,uBAAA,GAA0B9D,EAAAA,CAAE,OAAA,EAAQ,CAAE,KAAA,GAAQ,qBAAA,CAAsB,EAAE,CAAA,CAAE,oBAAA,CAAqB,mBAAmB,CAAA;AACtG,IAAA8D,OAAAA,CAAA,gBAAA,gBAAA,CAAA;AAIA,IAAAA,OAAAA,CAAA,0BAAA,0BAAA,CAAA;AAIA,IAAAA,OAAAA,CAAAiH,6BAAA,4BAAA,CAAA;AAehB,IAAM,gBAAA,GAAmB/K,GAAE,OAAA,EAAQ;AAEnB,IAAA8D,OAAAA,CAAA,2BAAA,2BAAA,CAAA;AAIA,IAAAA,OAAAA,CAAA,kBAAA,kBAAA,CAAA;AAIhB,IAAM,sBAAA,GAAyB9D,GAAE,MAAA,EAAO,CAAE,gBAAgB,EAAE,CAAA,CAAE,qBAAqB,mBAAmB,CAAA;AAEtF,IAAA8D,OAAAA,CAAA,uBAAA,uBAAA,CAAA;AAIA,IAAAA,OAAAA,CAAAmH,wBAAA,uBAAA,CAAA;AAMT,IAAM,wBAAA,GAA2BjL,EAAAA,CACtC,MAAA,CAAwB,MAAA,CAAO,WAAA,CAAY,MAAA,CAAO,MAAA,CAAO,MAAM,CAAA,CAAE,GAAA,CAAI,CAAC,MAAA,KAAW,CAAC,MAAA,EAAQA,EAAAA,CAAE,MAAA,EAAO,CAAE,OAAA,EAAS,CAAC,CAAC,CAAC,CAAA,CACjH,MAAA,EAAO,CACP,OAAA,EAAQ,CACR,oBAAA,CAAqB,mBAAmB,CAAA;AAE1B,IAAA8D,OAAAA,CAAA,yBAAA,yBAAA,CAAA;AAIhB,IAAM,qBAAA,GAAwB9D,EAAAA,CAAE,OAAA,EAAQ,CAAE,OAAA,EAAQ;AAElC,IAAA8D,OAAAA,CAAA,sBAAA,sBAAA,CAAA;AAIhB,IAAM,yBAAA,GAA4B9D,GAChC,KAAA,CAAM;AACNA,MAAAA,EAAAA,CAAE,QAAO,CAAE,SAAA,CAAU,CAAC,KAAA,KAAU,KAAA,CAAM,UAAU,CAAA;MAChDA,EAAAA,CACE,MAAA,GACA,OAAA,EAAQ,CACR,UAAU,CAAC,KAAA,KAAU,KAAA,CAAM,QAAA,EAAU,CAAA;MACvCA,EAAAA,CAAE,MAAA,EAAO,CAAE,KAAA,CAAM,OAAO;AACzB,KAAC,EACA,OAAA,EAAQ;AAEM,IAAA8D,OAAAA,CAAA,kCAAA,kCAAA,CAAA;AAIA,IAAAA,OAAAA,CAAA,cAAA,cAAA,CAAA;AAIT,IAAM,oBAAoB9D,EAAAA,CAAE,KAAA;AAClCA,MAAAA,EAAAA,CAAE,UAAA,CAAW,sBAAsB,CAAA,CAAE,oBAAA,CAAqB,mBAAmB;AAC9E,KAAA;AAEO,IAAM,4BAA4BA,EAAAA,CAAE,KAAA;AAC1CA,MAAAA,EAAAA,CAAE,UAAA,CAAW,0BAA0B,CAAA,CAAE,oBAAA,CAAqB,mBAAmB;AAClF,KAAA;A2BpHO,IAAM,2BAAN,MAA+B;MANtC;AAMsC,QAAA8D,OAAAA,CAAA,MAAA,0BAAA,CAAA;AAAA;;;;AAIrB,MAAA,IAAA;;;;AAKA,MAAA,kBAAA;;;;AAKA,MAAA,WAAA;;;;AAKA,MAAA,yBAAA;;;;;;AAOT,MAAA,OAAA,CAAQ,IAAA,EAAoB;AAElC,QAAA,YAAA,CAAa,IAAI,CAAA;AAEjB,QAAA,OAAA,CAAQ,GAAA,CAAI,IAAA,EAAM,MAAA,EAAQ,IAAI,CAAA;AAE9B,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;AAOO,MAAA,cAAA,CAAe,WAAA,EAAqB;AAE1C,QAAA,mBAAA,CAAoB,WAAW,CAAA;AAE/B,QAAA,OAAA,CAAQ,GAAA,CAAI,IAAA,EAAM,aAAA,EAAe,WAAW,CAAA;AAE5C,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;;AAQO,MAAA,mBAAA,CAAoB,QAAsB,aAAA,EAA8B;AAC9E,QAAA,IAAI,CAAC,KAAK,kBAAA,EAAoB;AAC7B,UAAA,OAAA,CAAQ,GAAA,CAAI,IAAA,EAAM,oBAAA,EAAsB,EAAE,CAAA;AAC3C,QAAA;AAEA,QAAA,MAAM,YAAA,GAAe,eAAe,MAAM,CAAA;AAE1C,QAAA,IAAI,kBAAkB,IAAA,EAAM;AAC3B,UAAA,IAAA,CAAK,kBAAA,CAAoB,YAAY,CAAA,GAAI,IAAA;AACzC,UAAA,OAAO,IAAA;AACR,QAAA;AAEA,QAAA,YAAA,CAAa,aAAa,CAAA;AAE1B,QAAA,IAAA,CAAK,kBAAA,CAAoB,YAAY,CAAA,GAAI,aAAA;AACzC,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;AAOO,MAAA,oBAAA,CAAqB,cAAA,EAAwC;AACnE,QAAA,IAAI,mBAAmB,IAAA,EAAM;AAC5B,UAAA,OAAA,CAAQ,GAAA,CAAI,IAAA,EAAM,oBAAA,EAAsB,IAAI,CAAA;AAC5C,UAAA,OAAO,IAAA;AACR,QAAA;AAEA,QAAA,OAAA,CAAQ,GAAA,CAAI,IAAA,EAAM,oBAAA,EAAsB,EAAE,CAAA;AAE1C,QAAA,KAAA,MAAW,IAAA,IAAQ,MAAA,CAAO,OAAA,CAAQ,cAAc,CAAA,EAAG;AAClD,UAAA,IAAA,CAAK,mBAAA,CAAoB,GAAI,IAAsC,CAAA;AACpE,QAAA;AAEA,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;;AAQO,MAAA,0BAAA,CAA2B,QAAsB,oBAAA,EAAqC;AAC5F,QAAA,IAAI,CAAC,KAAK,yBAAA,EAA2B;AACpC,UAAA,OAAA,CAAQ,GAAA,CAAI,IAAA,EAAM,2BAAA,EAA6B,EAAE,CAAA;AAClD,QAAA;AAEA,QAAA,MAAM,YAAA,GAAe,eAAe,MAAM,CAAA;AAE1C,QAAA,IAAI,yBAAyB,IAAA,EAAM;AAClC,UAAA,IAAA,CAAK,yBAAA,CAA2B,YAAY,CAAA,GAAI,IAAA;AAChD,UAAA,OAAO,IAAA;AACR,QAAA;AAEA,QAAA,mBAAA,CAAoB,oBAAoB,CAAA;AAExC,QAAA,IAAA,CAAK,yBAAA,CAA2B,YAAY,CAAA,GAAI,oBAAA;AAChD,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;AAOO,MAAA,2BAAA,CAA4B,qBAAA,EAA+C;AACjF,QAAA,IAAI,0BAA0B,IAAA,EAAM;AACnC,UAAA,OAAA,CAAQ,GAAA,CAAI,IAAA,EAAM,2BAAA,EAA6B,IAAI,CAAA;AACnD,UAAA,OAAO,IAAA;AACR,QAAA;AAEA,QAAA,OAAA,CAAQ,GAAA,CAAI,IAAA,EAAM,2BAAA,EAA6B,EAAE,CAAA;AACjD,QAAA,KAAA,MAAW,IAAA,IAAQ,MAAA,CAAO,OAAA,CAAQ,qBAAqB,CAAA,EAAG;AACzD,UAAA,IAAA,CAAK,0BAAA,CAA2B,GAAI,IAAsC,CAAA;AAC3E,QAAA;AAEA,QAAA,OAAO,IAAA;AACR,MAAA;AACD,KAAA;ACpHO,IAAM,qBAAN,MAAyB;MAzBhC;AAyBgC,QAAAA,OAAAA,CAAA,MAAA,oBAAA,CAAA;AAAA;MACf,IAAA,GAAe,MAAA;AAEf,MAAA,kBAAA;MAEA,WAAA,GAAsB,MAAA;AAEtB,MAAA,yBAAA;AAEA,MAAA,OAAA,GAA4C,EAAC;AAE7C,MAAA,QAAA;;;;MAKA,kBAAA,GAA0C,MAAA;MAE1C,0BAAA,GAA6D,MAAA;;;;MAK7D,aAAA,GAAqC,MAAA;AAErC,MAAA,iBAAA;MAEA,IAAA,GAA4B,MAAA;;;;;;AAOrC,MAAA,WAAA,CAAA,GAAe,QAAA,EAA+C;AACpE,QAAA,OAAA,CAAQ,GAAA,CAAI,MAAM,UAAA,EAAY,iBAAA,CAAkB,MAAM,cAAA,CAAe,QAAQ,CAAC,CAAC,CAAA;AAE/E,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;AAOO,MAAA,mBAAA,CAAA,GAAuB,gBAAA,EAA2D;AACxF,QAAA,OAAA,CAAQ,GAAA,CAAI,MAAM,mBAAA,EAAqB,yBAAA,CAA0B,MAAM,cAAA,CAAe,gBAAgB,CAAC,CAAC,CAAA;AAExG,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;;;;;AAWO,MAAA,oBAAA,CAAqB,KAAA,EAAgB;AAE3C,QAAA,yBAAA,CAA0B,KAAK,CAAA;AAE/B,QAAA,OAAA,CAAQ,GAAA,CAAI,IAAA,EAAM,oBAAA,EAAsB,KAAK,CAAA;AAE7C,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;;;;AAUO,MAAA,2BAAA,CAA4B,WAAA,EAA+D;AAEjG,QAAA,MAAM,eAAA,GAAkB,iCAAiC,WAAW,CAAA;AAEpE,QAAA,OAAA,CAAQ,GAAA,CAAI,IAAA,EAAM,4BAAA,EAA8B,eAAe,CAAA;AAE/D,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;;;;;;AAYO,MAAA,eAAA,CAAgB,OAAA,EAAqC;AAE3D,QAAA,oBAAA,CAAqB,OAAO,CAAA;AAE5B,QAAA,OAAA,CAAQ,GAAA,CAAI,IAAA,EAAM,eAAA,EAAiB,OAAO,CAAA;AAE1C,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;AAOO,MAAA,OAAA,CAAQ,OAAO,IAAA,EAAM;AAE3B,QAAA,YAAA,CAAa,IAAI,CAAA;AACjB,QAAA,OAAA,CAAQ,GAAA,CAAI,IAAA,EAAM,MAAA,EAAQ,IAAI,CAAA;AAC9B,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;;;MASO,MAAA,GAA0D;AAChEiH,QAAAA,2BAAAA,CAA2B,IAAA,CAAK,IAAA,EAAM,IAAA,CAAK,WAAA,EAAa,KAAK,OAAO,CAAA;AAEpE,QAAA,uBAAA,CAAwB,KAAK,kBAAkB,CAAA;AAC/C,QAAA,uBAAA,CAAwB,KAAK,yBAAyB,CAAA;AAEtD,QAAA,OAAO;UACN,GAAG,IAAA;AACH,UAAA,IAAA,EAAM,sBAAA,CAAuB,SAAA;AAC7B,UAAA,OAAA,EAAS,KAAK,OAAA,CAAQ,GAAA,CAAI,CAAC,MAAA,KAAW,MAAA,CAAO,QAAQ;AACtD,SAAA;AACD,MAAA;AACD,KAAA;AC1JO,IAAe,4BAAA,GAAf,cAAoD,wBAAA,CAAyB;MAPpF;AAOoF,QAAAjH,OAAAA,CAAA,MAAA,8BAAA,CAAA;AAAA;;;;;;MAWnE,QAAA,GAAoB,KAAA;;;;;;AAO7B,MAAA,WAAA,CAAY,QAAA,EAAmB;AAErC,QAAA,gBAAA,CAAiB,QAAQ,CAAA;AAEzB,QAAA,OAAA,CAAQ,GAAA,CAAI,IAAA,EAAM,UAAA,EAAY,QAAQ,CAAA;AAEtC,QAAA,OAAO,IAAA;AACR,MAAA;;;;MAcU,sBAAA,GAAyB;AAClCiH,QAAAA,2BAAAA,CAA2B,IAAA,CAAK,IAAA,EAAM,IAAA,CAAK,WAAA,EAAa,EAAE,CAAA;AAG1D,QAAA,uBAAA,CAAwB,KAAK,kBAAkB,CAAA;AAC/C,QAAA,uBAAA,CAAwB,KAAK,yBAAyB,CAAA;AAGtD,QAAA,gBAAA,CAAiB,KAAK,QAAQ,CAAA;AAC/B,MAAA;AACD,KAAA;AClDO,IAAM,4BAAA,GAAN,cAA2C,4BAAA,CAA6B;MAN/E;AAM+E,QAAAjH,OAAAA,CAAA,MAAA,8BAAA,CAAA;AAAA;;;;AAIrD,MAAA,IAAA,GAAO,4BAAA,CAA6B,UAAA;;;;MAKtD,MAAA,GAAgD;AACtD,QAAA,IAAA,CAAK,sBAAA,EAAuB;AAE5B,QAAA,OAAO,EAAE,GAAG,IAAA,EAAK;AAClB,MAAA;AACD,KAAA;ACdO,IAAM,yBAAA,GAAN,cAAwC,4BAAA,CAA6B;MAN5E;AAM4E,QAAAA,OAAAA,CAAA,MAAA,2BAAA,CAAA;AAAA;;;;AAI3D,MAAA,IAAA,GAAOiD,4BAAAA,CAA6B,OAAA;;;;MAK7C,MAAA,GAA6C;AACnD,QAAA,IAAA,CAAK,sBAAA,EAAuB;AAE5B,QAAA,OAAO,EAAE,GAAG,IAAA,EAAK;AAClB,MAAA;AACD,KAAA;ACVA,IAAM,mBAAA,GAAsB;MAC3BhC,WAAAA,CAAY,SAAA;MACZA,WAAAA,CAAY,UAAA;MACZA,WAAAA,CAAY,aAAA;MACZA,WAAAA,CAAY,iBAAA;MACZA,WAAAA,CAAY,kBAAA;MACZA,WAAAA,CAAY,YAAA;MACZA,WAAAA,CAAY,aAAA;MACZA,WAAAA,CAAY,eAAA;MACZA,WAAAA,CAAY,UAAA;MACZA,WAAAA,CAAY;AACb,KAAA;AAOA,IAAM,qBAAA,GAAwB/E,EAAAA,CAAE,KAAA,CAAMA,EAAAA,CAAE,MAAM,mBAAA,CAAoB,GAAA,CAAI,CAAC,IAAA,KAASA,EAAAA,CAAE,OAAA,CAAQ,IAAI,CAAC,CAAC,CAAC,CAAA;AAK1F,IAAM,4CAAN,MAAgD;MAjCvD;AAiCuD,QAAA8D,OAAAA,CAAA,MAAA,2CAAA,CAAA;AAAA;;;;AAItC,MAAA,aAAA;;;;;;AAOT,MAAA,eAAA,CAAA,GAAmB,YAAA,EAAwE;AACjG,QAAA,IAAI,IAAA,CAAK,kBAAkB,MAAA,EAAW;AACrC,UAAA,OAAA,CAAQ,GAAA,CAAI,IAAA,EAAM,eAAA,EAAiB,EAAE,CAAA;AACtC,QAAA;AAEA,QAAA,IAAA,CAAK,aAAA,CAAe,KAAK,GAAG,qBAAA,CAAsB,MAAM,cAAA,CAAe,YAAY,CAAC,CAAC,CAAA;AAErF,QAAA,OAAO,IAAA;AACR,MAAA;AACD,KAAA;AC5CO,IAAM,yBAAA,GAAN,cAAwC,4BAAA,CAA6B;;;;AAIlD,MAAA,IAAA,GAAOiD,4BAAAA,CAA6B,OAAA;;;;MAKtD,MAAA,GAA6C;AACnD,QAAA,IAAA,CAAK,sBAAA,EAAuB;AAE5B,QAAA,OAAO,EAAE,GAAG,IAAA,EAAK;AAClB,MAAA;AACD,KAAA;AAd4E,IAAAjD,OAAAA,CAAA,2BAAA,2BAAA,CAAA;AAA/D,IAAA,yBAAA,GAAN,eAAA,CAAA;AADN,MAAA,GAAA,CAAI,yCAAyC;AAAA,KAAA,EACjC,yBAAA,CAAA;ACNN,IAAe,kDAAf,MAA+D;MAHtE;AAGsE,QAAAA,OAAAA,CAAA,MAAA,iDAAA,CAAA;AAAA;;;;AAIrD,MAAA,SAAA;;;;AAKA,MAAA,SAAA;AAejB,KAAA;ACxBA,IAAMqH,iBAAAA,GAAmBnL,GAAE,OAAA,EAAQ;AAK5B,IAAM,gDAAN,MAAoD;MAR3D;AAQ2D,QAAA8D,OAAAA,CAAA,MAAA,+CAAA,CAAA;AAAA;;;;AAI1C,MAAA,YAAA;;;;;;AAOA,MAAA,IAAA;;;;;;AAOT,MAAA,eAAA,CAAgB,YAAA,EAA6B;AAEnDqH,QAAAA,iBAAAA,CAAiB,MAAM,YAAY,CAAA;AAEnC,QAAA,IAAI,YAAA,IAAgB,SAAA,IAAa,IAAA,IAAQ,KAAA,CAAM,OAAA,CAAQ,IAAA,CAAK,OAAO,CAAA,IAAK,IAAA,CAAK,OAAA,CAAQ,MAAA,GAAS,CAAA,EAAG;AAChG,UAAA,MAAM,IAAI,WAAW,gEAAgE,CAAA;AACtF,QAAA;AAEA,QAAA,OAAA,CAAQ,GAAA,CAAI,IAAA,EAAM,cAAA,EAAgB,YAAY,CAAA;AAE9C,QAAA,OAAO,IAAA;AACR,MAAA;AACD,KAAA;ACjCA,IAAM,eAAA,GAAkBnL,GAAE,MAAA,EAAO,CAAE,yBAAyB,CAAC,CAAA,CAAE,sBAAsB,GAAG,CAAA;AACxF,IAAM,eAAA,GAAkBA,EAAAA,CAAE,MAAA,EAAO,CAAE,WAAA,CAAY,OAAO,iBAAiB,CAAA,CAAE,QAAA,CAAS,MAAA,CAAO,iBAAiB,CAAA;AAC1G,IAAM,gBAAA,GAAmBA,GACvB,MAAA,CAAO;MACP,IAAA,EAAM,eAAA;MACN,kBAAA,EAAoB,wBAAA;AACpB,MAAA,KAAA,EAAOA,EAAAA,CAAE,KAAA,CAAM,CAAC,eAAA,EAAiB,eAAe,CAAC;AAClD,KAAC,EACA,KAAA,EAAM;AAKD,IAAM,2CAAN,MAAmF;MAlB1F;AAkB0F,QAAA8D,OAAAA,CAAA,MAAA,0CAAA,CAAA;AAAA;;;;AAIzE,MAAA,OAAA;;;;;;AAOA,MAAA,IAAA;;;;;;AAOT,MAAA,UAAA,CAAA,GAAc,OAAA,EAA2E;AAC/F,QAAA,MAAM,iBAAA,GAAoB,eAAe,OAAO,CAAA;AAChD,QAAA,IAAI,kBAAkB,MAAA,GAAS,CAAA,IAAK,cAAA,IAAkB,IAAA,IAAQ,KAAK,YAAA,EAAc;AAChF,UAAA,MAAM,IAAI,WAAW,gEAAgE,CAAA;AACtF,QAAA;AAEA,QAAA,gBAAA,CAAiB,MAAM,iBAAiB,CAAA;AAExC,QAAA,IAAI,IAAA,CAAK,YAAY,MAAA,EAAW;AAC/B,UAAA,OAAA,CAAQ,GAAA,CAAI,IAAA,EAAM,SAAA,EAAW,EAAE,CAAA;AAChC,QAAA;AAEA,QAAA,qBAAA,CAAsB,iBAAA,CAAkB,MAAA,EAAQ,IAAA,CAAK,OAAO,CAAA;AAE5D,QAAA,KAAA,MAAW,EAAE,IAAA,EAAM,kBAAA,EAAoB,KAAA,MAAW,iBAAA,EAAmB;AAEpE,UAAA,IAAI,IAAA,CAAK,IAAA,KAASiD,4BAAAA,CAA6B,MAAA,EAAQ;AACtD,YAAA,eAAA,CAAgB,MAAM,KAAK,CAAA;UAC5B,CAAA,MAAO;AACN,YAAA,eAAA,CAAgB,MAAM,KAAK,CAAA;AAC5B,UAAA;AAEA,UAAA,IAAA,CAAK,QAAS,IAAA,CAAK,EAAE,IAAA,EAAM,kBAAA,EAAoB,OAAO,CAAA;AACvD,QAAA;AAEA,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;AAOO,MAAA,UAAA,CAAA,GAA2E,OAAA,EAAmC;AACpH,QAAA,MAAM,iBAAA,GAAoB,eAAe,OAAO,CAAA;AAChD,QAAA,IAAI,kBAAkB,MAAA,GAAS,CAAA,IAAK,cAAA,IAAkB,IAAA,IAAQ,KAAK,YAAA,EAAc;AAChF,UAAA,MAAM,IAAI,WAAW,gEAAgE,CAAA;AACtF,QAAA;AAEA,QAAA,gBAAA,CAAiB,MAAM,iBAAiB,CAAA;AAExC,QAAA,OAAA,CAAQ,GAAA,CAAI,IAAA,EAAM,SAAA,EAAW,EAAE,CAAA;AAC/B,QAAA,IAAA,CAAK,WAAW,iBAAiB,CAAA;AAEjC,QAAA,OAAO,IAAA;AACR,MAAA;AACD,KAAA;AC1EA,IAAM,eAAA,GAAkB/G,EAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI;AAUhC,IAAM,yBAAA,GAAN,cACE,4BAAA,CAET;;;;AAIiB,MAAA,IAAA,GAAO+G,4BAAAA,CAA6B,OAAA;;;;AAK7C,MAAA,WAAA,CAAY,GAAA,EAAmB;AACrC,QAAA,eAAA,CAAgB,MAAM,GAAG,CAAA;AAEzB,QAAA,OAAA,CAAQ,GAAA,CAAI,IAAA,EAAM,WAAA,EAAa,GAAG,CAAA;AAElC,QAAA,OAAO,IAAA;AACR,MAAA;;;;AAKO,MAAA,WAAA,CAAY,GAAA,EAAmB;AACrC,QAAA,eAAA,CAAgB,MAAM,GAAG,CAAA;AAEzB,QAAA,OAAA,CAAQ,GAAA,CAAI,IAAA,EAAM,WAAA,EAAa,GAAG,CAAA;AAElC,QAAA,OAAO,IAAA;AACR,MAAA;;;;MAKO,MAAA,GAA6C;AACnD,QAAA,IAAA,CAAK,sBAAA,EAAuB;AAE5B,QAAA,IAAI,IAAA,CAAK,YAAA,IAAgB,KAAA,CAAM,OAAA,CAAQ,IAAA,CAAK,OAAO,CAAA,IAAK,IAAA,CAAK,OAAA,CAAQ,MAAA,GAAS,CAAA,EAAG;AAChF,UAAA,MAAM,IAAI,WAAW,gEAAgE,CAAA;AACtF,QAAA;AAEA,QAAA,OAAO,EAAE,GAAG,IAAA,EAAK;AAClB,MAAA;AACD,KAAA;AAxCA,IAAAjD,OAAAA,CAAA,2BAAA,2BAAA,CAAA;AAHa,IAAA,yBAAA,GAAN,eAAA,CAAA;AALNsI,MAAAA,GAAAA;AACA,QAAA,+CAAA;AACA,QAAA,6CAAA;AACA,QAAA;AACD;AAAA,KAAA,EACa,yBAAA,CAAA;ACZN,IAAM,6BAAA,GAAN,cAA4C,4BAAA,CAA6B;MANhF;AAMgF,QAAAtI,OAAAA,CAAA,MAAA,+BAAA,CAAA;AAAA;;;;AAI/D,MAAA,IAAA,GAAOiD,4BAAAA,CAA6B,WAAA;;;;MAK7C,MAAA,GAAiD;AACvD,QAAA,IAAA,CAAK,sBAAA,EAAuB;AAE5B,QAAA,OAAO,EAAE,GAAG,IAAA,EAAK;AAClB,MAAA;AACD,KAAA;ACZA,IAAM6E,gBAAAA,GAAkB5L,GAAE,MAAA,EAAO;AAU1B,IAAM,wBAAA,GAAN,cACE,4BAAA,CAET;;;;AAIiB,MAAA,IAAA,GAAO+G,4BAAAA,CAA6B,MAAA;;;;AAK7C,MAAA,WAAA,CAAY,GAAA,EAAmB;AACrC6E,QAAAA,gBAAAA,CAAgB,MAAM,GAAG,CAAA;AAEzB,QAAA,OAAA,CAAQ,GAAA,CAAI,IAAA,EAAM,WAAA,EAAa,GAAG,CAAA;AAElC,QAAA,OAAO,IAAA;AACR,MAAA;;;;AAKO,MAAA,WAAA,CAAY,GAAA,EAAmB;AACrCA,QAAAA,gBAAAA,CAAgB,MAAM,GAAG,CAAA;AAEzB,QAAA,OAAA,CAAQ,GAAA,CAAI,IAAA,EAAM,WAAA,EAAa,GAAG,CAAA;AAElC,QAAA,OAAO,IAAA;AACR,MAAA;;;;MAKO,MAAA,GAA4C;AAClD,QAAA,IAAA,CAAK,sBAAA,EAAuB;AAE5B,QAAA,IAAI,IAAA,CAAK,YAAA,IAAgB,KAAA,CAAM,OAAA,CAAQ,IAAA,CAAK,OAAO,CAAA,IAAK,IAAA,CAAK,OAAA,CAAQ,MAAA,GAAS,CAAA,EAAG;AAChF,UAAA,MAAM,IAAI,WAAW,gEAAgE,CAAA;AACtF,QAAA;AAEA,QAAA,OAAO,EAAE,GAAG,IAAA,EAAK;AAClB,MAAA;AACD,KAAA;AAxCA,IAAA9H,OAAAA,CAAA,0BAAA,0BAAA,CAAA;AAHa,IAAA,wBAAA,GAAN,eAAA,CAAA;AALNsI,MAAAA,GAAAA;AACA,QAAA,+CAAA;AACA,QAAA,6CAAA;AACA,QAAA;AACD;AAAA,KAAA,EACa,wBAAA,CAAA;ACZN,IAAM,sBAAA,GAAN,cAAqC,4BAAA,CAA6B;MANzE;AAMyE,QAAAtI,OAAAA,CAAA,MAAA,wBAAA,CAAA;AAAA;;;;AAI/C,MAAA,IAAA,GAAOiD,4BAAAA,CAA6B,IAAA;;;;MAKtD,MAAA,GAA0C;AAChD,QAAA,IAAA,CAAK,sBAAA,EAAuB;AAE5B,QAAA,OAAO,EAAE,GAAG,IAAA,EAAK;AAClB,MAAA;AACD,KAAA;ACbA,IAAM8E,mBAAAA,GAAqB7L,GAAE,MAAA,EAAO,CAAE,mBAAmB,CAAC,CAAA,CAAE,gBAAgB,GAAK,CAAA;AACjF,IAAM8L,mBAAAA,GAAqB9L,GAAE,MAAA,EAAO,CAAE,mBAAmB,CAAC,CAAA,CAAE,gBAAgB,GAAK,CAAA;AAM1E,IAAM,wBAAA,GAAN,cAAuC,4BAAA,CAA6B;;;;AAI1D,MAAA,IAAA,GAAO+G,4BAAAA,CAA6B,MAAA;;;;AAKpC,MAAA,UAAA;;;;AAKA,MAAA,UAAA;;;;;;AAOT,MAAA,YAAA,CAAa,GAAA,EAAmB;AACtC+E,QAAAA,mBAAAA,CAAmB,MAAM,GAAG,CAAA;AAE5B,QAAA,OAAA,CAAQ,GAAA,CAAI,IAAA,EAAM,YAAA,EAAc,GAAG,CAAA;AAEnC,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;AAOO,MAAA,YAAA,CAAa,GAAA,EAAmB;AACtCD,QAAAA,mBAAAA,CAAmB,MAAM,GAAG,CAAA;AAE5B,QAAA,OAAA,CAAQ,GAAA,CAAI,IAAA,EAAM,YAAA,EAAc,GAAG,CAAA;AAEnC,QAAA,OAAO,IAAA;AACR,MAAA;;;;MAKO,MAAA,GAA4C;AAClD,QAAA,IAAA,CAAK,sBAAA,EAAuB;AAE5B,QAAA,IAAI,IAAA,CAAK,YAAA,IAAgB,KAAA,CAAM,OAAA,CAAQ,IAAA,CAAK,OAAO,CAAA,IAAK,IAAA,CAAK,OAAA,CAAQ,MAAA,GAAS,CAAA,EAAG;AAChF,UAAA,MAAM,IAAI,WAAW,gEAAgE,CAAA;AACtF,QAAA;AAEA,QAAA,OAAO,EAAE,GAAG,IAAA,EAAK;AAClB,MAAA;AACD,KAAA;AAtD2E,IAAA/H,OAAAA,CAAA,0BAAA,0BAAA,CAAA;AAA9D,IAAA,wBAAA,GAAN,eAAA,CAAA;AADNsI,MAAAA,GAAAA,CAAI,+CAA+C,wCAAwC;AAAA,KAAA,EAC/E,wBAAA,CAAA;ACRN,IAAM,sBAAA,GAAN,cAAqC,4BAAA,CAA6B;MANzE;AAMyE,QAAAtI,OAAAA,CAAA,MAAA,wBAAA,CAAA;AAAA;;;;AAIxD,MAAA,IAAA,GAAOiD,4BAAAA,CAA6B,IAAA;;;;MAK7C,MAAA,GAA0C;AAChD,QAAA,IAAA,CAAK,sBAAA,EAAuB;AAE5B,QAAA,OAAO,EAAE,GAAG,IAAA,EAAK;AAClB,MAAA;AACD,KAAA;ACFO,IAAM,4BAAN,MAEL;MApBF;AAoBE,QAAAjD,OAAAA,CAAA,MAAA,2BAAA,CAAA;AAAA;AACe,MAAA,OAAA;;;;;;AAOT,MAAA,gBAAA,CACN,KAAA,EACC;AACD,QAAA,OAAO,IAAA,CAAK,sBAAA,CAAuB,KAAA,EAAO,yBAAyB,CAAA;AACpE,MAAA;;;;;;AAOO,MAAA,aAAA,CAAc,KAAA,EAA+F;AACnH,QAAA,OAAO,IAAA,CAAK,sBAAA,CAAuB,KAAA,EAAO,sBAAsB,CAAA;AACjE,MAAA;;;;;;AAOO,MAAA,gBAAA,CACN,KAAA,EACC;AACD,QAAA,OAAO,IAAA,CAAK,sBAAA,CAAuB,KAAA,EAAO,yBAAyB,CAAA;AACpE,MAAA;;;;;;AAOO,MAAA,aAAA,CAAc,KAAA,EAA+F;AACnH,QAAA,OAAO,IAAA,CAAK,sBAAA,CAAuB,KAAA,EAAO,sBAAsB,CAAA;AACjE,MAAA;;;;;;AAOO,MAAA,mBAAA,CACN,KAAA,EACC;AACD,QAAA,OAAO,IAAA,CAAK,sBAAA,CAAuB,KAAA,EAAO,4BAA4B,CAAA;AACvE,MAAA;;;;;;AAOO,MAAA,oBAAA,CACN,KAAA,EACC;AACD,QAAA,OAAO,IAAA,CAAK,sBAAA,CAAuB,KAAA,EAAO,6BAA6B,CAAA;AACxE,MAAA;;;;;;AAOO,MAAA,eAAA,CACN,KAAA,EACC;AACD,QAAA,OAAO,IAAA,CAAK,sBAAA,CAAuB,KAAA,EAAO,wBAAwB,CAAA;AACnE,MAAA;;;;;;AAOO,MAAA,gBAAA,CACN,KAAA,EACC;AACD,QAAA,OAAO,IAAA,CAAK,sBAAA,CAAuB,KAAA,EAAO,yBAAyB,CAAA;AACpE,MAAA;;;;;;AAOO,MAAA,eAAA,CACN,KAAA,EACC;AACD,QAAA,OAAO,IAAA,CAAK,sBAAA,CAAuB,KAAA,EAAO,wBAAwB,CAAA;AACnE,MAAA;;;;;;;;AASQ,MAAA,sBAAA,CACP,OACA,QAAA,EACyB;AACzB,QAAA,MAAM,EAAE,OAAA,EAAA7G,QAAAA,EAAQ,GAAI,IAAA;AAGpB,QAAA,wBAAA,CAAyBA,QAAO,CAAA;AAGhC,QAAA,MAAM,MAAA,GAAS,OAAO,KAAA,KAAU,UAAA,GAAa,MAAM,IAAI,QAAA,EAAU,CAAA,GAAI,KAAA;AAErEgO,QAAAA,sBAAAA,CAAsB,QAAQ,QAAQ,CAAA;AAGtC,QAAAhO,QAAAA,CAAQ,KAAK,MAAM,CAAA;AAEnB,QAAA,OAAO,IAAA;AACR,MAAA;AACD,KAAA;AC9HO,IAAM,qCAAN,MAAmF;;;;MAIzE,IAAA,GAAe,MAAA;;;;MAKf,WAAA,GAAsB,MAAA;;;;AAKtB,MAAA,OAAA,GAA2C,EAAC;;;;;;AAOrD,MAAA,aAAA,CACN,KAAA,EAGC;AACD,QAAA,MAAM,EAAE,OAAA,EAAAA,QAAAA,EAAQ,GAAI,IAAA;AAGpB,QAAA,wBAAA,CAAyBA,QAAO,CAAA;AAIhC,QAAA,MAAM,MAAA,GAAS,OAAO,KAAA,KAAU,UAAA,GAAa,MAAM,IAAI,6BAAA,EAA+B,CAAA,GAAI,KAAA;AAG1FgO,QAAAA,sBAAAA,CAAsB,QAAQ,6BAA6B,CAAA;AAG3D,QAAAhO,QAAAA,CAAQ,KAAK,MAAM,CAAA;AAEnB,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;;;MASO,MAAA,GAAqD;AAC3D8N,QAAAA,2BAAAA,CAA2B,IAAA,CAAK,IAAA,EAAM,IAAA,CAAK,WAAA,EAAa,KAAK,OAAO,CAAA;AAEpE,QAAA,OAAO;AACN,UAAA,IAAA,EAAMhE,4BAAAA,CAA6B,eAAA;AACnC,UAAA,IAAA,EAAM,IAAA,CAAK,IAAA;AACX,UAAA,kBAAA,EAAoB,IAAA,CAAK,kBAAA;AACzB,UAAA,WAAA,EAAa,IAAA,CAAK,WAAA;AAClB,UAAA,yBAAA,EAA2B,IAAA,CAAK,yBAAA;AAChC,UAAA,OAAA,EAAS,KAAK,OAAA,CAAQ,GAAA,CAAI,CAAC,MAAA,KAAW,MAAA,CAAO,QAAQ;AACtD,SAAA;AACD,MAAA;AACD,KAAA;AA/D0F,IAAAjD,OAAAA,CAAA,oCAAA,oCAAA,CAAA;AAA7E,IAAA,kCAAA,GAAN,eAAA,CAAA;AADNsI,MAAAA,GAAAA,CAAI,wBAAwB;AAAA,KAAA,EAChB,kCAAA,CAAA;AAyEN,IAAM,gCAAN,MAA8E;;;;MAIpE,IAAA,GAAe,MAAA;;;;MAKf,WAAA,GAAsB,MAAA;;;;AAKtB,MAAA,OAAA,GAA0C,EAAC;;;;;;;;MASpD,MAAA,GAAgD;AACtDrB,QAAAA,2BAAAA,CAA2B,IAAA,CAAK,IAAA,EAAM,IAAA,CAAK,WAAA,EAAa,KAAK,OAAO,CAAA;AAEpE,QAAA,OAAO;AACN,UAAA,IAAA,EAAMhE,4BAAAA,CAA6B,UAAA;AACnC,UAAA,IAAA,EAAM,IAAA,CAAK,IAAA;AACX,UAAA,kBAAA,EAAoB,IAAA,CAAK,kBAAA;AACzB,UAAA,WAAA,EAAa,IAAA,CAAK,WAAA;AAClB,UAAA,yBAAA,EAA2B,IAAA,CAAK,yBAAA;AAChC,UAAA,OAAA,EAAS,KAAK,OAAA,CAAQ,GAAA,CAAI,CAAC,MAAA,KAAW,MAAA,CAAO,QAAQ;AACtD,SAAA;AACD,MAAA;AACD,KAAA;AAnCqF,IAAAjD,OAAAA,CAAA,+BAAA,+BAAA,CAAA;AAAxE,IAAA,6BAAA,GAAN,eAAA,CAAA;AADNsI,MAAAA,GAAAA,CAAI,0BAA0B,yBAAyB;AAAA,KAAA,EAC3C,6BAAA,CAAA;AClFN,IAAM,gCAAN,MAEL;MAXF;AAWE,QAAAtI,OAAAA,CAAA,MAAA,+BAAA,CAAA;AAAA;AACe,MAAA,OAAA,GAA4C,EAAC;;;;;;AAOtD,MAAA,kBAAA,CACN,KAAA,EAG6B;AAC7B,QAAA,MAAM,EAAE,OAAA,EAAA7G,QAAAA,EAAQ,GAAI,IAAA;AAGpB,QAAA,wBAAA,CAAyBA,QAAO,CAAA;AAGhC,QAAA,MAAM,MAAA,GAAS,OAAO,KAAA,KAAU,UAAA,GAAa,MAAM,IAAI,kCAAA,EAAoC,CAAA,GAAI,KAAA;AAE/FgO,QAAAA,sBAAAA,CAAsB,QAAQ,kCAAkC,CAAA;AAGhE,QAAAhO,QAAAA,CAAQ,KAAK,MAAM,CAAA;AAEnB,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;AAOO,MAAA,aAAA,CACN,KAAA,EAG6B;AAC7B,QAAA,MAAM,EAAE,OAAA,EAAAA,QAAAA,EAAQ,GAAI,IAAA;AAGpB,QAAA,wBAAA,CAAyBA,QAAO,CAAA;AAGhC,QAAA,MAAM,MAAA,GAAS,OAAO,KAAA,KAAU,UAAA,GAAa,MAAM,IAAI,6BAAA,EAA+B,CAAA,GAAI,KAAA;AAE1FgO,QAAAA,sBAAAA,CAAsB,QAAQ,6BAA6B,CAAA;AAG3D,QAAAhO,QAAAA,CAAQ,KAAK,MAAM,CAAA;AAEnB,QAAA,OAAO,IAAA;AACR,MAAA;AACD,KAAA;AChDO,IAAM,sBAAN,MAA0B;;;;MAIhB,IAAA,GAAe,MAAA;;;;AAKf,MAAA,kBAAA;;;;MAKA,WAAA,GAAsB,MAAA;;;;AAKtB,MAAA,yBAAA;;;;AAKA,MAAA,OAAA,GAA4C,EAAC;;;;AAK7C,MAAA,QAAA;;;;;;MAOA,kBAAA,GAA0C,MAAA;;;;MAK1C,0BAAA,GAA6D,MAAA;;;;;;;;;MAU7D,aAAA,GAAqC,MAAA;;;;AAKrC,MAAA,iBAAA;;;;MAKA,IAAA,GAA4B,MAAA;AAC7C,KAAA;AA9DiC,IAAA6G,OAAAA,CAAA,qBAAA,qBAAA,CAAA;AAApB,IAAA,mBAAA,GAAN,eAAA,CAAA;MADNsI,GAAAA,CAAI,yBAAA,EAA2B,wBAAA,EAA0B,6BAAA,EAA+B,kBAAkB;AAAA,KAAA,EAC9F,mBAAA,CAAA;A7CjBb,IAAAV,uBAAA,EAAA;AAAA,IAAAQ,UAAAR,oBAAAA,EAAA;AAAA,MAAA,iBAAA,EAAA,MAAAK,kBAAAA;AAAA,MAAA,yBAAA,EAAA,MAAAC,0BAAAA;AAAA,MAAA,oBAAA,EAAA,MAAAV,qBAAAA;AAAA,MAAA,gCAAA,EAAA,MAAAE,iCAAAA;AAAA,MAAA,yBAAA,EAAA,MAAAN,0BAAAA;AAAA,MAAA,YAAA,EAAA,MAAAE,aAAAA;AAAA,MAAA,0BAAA,EAAA,MAAAL,2BAAAA;AAAA,MAAA,YAAA,EAAA,MAAA;KAAA,CAAA;AAKA,IAAMM,cAAAA,GAAgBrL,EAAAA,CACpB,MAAA,EAAO,CACP,yBAAyB,CAAC,CAAA,CAC1B,qBAAA,CAAsB,EAAE,CAAA,CACxB,KAAA,CAAM,IAAI,CAAA,CACV,qBAAqB,mBAAmB,CAAA;AAC1C,IAAM,gBAAgBA,EAAAA,CACpB,KAAA,CAAM,CAACA,EAAAA,CAAE,QAAQiH,sBAAAA,CAAuB,IAAI,CAAA,EAAGjH,EAAAA,CAAE,QAAQiH,sBAAAA,CAAuB,OAAO,CAAC,CAAC,CAAA,CACzF,qBAAqB,mBAAmB,CAAA;AAC1C,IAAMkE,iBAAAA,GAAmBnL,GAAE,OAAA,EAAQ;AAEnB,IAAA8D,OAAAA,CAAAoH,4BAAA,2BAAA,CAAA;AAIA,IAAApH,OAAAA,CAAAsH,eAAA,cAAA,CAAA;AAIA,IAAAtH,OAAAA,CAAA,cAAA,cAAA,CAAA;AAIA,IAAAA,OAAAA,CAAAiH,6BAAA,4BAAA,CAAA;AAQhB,IAAMQ,sBAAAA,GAAwBvL,EAAAA,CAAE,OAAA,EAAQ,CAAE,OAAA,EAAQ;AAElC,IAAA8D,OAAAA,CAAAwH,uBAAA,sBAAA,CAAA;AAIhB,IAAMG,0BAAAA,GAA4BzL,GAChC,KAAA,CAAM;AACNA,MAAAA,EAAAA,CAAE,QAAO,CAAE,SAAA,CAAU,CAAC,KAAA,KAAU,KAAA,CAAM,UAAU,CAAA;MAChDA,EAAAA,CACE,MAAA,GACA,OAAA,EAAQ,CACR,UAAU,CAAC,KAAA,KAAU,KAAA,CAAM,QAAA,EAAU,CAAA;MACvCA,EAAAA,CAAE,MAAA,EAAO,CAAE,KAAA,CAAM,OAAO;AACzB,KAAC,EACA,OAAA,EAAQ;AAEM,IAAA8D,OAAAA,CAAA0H,mCAAA,kCAAA,CAAA;AAIT,IAAMO,qBAAoB/L,EAAAA,CAAE,KAAA;AAClCA,MAAAA,EAAAA,CAAE,UAAA,CAAWmH,sBAAsB,CAAA,CAAE,oBAAA,CAAqB,mBAAmB;AAC9E,KAAA;AAEO,IAAM6E,6BAA4BhM,EAAAA,CAAE,KAAA;AAC1CA,MAAAA,EAAAA,CAAE,UAAA,CAAWkH,0BAA0B,CAAA,CAAE,oBAAA,CAAqB,mBAAmB;AAClF,KAAA;AiDhCO,KAAA,MAAgC;MA/BvC;AA+BuC,QAAApD,OAAAA,CAAA,MAAA,2BAAA,CAAA;AAAA;;;;MAItB,IAAA,GAAe,MAAA;;;;AAKf,MAAA,kBAAA;;;;MAKA,IAAA,GAA+B,MAAA;;;;AAK/B,MAAA,QAAA;;;;;;MAOA,kBAAA,GAA0C,MAAA;;;;MAK1C,0BAAA,GAA6D,MAAA;;;;;;;;;MAU7D,aAAA,GAAqC,MAAA;;;;AAKrC,MAAA,iBAAA;;;;;;AAOT,MAAA,WAAA,CAAA,GAAe,QAAA,EAA+C;AACpE,QAAA,OAAA,CAAQ,GAAA,CAAI,MAAM,UAAA,EAAYiI,kBAAAA,CAAkB,MAAM,cAAA,CAAe,QAAQ,CAAC,CAAC,CAAA;AAE/E,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;AAOO,MAAA,mBAAA,CAAA,GAAuB,gBAAA,EAA2D;AACxF,QAAA,OAAA,CAAQ,GAAA,CAAI,MAAM,mBAAA,EAAqBC,0BAAAA,CAA0B,MAAM,cAAA,CAAe,gBAAgB,CAAC,CAAC,CAAA;AAExG,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;AAOO,MAAA,OAAA,CAAQ,IAAA,EAAc;AAE5BZ,QAAAA,aAAAA,CAAa,IAAI,CAAA;AAEjB,QAAA,OAAA,CAAQ,GAAA,CAAI,IAAA,EAAM,MAAA,EAAQ,IAAI,CAAA;AAE9B,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;AAOO,MAAA,OAAA,CAAQ,IAAA,EAA8B;AAE5C,QAAA,YAAA,CAAa,IAAI,CAAA;AAEjB,QAAA,OAAA,CAAQ,GAAA,CAAI,IAAA,EAAM,MAAA,EAAQ,IAAI,CAAA;AAE9B,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;;;;;AAWO,MAAA,oBAAA,CAAqB,KAAA,EAAgB;AAE3CF,QAAAA,0BAAAA,CAA0B,KAAK,CAAA;AAE/B,QAAA,OAAA,CAAQ,GAAA,CAAI,IAAA,EAAM,oBAAA,EAAsB,KAAK,CAAA;AAE7C,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;;;;AAUO,MAAA,2BAAA,CAA4B,WAAA,EAA+D;AAEjG,QAAA,MAAM,eAAA,GAAkBM,kCAAiC,WAAW,CAAA;AAEpE,QAAA,OAAA,CAAQ,GAAA,CAAI,IAAA,EAAM,4BAAA,EAA8B,eAAe,CAAA;AAE/D,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;;;;;AAWO,MAAA,eAAA,CAAgB,OAAA,EAAqC;AAE3DF,QAAAA,qBAAAA,CAAqB,OAAO,CAAA;AAE5B,QAAA,OAAA,CAAQ,GAAA,CAAI,IAAA,EAAM,eAAA,EAAiB,OAAO,CAAA;AAE1C,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;;AAQO,MAAA,mBAAA,CAAoB,QAAsB,aAAA,EAA8B;AAC9E,QAAA,IAAI,CAAC,KAAK,kBAAA,EAAoB;AAC7B,UAAA,OAAA,CAAQ,GAAA,CAAI,IAAA,EAAM,oBAAA,EAAsB,EAAE,CAAA;AAC3C,QAAA;AAEA,QAAA,MAAM,YAAA,GAAe,eAAe,MAAM,CAAA;AAE1C,QAAA,IAAI,kBAAkB,IAAA,EAAM;AAC3B,UAAA,IAAA,CAAK,kBAAA,CAAoB,YAAY,CAAA,GAAI,IAAA;AACzC,UAAA,OAAO,IAAA;AACR,QAAA;AAEAF,QAAAA,aAAAA,CAAa,aAAa,CAAA;AAE1B,QAAA,IAAA,CAAK,kBAAA,CAAoB,YAAY,CAAA,GAAI,aAAA;AACzC,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;AAOO,MAAA,oBAAA,CAAqB,cAAA,EAAwC;AACnE,QAAA,IAAI,mBAAmB,IAAA,EAAM;AAC5B,UAAA,OAAA,CAAQ,GAAA,CAAI,IAAA,EAAM,oBAAA,EAAsB,IAAI,CAAA;AAC5C,UAAA,OAAO,IAAA;AACR,QAAA;AAEA,QAAA,OAAA,CAAQ,GAAA,CAAI,IAAA,EAAM,oBAAA,EAAsB,EAAE,CAAA;AAE1C,QAAA,KAAA,MAAW,IAAA,IAAQ,MAAA,CAAO,OAAA,CAAQ,cAAc,CAAA;AAC/C,UAAA,IAAA,CAAK,mBAAA,CAAoB,GAAI,IAAsC,CAAA;AACpE,QAAA,OAAO,IAAA;AACR,MAAA;;;;;;;;MASO,MAAA,GAA4D;AAClEL,QAAAA,2BAAAA,CAA2B,IAAA,CAAK,IAAA,EAAM,IAAA,CAAK,IAAI,CAAA;AAE/C,QAAA,uBAAA,CAAwB,KAAK,kBAAkB,CAAA;AAE/C,QAAA,OAAO,EAAE,GAAG,IAAA,EAAK;AAClB,MAAA;AACD,MAAA;AhDvOgB,IAAAjH,OAAAA,CAAA,aAAA,aAAA,CAAA;;;;;AiDPhB,IAUa,gBAAA,CAAA,CA2DA;AArEb,IAAA,aAAA,GAAA,KAAA,CAAA;AAAA,EAAA,kCAAA,GAAA;AAAA,IAAAmI,UAAAA,EAAAA;AAUO,IAAM,gBAAA,GAAsE;AAAA,MACjF,IAAI,qBAAoB,CACrB,OAAA,CAAQ,MAAM,CAAA,CACd,cAAA,CAAe,6CAA6C,CAAA,CAC5D,eAAA;AAAA,QAAgB,CAAC,GAAA,KAChB,GAAA,CACG,OAAA,CAAQ,SAAS,EACjB,cAAA,CAAe,+CAA+C,CAAA,CAC9D,WAAA,CAAY,IAAI;AAAA,OACrB,CACC,eAAA;AAAA,QAAgB,CAAC,GAAA,KAChB,GAAA,CACG,OAAA,CAAQ,SAAS,EACjB,cAAA,CAAe,mDAAmD,CAAA,CAClE,WAAA,CAAY,KAAK;AAAA,QAErB,MAAA,EAAO;AAAA,MAEV,IAAI,qBAAoB,CACrB,OAAA,CAAQ,OAAO,CAAA,CACf,cAAA,CAAe,0CAA0C,CAAA,CACzD,eAAA;AAAA,QAAgB,CAAC,GAAA,KAChB,GAAA,CACG,OAAA,CAAQ,QAAQ,EAChB,cAAA,CAAe,sCAAsC,CAAA,CACrD,WAAA,CAAY,IAAI;AAAA,OACrB,CACC,eAAA;AAAA,QAAgB,CAAC,GAAA,KAChB,GAAA,CACG,OAAA,CAAQ,SAAS,EACjB,cAAA,CAAe,mDAAmD,CAAA,CAClE,WAAA,CAAY,KAAK;AAAA,QAErB,MAAA,EAAO;AAAA,MAEV,IAAI,qBAAoB,CACrB,OAAA,CAAQ,OAAO,CAAA,CACf,cAAA,CAAe,gDAAgD,CAAA,CAC/D,eAAA;AAAA,QAAgB,CAAC,GAAA,KAChB,GAAA,CACG,OAAA,CAAQ,MAAM,EACd,cAAA,CAAe,kDAAkD,CAAA,CACjE,WAAA,CAAY,KAAK;AAAA,OACtB,CACC,eAAA;AAAA,QAAgB,CAAC,GAAA,KAChB,GAAA,CACG,OAAA,CAAQ,SAAS,EACjB,cAAA,CAAe,mDAAmD,CAAA,CAClE,WAAA,CAAY,KAAK;AAAA,QAErB,MAAA,EAAO;AAAA,MAEV,IAAI,qBAAoB,CACrB,OAAA,CAAQ,MAAM,CAAA,CACd,cAAA,CAAe,kDAAkD,CAAA,CACjE,MAAA;AAAO,KACZ;AAGO,IAAM,wBAAwB,gBAAA,CAAiB,GAAA,CAAI,CAAC5L,EAAAA,KAAMA,GAAE,IAAI,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACrEvE,IAAAgM,gBAAAA,GAAA,EAAA;AAAA,QAAA,CAAAA,gBAAAA,EAAA;AAAA,EAAA,cAAA,EAAA,MAAA;AAAA,CAAA,CAAA;AAAA,IA+Ba;AA/Bb,IAAAC,aAAAA,GAAA,KAAA,CAAA;AAAA,EAAA,iCAAA,GAAA;AASA,IAAA,iBAAA,EAAA;AACA,IAAAjN,eAAAA,EAAAA;AACA,IAAA,aAAA,EAAA;AAKA,IAAA,WAAA,EAAA;AAeO,IAAM,cAAA,GAAN,cAA6B,WAAA,CAAY;AAAA,MACtC,MAAA,GAAwB,IAAA;AAAA,MACf,KAAA;AAAA,MACA,QAAA;AAAA,MACA,OAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACT,kBAAkE,EAAC;AAAA,MAE3E,WAAA,CACEpC,QAAAA,EACA,WAAA,EACA,UAAA,EACA,MAAA,EACA;AACA,QAAA,KAAA,CAAM,SAAA,EAAW,SAAA,EAAW,WAAA,EAAa,UAAA,EAAY,MAAM,CAAA;AAC3D,QAAA,IAAA,CAAK,QAAQA,QAAAA,CAAQ,KAAA;AACrB,QAAA,IAAA,CAAK,WAAWA,QAAAA,CAAQ,QAAA;AACxB,QAAA,IAAA,CAAK,UAAUA,QAAAA,CAAQ,OAAA;AACvB,QAAA,IAAA,CAAK,SAAA,GAAY,IAAI,gBAAA,EAAiB;AACtC,QAAA,IAAA,CAAK,SAAA,GAAYA,SAAQ,gBAAA,IAAoB,IAAA;AAAA,MAC/C;AAAA,MAEA,MAAM,KAAA,GAAuB;AAE3B,QAAA,MAAM,KAAK,qBAAA,EAAsB;AAEjC,QAAA,MAAM,MAAA,GAAS,IAAI,MAAA,CAAO;AAAA,UACxB,OAAA,EAAS,CAACgH,iBAAAA,CAAkB,MAAM;AAAA,SACnC,CAAA;AAED,QAAA,MAAA,CAAO,EAAA,CAAGvG,MAAAA,CAAO,iBAAA,EAAmB,CAAC,WAAA,KAA6B;AAChE,UAAA,IAAI,CAAC,WAAA,CAAY,kBAAA,EAAmB,EAAG;AACvC,UAAA,KAAK,IAAA,CAAK,kBAAkB,WAAW,CAAA;AAAA,QACzC,CAAC,CAAA;AAED,QAAA,MAAA,CAAO,EAAA,CAAGA,MAAAA,CAAO,KAAA,EAAO,CAACD,IAAAA,KAAQ;AAC/B,UAAA,IAAA,CAAK,MAAA,CAAO,MAAM,sBAAA,EAAwB;AAAA,YACxC,SAAS,IAAA,CAAK,EAAA;AAAA,YACd,KAAKA,IAAAA,CAAI;AAAA,WACV,CAAA;AAAA,QACH,CAAC,CAAA;AAED,QAAA,MAAA,CAAO,EAAA,CAAGC,MAAAA,CAAO,IAAA,EAAM,CAAC,GAAA,KAAQ;AAC9B,UAAA,IAAA,CAAK,MAAA,CAAO,KAAK,wBAAA,EAA0B,EAAE,SAAS,IAAA,CAAK,EAAA,EAAI,KAAK,CAAA;AAAA,QACtE,CAAC,CAAA;AAGD,QAAA,MAAA,CAAO,IAAA,CAAK,EAAA,CAAG,aAAA,EAAe,CAAC,IAAA,KAAS;AACtC,UAAA,IAAA,CAAK,MAAA,CAAO,KAAK,sBAAA,EAAwB;AAAA,YACvC,SAAS,IAAA,CAAK,EAAA;AAAA,YACd,OAAO,IAAA,CAAK,KAAA;AAAA,YACZ,YAAY,IAAA,CAAK;AAAA,WAClB,CAAA;AAAA,QACH,CAAC,CAAA;AAED,QAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AAEd,QAAA,MAAM,MAAA,CAAO,KAAA,CAAM,IAAA,CAAK,KAAK,CAAA;AAC7B,QAAA,IAAA,CAAK,SAAS,mBAAmB,CAAA;AAAA,MACnC;AAAA,MAEA,MAAM,IAAA,GAAsB;AAC1B,QAAA,IAAI,KAAK,MAAA,EAAQ;AACf,UAAA,IAAA,CAAK,OAAO,OAAA,EAAQ;AACpB,UAAA,IAAA,CAAK,MAAA,GAAS,IAAA;AAAA,QAChB;AACA,QAAA,IAAA,CAAK,kBAAkB,EAAC;AACxB,QAAA,IAAA,CAAK,SAAS,SAAS,CAAA;AAAA,MACzB;AAAA,MAEA,MAAM,IAAA,CAAK,MAAA,EAAgB,OAAA,EAAyC;AAClE,QAAA,IAAI,CAAC,IAAA,CAAK,MAAA,EAAQ,MAAM,IAAI,aAAa,oBAAoB,CAAA;AAE7D,QAAA,IAAI;AACF,UAAA,MAAM,OAAO,MAAM,IAAA,CAAK,MAAA,CAAO,KAAA,CAAM,MAAM,MAAM,CAAA;AACjD,UAAA,MAAM,EAAA,GAAK,MAAM,IAAA,CAAK,QAAA,EAAS;AAE/B,UAAA,QAAQ,QAAQ,IAAA;AAAM,YACpB,KAAK,MAAA,EAAQ;AACX,cAAA,MAAM,IAAA,GAAO,KAAK,QAAA,CAAS,IAAA,CAAK,UAAU,UAAA,CAAW,OAAA,CAAQ,IAAI,CAAC,CAAA;AAClE,cAAA,MAAM,EAAA,CAAG,KAAK,IAAI,CAAA;AAClB,cAAA;AAAA,YACF;AAAA,YACA,KAAK,MAAA,EAAQ;AACX,cAAA,MAAM,OAAO,IAAA,CAAK,SAAA,CAAU,WAAW,OAAA,CAAQ,IAAA,EAAM,QAAQ,QAAQ,CAAA;AACrE,cAAA,MAAM,EAAA,CAAG,KAAK,IAAI,CAAA;AAClB,cAAA;AAAA,YACF;AAAA,YACA,KAAK,OAAA,EAAS;AACZ,cAAA,MAAM,OAAA,GAAU,KAAK,SAAA,CAAU,WAAA;AAAA,gBAC7B,OAAO,MAAA,CAAO,IAAI,KAAA,CAAM,OAAA,CAAQ,OAAO,CAAA,EAAG;AAAA,kBACxC,IAAA,EAAM,WAAA;AAAA,kBACN,SAAS,EAAC;AAAA,kBACV,KAAA,EAAO,OAAO,EAAC;AAAA,iBAChB;AAAA,eACH;AACA,cAAA,MAAM,EAAA,CAAG,KAAK,OAAO,CAAA;AACrB,cAAA;AAAA,YACF;AAAA;AACF,QACF,SAASD,IAAAA,EAAK;AACZ,UAAA,MAAM,IAAI,YAAA;AAAA,YACR,wBAAwB,MAAM,CAAA,CAAA;AAAA,YAC9BA,IAAAA,YAAe,QAAQA,IAAAA,GAAM;AAAA,WAC/B;AAAA,QACF;AAAA,MACF;AAAA,MAEA,UAAU,OAAA,EAAwD;AAChE,QAAA,IAAA,CAAK,eAAA,CAAgB,KAAK,OAAO,CAAA;AAAA,MACnC;AAAA;AAAA,MAIA,MAAc,kBAAkB,WAAA,EAAyD;AAEvF,QAAA,MAAM,YAAY,UAAA,EAAW;AAE7B,QAAA,MAAM,cAAc,WAAA,CAAY,WAAA;AAChC,QAAA,MAAM,MAAA,GAAS,YAAY,IAAA,CAAK,EAAA;AAChC,QAAA,MAAM,SAAA,GAAY,WAAA,CAAY,SAAA,IAAa,WAAA,CAAY,OAAA,IAAW,MAAA;AAGlE,QAAA,MAAM,IAAA,GAAO,IAAA,CAAK,gBAAA,CAAiB,WAAW,CAAA;AAE9C,QAAA,MAAM,GAAA,GAAuB;AAAA,UAC3B,IAAI,WAAA,CAAY,EAAA;AAAA,UAChB,MAAA;AAAA,UACA,SAAA;AAAA,UACA,IAAA;AAAA,UACA,SAAA,sBAAe,IAAA,EAAK;AAAA,UACpB,aAAa;AAAC,SAChB;AAGA,QAAA,KAAA,MAAWS,EAAAA,IAAK,IAAA,CAAK,eAAA,EAAiB,MAAMA,GAAE,GAAG,CAAA;AAIjD,QAAA,IAAI;AACF,UAAA,MAAM,MAAA,GAAS,EAAE,IAAA,EAAM,WAAA,EAAa,MAAM,IAAA,CAAK,WAAA,CAAY,WAAW,CAAA,EAAE;AACxE,UAAA,MAAM,GAAA,GAAM;AAAA,YACV,MAAA;AAAA,YACA,SAAS,MAAA,CAAO,IAAA;AAAA,YAChB,MAAM,MAAA,CAAO,IAAA;AAAA,YACb,SAAA;AAAA,YACA,OAAA,EAAS;AAAA,WACX;AAEA,UAAA,MAAM,MAAA,GAAS,MAAM,IAAA,CAAK,UAAA,CAAW,SAAS,GAAG,CAAA;AAEjD,UAAA,IAAI,OAAO,EAAA,EAAI;AACb,YAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,gBAAA,CAAiB,MAAA,CAAO,KAAK,CAAA;AAChD,YAAA,MAAM,WAAA,CAAY,SAAA,CAAU,IAAA,CAAK,QAAA,CAAS,KAAK,CAAC,CAAA;AAAA,UAClD,CAAA,MAAO;AACL,YAAA,MAAM,OAAA,GAAU,IAAA,CAAK,SAAA,CAAU,WAAA,CAAY,OAAO,KAAK,CAAA;AACvD,YAAA,MAAM,WAAA,CAAY,UAAU,OAAO,CAAA;AAAA,UACrC;AAAA,QACF,SAAST,IAAAA,EAAK;AACZ,UAAA,IAAA,CAAK,MAAA,CAAO,MAAM,2BAAA,EAA6B;AAAA,YAC7C,WAAA;AAAA,YACA,MAAA;AAAA,YACA,KAAKA,IAAAA,YAAe,KAAA,GAAQA,IAAAA,CAAI,OAAA,GAAU,OAAOA,IAAG;AAAA,WACrD,CAAA;AACD,UAAA,MAAM,WAAA,CAAY,SAAA,CAAU,gDAA2C,CAAA,CAAE,MAAM,MAAM;AAAA,UAErF,CAAC,CAAA;AAAA,QACH;AAAA,MACF;AAAA,MAEQ,iBAAiB,WAAA,EAAkD;AACzE,QAAA,MAAM,OAAO,WAAA,CAAY,WAAA;AACzB,QAAA,MAAM,OAAA,GAAU,WAAA,CAAY,OAAA,CAAQ,SAAA,CAAU,SAAS,CAAA;AACvD,QAAA,MAAM,MAAA,GAAS,WAAA,CAAY,OAAA,CAAQ,SAAA,CAAU,QAAQ,CAAA;AACrD,QAAA,MAAM,IAAA,GAAO,WAAA,CAAY,OAAA,CAAQ,SAAA,CAAU,MAAM,CAAA;AACjD,QAAA,MAAM,OAAA,GAAU,WAAA,CAAY,OAAA,CAAQ,SAAA,CAAU,SAAS,CAAA;AAEvD,QAAA,MAAM,KAAA,GAAQ,CAAC,CAAA,CAAA,EAAI,IAAI,CAAA,CAAE,CAAA;AACzB,QAAA,IAAI,OAAA,EAAS,KAAA,CAAM,IAAA,CAAK,OAAO,CAAA;AAC/B,QAAA,IAAI,MAAA,EAAQ,KAAA,CAAM,IAAA,CAAK,MAAM,CAAA;AAC7B,QAAA,IAAI,IAAA,EAAM,KAAA,CAAM,IAAA,CAAK,IAAI,CAAA;AACzB,QAAA,IAAI,OAAA,EAAS,KAAA,CAAM,IAAA,CAAK,CAAA,UAAA,EAAa,OAAO,CAAA,CAAE,CAAA;AAC9C,QAAA,OAAO,KAAA,CAAM,KAAK,GAAG,CAAA;AAAA,MACvB;AAAA,MAEQ,YAAY,WAAA,EAAoD;AACtE,QAAA,MAAM,OAAiB,EAAC;AACxB,QAAA,MAAM,OAAA,GAAU,WAAA,CAAY,OAAA,CAAQ,SAAA,CAAU,SAAS,CAAA;AACvD,QAAA,MAAM,MAAA,GAAS,WAAA,CAAY,OAAA,CAAQ,SAAA,CAAU,QAAQ,CAAA;AACrD,QAAA,MAAM,IAAA,GAAO,WAAA,CAAY,OAAA,CAAQ,SAAA,CAAU,MAAM,CAAA;AACjD,QAAA,MAAM,OAAA,GAAU,WAAA,CAAY,OAAA,CAAQ,SAAA,CAAU,SAAS,CAAA;AAEvD,QAAA,IAAI,OAAA,EAAS,IAAA,CAAK,IAAA,CAAK,GAAG,OAAA,CAAQ,MAAM,KAAK,CAAA,CAAE,MAAA,CAAO,OAAO,CAAC,CAAA;AAC9D,QAAA,IAAI,MAAA,EAAQ,IAAA,CAAK,IAAA,CAAK,MAAM,CAAA;AAC5B,QAAA,IAAI,IAAA,EAAM,IAAA,CAAK,IAAA,CAAK,IAAI,CAAA;AACxB,QAAA,IAAI,OAAA,EAAS,IAAA,CAAK,IAAA,CAAK,CAAA,UAAA,EAAa,OAAO,CAAA,CAAE,CAAA;AAC7C,QAAA,OAAO,IAAA;AAAA,MACT;AAAA,MAEQ,iBAAiB,GAAA,EAA8B;AACrD,QAAA,QAAQ,IAAI,IAAA;AAAM,UAChB,KAAK,MAAA;AACH,YAAA,OAAO,IAAA,CAAK,SAAA,CAAU,UAAA,CAAW,GAAA,CAAI,IAAI,CAAA;AAAA,UAC3C,KAAK,MAAA;AACH,YAAA,OAAO,KAAK,SAAA,CAAU,UAAA,CAAW,GAAA,CAAI,IAAA,EAAM,IAAI,QAAQ,CAAA;AAAA,UACzD,KAAK,OAAA;AACH,YAAA,OAAO,CAAA,OAAA,EAAK,IAAI,OAAO,CAAA,CAAA;AAAA;AAC3B,MACF;AAAA,MAEQ,SAAS,IAAA,EAAsB;AACrC,QAAA,IAAI,IAAA,CAAK,MAAA,IAAU,IAAA,CAAK,SAAA,EAAW,OAAO,IAAA;AAC1C,QAAA,OAAO,KAAK,KAAA,CAAM,CAAA,EAAG,IAAA,CAAK,SAAA,GAAY,EAAE,CAAA,GAAI,kBAAA;AAAA,MAC9C;AAAA;AAAA,MAIA,MAAc,qBAAA,GAAuC;AACnD,QAAA,MAAM,IAAA,GAAO,IAAI,IAAA,CAAK,EAAE,OAAA,EAAS,MAAM,CAAA,CAAE,QAAA,CAAS,IAAA,CAAK,KAAK,CAAA;AAE5D,QAAA,IAAI;AACF,UAAA,IAAI,KAAK,OAAA,EAAS;AAChB,YAAA,MAAM,IAAA,CAAK,IAAI8O,MAAAA,CAAO,wBAAA,CAAyB,KAAK,QAAA,EAAU,IAAA,CAAK,OAAO,CAAA,EAAG;AAAA,cAC3E,IAAA,EAAM;AAAA,aACP,CAAA;AACD,YAAA,IAAA,CAAK,QAAA,CAAS,CAAA,kCAAA,EAAqC,IAAA,CAAK,OAAO,CAAA,CAAA,CAAG,CAAA;AAAA,UACpE,CAAA,MAAO;AACL,YAAA,MAAM,KAAK,GAAA,CAAIA,MAAAA,CAAO,mBAAA,CAAoB,IAAA,CAAK,QAAQ,CAAA,EAAG;AAAA,cACxD,IAAA,EAAM;AAAA,aACP,CAAA;AACD,YAAA,IAAA,CAAK,SAAS,oCAAoC,CAAA;AAAA,UACpD;AAAA,QACF,SAAS9O,IAAAA,EAAK;AACZ,UAAA,MAAM,IAAI,YAAA;AAAA,YACR,mCAAA;AAAA,YACAA,IAAAA,YAAe,QAAQA,IAAAA,GAAM;AAAA,WAC/B;AAAA,QACF;AAAA,MACF;AAAA,KACF;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC3LA,SAAS2B,aAAY,KAAA,EAAuB;AAC1C,EAAA,IAAI,KAAA,GAAQ,IAAA,EAAM,OAAO,CAAA,EAAG,KAAK,CAAA,CAAA,CAAA;AACjC,EAAA,IAAI,KAAA,GAAQ,OAAO,IAAA,EAAM,OAAO,IAAI,KAAA,GAAQ,IAAA,EAAM,OAAA,CAAQ,CAAC,CAAC,CAAA,CAAA,CAAA;AAC5D,EAAA,OAAO,IAAI,KAAA,IAAS,IAAA,GAAO,IAAA,CAAA,EAAO,OAAA,CAAQ,CAAC,CAAC,CAAA,CAAA,CAAA;AAC9C;AAxFA,IAkBa,qBAAA,CAAA,CAEA;AApBb,IAAAC,eAAAA,GAAA,KAAA,CAAA;AAAA,EAAA,iCAAA,GAAA;AAEA,IAAA,WAAA,EAAA;AAgBO,IAAM,qBAAA,GAAwB,GAAA;AAE9B,IAAM,iBAAN,MAAkD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMvD,WAAW,IAAA,EAAsB;AAC/B,QAAA,OAAO,IAAA,CACJ,OAAA,CAAQ,IAAA,EAAM,OAAO,CAAA,CACrB,OAAA,CAAQ,IAAA,EAAM,MAAM,CAAA,CACpB,OAAA,CAAQ,IAAA,EAAM,MAAM,CAAA;AAAA,MACzB;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,UAAA,CAAW,MAAc,QAAA,EAA2B;AAGlD,QAAA,MAAM,QAAA,GAAW,IAAA,CAAK,OAAA,CAAQ,MAAA,EAAQ,KAAK,CAAA;AAC3C,QAAA,MAAM,OAAA,GAAU,CAAA;AAAA,EAAW,QAAQ;AAAA,MAAA,CAAA;AAEnC,QAAA,IAAI,OAAA,CAAQ,MAAA,IAAU,qBAAA,EAAuB,OAAO,OAAA;AAEpD,QAAA,MAAM,UAAU,qBAAA,GAAwB,EAAA;AACxC,QAAA,OAAO,CAAA;AAAA,EAAW,QAAA,CAAS,KAAA,CAAM,CAAA,EAAG,OAAO,CAAC;AAAA;AAAA,MAAA,CAAA;AAAA,MAC9C;AAAA;AAAA;AAAA;AAAA,MAKA,YAAY,KAAA,EAAyB;AACnC,QAAA,IAAI,iBAAiB,qBAAA,EAAuB;AAC1C,UAAA,MAAM,QAAA,GAAW,KAAA,CAAM,OAAA,CAAQ,UAAU,CAAA;AACzC,UAAA,OAAO,4DAAuD,QAAQ,CAAA,EAAA,CAAA;AAAA,QACxE;AACA,QAAA,IAAI,iBAAiB,oBAAA,EAAsB;AACzC,UAAA,MAAM,GAAA,GAAM,KAAA,CAAM,OAAA,CAAQ,SAAS,CAAA;AACnC,UAAA,OAAO,iCAAiC,GAAG,CAAA,6CAAA,CAAA;AAAA,QAC7C;AACA,QAAA,IAAI,iBAAiB,gBAAA,EAAkB;AACrC,UAAA,OAAO,CAAA,UAAA,EAAa,IAAA,CAAK,UAAA,CAAW,KAAA,CAAM,OAAO,CAAC,CAAA,CAAA;AAAA,QACpD;AACA,QAAA,IAAI,iBAAiB,mBAAA,EAAqB;AACxC,UAAA,OAAO,CAAA,yCAAA,EAAuC,IAAA,CAAK,UAAA,CAAW,KAAA,CAAM,OAAO,CAAC,CAAA,CAAA;AAAA,QAC9E;AACA,QAAA,IAAI,iBAAiB,cAAA,EAAgB;AACnC,UAAA,OAAO,CAAA,uEAAA,CAAA;AAAA,QACT;AAEA,QAAA,OAAO,CAAA,2CAAA,CAAA;AAAA,MACT;AAAA;AAAA;AAAA;AAAA,MAKA,eAAA,CAAgB,IAAA,EAAc,KAAA,EAAgB,IAAA,EAAuB;AACnE,QAAA,MAAM,IAAA,GAAO,QAAQ,eAAA,GAAkB,kBAAA;AACvC,QAAA,MAAM,OAAA,GAAU,SAAS,MAAA,IAAa,CAAC,QAAQ,CAAA,EAAA,EAAKD,YAAAA,CAAY,IAAI,CAAC,CAAA,CAAA,CAAA,GAAM,EAAA;AAC3E,QAAA,OAAO,CAAA,EAAG,IAAI,CAAA,GAAA,EAAM,IAAI,KAAK,OAAO,CAAA,CAAA;AAAA,MACtC;AAAA,KACF;AAAA,EAAA;AAAA,CAAA,CAAA;;;AClFA,IAAAiN,gBAAAA,GAAA,EAAA;AAAA,QAAA,CAAAA,gBAAAA,EAAA;AAAA,EAAA,YAAA,EAAA,MAAA;AAAA,CAAA,CAAA;AAAA,IAoBa;AApBb,IAAAC,aAAAA,GAAA,KAAA,CAAA;AAAA,EAAA,+BAAA,GAAA;AACA,IAAA,iBAAA,EAAA;AACA,IAAAjN,eAAAA,EAAAA;AAKA,IAAA,WAAA,EAAA;AAaO,IAAM,YAAA,GAAN,cAA2B,WAAA,CAAY;AAAA,MACpC,GAAA,GAAkB,IAAA;AAAA,MACT,KAAA;AAAA,MACA,QAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACT,kBAAkE,EAAC;AAAA,MAE3E,WAAA,CACEpC,QAAAA,EACA,WAAA,EACA,UAAA,EACA,MAAA,EACA;AACA,QAAA,KAAA,CAAM,OAAA,EAAS,OAAA,EAAS,WAAA,EAAa,UAAA,EAAY,MAAM,CAAA;AACvD,QAAA,IAAA,CAAK,QAAQA,QAAAA,CAAQ,KAAA;AACrB,QAAA,IAAA,CAAK,WAAWA,QAAAA,CAAQ,QAAA;AACxB,QAAA,IAAA,CAAK,SAAA,GAAY,IAAI,cAAA,EAAe;AACpC,QAAA,IAAA,CAAK,SAAA,GAAYA,SAAQ,gBAAA,IAAoB,IAAA;AAAA,MAC/C;AAAA,MAEA,MAAM,KAAA,GAAuB;AAC3B,QAAA,MAAM,GAAA,GAAM,IAAI,GAAA,CAAI;AAAA,UAClB,OAAO,IAAA,CAAK,KAAA;AAAA,UACZ,UAAU,IAAA,CAAK,QAAA;AAAA,UACf,UAAA,EAAY;AAAA,SACb,CAAA;AAGD,QAAA,GAAA,CAAI,OAAA,CAAQ,OAAO,EAAE,OAAA,EAAS,KAAI,KAAM;AAEtC,UAAA,IAAI,OAAA,CAAQ,YAAY,MAAA,EAAW;AACnC,UAAA,MAAM,QAAA,GAAW,OAAA;AACjB,UAAA,IAAI,CAAC,QAAA,CAAS,IAAA,IAAQ,CAAC,SAAS,IAAA,EAAM;AAEtC,UAAA,MAAM,WAAA,GAA+B;AAAA,YACnC,IAAI,QAAA,CAAS,EAAA;AAAA,YACb,QAAQ,QAAA,CAAS,IAAA;AAAA,YACjB,WAAW,QAAA,CAAS,OAAA;AAAA,YACpB,MAAM,QAAA,CAAS,IAAA;AAAA,YACf,SAAA,sBAAe,IAAA,EAAK;AAAA,YACpB,aAAa;AAAC,WAChB;AAEA,UAAA,KAAA,MAAWiB,EAAAA,IAAK,IAAA,CAAK,eAAA,EAAiB,MAAMA,GAAE,WAAW,CAAA;AAEzD,UAAA,MAAM,IAAA,CAAK,qBAAA,CAAsB,WAAA,EAAa,OAAO,IAAA,KAAS;AAC5D,YAAA,MAAM,IAAI,IAAI,CAAA;AAAA,UAChB,CAAC,CAAA;AAAA,QACH,CAAC,CAAA;AAGD,QAAA,MAAM,SAAA,GAAY,IAAI,SAAA,CAAU;AAAA,UAC9B,eAAe,OAAO,EAAE,GAAA,EAAK,QAAA,EAAU,qBAAoB,KAAM;AAC/D,YAAA,MAAM,SAAS,iBAAiB,CAAA;AAChC,YAAA,MAAM,mBAAA,CAAoB;AAAA,cACxB,OAAA,EAAS;AAAA,gBACP,EAAE,KAAA,EAAO,eAAA,EAAiB,OAAA,EAAS,cAAA,EAAe;AAAA,gBAClD,EAAE,KAAA,EAAO,YAAA,EAAc,OAAA,EAAS,UAAA,EAAW;AAAA,gBAC3C,EAAE,KAAA,EAAO,UAAA,EAAY,OAAA,EAAS,OAAA;AAAQ;AACxC,aACD,CAAA;AACD,YAAA,MAAM,IAAI,qDAAqD,CAAA;AAAA,UACjE,CAAA;AAAA,UAEA,oBAAA,EAAsB,OAAO,EAAE,iBAAA,EAAkB,KAAM;AACrD,YAAA,MAAM,iBAAA,EAAkB;AAAA,UAC1B,CAAA;AAAA,UAEA,WAAA,EAAa,OAAO,EAAE,OAAA,EAAS,KAAI,KAAM;AACvC,YAAA,MAAM,QAAA,GAAW,OAAA;AACjB,YAAA,IAAI,CAAC,QAAA,CAAS,IAAA,IAAQ,CAAC,SAAS,IAAA,EAAM;AAEtC,YAAA,MAAM,WAAA,GAA+B;AAAA,cACnC,IAAI,QAAA,CAAS,EAAA;AAAA,cACb,QAAQ,QAAA,CAAS,IAAA;AAAA,cACjB,WAAW,QAAA,CAAS,OAAA;AAAA,cACpB,MAAM,QAAA,CAAS,IAAA;AAAA,cACf,SAAA,sBAAe,IAAA,EAAK;AAAA,cACpB,aAAa;AAAC,aAChB;AAEA,YAAA,MAAM,IAAA,CAAK,qBAAA,CAAsB,WAAA,EAAa,OAAO,IAAA,KAAS;AAC5D,cAAA,MAAM,IAAI,IAAI,CAAA;AAAA,YAChB,CAAC,CAAA;AAAA,UACH;AAAA,SACD,CAAA;AAED,QAAA,GAAA,CAAI,UAAU,SAAS,CAAA;AAGvB,QAAA,GAAA,CAAI,KAAA,CAAM,OAAOT,IAAAA,KAAQ;AACvB,UAAA,IAAA,CAAK,MAAA,CAAO,MAAM,iBAAA,EAAmB;AAAA,YACnC,SAAS,IAAA,CAAK,EAAA;AAAA,YACd,KAAKA,IAAAA,CAAI,OAAA;AAAA,YACT,MAAOA,IAAAA,CAA0B;AAAA,WAClC,CAAA;AAAA,QACH,CAAC,CAAA;AAED,QAAA,IAAA,CAAK,GAAA,GAAM,GAAA;AAGX,QAAA,MAAM,IAAI,KAAA,EAAM;AAChB,QAAA,IAAA,CAAK,SAAS,uBAAuB,CAAA;AAAA,MACvC;AAAA,MAEA,MAAM,IAAA,GAAsB;AAC1B,QAAA,IAAI,KAAK,GAAA,EAAK;AACZ,UAAA,MAAM,IAAA,CAAK,IAAI,IAAA,EAAK;AACpB,UAAA,IAAA,CAAK,GAAA,GAAM,IAAA;AAAA,QACb;AACA,QAAA,IAAA,CAAK,kBAAkB,EAAC;AACxB,QAAA,IAAA,CAAK,SAAS,SAAS,CAAA;AAAA,MACzB;AAAA,MAEA,MAAM,IAAA,CAAK,MAAA,EAAgB,OAAA,EAAyC;AAClE,QAAA,IAAI,CAAC,IAAA,CAAK,GAAA,EAAK,MAAM,IAAI,WAAW,iBAAiB,CAAA;AAErD,QAAA,IAAI;AACF,UAAA,MAAM,IAAA,GAAO,IAAA,CAAK,SAAA,CAAU,OAAO,CAAA;AACnC,UAAA,MAAM,IAAA,CAAK,GAAA,CAAI,MAAA,CAAO,IAAA,CAAK,WAAA,CAAY;AAAA,YACrC,OAAA,EAAS,MAAA;AAAA,YACT,IAAA,EAAM,IAAA,CAAK,QAAA,CAAS,IAAI;AAAA,WACzB,CAAA;AAAA,QACH,SAASA,IAAAA,EAAK;AACZ,UAAA,MAAM,IAAI,UAAA;AAAA,YACR,wBAAwB,MAAM,CAAA,CAAA;AAAA,YAC9BA,IAAAA,YAAe,QAAQA,IAAAA,GAAM;AAAA,WAC/B;AAAA,QACF;AAAA,MACF;AAAA,MAEA,UAAU,OAAA,EAAwD;AAChE,QAAA,IAAA,CAAK,eAAA,CAAgB,KAAK,OAAO,CAAA;AAAA,MACnC;AAAA;AAAA,MAIA,MAAc,qBAAA,CACZ,GAAA,EACA,GAAA,EACe;AACf,QAAA,MAAM,EAAE,YAAA,EAAA+O,aAAAA,EAAa,GAAI,MAAM,OAAA,CAAA,OAAA,EAAA,CAAA,IAAA,CAAA,OAAA,YAAA,EAAA,EAAA,eAAA,CAAA,CAAA;AAC/B,QAAA,MAAM,MAAA,GAASA,aAAAA,CAAa,GAAA,CAAI,IAAI,CAAA;AACpC,QAAA,IAAI,CAAC,MAAA,EAAQ;AAEb,QAAA,MAAM,GAAA,GAAM;AAAA,UACV,QAAQ,GAAA,CAAI,MAAA;AAAA,UACZ,SAAS,MAAA,CAAO,IAAA;AAAA,UAChB,MAAM,MAAA,CAAO,IAAA;AAAA,UACb,WAAW,GAAA,CAAI,SAAA;AAAA,UACf,OAAA,EAAS;AAAA,SACX;AAEA,QAAA,IAAI;AACF,UAAA,MAAM,MAAA,GAAS,MAAM,IAAA,CAAK,UAAA,CAAW,SAAS,GAAG,CAAA;AAEjD,UAAA,IAAI,OAAO,EAAA,EAAI;AACb,YAAA,MAAM,GAAA,CAAI,KAAK,QAAA,CAAS,IAAA,CAAK,UAAU,MAAA,CAAO,KAAK,CAAC,CAAC,CAAA;AAAA,UACvD,CAAA,MAAO;AACL,YAAA,MAAM,IAAI,IAAA,CAAK,SAAA,CAAU,WAAA,CAAY,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,UACpD;AAAA,QACF,SAAS/O,IAAAA,EAAK;AACZ,UAAA,IAAA,CAAK,MAAA,CAAO,MAAM,gCAAA,EAAkC;AAAA,YAClD,QAAQ,GAAA,CAAI,MAAA;AAAA,YACZ,KAAKA,IAAAA,YAAe,KAAA,GAAQA,IAAAA,CAAI,OAAA,GAAU,OAAOA,IAAG;AAAA,WACrD,CAAA;AACD,UAAA,MAAM,IAAI,6CAA6C,CAAA;AAAA,QACzD;AAAA,MACF;AAAA,MAEQ,UAAU,OAAA,EAAkC;AAClD,QAAA,QAAQ,QAAQ,IAAA;AAAM,UACpB,KAAK,MAAA;AACH,YAAA,OAAO,IAAA,CAAK,SAAA,CAAU,UAAA,CAAW,OAAA,CAAQ,IAAI,CAAA;AAAA,UAC/C,KAAK,MAAA;AACH,YAAA,OAAO,KAAK,SAAA,CAAU,UAAA,CAAW,OAAA,CAAQ,IAAA,EAAM,QAAQ,QAAQ,CAAA;AAAA,UACjE,KAAK,OAAA;AACH,YAAA,OAAO,CAAA,IAAA,EAAO,QAAQ,OAAO,CAAA,CAAA;AAAA;AACjC,MACF;AAAA,MAEQ,SAAS,IAAA,EAAsB;AACrC,QAAA,IAAI,IAAA,CAAK,MAAA,IAAU,IAAA,CAAK,SAAA,EAAW,OAAO,IAAA;AAC1C,QAAA,OAAO,KAAK,KAAA,CAAM,CAAA,EAAG,IAAA,CAAK,SAAA,GAAY,EAAE,CAAA,GAAI,qBAAA;AAAA,MAC9C;AAAA,KACF;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC9MA,WAAA,EAAA;ACEO,IAAM,qBAAA,GAAwB,EAAE,IAAA,CAAK,CAAC,QAAQ,MAAA,EAAQ,SAAA,EAAW,OAAA,EAAS,OAAO,CAAC;AAGlF,IAAM,gBAAA,GAAoD;AAAA,EAC/D,IAAA,EAAM,CAAA;AAAA,EACN,IAAA,EAAM,CAAA;AAAA,EACN,OAAA,EAAS,CAAA;AAAA,EACT,KAAA,EAAO,CAAA;AAAA,EACP,KAAA,EAAO;AACT;AAEO,IAAM,kBAAA,GAAqB,EAAE,MAAA,CAAO;AAAA,EACzC,QAAA,EAAU,CAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA;AAAA,EAC1B,UAAA,EAAY,CAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA;AAAA,EAC5B,QAAA,EAAU,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC9B,WAAA,EAAa,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA;AAC1B,CAAC;AAGM,IAAM,aAAA,GAAgB,EAAE,MAAA,CAAO;AAAA,EACpC,EAAA,EAAI,CAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA;AAAA,EACpB,QAAA,EAAU,kBAAA;AAAA,EACV,UAAA,EAAY,qBAAA;AAAA,EACZ,SAAA,EAAW,CAAA,CAAE,MAAA,CAAO,IAAA,EAAK;AAAA,EACzB,UAAA,EAAY,CAAA,CAAE,MAAA,CAAO,IAAA;AACvB,CAAC;;;ADpBM,IAAM,oBAAN,MAAwB;AAAA,EAG7B,WAAA,CACmB,aACA,MAAA,EACjB;AAFiB,IAAA,IAAA,CAAA,WAAA,GAAA,WAAA;AACA,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AAAA,EAChB;AAAA,EALc,QAAA,uBAAe,GAAA,EAA6B;AAAA,EAO7D,SAAS,OAAA,EAAgC;AACvC,IAAA,IAAA,CAAK,QAAA,CAAS,GAAA,CAAI,OAAA,CAAQ,IAAA,EAAM,OAAO,CAAA;AAAA,EACzC;AAAA,EAEA,MAAM,SAAS,GAAA,EAA6C;AAC1D,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,QAAA,CAAS,GAAA,CAAI,IAAI,OAAO,CAAA;AAC7C,IAAA,IAAI,CAAC,OAAA,EAAS;AACZ,MAAA,OAAO,EAAE,IAAI,KAAA,EAAO,KAAA,EAAO,IAAI,oBAAA,CAAqB,GAAA,CAAI,OAAO,CAAA,EAAE;AAAA,IACnE;AAGA,IAAA,MAAM,KAAK,WAAA,CAAY,eAAA,CAAgB,GAAA,CAAI,MAAA,EAAQ,QAAQ,kBAAkB,CAAA;AAE7E,IAAA,MAAM,KAAA,GAAQ,KAAK,GAAA,EAAI;AACvB,IAAA,IAAI;AACF,MAAA,MAAM,MAAA,GAAS,MAAM,OAAA,CAAQ,MAAA,CAAO,GAAG,CAAA;AACvC,MAAA,IAAA,CAAK,MAAA,CAAO,MAAM,mBAAA,EAAqB;AAAA,QACrC,SAAS,GAAA,CAAI,OAAA;AAAA,QACb,UAAA,EAAY,IAAA,CAAK,GAAA,EAAI,GAAI,KAAA;AAAA,QACzB,IAAI,MAAA,CAAO;AAAA,OACZ,CAAA;AACD,MAAA,OAAO,MAAA;AAAA,IACT,SAASA,IAAAA,EAAK;AACZ,MAAA,IAAA,CAAK,MAAA,CAAO,MAAM,eAAA,EAAiB;AAAA,QACjC,SAAS,GAAA,CAAI,OAAA;AAAA,QACb,UAAA,EAAY,IAAA,CAAK,GAAA,EAAI,GAAI,KAAA;AAAA,QACzB,KAAKA,IAAAA,YAAe,KAAA,GAAQA,IAAAA,CAAI,OAAA,GAAU,OAAOA,IAAG;AAAA,OACrD,CAAA;AACD,MAAA,MAAMA,IAAAA;AAAA,IACR;AAAA,EACF;AAAA,EAEA,cAAA,CAAe,gBAAiC,MAAA,EAAuB;AACrE,IAAA,MAAM,QAAA,GAAW,iBAAiB,aAAa,CAAA;AAC/C,IAAA,OAAO,CAAC,GAAG,IAAA,CAAK,SAAS,MAAA,EAAQ,EAC9B,MAAA,CAAO,CAACS,OAAM,gBAAA,CAAiBA,EAAAA,CAAE,kBAAkB,CAAA,IAAK,QAAA,GAAW,CAAC,CAAA,CACpE,GAAA,CAAI,CAACA,EAAAA,MAAO;AAAA,MACX,MAAMA,EAAAA,CAAE,IAAA;AAAA,MACR,aAAaA,EAAAA,CAAE,WAAA;AAAA,MACf,OAAOA,EAAAA,CAAE,KAAA;AAAA,MACT,oBAAoBA,EAAAA,CAAE;AAAA,KACxB,CAAE,CAAA;AAAA,EACN;AAAA,EAEA,WAAW,IAAA,EAAuB;AAChC,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,GAAA,CAAI,IAAI,CAAA;AAAA,EAC/B;AACF;;;AE9DA,WAAA,EAAA;AAQO,IAAM,0BAAN,MAAiE;AAAA,EACrD,KAAA,uBAAY,GAAA,EAA6B;AAAA,EAE1D,WAAA,CAAY,IAAA,GAAwC,EAAC,EAAG;AACtD,IAAA,KAAA,MAAW,CAAC,EAAA,EAAI,KAAK,KAAK,MAAA,CAAO,OAAA,CAAQ,IAAI,CAAA,EAAG;AAC9C,MAAA,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,EAAA,EAAI,KAAK,CAAA;AAAA,IAC1B;AAAA,EACF;AAAA,EAEA,MAAM,SAAS,MAAA,EAA0C;AACvD,IAAA,OAAO,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,MAAM,CAAA,IAAK,MAAA;AAAA,EACnC;AAAA,EAEA,MAAM,QAAA,CAAS,MAAA,EAAgB,KAAA,EAAuC;AACpE,IAAA,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,MAAA,EAAQ,KAAK,CAAA;AAAA,EAC9B;AAAA,EAEA,MAAM,WAAW,MAAA,EAA+B;AAC9C,IAAA,IAAA,CAAK,KAAA,CAAM,OAAO,MAAM,CAAA;AAAA,EAC1B;AACF;AAiBO,IAAM,cAAN,MAAkB;AAAA;AAAA,EAEN,KAAA,uBAAY,GAAA,EAAoB;AAAA;AAAA;AAAA;AAAA,EAKjD,OAAO,UAAA,CAAW,OAAA,EAAiB,MAAA,EAAwB;AACzD,IAAA,OAAO,CAAA,EAAG,OAAO,CAAA,CAAA,EAAI,MAAM,CAAA,CAAA;AAAA,EAC7B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,IAAA,CAAK,KAAa,GAAA,EAAmB;AACnC,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA;AAC/B,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA;AAC/B,IAAA,IAAI,WAAW,MAAA,EAAQ;AAGvB,IAAA,KAAA,MAAW,CAAC,GAAA,EAAK,GAAG,KAAK,IAAA,CAAK,KAAA,CAAM,SAAQ,EAAG;AAC7C,MAAA,IAAI,QAAQ,MAAA,EAAQ,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,KAAK,MAAM,CAAA;AAAA,IAChD;AACA,IAAA,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,GAAA,EAAK,MAAM,CAAA;AAC1B,IAAA,IAAI,CAAC,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,GAAG,GAAG,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,GAAA,EAAK,MAAM,CAAA;AAAA,EACtD;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,QAAQ,EAAA,EAAoB;AAC1B,IAAA,OAAO,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,EAAE,CAAA,IAAK,EAAA;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,OAAO,EAAA,EAAkB;AACvB,IAAA,IAAA,CAAK,KAAA,CAAM,OAAO,EAAE,CAAA;AAAA,EACtB;AAAA;AAAA;AAAA;AAAA,EAKA,eAAA,CAAgB,KAAa,GAAA,EAAsB;AACjD,IAAA,OAAO,KAAK,OAAA,CAAQ,GAAG,CAAA,KAAM,IAAA,CAAK,QAAQ,GAAG,CAAA;AAAA,EAC/C;AACF;AAaO,IAAM,oBAAN,MAAwB;AAAA,EAK7B,WAAA,CACmB,KAAA,EACjBjB,QAAAA,GAAoC,EAAC,EACrC;AAFiB,IAAA,IAAA,CAAA,KAAA,GAAA,KAAA;AAGjB,IAAA,IAAA,CAAK,WAAW,IAAI,GAAA,CAAIA,QAAAA,CAAQ,UAAA,IAAc,EAAE,CAAA;AAChD,IAAA,IAAA,CAAK,YAAA,GAAeA,SAAQ,YAAA,IAAgB,MAAA;AAC5C,IAAA,IAAA,CAAK,WAAA,GAAcA,QAAAA,CAAQ,WAAA,IAAe,IAAI,WAAA,EAAY;AAAA,EAC5D;AAAA,EAXiB,QAAA;AAAA,EACA,YAAA;AAAA,EACA,WAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAejB,MAAM,SAAS,MAAA,EAA0C;AACvD,IAAA,MAAM,SAAA,GAAY,IAAA,CAAK,WAAA,CAAY,OAAA,CAAQ,MAAM,CAAA;AACjD,IAAA,IAAI,IAAA,CAAK,QAAA,CAAS,GAAA,CAAI,SAAS,CAAA,IAAK,KAAK,QAAA,CAAS,GAAA,CAAI,MAAM,CAAA,EAAG,OAAO,OAAA;AACtE,IAAA,MAAM,MAAA,GAAS,MAAM,IAAA,CAAK,KAAA,CAAM,SAAS,SAAS,CAAA;AAClD,IAAA,IAAI,MAAA,KAAW,QAAQ,OAAO,MAAA;AAC9B,IAAA,OAAO,IAAA,CAAK,YAAA;AAAA,EACd;AAAA,EAEA,MAAM,QAAA,CAAS,MAAA,EAAgB,KAAA,EAAuC;AAEpE,IAAA,MAAM,SAAA,GAAY,IAAA,CAAK,WAAA,CAAY,OAAA,CAAQ,MAAM,CAAA;AACjD,IAAA,MAAM,IAAA,CAAK,KAAA,CAAM,QAAA,CAAS,SAAA,EAAW,KAAK,CAAA;AAAA,EAC5C;AAAA,EAEA,MAAM,WAAW,MAAA,EAA+B;AAC9C,IAAA,MAAM,SAAA,GAAY,IAAA,CAAK,WAAA,CAAY,OAAA,CAAQ,MAAM,CAAA;AACjD,IAAA,MAAM,IAAA,CAAK,KAAA,CAAM,UAAA,CAAW,SAAS,CAAA;AAAA,EACvC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,eAAA,CAAgB,MAAA,EAAgB,QAAA,EAA0C;AAC9E,IAAA,MAAM,MAAA,GAAS,MAAM,IAAA,CAAK,QAAA,CAAS,MAAM,CAAA;AACzC,IAAA,IAAI,gBAAA,CAAiB,MAAM,CAAA,GAAI,gBAAA,CAAiB,QAAQ,CAAA,EAAG;AACzD,MAAA,MAAM,IAAI,qBAAA,CAAsB,MAAA,EAAQ,QAAQ,CAAA;AAAA,IAClD;AAAA,EACF;AAAA,EAEA,MAAM,aAAA,CAAc,MAAA,EAAgB,QAAA,EAA6C;AAC/E,IAAA,MAAM,MAAA,GAAS,MAAM,IAAA,CAAK,QAAA,CAAS,MAAM,CAAA;AACzC,IAAA,OAAO,gBAAA,CAAiB,MAAM,CAAA,IAAK,gBAAA,CAAiB,QAAQ,CAAA;AAAA,EAC9D;AAAA;AAAA,EAGA,IAAI,QAAA,GAAwB;AAC1B,IAAA,OAAO,IAAA,CAAK,WAAA;AAAA,EACd;AACF;;;ACjKA,IAAM,MAAA,GAAmC,EAAE,KAAA,EAAO,CAAA,EAAG,MAAM,CAAA,EAAG,IAAA,EAAM,CAAA,EAAG,KAAA,EAAO,CAAA,EAAE;AAEzE,SAAS,YAAA,CAAa,QAAkB,MAAA,EAAwB;AACrE,EAAA,MAAM,QAAA,GAAW,OAAO,KAAK,CAAA;AAE7B,EAAA,SAAS,GAAA,CAAI,GAAA,EAAe,GAAA,EAAa,IAAA,GAAgC,EAAC,EAAS;AACjF,IAAA,IAAI,MAAA,CAAO,GAAG,CAAA,GAAI,QAAA,EAAU;AAC5B,IAAA,MAAM,KAAA,GAAQ,EAAE,EAAA,EAAA,iBAAI,IAAI,IAAA,EAAK,EAAE,WAAA,EAAY,EAAG,KAAA,EAAO,GAAA,EAAK,GAAA,EAAK,GAAG,IAAA,EAAK;AACvE,IAAA,OAAA,CAAQ,OAAO,KAAA,CAAM,IAAA,CAAK,SAAA,CAAU,KAAK,IAAI,IAAI,CAAA;AAAA,EACnD;AAEA,EAAA,OAAO;AAAA,IACL,KAAA,EAAO,CAAC,GAAA,EAAK,IAAA,KAAS,IAAI,OAAA,EAAS,GAAA,EAAK,IAAA,IAAQ,EAAE,CAAA;AAAA,IAClD,IAAA,EAAO,CAAC,GAAA,EAAK,IAAA,KAAS,IAAI,MAAA,EAAS,GAAA,EAAK,IAAA,IAAQ,EAAE,CAAA;AAAA,IAClD,IAAA,EAAO,CAAC,GAAA,EAAK,IAAA,KAAS,IAAI,MAAA,EAAS,GAAA,EAAK,IAAA,IAAQ,EAAE,CAAA;AAAA,IAClD,KAAA,EAAO,CAAC,GAAA,EAAK,IAAA,KAAS,IAAI,OAAA,EAAS,GAAA,EAAK,IAAA,IAAQ,EAAE;AAAA,GACpD;AACF;;;AChBO,IAAe,cAAf,MAAsD;AAAA,EAMjD,WAAA,CACW,QACA,MAAA,EACnB;AAFmB,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AACA,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AAAA,EAClB;AAGL;;;ACJO,SAAS,GAAG,KAAA,EAAuC;AACxD,EAAA,OAAO,EAAE,EAAA,EAAI,IAAA,EAAM,KAAA,EAAM;AAC3B;AAEO,SAAS,IAAI,KAAA,EAAgC;AAClD,EAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAM;AAC5B;;;ACdA,WAAA,EAAA;AAEA,IAAM,UAAA,GAAa,GAAA;AACnB,IAAM,kBAAA,GAAqB,GAAA;AAOpB,IAAM,eAAA,GAAN,cAA8B,WAAA,CAAY;AAAA,EACtC,IAAA,GAAO,MAAA;AAAA,EACP,WAAA,GAAc,+CAAA;AAAA,EACd,KAAA,GAAQ,iBAAA;AAAA,EACR,kBAAA,GAAqB,SAAA;AAAA,EAEb,SAAA;AAAA,EACA,SAAA;AAAA,EAEjB,WAAA,CAAY,MAAA,EAAqB,MAAA,EAAwB,MAAA,GAAgC,EAAC,EAAG;AAC3F,IAAA,KAAA,CAAM,QAAQ,MAAM,CAAA;AACpB,IAAA,IAAA,CAAK,SAAA,GAAY,OAAO,eAAA,IAAmB,UAAA;AAC3C,IAAA,IAAA,CAAK,SAAA,GAAY,OAAO,gBAAA,IAAoB,kBAAA;AAAA,EAC9C;AAAA,EAEA,MAAM,OAAO,GAAA,EAA6C;AACxD,IAAA,MAAM,UAAU,GAAA,CAAI,IAAA,CAAK,IAAA,CAAK,GAAG,EAAE,IAAA,EAAK;AACxC,IAAA,IAAI,CAAC,OAAA,EAAS;AACZ,MAAA,OAAO,GAAA,CAAI,IAAI,gBAAA,CAAiB,MAAA,EAAQ,oDAAoD,CAAC,CAAA;AAAA,IAC/F;AAEA,IAAA,IAAI;AAEF,MAAA,IAAI,IAAI,OAAA,EAAS;AACf,QAAA,MAAM,MAAA,GAAS,MAAM,IAAA,CAAK,MAAA,CAAO,QAAA,CAAS,iBAAiB,EAAE,QAAA,EAAU,GAAA,CAAI,OAAA,EAAS,CAAA;AACpF,QAAA,IAAI,CAAC,MAAA,EAAQ;AACX,UAAA,OAAO,IAAI,IAAI,UAAA,CAAW,iCAAiC,GAAA,CAAI,OAAO,GAAG,CAAC,CAAA;AAAA,QAC5E;AAEA,QAAA,MAAMwP,UAAS,MAAM,IAAA,CAAK,MAAA,CAAO,QAAA,CAAS,QAAQ,OAAA,EAAS;AAAA,UACzD,WAAW,MAAA,CAAO,SAAA;AAAA,UAClB,WAAW,IAAA,CAAK;AAAA,SACjB,CAAA;AACD,QAAA,OAAO,IAAA,CAAK,YAAA,CAAaA,OAAAA,CAAO,MAAA,EAAQA,QAAO,QAAQ,CAAA;AAAA,MACzD;AAGA,MAAA,MAAM,EAAE,QAAA,EAAS,GAAI,MAAM,IAAA,CAAK,MAAA,CAAO,SAAS,IAAA,EAAK;AACrD,MAAA,IAAI,QAAA,CAAS,WAAW,CAAA,EAAG;AACzB,QAAA,OAAO,GAAA,CAAI,IAAI,UAAA,CAAW,kDAAkD,CAAC,CAAA;AAAA,MAC/E;AAEA,MAAA,MAAM,SAAS,MAAM,IAAA,CAAK,MAAA,CAAO,QAAA,CAAS,QAAQ,OAAA,EAAS;AAAA,QACzD,SAAA,EAAW,QAAA,CAAS,CAAC,CAAA,CAAG,SAAA;AAAA,QACxB,WAAW,IAAA,CAAK;AAAA,OACjB,CAAA;AACD,MAAA,OAAO,IAAA,CAAK,YAAA,CAAa,MAAA,CAAO,MAAA,EAAQ,OAAO,QAAQ,CAAA;AAAA,IACzD,SAAS9O,EAAAA,EAAG;AACV,MAAA,OAAO,GAAA,CAAI,IAAI,UAAA,CAAW,2BAAA,EAA6BA,cAAa,KAAA,GAAQA,EAAAA,GAAI,MAAS,CAAC,CAAA;AAAA,IAC5F;AAAA,EACF;AAAA,EAEQ,YAAA,CAAa,QAAgB,QAAA,EAAiC;AACpE,IAAA,MAAM,SAAA,GAAY,MAAA,CAAO,MAAA,GAAS,IAAA,CAAK,SAAA,GACnC,MAAA,CAAO,KAAA,CAAM,CAAA,EAAG,IAAA,CAAK,SAAS,CAAA,GAAI,kBAAA,GAClC,MAAA;AAEJ,IAAA,MAAM,QAAA,GAAW,QAAA,KAAa,CAAA,GAAI,CAAA,OAAA,EAAU,QAAQ,CAAA,CAAA,CAAA,GAAM,EAAA;AAC1D,IAAA,MAAM,QAAQ,SAAA,CAAU,IAAA,MAAU,CAAA,WAAA,CAAA,KAAkB,QAAA,KAAa,IAAI,QAAA,GAAW,EAAA,CAAA;AAEhF,IAAA,OAAO,GAAG,EAAE,IAAA,EAAM,QAAQ,IAAA,EAAM,QAAA,EAAU,QAAQ,CAAA;AAAA,EACpD;AACF;;;ACxEA,WAAA,EAAA;AAOO,IAAM,YAAA,GAAN,cAA2B,WAAA,CAAY;AAAA,EACnC,IAAA,GAAO,OAAA;AAAA,EACP,WAAA,GAAc,8CAAA;AAAA,EACd,KAAA,GAAQ,iBAAA;AAAA,EACR,kBAAA,GAAqB,SAAA;AAAA,EAEb,OAAA;AAAA,EACA,SAAA;AAAA,EAEjB,WAAA,CAAY,MAAA,EAAqB,MAAA,EAAwB,MAAA,GAA6B,EAAC,EAAG;AACxF,IAAA,KAAA,CAAM,QAAQ,MAAM,CAAA;AACpB,IAAA,IAAA,CAAK,OAAA,GAAU,OAAO,cAAA,IAAkB,EAAA;AACxC,IAAA,IAAA,CAAK,SAAA,GAAY,OAAO,eAAA,IAAmB,GAAA;AAAA,EAC7C;AAAA,EAEA,MAAM,OAAO,GAAA,EAA6C;AACxD,IAAA,MAAM,SAAS,GAAA,CAAI,IAAA,CAAK,IAAA,CAAK,GAAG,EAAE,IAAA,EAAK;AACvC,IAAA,IAAI,CAAC,MAAA,EAAQ;AACX,MAAA,OAAO,GAAA,CAAI,IAAI,gBAAA,CAAiB,OAAA,EAAS,0DAA0D,CAAC,CAAA;AAAA,IACtG;AAEA,IAAA,IAAI;AACF,MAAA,IAAI,IAAI,OAAA,EAAS;AACf,QAAA,MAAM,IAAA,CAAK,MAAA,CAAO,KAAA,CAAM,UAAA,CAAW,IAAI,OAAO,CAAA;AAAA,MAChD;AAEA,MAAA,MAAM,SAAS,MAAM,IAAA,CAAK,MAAA,CAAO,KAAA,CAAM,IAAI,MAAA,EAAQ;AAAA,QACjD,IAAA,EAAM,MAAA;AAAA,QACN,gBAAgB,IAAA,CAAK;AAAA,OACtB,CAAA;AAED,MAAA,IAAI,CAAC,OAAO,OAAA,EAAS;AACnB,QAAA,OAAO,IAAI,IAAI,UAAA,CAAW,MAAA,CAAO,KAAA,IAAS,0BAA0B,CAAC,CAAA;AAAA,MACvE;AAEA,MAAA,MAAM,IAAA,GAAO,MAAA,CAAO,IAAA,CAAK,MAAA,GAAS,KAAK,SAAA,GACnC,MAAA,CAAO,IAAA,CAAK,KAAA,CAAM,CAAA,EAAG,IAAA,CAAK,SAAS,CAAA,GAAI,qBACvC,MAAA,CAAO,IAAA;AAEX,MAAA,OAAO,EAAA,CAAG,EAAE,IAAA,EAAM,MAAA,EAAQ,MAAM,CAAA;AAAA,IAClC,SAASA,EAAAA,EAAG;AACV,MAAA,OAAO,GAAA,CAAI,IAAI,UAAA,CAAW,wBAAA,EAA0BA,cAAa,KAAA,GAAQA,EAAAA,GAAI,MAAS,CAAC,CAAA;AAAA,IACzF;AAAA,EACF;AACF;;;ACnDA,WAAA,EAAA;AAOO,IAAM,YAAA,GAAN,cAA2B,WAAA,CAAY;AAAA,EACnC,IAAA,GAAO,OAAA;AAAA,EACP,WAAA,GAAc,iDAAA;AAAA,EACd,KAAA,GAAQ,eAAA;AAAA,EACR,kBAAA,GAAqB,MAAA;AAAA,EAEb,UAAA;AAAA,EAEjB,WAAA,CAAY,MAAA,EAAqB,MAAA,EAAwB,MAAA,GAA6B,EAAC,EAAG;AACxF,IAAA,KAAA,CAAM,QAAQ,MAAM,CAAA;AACpB,IAAA,IAAA,CAAK,UAAA,GAAa,OAAO,UAAA,IAAc,EAAA;AAAA,EACzC;AAAA,EAEA,MAAM,OAAO,GAAA,EAA6C;AACxD,IAAA,MAAM,UAAA,GAAa,GAAA,CAAI,IAAA,CAAK,CAAC,CAAA,IAAK,MAAA;AAClC,IAAA,MAAM,IAAA,GAAO,IAAI,IAAA,CAAK,CAAC,KAAK,GAAA,CAAI,IAAA,CAAK,CAAC,CAAA,IAAK,GAAA;AAG3C,IAAA,MAAM,UAAA,GAAa,GAAA,CAAI,IAAA,CAAK,MAAA,KAAW,MAAM,IAAA,CAAK,UAAA,CAAW,GAAG,CAAA,IAAK,KAAK,UAAA,CAAW,GAAG,CAAA,IAAK,IAAA,CAAK,WAAW,GAAG,CAAA,CAAA;AAEhH,IAAA,IAAI,UAAA,IAAc,UAAA,KAAe,MAAA,IAAU,UAAA,KAAe,IAAA,EAAM;AAC9D,MAAA,OAAO,IAAA,CAAK,WAAW,GAAA,EAAK,UAAA,GAAa,OAAQ,GAAA,CAAI,IAAA,CAAK,CAAC,CAAA,IAAK,GAAI,CAAA;AAAA,IACtE;AAEA,IAAA,IAAI,UAAA,KAAe,MAAA,IAAU,UAAA,KAAe,KAAA,EAAO;AACjD,MAAA,OAAO,KAAK,UAAA,CAAW,GAAA,EAAK,IAAI,IAAA,CAAK,CAAC,KAAK,EAAE,CAAA;AAAA,IAC/C;AAEA,IAAA,OAAO,GAAA,CAAI,IAAI,gBAAA,CAAiB,OAAA,EAAS,2CAA2C,CAAC,CAAA;AAAA,EACvF;AAAA,EAEA,MAAc,UAAA,CAAW,GAAA,EAAqB,IAAA,EAAsC;AAClF,IAAA,IAAI,CAAC,IAAA,EAAM;AACT,MAAA,OAAO,GAAA,CAAI,IAAI,gBAAA,CAAiB,OAAA,EAAS,qCAAqC,CAAC,CAAA;AAAA,IACjF;AACA,IAAA,IAAI;AACF,MAAA,IAAI,GAAA,CAAI,SAAS,MAAM,IAAA,CAAK,OAAO,KAAA,CAAM,UAAA,CAAW,IAAI,OAAO,CAAA;AAC/D,MAAA,MAAM,MAAA,GAAS,MAAM,IAAA,CAAK,MAAA,CAAO,KAAA,CAAM,IAAA,CAAK,IAAA,EAAM,EAAE,QAAA,EAAU,IAAA,CAAK,UAAA,EAAY,CAAA;AAC/E,MAAA,IAAI,MAAA,CAAO,OAAA,CAAQ,MAAA,KAAW,CAAA,EAAG;AAC/B,QAAA,OAAO,EAAA,CAAG,EAAE,IAAA,EAAM,MAAA,EAAQ,MAAM,CAAA,YAAA,EAAQ,IAAI,eAAe,CAAA;AAAA,MAC7D;AACA,MAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,OAAA,CAAQ,GAAA,CAAI,CAACA,EAAAA,KAAM;AACtC,QAAA,MAAM,IAAA,GAAOA,EAAAA,CAAE,IAAA,KAAS,WAAA,GAAc,WAAA,GAAO,WAAA;AAC7C,QAAA,MAAM,IAAA,GAAOA,EAAAA,CAAE,IAAA,KAAS,MAAA,GAAS,CAAA,EAAA,EAAK,WAAWA,EAAAA,CAAE,IAAA,IAAQ,CAAC,CAAC,CAAA,CAAA,CAAA,GAAM,EAAA;AACnE,QAAA,OAAO,GAAG,IAAI,CAAA,CAAA,EAAIA,EAAAA,CAAE,IAAI,GAAG,IAAI,CAAA,CAAA;AAAA,MACjC,CAAC,CAAA;AACD,MAAA,MAAM,SAAS,CAAA,YAAA,EAAQ,IAAI,CAAA,UAAA,EAAQ,MAAA,CAAO,QAAQ,MAAM,CAAA,QAAA,CAAA;AACxD,MAAA,MAAM,IAAA,GAAO,MAAA,CAAO,UAAA,GAAa,MAAA,CAAO,QAAQ,MAAA,GAC5C;AAAA,QAAA,EAAa,MAAA,CAAO,UAAA,GAAa,MAAA,CAAO,OAAA,CAAQ,MAAM,CAAA,MAAA,CAAA,GACtD,EAAA;AACJ,MAAA,OAAO,GAAG,EAAE,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,GAAG,MAAM;AAAA,EAAK,MAAM,IAAA,CAAK,IAAI,CAAC,CAAA,EAAG,IAAI,IAAI,CAAA;AAAA,IAC3E,SAASA,EAAAA,EAAG;AACV,MAAA,OAAO,GAAA,CAAI,IAAI,UAAA,CAAW,CAAA,eAAA,EAAkB,IAAI,IAAIA,EAAAA,YAAa,KAAA,GAAQA,EAAAA,GAAI,MAAS,CAAC,CAAA;AAAA,IACzF;AAAA,EACF;AAAA,EAEA,MAAc,UAAA,CAAW,GAAA,EAAqB,IAAA,EAAsC;AAClF,IAAA,IAAI,CAAC,IAAA,EAAM;AACT,MAAA,OAAO,GAAA,CAAI,IAAI,gBAAA,CAAiB,OAAA,EAAS,mDAAmD,CAAC,CAAA;AAAA,IAC/F;AACA,IAAA,IAAI;AACF,MAAA,IAAI,GAAA,CAAI,SAAS,MAAM,IAAA,CAAK,OAAO,KAAA,CAAM,UAAA,CAAW,IAAI,OAAO,CAAA;AAC/D,MAAA,MAAM,SAAS,MAAM,IAAA,CAAK,MAAA,CAAO,KAAA,CAAM,KAAK,IAAI,CAAA;AAChD,MAAA,MAAM,OAAA,GAAU,MAAA,CAAO,OAAA,CAAQ,KAAA,CAAM,GAAG,GAAI,CAAA;AAC5C,MAAA,MAAM,SAAA,GAAY,MAAA,CAAO,OAAA,CAAQ,MAAA,GAAS,MAAO,kBAAA,GAAqB,EAAA;AACtE,MAAA,OAAO,GAAG,EAAE,IAAA,EAAM,QAAQ,IAAA,EAAM,OAAA,GAAU,WAAW,CAAA;AAAA,IACvD,SAASA,EAAAA,EAAG;AACV,MAAA,OAAO,GAAA,CAAI,IAAI,UAAA,CAAW,CAAA,eAAA,EAAkB,IAAI,IAAIA,EAAAA,YAAa,KAAA,GAAQA,EAAAA,GAAI,MAAS,CAAC,CAAA;AAAA,IACzF;AAAA,EACF;AACF;AAEA,SAAS,WAAW,KAAA,EAAuB;AACzC,EAAA,IAAI,KAAA,GAAQ,IAAA,EAAM,OAAO,CAAA,EAAG,KAAK,CAAA,CAAA,CAAA;AACjC,EAAA,IAAI,KAAA,GAAQ,OAAO,IAAA,EAAM,OAAO,IAAI,KAAA,GAAQ,IAAA,EAAM,OAAA,CAAQ,CAAC,CAAC,CAAA,CAAA,CAAA;AAC5D,EAAA,OAAO,IAAI,KAAA,IAAS,IAAA,GAAO,IAAA,CAAA,EAAO,OAAA,CAAQ,CAAC,CAAC,CAAA,CAAA,CAAA;AAC9C;;;AC9EO,IAAM,WAAA,GAAN,cAA0B,WAAA,CAAY;AAAA,EAM3C,WAAA,CACE,MAAA,EACA,MAAA,EACiB,MAAA,EACjB;AACA,IAAA,KAAA,CAAM,QAAQ,MAAM,CAAA;AAFH,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AAAA,EAGnB;AAAA,EAXS,IAAA,GAAO,MAAA;AAAA,EACP,WAAA,GAAc,yCAAA;AAAA,EACd,KAAA,GAAQ,OAAA;AAAA,EACR,kBAAA,GAAqB,MAAA;AAAA,EAU9B,MAAM,OAAO,IAAA,EAA8C;AACzD,IAAA,MAAM,QAAA,GAAW,IAAA,CAAK,MAAA,CAAO,WAAA,EAAY;AAEzC,IAAA,MAAM,QAAQ,QAAA,CAAS,GAAA;AAAA,MAAI,CAAC,GAAA,KAC1B,CAAA,GAAA,EAAM,IAAI,IAAI,CAAA,UAAA,EAAQ,IAAI,WAAW;AAAA,aAAA,EAAkB,GAAA,CAAI,KAAK,CAAA,kBAAA,EAAqB,GAAA,CAAI,kBAAkB,CAAA;AAAA,KAC7G;AAEA,IAAA,MAAM,IAAA,GAAO,CAAA;;AAAA,EAA6B,KAAA,CAAM,IAAA,CAAK,MAAM,CAAC,CAAA,CAAA;AAC5D,IAAA,OAAO,EAAA,CAAG,EAAE,IAAA,EAAM,MAAA,EAAQ,MAAM,CAAA;AAAA,EAClC;AACF;;;ACjCA,WAAA,EAAA;AAEO,IAAM,iBAAA,GAAoBwB,EAAE,MAAA,CAAO;AAAA,EACxC,QAAA,EAAUA,CAAAA,CAAE,IAAA,CAAK,CAAC,OAAA,EAAS,MAAA,EAAQ,MAAA,EAAQ,OAAO,CAAC,CAAA,CAAE,OAAA,CAAQ,MAAM,CAAA;AAAA,EACnE,YAAA,EAAcA,EAAE,KAAA,CAAMA,CAAAA,CAAE,QAAQ,CAAA,CAAE,OAAA,CAAQ,EAAE,CAAA;AAAA,EAC5C,eAAA,EAAiBA,EAAE,MAAA,EAAO,CAAE,KAAI,CAAE,QAAA,EAAS,CAAE,OAAA,CAAQ,GAAI,CAAA;AAAA,EACzD,UAAA,EAAYA,CAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI,CAAE,GAAA,CAAI,GAAG,CAAA,CAAE,GAAA,CAAI,GAAI,CAAA,CAAE,QAAQ,GAAG,CAAA;AAAA,EAC3D,cAAA,EAAgBA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA;AAC7B,CAAC;AAGM,SAAS,YAAA,CAAa,GAAA,GAAyB,OAAA,CAAQ,GAAA,EAAkB;AAC9E,EAAA,MAAM,GAAA,GAAM;AAAA,IACV,QAAA,EAAU,IAAI,eAAe,CAAA;AAAA,IAC7B,YAAA,EAAc,GAAA,CAAI,mBAAmB,CAAA,EAAG,MAAM,GAAG,CAAA,CAAE,GAAA,CAAI,CAACa,OAAMA,EAAAA,CAAE,IAAA,EAAM,CAAA,CAAE,OAAO,OAAO,CAAA;AAAA,IACtF,eAAA,EAAiB,IAAI,gBAAgB,CAAA,GAAI,OAAO,GAAA,CAAI,gBAAgB,CAAC,CAAA,GAAI,MAAA;AAAA,IACzE,UAAA,EAAY,IAAI,iBAAiB,CAAA,GAAI,OAAO,GAAA,CAAI,iBAAiB,CAAC,CAAA,GAAI,MAAA;AAAA,IACtE,cAAA,EAAgB,IAAI,eAAe;AAAA,GACrC;AAEA,EAAA,MAAM,MAAA,GAAS,iBAAA,CAAkB,SAAA,CAAU,GAAG,CAAA;AAC9C,EAAA,IAAI,CAAC,OAAO,OAAA,EAAS;AACnB,IAAA,MAAM,IAAI,WAAA,CAAY,CAAA,2BAAA,EAA8B,MAAA,CAAO,KAAA,CAAM,OAAO,CAAA,CAAE,CAAA;AAAA,EAC5E;AACA,EAAA,OAAO,MAAA,CAAO,IAAA;AAChB;;;ACsBO,IAAM,cAAA,GAAN,MAAM,eAAA,CAAe;AAAA,EAQlB,YACW,OAAA,EACA,OAAA,EACA,SAAA,EACjB,WAAA,EACA,YACA,gBAAA,EACA;AANiB,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AACA,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AACA,IAAA,IAAA,CAAA,SAAA,GAAA,SAAA;AAKjB,IAAA,IAAA,CAAK,YAAA,GAAe,WAAA;AACpB,IAAA,IAAA,CAAK,WAAA,GAAc,UAAA;AACnB,IAAA,IAAA,CAAK,gBAAA,GAAmB,gBAAA;AAAA,EAC1B;AAAA,EAlBiB,QAAA,uBAAe,GAAA,EAA6B;AAAA,EAC5C,aAAA,uBAAoB,GAAA,EAA2B;AAAA,EAC/C,WAAA;AAAA,EACA,YAAA;AAAA,EACA,gBAAA;AAAA,EACT,OAAA,GAAU,KAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAmBlB,aAAa,MAAA,CAAO/C,QAAAA,GAAsB,EAAC,EAA4B;AACrE,IAAA,MAAMyP,YAAW,YAAA,EAAa;AAC9B,IAAA,MAAA,CAAO,MAAA,CAAOA,SAAAA,EAAUzP,QAAAA,CAAQ,QAAA,IAAY,EAAE,CAAA;AAC9C,IAAA,IAAIA,QAAAA,CAAQ,cAAA,EAAgByP,SAAAA,CAAS,iBAAiBzP,QAAAA,CAAQ,cAAA;AAE9D,IAAA,MAAM,MAAA,GAASA,QAAAA,CAAQ,MAAA,IAAU,YAAA,CAAayP,UAAS,QAAQ,CAAA;AAE/D,IAAA,MAAM,MAAA,GAASzP,QAAAA,CAAQ,MAAA,GACnB,MAAM,WAAA,CAAY,MAAA,CAAOA,QAAAA,CAAQ,MAAM,CAAA,GACvC,MAAM,WAAA,CAAY,KAAA,EAAM;AAE5B,IAAA,MAAM,KAAA,GAAQA,QAAAA,CAAQ,eAAA,IAAmB,IAAI,uBAAA,EAAwB;AACrE,IAAA,MAAM,WAAA,GAAc,IAAI,WAAA,EAAY;AACpC,IAAA,MAAM,WAAA,GAAc,IAAI,iBAAA,CAAkB,KAAA,EAAO;AAAA,MAC/C,UAAA,EAAY,CAAC,GAAIA,QAAAA,CAAQ,cAAc,EAAC,EAAI,GAAGyP,SAAAA,CAAS,YAAY,CAAA;AAAA,MACpE;AAAA,KACD,CAAA;AAED,IAAA,MAAM,UAAA,GAAa,IAAI,iBAAA,CAAkB,WAAA,EAAa,MAAM,CAAA;AAC5D,IAAA,MAAM,IAAA,GAAOzP,SAAQ,gBAAA,IAAoB,UAAA;AAEzC,IAAA,MAAM,GAAA,GAAM,IAAI,eAAA,CAAe,MAAA,EAAQ,QAAQyP,SAAAA,EAAU,WAAA,EAAa,YAAY,IAAI,CAAA;AAGtF,IAAA,GAAA,CAAI,eAAA,CAAgB,IAAI,eAAA,CAAgB,MAAA,EAAQ,MAAA,EAAQ,EAAE,eAAA,EAAiBA,SAAAA,CAAS,eAAA,EAAiB,CAAC,CAAA;AACtG,IAAA,GAAA,CAAI,eAAA,CAAgB,IAAI,YAAA,CAAa,MAAA,EAAQ,MAAA,EAAQ,EAAE,eAAA,EAAiBA,SAAAA,CAAS,eAAA,EAAiB,CAAC,CAAA;AACnG,IAAA,GAAA,CAAI,eAAA,CAAgB,IAAI,YAAA,CAAa,MAAA,EAAQ,MAAM,CAAC,CAAA;AACpD,IAAA,GAAA,CAAI,eAAA,CAAgB,IAAI,WAAA,CAAY,MAAA,EAAQ,MAAA,EAAQ;AAAA,MAClD,WAAA,EAAa,MAAM,UAAA,CAAW,cAAA;AAAe,KAC9C,CAAC,CAAA;AAEF,IAAA,OAAO,GAAA;AAAA,EACT;AAAA;AAAA,EAIA,gBAAgB,OAAA,EAAgC;AAC9C,IAAA,IAAA,CAAK,QAAA,CAAS,GAAA,CAAI,OAAA,CAAQ,EAAA,EAAI,OAAO,CAAA;AACrC,IAAA,IAAA,CAAK,aAAA,CAAc,GAAA,CAAI,OAAA,CAAQ,EAAA,EAAI,SAAS,CAAA;AAC5C,IAAA,OAAO,IAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,YAAYzP,QAAAA,EAAyC;AACzD,IAAA,MAAM,EAAE,eAAA,EAAA0P,gBAAAA,EAAgB,GAAI,MAAM,OAAA,CAAA,OAAA,EAAA,CAAA,IAAA,CAAA,OAAA,YAAA,EAAA,EAAA,eAAA,CAAA,CAAA;AAClC,IAAA,MAAM,OAAA,GAAU,IAAIA,gBAAAA,CAAgB1P,QAAAA,EAAS,KAAK,YAAA,EAAc,IAAA,CAAK,WAAA,EAAa,IAAA,CAAK,OAAO,CAAA;AAC9F,IAAA,OAAO,IAAA,CAAK,gBAAgB,OAAO,CAAA;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,WAAWA,QAAAA,EAAwC;AACvD,IAAA,MAAM,EAAE,cAAA,EAAA2P,eAAAA,EAAe,GAAI,MAAM,OAAA,CAAA,OAAA,EAAA,CAAA,IAAA,CAAA,OAAA,aAAA,EAAA,EAAA,gBAAA,CAAA,CAAA;AACjC,IAAA,MAAM,OAAA,GAAU,IAAIA,eAAAA,CAAe3P,QAAAA,EAAS,KAAK,YAAA,EAAc,IAAA,CAAK,WAAA,EAAa,IAAA,CAAK,OAAO,CAAA;AAC7F,IAAA,OAAO,IAAA,CAAK,gBAAgB,OAAO,CAAA;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,SAASA,QAAAA,EAAsC;AACnD,IAAA,MAAM,EAAE,YAAA,EAAA4P,aAAAA,EAAa,GAAI,MAAM,OAAA,CAAA,OAAA,EAAA,CAAA,IAAA,CAAA,OAAA,aAAA,EAAA,EAAA,gBAAA,CAAA,CAAA;AAC/B,IAAA,MAAM,OAAA,GAAU,IAAIA,aAAAA,CAAa5P,QAAAA,EAAS,KAAK,YAAA,EAAc,IAAA,CAAK,WAAA,EAAa,IAAA,CAAK,OAAO,CAAA;AAC3F,IAAA,OAAO,IAAA,CAAK,gBAAgB,OAAO,CAAA;AAAA,EACrC;AAAA,EAEA,gBAAgB,OAAA,EAAgC;AAC9C,IAAA,IAAA,CAAK,WAAA,CAAY,SAAS,OAAO,CAAA;AACjC,IAAA,OAAO,IAAA;AAAA,EACT;AAAA;AAAA,EAIA,MAAM,KAAA,GAAuB;AAC3B,IAAA,IAAI,KAAK,OAAA,EAAS;AAClB,IAAA,IAAA,CAAK,OAAA,GAAU,IAAA;AAEf,IAAA,IAAI,IAAA,CAAK,qBAAqB,QAAA,EAAU;AAEtC,MAAA,MAAM,OAAA,CAAQ,GAAA,CAAI,CAAC,GAAG,IAAA,CAAK,QAAA,CAAS,MAAA,EAAQ,CAAA,CAAE,GAAA,CAAI,OAAO,EAAA,KAAO;AAC9D,QAAA,MAAM,GAAG,KAAA,EAAM;AACf,QAAA,IAAA,CAAK,aAAA,CAAc,GAAA,CAAI,EAAA,CAAG,EAAA,EAAI,SAAS,CAAA;AAAA,MACzC,CAAC,CAAC,CAAA;AAAA,IACJ,CAAA,MAAO;AAEL,MAAA,MAAM,OAAA,CAAQ,UAAA,CAAW,CAAC,GAAG,IAAA,CAAK,QAAA,CAAS,MAAA,EAAQ,CAAA,CAAE,GAAA,CAAI,OAAO,EAAA,KAAO;AACrE,QAAA,IAAI;AACF,UAAA,MAAM,GAAG,KAAA,EAAM;AACf,UAAA,IAAA,CAAK,aAAA,CAAc,GAAA,CAAI,EAAA,CAAG,EAAA,EAAI,SAAS,CAAA;AAAA,QACzC,SAASQ,IAAAA,EAAK;AACZ,UAAA,IAAA,CAAK,aAAA,CAAc,GAAA,CAAI,EAAA,CAAG,EAAA,EAAI,QAAQ,CAAA;AACtC,UAAA,IAAA,CAAK,OAAA,CAAQ,MAAM,yBAAA,EAA2B;AAAA,YAC5C,SAAS,EAAA,CAAG,EAAA;AAAA,YACZ,KAAKA,IAAAA,YAAe,KAAA,GAAQA,IAAAA,CAAI,OAAA,GAAU,OAAOA,IAAG;AAAA,WACrD,CAAA;AAAA,QACH;AAAA,MACF,CAAC,CAAC,CAAA;AAAA,IACJ;AAEA,IAAA,IAAA,CAAK,OAAA,CAAQ,KAAK,wBAAA,EAA0B;AAAA,MAC1C,UAAU,CAAC,GAAG,IAAA,CAAK,QAAA,CAAS,MAAM,CAAA;AAAA,MAClC,SAAS,IAAA,CAAK,iBAAA;AAAA,MACd,QAAQ,IAAA,CAAK;AAAA,KACd,CAAA;AAAA,EACH;AAAA,EAEA,MAAM,IAAA,GAAsB;AAC1B,IAAA,IAAA,CAAK,OAAA,GAAU,KAAA;AACf,IAAA,MAAM,OAAA,GAAU,MAAM,OAAA,CAAQ,UAAA;AAAA,MAC5B,CAAC,GAAG,IAAA,CAAK,QAAA,CAAS,QAAQ,CAAA,CAAE,GAAA,CAAI,OAAO,EAAA,KAAO;AAC5C,QAAA,MAAM,GAAG,IAAA,EAAK;AACd,QAAA,IAAA,CAAK,aAAA,CAAc,GAAA,CAAI,EAAA,CAAG,EAAA,EAAI,SAAS,CAAA;AAAA,MACzC,CAAC;AAAA,KACH;AACA,IAAA,KAAA,MAAWyC,MAAK,OAAA,EAAS;AACvB,MAAA,IAAIA,EAAAA,CAAE,WAAW,UAAA,EAAY;AAC3B,QAAA,IAAA,CAAK,OAAA,CAAQ,MAAM,oBAAA,EAAsB,EAAE,QAAQ,MAAA,CAAOA,EAAAA,CAAE,MAAM,CAAA,EAAG,CAAA;AAAA,MACvE;AAAA,IACF;AACA,IAAA,MAAM,IAAA,CAAK,QAAQ,KAAA,EAAM;AACzB,IAAA,IAAA,CAAK,OAAA,CAAQ,KAAK,wBAAwB,CAAA;AAAA,EAC5C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,cAAA,CACE,QAAA,EAAkB,OAAA,EAClB,QAAA,EAAkB,OAAA,EACZ;AACN,IAAA,MAAM,IAAA,GAAO,WAAA,CAAY,UAAA,CAAW,QAAA,EAAU,OAAO,CAAA;AACrD,IAAA,MAAM,IAAA,GAAO,WAAA,CAAY,UAAA,CAAW,QAAA,EAAU,OAAO,CAAA;AACrD,IAAA,IAAA,CAAK,YAAA,CAAa,QAAA,CAAS,IAAA,CAAK,IAAA,EAAM,IAAI,CAAA;AAAA,EAC5C;AAAA;AAAA;AAAA,EAKA,WAAW,EAAA,EAAyC;AAClD,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,GAAA,CAAI,EAAE,CAAA;AAAA,EAC7B;AAAA;AAAA,EAGA,IAAI,UAAA,GAAuB;AACzB,IAAA,OAAO,CAAC,GAAG,IAAA,CAAK,QAAA,CAAS,MAAM,CAAA;AAAA,EACjC;AAAA;AAAA,EAGA,IAAI,YAAA,GAAuB;AACzB,IAAA,OAAO,KAAK,QAAA,CAAS,IAAA;AAAA,EACvB;AAAA;AAAA,EAGA,IAAI,iBAAA,GAA8B;AAChC,IAAA,OAAO,CAAC,GAAG,IAAA,CAAK,aAAA,CAAc,SAAS,CAAA,CACpC,OAAO,CAAC,GAAGF,EAAC,CAAA,KAAMA,OAAM,SAAS,CAAA,CACjC,IAAI,CAAC,CAAC,EAAE,CAAA,KAAM,EAAE,CAAA;AAAA,EACrB;AAAA;AAAA,EAGA,IAAI,gBAAA,GAA6B;AAC/B,IAAA,OAAO,CAAC,GAAG,IAAA,CAAK,aAAA,CAAc,SAAS,CAAA,CACpC,OAAO,CAAC,GAAGA,EAAC,CAAA,KAAMA,OAAM,QAAQ,CAAA,CAChC,IAAI,CAAC,CAAC,EAAE,CAAA,KAAM,EAAE,CAAA;AAAA,EACrB;AAAA;AAAA,EAGA,iBAAiB,EAAA,EAAuC;AACtD,IAAA,OAAO,IAAA,CAAK,aAAA,CAAc,GAAA,CAAI,EAAE,CAAA;AAAA,EAClC;AAAA;AAAA,EAGA,IAAI,KAAA,GAAqB;AACvB,IAAA,OAAO,IAAA,CAAK,OAAA;AAAA,EACd;AAAA,EAEA,IAAI,QAAA,GAAwB;AAC1B,IAAA,OAAO,IAAA,CAAK,SAAA;AAAA,EACd;AAAA,EAEA,IAAI,SAAA,GAAqB;AACvB,IAAA,OAAO,IAAA,CAAK,OAAA;AAAA,EACd;AAAA;AAAA,EAGA,IAAI,WAAA,GAAiC;AACnC,IAAA,OAAO,IAAA,CAAK,YAAA;AAAA,EACd;AACF;;;ACzQA,iBAAA,EAAA;ACRO,IAAM,gBAAA,GAAmBb,EAAE,MAAA,CAAO;AAAA,EACvC,IAAA,EAAMA,EAAE,IAAA,CAAK,CAAC,SAAS,UAAA,EAAY,OAAA,EAAS,OAAO,CAAC,CAAA;AAAA,EACpD,MAAA,EAAQA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC5B,GAAA,EAAKA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACzB,QAAA,EAAUA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC9B,IAAA,EAAMA,EAAE,MAAA,EAAO,CAAE,KAAI,CAAE,WAAA,GAAc,QAAA;AACvC,CAAC;AAGM,IAAM,qBAAA,GAAwBA,EAAE,MAAA,CAAO;AAAA,EAC5C,EAAA,EAAIA,EAAE,MAAA,EAAO;AAAA,EACb,MAAA,EAAQA,EAAE,MAAA,EAAO;AAAA,EACjB,SAAA,EAAWA,EAAE,MAAA,EAAO;AAAA,EACpB,IAAA,EAAMA,EAAE,MAAA,EAAO;AAAA,EACf,SAAA,EAAWA,CAAAA,CAAE,MAAA,CAAO,IAAA,EAAK;AAAA,EACzB,aAAaA,CAAAA,CAAE,KAAA,CAAM,gBAAgB,CAAA,CAAE,OAAA,CAAQ,EAAE,CAAA;AAAA,EACjD,SAAA,EAAWA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC/B,QAAA,EAAUA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC9B,GAAA,EAAKA,CAAAA,CAAE,OAAA,EAAQ,CAAE,QAAA;AACnB,CAAC;AAGM,IAAM,iBAAA,GAAoBA,EAAE,MAAA,CAAO;AAAA,EACxC,IAAA,EAAMA,CAAAA,CAAE,OAAA,CAAQ,MAAM,CAAA;AAAA,EACtB,IAAA,EAAMA,EAAE,MAAA;AACV,CAAC;AAGM,IAAM,iBAAA,GAAoBA,EAAE,MAAA,CAAO;AAAA,EACxC,IAAA,EAAMA,CAAAA,CAAE,OAAA,CAAQ,MAAM,CAAA;AAAA,EACtB,IAAA,EAAMA,EAAE,MAAA,EAAO;AAAA,EACf,QAAA,EAAUA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA;AACvB,CAAC;AAGM,IAAM,kBAAA,GAAqBA,EAAE,MAAA,CAAO;AAAA,EACzC,IAAA,EAAMA,CAAAA,CAAE,OAAA,CAAQ,OAAO,CAAA;AAAA,EACvB,OAAA,EAASA,EAAE,MAAA,EAAO;AAAA,EAClB,IAAA,EAAMA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA;AACnB,CAAC;AAGM,IAAM,qBAAA,GAAwBA,CAAAA,CAAE,kBAAA,CAAmB,MAAA,EAAQ;AAAA,EAChE,iBAAA;AAAA,EACA,iBAAA;AAAA,EACA;AACF,CAAC;;;AC9CD,YAAA,EAAA;ACAO,IAAM,iBAAA,GAAoBA,EAAE,MAAA,CAAO;AAAA,EACxC,MAAA,EAAQA,CAAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA;AAAA,EACxB,cAAA,EAAgBA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACpC,WAAA,EAAaA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACjC,SAAA,EAAWA,CAAAA,CAAE,MAAA,CAAO,IAAA;AACtB,CAAC;AAGM,IAAM,oBAAA,GAAuBA,EAAE,MAAA,CAAO;AAAA,EAC3C,SAAA,EAAWA,CAAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA;AAAA,EAC3B,QAAA,EAAUA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC9B,QAAQA,CAAAA,CAAE,IAAA,CAAK,CAAC,QAAA,EAAU,SAAA,EAAW,SAAS,CAAC,CAAA;AAAA,EAC/C,WAAA,EAAaA,CAAAA,CAAE,MAAA,CAAO,IAAA,GAAO,QAAA;AAC/B,CAAC;;;AHcD,WAAA,EAAA;;;AItBO,IAAM,cAAN,MAAkB;AAAA,EAKvB,WAAA,CACmB,KAAA,EACA,UAAA,GAAqB,GAAA,EACtC;AAFiB,IAAA,IAAA,CAAA,KAAA,GAAA,KAAA;AACA,IAAA,IAAA,CAAA,UAAA,GAAA,UAAA;AAAA,EAChB;AAAA,EAPK,MAAA,GAAS,EAAA;AAAA,EACT,KAAA,GAA8C,IAAA;AAAA,EAC9C,OAAA,GAAU,KAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWlB,OAAO,KAAA,EAAqB;AAC1B,IAAA,IAAI,KAAK,OAAA,EAAS;AAClB,IAAA,IAAA,CAAK,MAAA,IAAU,KAAA;AACf,IAAA,IAAA,CAAK,aAAA,EAAc;AAAA,EACrB;AAAA,EAEQ,aAAA,GAAsB;AAC5B,IAAA,IAAI,IAAA,CAAK,UAAU,IAAA,EAAM;AACzB,IAAA,IAAA,CAAK,KAAA,GAAQ,WAAW,MAAM;AAC5B,MAAA,IAAA,CAAK,KAAA,GAAQ,IAAA;AACb,MAAA,MAAM,OAAO,IAAA,CAAK,MAAA;AAClB,MAAA,IAAA,CAAK,MAAA,GAAS,EAAA;AACd,MAAA,IAAI,IAAA,EAAM;AACR,QAAA,KAAK,IAAA,CAAK,KAAA,CAAM,IAAI,CAAA,CAAE,MAAM,MAAM;AAAA,QAGlC,CAAC,CAAA;AAAA,MACH;AAAA,IACF,CAAA,EAAG,KAAK,UAAU,CAAA;AAAA,EACpB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,KAAA,GAAuB;AAC3B,IAAA,IAAA,CAAK,OAAA,GAAU,IAAA;AACf,IAAA,IAAI,IAAA,CAAK,UAAU,IAAA,EAAM;AACvB,MAAA,YAAA,CAAa,KAAK,KAAK,CAAA;AACvB,MAAA,IAAA,CAAK,KAAA,GAAQ,IAAA;AAAA,IACf;AACA,IAAA,IAAI,KAAK,MAAA,EAAQ;AACf,MAAA,MAAM,OAAO,IAAA,CAAK,MAAA;AAClB,MAAA,IAAA,CAAK,MAAA,GAAS,EAAA;AACd,MAAA,MAAM,IAAA,CAAK,MAAM,IAAI,CAAA;AAAA,IACvB;AAAA,EACF;AAAA,EAEA,IAAI,cAAA,GAAyB;AAC3B,IAAA,OAAO,KAAK,MAAA,CAAO,MAAA;AAAA,EACrB;AAAA,EAEA,IAAI,SAAA,GAAqB;AACvB,IAAA,OAAO,IAAA,CAAK,OAAA;AAAA,EACd;AACF;;;AChDO,IAAM,WAAA,GAAN,MAAM,YAAA,CAAY;AAAA,EAGf,WAAA,CACW,MAAA,EACA,OAAA,EACA,EAAA,EACjB;AAHiB,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AACA,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AACA,IAAA,IAAA,CAAA,EAAA,GAAA,EAAA;AAAA,EAChB;AAAA,EANK,OAAA,GAAU,KAAA;AAAA;AAAA;AAAA;AAAA,EAWlB,aAAa,KAAA,CACX,MAAA,EACA,OAAA,EACA,QAAA,EACsB;AACtB,IAAA,MAAM,IAAA,GAAgD,EAAE,OAAA,EAAQ;AAChE,IAAA,IAAI,QAAA,OAAe,SAAA,GAAY,QAAA;AAE/B,IAAA,MAAM,GAAA,GAAM,MAAM,MAAA,CAAO,IAAA,CAAK,YAAY,IAAqD,CAAA;AAE/F,IAAA,IAAI,CAAC,IAAI,EAAA,EAAI;AACX,MAAA,MAAM,IAAI,MAAM,qCAAqC,CAAA;AAAA,IACvD;AAEA,IAAA,OAAO,IAAI,YAAA,CAAY,MAAA,EAAQ,OAAA,EAAS,IAAI,EAAE,CAAA;AAAA,EAChD;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,OAAO,IAAA,EAA6B;AACxC,IAAA,IAAI,KAAK,OAAA,EAAS;AAClB,IAAA,MAAM,IAAA,CAAK,MAAA,CAAO,IAAA,CAAK,YAAA,CAAa;AAAA,MAClC,SAAS,IAAA,CAAK,OAAA;AAAA,MACd,IAAI,IAAA,CAAK,EAAA;AAAA,MACT,aAAA,EAAe;AAAA,KAChB,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,MAAA,GAAwB;AAC5B,IAAA,IAAI,KAAK,OAAA,EAAS;AAClB,IAAA,IAAA,CAAK,OAAA,GAAU,IAAA;AACf,IAAA,MAAM,IAAA,CAAK,MAAA,CAAO,IAAA,CAAK,UAAA,CAAW;AAAA,MAChC,SAAS,IAAA,CAAK,OAAA;AAAA,MACd,IAAI,IAAA,CAAK;AAAA,KACV,CAAA;AAAA,EACH;AAAA,EAEA,IAAI,UAAA,GAAsB;AACxB,IAAA,OAAO,IAAA,CAAK,OAAA;AAAA,EACd;AAAA;AAAA,EAGA,IAAI,SAAA,GAAoB;AACtB,IAAA,OAAO,IAAA,CAAK,EAAA;AAAA,EACd;AACF;;;ACjFA,iBAAA,EAAA;AAeO,IAAM,WAAA,GAAN,cAA0B,WAAA,CAAY;AAAA,EACnC,kBAAkE,EAAC;AAAA,EAC1D,QAAA;AAAA,EAEjB,YACE,WAAA,EACA,UAAA,EACA,MAAA,EACAlC,QAAAA,GAA8B,EAAC,EAC/B;AACA,IAAA,KAAA,CAAM,MAAA,EAAQ,MAAA,EAAQ,WAAA,EAAa,UAAA,EAAY,MAAM,CAAA;AACrD,IAAA,IAAA,CAAK,QAAA,GAAWA,SAAQ,QAAA,KAAa,CAAC,SAAS,OAAA,CAAQ,MAAA,CAAO,KAAA,CAAM,IAAA,GAAO,IAAI,CAAA,CAAA;AAAA,EACjF;AAAA,EAEA,MAAM,KAAA,GAAuB;AAC3B,IAAA,IAAA,CAAK,SAAS,SAAS,CAAA;AAAA,EACzB;AAAA,EAEA,MAAM,IAAA,GAAsB;AAC1B,IAAA,IAAA,CAAK,kBAAkB,EAAC;AACxB,IAAA,IAAA,CAAK,SAAS,SAAS,CAAA;AAAA,EACzB;AAAA,EAEA,IAAA,CAAK,SAAiB,OAAA,EAAyC;AAC7D,IAAA,MAAM,IAAA,GAAO,eAAe,OAAO,CAAA;AACnC,IAAA,IAAA,CAAK,QAAA,CAAS,MAAM,OAAO,CAAA;AAC3B,IAAA,OAAO,QAAQ,OAAA,EAAQ;AAAA,EACzB;AAAA,EAEA,UAAU,OAAA,EAAwD;AAChE,IAAA,IAAA,CAAK,eAAA,CAAgB,KAAK,OAAO,CAAA;AAAA,EACnC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,cAAc,KAAA,EAAyD;AAC3E,IAAA,MAAM,GAAA,GAAuB;AAAA,MAC3B,EAAA,EAAI,CAAA,KAAA,EAAQ,IAAA,CAAK,GAAA,EAAK,CAAA,CAAA;AAAA,MACtB,MAAA,EAAQ,MAAM,MAAA,IAAU,WAAA;AAAA,MACxB,WAAW,IAAA,CAAK,EAAA;AAAA,MAChB,MAAM,KAAA,CAAM,IAAA;AAAA,MACZ,SAAA,sBAAe,IAAA,EAAK;AAAA,MACpB,aAAa;AAAC,KAChB;AAGA,IAAA,KAAA,MAAW,OAAA,IAAW,KAAK,eAAA,EAAiB;AAC1C,MAAA,MAAM,QAAQ,GAAG,CAAA;AAAA,IACnB;AAEA,IAAA,MAAM,IAAA,CAAK,eAAe,GAAG,CAAA;AAAA,EAC/B;AACF;AAEA,SAAS,eAAe,OAAA,EAAkC;AACxD,EAAA,QAAQ,QAAQ,IAAA;AAAM,IACpB,KAAK,MAAA;AACH,MAAA,OAAO,OAAA,CAAQ,IAAA;AAAA,IACjB,KAAK,MAAA;AACH,MAAA,OAAO,CAAA,MAAA,EAAS,OAAA,CAAQ,QAAA,IAAY,EAAE;AAAA,EAAK,QAAQ,IAAI;AAAA,MAAA,CAAA;AAAA,IACzD,KAAK,OAAA;AACH,MAAA,OAAO,CAAA,OAAA,EAAK,OAAA,CAAQ,OAAO,CAAA,EAAG,QAAQ,IAAA,GAAO;AAAA,UAAA,EAAQ,OAAA,CAAQ,IAAI,CAAA,CAAA,GAAK,EAAE,CAAA,CAAA;AAAA;AAE9E;;;AChFA,YAAA,EAAA;AAEA,cAAA,EAAA;;;ACQO,SAAS,oBAAoB,OAAA,EAA0E;AAC5G,EAAA,MAAM,GAAA,GAA8B,OAAA,CAAQ,GAAA,CAAI,CAAC2C,EAAAA,MAAO;AAAA,IACtD,MAAMA,EAAAA,CAAE,KAAA;AAAA,IACR,eAAeA,EAAAA,CAAE;AAAA,GACnB,CAAE,CAAA;AACF,EAAA,OAAO,EAAE,eAAA,EAAiB,CAAC,GAAG,CAAA,EAAE;AAClC;AAKO,SAAS,qBAAqB,QAAA,EAAmE;AACtG,EAAA,MAAM,OAAiC,EAAC;AAExC,EAAA,KAAA,IAASzB,KAAI,CAAA,EAAGA,EAAAA,GAAI,QAAA,CAAS,MAAA,EAAQA,MAAK,CAAA,EAAG;AAC3C,IAAA,MAAM,GAAA,GAA8B;AAAA,MAClC,EAAE,IAAA,EAAM,CAAA,UAAA,EAAM,QAAA,CAASA,EAAC,CAAE,CAAA,CAAA,EAAI,aAAA,EAAe,CAAA,SAAA,EAAY,QAAA,CAASA,EAAC,CAAE,CAAA,CAAA;AAAG,KAC1E;AACA,IAAA,IAAI,QAAA,CAASA,EAAAA,GAAI,CAAC,CAAA,EAAG;AACnB,MAAA,GAAA,CAAI,KAAK,EAAE,IAAA,EAAM,CAAA,UAAA,EAAM,QAAA,CAASA,KAAI,CAAC,CAAE,CAAA,CAAA,EAAI,aAAA,EAAe,YAAY,QAAA,CAASA,EAAAA,GAAI,CAAC,CAAE,IAAI,CAAA;AAAA,IAC5F;AACA,IAAA,IAAA,CAAK,KAAK,GAAG,CAAA;AAAA,EACf;AACA,EAAA,OAAO,EAAE,iBAAiB,IAAA,EAAK;AACjC;;;AClCAmO,aAAAA,EAAAA;AAEAjN,eAAAA,EAAAA;AACA,aAAA,EAAA;;;ACHAiN,aAAAA,EAAAA;AAEAjN,eAAAA,EAAAA;;;ACcO,SAAS,aAAa,IAAA,EAA0B;AACrD,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,SAAA;AAAA,IACN,IAAA,EAAM,EAAE,IAAA,EAAM,QAAA,EAAU,IAAA;AAAK,GAC/B;AACF;AAIO,SAAS,YAAY,IAAA,EAA0B;AACpD,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,QAAA;AAAA,IACN,MAAM,EAAE,IAAA,EAAM,YAAA,EAAc,IAAA,EAAM,OAAO,IAAA;AAAK,GAChD;AACF;AAIO,SAAS,YAAA,GAA2B;AACzC,EAAA,OAAO,EAAE,MAAM,SAAA,EAAU;AAC3B;AAIO,SAAS,aAAa,IAAA,EAA0B;AACrD,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,SAAA;AAAA,IACN,UAAU,CAAC,EAAE,IAAA,EAAM,QAAA,EAAU,MAAM;AAAA,GACrC;AACF;AAeO,SAAS,cAAA,CACd,IAAA,EACA,OAAA,EACA,SAAA,GAAY,EAAA,EACE;AACd,EAAA,MAAM,MAAA,GAAuB;AAAA,IAC3B,WAAA,CAAY,CAAA,mBAAA,EAAsB,IAAI,CAAA,CAAE;AAAA,GAC1C;AAEA,EAAA,IAAI,OAAA,CAAQ,WAAW,CAAA,EAAG;AACxB,IAAA,MAAA,CAAO,IAAA,CAAK,YAAA,CAAa,qBAAqB,CAAC,CAAA;AAC/C,IAAA,OAAO,MAAA;AAAA,EACT;AAEA,EAAA,KAAA,IAASlB,KAAI,CAAA,EAAGA,EAAAA,GAAI,OAAA,CAAQ,MAAA,EAAQA,MAAK,SAAA,EAAW;AAClD,IAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,KAAA,CAAMA,EAAAA,EAAGA,KAAI,SAAS,CAAA;AAC5C,IAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,GAAA,CAAI,CAACR,EAAAA,KAAM;AAC7B,MAAA,MAAM,IAAA,GAAOA,EAAAA,CAAE,KAAA,GAAQ,eAAA,GAAkB,kBAAA;AACzC,MAAA,MAAM,IAAA,GAAOA,EAAAA,CAAE,IAAA,KAAS,MAAA,IAAa,CAACA,EAAAA,CAAE,KAAA,GAAQ,CAAA,EAAA,EAAKyB,YAAAA,CAAYzB,EAAAA,CAAE,IAAI,CAAC,CAAA,CAAA,CAAA,GAAM,EAAA;AAC9E,MAAA,OAAO,GAAG,IAAI,CAAA,GAAA,EAAMA,EAAAA,CAAE,IAAI,KAAK,IAAI,CAAA,CAAA;AAAA,IACrC,CAAC,CAAA;AACD,IAAA,MAAA,CAAO,KAAK,YAAA,CAAa,KAAA,CAAM,IAAA,CAAK,IAAI,CAAC,CAAC,CAAA;AAAA,EAC5C;AAEA,EAAA,MAAA,CAAO,IAAA,CAAK,YAAA,CAAa,CAAA,EAAG,OAAA,CAAQ,MAAM,CAAA,KAAA,EAAQ,OAAA,CAAQ,MAAA,KAAW,CAAA,GAAI,EAAA,GAAK,GAAG,CAAA,CAAE,CAAC,CAAA;AACpF,EAAA,OAAO,MAAA;AACT;AAaO,SAAS,oBAAoB,QAAA,EAAyC;AAC3E,EAAA,IAAI,QAAA,CAAS,WAAW,CAAA,EAAG;AACzB,IAAA,OAAO,CAAC,YAAA,CAAa,yBAAyB,CAAC,CAAA;AAAA,EACjD;AAEA,EAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,GAAA,CAAI,CAACiD,EAAAA,KAAM;AAChC,IAAA,MAAM,MAAA,GAASA,EAAAA,CAAE,MAAA,GAAS,6BAAA,GAAgC,sBAAA;AAC1D,IAAA,MAAM,QAAQA,EAAAA,CAAE,KAAA,GAAQ,CAAA,QAAA,EAAMA,EAAAA,CAAE,KAAK,CAAA,CAAA,GAAK,EAAA;AAC1C,IAAA,OAAO,IAAIA,EAAAA,CAAE,QAAQ,CAAA,CAAA,EAAI,KAAK,KAAK,MAAM,CAAA,CAAA;AAAA,EAC3C,CAAC,CAAA;AAED,EAAA,OAAO;AAAA,IACL,YAAY,2BAA2B,CAAA;AAAA,IACvC,YAAA,CAAa,KAAA,CAAM,IAAA,CAAK,IAAI,CAAC;AAAA,GAC/B;AACF;AAOO,SAAS,WAAA,CAAY,SAAiB,MAAA,EAA+B;AAC1E,EAAA,MAAM,MAAA,GAAuB;AAAA,IAC3B,YAAA,CAAa,CAAA;AAAA,EAAgB,OAAO,CAAA,CAAE;AAAA,GACxC;AACA,EAAA,IAAI,MAAA,EAAQ;AACV,IAAA,MAAA,CAAO,IAAA,CAAK,YAAA,CAAa,MAAM,CAAC,CAAA;AAAA,EAClC;AACA,EAAA,OAAO,MAAA;AACT;AAIA,SAASxB,aAAY,KAAA,EAAuB;AAC1C,EAAA,IAAI,KAAA,GAAQ,IAAA,EAAM,OAAO,CAAA,EAAG,KAAK,CAAA,CAAA,CAAA;AACjC,EAAA,IAAI,KAAA,GAAQ,OAAO,IAAA,EAAM,OAAO,IAAI,KAAA,GAAQ,IAAA,EAAM,OAAA,CAAQ,CAAC,CAAC,CAAA,CAAA,CAAA;AAC5D,EAAA,OAAO,IAAI,KAAA,IAAS,IAAA,GAAO,IAAA,CAAA,EAAO,OAAA,CAAQ,CAAC,CAAC,CAAA,CAAA,CAAA;AAC9C","file":"index.js","sourcesContent":["/**\n * @cmdop/bot — Error hierarchy\n *\n * All errors thrown by @cmdop/bot extend BotError.\n * Never expose raw @cmdop/node or platform errors to consumers — wrap them.\n */\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Base\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport class BotError extends Error {\n public readonly code: string;\n public readonly context: Record<string, unknown>;\n\n constructor(\n message: string,\n options: {\n code?: string;\n context?: Record<string, unknown>;\n cause?: Error;\n } = {},\n ) {\n super(message, { cause: options.cause });\n this.name = this.constructor.name;\n this.code = options.code ?? this.constructor.name;\n this.context = options.context ?? {};\n }\n\n toLog(): Record<string, unknown> {\n return {\n error: this.name,\n code: this.code,\n message: this.message,\n context: this.context,\n };\n }\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Permission\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport class PermissionDeniedError extends BotError {\n constructor(userId: string, required: string) {\n super(`User ${userId} requires ${required} permission`, {\n code: 'PERMISSION_DENIED',\n context: { userId, required },\n });\n }\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Rate limiting\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport class RateLimitError extends BotError {\n public readonly retryAfterMs?: number;\n\n constructor(message: string, retryAfterMs?: number) {\n super(message, {\n code: 'RATE_LIMIT',\n context: { retryAfterMs },\n });\n this.retryAfterMs = retryAfterMs;\n }\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Handler errors\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport class HandlerError extends BotError {\n constructor(message: string, options?: { code?: string; context?: Record<string, unknown>; cause?: Error }) {\n super(message, options);\n }\n}\n\nexport class CommandNotFoundError extends HandlerError {\n constructor(command: string) {\n super(`Unknown command: /${command}`, {\n code: 'COMMAND_NOT_FOUND',\n context: { command },\n });\n }\n}\n\nexport class CommandArgsError extends HandlerError {\n constructor(command: string, hint: string) {\n super(`Invalid usage: /${command} — ${hint}`, {\n code: 'COMMAND_ARGS',\n context: { command, hint },\n });\n }\n}\n\nexport class ExecutionTimeoutError extends HandlerError {\n constructor(command: string, timeoutMs: number) {\n super(`Command '${command}' timed out after ${timeoutMs}ms`, {\n code: 'EXECUTION_TIMEOUT',\n context: { command, timeoutMs },\n });\n }\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// CMDOP / machine errors\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport class CMDOPError extends BotError {\n constructor(message: string, cause?: Error) {\n super(message, { code: 'CMDOP_ERROR', cause });\n }\n}\n\nexport class MachineNotFoundError extends BotError {\n constructor(machine: string) {\n super(`Machine '${machine}' not found`, { code: 'MACHINE_NOT_FOUND', context: { machine } });\n }\n}\n\nexport class MachineOfflineError extends BotError {\n constructor(machine: string) {\n super(`Machine '${machine}' is offline or has no active session`, { code: 'MACHINE_OFFLINE', context: { machine } });\n }\n}\n\nexport class CMDOPTimeoutError extends BotError {\n constructor(operation: string, timeoutMs: number, cause?: Error) {\n super(`CMDOP operation '${operation}' timed out after ${timeoutMs}ms`, { code: 'CMDOP_TIMEOUT', context: { operation, timeoutMs }, cause });\n }\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Channel errors\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport class ChannelError extends BotError {\n constructor(message: string, options?: { code?: string; context?: Record<string, unknown>; cause?: Error }) {\n super(message, options);\n }\n}\n\nexport class TelegramError extends ChannelError {\n constructor(message: string, cause?: Error) {\n super(message, { code: 'TELEGRAM_ERROR', cause });\n }\n}\n\nexport class DiscordError extends ChannelError {\n constructor(message: string, cause?: Error) {\n super(message, { code: 'DISCORD_ERROR', cause });\n }\n}\n\nexport class SlackError extends ChannelError {\n constructor(message: string, cause?: Error) {\n super(message, { code: 'SLACK_ERROR', cause });\n }\n}\n\nexport class TeamsError extends ChannelError {\n constructor(message: string, cause?: Error) {\n super(message, { code: 'TEAMS_ERROR', cause });\n }\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Config\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport class ConfigError extends BotError {\n constructor(message: string, context?: Record<string, unknown>) {\n super(message, { code: 'CONFIG_ERROR', context });\n }\n}\n","\"use strict\";\n\nexports.load = function (received, defaults, onto = {}) {\n var k, ref, v;\n\n for (k in defaults) {\n v = defaults[k];\n onto[k] = (ref = received[k]) != null ? ref : v;\n }\n\n return onto;\n};\n\nexports.overwrite = function (received, defaults, onto = {}) {\n var k, v;\n\n for (k in received) {\n v = received[k];\n\n if (defaults[k] !== void 0) {\n onto[k] = v;\n }\n }\n\n return onto;\n};","\"use strict\";\n\nvar DLList;\nDLList = class DLList {\n constructor(incr, decr) {\n this.incr = incr;\n this.decr = decr;\n this._first = null;\n this._last = null;\n this.length = 0;\n }\n\n push(value) {\n var node;\n this.length++;\n\n if (typeof this.incr === \"function\") {\n this.incr();\n }\n\n node = {\n value,\n prev: this._last,\n next: null\n };\n\n if (this._last != null) {\n this._last.next = node;\n this._last = node;\n } else {\n this._first = this._last = node;\n }\n\n return void 0;\n }\n\n shift() {\n var value;\n\n if (this._first == null) {\n return;\n } else {\n this.length--;\n\n if (typeof this.decr === \"function\") {\n this.decr();\n }\n }\n\n value = this._first.value;\n\n if ((this._first = this._first.next) != null) {\n this._first.prev = null;\n } else {\n this._last = null;\n }\n\n return value;\n }\n\n first() {\n if (this._first != null) {\n return this._first.value;\n }\n }\n\n getArray() {\n var node, ref, results;\n node = this._first;\n results = [];\n\n while (node != null) {\n results.push((ref = node, node = node.next, ref.value));\n }\n\n return results;\n }\n\n forEachShift(cb) {\n var node;\n node = this.shift();\n\n while (node != null) {\n cb(node), node = this.shift();\n }\n\n return void 0;\n }\n\n debug() {\n var node, ref, ref1, ref2, results;\n node = this._first;\n results = [];\n\n while (node != null) {\n results.push((ref = node, node = node.next, {\n value: ref.value,\n prev: (ref1 = ref.prev) != null ? ref1.value : void 0,\n next: (ref2 = ref.next) != null ? ref2.value : void 0\n }));\n }\n\n return results;\n }\n\n};\nmodule.exports = DLList;","\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nvar Events;\nEvents = class Events {\n constructor(instance) {\n this.instance = instance;\n this._events = {};\n\n if (this.instance.on != null || this.instance.once != null || this.instance.removeAllListeners != null) {\n throw new Error(\"An Emitter already exists for this object\");\n }\n\n this.instance.on = (name, cb) => {\n return this._addListener(name, \"many\", cb);\n };\n\n this.instance.once = (name, cb) => {\n return this._addListener(name, \"once\", cb);\n };\n\n this.instance.removeAllListeners = (name = null) => {\n if (name != null) {\n return delete this._events[name];\n } else {\n return this._events = {};\n }\n };\n }\n\n _addListener(name, status, cb) {\n var base;\n\n if ((base = this._events)[name] == null) {\n base[name] = [];\n }\n\n this._events[name].push({\n cb,\n status\n });\n\n return this.instance;\n }\n\n listenerCount(name) {\n if (this._events[name] != null) {\n return this._events[name].length;\n } else {\n return 0;\n }\n }\n\n trigger(name, ...args) {\n var _this = this;\n\n return _asyncToGenerator(function* () {\n var e, promises;\n\n try {\n if (name !== \"debug\") {\n _this.trigger(\"debug\", `Event triggered: ${name}`, args);\n }\n\n if (_this._events[name] == null) {\n return;\n }\n\n _this._events[name] = _this._events[name].filter(function (listener) {\n return listener.status !== \"none\";\n });\n promises = _this._events[name].map(\n /*#__PURE__*/\n function () {\n var _ref = _asyncToGenerator(function* (listener) {\n var e, returned;\n\n if (listener.status === \"none\") {\n return;\n }\n\n if (listener.status === \"once\") {\n listener.status = \"none\";\n }\n\n try {\n returned = typeof listener.cb === \"function\" ? listener.cb(...args) : void 0;\n\n if (typeof (returned != null ? returned.then : void 0) === \"function\") {\n return yield returned;\n } else {\n return returned;\n }\n } catch (error) {\n e = error;\n\n if (\"name\" !== \"error\") {\n _this.trigger(\"error\", e);\n }\n\n return null;\n }\n });\n\n return function (_x) {\n return _ref.apply(this, arguments);\n };\n }());\n return (yield Promise.all(promises)).find(function (x) {\n return x != null;\n });\n } catch (error) {\n e = error;\n\n if (\"name\" !== \"error\") {\n _this.trigger(\"error\", e);\n }\n\n return null;\n }\n })();\n }\n\n};\nmodule.exports = Events;","\"use strict\";\n\nvar DLList, Events, Queues;\nDLList = require(\"./DLList\");\nEvents = require(\"./Events\");\nQueues = class Queues {\n constructor(num_priorities) {\n var i;\n this.Events = new Events(this);\n this._length = 0;\n\n this._lists = function () {\n var j, ref, results;\n results = [];\n\n for (i = j = 1, ref = num_priorities; 1 <= ref ? j <= ref : j >= ref; i = 1 <= ref ? ++j : --j) {\n results.push(new DLList(() => {\n return this.incr();\n }, () => {\n return this.decr();\n }));\n }\n\n return results;\n }.call(this);\n }\n\n incr() {\n if (this._length++ === 0) {\n return this.Events.trigger(\"leftzero\");\n }\n }\n\n decr() {\n if (--this._length === 0) {\n return this.Events.trigger(\"zero\");\n }\n }\n\n push(job) {\n return this._lists[job.options.priority].push(job);\n }\n\n queued(priority) {\n if (priority != null) {\n return this._lists[priority].length;\n } else {\n return this._length;\n }\n }\n\n shiftAll(fn) {\n return this._lists.forEach(function (list) {\n return list.forEachShift(fn);\n });\n }\n\n getFirst(arr = this._lists) {\n var j, len, list;\n\n for (j = 0, len = arr.length; j < len; j++) {\n list = arr[j];\n\n if (list.length > 0) {\n return list;\n }\n }\n\n return [];\n }\n\n shiftLastFrom(priority) {\n return this.getFirst(this._lists.slice(priority).reverse()).shift();\n }\n\n};\nmodule.exports = Queues;","\"use strict\";\n\nvar BottleneckError;\nBottleneckError = class BottleneckError extends Error {};\nmodule.exports = BottleneckError;","\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nvar BottleneckError, DEFAULT_PRIORITY, Job, NUM_PRIORITIES, parser;\nNUM_PRIORITIES = 10;\nDEFAULT_PRIORITY = 5;\nparser = require(\"./parser\");\nBottleneckError = require(\"./BottleneckError\");\nJob = class Job {\n constructor(task, args, options, jobDefaults, rejectOnDrop, Events, _states, Promise) {\n this.task = task;\n this.args = args;\n this.rejectOnDrop = rejectOnDrop;\n this.Events = Events;\n this._states = _states;\n this.Promise = Promise;\n this.options = parser.load(options, jobDefaults);\n this.options.priority = this._sanitizePriority(this.options.priority);\n\n if (this.options.id === jobDefaults.id) {\n this.options.id = `${this.options.id}-${this._randomIndex()}`;\n }\n\n this.promise = new this.Promise((_resolve, _reject) => {\n this._resolve = _resolve;\n this._reject = _reject;\n });\n this.retryCount = 0;\n }\n\n _sanitizePriority(priority) {\n var sProperty;\n sProperty = ~~priority !== priority ? DEFAULT_PRIORITY : priority;\n\n if (sProperty < 0) {\n return 0;\n } else if (sProperty > NUM_PRIORITIES - 1) {\n return NUM_PRIORITIES - 1;\n } else {\n return sProperty;\n }\n }\n\n _randomIndex() {\n return Math.random().toString(36).slice(2);\n }\n\n doDrop({\n error,\n message = \"This job has been dropped by Bottleneck\"\n } = {}) {\n if (this._states.remove(this.options.id)) {\n if (this.rejectOnDrop) {\n this._reject(error != null ? error : new BottleneckError(message));\n }\n\n this.Events.trigger(\"dropped\", {\n args: this.args,\n options: this.options,\n task: this.task,\n promise: this.promise\n });\n return true;\n } else {\n return false;\n }\n }\n\n _assertStatus(expected) {\n var status;\n status = this._states.jobStatus(this.options.id);\n\n if (!(status === expected || expected === \"DONE\" && status === null)) {\n throw new BottleneckError(`Invalid job status ${status}, expected ${expected}. Please open an issue at https://github.com/SGrondin/bottleneck/issues`);\n }\n }\n\n doReceive() {\n this._states.start(this.options.id);\n\n return this.Events.trigger(\"received\", {\n args: this.args,\n options: this.options\n });\n }\n\n doQueue(reachedHWM, blocked) {\n this._assertStatus(\"RECEIVED\");\n\n this._states.next(this.options.id);\n\n return this.Events.trigger(\"queued\", {\n args: this.args,\n options: this.options,\n reachedHWM,\n blocked\n });\n }\n\n doRun() {\n if (this.retryCount === 0) {\n this._assertStatus(\"QUEUED\");\n\n this._states.next(this.options.id);\n } else {\n this._assertStatus(\"EXECUTING\");\n }\n\n return this.Events.trigger(\"scheduled\", {\n args: this.args,\n options: this.options\n });\n }\n\n doExecute(chained, clearGlobalState, run, free) {\n var _this = this;\n\n return _asyncToGenerator(function* () {\n var error, eventInfo, passed;\n\n if (_this.retryCount === 0) {\n _this._assertStatus(\"RUNNING\");\n\n _this._states.next(_this.options.id);\n } else {\n _this._assertStatus(\"EXECUTING\");\n }\n\n eventInfo = {\n args: _this.args,\n options: _this.options,\n retryCount: _this.retryCount\n };\n\n _this.Events.trigger(\"executing\", eventInfo);\n\n try {\n passed = yield chained != null ? chained.schedule(_this.options, _this.task, ..._this.args) : _this.task(..._this.args);\n\n if (clearGlobalState()) {\n _this.doDone(eventInfo);\n\n yield free(_this.options, eventInfo);\n\n _this._assertStatus(\"DONE\");\n\n return _this._resolve(passed);\n }\n } catch (error1) {\n error = error1;\n return _this._onFailure(error, eventInfo, clearGlobalState, run, free);\n }\n })();\n }\n\n doExpire(clearGlobalState, run, free) {\n var error, eventInfo;\n\n if (this._states.jobStatus(this.options.id === \"RUNNING\")) {\n this._states.next(this.options.id);\n }\n\n this._assertStatus(\"EXECUTING\");\n\n eventInfo = {\n args: this.args,\n options: this.options,\n retryCount: this.retryCount\n };\n error = new BottleneckError(`This job timed out after ${this.options.expiration} ms.`);\n return this._onFailure(error, eventInfo, clearGlobalState, run, free);\n }\n\n _onFailure(error, eventInfo, clearGlobalState, run, free) {\n var _this2 = this;\n\n return _asyncToGenerator(function* () {\n var retry, retryAfter;\n\n if (clearGlobalState()) {\n retry = yield _this2.Events.trigger(\"failed\", error, eventInfo);\n\n if (retry != null) {\n retryAfter = ~~retry;\n\n _this2.Events.trigger(\"retry\", `Retrying ${_this2.options.id} after ${retryAfter} ms`, eventInfo);\n\n _this2.retryCount++;\n return run(retryAfter);\n } else {\n _this2.doDone(eventInfo);\n\n yield free(_this2.options, eventInfo);\n\n _this2._assertStatus(\"DONE\");\n\n return _this2._reject(error);\n }\n }\n })();\n }\n\n doDone(eventInfo) {\n this._assertStatus(\"EXECUTING\");\n\n this._states.next(this.options.id);\n\n return this.Events.trigger(\"done\", eventInfo);\n }\n\n};\nmodule.exports = Job;","\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nvar BottleneckError, LocalDatastore, parser;\nparser = require(\"./parser\");\nBottleneckError = require(\"./BottleneckError\");\nLocalDatastore = class LocalDatastore {\n constructor(instance, storeOptions, storeInstanceOptions) {\n this.instance = instance;\n this.storeOptions = storeOptions;\n this.clientId = this.instance._randomIndex();\n parser.load(storeInstanceOptions, storeInstanceOptions, this);\n this._nextRequest = this._lastReservoirRefresh = this._lastReservoirIncrease = Date.now();\n this._running = 0;\n this._done = 0;\n this._unblockTime = 0;\n this.ready = this.Promise.resolve();\n this.clients = {};\n\n this._startHeartbeat();\n }\n\n _startHeartbeat() {\n var base;\n\n if (this.heartbeat == null && (this.storeOptions.reservoirRefreshInterval != null && this.storeOptions.reservoirRefreshAmount != null || this.storeOptions.reservoirIncreaseInterval != null && this.storeOptions.reservoirIncreaseAmount != null)) {\n return typeof (base = this.heartbeat = setInterval(() => {\n var amount, incr, maximum, now, reservoir;\n now = Date.now();\n\n if (this.storeOptions.reservoirRefreshInterval != null && now >= this._lastReservoirRefresh + this.storeOptions.reservoirRefreshInterval) {\n this._lastReservoirRefresh = now;\n this.storeOptions.reservoir = this.storeOptions.reservoirRefreshAmount;\n\n this.instance._drainAll(this.computeCapacity());\n }\n\n if (this.storeOptions.reservoirIncreaseInterval != null && now >= this._lastReservoirIncrease + this.storeOptions.reservoirIncreaseInterval) {\n var _this$storeOptions = this.storeOptions;\n amount = _this$storeOptions.reservoirIncreaseAmount;\n maximum = _this$storeOptions.reservoirIncreaseMaximum;\n reservoir = _this$storeOptions.reservoir;\n this._lastReservoirIncrease = now;\n incr = maximum != null ? Math.min(amount, maximum - reservoir) : amount;\n\n if (incr > 0) {\n this.storeOptions.reservoir += incr;\n return this.instance._drainAll(this.computeCapacity());\n }\n }\n }, this.heartbeatInterval)).unref === \"function\" ? base.unref() : void 0;\n } else {\n return clearInterval(this.heartbeat);\n }\n }\n\n __publish__(message) {\n var _this = this;\n\n return _asyncToGenerator(function* () {\n yield _this.yieldLoop();\n return _this.instance.Events.trigger(\"message\", message.toString());\n })();\n }\n\n __disconnect__(flush) {\n var _this2 = this;\n\n return _asyncToGenerator(function* () {\n yield _this2.yieldLoop();\n clearInterval(_this2.heartbeat);\n return _this2.Promise.resolve();\n })();\n }\n\n yieldLoop(t = 0) {\n return new this.Promise(function (resolve, reject) {\n return setTimeout(resolve, t);\n });\n }\n\n computePenalty() {\n var ref;\n return (ref = this.storeOptions.penalty) != null ? ref : 15 * this.storeOptions.minTime || 5000;\n }\n\n __updateSettings__(options) {\n var _this3 = this;\n\n return _asyncToGenerator(function* () {\n yield _this3.yieldLoop();\n parser.overwrite(options, options, _this3.storeOptions);\n\n _this3._startHeartbeat();\n\n _this3.instance._drainAll(_this3.computeCapacity());\n\n return true;\n })();\n }\n\n __running__() {\n var _this4 = this;\n\n return _asyncToGenerator(function* () {\n yield _this4.yieldLoop();\n return _this4._running;\n })();\n }\n\n __queued__() {\n var _this5 = this;\n\n return _asyncToGenerator(function* () {\n yield _this5.yieldLoop();\n return _this5.instance.queued();\n })();\n }\n\n __done__() {\n var _this6 = this;\n\n return _asyncToGenerator(function* () {\n yield _this6.yieldLoop();\n return _this6._done;\n })();\n }\n\n __groupCheck__(time) {\n var _this7 = this;\n\n return _asyncToGenerator(function* () {\n yield _this7.yieldLoop();\n return _this7._nextRequest + _this7.timeout < time;\n })();\n }\n\n computeCapacity() {\n var maxConcurrent, reservoir;\n var _this$storeOptions2 = this.storeOptions;\n maxConcurrent = _this$storeOptions2.maxConcurrent;\n reservoir = _this$storeOptions2.reservoir;\n\n if (maxConcurrent != null && reservoir != null) {\n return Math.min(maxConcurrent - this._running, reservoir);\n } else if (maxConcurrent != null) {\n return maxConcurrent - this._running;\n } else if (reservoir != null) {\n return reservoir;\n } else {\n return null;\n }\n }\n\n conditionsCheck(weight) {\n var capacity;\n capacity = this.computeCapacity();\n return capacity == null || weight <= capacity;\n }\n\n __incrementReservoir__(incr) {\n var _this8 = this;\n\n return _asyncToGenerator(function* () {\n var reservoir;\n yield _this8.yieldLoop();\n reservoir = _this8.storeOptions.reservoir += incr;\n\n _this8.instance._drainAll(_this8.computeCapacity());\n\n return reservoir;\n })();\n }\n\n __currentReservoir__() {\n var _this9 = this;\n\n return _asyncToGenerator(function* () {\n yield _this9.yieldLoop();\n return _this9.storeOptions.reservoir;\n })();\n }\n\n isBlocked(now) {\n return this._unblockTime >= now;\n }\n\n check(weight, now) {\n return this.conditionsCheck(weight) && this._nextRequest - now <= 0;\n }\n\n __check__(weight) {\n var _this10 = this;\n\n return _asyncToGenerator(function* () {\n var now;\n yield _this10.yieldLoop();\n now = Date.now();\n return _this10.check(weight, now);\n })();\n }\n\n __register__(index, weight, expiration) {\n var _this11 = this;\n\n return _asyncToGenerator(function* () {\n var now, wait;\n yield _this11.yieldLoop();\n now = Date.now();\n\n if (_this11.conditionsCheck(weight)) {\n _this11._running += weight;\n\n if (_this11.storeOptions.reservoir != null) {\n _this11.storeOptions.reservoir -= weight;\n }\n\n wait = Math.max(_this11._nextRequest - now, 0);\n _this11._nextRequest = now + wait + _this11.storeOptions.minTime;\n return {\n success: true,\n wait,\n reservoir: _this11.storeOptions.reservoir\n };\n } else {\n return {\n success: false\n };\n }\n })();\n }\n\n strategyIsBlock() {\n return this.storeOptions.strategy === 3;\n }\n\n __submit__(queueLength, weight) {\n var _this12 = this;\n\n return _asyncToGenerator(function* () {\n var blocked, now, reachedHWM;\n yield _this12.yieldLoop();\n\n if (_this12.storeOptions.maxConcurrent != null && weight > _this12.storeOptions.maxConcurrent) {\n throw new BottleneckError(`Impossible to add a job having a weight of ${weight} to a limiter having a maxConcurrent setting of ${_this12.storeOptions.maxConcurrent}`);\n }\n\n now = Date.now();\n reachedHWM = _this12.storeOptions.highWater != null && queueLength === _this12.storeOptions.highWater && !_this12.check(weight, now);\n blocked = _this12.strategyIsBlock() && (reachedHWM || _this12.isBlocked(now));\n\n if (blocked) {\n _this12._unblockTime = now + _this12.computePenalty();\n _this12._nextRequest = _this12._unblockTime + _this12.storeOptions.minTime;\n\n _this12.instance._dropAllQueued();\n }\n\n return {\n reachedHWM,\n blocked,\n strategy: _this12.storeOptions.strategy\n };\n })();\n }\n\n __free__(index, weight) {\n var _this13 = this;\n\n return _asyncToGenerator(function* () {\n yield _this13.yieldLoop();\n _this13._running -= weight;\n _this13._done += weight;\n\n _this13.instance._drainAll(_this13.computeCapacity());\n\n return {\n running: _this13._running\n };\n })();\n }\n\n};\nmodule.exports = LocalDatastore;","{\n \"blacklist_client.lua\": \"local blacklist = ARGV[num_static_argv + 1]\\n\\nif redis.call('zscore', client_last_seen_key, blacklist) then\\n redis.call('zadd', client_last_seen_key, 0, blacklist)\\nend\\n\\n\\nreturn {}\\n\",\n \"check.lua\": \"local weight = tonumber(ARGV[num_static_argv + 1])\\n\\nlocal capacity = process_tick(now, false)['capacity']\\nlocal nextRequest = tonumber(redis.call('hget', settings_key, 'nextRequest'))\\n\\nreturn conditions_check(capacity, weight) and nextRequest - now <= 0\\n\",\n \"conditions_check.lua\": \"local conditions_check = function (capacity, weight)\\n return capacity == nil or weight <= capacity\\nend\\n\",\n \"current_reservoir.lua\": \"return process_tick(now, false)['reservoir']\\n\",\n \"done.lua\": \"process_tick(now, false)\\n\\nreturn tonumber(redis.call('hget', settings_key, 'done'))\\n\",\n \"free.lua\": \"local index = ARGV[num_static_argv + 1]\\n\\nredis.call('zadd', job_expirations_key, 0, index)\\n\\nreturn process_tick(now, false)['running']\\n\",\n \"get_time.lua\": \"redis.replicate_commands()\\n\\nlocal get_time = function ()\\n local time = redis.call('time')\\n\\n return tonumber(time[1]..string.sub(time[2], 1, 3))\\nend\\n\",\n \"group_check.lua\": \"return not (redis.call('exists', settings_key) == 1)\\n\",\n \"heartbeat.lua\": \"process_tick(now, true)\\n\",\n \"increment_reservoir.lua\": \"local incr = tonumber(ARGV[num_static_argv + 1])\\n\\nredis.call('hincrby', settings_key, 'reservoir', incr)\\n\\nlocal reservoir = process_tick(now, true)['reservoir']\\n\\nlocal groupTimeout = tonumber(redis.call('hget', settings_key, 'groupTimeout'))\\nrefresh_expiration(0, 0, groupTimeout)\\n\\nreturn reservoir\\n\",\n \"init.lua\": \"local clear = tonumber(ARGV[num_static_argv + 1])\\nlocal limiter_version = ARGV[num_static_argv + 2]\\nlocal num_local_argv = num_static_argv + 2\\n\\nif clear == 1 then\\n redis.call('del', unpack(KEYS))\\nend\\n\\nif redis.call('exists', settings_key) == 0 then\\n -- Create\\n local args = {'hmset', settings_key}\\n\\n for i = num_local_argv + 1, #ARGV do\\n table.insert(args, ARGV[i])\\n end\\n\\n redis.call(unpack(args))\\n redis.call('hmset', settings_key,\\n 'nextRequest', now,\\n 'lastReservoirRefresh', now,\\n 'lastReservoirIncrease', now,\\n 'running', 0,\\n 'done', 0,\\n 'unblockTime', 0,\\n 'capacityPriorityCounter', 0\\n )\\n\\nelse\\n -- Apply migrations\\n local settings = redis.call('hmget', settings_key,\\n 'id',\\n 'version'\\n )\\n local id = settings[1]\\n local current_version = settings[2]\\n\\n if current_version ~= limiter_version then\\n local version_digits = {}\\n for k, v in string.gmatch(current_version, \\\"([^.]+)\\\") do\\n table.insert(version_digits, tonumber(k))\\n end\\n\\n -- 2.10.0\\n if version_digits[2] < 10 then\\n redis.call('hsetnx', settings_key, 'reservoirRefreshInterval', '')\\n redis.call('hsetnx', settings_key, 'reservoirRefreshAmount', '')\\n redis.call('hsetnx', settings_key, 'lastReservoirRefresh', '')\\n redis.call('hsetnx', settings_key, 'done', 0)\\n redis.call('hset', settings_key, 'version', '2.10.0')\\n end\\n\\n -- 2.11.1\\n if version_digits[2] < 11 or (version_digits[2] == 11 and version_digits[3] < 1) then\\n if redis.call('hstrlen', settings_key, 'lastReservoirRefresh') == 0 then\\n redis.call('hmset', settings_key,\\n 'lastReservoirRefresh', now,\\n 'version', '2.11.1'\\n )\\n end\\n end\\n\\n -- 2.14.0\\n if version_digits[2] < 14 then\\n local old_running_key = 'b_'..id..'_running'\\n local old_executing_key = 'b_'..id..'_executing'\\n\\n if redis.call('exists', old_running_key) == 1 then\\n redis.call('rename', old_running_key, job_weights_key)\\n end\\n if redis.call('exists', old_executing_key) == 1 then\\n redis.call('rename', old_executing_key, job_expirations_key)\\n end\\n redis.call('hset', settings_key, 'version', '2.14.0')\\n end\\n\\n -- 2.15.2\\n if version_digits[2] < 15 or (version_digits[2] == 15 and version_digits[3] < 2) then\\n redis.call('hsetnx', settings_key, 'capacityPriorityCounter', 0)\\n redis.call('hset', settings_key, 'version', '2.15.2')\\n end\\n\\n -- 2.17.0\\n if version_digits[2] < 17 then\\n redis.call('hsetnx', settings_key, 'clientTimeout', 10000)\\n redis.call('hset', settings_key, 'version', '2.17.0')\\n end\\n\\n -- 2.18.0\\n if version_digits[2] < 18 then\\n redis.call('hsetnx', settings_key, 'reservoirIncreaseInterval', '')\\n redis.call('hsetnx', settings_key, 'reservoirIncreaseAmount', '')\\n redis.call('hsetnx', settings_key, 'reservoirIncreaseMaximum', '')\\n redis.call('hsetnx', settings_key, 'lastReservoirIncrease', now)\\n redis.call('hset', settings_key, 'version', '2.18.0')\\n end\\n\\n end\\n\\n process_tick(now, false)\\nend\\n\\nlocal groupTimeout = tonumber(redis.call('hget', settings_key, 'groupTimeout'))\\nrefresh_expiration(0, 0, groupTimeout)\\n\\nreturn {}\\n\",\n \"process_tick.lua\": \"local process_tick = function (now, always_publish)\\n\\n local compute_capacity = function (maxConcurrent, running, reservoir)\\n if maxConcurrent ~= nil and reservoir ~= nil then\\n return math.min((maxConcurrent - running), reservoir)\\n elseif maxConcurrent ~= nil then\\n return maxConcurrent - running\\n elseif reservoir ~= nil then\\n return reservoir\\n else\\n return nil\\n end\\n end\\n\\n local settings = redis.call('hmget', settings_key,\\n 'id',\\n 'maxConcurrent',\\n 'running',\\n 'reservoir',\\n 'reservoirRefreshInterval',\\n 'reservoirRefreshAmount',\\n 'lastReservoirRefresh',\\n 'reservoirIncreaseInterval',\\n 'reservoirIncreaseAmount',\\n 'reservoirIncreaseMaximum',\\n 'lastReservoirIncrease',\\n 'capacityPriorityCounter',\\n 'clientTimeout'\\n )\\n local id = settings[1]\\n local maxConcurrent = tonumber(settings[2])\\n local running = tonumber(settings[3])\\n local reservoir = tonumber(settings[4])\\n local reservoirRefreshInterval = tonumber(settings[5])\\n local reservoirRefreshAmount = tonumber(settings[6])\\n local lastReservoirRefresh = tonumber(settings[7])\\n local reservoirIncreaseInterval = tonumber(settings[8])\\n local reservoirIncreaseAmount = tonumber(settings[9])\\n local reservoirIncreaseMaximum = tonumber(settings[10])\\n local lastReservoirIncrease = tonumber(settings[11])\\n local capacityPriorityCounter = tonumber(settings[12])\\n local clientTimeout = tonumber(settings[13])\\n\\n local initial_capacity = compute_capacity(maxConcurrent, running, reservoir)\\n\\n --\\n -- Process 'running' changes\\n --\\n local expired = redis.call('zrangebyscore', job_expirations_key, '-inf', '('..now)\\n\\n if #expired > 0 then\\n redis.call('zremrangebyscore', job_expirations_key, '-inf', '('..now)\\n\\n local flush_batch = function (batch, acc)\\n local weights = redis.call('hmget', job_weights_key, unpack(batch))\\n redis.call('hdel', job_weights_key, unpack(batch))\\n local clients = redis.call('hmget', job_clients_key, unpack(batch))\\n redis.call('hdel', job_clients_key, unpack(batch))\\n\\n -- Calculate sum of removed weights\\n for i = 1, #weights do\\n acc['total'] = acc['total'] + (tonumber(weights[i]) or 0)\\n end\\n\\n -- Calculate sum of removed weights by client\\n local client_weights = {}\\n for i = 1, #clients do\\n local removed = tonumber(weights[i]) or 0\\n if removed > 0 then\\n acc['client_weights'][clients[i]] = (acc['client_weights'][clients[i]] or 0) + removed\\n end\\n end\\n end\\n\\n local acc = {\\n ['total'] = 0,\\n ['client_weights'] = {}\\n }\\n local batch_size = 1000\\n\\n -- Compute changes to Zsets and apply changes to Hashes\\n for i = 1, #expired, batch_size do\\n local batch = {}\\n for j = i, math.min(i + batch_size - 1, #expired) do\\n table.insert(batch, expired[j])\\n end\\n\\n flush_batch(batch, acc)\\n end\\n\\n -- Apply changes to Zsets\\n if acc['total'] > 0 then\\n redis.call('hincrby', settings_key, 'done', acc['total'])\\n running = tonumber(redis.call('hincrby', settings_key, 'running', -acc['total']))\\n end\\n\\n for client, weight in pairs(acc['client_weights']) do\\n redis.call('zincrby', client_running_key, -weight, client)\\n end\\n end\\n\\n --\\n -- Process 'reservoir' changes\\n --\\n local reservoirRefreshActive = reservoirRefreshInterval ~= nil and reservoirRefreshAmount ~= nil\\n if reservoirRefreshActive and now >= lastReservoirRefresh + reservoirRefreshInterval then\\n reservoir = reservoirRefreshAmount\\n redis.call('hmset', settings_key,\\n 'reservoir', reservoir,\\n 'lastReservoirRefresh', now\\n )\\n end\\n\\n local reservoirIncreaseActive = reservoirIncreaseInterval ~= nil and reservoirIncreaseAmount ~= nil\\n if reservoirIncreaseActive and now >= lastReservoirIncrease + reservoirIncreaseInterval then\\n local num_intervals = math.floor((now - lastReservoirIncrease) / reservoirIncreaseInterval)\\n local incr = reservoirIncreaseAmount * num_intervals\\n if reservoirIncreaseMaximum ~= nil then\\n incr = math.min(incr, reservoirIncreaseMaximum - (reservoir or 0))\\n end\\n if incr > 0 then\\n reservoir = (reservoir or 0) + incr\\n end\\n redis.call('hmset', settings_key,\\n 'reservoir', reservoir,\\n 'lastReservoirIncrease', lastReservoirIncrease + (num_intervals * reservoirIncreaseInterval)\\n )\\n end\\n\\n --\\n -- Clear unresponsive clients\\n --\\n local unresponsive = redis.call('zrangebyscore', client_last_seen_key, '-inf', (now - clientTimeout))\\n local unresponsive_lookup = {}\\n local terminated_clients = {}\\n for i = 1, #unresponsive do\\n unresponsive_lookup[unresponsive[i]] = true\\n if tonumber(redis.call('zscore', client_running_key, unresponsive[i])) == 0 then\\n table.insert(terminated_clients, unresponsive[i])\\n end\\n end\\n if #terminated_clients > 0 then\\n redis.call('zrem', client_running_key, unpack(terminated_clients))\\n redis.call('hdel', client_num_queued_key, unpack(terminated_clients))\\n redis.call('zrem', client_last_registered_key, unpack(terminated_clients))\\n redis.call('zrem', client_last_seen_key, unpack(terminated_clients))\\n end\\n\\n --\\n -- Broadcast capacity changes\\n --\\n local final_capacity = compute_capacity(maxConcurrent, running, reservoir)\\n\\n if always_publish or (initial_capacity ~= nil and final_capacity == nil) then\\n -- always_publish or was not unlimited, now unlimited\\n redis.call('publish', 'b_'..id, 'capacity:'..(final_capacity or ''))\\n\\n elseif initial_capacity ~= nil and final_capacity ~= nil and final_capacity > initial_capacity then\\n -- capacity was increased\\n -- send the capacity message to the limiter having the lowest number of running jobs\\n -- the tiebreaker is the limiter having not registered a job in the longest time\\n\\n local lowest_concurrency_value = nil\\n local lowest_concurrency_clients = {}\\n local lowest_concurrency_last_registered = {}\\n local client_concurrencies = redis.call('zrange', client_running_key, 0, -1, 'withscores')\\n\\n for i = 1, #client_concurrencies, 2 do\\n local client = client_concurrencies[i]\\n local concurrency = tonumber(client_concurrencies[i+1])\\n\\n if (\\n lowest_concurrency_value == nil or lowest_concurrency_value == concurrency\\n ) and (\\n not unresponsive_lookup[client]\\n ) and (\\n tonumber(redis.call('hget', client_num_queued_key, client)) > 0\\n ) then\\n lowest_concurrency_value = concurrency\\n table.insert(lowest_concurrency_clients, client)\\n local last_registered = tonumber(redis.call('zscore', client_last_registered_key, client))\\n table.insert(lowest_concurrency_last_registered, last_registered)\\n end\\n end\\n\\n if #lowest_concurrency_clients > 0 then\\n local position = 1\\n local earliest = lowest_concurrency_last_registered[1]\\n\\n for i,v in ipairs(lowest_concurrency_last_registered) do\\n if v < earliest then\\n position = i\\n earliest = v\\n end\\n end\\n\\n local next_client = lowest_concurrency_clients[position]\\n redis.call('publish', 'b_'..id,\\n 'capacity-priority:'..(final_capacity or '')..\\n ':'..next_client..\\n ':'..capacityPriorityCounter\\n )\\n redis.call('hincrby', settings_key, 'capacityPriorityCounter', '1')\\n else\\n redis.call('publish', 'b_'..id, 'capacity:'..(final_capacity or ''))\\n end\\n end\\n\\n return {\\n ['capacity'] = final_capacity,\\n ['running'] = running,\\n ['reservoir'] = reservoir\\n }\\nend\\n\",\n \"queued.lua\": \"local clientTimeout = tonumber(redis.call('hget', settings_key, 'clientTimeout'))\\nlocal valid_clients = redis.call('zrangebyscore', client_last_seen_key, (now - clientTimeout), 'inf')\\nlocal client_queued = redis.call('hmget', client_num_queued_key, unpack(valid_clients))\\n\\nlocal sum = 0\\nfor i = 1, #client_queued do\\n sum = sum + tonumber(client_queued[i])\\nend\\n\\nreturn sum\\n\",\n \"refresh_expiration.lua\": \"local refresh_expiration = function (now, nextRequest, groupTimeout)\\n\\n if groupTimeout ~= nil then\\n local ttl = (nextRequest + groupTimeout) - now\\n\\n for i = 1, #KEYS do\\n redis.call('pexpire', KEYS[i], ttl)\\n end\\n end\\n\\nend\\n\",\n \"refs.lua\": \"local settings_key = KEYS[1]\\nlocal job_weights_key = KEYS[2]\\nlocal job_expirations_key = KEYS[3]\\nlocal job_clients_key = KEYS[4]\\nlocal client_running_key = KEYS[5]\\nlocal client_num_queued_key = KEYS[6]\\nlocal client_last_registered_key = KEYS[7]\\nlocal client_last_seen_key = KEYS[8]\\n\\nlocal now = tonumber(ARGV[1])\\nlocal client = ARGV[2]\\n\\nlocal num_static_argv = 2\\n\",\n \"register.lua\": \"local index = ARGV[num_static_argv + 1]\\nlocal weight = tonumber(ARGV[num_static_argv + 2])\\nlocal expiration = tonumber(ARGV[num_static_argv + 3])\\n\\nlocal state = process_tick(now, false)\\nlocal capacity = state['capacity']\\nlocal reservoir = state['reservoir']\\n\\nlocal settings = redis.call('hmget', settings_key,\\n 'nextRequest',\\n 'minTime',\\n 'groupTimeout'\\n)\\nlocal nextRequest = tonumber(settings[1])\\nlocal minTime = tonumber(settings[2])\\nlocal groupTimeout = tonumber(settings[3])\\n\\nif conditions_check(capacity, weight) then\\n\\n redis.call('hincrby', settings_key, 'running', weight)\\n redis.call('hset', job_weights_key, index, weight)\\n if expiration ~= nil then\\n redis.call('zadd', job_expirations_key, now + expiration, index)\\n end\\n redis.call('hset', job_clients_key, index, client)\\n redis.call('zincrby', client_running_key, weight, client)\\n redis.call('hincrby', client_num_queued_key, client, -1)\\n redis.call('zadd', client_last_registered_key, now, client)\\n\\n local wait = math.max(nextRequest - now, 0)\\n local newNextRequest = now + wait + minTime\\n\\n if reservoir == nil then\\n redis.call('hset', settings_key,\\n 'nextRequest', newNextRequest\\n )\\n else\\n reservoir = reservoir - weight\\n redis.call('hmset', settings_key,\\n 'reservoir', reservoir,\\n 'nextRequest', newNextRequest\\n )\\n end\\n\\n refresh_expiration(now, newNextRequest, groupTimeout)\\n\\n return {true, wait, reservoir}\\n\\nelse\\n return {false}\\nend\\n\",\n \"register_client.lua\": \"local queued = tonumber(ARGV[num_static_argv + 1])\\n\\n-- Could have been re-registered concurrently\\nif not redis.call('zscore', client_last_seen_key, client) then\\n redis.call('zadd', client_running_key, 0, client)\\n redis.call('hset', client_num_queued_key, client, queued)\\n redis.call('zadd', client_last_registered_key, 0, client)\\nend\\n\\nredis.call('zadd', client_last_seen_key, now, client)\\n\\nreturn {}\\n\",\n \"running.lua\": \"return process_tick(now, false)['running']\\n\",\n \"submit.lua\": \"local queueLength = tonumber(ARGV[num_static_argv + 1])\\nlocal weight = tonumber(ARGV[num_static_argv + 2])\\n\\nlocal capacity = process_tick(now, false)['capacity']\\n\\nlocal settings = redis.call('hmget', settings_key,\\n 'id',\\n 'maxConcurrent',\\n 'highWater',\\n 'nextRequest',\\n 'strategy',\\n 'unblockTime',\\n 'penalty',\\n 'minTime',\\n 'groupTimeout'\\n)\\nlocal id = settings[1]\\nlocal maxConcurrent = tonumber(settings[2])\\nlocal highWater = tonumber(settings[3])\\nlocal nextRequest = tonumber(settings[4])\\nlocal strategy = tonumber(settings[5])\\nlocal unblockTime = tonumber(settings[6])\\nlocal penalty = tonumber(settings[7])\\nlocal minTime = tonumber(settings[8])\\nlocal groupTimeout = tonumber(settings[9])\\n\\nif maxConcurrent ~= nil and weight > maxConcurrent then\\n return redis.error_reply('OVERWEIGHT:'..weight..':'..maxConcurrent)\\nend\\n\\nlocal reachedHWM = (highWater ~= nil and queueLength == highWater\\n and not (\\n conditions_check(capacity, weight)\\n and nextRequest - now <= 0\\n )\\n)\\n\\nlocal blocked = strategy == 3 and (reachedHWM or unblockTime >= now)\\n\\nif blocked then\\n local computedPenalty = penalty\\n if computedPenalty == nil then\\n if minTime == 0 then\\n computedPenalty = 5000\\n else\\n computedPenalty = 15 * minTime\\n end\\n end\\n\\n local newNextRequest = now + computedPenalty + minTime\\n\\n redis.call('hmset', settings_key,\\n 'unblockTime', now + computedPenalty,\\n 'nextRequest', newNextRequest\\n )\\n\\n local clients_queued_reset = redis.call('hkeys', client_num_queued_key)\\n local queued_reset = {}\\n for i = 1, #clients_queued_reset do\\n table.insert(queued_reset, clients_queued_reset[i])\\n table.insert(queued_reset, 0)\\n end\\n redis.call('hmset', client_num_queued_key, unpack(queued_reset))\\n\\n redis.call('publish', 'b_'..id, 'blocked:')\\n\\n refresh_expiration(now, newNextRequest, groupTimeout)\\nend\\n\\nif not blocked and not reachedHWM then\\n redis.call('hincrby', client_num_queued_key, client, 1)\\nend\\n\\nreturn {reachedHWM, blocked, strategy}\\n\",\n \"update_settings.lua\": \"local args = {'hmset', settings_key}\\n\\nfor i = num_static_argv + 1, #ARGV do\\n table.insert(args, ARGV[i])\\nend\\n\\nredis.call(unpack(args))\\n\\nprocess_tick(now, true)\\n\\nlocal groupTimeout = tonumber(redis.call('hget', settings_key, 'groupTimeout'))\\nrefresh_expiration(0, 0, groupTimeout)\\n\\nreturn {}\\n\",\n \"validate_client.lua\": \"if not redis.call('zscore', client_last_seen_key, client) then\\n return redis.error_reply('UNKNOWN_CLIENT')\\nend\\n\\nredis.call('zadd', client_last_seen_key, now, client)\\n\",\n \"validate_keys.lua\": \"if not (redis.call('exists', settings_key) == 1) then\\n return redis.error_reply('SETTINGS_KEY_NOT_FOUND')\\nend\\n\"\n}\n","\"use strict\";\n\nvar headers, lua, templates;\nlua = require(\"./lua.json\");\nheaders = {\n refs: lua[\"refs.lua\"],\n validate_keys: lua[\"validate_keys.lua\"],\n validate_client: lua[\"validate_client.lua\"],\n refresh_expiration: lua[\"refresh_expiration.lua\"],\n process_tick: lua[\"process_tick.lua\"],\n conditions_check: lua[\"conditions_check.lua\"],\n get_time: lua[\"get_time.lua\"]\n};\n\nexports.allKeys = function (id) {\n return [\n /*\n HASH\n */\n `b_${id}_settings`,\n /*\n HASH\n job index -> weight\n */\n `b_${id}_job_weights`,\n /*\n ZSET\n job index -> expiration\n */\n `b_${id}_job_expirations`,\n /*\n HASH\n job index -> client\n */\n `b_${id}_job_clients`,\n /*\n ZSET\n client -> sum running\n */\n `b_${id}_client_running`,\n /*\n HASH\n client -> num queued\n */\n `b_${id}_client_num_queued`,\n /*\n ZSET\n client -> last job registered\n */\n `b_${id}_client_last_registered`,\n /*\n ZSET\n client -> last seen\n */\n `b_${id}_client_last_seen`];\n};\n\ntemplates = {\n init: {\n keys: exports.allKeys,\n headers: [\"process_tick\"],\n refresh_expiration: true,\n code: lua[\"init.lua\"]\n },\n group_check: {\n keys: exports.allKeys,\n headers: [],\n refresh_expiration: false,\n code: lua[\"group_check.lua\"]\n },\n register_client: {\n keys: exports.allKeys,\n headers: [\"validate_keys\"],\n refresh_expiration: false,\n code: lua[\"register_client.lua\"]\n },\n blacklist_client: {\n keys: exports.allKeys,\n headers: [\"validate_keys\", \"validate_client\"],\n refresh_expiration: false,\n code: lua[\"blacklist_client.lua\"]\n },\n heartbeat: {\n keys: exports.allKeys,\n headers: [\"validate_keys\", \"validate_client\", \"process_tick\"],\n refresh_expiration: false,\n code: lua[\"heartbeat.lua\"]\n },\n update_settings: {\n keys: exports.allKeys,\n headers: [\"validate_keys\", \"validate_client\", \"process_tick\"],\n refresh_expiration: true,\n code: lua[\"update_settings.lua\"]\n },\n running: {\n keys: exports.allKeys,\n headers: [\"validate_keys\", \"validate_client\", \"process_tick\"],\n refresh_expiration: false,\n code: lua[\"running.lua\"]\n },\n queued: {\n keys: exports.allKeys,\n headers: [\"validate_keys\", \"validate_client\"],\n refresh_expiration: false,\n code: lua[\"queued.lua\"]\n },\n done: {\n keys: exports.allKeys,\n headers: [\"validate_keys\", \"validate_client\", \"process_tick\"],\n refresh_expiration: false,\n code: lua[\"done.lua\"]\n },\n check: {\n keys: exports.allKeys,\n headers: [\"validate_keys\", \"validate_client\", \"process_tick\", \"conditions_check\"],\n refresh_expiration: false,\n code: lua[\"check.lua\"]\n },\n submit: {\n keys: exports.allKeys,\n headers: [\"validate_keys\", \"validate_client\", \"process_tick\", \"conditions_check\"],\n refresh_expiration: true,\n code: lua[\"submit.lua\"]\n },\n register: {\n keys: exports.allKeys,\n headers: [\"validate_keys\", \"validate_client\", \"process_tick\", \"conditions_check\"],\n refresh_expiration: true,\n code: lua[\"register.lua\"]\n },\n free: {\n keys: exports.allKeys,\n headers: [\"validate_keys\", \"validate_client\", \"process_tick\"],\n refresh_expiration: true,\n code: lua[\"free.lua\"]\n },\n current_reservoir: {\n keys: exports.allKeys,\n headers: [\"validate_keys\", \"validate_client\", \"process_tick\"],\n refresh_expiration: false,\n code: lua[\"current_reservoir.lua\"]\n },\n increment_reservoir: {\n keys: exports.allKeys,\n headers: [\"validate_keys\", \"validate_client\", \"process_tick\"],\n refresh_expiration: true,\n code: lua[\"increment_reservoir.lua\"]\n }\n};\nexports.names = Object.keys(templates);\n\nexports.keys = function (name, id) {\n return templates[name].keys(id);\n};\n\nexports.payload = function (name) {\n var template;\n template = templates[name];\n return Array.prototype.concat(headers.refs, template.headers.map(function (h) {\n return headers[h];\n }), template.refresh_expiration ? headers.refresh_expiration : \"\", template.code).join(\"\\n\");\n};","\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nvar Events, RedisConnection, Scripts, parser;\nparser = require(\"./parser\");\nEvents = require(\"./Events\");\nScripts = require(\"./Scripts\");\n\nRedisConnection = function () {\n class RedisConnection {\n constructor(options = {}) {\n parser.load(options, this.defaults, this);\n\n if (this.Redis == null) {\n this.Redis = eval(\"require\")(\"redis\"); // Obfuscated or else Webpack/Angular will try to inline the optional redis module. To override this behavior: pass the redis module to Bottleneck as the 'Redis' option.\n }\n\n if (this.Events == null) {\n this.Events = new Events(this);\n }\n\n this.terminated = false;\n\n if (this.client == null) {\n this.client = this.Redis.createClient(this.clientOptions);\n }\n\n this.subscriber = this.client.duplicate();\n this.limiters = {};\n this.shas = {};\n this.ready = this.Promise.all([this._setup(this.client, false), this._setup(this.subscriber, true)]).then(() => {\n return this._loadScripts();\n }).then(() => {\n return {\n client: this.client,\n subscriber: this.subscriber\n };\n });\n }\n\n _setup(client, sub) {\n client.setMaxListeners(0);\n return new this.Promise((resolve, reject) => {\n client.on(\"error\", e => {\n return this.Events.trigger(\"error\", e);\n });\n\n if (sub) {\n client.on(\"message\", (channel, message) => {\n var ref;\n return (ref = this.limiters[channel]) != null ? ref._store.onMessage(channel, message) : void 0;\n });\n }\n\n if (client.ready) {\n return resolve();\n } else {\n return client.once(\"ready\", resolve);\n }\n });\n }\n\n _loadScript(name) {\n return new this.Promise((resolve, reject) => {\n var payload;\n payload = Scripts.payload(name);\n return this.client.multi([[\"script\", \"load\", payload]]).exec((err, replies) => {\n if (err != null) {\n return reject(err);\n }\n\n this.shas[name] = replies[0];\n return resolve(replies[0]);\n });\n });\n }\n\n _loadScripts() {\n return this.Promise.all(Scripts.names.map(k => {\n return this._loadScript(k);\n }));\n }\n\n __runCommand__(cmd) {\n var _this = this;\n\n return _asyncToGenerator(function* () {\n yield _this.ready;\n return new _this.Promise((resolve, reject) => {\n return _this.client.multi([cmd]).exec_atomic(function (err, replies) {\n if (err != null) {\n return reject(err);\n } else {\n return resolve(replies[0]);\n }\n });\n });\n })();\n }\n\n __addLimiter__(instance) {\n return this.Promise.all([instance.channel(), instance.channel_client()].map(channel => {\n return new this.Promise((resolve, reject) => {\n var handler;\n\n handler = chan => {\n if (chan === channel) {\n this.subscriber.removeListener(\"subscribe\", handler);\n this.limiters[channel] = instance;\n return resolve();\n }\n };\n\n this.subscriber.on(\"subscribe\", handler);\n return this.subscriber.subscribe(channel);\n });\n }));\n }\n\n __removeLimiter__(instance) {\n var _this2 = this;\n\n return this.Promise.all([instance.channel(), instance.channel_client()].map(\n /*#__PURE__*/\n function () {\n var _ref = _asyncToGenerator(function* (channel) {\n if (!_this2.terminated) {\n yield new _this2.Promise((resolve, reject) => {\n return _this2.subscriber.unsubscribe(channel, function (err, chan) {\n if (err != null) {\n return reject(err);\n }\n\n if (chan === channel) {\n return resolve();\n }\n });\n });\n }\n\n return delete _this2.limiters[channel];\n });\n\n return function (_x) {\n return _ref.apply(this, arguments);\n };\n }()));\n }\n\n __scriptArgs__(name, id, args, cb) {\n var keys;\n keys = Scripts.keys(name, id);\n return [this.shas[name], keys.length].concat(keys, args, cb);\n }\n\n __scriptFn__(name) {\n return this.client.evalsha.bind(this.client);\n }\n\n disconnect(flush = true) {\n var i, k, len, ref;\n ref = Object.keys(this.limiters);\n\n for (i = 0, len = ref.length; i < len; i++) {\n k = ref[i];\n clearInterval(this.limiters[k]._store.heartbeat);\n }\n\n this.limiters = {};\n this.terminated = true;\n this.client.end(flush);\n this.subscriber.end(flush);\n return this.Promise.resolve();\n }\n\n }\n\n ;\n RedisConnection.prototype.datastore = \"redis\";\n RedisConnection.prototype.defaults = {\n Redis: null,\n clientOptions: {},\n client: null,\n Promise: Promise,\n Events: null\n };\n return RedisConnection;\n}.call(void 0);\n\nmodule.exports = RedisConnection;","\"use strict\";\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nvar Events, IORedisConnection, Scripts, parser;\nparser = require(\"./parser\");\nEvents = require(\"./Events\");\nScripts = require(\"./Scripts\");\n\nIORedisConnection = function () {\n class IORedisConnection {\n constructor(options = {}) {\n parser.load(options, this.defaults, this);\n\n if (this.Redis == null) {\n this.Redis = eval(\"require\")(\"ioredis\"); // Obfuscated or else Webpack/Angular will try to inline the optional ioredis module. To override this behavior: pass the ioredis module to Bottleneck as the 'Redis' option.\n }\n\n if (this.Events == null) {\n this.Events = new Events(this);\n }\n\n this.terminated = false;\n\n if (this.clusterNodes != null) {\n this.client = new this.Redis.Cluster(this.clusterNodes, this.clientOptions);\n this.subscriber = new this.Redis.Cluster(this.clusterNodes, this.clientOptions);\n } else if (this.client != null && this.client.duplicate == null) {\n this.subscriber = new this.Redis.Cluster(this.client.startupNodes, this.client.options);\n } else {\n if (this.client == null) {\n this.client = new this.Redis(this.clientOptions);\n }\n\n this.subscriber = this.client.duplicate();\n }\n\n this.limiters = {};\n this.ready = this.Promise.all([this._setup(this.client, false), this._setup(this.subscriber, true)]).then(() => {\n this._loadScripts();\n\n return {\n client: this.client,\n subscriber: this.subscriber\n };\n });\n }\n\n _setup(client, sub) {\n client.setMaxListeners(0);\n return new this.Promise((resolve, reject) => {\n client.on(\"error\", e => {\n return this.Events.trigger(\"error\", e);\n });\n\n if (sub) {\n client.on(\"message\", (channel, message) => {\n var ref;\n return (ref = this.limiters[channel]) != null ? ref._store.onMessage(channel, message) : void 0;\n });\n }\n\n if (client.status === \"ready\") {\n return resolve();\n } else {\n return client.once(\"ready\", resolve);\n }\n });\n }\n\n _loadScripts() {\n return Scripts.names.forEach(name => {\n return this.client.defineCommand(name, {\n lua: Scripts.payload(name)\n });\n });\n }\n\n __runCommand__(cmd) {\n var _this = this;\n\n return _asyncToGenerator(function* () {\n var _, deleted;\n\n yield _this.ready;\n\n var _ref = yield _this.client.pipeline([cmd]).exec();\n\n var _ref2 = _slicedToArray(_ref, 1);\n\n var _ref2$ = _slicedToArray(_ref2[0], 2);\n\n _ = _ref2$[0];\n deleted = _ref2$[1];\n return deleted;\n })();\n }\n\n __addLimiter__(instance) {\n return this.Promise.all([instance.channel(), instance.channel_client()].map(channel => {\n return new this.Promise((resolve, reject) => {\n return this.subscriber.subscribe(channel, () => {\n this.limiters[channel] = instance;\n return resolve();\n });\n });\n }));\n }\n\n __removeLimiter__(instance) {\n var _this2 = this;\n\n return [instance.channel(), instance.channel_client()].forEach(\n /*#__PURE__*/\n function () {\n var _ref3 = _asyncToGenerator(function* (channel) {\n if (!_this2.terminated) {\n yield _this2.subscriber.unsubscribe(channel);\n }\n\n return delete _this2.limiters[channel];\n });\n\n return function (_x) {\n return _ref3.apply(this, arguments);\n };\n }());\n }\n\n __scriptArgs__(name, id, args, cb) {\n var keys;\n keys = Scripts.keys(name, id);\n return [keys.length].concat(keys, args, cb);\n }\n\n __scriptFn__(name) {\n return this.client[name].bind(this.client);\n }\n\n disconnect(flush = true) {\n var i, k, len, ref;\n ref = Object.keys(this.limiters);\n\n for (i = 0, len = ref.length; i < len; i++) {\n k = ref[i];\n clearInterval(this.limiters[k]._store.heartbeat);\n }\n\n this.limiters = {};\n this.terminated = true;\n\n if (flush) {\n return this.Promise.all([this.client.quit(), this.subscriber.quit()]);\n } else {\n this.client.disconnect();\n this.subscriber.disconnect();\n return this.Promise.resolve();\n }\n }\n\n }\n\n ;\n IORedisConnection.prototype.datastore = \"ioredis\";\n IORedisConnection.prototype.defaults = {\n Redis: null,\n clientOptions: {},\n clusterNodes: null,\n client: null,\n Promise: Promise,\n Events: null\n };\n return IORedisConnection;\n}.call(void 0);\n\nmodule.exports = IORedisConnection;","\"use strict\";\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nvar BottleneckError, IORedisConnection, RedisConnection, RedisDatastore, parser;\nparser = require(\"./parser\");\nBottleneckError = require(\"./BottleneckError\");\nRedisConnection = require(\"./RedisConnection\");\nIORedisConnection = require(\"./IORedisConnection\");\nRedisDatastore = class RedisDatastore {\n constructor(instance, storeOptions, storeInstanceOptions) {\n this.instance = instance;\n this.storeOptions = storeOptions;\n this.originalId = this.instance.id;\n this.clientId = this.instance._randomIndex();\n parser.load(storeInstanceOptions, storeInstanceOptions, this);\n this.clients = {};\n this.capacityPriorityCounters = {};\n this.sharedConnection = this.connection != null;\n\n if (this.connection == null) {\n this.connection = this.instance.datastore === \"redis\" ? new RedisConnection({\n Redis: this.Redis,\n clientOptions: this.clientOptions,\n Promise: this.Promise,\n Events: this.instance.Events\n }) : this.instance.datastore === \"ioredis\" ? new IORedisConnection({\n Redis: this.Redis,\n clientOptions: this.clientOptions,\n clusterNodes: this.clusterNodes,\n Promise: this.Promise,\n Events: this.instance.Events\n }) : void 0;\n }\n\n this.instance.connection = this.connection;\n this.instance.datastore = this.connection.datastore;\n this.ready = this.connection.ready.then(clients => {\n this.clients = clients;\n return this.runScript(\"init\", this.prepareInitSettings(this.clearDatastore));\n }).then(() => {\n return this.connection.__addLimiter__(this.instance);\n }).then(() => {\n return this.runScript(\"register_client\", [this.instance.queued()]);\n }).then(() => {\n var base;\n\n if (typeof (base = this.heartbeat = setInterval(() => {\n return this.runScript(\"heartbeat\", []).catch(e => {\n return this.instance.Events.trigger(\"error\", e);\n });\n }, this.heartbeatInterval)).unref === \"function\") {\n base.unref();\n }\n\n return this.clients;\n });\n }\n\n __publish__(message) {\n var _this = this;\n\n return _asyncToGenerator(function* () {\n var client;\n\n var _ref = yield _this.ready;\n\n client = _ref.client;\n return client.publish(_this.instance.channel(), `message:${message.toString()}`);\n })();\n }\n\n onMessage(channel, message) {\n var _this2 = this;\n\n return _asyncToGenerator(function* () {\n var capacity, counter, data, drained, e, newCapacity, pos, priorityClient, rawCapacity, type;\n\n try {\n pos = message.indexOf(\":\");\n var _ref2 = [message.slice(0, pos), message.slice(pos + 1)];\n type = _ref2[0];\n data = _ref2[1];\n\n if (type === \"capacity\") {\n return yield _this2.instance._drainAll(data.length > 0 ? ~~data : void 0);\n } else if (type === \"capacity-priority\") {\n var _data$split = data.split(\":\");\n\n var _data$split2 = _slicedToArray(_data$split, 3);\n\n rawCapacity = _data$split2[0];\n priorityClient = _data$split2[1];\n counter = _data$split2[2];\n capacity = rawCapacity.length > 0 ? ~~rawCapacity : void 0;\n\n if (priorityClient === _this2.clientId) {\n drained = yield _this2.instance._drainAll(capacity);\n newCapacity = capacity != null ? capacity - (drained || 0) : \"\";\n return yield _this2.clients.client.publish(_this2.instance.channel(), `capacity-priority:${newCapacity}::${counter}`);\n } else if (priorityClient === \"\") {\n clearTimeout(_this2.capacityPriorityCounters[counter]);\n delete _this2.capacityPriorityCounters[counter];\n return _this2.instance._drainAll(capacity);\n } else {\n return _this2.capacityPriorityCounters[counter] = setTimeout(\n /*#__PURE__*/\n _asyncToGenerator(function* () {\n var e;\n\n try {\n delete _this2.capacityPriorityCounters[counter];\n yield _this2.runScript(\"blacklist_client\", [priorityClient]);\n return yield _this2.instance._drainAll(capacity);\n } catch (error) {\n e = error;\n return _this2.instance.Events.trigger(\"error\", e);\n }\n }), 1000);\n }\n } else if (type === \"message\") {\n return _this2.instance.Events.trigger(\"message\", data);\n } else if (type === \"blocked\") {\n return yield _this2.instance._dropAllQueued();\n }\n } catch (error) {\n e = error;\n return _this2.instance.Events.trigger(\"error\", e);\n }\n })();\n }\n\n __disconnect__(flush) {\n clearInterval(this.heartbeat);\n\n if (this.sharedConnection) {\n return this.connection.__removeLimiter__(this.instance);\n } else {\n return this.connection.disconnect(flush);\n }\n }\n\n runScript(name, args) {\n var _this3 = this;\n\n return _asyncToGenerator(function* () {\n if (!(name === \"init\" || name === \"register_client\")) {\n yield _this3.ready;\n }\n\n return new _this3.Promise((resolve, reject) => {\n var all_args, arr;\n all_args = [Date.now(), _this3.clientId].concat(args);\n\n _this3.instance.Events.trigger(\"debug\", `Calling Redis script: ${name}.lua`, all_args);\n\n arr = _this3.connection.__scriptArgs__(name, _this3.originalId, all_args, function (err, replies) {\n if (err != null) {\n return reject(err);\n }\n\n return resolve(replies);\n });\n return _this3.connection.__scriptFn__(name)(...arr);\n }).catch(e => {\n if (e.message === \"SETTINGS_KEY_NOT_FOUND\") {\n if (name === \"heartbeat\") {\n return _this3.Promise.resolve();\n } else {\n return _this3.runScript(\"init\", _this3.prepareInitSettings(false)).then(() => {\n return _this3.runScript(name, args);\n });\n }\n } else if (e.message === \"UNKNOWN_CLIENT\") {\n return _this3.runScript(\"register_client\", [_this3.instance.queued()]).then(() => {\n return _this3.runScript(name, args);\n });\n } else {\n return _this3.Promise.reject(e);\n }\n });\n })();\n }\n\n prepareArray(arr) {\n var i, len, results, x;\n results = [];\n\n for (i = 0, len = arr.length; i < len; i++) {\n x = arr[i];\n results.push(x != null ? x.toString() : \"\");\n }\n\n return results;\n }\n\n prepareObject(obj) {\n var arr, k, v;\n arr = [];\n\n for (k in obj) {\n v = obj[k];\n arr.push(k, v != null ? v.toString() : \"\");\n }\n\n return arr;\n }\n\n prepareInitSettings(clear) {\n var args;\n args = this.prepareObject(Object.assign({}, this.storeOptions, {\n id: this.originalId,\n version: this.instance.version,\n groupTimeout: this.timeout,\n clientTimeout: this.clientTimeout\n }));\n args.unshift(clear ? 1 : 0, this.instance.version);\n return args;\n }\n\n convertBool(b) {\n return !!b;\n }\n\n __updateSettings__(options) {\n var _this4 = this;\n\n return _asyncToGenerator(function* () {\n yield _this4.runScript(\"update_settings\", _this4.prepareObject(options));\n return parser.overwrite(options, options, _this4.storeOptions);\n })();\n }\n\n __running__() {\n return this.runScript(\"running\", []);\n }\n\n __queued__() {\n return this.runScript(\"queued\", []);\n }\n\n __done__() {\n return this.runScript(\"done\", []);\n }\n\n __groupCheck__() {\n var _this5 = this;\n\n return _asyncToGenerator(function* () {\n return _this5.convertBool((yield _this5.runScript(\"group_check\", [])));\n })();\n }\n\n __incrementReservoir__(incr) {\n return this.runScript(\"increment_reservoir\", [incr]);\n }\n\n __currentReservoir__() {\n return this.runScript(\"current_reservoir\", []);\n }\n\n __check__(weight) {\n var _this6 = this;\n\n return _asyncToGenerator(function* () {\n return _this6.convertBool((yield _this6.runScript(\"check\", _this6.prepareArray([weight]))));\n })();\n }\n\n __register__(index, weight, expiration) {\n var _this7 = this;\n\n return _asyncToGenerator(function* () {\n var reservoir, success, wait;\n\n var _ref4 = yield _this7.runScript(\"register\", _this7.prepareArray([index, weight, expiration]));\n\n var _ref5 = _slicedToArray(_ref4, 3);\n\n success = _ref5[0];\n wait = _ref5[1];\n reservoir = _ref5[2];\n return {\n success: _this7.convertBool(success),\n wait,\n reservoir\n };\n })();\n }\n\n __submit__(queueLength, weight) {\n var _this8 = this;\n\n return _asyncToGenerator(function* () {\n var blocked, e, maxConcurrent, overweight, reachedHWM, strategy;\n\n try {\n var _ref6 = yield _this8.runScript(\"submit\", _this8.prepareArray([queueLength, weight]));\n\n var _ref7 = _slicedToArray(_ref6, 3);\n\n reachedHWM = _ref7[0];\n blocked = _ref7[1];\n strategy = _ref7[2];\n return {\n reachedHWM: _this8.convertBool(reachedHWM),\n blocked: _this8.convertBool(blocked),\n strategy\n };\n } catch (error) {\n e = error;\n\n if (e.message.indexOf(\"OVERWEIGHT\") === 0) {\n var _e$message$split = e.message.split(\":\");\n\n var _e$message$split2 = _slicedToArray(_e$message$split, 3);\n\n overweight = _e$message$split2[0];\n weight = _e$message$split2[1];\n maxConcurrent = _e$message$split2[2];\n throw new BottleneckError(`Impossible to add a job having a weight of ${weight} to a limiter having a maxConcurrent setting of ${maxConcurrent}`);\n } else {\n throw e;\n }\n }\n })();\n }\n\n __free__(index, weight) {\n var _this9 = this;\n\n return _asyncToGenerator(function* () {\n var running;\n running = yield _this9.runScript(\"free\", _this9.prepareArray([index]));\n return {\n running\n };\n })();\n }\n\n};\nmodule.exports = RedisDatastore;","\"use strict\";\n\nvar BottleneckError, States;\nBottleneckError = require(\"./BottleneckError\");\nStates = class States {\n constructor(status1) {\n this.status = status1;\n this._jobs = {};\n this.counts = this.status.map(function () {\n return 0;\n });\n }\n\n next(id) {\n var current, next;\n current = this._jobs[id];\n next = current + 1;\n\n if (current != null && next < this.status.length) {\n this.counts[current]--;\n this.counts[next]++;\n return this._jobs[id]++;\n } else if (current != null) {\n this.counts[current]--;\n return delete this._jobs[id];\n }\n }\n\n start(id) {\n var initial;\n initial = 0;\n this._jobs[id] = initial;\n return this.counts[initial]++;\n }\n\n remove(id) {\n var current;\n current = this._jobs[id];\n\n if (current != null) {\n this.counts[current]--;\n delete this._jobs[id];\n }\n\n return current != null;\n }\n\n jobStatus(id) {\n var ref;\n return (ref = this.status[this._jobs[id]]) != null ? ref : null;\n }\n\n statusJobs(status) {\n var k, pos, ref, results, v;\n\n if (status != null) {\n pos = this.status.indexOf(status);\n\n if (pos < 0) {\n throw new BottleneckError(`status must be one of ${this.status.join(', ')}`);\n }\n\n ref = this._jobs;\n results = [];\n\n for (k in ref) {\n v = ref[k];\n\n if (v === pos) {\n results.push(k);\n }\n }\n\n return results;\n } else {\n return Object.keys(this._jobs);\n }\n }\n\n statusCounts() {\n return this.counts.reduce((acc, v, i) => {\n acc[this.status[i]] = v;\n return acc;\n }, {});\n }\n\n};\nmodule.exports = States;","\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nvar DLList, Sync;\nDLList = require(\"./DLList\");\nSync = class Sync {\n constructor(name, Promise) {\n this.schedule = this.schedule.bind(this);\n this.name = name;\n this.Promise = Promise;\n this._running = 0;\n this._queue = new DLList();\n }\n\n isEmpty() {\n return this._queue.length === 0;\n }\n\n _tryToRun() {\n var _this = this;\n\n return _asyncToGenerator(function* () {\n var args, cb, error, reject, resolve, returned, task;\n\n if (_this._running < 1 && _this._queue.length > 0) {\n _this._running++;\n\n var _this$_queue$shift = _this._queue.shift();\n\n task = _this$_queue$shift.task;\n args = _this$_queue$shift.args;\n resolve = _this$_queue$shift.resolve;\n reject = _this$_queue$shift.reject;\n cb = yield _asyncToGenerator(function* () {\n try {\n returned = yield task(...args);\n return function () {\n return resolve(returned);\n };\n } catch (error1) {\n error = error1;\n return function () {\n return reject(error);\n };\n }\n })();\n _this._running--;\n\n _this._tryToRun();\n\n return cb();\n }\n })();\n }\n\n schedule(task, ...args) {\n var promise, reject, resolve;\n resolve = reject = null;\n promise = new this.Promise(function (_resolve, _reject) {\n resolve = _resolve;\n return reject = _reject;\n });\n\n this._queue.push({\n task,\n args,\n resolve,\n reject\n });\n\n this._tryToRun();\n\n return promise;\n }\n\n};\nmodule.exports = Sync;","{\"version\":\"2.19.5\"}\n","\"use strict\";\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nvar Events, Group, IORedisConnection, RedisConnection, Scripts, parser;\nparser = require(\"./parser\");\nEvents = require(\"./Events\");\nRedisConnection = require(\"./RedisConnection\");\nIORedisConnection = require(\"./IORedisConnection\");\nScripts = require(\"./Scripts\");\n\nGroup = function () {\n class Group {\n constructor(limiterOptions = {}) {\n this.deleteKey = this.deleteKey.bind(this);\n this.limiterOptions = limiterOptions;\n parser.load(this.limiterOptions, this.defaults, this);\n this.Events = new Events(this);\n this.instances = {};\n this.Bottleneck = require(\"./Bottleneck\");\n\n this._startAutoCleanup();\n\n this.sharedConnection = this.connection != null;\n\n if (this.connection == null) {\n if (this.limiterOptions.datastore === \"redis\") {\n this.connection = new RedisConnection(Object.assign({}, this.limiterOptions, {\n Events: this.Events\n }));\n } else if (this.limiterOptions.datastore === \"ioredis\") {\n this.connection = new IORedisConnection(Object.assign({}, this.limiterOptions, {\n Events: this.Events\n }));\n }\n }\n }\n\n key(key = \"\") {\n var ref;\n return (ref = this.instances[key]) != null ? ref : (() => {\n var limiter;\n limiter = this.instances[key] = new this.Bottleneck(Object.assign(this.limiterOptions, {\n id: `${this.id}-${key}`,\n timeout: this.timeout,\n connection: this.connection\n }));\n this.Events.trigger(\"created\", limiter, key);\n return limiter;\n })();\n }\n\n deleteKey(key = \"\") {\n var _this = this;\n\n return _asyncToGenerator(function* () {\n var deleted, instance;\n instance = _this.instances[key];\n\n if (_this.connection) {\n deleted = yield _this.connection.__runCommand__(['del', ...Scripts.allKeys(`${_this.id}-${key}`)]);\n }\n\n if (instance != null) {\n delete _this.instances[key];\n yield instance.disconnect();\n }\n\n return instance != null || deleted > 0;\n })();\n }\n\n limiters() {\n var k, ref, results, v;\n ref = this.instances;\n results = [];\n\n for (k in ref) {\n v = ref[k];\n results.push({\n key: k,\n limiter: v\n });\n }\n\n return results;\n }\n\n keys() {\n return Object.keys(this.instances);\n }\n\n clusterKeys() {\n var _this2 = this;\n\n return _asyncToGenerator(function* () {\n var cursor, end, found, i, k, keys, len, next, start;\n\n if (_this2.connection == null) {\n return _this2.Promise.resolve(_this2.keys());\n }\n\n keys = [];\n cursor = null;\n start = `b_${_this2.id}-`.length;\n end = \"_settings\".length;\n\n while (cursor !== 0) {\n var _ref = yield _this2.connection.__runCommand__([\"scan\", cursor != null ? cursor : 0, \"match\", `b_${_this2.id}-*_settings`, \"count\", 10000]);\n\n var _ref2 = _slicedToArray(_ref, 2);\n\n next = _ref2[0];\n found = _ref2[1];\n cursor = ~~next;\n\n for (i = 0, len = found.length; i < len; i++) {\n k = found[i];\n keys.push(k.slice(start, -end));\n }\n }\n\n return keys;\n })();\n }\n\n _startAutoCleanup() {\n var _this3 = this;\n\n var base;\n clearInterval(this.interval);\n return typeof (base = this.interval = setInterval(\n /*#__PURE__*/\n _asyncToGenerator(function* () {\n var e, k, ref, results, time, v;\n time = Date.now();\n ref = _this3.instances;\n results = [];\n\n for (k in ref) {\n v = ref[k];\n\n try {\n if (yield v._store.__groupCheck__(time)) {\n results.push(_this3.deleteKey(k));\n } else {\n results.push(void 0);\n }\n } catch (error) {\n e = error;\n results.push(v.Events.trigger(\"error\", e));\n }\n }\n\n return results;\n }), this.timeout / 2)).unref === \"function\" ? base.unref() : void 0;\n }\n\n updateSettings(options = {}) {\n parser.overwrite(options, this.defaults, this);\n parser.overwrite(options, options, this.limiterOptions);\n\n if (options.timeout != null) {\n return this._startAutoCleanup();\n }\n }\n\n disconnect(flush = true) {\n var ref;\n\n if (!this.sharedConnection) {\n return (ref = this.connection) != null ? ref.disconnect(flush) : void 0;\n }\n }\n\n }\n\n ;\n Group.prototype.defaults = {\n timeout: 1000 * 60 * 5,\n connection: null,\n Promise: Promise,\n id: \"group-key\"\n };\n return Group;\n}.call(void 0);\n\nmodule.exports = Group;","\"use strict\";\n\nvar Batcher, Events, parser;\nparser = require(\"./parser\");\nEvents = require(\"./Events\");\n\nBatcher = function () {\n class Batcher {\n constructor(options = {}) {\n this.options = options;\n parser.load(this.options, this.defaults, this);\n this.Events = new Events(this);\n this._arr = [];\n\n this._resetPromise();\n\n this._lastFlush = Date.now();\n }\n\n _resetPromise() {\n return this._promise = new this.Promise((res, rej) => {\n return this._resolve = res;\n });\n }\n\n _flush() {\n clearTimeout(this._timeout);\n this._lastFlush = Date.now();\n\n this._resolve();\n\n this.Events.trigger(\"batch\", this._arr);\n this._arr = [];\n return this._resetPromise();\n }\n\n add(data) {\n var ret;\n\n this._arr.push(data);\n\n ret = this._promise;\n\n if (this._arr.length === this.maxSize) {\n this._flush();\n } else if (this.maxTime != null && this._arr.length === 1) {\n this._timeout = setTimeout(() => {\n return this._flush();\n }, this.maxTime);\n }\n\n return ret;\n }\n\n }\n\n ;\n Batcher.prototype.defaults = {\n maxTime: null,\n maxSize: null,\n Promise: Promise\n };\n return Batcher;\n}.call(void 0);\n\nmodule.exports = Batcher;","\"use strict\";\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _toArray(arr) { return _arrayWithHoles(arr) || _iterableToArray(arr) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nvar Bottleneck,\n DEFAULT_PRIORITY,\n Events,\n Job,\n LocalDatastore,\n NUM_PRIORITIES,\n Queues,\n RedisDatastore,\n States,\n Sync,\n parser,\n splice = [].splice;\nNUM_PRIORITIES = 10;\nDEFAULT_PRIORITY = 5;\nparser = require(\"./parser\");\nQueues = require(\"./Queues\");\nJob = require(\"./Job\");\nLocalDatastore = require(\"./LocalDatastore\");\nRedisDatastore = require(\"./RedisDatastore\");\nEvents = require(\"./Events\");\nStates = require(\"./States\");\nSync = require(\"./Sync\");\n\nBottleneck = function () {\n class Bottleneck {\n constructor(options = {}, ...invalid) {\n var storeInstanceOptions, storeOptions;\n this._addToQueue = this._addToQueue.bind(this);\n\n this._validateOptions(options, invalid);\n\n parser.load(options, this.instanceDefaults, this);\n this._queues = new Queues(NUM_PRIORITIES);\n this._scheduled = {};\n this._states = new States([\"RECEIVED\", \"QUEUED\", \"RUNNING\", \"EXECUTING\"].concat(this.trackDoneStatus ? [\"DONE\"] : []));\n this._limiter = null;\n this.Events = new Events(this);\n this._submitLock = new Sync(\"submit\", this.Promise);\n this._registerLock = new Sync(\"register\", this.Promise);\n storeOptions = parser.load(options, this.storeDefaults, {});\n\n this._store = function () {\n if (this.datastore === \"redis\" || this.datastore === \"ioredis\" || this.connection != null) {\n storeInstanceOptions = parser.load(options, this.redisStoreDefaults, {});\n return new RedisDatastore(this, storeOptions, storeInstanceOptions);\n } else if (this.datastore === \"local\") {\n storeInstanceOptions = parser.load(options, this.localStoreDefaults, {});\n return new LocalDatastore(this, storeOptions, storeInstanceOptions);\n } else {\n throw new Bottleneck.prototype.BottleneckError(`Invalid datastore type: ${this.datastore}`);\n }\n }.call(this);\n\n this._queues.on(\"leftzero\", () => {\n var ref;\n return (ref = this._store.heartbeat) != null ? typeof ref.ref === \"function\" ? ref.ref() : void 0 : void 0;\n });\n\n this._queues.on(\"zero\", () => {\n var ref;\n return (ref = this._store.heartbeat) != null ? typeof ref.unref === \"function\" ? ref.unref() : void 0 : void 0;\n });\n }\n\n _validateOptions(options, invalid) {\n if (!(options != null && typeof options === \"object\" && invalid.length === 0)) {\n throw new Bottleneck.prototype.BottleneckError(\"Bottleneck v2 takes a single object argument. Refer to https://github.com/SGrondin/bottleneck#upgrading-to-v2 if you're upgrading from Bottleneck v1.\");\n }\n }\n\n ready() {\n return this._store.ready;\n }\n\n clients() {\n return this._store.clients;\n }\n\n channel() {\n return `b_${this.id}`;\n }\n\n channel_client() {\n return `b_${this.id}_${this._store.clientId}`;\n }\n\n publish(message) {\n return this._store.__publish__(message);\n }\n\n disconnect(flush = true) {\n return this._store.__disconnect__(flush);\n }\n\n chain(_limiter) {\n this._limiter = _limiter;\n return this;\n }\n\n queued(priority) {\n return this._queues.queued(priority);\n }\n\n clusterQueued() {\n return this._store.__queued__();\n }\n\n empty() {\n return this.queued() === 0 && this._submitLock.isEmpty();\n }\n\n running() {\n return this._store.__running__();\n }\n\n done() {\n return this._store.__done__();\n }\n\n jobStatus(id) {\n return this._states.jobStatus(id);\n }\n\n jobs(status) {\n return this._states.statusJobs(status);\n }\n\n counts() {\n return this._states.statusCounts();\n }\n\n _randomIndex() {\n return Math.random().toString(36).slice(2);\n }\n\n check(weight = 1) {\n return this._store.__check__(weight);\n }\n\n _clearGlobalState(index) {\n if (this._scheduled[index] != null) {\n clearTimeout(this._scheduled[index].expiration);\n delete this._scheduled[index];\n return true;\n } else {\n return false;\n }\n }\n\n _free(index, job, options, eventInfo) {\n var _this = this;\n\n return _asyncToGenerator(function* () {\n var e, running;\n\n try {\n var _ref = yield _this._store.__free__(index, options.weight);\n\n running = _ref.running;\n\n _this.Events.trigger(\"debug\", `Freed ${options.id}`, eventInfo);\n\n if (running === 0 && _this.empty()) {\n return _this.Events.trigger(\"idle\");\n }\n } catch (error1) {\n e = error1;\n return _this.Events.trigger(\"error\", e);\n }\n })();\n }\n\n _run(index, job, wait) {\n var clearGlobalState, free, run;\n job.doRun();\n clearGlobalState = this._clearGlobalState.bind(this, index);\n run = this._run.bind(this, index, job);\n free = this._free.bind(this, index, job);\n return this._scheduled[index] = {\n timeout: setTimeout(() => {\n return job.doExecute(this._limiter, clearGlobalState, run, free);\n }, wait),\n expiration: job.options.expiration != null ? setTimeout(function () {\n return job.doExpire(clearGlobalState, run, free);\n }, wait + job.options.expiration) : void 0,\n job: job\n };\n }\n\n _drainOne(capacity) {\n return this._registerLock.schedule(() => {\n var args, index, next, options, queue;\n\n if (this.queued() === 0) {\n return this.Promise.resolve(null);\n }\n\n queue = this._queues.getFirst();\n\n var _next2 = next = queue.first();\n\n options = _next2.options;\n args = _next2.args;\n\n if (capacity != null && options.weight > capacity) {\n return this.Promise.resolve(null);\n }\n\n this.Events.trigger(\"debug\", `Draining ${options.id}`, {\n args,\n options\n });\n index = this._randomIndex();\n return this._store.__register__(index, options.weight, options.expiration).then(({\n success,\n wait,\n reservoir\n }) => {\n var empty;\n this.Events.trigger(\"debug\", `Drained ${options.id}`, {\n success,\n args,\n options\n });\n\n if (success) {\n queue.shift();\n empty = this.empty();\n\n if (empty) {\n this.Events.trigger(\"empty\");\n }\n\n if (reservoir === 0) {\n this.Events.trigger(\"depleted\", empty);\n }\n\n this._run(index, next, wait);\n\n return this.Promise.resolve(options.weight);\n } else {\n return this.Promise.resolve(null);\n }\n });\n });\n }\n\n _drainAll(capacity, total = 0) {\n return this._drainOne(capacity).then(drained => {\n var newCapacity;\n\n if (drained != null) {\n newCapacity = capacity != null ? capacity - drained : capacity;\n return this._drainAll(newCapacity, total + drained);\n } else {\n return this.Promise.resolve(total);\n }\n }).catch(e => {\n return this.Events.trigger(\"error\", e);\n });\n }\n\n _dropAllQueued(message) {\n return this._queues.shiftAll(function (job) {\n return job.doDrop({\n message\n });\n });\n }\n\n stop(options = {}) {\n var done, waitForExecuting;\n options = parser.load(options, this.stopDefaults);\n\n waitForExecuting = at => {\n var finished;\n\n finished = () => {\n var counts;\n counts = this._states.counts;\n return counts[0] + counts[1] + counts[2] + counts[3] === at;\n };\n\n return new this.Promise((resolve, reject) => {\n if (finished()) {\n return resolve();\n } else {\n return this.on(\"done\", () => {\n if (finished()) {\n this.removeAllListeners(\"done\");\n return resolve();\n }\n });\n }\n });\n };\n\n done = options.dropWaitingJobs ? (this._run = function (index, next) {\n return next.doDrop({\n message: options.dropErrorMessage\n });\n }, this._drainOne = () => {\n return this.Promise.resolve(null);\n }, this._registerLock.schedule(() => {\n return this._submitLock.schedule(() => {\n var k, ref, v;\n ref = this._scheduled;\n\n for (k in ref) {\n v = ref[k];\n\n if (this.jobStatus(v.job.options.id) === \"RUNNING\") {\n clearTimeout(v.timeout);\n clearTimeout(v.expiration);\n v.job.doDrop({\n message: options.dropErrorMessage\n });\n }\n }\n\n this._dropAllQueued(options.dropErrorMessage);\n\n return waitForExecuting(0);\n });\n })) : this.schedule({\n priority: NUM_PRIORITIES - 1,\n weight: 0\n }, () => {\n return waitForExecuting(1);\n });\n\n this._receive = function (job) {\n return job._reject(new Bottleneck.prototype.BottleneckError(options.enqueueErrorMessage));\n };\n\n this.stop = () => {\n return this.Promise.reject(new Bottleneck.prototype.BottleneckError(\"stop() has already been called\"));\n };\n\n return done;\n }\n\n _addToQueue(job) {\n var _this2 = this;\n\n return _asyncToGenerator(function* () {\n var args, blocked, error, options, reachedHWM, shifted, strategy;\n args = job.args;\n options = job.options;\n\n try {\n var _ref2 = yield _this2._store.__submit__(_this2.queued(), options.weight);\n\n reachedHWM = _ref2.reachedHWM;\n blocked = _ref2.blocked;\n strategy = _ref2.strategy;\n } catch (error1) {\n error = error1;\n\n _this2.Events.trigger(\"debug\", `Could not queue ${options.id}`, {\n args,\n options,\n error\n });\n\n job.doDrop({\n error\n });\n return false;\n }\n\n if (blocked) {\n job.doDrop();\n return true;\n } else if (reachedHWM) {\n shifted = strategy === Bottleneck.prototype.strategy.LEAK ? _this2._queues.shiftLastFrom(options.priority) : strategy === Bottleneck.prototype.strategy.OVERFLOW_PRIORITY ? _this2._queues.shiftLastFrom(options.priority + 1) : strategy === Bottleneck.prototype.strategy.OVERFLOW ? job : void 0;\n\n if (shifted != null) {\n shifted.doDrop();\n }\n\n if (shifted == null || strategy === Bottleneck.prototype.strategy.OVERFLOW) {\n if (shifted == null) {\n job.doDrop();\n }\n\n return reachedHWM;\n }\n }\n\n job.doQueue(reachedHWM, blocked);\n\n _this2._queues.push(job);\n\n yield _this2._drainAll();\n return reachedHWM;\n })();\n }\n\n _receive(job) {\n if (this._states.jobStatus(job.options.id) != null) {\n job._reject(new Bottleneck.prototype.BottleneckError(`A job with the same id already exists (id=${job.options.id})`));\n\n return false;\n } else {\n job.doReceive();\n return this._submitLock.schedule(this._addToQueue, job);\n }\n }\n\n submit(...args) {\n var cb, fn, job, options, ref, ref1, task;\n\n if (typeof args[0] === \"function\") {\n var _ref3, _ref4, _splice$call, _splice$call2;\n\n ref = args, (_ref3 = ref, _ref4 = _toArray(_ref3), fn = _ref4[0], args = _ref4.slice(1), _ref3), (_splice$call = splice.call(args, -1), _splice$call2 = _slicedToArray(_splice$call, 1), cb = _splice$call2[0], _splice$call);\n options = parser.load({}, this.jobDefaults);\n } else {\n var _ref5, _ref6, _splice$call3, _splice$call4;\n\n ref1 = args, (_ref5 = ref1, _ref6 = _toArray(_ref5), options = _ref6[0], fn = _ref6[1], args = _ref6.slice(2), _ref5), (_splice$call3 = splice.call(args, -1), _splice$call4 = _slicedToArray(_splice$call3, 1), cb = _splice$call4[0], _splice$call3);\n options = parser.load(options, this.jobDefaults);\n }\n\n task = (...args) => {\n return new this.Promise(function (resolve, reject) {\n return fn(...args, function (...args) {\n return (args[0] != null ? reject : resolve)(args);\n });\n });\n };\n\n job = new Job(task, args, options, this.jobDefaults, this.rejectOnDrop, this.Events, this._states, this.Promise);\n job.promise.then(function (args) {\n return typeof cb === \"function\" ? cb(...args) : void 0;\n }).catch(function (args) {\n if (Array.isArray(args)) {\n return typeof cb === \"function\" ? cb(...args) : void 0;\n } else {\n return typeof cb === \"function\" ? cb(args) : void 0;\n }\n });\n return this._receive(job);\n }\n\n schedule(...args) {\n var job, options, task;\n\n if (typeof args[0] === \"function\") {\n var _args = args;\n\n var _args2 = _toArray(_args);\n\n task = _args2[0];\n args = _args2.slice(1);\n options = {};\n } else {\n var _args3 = args;\n\n var _args4 = _toArray(_args3);\n\n options = _args4[0];\n task = _args4[1];\n args = _args4.slice(2);\n }\n\n job = new Job(task, args, options, this.jobDefaults, this.rejectOnDrop, this.Events, this._states, this.Promise);\n\n this._receive(job);\n\n return job.promise;\n }\n\n wrap(fn) {\n var schedule, wrapped;\n schedule = this.schedule.bind(this);\n\n wrapped = function wrapped(...args) {\n return schedule(fn.bind(this), ...args);\n };\n\n wrapped.withOptions = function (options, ...args) {\n return schedule(options, fn, ...args);\n };\n\n return wrapped;\n }\n\n updateSettings(options = {}) {\n var _this3 = this;\n\n return _asyncToGenerator(function* () {\n yield _this3._store.__updateSettings__(parser.overwrite(options, _this3.storeDefaults));\n parser.overwrite(options, _this3.instanceDefaults, _this3);\n return _this3;\n })();\n }\n\n currentReservoir() {\n return this._store.__currentReservoir__();\n }\n\n incrementReservoir(incr = 0) {\n return this._store.__incrementReservoir__(incr);\n }\n\n }\n\n ;\n Bottleneck.default = Bottleneck;\n Bottleneck.Events = Events;\n Bottleneck.version = Bottleneck.prototype.version = require(\"./version.json\").version;\n Bottleneck.strategy = Bottleneck.prototype.strategy = {\n LEAK: 1,\n OVERFLOW: 2,\n OVERFLOW_PRIORITY: 4,\n BLOCK: 3\n };\n Bottleneck.BottleneckError = Bottleneck.prototype.BottleneckError = require(\"./BottleneckError\");\n Bottleneck.Group = Bottleneck.prototype.Group = require(\"./Group\");\n Bottleneck.RedisConnection = Bottleneck.prototype.RedisConnection = require(\"./RedisConnection\");\n Bottleneck.IORedisConnection = Bottleneck.prototype.IORedisConnection = require(\"./IORedisConnection\");\n Bottleneck.Batcher = Bottleneck.prototype.Batcher = require(\"./Batcher\");\n Bottleneck.prototype.jobDefaults = {\n priority: DEFAULT_PRIORITY,\n weight: 1,\n expiration: null,\n id: \"<no-id>\"\n };\n Bottleneck.prototype.storeDefaults = {\n maxConcurrent: null,\n minTime: 0,\n highWater: null,\n strategy: Bottleneck.prototype.strategy.LEAK,\n penalty: null,\n reservoir: null,\n reservoirRefreshInterval: null,\n reservoirRefreshAmount: null,\n reservoirIncreaseInterval: null,\n reservoirIncreaseAmount: null,\n reservoirIncreaseMaximum: null\n };\n Bottleneck.prototype.localStoreDefaults = {\n Promise: Promise,\n timeout: null,\n heartbeatInterval: 250\n };\n Bottleneck.prototype.redisStoreDefaults = {\n Promise: Promise,\n timeout: null,\n heartbeatInterval: 5000,\n clientTimeout: 10000,\n Redis: null,\n clientOptions: {},\n clusterNodes: null,\n clearDatastore: false,\n connection: null\n };\n Bottleneck.prototype.instanceDefaults = {\n datastore: \"local\",\n connection: null,\n id: \"<no-id>\",\n rejectOnDrop: true,\n trackDoneStatus: false,\n Promise: Promise\n };\n Bottleneck.prototype.stopDefaults = {\n enqueueErrorMessage: \"This limiter has been stopped and cannot accept new jobs.\",\n dropWaitingJobs: true,\n dropErrorMessage: \"This limiter has been stopped.\"\n };\n return Bottleneck;\n}.call(void 0);\n\nmodule.exports = Bottleneck;","\"use strict\";\n\nmodule.exports = require(\"./Bottleneck\");","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Bottleneck = void 0;\nvar bottleneck_1 = require(\"bottleneck\");\nObject.defineProperty(exports, \"Bottleneck\", { enumerable: true, get: function () { return __importDefault(bottleneck_1).default; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.bypassThrottler = exports.apiThrottler = exports.BottleneckStrategy = void 0;\nconst deps_node_js_1 = require(\"./deps.node.js\");\nconst skipSet = new Set();\nconst bypassThrottler = async (ctx, next) => {\n let willSkip = true;\n ctx.api.config.use(async (prev, method, payload, signal) => {\n if (!willSkip) {\n return prev(method, payload, signal);\n }\n // Note: Depends on referential equality which is not guaranteed\n willSkip = false;\n skipSet.add(payload);\n try {\n const result = await prev(method, payload, signal);\n return result;\n }\n finally {\n skipSet.delete(payload);\n }\n });\n await next();\n};\nexports.bypassThrottler = bypassThrottler;\nconst apiThrottler = (opts = {}) => {\n var _a, _b, _c;\n const globalConfig = (_a = opts.global) !== null && _a !== void 0 ? _a : {\n reservoir: 30,\n reservoirRefreshAmount: 30,\n reservoirRefreshInterval: 1000,\n };\n const groupConfig = (_b = opts.group) !== null && _b !== void 0 ? _b : {\n maxConcurrent: 1,\n minTime: 1000,\n reservoir: 20,\n reservoirRefreshAmount: 20,\n reservoirRefreshInterval: 60000,\n };\n const outConfig = (_c = opts.out) !== null && _c !== void 0 ? _c : {\n maxConcurrent: 1,\n minTime: 1000,\n };\n const globalThrottler = new deps_node_js_1.Bottleneck(globalConfig);\n const groupThrottler = new deps_node_js_1.Bottleneck.Group(groupConfig);\n const outThrottler = new deps_node_js_1.Bottleneck.Group(outConfig);\n groupThrottler.on('created', (throttler) => throttler.chain(globalThrottler));\n outThrottler.on('created', (throttler) => throttler.chain(globalThrottler));\n const transformer = async (prev, method, payload, signal) => {\n if (!payload || !('chat_id' in payload) || skipSet.has(payload)) {\n return prev(method, payload, signal);\n }\n // @ts-ignore\n const chatId = Number(payload.chat_id);\n const isGroup = chatId < 0;\n const throttler = isGroup\n ? groupThrottler.key(`${chatId}`)\n : outThrottler.key(`${chatId}`);\n return throttler.schedule(() => prev(method, payload, signal));\n };\n return transformer;\n};\nexports.apiThrottler = apiThrottler;\nconst BottleneckStrategy = deps_node_js_1.Bottleneck.strategy;\nexports.BottleneckStrategy = BottleneckStrategy;\n","import { z } from 'zod/v4';\nimport type { IncomingMessage } from './message.js';\n\nexport const ParsedCommandSchema = z.object({\n name: z.string().min(1),\n args: z.array(z.string()),\n rawText: z.string(),\n});\nexport type ParsedCommand = z.infer<typeof ParsedCommandSchema>;\n\nexport type CommandContext = {\n readonly userId: string;\n readonly command: string;\n readonly args: readonly string[];\n readonly channelId: string;\n readonly message: IncomingMessage;\n readonly machine?: string;\n};\n\nexport type CommandInfo = {\n readonly name: string;\n readonly description: string;\n readonly usage: string;\n readonly requiredPermission: string;\n};\n\n/**\n * Parse a bot command from message text.\n * Supports: /exec ls -la, !exec ls -la\n * Requires a / or ! prefix to distinguish commands from plain chat messages.\n */\nexport function parseCommand(text: string): ParsedCommand | null {\n const trimmed = text.trim();\n // Require leading / or !\n const match = /^[/!](\\w+)(?:\\s+(.*))?$/s.exec(trimmed);\n if (!match) return null;\n\n const name = (match[1] ?? '').toLowerCase();\n const rest = (match[2] ?? '').trim();\n const args = rest ? rest.split(/\\s+/) : [];\n\n return ParsedCommandSchema.parse({ name, args, rawText: trimmed });\n}\n","import type { ChannelProtocol, HandlerResult, LoggerProtocol } from './types.js';\nimport type { OutgoingMessage, IncomingMessage } from '../models/message.js';\nimport type { PermissionLevel } from '../models/user.js';\nimport type { PermissionManager } from './permission-manager.js';\nimport type { MessageDispatcher } from './dispatcher.js';\nimport { parseCommand } from '../models/command.js';\nimport { BotError, CommandNotFoundError } from '../errors.js';\n\nexport abstract class BaseChannel implements ChannelProtocol {\n protected constructor(\n public readonly id: string,\n public readonly name: string,\n protected readonly permissions: PermissionManager,\n protected readonly dispatcher: MessageDispatcher,\n protected readonly logger: LoggerProtocol,\n ) {}\n\n abstract start(): Promise<void>;\n abstract stop(): Promise<void>;\n abstract send(userId: string, message: OutgoingMessage): Promise<void>;\n abstract onMessage(handler: (msg: IncomingMessage) => Promise<void>): void;\n\n /**\n * Process an incoming message: parse command → check permission → dispatch → send result.\n * Channels call this from their platform event handler.\n */\n protected async processMessage(msg: IncomingMessage): Promise<void> {\n const parsed = parseCommand(msg.text);\n if (!parsed) return; // not a command\n\n const ctx = {\n userId: msg.userId,\n command: parsed.name,\n args: parsed.args,\n channelId: msg.channelId,\n message: msg,\n } as const;\n\n let result: HandlerResult;\n try {\n result = await this.dispatcher.dispatch(ctx);\n } catch (err) {\n const botErr = err instanceof BotError ? err : new BotError('Unexpected error', { cause: err instanceof Error ? err : undefined });\n result = { ok: false, error: botErr };\n }\n\n if (result.ok) {\n await this.send(msg.userId, result.value);\n } else {\n await this.send(msg.userId, {\n type: 'error',\n message: this.formatErrorMessage(result.error),\n });\n }\n }\n\n private formatErrorMessage(error: BotError): string {\n if (error instanceof CommandNotFoundError) {\n return `Unknown command. Type /help for available commands.`;\n }\n return error.message;\n }\n\n protected logEvent(event: string, meta: Record<string, unknown> = {}): void {\n this.logger.info(`[${this.name}] ${event}`, { channel: this.id, ...meta });\n }\n}\n","import type { FormatterProtocol } from '../../core/types.js';\nimport type { BotError } from '../../errors.js';\nimport { PermissionDeniedError, CommandNotFoundError, CommandArgsError, MachineOfflineError, RateLimitError } from '../../errors.js';\n\n/**\n * Telegram MarkdownV2 formatter.\n *\n * Telegram MarkdownV2 requires escaping: _ * [ ] ( ) ~ ` > # + - = | { } . !\n * Bold: **text**, Code: `text`, Code block: ```lang\\ntext\\n```\n */\n\n// All special chars that must be escaped in MarkdownV2 plain text\nconst MD_ESCAPE_RE = /[_*[\\]()~`>#+\\-=|{}.!\\\\]/g;\n\nexport const TELEGRAM_MAX_MESSAGE_LENGTH = 4096;\nexport const TELEGRAM_MAX_CAPTION_LENGTH = 1024;\n\nexport class TelegramFormatter implements FormatterProtocol {\n /**\n * Escape plain text for safe inclusion in MarkdownV2 messages.\n */\n formatText(text: string): string {\n return text.replace(MD_ESCAPE_RE, '\\\\$&');\n }\n\n /**\n * Wrap code in a triple-backtick code block.\n * Truncates if over Telegram's limit.\n */\n formatCode(code: string, language?: string): string {\n const lang = language ?? '';\n // Backticks inside the code block must be escaped if they appear at end of block\n // Simplest safe approach: ensure no ``` appears verbatim inside\n const safeCode = code.replace(/```/g, \"''`\");\n const wrapped = `\\`\\`\\`${lang}\\n${safeCode}\\n\\`\\`\\``;\n\n if (wrapped.length <= TELEGRAM_MAX_MESSAGE_LENGTH) return wrapped;\n\n // Truncate the code content to fit\n const overhead = 8 + lang.length; // ```lang\\n ... \\n```\n const maxCode = TELEGRAM_MAX_MESSAGE_LENGTH - overhead - 20; // room for truncation msg\n return `\\`\\`\\`${lang}\\n${safeCode.slice(0, maxCode)}\\n…(truncated)\\n\\`\\`\\``;\n }\n\n /**\n * Format a BotError into a user-friendly Telegram message.\n */\n formatError(error: BotError): string {\n if (error instanceof PermissionDeniedError) {\n return `❌ *Access denied*\\nRequired permission: \\`${this.escapeInline(error.context['required'] as string)}\\``;\n }\n if (error instanceof CommandNotFoundError) {\n const cmd = this.escapeInline(error.context['command'] as string);\n return `❓ Unknown command: \\`/${cmd}\\`\\nType /help for available commands\\\\.`;\n }\n if (error instanceof CommandArgsError) {\n return `⚠️ ${this.formatText(error.message)}`;\n }\n if (error instanceof MachineOfflineError) {\n return `🔌 *Machine offline*\\n${this.formatText(error.message)}`;\n }\n if (error instanceof RateLimitError) {\n return `⏳ Rate limit reached\\\\. Please wait and try again\\\\.`;\n }\n // Generic fallback — do not expose internal details\n return `❌ Something went wrong\\\\. Please try again\\\\.`;\n }\n\n /**\n * Format a file listing entry line.\n */\n formatFileEntry(name: string, isDir: boolean, size?: number): string {\n const icon = isDir ? '📁' : '📄';\n const sizeStr = size !== undefined && !isDir ? ` \\\\(${this.formatText(formatBytes(size))}\\\\)` : '';\n return `${icon} \\`${this.escapeInline(name)}\\`${sizeStr}`;\n }\n\n // Escape text that appears inside inline code (backtick context)\n private escapeInline(text: string): string {\n return text.replace(/`/g, \"'\");\n }\n}\n\nfunction formatBytes(bytes: number): string {\n if (bytes < 1024) return `${bytes}B`;\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)}K`;\n return `${(bytes / (1024 * 1024)).toFixed(1)}M`;\n}\n","import { Bot, type Context } from 'grammy';\nimport { apiThrottler } from '@grammyjs/transformer-throttler';\nimport { BaseChannel } from '../../core/base-channel.js';\nimport { TelegramFormatter } from './formatter.js';\nimport type { OutgoingMessage, IncomingMessage } from '../../models/message.js';\nimport type { PermissionManager } from '../../core/permission-manager.js';\nimport type { MessageDispatcher } from '../../core/dispatcher.js';\nimport type { LoggerProtocol } from '../../core/types.js';\nimport { TelegramError } from '../../errors.js';\n\nexport interface TelegramChannelOptions {\n token: string;\n /** User IDs (numeric as string) that get ADMIN permission automatically */\n adminUsers?: string[];\n /** Max length before truncating outgoing messages. Default: 4000 */\n maxMessageLength?: number;\n}\n\nexport class TelegramChannel extends BaseChannel {\n private bot: Bot | null = null;\n private readonly token: string;\n private readonly formatter: TelegramFormatter;\n private readonly maxLength: number;\n private messageHandlers: Array<(msg: IncomingMessage) => Promise<void>> = [];\n\n constructor(\n options: TelegramChannelOptions,\n permissions: PermissionManager,\n dispatcher: MessageDispatcher,\n logger: LoggerProtocol,\n ) {\n super('telegram', 'Telegram', permissions, dispatcher, logger);\n this.token = options.token;\n this.formatter = new TelegramFormatter();\n this.maxLength = options.maxMessageLength ?? 4000;\n }\n\n async start(): Promise<void> {\n const bot = new Bot(this.token);\n\n // Apply throttler — queues API calls to respect Telegram flood limits\n bot.api.config.use(apiThrottler());\n\n // Text message handler\n bot.on('message:text', async (ctx) => {\n const msg = this.normalizeContext(ctx);\n if (!msg) return;\n\n for (const h of this.messageHandlers) await h(msg);\n await this.processMessage(msg);\n });\n\n // Callback query handler (inline keyboard buttons)\n bot.on('callback_query:data', async (ctx) => {\n await ctx.answerCallbackQuery();\n const text = ctx.callbackQuery.data;\n const userId = String(ctx.from.id);\n const channelId = String(ctx.chat?.id ?? ctx.from.id);\n const msg: IncomingMessage = {\n id: `cbq-${ctx.callbackQuery.id}`,\n userId,\n channelId,\n text,\n timestamp: new Date(),\n attachments: [],\n };\n await this.processMessage(msg);\n });\n\n // Global error handler — prevents crashes on handler errors\n bot.catch((err) => {\n this.logger.error('Telegram error', {\n channel: this.id,\n err: err.error instanceof Error ? err.error.message : String(err.error),\n });\n });\n\n this.bot = bot;\n\n // Start long-polling in background (non-blocking)\n bot.start({\n onStart: () => this.logEvent('started (long-polling)'),\n }).catch((err: unknown) => {\n this.logger.error('Telegram bot start error', { err: String(err) });\n });\n }\n\n async stop(): Promise<void> {\n if (this.bot) {\n await this.bot.stop();\n this.bot = null;\n }\n this.messageHandlers = [];\n this.logEvent('stopped');\n }\n\n async send(userId: string, message: OutgoingMessage): Promise<void> {\n if (!this.bot) throw new TelegramError('Bot not started');\n\n const chatId = Number(userId);\n if (Number.isNaN(chatId)) {\n this.logger.warn('Invalid Telegram userId for send', { userId });\n return;\n }\n\n try {\n switch (message.type) {\n case 'text': {\n const text = this.truncate(this.formatter.formatText(message.text));\n await this.bot.api.sendMessage(chatId, text, { parse_mode: 'MarkdownV2' });\n break;\n }\n case 'code': {\n const code = this.formatter.formatCode(message.code, message.language);\n await this.bot.api.sendMessage(chatId, code, { parse_mode: 'MarkdownV2' });\n break;\n }\n case 'error': {\n const errText = this.formatter.formatError(\n Object.assign(new Error(message.message), { code: 'BOT_ERROR', context: {}, toLog: () => ({}) }),\n );\n await this.bot.api.sendMessage(chatId, errText, { parse_mode: 'MarkdownV2' });\n break;\n }\n }\n } catch (err) {\n throw new TelegramError(\n `Failed to send message to ${userId}`,\n err instanceof Error ? err : undefined,\n );\n }\n }\n\n onMessage(handler: (msg: IncomingMessage) => Promise<void>): void {\n this.messageHandlers.push(handler);\n }\n\n private normalizeContext(ctx: Context): IncomingMessage | null {\n if (!ctx.message?.text || !ctx.from || !ctx.chat) return null;\n return {\n id: String(ctx.message.message_id),\n userId: String(ctx.from.id),\n channelId: String(ctx.chat.id),\n text: ctx.message.text,\n timestamp: new Date(ctx.message.date * 1000),\n attachments: [],\n };\n }\n\n private truncate(text: string): string {\n if (text.length <= this.maxLength) return text;\n return text.slice(0, this.maxLength - 20) + '\\n\\\\.\\\\.\\\\. *\\\\(truncated\\\\)*';\n }\n}\n","import type { FormatterProtocol } from '../../core/types.js';\nimport type { BotError } from '../../errors.js';\nimport {\n PermissionDeniedError,\n CommandNotFoundError,\n CommandArgsError,\n MachineOfflineError,\n RateLimitError,\n} from '../../errors.js';\n\n/**\n * Discord message formatter.\n *\n * Discord supports standard Markdown (not MarkdownV2), so no special escaping\n * is required for plain text. Code blocks use triple backtick with language tag.\n * Structured output uses Discord embeds (EmbedBuilder).\n */\n\nexport const DISCORD_MAX_MESSAGE_LENGTH = 2000;\nexport const DISCORD_MAX_EMBED_DESCRIPTION = 4096;\n\nexport class DiscordFormatter implements FormatterProtocol {\n /**\n * Escape Discord Markdown in user-supplied text.\n * Escapes: _ * ~ ` | > \\\n */\n formatText(text: string): string {\n return text.replace(/[_*~`|>\\\\]/g, '\\\\$&');\n }\n\n /**\n * Wrap code in a triple-backtick code block.\n * Truncates if over Discord's limit.\n */\n formatCode(code: string, language?: string): string {\n const lang = language ?? '';\n // Prevent breaking out of code block\n const safeCode = code.replace(/```/g, \"''`\");\n const wrapped = `\\`\\`\\`${lang}\\n${safeCode}\\n\\`\\`\\``;\n\n if (wrapped.length <= DISCORD_MAX_MESSAGE_LENGTH) return wrapped;\n\n const overhead = 8 + lang.length;\n const maxCode = DISCORD_MAX_MESSAGE_LENGTH - overhead - 20;\n return `\\`\\`\\`${lang}\\n${safeCode.slice(0, maxCode)}\\n…(truncated)\\n\\`\\`\\``;\n }\n\n /**\n * Format a BotError into a user-friendly Discord message.\n */\n formatError(error: BotError): string {\n if (error instanceof PermissionDeniedError) {\n const required = error.context['required'] as string;\n return `❌ **Access denied** — required permission: \\`${required}\\``;\n }\n if (error instanceof CommandNotFoundError) {\n const cmd = error.context['command'] as string;\n return `❓ Unknown command \\`/${cmd}\\`. Use \\`/help\\` to see available commands.`;\n }\n if (error instanceof CommandArgsError) {\n return `⚠️ ${error.message}`;\n }\n if (error instanceof MachineOfflineError) {\n return `🔌 **Machine offline** — ${error.message}`;\n }\n if (error instanceof RateLimitError) {\n return `⏳ Rate limit reached. Please wait and try again.`;\n }\n // Generic fallback — do not expose internal details\n return `❌ Something went wrong. Please try again.`;\n }\n\n /**\n * Format a file listing entry line.\n */\n formatFileEntry(name: string, isDir: boolean, size?: number): string {\n const icon = isDir ? '📁' : '📄';\n const sizeStr = size !== undefined && !isDir ? ` (${formatBytes(size)})` : '';\n return `${icon} \\`${name}\\`${sizeStr}`;\n }\n}\n\nfunction formatBytes(bytes: number): string {\n if (bytes < 1024) return `${bytes}B`;\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)}K`;\n return `${(bytes / (1024 * 1024)).toFixed(1)}M`;\n}\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n var envHasBigInt64Array = typeof BigInt64Array !== 'undefined';\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n if ((a instanceof Map) && (b instanceof Map)) {\n if (a.size !== b.size) return false;\n for (i of a.entries())\n if (!b.has(i[0])) return false;\n for (i of a.entries())\n if (!equal(i[1], b.get(i[0]))) return false;\n return true;\n }\n\n if ((a instanceof Set) && (b instanceof Set)) {\n if (a.size !== b.size) return false;\n for (i of a.entries())\n if (!b.has(i[0])) return false;\n return true;\n }\n\n if (ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (a[i] !== b[i]) return false;\n return true;\n }\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = baseFindIndex;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = strictIndexOf;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIsNaN = require('./_baseIsNaN'),\n strictIndexOf = require('./_strictIndexOf');\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arrayIncludesWith;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nmodule.exports = noop;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","var Set = require('./_Set'),\n noop = require('./noop'),\n setToArray = require('./_setToArray');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n};\n\nmodule.exports = createSet;\n","var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n cacheHas = require('./_cacheHas'),\n createSet = require('./_createSet'),\n setToArray = require('./_setToArray');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseUniq;\n","var baseUniq = require('./_baseUniq');\n\n/**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\nfunction uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n}\n\nmodule.exports = uniqWith;\n","var e,t,n,r=\"undefined\"!=typeof globalThis?globalThis:\"undefined\"!=typeof self?self:global,o=e={};function i(){throw new Error(\"setTimeout has not been defined\")}function u(){throw new Error(\"clearTimeout has not been defined\")}function c(e){if(t===setTimeout)return setTimeout(e,0);if((t===i||!t)&&setTimeout)return t=setTimeout,setTimeout(e,0);try{return t(e,0)}catch(n){try{return t.call(null,e,0)}catch(n){return t.call(this||r,e,0)}}}!function(){try{t=\"function\"==typeof setTimeout?setTimeout:i;}catch(e){t=i;}try{n=\"function\"==typeof clearTimeout?clearTimeout:u;}catch(e){n=u;}}();var l,s=[],f=!1,a=-1;function h(){f&&l&&(f=!1,l.length?s=l.concat(s):a=-1,s.length&&d());}function d(){if(!f){var e=c(h);f=!0;for(var t=s.length;t;){for(l=s,s=[];++a<t;)l&&l[a].run();a=-1,t=s.length;}l=null,f=!1,function(e){if(n===clearTimeout)return clearTimeout(e);if((n===u||!n)&&clearTimeout)return n=clearTimeout,clearTimeout(e);try{n(e);}catch(t){try{return n.call(null,e)}catch(t){return n.call(this||r,e)}}}(e);}}function m(e,t){(this||r).fun=e,(this||r).array=t;}function p(){}o.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];s.push(new m(e,t)),1!==s.length||f||c(d);},m.prototype.run=function(){(this||r).fun.apply(null,(this||r).array);},o.title=\"browser\",o.browser=!0,o.env={},o.argv=[],o.version=\"\",o.versions={},o.on=p,o.addListener=p,o.once=p,o.off=p,o.removeListener=p,o.removeAllListeners=p,o.emit=p,o.prependListener=p,o.prependOnceListener=p,o.listeners=function(e){return []},o.binding=function(e){throw new Error(\"process.binding is not supported\")},o.cwd=function(){return \"/\"},o.chdir=function(e){throw new Error(\"process.chdir is not supported\")},o.umask=function(){return 0};var T=e;T.addListener;T.argv;T.binding;T.browser;T.chdir;T.cwd;T.emit;T.env;T.listeners;T.nextTick;T.off;T.on;T.once;T.prependListener;T.prependOnceListener;T.removeAllListeners;T.removeListener;T.title;T.umask;T.version;T.versions;\n\nexport { T };\n","import { T as T$1 } from './chunk-5decc758.js';\n\nvar t=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.toStringTag,e=Object.prototype.toString,o=function(o){return !(t&&o&&\"object\"==typeof o&&Symbol.toStringTag in o)&&\"[object Arguments]\"===e.call(o)},n=function(t){return !!o(t)||null!==t&&\"object\"==typeof t&&\"number\"==typeof t.length&&t.length>=0&&\"[object Array]\"!==e.call(t)&&\"[object Function]\"===e.call(t.callee)},r=function(){return o(arguments)}();o.isLegacyArguments=n;var l=r?o:n;var t$1=Object.prototype.toString,o$1=Function.prototype.toString,n$1=/^\\s*(?:function)?\\*/,e$1=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.toStringTag,r$1=Object.getPrototypeOf,c=function(){if(!e$1)return !1;try{return Function(\"return function*() {}\")()}catch(t){}}(),u=c?r$1(c):{},i=function(c){return \"function\"==typeof c&&(!!n$1.test(o$1.call(c))||(e$1?r$1(c)===u:\"[object GeneratorFunction]\"===t$1.call(c)))};var t$2=\"function\"==typeof Object.create?function(t,e){e&&(t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}));}:function(t,e){if(e){t.super_=e;var o=function(){};o.prototype=e.prototype,t.prototype=new o,t.prototype.constructor=t;}};var i$1=function(e){return e&&\"object\"==typeof e&&\"function\"==typeof e.copy&&\"function\"==typeof e.fill&&\"function\"==typeof e.readUInt8},o$2={},u$1=i$1,f=l,a=i;function c$1(e){return e.call.bind(e)}var s=\"undefined\"!=typeof BigInt,p=\"undefined\"!=typeof Symbol,y=p&&void 0!==Symbol.toStringTag,l$1=\"undefined\"!=typeof Uint8Array,d=\"undefined\"!=typeof ArrayBuffer;if(l$1&&y)var g=Object.getPrototypeOf(Uint8Array.prototype),b=c$1(Object.getOwnPropertyDescriptor(g,Symbol.toStringTag).get);var m=c$1(Object.prototype.toString),h=c$1(Number.prototype.valueOf),j=c$1(String.prototype.valueOf),A=c$1(Boolean.prototype.valueOf);if(s)var w=c$1(BigInt.prototype.valueOf);if(p)var v=c$1(Symbol.prototype.valueOf);function O(e,t){if(\"object\"!=typeof e)return !1;try{return t(e),!0}catch(e){return !1}}function S(e){return l$1&&y?void 0!==b(e):B(e)||k(e)||E(e)||D(e)||U(e)||P(e)||x(e)||I(e)||M(e)||z(e)||F(e)}function B(e){return l$1&&y?\"Uint8Array\"===b(e):\"[object Uint8Array]\"===m(e)||u$1(e)&&void 0!==e.buffer}function k(e){return l$1&&y?\"Uint8ClampedArray\"===b(e):\"[object Uint8ClampedArray]\"===m(e)}function E(e){return l$1&&y?\"Uint16Array\"===b(e):\"[object Uint16Array]\"===m(e)}function D(e){return l$1&&y?\"Uint32Array\"===b(e):\"[object Uint32Array]\"===m(e)}function U(e){return l$1&&y?\"Int8Array\"===b(e):\"[object Int8Array]\"===m(e)}function P(e){return l$1&&y?\"Int16Array\"===b(e):\"[object Int16Array]\"===m(e)}function x(e){return l$1&&y?\"Int32Array\"===b(e):\"[object Int32Array]\"===m(e)}function I(e){return l$1&&y?\"Float32Array\"===b(e):\"[object Float32Array]\"===m(e)}function M(e){return l$1&&y?\"Float64Array\"===b(e):\"[object Float64Array]\"===m(e)}function z(e){return l$1&&y?\"BigInt64Array\"===b(e):\"[object BigInt64Array]\"===m(e)}function F(e){return l$1&&y?\"BigUint64Array\"===b(e):\"[object BigUint64Array]\"===m(e)}function T(e){return \"[object Map]\"===m(e)}function N(e){return \"[object Set]\"===m(e)}function W(e){return \"[object WeakMap]\"===m(e)}function $(e){return \"[object WeakSet]\"===m(e)}function C(e){return \"[object ArrayBuffer]\"===m(e)}function V(e){return \"undefined\"!=typeof ArrayBuffer&&(C.working?C(e):e instanceof ArrayBuffer)}function G(e){return \"[object DataView]\"===m(e)}function R(e){return \"undefined\"!=typeof DataView&&(G.working?G(e):e instanceof DataView)}function J(e){return \"[object SharedArrayBuffer]\"===m(e)}function _(e){return \"undefined\"!=typeof SharedArrayBuffer&&(J.working?J(e):e instanceof SharedArrayBuffer)}function H(e){return O(e,h)}function Z(e){return O(e,j)}function q(e){return O(e,A)}function K(e){return s&&O(e,w)}function L(e){return p&&O(e,v)}o$2.isArgumentsObject=f,o$2.isGeneratorFunction=a,o$2.isPromise=function(e){return \"undefined\"!=typeof Promise&&e instanceof Promise||null!==e&&\"object\"==typeof e&&\"function\"==typeof e.then&&\"function\"==typeof e.catch},o$2.isArrayBufferView=function(e){return d&&ArrayBuffer.isView?ArrayBuffer.isView(e):S(e)||R(e)},o$2.isTypedArray=S,o$2.isUint8Array=B,o$2.isUint8ClampedArray=k,o$2.isUint16Array=E,o$2.isUint32Array=D,o$2.isInt8Array=U,o$2.isInt16Array=P,o$2.isInt32Array=x,o$2.isFloat32Array=I,o$2.isFloat64Array=M,o$2.isBigInt64Array=z,o$2.isBigUint64Array=F,T.working=\"undefined\"!=typeof Map&&T(new Map),o$2.isMap=function(e){return \"undefined\"!=typeof Map&&(T.working?T(e):e instanceof Map)},N.working=\"undefined\"!=typeof Set&&N(new Set),o$2.isSet=function(e){return \"undefined\"!=typeof Set&&(N.working?N(e):e instanceof Set)},W.working=\"undefined\"!=typeof WeakMap&&W(new WeakMap),o$2.isWeakMap=function(e){return \"undefined\"!=typeof WeakMap&&(W.working?W(e):e instanceof WeakMap)},$.working=\"undefined\"!=typeof WeakSet&&$(new WeakSet),o$2.isWeakSet=function(e){return $(e)},C.working=\"undefined\"!=typeof ArrayBuffer&&C(new ArrayBuffer),o$2.isArrayBuffer=V,G.working=\"undefined\"!=typeof ArrayBuffer&&\"undefined\"!=typeof DataView&&G(new DataView(new ArrayBuffer(1),0,1)),o$2.isDataView=R,J.working=\"undefined\"!=typeof SharedArrayBuffer&&J(new SharedArrayBuffer),o$2.isSharedArrayBuffer=_,o$2.isAsyncFunction=function(e){return \"[object AsyncFunction]\"===m(e)},o$2.isMapIterator=function(e){return \"[object Map Iterator]\"===m(e)},o$2.isSetIterator=function(e){return \"[object Set Iterator]\"===m(e)},o$2.isGeneratorObject=function(e){return \"[object Generator]\"===m(e)},o$2.isWebAssemblyCompiledModule=function(e){return \"[object WebAssembly.Module]\"===m(e)},o$2.isNumberObject=H,o$2.isStringObject=Z,o$2.isBooleanObject=q,o$2.isBigIntObject=K,o$2.isSymbolObject=L,o$2.isBoxedPrimitive=function(e){return H(e)||Z(e)||q(e)||K(e)||L(e)},o$2.isAnyArrayBuffer=function(e){return l$1&&(V(e)||_(e))},[\"isProxy\",\"isExternal\",\"isModuleNamespaceObject\"].forEach((function(e){Object.defineProperty(o$2,e,{enumerable:!1,value:function(){throw new Error(e+\" is not supported in userland\")}});}));var Q=\"undefined\"!=typeof globalThis?globalThis:\"undefined\"!=typeof self?self:global,X={},Y=T$1,ee=Object.getOwnPropertyDescriptors||function(e){for(var t=Object.keys(e),r={},n=0;n<t.length;n++)r[t[n]]=Object.getOwnPropertyDescriptor(e,t[n]);return r},te=/%[sdj%]/g;X.format=function(e){if(!ge(e)){for(var t=[],r=0;r<arguments.length;r++)t.push(oe(arguments[r]));return t.join(\" \")}r=1;for(var n=arguments,i=n.length,o=String(e).replace(te,(function(e){if(\"%%\"===e)return \"%\";if(r>=i)return e;switch(e){case\"%s\":return String(n[r++]);case\"%d\":return Number(n[r++]);case\"%j\":try{return JSON.stringify(n[r++])}catch(e){return \"[Circular]\"}default:return e}})),u=n[r];r<i;u=n[++r])le(u)||!he(u)?o+=\" \"+u:o+=\" \"+oe(u);return o},X.deprecate=function(e,t){if(void 0!==Y&&!0===Y.noDeprecation)return e;if(void 0===Y)return function(){return X.deprecate(e,t).apply(this||Q,arguments)};var r=!1;return function(){if(!r){if(Y.throwDeprecation)throw new Error(t);Y.traceDeprecation?console.trace(t):console.error(t),r=!0;}return e.apply(this||Q,arguments)}};var re={},ne=/^$/;if(Y.env.NODE_DEBUG){var ie=Y.env.NODE_DEBUG;ie=ie.replace(/[|\\\\{}()[\\]^$+?.]/g,\"\\\\$&\").replace(/\\*/g,\".*\").replace(/,/g,\"$|^\").toUpperCase(),ne=new RegExp(\"^\"+ie+\"$\",\"i\");}function oe(e,t){var r={seen:[],stylize:fe};return arguments.length>=3&&(r.depth=arguments[2]),arguments.length>=4&&(r.colors=arguments[3]),ye(t)?r.showHidden=t:t&&X._extend(r,t),be(r.showHidden)&&(r.showHidden=!1),be(r.depth)&&(r.depth=2),be(r.colors)&&(r.colors=!1),be(r.customInspect)&&(r.customInspect=!0),r.colors&&(r.stylize=ue),ae(r,e,r.depth)}function ue(e,t){var r=oe.styles[t];return r?\"\u001b[\"+oe.colors[r][0]+\"m\"+e+\"\u001b[\"+oe.colors[r][1]+\"m\":e}function fe(e,t){return e}function ae(e,t,r){if(e.customInspect&&t&&we(t.inspect)&&t.inspect!==X.inspect&&(!t.constructor||t.constructor.prototype!==t)){var n=t.inspect(r,e);return ge(n)||(n=ae(e,n,r)),n}var i=function(e,t){if(be(t))return e.stylize(\"undefined\",\"undefined\");if(ge(t)){var r=\"'\"+JSON.stringify(t).replace(/^\"|\"$/g,\"\").replace(/'/g,\"\\\\'\").replace(/\\\\\"/g,'\"')+\"'\";return e.stylize(r,\"string\")}if(de(t))return e.stylize(\"\"+t,\"number\");if(ye(t))return e.stylize(\"\"+t,\"boolean\");if(le(t))return e.stylize(\"null\",\"null\")}(e,t);if(i)return i;var o=Object.keys(t),u=function(e){var t={};return e.forEach((function(e,r){t[e]=!0;})),t}(o);if(e.showHidden&&(o=Object.getOwnPropertyNames(t)),Ae(t)&&(o.indexOf(\"message\")>=0||o.indexOf(\"description\")>=0))return ce(t);if(0===o.length){if(we(t)){var f=t.name?\": \"+t.name:\"\";return e.stylize(\"[Function\"+f+\"]\",\"special\")}if(me(t))return e.stylize(RegExp.prototype.toString.call(t),\"regexp\");if(je(t))return e.stylize(Date.prototype.toString.call(t),\"date\");if(Ae(t))return ce(t)}var a,c=\"\",s=!1,p=[\"{\",\"}\"];(pe(t)&&(s=!0,p=[\"[\",\"]\"]),we(t))&&(c=\" [Function\"+(t.name?\": \"+t.name:\"\")+\"]\");return me(t)&&(c=\" \"+RegExp.prototype.toString.call(t)),je(t)&&(c=\" \"+Date.prototype.toUTCString.call(t)),Ae(t)&&(c=\" \"+ce(t)),0!==o.length||s&&0!=t.length?r<0?me(t)?e.stylize(RegExp.prototype.toString.call(t),\"regexp\"):e.stylize(\"[Object]\",\"special\"):(e.seen.push(t),a=s?function(e,t,r,n,i){for(var o=[],u=0,f=t.length;u<f;++u)ke(t,String(u))?o.push(se(e,t,r,n,String(u),!0)):o.push(\"\");return i.forEach((function(i){i.match(/^\\d+$/)||o.push(se(e,t,r,n,i,!0));})),o}(e,t,r,u,o):o.map((function(n){return se(e,t,r,u,n,s)})),e.seen.pop(),function(e,t,r){var n=0;if(e.reduce((function(e,t){return n++,t.indexOf(\"\\n\")>=0&&n++,e+t.replace(/\\u001b\\[\\d\\d?m/g,\"\").length+1}),0)>60)return r[0]+(\"\"===t?\"\":t+\"\\n \")+\" \"+e.join(\",\\n \")+\" \"+r[1];return r[0]+t+\" \"+e.join(\", \")+\" \"+r[1]}(a,c,p)):p[0]+c+p[1]}function ce(e){return \"[\"+Error.prototype.toString.call(e)+\"]\"}function se(e,t,r,n,i,o){var u,f,a;if((a=Object.getOwnPropertyDescriptor(t,i)||{value:t[i]}).get?f=a.set?e.stylize(\"[Getter/Setter]\",\"special\"):e.stylize(\"[Getter]\",\"special\"):a.set&&(f=e.stylize(\"[Setter]\",\"special\")),ke(n,i)||(u=\"[\"+i+\"]\"),f||(e.seen.indexOf(a.value)<0?(f=le(r)?ae(e,a.value,null):ae(e,a.value,r-1)).indexOf(\"\\n\")>-1&&(f=o?f.split(\"\\n\").map((function(e){return \" \"+e})).join(\"\\n\").substr(2):\"\\n\"+f.split(\"\\n\").map((function(e){return \" \"+e})).join(\"\\n\")):f=e.stylize(\"[Circular]\",\"special\")),be(u)){if(o&&i.match(/^\\d+$/))return f;(u=JSON.stringify(\"\"+i)).match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)?(u=u.substr(1,u.length-2),u=e.stylize(u,\"name\")):(u=u.replace(/'/g,\"\\\\'\").replace(/\\\\\"/g,'\"').replace(/(^\"|\"$)/g,\"'\"),u=e.stylize(u,\"string\"));}return u+\": \"+f}function pe(e){return Array.isArray(e)}function ye(e){return \"boolean\"==typeof e}function le(e){return null===e}function de(e){return \"number\"==typeof e}function ge(e){return \"string\"==typeof e}function be(e){return void 0===e}function me(e){return he(e)&&\"[object RegExp]\"===ve(e)}function he(e){return \"object\"==typeof e&&null!==e}function je(e){return he(e)&&\"[object Date]\"===ve(e)}function Ae(e){return he(e)&&(\"[object Error]\"===ve(e)||e instanceof Error)}function we(e){return \"function\"==typeof e}function ve(e){return Object.prototype.toString.call(e)}function Oe(e){return e<10?\"0\"+e.toString(10):e.toString(10)}X.debuglog=function(e){if(e=e.toUpperCase(),!re[e])if(ne.test(e)){var t=Y.pid;re[e]=function(){var r=X.format.apply(X,arguments);console.error(\"%s %d: %s\",e,t,r);};}else re[e]=function(){};return re[e]},X.inspect=oe,oe.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},oe.styles={special:\"cyan\",number:\"yellow\",boolean:\"yellow\",undefined:\"grey\",null:\"bold\",string:\"green\",date:\"magenta\",regexp:\"red\"},X.types=o$2,X.isArray=pe,X.isBoolean=ye,X.isNull=le,X.isNullOrUndefined=function(e){return null==e},X.isNumber=de,X.isString=ge,X.isSymbol=function(e){return \"symbol\"==typeof e},X.isUndefined=be,X.isRegExp=me,X.types.isRegExp=me,X.isObject=he,X.isDate=je,X.types.isDate=je,X.isError=Ae,X.types.isNativeError=Ae,X.isFunction=we,X.isPrimitive=function(e){return null===e||\"boolean\"==typeof e||\"number\"==typeof e||\"string\"==typeof e||\"symbol\"==typeof e||void 0===e},X.isBuffer=i$1;var Se=[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"];function Be(){var e=new Date,t=[Oe(e.getHours()),Oe(e.getMinutes()),Oe(e.getSeconds())].join(\":\");return [e.getDate(),Se[e.getMonth()],t].join(\" \")}function ke(e,t){return Object.prototype.hasOwnProperty.call(e,t)}X.log=function(){console.log(\"%s - %s\",Be(),X.format.apply(X,arguments));},X.inherits=t$2,X._extend=function(e,t){if(!t||!he(t))return e;for(var r=Object.keys(t),n=r.length;n--;)e[r[n]]=t[r[n]];return e};var Ee=\"undefined\"!=typeof Symbol?Symbol(\"util.promisify.custom\"):void 0;function De(e,t){if(!e){var r=new Error(\"Promise was rejected with a falsy value\");r.reason=e,e=r;}return t(e)}X.promisify=function(e){if(\"function\"!=typeof e)throw new TypeError('The \"original\" argument must be of type Function');if(Ee&&e[Ee]){var t;if(\"function\"!=typeof(t=e[Ee]))throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');return Object.defineProperty(t,Ee,{value:t,enumerable:!1,writable:!1,configurable:!0}),t}function t(){for(var t,r,n=new Promise((function(e,n){t=e,r=n;})),i=[],o=0;o<arguments.length;o++)i.push(arguments[o]);i.push((function(e,n){e?r(e):t(n);}));try{e.apply(this||Q,i);}catch(e){r(e);}return n}return Object.setPrototypeOf(t,Object.getPrototypeOf(e)),Ee&&Object.defineProperty(t,Ee,{value:t,enumerable:!1,writable:!1,configurable:!0}),Object.defineProperties(t,ee(e))},X.promisify.custom=Ee,X.callbackify=function(e){if(\"function\"!=typeof e)throw new TypeError('The \"original\" argument must be of type Function');function t(){for(var t=[],r=0;r<arguments.length;r++)t.push(arguments[r]);var n=t.pop();if(\"function\"!=typeof n)throw new TypeError(\"The last argument must be of type Function\");var i=this||Q,o=function(){return n.apply(i,arguments)};e.apply(this||Q,t).then((function(e){Y.nextTick(o.bind(null,null,e));}),(function(e){Y.nextTick(De.bind(null,e,o));}));}return Object.setPrototypeOf(t,Object.getPrototypeOf(e)),Object.defineProperties(t,ee(e)),t};\n\nexport { X, t$2 as t };\n","import get from 'lodash/get.js';\nimport { ExpectedConstraintError } from '../lib/errors/ExpectedConstraintError';\nimport { Result } from '../lib/Result';\nimport type { ValidatorOptions } from '../lib/util-types';\nimport type { BaseValidator } from '../validators/BaseValidator';\nimport type { IConstraint } from './base/IConstraint';\n\nexport type ObjectConstraintName = `s.object(T.when)`;\n\nexport type WhenKey = PropertyKey | PropertyKey[];\n\nexport interface WhenOptions<T extends BaseValidator<any>, Key extends WhenKey> {\n\tis?: boolean | ((value: Key extends Array<any> ? any[] : any) => boolean);\n\tthen: (predicate: T) => T;\n\totherwise?: (predicate: T) => T;\n}\n\nexport function whenConstraint<T extends BaseValidator<any>, I, Key extends WhenKey>(\n\tkey: Key,\n\toptions: WhenOptions<T, Key>,\n\tvalidator: T,\n\tvalidatorOptions?: ValidatorOptions\n): IConstraint<I> {\n\treturn {\n\t\trun(input: I, parent?: any) {\n\t\t\tif (!parent) {\n\t\t\t\treturn Result.err(\n\t\t\t\t\tnew ExpectedConstraintError(\n\t\t\t\t\t\t's.object(T.when)',\n\t\t\t\t\t\tvalidatorOptions?.message ?? 'Validator has no parent',\n\t\t\t\t\t\tparent,\n\t\t\t\t\t\t'Validator to have a parent'\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst isKeyArray = Array.isArray(key);\n\n\t\t\tconst value = isKeyArray ? key.map((k) => get(parent, k)) : get(parent, key);\n\n\t\t\tconst predicate = resolveBooleanIs<T, Key>(options, value, isKeyArray) ? options.then : options.otherwise;\n\n\t\t\tif (predicate) {\n\t\t\t\treturn predicate(validator).run(input) as Result<I, ExpectedConstraintError<I>>;\n\t\t\t}\n\n\t\t\treturn Result.ok(input);\n\t\t}\n\t};\n}\n\nfunction resolveBooleanIs<T extends BaseValidator<any>, Key extends WhenKey>(options: WhenOptions<T, Key>, value: any, isKeyArray: boolean) {\n\tif (options.is === undefined) {\n\t\treturn isKeyArray ? !value.some((val: any) => !val) : Boolean(value);\n\t}\n\n\tif (typeof options.is === 'function') {\n\t\treturn options.is(value);\n\t}\n\n\treturn value === options.is;\n}\n","let validationEnabled = true;\n\n/**\n * Sets whether validators should run on the input, or if the input should be passed through.\n * @param enabled Whether validation should be done on inputs\n */\nexport function setGlobalValidationEnabled(enabled: boolean) {\n\tvalidationEnabled = enabled;\n}\n\n/**\n * @returns Whether validation is enabled\n */\nexport function getGlobalValidationEnabled() {\n\treturn validationEnabled;\n}\n","// https://github.com/microsoft/TypeScript/issues/37663\ntype Fn = (...args: unknown[]) => unknown;\n\nexport function getValue<T, U = T extends Fn ? ReturnType<T> : T>(valueOrFn: T): U {\n\treturn typeof valueOrFn === 'function' ? valueOrFn() : valueOrFn;\n}\n","import type { IConstraint } from '../constraints/base/IConstraint';\nimport { whenConstraint, type WhenKey, type WhenOptions } from '../constraints/ObjectConstrains';\nimport { getGlobalValidationEnabled } from '../lib/configs';\nimport type { BaseConstraintError } from '../lib/errors/BaseConstraintError';\nimport type { BaseError } from '../lib/errors/BaseError';\nimport type { CombinedError } from '../lib/errors/CombinedError';\nimport type { CombinedPropertyError } from '../lib/errors/CombinedPropertyError';\nimport type { UnknownEnumValueError } from '../lib/errors/UnknownEnumValueError';\nimport type { ValidationError } from '../lib/errors/ValidationError';\nimport { Result } from '../lib/Result';\nimport type { InferResultType, ValidatorOptions } from '../lib/util-types';\nimport { ArrayValidator, DefaultValidator, LiteralValidator, NullishValidator, SetValidator, UnionValidator } from './imports';\nimport { getValue } from './util/getValue';\n\nexport abstract class BaseValidator<T> {\n\tpublic description?: string;\n\tprotected validatorOptions: ValidatorOptions;\n\tprotected parent?: object;\n\tprotected constraints: readonly IConstraint<T>[] = [];\n\tprotected isValidationEnabled: boolean | (() => boolean) | null = null;\n\n\tpublic constructor(validatorOptions: ValidatorOptions = {}, constraints: readonly IConstraint<T>[] = []) {\n\t\tthis.constraints = constraints;\n\t\tthis.validatorOptions = validatorOptions;\n\t}\n\n\tpublic setParent(parent: object): this {\n\t\tthis.parent = parent;\n\t\treturn this;\n\t}\n\n\tpublic optional(options: ValidatorOptions = this.validatorOptions): UnionValidator<T | undefined> {\n\t\treturn new UnionValidator([new LiteralValidator(undefined, options), this.clone()], options);\n\t}\n\n\tpublic nullable(options: ValidatorOptions = this.validatorOptions): UnionValidator<T | null> {\n\t\treturn new UnionValidator([new LiteralValidator(null, options), this.clone()], options);\n\t}\n\n\tpublic nullish(options: ValidatorOptions = this.validatorOptions): UnionValidator<T | null | undefined> {\n\t\treturn new UnionValidator([new NullishValidator(options), this.clone()], options);\n\t}\n\n\tpublic array(options: ValidatorOptions = this.validatorOptions): ArrayValidator<T[]> {\n\t\treturn new ArrayValidator<T[]>(this.clone(), options);\n\t}\n\n\tpublic set(options: ValidatorOptions = this.validatorOptions): SetValidator<T> {\n\t\treturn new SetValidator<T>(this.clone(), options);\n\t}\n\n\tpublic or<O>(...predicates: readonly BaseValidator<O>[]): UnionValidator<T | O> {\n\t\treturn new UnionValidator<T | O>([this.clone(), ...predicates], this.validatorOptions);\n\t}\n\n\tpublic transform(cb: (value: T) => T, options?: ValidatorOptions): this;\n\tpublic transform<O>(cb: (value: T) => O, options?: ValidatorOptions): BaseValidator<O>;\n\tpublic transform<O>(cb: (value: T) => O, options: ValidatorOptions = this.validatorOptions): BaseValidator<O> {\n\t\treturn this.addConstraint(\n\t\t\t{\n\t\t\t\trun: (input) => Result.ok(cb(input) as unknown as T)\n\t\t\t},\n\t\t\toptions\n\t\t) as unknown as BaseValidator<O>;\n\t}\n\n\tpublic reshape(cb: (input: T) => Result<T>, options?: ValidatorOptions): this;\n\tpublic reshape<R extends Result<unknown>, O = InferResultType<R>>(cb: (input: T) => R, options?: ValidatorOptions): BaseValidator<O>;\n\tpublic reshape<R extends Result<unknown>, O = InferResultType<R>>(\n\t\tcb: (input: T) => R,\n\t\toptions: ValidatorOptions = this.validatorOptions\n\t): BaseValidator<O> {\n\t\treturn this.addConstraint(\n\t\t\t{\n\t\t\t\trun: cb as unknown as (input: T) => Result<T, BaseConstraintError<T>>\n\t\t\t},\n\t\t\toptions\n\t\t) as unknown as BaseValidator<O>;\n\t}\n\n\tpublic default(\n\t\tvalue: Exclude<T, undefined> | (() => Exclude<T, undefined>),\n\t\toptions: ValidatorOptions = this.validatorOptions\n\t): DefaultValidator<Exclude<T, undefined>> {\n\t\treturn new DefaultValidator(this.clone() as unknown as BaseValidator<Exclude<T, undefined>>, value, options);\n\t}\n\n\tpublic when<Key extends WhenKey, This extends BaseValidator<any> = this>(\n\t\tkey: Key,\n\t\toptions: WhenOptions<This, Key>,\n\t\tvalidatorOptions?: ValidatorOptions\n\t): this {\n\t\treturn this.addConstraint(whenConstraint<This, T, Key>(key, options, this as unknown as This, validatorOptions));\n\t}\n\n\tpublic describe(description: string): this {\n\t\tconst clone = this.clone();\n\t\tclone.description = description;\n\t\treturn clone;\n\t}\n\n\tpublic run(value: unknown): Result<T, BaseError> {\n\t\tlet result = this.handle(value) as Result<T, BaseError>;\n\t\tif (result.isErr()) return result;\n\n\t\tfor (const constraint of this.constraints) {\n\t\t\tresult = constraint.run(result.value as T, this.parent);\n\t\t\tif (result.isErr()) break;\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tpublic parse<R extends T = T>(value: unknown): R {\n\t\t// If validation is disabled (at the validator or global level), we only run the `handle` method, which will do some basic checks\n\t\t// (like that the input is a string for a string validator)\n\t\tif (!this.shouldRunConstraints) {\n\t\t\treturn this.handle(value).unwrap() as R;\n\t\t}\n\n\t\treturn this.constraints.reduce((v, constraint) => constraint.run(v).unwrap(), this.handle(value).unwrap()) as R;\n\t}\n\n\tpublic is<R extends T = T>(value: unknown): value is R {\n\t\treturn this.run(value).isOk();\n\t}\n\n\t/**\n\t * Sets if the validator should also run constraints or just do basic checks.\n\t * @param isValidationEnabled Whether this validator should be enabled or disabled. You can pass boolean or a function returning boolean which will be called just before parsing.\n\t * Set to `null` to go off of the global configuration.\n\t */\n\tpublic setValidationEnabled(isValidationEnabled: boolean | (() => boolean) | null): this {\n\t\tconst clone = this.clone();\n\t\tclone.isValidationEnabled = isValidationEnabled;\n\t\treturn clone;\n\t}\n\n\tpublic getValidationEnabled() {\n\t\treturn getValue(this.isValidationEnabled);\n\t}\n\n\tprotected get shouldRunConstraints(): boolean {\n\t\treturn getValue(this.isValidationEnabled) ?? getGlobalValidationEnabled();\n\t}\n\n\tprotected clone(): this {\n\t\tconst clone: this = Reflect.construct(this.constructor, [this.validatorOptions, this.constraints]);\n\t\tclone.isValidationEnabled = this.isValidationEnabled;\n\t\treturn clone;\n\t}\n\n\tprotected abstract handle(value: unknown): Result<T, ValidatorError>;\n\n\tprotected addConstraint(constraint: IConstraint<T>, validatorOptions: ValidatorOptions = this.validatorOptions): this {\n\t\tconst clone = this.clone();\n\t\tclone.validatorOptions = validatorOptions;\n\t\tclone.constraints = clone.constraints.concat(constraint);\n\t\treturn clone;\n\t}\n}\n\nexport type ValidatorError = ValidationError | CombinedError | CombinedPropertyError | UnknownEnumValueError;\n","import fastDeepEqual from 'fast-deep-equal/es6/index.js';\nimport uniqWith from 'lodash/uniqWith.js';\n\nexport function isUnique(input: unknown[]) {\n\tif (input.length < 2) return true;\n\tconst uniqueArray = uniqWith(input, fastDeepEqual);\n\treturn uniqueArray.length === input.length;\n}\n","export function lessThan(a: number, b: number): boolean;\nexport function lessThan(a: bigint, b: bigint): boolean;\nexport function lessThan(a: number | bigint, b: number | bigint): boolean {\n\treturn a < b;\n}\n\nexport function lessThanOrEqual(a: number, b: number): boolean;\nexport function lessThanOrEqual(a: bigint, b: bigint): boolean;\nexport function lessThanOrEqual(a: number | bigint, b: number | bigint): boolean {\n\treturn a <= b;\n}\n\nexport function greaterThan(a: number, b: number): boolean;\nexport function greaterThan(a: bigint, b: bigint): boolean;\nexport function greaterThan(a: number | bigint, b: number | bigint): boolean {\n\treturn a > b;\n}\n\nexport function greaterThanOrEqual(a: number, b: number): boolean;\nexport function greaterThanOrEqual(a: bigint, b: bigint): boolean;\nexport function greaterThanOrEqual(a: number | bigint, b: number | bigint): boolean {\n\treturn a >= b;\n}\n\nexport function equal(a: number, b: number): boolean;\nexport function equal(a: bigint, b: bigint): boolean;\nexport function equal(a: number | bigint, b: number | bigint): boolean {\n\treturn a === b;\n}\n\nexport function notEqual(a: number, b: number): boolean;\nexport function notEqual(a: bigint, b: bigint): boolean;\nexport function notEqual(a: number | bigint, b: number | bigint): boolean {\n\treturn a !== b;\n}\n\nexport interface Comparator {\n\t(a: number, b: number): boolean;\n\t(a: bigint, b: bigint): boolean;\n}\n","import { ExpectedConstraintError } from '../lib/errors/ExpectedConstraintError';\nimport { Result } from '../lib/Result';\nimport type { ValidatorOptions } from '../lib/util-types';\nimport type { IConstraint } from './base/IConstraint';\nimport { isUnique } from './util/isUnique';\nimport { equal, greaterThan, greaterThanOrEqual, lessThan, lessThanOrEqual, notEqual, type Comparator } from './util/operators';\n\nexport type ArrayConstraintName = `s.array(T).${\n\t| 'unique'\n\t| `length${\n\t\t\t| 'LessThan'\n\t\t\t| 'LessThanOrEqual'\n\t\t\t| 'GreaterThan'\n\t\t\t| 'GreaterThanOrEqual'\n\t\t\t| 'Equal'\n\t\t\t| 'NotEqual'\n\t\t\t| 'Range'\n\t\t\t| 'RangeInclusive'\n\t\t\t| 'RangeExclusive'}`}()`;\n\nfunction arrayLengthComparator<T>(\n\tcomparator: Comparator,\n\tname: ArrayConstraintName,\n\texpected: string,\n\tlength: number,\n\toptions?: ValidatorOptions\n): IConstraint<T[]> {\n\treturn {\n\t\trun(input: T[]) {\n\t\t\treturn comparator(input.length, length) //\n\t\t\t\t? Result.ok(input)\n\t\t\t\t: Result.err(new ExpectedConstraintError(name, options?.message ?? 'Invalid Array length', input, expected));\n\t\t}\n\t};\n}\n\nexport function arrayLengthLessThan<T>(value: number, options?: ValidatorOptions): IConstraint<T[]> {\n\tconst expected = `expected.length < ${value}`;\n\treturn arrayLengthComparator(lessThan, 's.array(T).lengthLessThan()', expected, value, options);\n}\n\nexport function arrayLengthLessThanOrEqual<T>(value: number, options?: ValidatorOptions): IConstraint<T[]> {\n\tconst expected = `expected.length <= ${value}`;\n\treturn arrayLengthComparator(lessThanOrEqual, 's.array(T).lengthLessThanOrEqual()', expected, value, options);\n}\n\nexport function arrayLengthGreaterThan<T>(value: number, options?: ValidatorOptions): IConstraint<T[]> {\n\tconst expected = `expected.length > ${value}`;\n\treturn arrayLengthComparator(greaterThan, 's.array(T).lengthGreaterThan()', expected, value, options);\n}\n\nexport function arrayLengthGreaterThanOrEqual<T>(value: number, options?: ValidatorOptions): IConstraint<T[]> {\n\tconst expected = `expected.length >= ${value}`;\n\treturn arrayLengthComparator(greaterThanOrEqual, 's.array(T).lengthGreaterThanOrEqual()', expected, value, options);\n}\n\nexport function arrayLengthEqual<T>(value: number, options?: ValidatorOptions): IConstraint<T[]> {\n\tconst expected = `expected.length === ${value}`;\n\treturn arrayLengthComparator(equal, 's.array(T).lengthEqual()', expected, value, options);\n}\n\nexport function arrayLengthNotEqual<T>(value: number, options?: ValidatorOptions): IConstraint<T[]> {\n\tconst expected = `expected.length !== ${value}`;\n\treturn arrayLengthComparator(notEqual, 's.array(T).lengthNotEqual()', expected, value, options);\n}\n\nexport function arrayLengthRange<T>(start: number, endBefore: number, options?: ValidatorOptions): IConstraint<T[]> {\n\tconst expected = `expected.length >= ${start} && expected.length < ${endBefore}`;\n\treturn {\n\t\trun(input: T[]) {\n\t\t\treturn input.length >= start && input.length < endBefore //\n\t\t\t\t? Result.ok(input)\n\t\t\t\t: Result.err(new ExpectedConstraintError('s.array(T).lengthRange()', options?.message ?? 'Invalid Array length', input, expected));\n\t\t}\n\t};\n}\n\nexport function arrayLengthRangeInclusive<T>(start: number, end: number, options?: ValidatorOptions): IConstraint<T[]> {\n\tconst expected = `expected.length >= ${start} && expected.length <= ${end}`;\n\treturn {\n\t\trun(input: T[]) {\n\t\t\treturn input.length >= start && input.length <= end //\n\t\t\t\t? Result.ok(input)\n\t\t\t\t: Result.err(\n\t\t\t\t\t\tnew ExpectedConstraintError('s.array(T).lengthRangeInclusive()', options?.message ?? 'Invalid Array length', input, expected)\n\t\t\t\t\t);\n\t\t}\n\t};\n}\n\nexport function arrayLengthRangeExclusive<T>(startAfter: number, endBefore: number, options?: ValidatorOptions): IConstraint<T[]> {\n\tconst expected = `expected.length > ${startAfter} && expected.length < ${endBefore}`;\n\treturn {\n\t\trun(input: T[]) {\n\t\t\treturn input.length > startAfter && input.length < endBefore //\n\t\t\t\t? Result.ok(input)\n\t\t\t\t: Result.err(\n\t\t\t\t\t\tnew ExpectedConstraintError('s.array(T).lengthRangeExclusive()', options?.message ?? 'Invalid Array length', input, expected)\n\t\t\t\t\t);\n\t\t}\n\t};\n}\n\nexport function uniqueArray(options?: ValidatorOptions): IConstraint<unknown[]> {\n\treturn {\n\t\trun(input: unknown[]) {\n\t\t\treturn isUnique(input) //\n\t\t\t\t? Result.ok(input)\n\t\t\t\t: Result.err(\n\t\t\t\t\t\tnew ExpectedConstraintError(\n\t\t\t\t\t\t\t's.array(T).unique()',\n\t\t\t\t\t\t\toptions?.message ?? 'Array values are not unique',\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\t'Expected all values to be unique'\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\t\t}\n\t};\n}\n","import {\n\tarrayLengthEqual,\n\tarrayLengthGreaterThan,\n\tarrayLengthGreaterThanOrEqual,\n\tarrayLengthLessThan,\n\tarrayLengthLessThanOrEqual,\n\tarrayLengthNotEqual,\n\tarrayLengthRange,\n\tarrayLengthRangeExclusive,\n\tarrayLengthRangeInclusive,\n\tuniqueArray\n} from '../constraints/ArrayConstraints';\nimport type { IConstraint } from '../constraints/base/IConstraint';\nimport type { BaseError } from '../lib/errors/BaseError';\nimport { CombinedPropertyError } from '../lib/errors/CombinedPropertyError';\nimport { ValidationError } from '../lib/errors/ValidationError';\nimport { Result } from '../lib/Result';\nimport type { ExpandSmallerTuples, Tuple, UnshiftTuple, ValidatorOptions } from '../lib/util-types';\nimport { BaseValidator } from './imports';\n\nexport class ArrayValidator<T extends unknown[], I = T[number]> extends BaseValidator<T> {\n\tprivate readonly validator: BaseValidator<I>;\n\n\tpublic constructor(validator: BaseValidator<I>, validatorOptions: ValidatorOptions = {}, constraints: readonly IConstraint<T>[] = []) {\n\t\tsuper(validatorOptions, constraints);\n\t\tthis.validator = validator;\n\t}\n\n\tpublic lengthLessThan<N extends number>(\n\t\tlength: N,\n\t\toptions: ValidatorOptions = this.validatorOptions\n\t): ArrayValidator<ExpandSmallerTuples<UnshiftTuple<[...Tuple<I, N>]>>> {\n\t\treturn this.addConstraint(arrayLengthLessThan(length, options) as IConstraint<T>) as any;\n\t}\n\n\tpublic lengthLessThanOrEqual<N extends number>(\n\t\tlength: N,\n\t\toptions: ValidatorOptions = this.validatorOptions\n\t): ArrayValidator<ExpandSmallerTuples<[...Tuple<I, N>]>> {\n\t\treturn this.addConstraint(arrayLengthLessThanOrEqual(length, options) as IConstraint<T>) as any;\n\t}\n\n\tpublic lengthGreaterThan<N extends number>(\n\t\tlength: N,\n\t\toptions: ValidatorOptions = this.validatorOptions\n\t): ArrayValidator<[...Tuple<I, N>, I, ...T]> {\n\t\treturn this.addConstraint(arrayLengthGreaterThan(length, options) as IConstraint<T>) as any;\n\t}\n\n\tpublic lengthGreaterThanOrEqual<N extends number>(\n\t\tlength: N,\n\t\toptions: ValidatorOptions = this.validatorOptions\n\t): ArrayValidator<[...Tuple<I, N>, ...T]> {\n\t\treturn this.addConstraint(arrayLengthGreaterThanOrEqual(length, options) as IConstraint<T>) as any;\n\t}\n\n\tpublic lengthEqual<N extends number>(length: N, options: ValidatorOptions = this.validatorOptions): ArrayValidator<[...Tuple<I, N>]> {\n\t\treturn this.addConstraint(arrayLengthEqual(length, options) as IConstraint<T>) as any;\n\t}\n\n\tpublic lengthNotEqual<N extends number>(length: N, options: ValidatorOptions = this.validatorOptions): ArrayValidator<[...Tuple<I, N>]> {\n\t\treturn this.addConstraint(arrayLengthNotEqual(length, options) as IConstraint<T>) as any;\n\t}\n\n\tpublic lengthRange<S extends number, E extends number>(\n\t\tstart: S,\n\t\tendBefore: E,\n\t\toptions: ValidatorOptions = this.validatorOptions\n\t): ArrayValidator<Exclude<ExpandSmallerTuples<UnshiftTuple<[...Tuple<I, E>]>>, ExpandSmallerTuples<UnshiftTuple<[...Tuple<I, S>]>>>> {\n\t\treturn this.addConstraint(arrayLengthRange(start, endBefore, options) as IConstraint<T>) as any;\n\t}\n\n\tpublic lengthRangeInclusive<S extends number, E extends number>(\n\t\tstartAt: S,\n\t\tendAt: E,\n\t\toptions: ValidatorOptions = this.validatorOptions\n\t): ArrayValidator<Exclude<ExpandSmallerTuples<[...Tuple<I, E>]>, ExpandSmallerTuples<UnshiftTuple<[...Tuple<I, S>]>>>> {\n\t\treturn this.addConstraint(arrayLengthRangeInclusive(startAt, endAt, options) as IConstraint<T>) as any;\n\t}\n\n\tpublic lengthRangeExclusive<S extends number, E extends number>(\n\t\tstartAfter: S,\n\t\tendBefore: E,\n\t\toptions: ValidatorOptions = this.validatorOptions\n\t): ArrayValidator<Exclude<ExpandSmallerTuples<UnshiftTuple<[...Tuple<I, E>]>>, ExpandSmallerTuples<[...Tuple<T, S>]>>> {\n\t\treturn this.addConstraint(arrayLengthRangeExclusive(startAfter, endBefore, options) as IConstraint<T>) as any;\n\t}\n\n\tpublic unique(options: ValidatorOptions = this.validatorOptions): this {\n\t\treturn this.addConstraint(uniqueArray(options) as IConstraint<T>);\n\t}\n\n\tprotected override clone(): this {\n\t\treturn Reflect.construct(this.constructor, [this.validator, this.validatorOptions, this.constraints]);\n\t}\n\n\tprotected handle(values: unknown): Result<T, ValidationError | CombinedPropertyError> {\n\t\tif (!Array.isArray(values)) {\n\t\t\treturn Result.err(new ValidationError('s.array(T)', this.validatorOptions.message ?? 'Expected an array', values));\n\t\t}\n\n\t\tif (!this.shouldRunConstraints) {\n\t\t\treturn Result.ok(values as T);\n\t\t}\n\n\t\tconst errors: [number, BaseError][] = [];\n\t\tconst transformed: T = [] as unknown as T;\n\n\t\tfor (let i = 0; i < values.length; i++) {\n\t\t\tconst result = this.validator.run(values[i]);\n\t\t\tif (result.isOk()) transformed.push(result.value);\n\t\t\telse errors.push([i, result.error!]);\n\t\t}\n\n\t\treturn errors.length === 0 //\n\t\t\t? Result.ok(transformed)\n\t\t\t: Result.err(new CombinedPropertyError(errors, this.validatorOptions));\n\t}\n}\n","import { ExpectedConstraintError } from '../lib/errors/ExpectedConstraintError';\nimport { Result } from '../lib/Result';\nimport type { ValidatorOptions } from '../lib/util-types';\nimport type { IConstraint } from './base/IConstraint';\nimport { equal, greaterThan, greaterThanOrEqual, lessThan, lessThanOrEqual, notEqual, type Comparator } from './util/operators';\n\nexport type BigIntConstraintName = `s.bigint().${\n\t| 'lessThan'\n\t| 'lessThanOrEqual'\n\t| 'greaterThan'\n\t| 'greaterThanOrEqual'\n\t| 'equal'\n\t| 'notEqual'\n\t| 'divisibleBy'}()`;\n\nfunction bigintComparator(\n\tcomparator: Comparator,\n\tname: BigIntConstraintName,\n\texpected: string,\n\tnumber: bigint,\n\toptions?: ValidatorOptions\n): IConstraint<bigint> {\n\treturn {\n\t\trun(input: bigint) {\n\t\t\treturn comparator(input, number) //\n\t\t\t\t? Result.ok(input)\n\t\t\t\t: Result.err(new ExpectedConstraintError(name, options?.message ?? 'Invalid bigint value', input, expected));\n\t\t}\n\t};\n}\n\nexport function bigintLessThan(value: bigint, options?: ValidatorOptions): IConstraint<bigint> {\n\tconst expected = `expected < ${value}n`;\n\treturn bigintComparator(lessThan, 's.bigint().lessThan()', expected, value, options);\n}\n\nexport function bigintLessThanOrEqual(value: bigint, options?: ValidatorOptions): IConstraint<bigint> {\n\tconst expected = `expected <= ${value}n`;\n\treturn bigintComparator(lessThanOrEqual, 's.bigint().lessThanOrEqual()', expected, value, options);\n}\n\nexport function bigintGreaterThan(value: bigint, options?: ValidatorOptions): IConstraint<bigint> {\n\tconst expected = `expected > ${value}n`;\n\treturn bigintComparator(greaterThan, 's.bigint().greaterThan()', expected, value, options);\n}\n\nexport function bigintGreaterThanOrEqual(value: bigint, options?: ValidatorOptions): IConstraint<bigint> {\n\tconst expected = `expected >= ${value}n`;\n\treturn bigintComparator(greaterThanOrEqual, 's.bigint().greaterThanOrEqual()', expected, value, options);\n}\n\nexport function bigintEqual(value: bigint, options?: ValidatorOptions): IConstraint<bigint> {\n\tconst expected = `expected === ${value}n`;\n\treturn bigintComparator(equal, 's.bigint().equal()', expected, value, options);\n}\n\nexport function bigintNotEqual(value: bigint, options?: ValidatorOptions): IConstraint<bigint> {\n\tconst expected = `expected !== ${value}n`;\n\treturn bigintComparator(notEqual, 's.bigint().notEqual()', expected, value, options);\n}\n\nexport function bigintDivisibleBy(divider: bigint, options?: ValidatorOptions): IConstraint<bigint> {\n\tconst expected = `expected % ${divider}n === 0n`;\n\treturn {\n\t\trun(input: bigint) {\n\t\t\treturn input % divider === 0n //\n\t\t\t\t? Result.ok(input)\n\t\t\t\t: Result.err(new ExpectedConstraintError('s.bigint().divisibleBy()', options?.message ?? 'BigInt is not divisible', input, expected));\n\t\t}\n\t};\n}\n","import type { IConstraint } from '../constraints/base/IConstraint';\nimport {\n\tbigintDivisibleBy,\n\tbigintEqual,\n\tbigintGreaterThan,\n\tbigintGreaterThanOrEqual,\n\tbigintLessThan,\n\tbigintLessThanOrEqual,\n\tbigintNotEqual\n} from '../constraints/BigIntConstraints';\nimport { ValidationError } from '../lib/errors/ValidationError';\nimport { Result } from '../lib/Result';\nimport type { ValidatorOptions } from '../lib/util-types';\nimport { BaseValidator } from './imports';\n\nexport class BigIntValidator<T extends bigint> extends BaseValidator<T> {\n\tpublic lessThan(number: bigint, options: ValidatorOptions = this.validatorOptions): this {\n\t\treturn this.addConstraint(bigintLessThan(number, options) as IConstraint<T>);\n\t}\n\n\tpublic lessThanOrEqual(number: bigint, options: ValidatorOptions = this.validatorOptions): this {\n\t\treturn this.addConstraint(bigintLessThanOrEqual(number, options) as IConstraint<T>);\n\t}\n\n\tpublic greaterThan(number: bigint, options: ValidatorOptions = this.validatorOptions): this {\n\t\treturn this.addConstraint(bigintGreaterThan(number, options) as IConstraint<T>);\n\t}\n\n\tpublic greaterThanOrEqual(number: bigint, options: ValidatorOptions = this.validatorOptions): this {\n\t\treturn this.addConstraint(bigintGreaterThanOrEqual(number, options) as IConstraint<T>);\n\t}\n\n\tpublic equal<N extends bigint>(number: N, options: ValidatorOptions = this.validatorOptions): BigIntValidator<N> {\n\t\treturn this.addConstraint(bigintEqual(number, options) as IConstraint<T>) as unknown as BigIntValidator<N>;\n\t}\n\n\tpublic notEqual(number: bigint, options: ValidatorOptions = this.validatorOptions): this {\n\t\treturn this.addConstraint(bigintNotEqual(number, options) as IConstraint<T>);\n\t}\n\n\tpublic positive(options: ValidatorOptions = this.validatorOptions): this {\n\t\treturn this.greaterThanOrEqual(0n, options);\n\t}\n\n\tpublic negative(options: ValidatorOptions = this.validatorOptions): this {\n\t\treturn this.lessThan(0n, options);\n\t}\n\n\tpublic divisibleBy(number: bigint, options: ValidatorOptions = this.validatorOptions): this {\n\t\treturn this.addConstraint(bigintDivisibleBy(number, options) as IConstraint<T>);\n\t}\n\n\tpublic abs(options: ValidatorOptions = this.validatorOptions): this {\n\t\treturn this.transform((value) => (value < 0 ? -value : value) as T, options);\n\t}\n\n\tpublic intN(bits: number, options: ValidatorOptions = this.validatorOptions): this {\n\t\treturn this.transform((value) => BigInt.asIntN(bits, value) as T, options);\n\t}\n\n\tpublic uintN(bits: number, options: ValidatorOptions = this.validatorOptions): this {\n\t\treturn this.transform((value) => BigInt.asUintN(bits, value) as T, options);\n\t}\n\n\tprotected handle(value: unknown): Result<T, ValidationError> {\n\t\treturn typeof value === 'bigint' //\n\t\t\t? Result.ok(value as T)\n\t\t\t: Result.err(new ValidationError('s.bigint()', this.validatorOptions.message ?? 'Expected a bigint primitive', value));\n\t}\n}\n","import { ExpectedConstraintError } from '../lib/errors/ExpectedConstraintError';\nimport { Result } from '../lib/Result';\nimport type { ValidatorOptions } from '../lib/util-types';\nimport type { IConstraint } from './base/IConstraint';\n\nexport type BooleanConstraintName = `s.boolean().${boolean}()`;\n\nexport function booleanTrue(options?: ValidatorOptions): IConstraint<boolean, true> {\n\treturn {\n\t\trun(input: boolean) {\n\t\t\treturn input //\n\t\t\t\t? Result.ok(input)\n\t\t\t\t: Result.err(new ExpectedConstraintError('s.boolean().true()', options?.message ?? 'Invalid boolean value', input, 'true'));\n\t\t}\n\t};\n}\n\nexport function booleanFalse(options?: ValidatorOptions): IConstraint<boolean, false> {\n\treturn {\n\t\trun(input: boolean) {\n\t\t\treturn input //\n\t\t\t\t? Result.err(new ExpectedConstraintError('s.boolean().false()', options?.message ?? 'Invalid boolean value', input, 'false'))\n\t\t\t\t: Result.ok(input);\n\t\t}\n\t};\n}\n","import type { IConstraint } from '../constraints/base/IConstraint';\nimport { booleanFalse, booleanTrue } from '../constraints/BooleanConstraints';\nimport { ValidationError } from '../lib/errors/ValidationError';\nimport { Result } from '../lib/Result';\nimport type { ValidatorOptions } from '../lib/util-types';\nimport { BaseValidator } from './imports';\n\nexport class BooleanValidator<T extends boolean = boolean> extends BaseValidator<T> {\n\tpublic true(options: ValidatorOptions = this.validatorOptions): BooleanValidator<true> {\n\t\treturn this.addConstraint(booleanTrue(options) as IConstraint<T>) as BooleanValidator<true>;\n\t}\n\n\tpublic false(options: ValidatorOptions = this.validatorOptions): BooleanValidator<false> {\n\t\treturn this.addConstraint(booleanFalse(options) as IConstraint<T>) as BooleanValidator<false>;\n\t}\n\n\tpublic equal<R extends true | false>(value: R, options: ValidatorOptions = this.validatorOptions): BooleanValidator<R> {\n\t\treturn (value ? this.true(options) : this.false(options)) as BooleanValidator<R>;\n\t}\n\n\tpublic notEqual<R extends true | false>(value: R, options: ValidatorOptions = this.validatorOptions): BooleanValidator<R> {\n\t\treturn (value ? this.false(options) : this.true(options)) as BooleanValidator<R>;\n\t}\n\n\tprotected handle(value: unknown): Result<T, ValidationError> {\n\t\treturn typeof value === 'boolean' //\n\t\t\t? Result.ok(value as T)\n\t\t\t: Result.err(new ValidationError('s.boolean()', this.validatorOptions.message ?? 'Expected a boolean primitive', value));\n\t}\n}\n","import { ExpectedConstraintError } from '../lib/errors/ExpectedConstraintError';\nimport { Result } from '../lib/Result';\nimport type { ValidatorOptions } from '../lib/util-types';\nimport type { IConstraint } from './base/IConstraint';\nimport { equal, greaterThan, greaterThanOrEqual, lessThan, lessThanOrEqual, notEqual, type Comparator } from './util/operators';\n\nexport type DateConstraintName = `s.date().${\n\t| 'lessThan'\n\t| 'lessThanOrEqual'\n\t| 'greaterThan'\n\t| 'greaterThanOrEqual'\n\t| 'equal'\n\t| 'notEqual'\n\t| 'valid'\n\t| 'invalid'}()`;\n\nfunction dateComparator(\n\tcomparator: Comparator,\n\tname: DateConstraintName,\n\texpected: string,\n\tnumber: number,\n\toptions?: ValidatorOptions\n): IConstraint<Date> {\n\treturn {\n\t\trun(input: Date) {\n\t\t\treturn comparator(input.getTime(), number) //\n\t\t\t\t? Result.ok(input)\n\t\t\t\t: Result.err(new ExpectedConstraintError(name, options?.message ?? 'Invalid Date value', input, expected));\n\t\t}\n\t};\n}\n\nexport function dateLessThan(value: Date, options?: ValidatorOptions): IConstraint<Date> {\n\tconst expected = `expected < ${value.toISOString()}`;\n\treturn dateComparator(lessThan, 's.date().lessThan()', expected, value.getTime(), options);\n}\n\nexport function dateLessThanOrEqual(value: Date, options?: ValidatorOptions): IConstraint<Date> {\n\tconst expected = `expected <= ${value.toISOString()}`;\n\treturn dateComparator(lessThanOrEqual, 's.date().lessThanOrEqual()', expected, value.getTime(), options);\n}\n\nexport function dateGreaterThan(value: Date, options?: ValidatorOptions): IConstraint<Date> {\n\tconst expected = `expected > ${value.toISOString()}`;\n\treturn dateComparator(greaterThan, 's.date().greaterThan()', expected, value.getTime(), options);\n}\n\nexport function dateGreaterThanOrEqual(value: Date, options?: ValidatorOptions): IConstraint<Date> {\n\tconst expected = `expected >= ${value.toISOString()}`;\n\treturn dateComparator(greaterThanOrEqual, 's.date().greaterThanOrEqual()', expected, value.getTime(), options);\n}\n\nexport function dateEqual(value: Date, options?: ValidatorOptions): IConstraint<Date> {\n\tconst expected = `expected === ${value.toISOString()}`;\n\treturn dateComparator(equal, 's.date().equal()', expected, value.getTime(), options);\n}\n\nexport function dateNotEqual(value: Date, options?: ValidatorOptions): IConstraint<Date> {\n\tconst expected = `expected !== ${value.toISOString()}`;\n\treturn dateComparator(notEqual, 's.date().notEqual()', expected, value.getTime(), options);\n}\n\nexport function dateInvalid(options?: ValidatorOptions): IConstraint<Date> {\n\treturn {\n\t\trun(input: Date) {\n\t\t\treturn Number.isNaN(input.getTime()) //\n\t\t\t\t? Result.ok(input)\n\t\t\t\t: Result.err(new ExpectedConstraintError('s.date().invalid()', options?.message ?? 'Invalid Date value', input, 'expected === NaN'));\n\t\t}\n\t};\n}\n\nexport function dateValid(options?: ValidatorOptions): IConstraint<Date> {\n\treturn {\n\t\trun(input: Date) {\n\t\t\treturn Number.isNaN(input.getTime()) //\n\t\t\t\t? Result.err(new ExpectedConstraintError('s.date().valid()', options?.message ?? 'Invalid Date value', input, 'expected !== NaN'))\n\t\t\t\t: Result.ok(input);\n\t\t}\n\t};\n}\n","import { ValidationError } from '../lib/errors/ValidationError';\nimport { Result } from '../lib/Result';\nimport { BaseValidator } from './imports';\n\nexport class NullishValidator extends BaseValidator<undefined | null> {\n\tprotected handle(value: unknown): Result<undefined | null, ValidationError> {\n\t\treturn value === undefined || value === null //\n\t\t\t? Result.ok(value)\n\t\t\t: Result.err(new ValidationError('s.nullish()', this.validatorOptions.message ?? 'Expected undefined or null', value));\n\t}\n}\n","import { ExpectedConstraintError } from '../lib/errors/ExpectedConstraintError';\nimport { Result } from '../lib/Result';\nimport type { ValidatorOptions } from '../lib/util-types';\n\nimport type { IConstraint } from './base/IConstraint';\nimport { equal, greaterThan, greaterThanOrEqual, lessThan, lessThanOrEqual, notEqual, type Comparator } from './util/operators';\n\nexport type NumberConstraintName = `s.number().${\n\t| 'lessThan'\n\t| 'lessThanOrEqual'\n\t| 'greaterThan'\n\t| 'greaterThanOrEqual'\n\t| 'equal'\n\t| 'equal'\n\t| 'notEqual'\n\t| 'notEqual'\n\t| 'int'\n\t| 'safeInt'\n\t| 'finite'\n\t| 'divisibleBy'}(${string})`;\n\nfunction numberComparator(\n\tcomparator: Comparator,\n\tname: NumberConstraintName,\n\texpected: string,\n\tnumber: number,\n\toptions?: ValidatorOptions\n): IConstraint<number> {\n\treturn {\n\t\trun(input: number) {\n\t\t\treturn comparator(input, number) //\n\t\t\t\t? Result.ok(input)\n\t\t\t\t: Result.err(new ExpectedConstraintError(name, options?.message ?? 'Invalid number value', input, expected));\n\t\t}\n\t};\n}\n\nexport function numberLessThan(value: number, options?: ValidatorOptions): IConstraint<number> {\n\tconst expected = `expected < ${value}`;\n\treturn numberComparator(lessThan, 's.number().lessThan()', expected, value, options);\n}\n\nexport function numberLessThanOrEqual(value: number, options?: ValidatorOptions): IConstraint<number> {\n\tconst expected = `expected <= ${value}`;\n\treturn numberComparator(lessThanOrEqual, 's.number().lessThanOrEqual()', expected, value, options);\n}\n\nexport function numberGreaterThan(value: number, options?: ValidatorOptions): IConstraint<number> {\n\tconst expected = `expected > ${value}`;\n\treturn numberComparator(greaterThan, 's.number().greaterThan()', expected, value, options);\n}\n\nexport function numberGreaterThanOrEqual(value: number, options?: ValidatorOptions): IConstraint<number> {\n\tconst expected = `expected >= ${value}`;\n\treturn numberComparator(greaterThanOrEqual, 's.number().greaterThanOrEqual()', expected, value, options);\n}\n\nexport function numberEqual(value: number, options?: ValidatorOptions): IConstraint<number> {\n\tconst expected = `expected === ${value}`;\n\treturn numberComparator(equal, 's.number().equal()', expected, value, options);\n}\n\nexport function numberNotEqual(value: number, options?: ValidatorOptions): IConstraint<number> {\n\tconst expected = `expected !== ${value}`;\n\treturn numberComparator(notEqual, 's.number().notEqual()', expected, value, options);\n}\n\nexport function numberInt(options?: ValidatorOptions): IConstraint<number> {\n\treturn {\n\t\trun(input: number) {\n\t\t\treturn Number.isInteger(input) //\n\t\t\t\t? Result.ok(input)\n\t\t\t\t: Result.err(\n\t\t\t\t\t\tnew ExpectedConstraintError(\n\t\t\t\t\t\t\t's.number().int()',\n\t\t\t\t\t\t\toptions?.message ?? 'Given value is not an integer',\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\t'Number.isInteger(expected) to be true'\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\t\t}\n\t};\n}\n\nexport function numberSafeInt(options?: ValidatorOptions): IConstraint<number> {\n\treturn {\n\t\trun(input: number) {\n\t\t\treturn Number.isSafeInteger(input) //\n\t\t\t\t? Result.ok(input)\n\t\t\t\t: Result.err(\n\t\t\t\t\t\tnew ExpectedConstraintError(\n\t\t\t\t\t\t\t's.number().safeInt()',\n\t\t\t\t\t\t\toptions?.message ?? 'Given value is not a safe integer',\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\t'Number.isSafeInteger(expected) to be true'\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\t\t}\n\t};\n}\n\nexport function numberFinite(options?: ValidatorOptions): IConstraint<number> {\n\treturn {\n\t\trun(input: number) {\n\t\t\treturn Number.isFinite(input) //\n\t\t\t\t? Result.ok(input)\n\t\t\t\t: Result.err(\n\t\t\t\t\t\tnew ExpectedConstraintError(\n\t\t\t\t\t\t\t's.number().finite()',\n\t\t\t\t\t\t\toptions?.message ?? 'Given value is not finite',\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\t'Number.isFinite(expected) to be true'\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\t\t}\n\t};\n}\n\nexport function numberNaN(options?: ValidatorOptions): IConstraint<number> {\n\treturn {\n\t\trun(input: number) {\n\t\t\treturn Number.isNaN(input) //\n\t\t\t\t? Result.ok(input)\n\t\t\t\t: Result.err(\n\t\t\t\t\t\tnew ExpectedConstraintError('s.number().equal(NaN)', options?.message ?? 'Invalid number value', input, 'expected === NaN')\n\t\t\t\t\t);\n\t\t}\n\t};\n}\n\nexport function numberNotNaN(options?: ValidatorOptions): IConstraint<number> {\n\treturn {\n\t\trun(input: number) {\n\t\t\treturn Number.isNaN(input) //\n\t\t\t\t? Result.err(\n\t\t\t\t\t\tnew ExpectedConstraintError('s.number().notEqual(NaN)', options?.message ?? 'Invalid number value', input, 'expected !== NaN')\n\t\t\t\t\t)\n\t\t\t\t: Result.ok(input);\n\t\t}\n\t};\n}\n\nexport function numberDivisibleBy(divider: number, options?: ValidatorOptions): IConstraint<number> {\n\tconst expected = `expected % ${divider} === 0`;\n\treturn {\n\t\trun(input: number) {\n\t\t\treturn input % divider === 0 //\n\t\t\t\t? Result.ok(input)\n\t\t\t\t: Result.err(new ExpectedConstraintError('s.number().divisibleBy()', options?.message ?? 'Number is not divisible', input, expected));\n\t\t}\n\t};\n}\n","import type { IConstraint } from '../constraints/base/IConstraint';\nimport type { BaseError } from '../lib/errors/BaseError';\nimport { CombinedError } from '../lib/errors/CombinedError';\nimport { ValidationError } from '../lib/errors/ValidationError';\nimport { Result } from '../lib/Result';\nimport type { ValidatorOptions } from '../lib/util-types';\nimport { BaseValidator } from './imports';\n\nexport class SetValidator<T> extends BaseValidator<Set<T>> {\n\tprivate readonly validator: BaseValidator<T>;\n\n\tpublic constructor(validator: BaseValidator<T>, validatorOptions?: ValidatorOptions, constraints: readonly IConstraint<Set<T>>[] = []) {\n\t\tsuper(validatorOptions, constraints);\n\t\tthis.validator = validator;\n\t}\n\n\tprotected override clone(): this {\n\t\treturn Reflect.construct(this.constructor, [this.validator, this.validatorOptions, this.constraints]);\n\t}\n\n\tprotected handle(values: unknown): Result<Set<T>, ValidationError | CombinedError> {\n\t\tif (!(values instanceof Set)) {\n\t\t\treturn Result.err(new ValidationError('s.set(T)', this.validatorOptions.message ?? 'Expected a set', values));\n\t\t}\n\n\t\tif (!this.shouldRunConstraints) {\n\t\t\treturn Result.ok(values);\n\t\t}\n\n\t\tconst errors: BaseError[] = [];\n\t\tconst transformed = new Set<T>();\n\n\t\tfor (const value of values) {\n\t\t\tconst result = this.validator.run(value);\n\t\t\tif (result.isOk()) transformed.add(result.value);\n\t\t\telse errors.push(result.error!);\n\t\t}\n\n\t\treturn errors.length === 0 //\n\t\t\t? Result.ok(transformed)\n\t\t\t: Result.err(new CombinedError(errors, this.validatorOptions));\n\t}\n}\n","/**\n * @license MIT\n * @copyright 2020 Colin McDonnell\n * @see https://github.com/colinhacks/zod/blob/master/LICENSE\n */\nconst accountRegex = /^(?!\\.)(?!.*\\.\\.)([A-Z0-9_+-\\.]*)[A-Z0-9_+-]$/i;\n\n/**\n * Validates an email address string based on various checks:\n * - It must be a non nullish and non empty string\n * - It must include at least an `@` symbol`\n * - The account name may not exceed 64 characters\n * - The domain name may not exceed 255 characters\n * - The domain must include at least one `.` symbol\n * - Each part of the domain, split by `.` must not exceed 63 characters\n * - The email address must be [RFC-5322](https://datatracker.ietf.org/doc/html/rfc5322) compliant\n * @param email The email to validate\n * @returns `true` if the email is valid, `false` otherwise\n *\n * @remark Based on the following sources:\n * - `email-validator` by [manisharaan](https://github.com/manishsaraan) ([code](https://github.com/manishsaraan/email-validator/blob/master/index.js))\n * - [Comparing E-mail Address Validating Regular Expressions](http://fightingforalostcause.net/misc/2006/compare-email-regex.php)\n * - [Validating Email Addresses by Derrick Pallas](http://thedailywtf.com/Articles/Validating_Email_Addresses.aspx)\n * - [StackOverflow answer by bortzmeyer](http://stackoverflow.com/questions/201323/what-is-the-best-regular-expression-for-validating-email-addresses/201378#201378)\n * - [The wikipedia page on Email addresses](https://en.wikipedia.org/wiki/Email_address)\n */\nexport function validateEmail(email: string): boolean {\n\t// 1. Non-nullish and non-empty string check.\n\t//\n\t// If a nullish or empty email was provided then do an early exit\n\tif (!email) return false;\n\n\t// Find the location of the @ symbol:\n\tconst atIndex = email.indexOf('@');\n\n\t// 2. @ presence check.\n\t//\n\t// If the email does not have the @ symbol, it's automatically invalid:\n\tif (atIndex === -1) return false;\n\n\t// 3. <account> maximum length check.\n\t//\n\t// From <account>@<domain>, if <account> exceeds 64 characters, then the\n\t// position of the @ symbol is 64 or greater. In this case, the email is\n\t// invalid:\n\tif (atIndex > 64) return false;\n\n\tconst domainIndex = atIndex + 1;\n\n\t// 7.1. Duplicated @ symbol check.\n\t//\n\t// If there's a second @ symbol, the email is automatically invalid:\n\tif (email.includes('@', domainIndex)) return false;\n\n\t// 4. <domain> maximum length check.\n\t//\n\t// From <account>@<domain>, if <domain> exceeds 255 characters, then it\n\t// means that the amount of characters between the start of <domain> and the\n\t// end of the string is separated by 255 or more characters.\n\tif (email.length - domainIndex > 255) return false;\n\n\t// Find the location of the . symbol in <domain>:\n\tlet dotIndex = email.indexOf('.', domainIndex);\n\n\t// 5. <domain> dot (.) symbol check.\n\t//\n\t// From <account>@<domain>, if <domain> does not contain a dot (.) symbol,\n\t// then it means the domain is invalid.\n\tif (dotIndex === -1) return false;\n\n\t// 6. <domain> parts length.\n\t//\n\t// Assign a temporary variable to store the start of the last read domain\n\t// part, this would be at the start of <domain>.\n\t//\n\t// For a <domain> part to be correct, it must have at most, 63 characters.\n\t// We repeat this step for every sub-section of <domain> contained within\n\t// dot (.) symbols.\n\t//\n\t// The following step is a more optimized version of the following code:\n\t//\n\t// ```javascript\n\t// domain.split('.').some((part) => part.length > 63);\n\t// ```\n\tlet lastDotIndex = domainIndex;\n\tdo {\n\t\tif (dotIndex - lastDotIndex > 63) return false;\n\n\t\tlastDotIndex = dotIndex + 1;\n\t} while ((dotIndex = email.indexOf('.', lastDotIndex)) !== -1);\n\n\t// The loop iterates from the first to the n - 1 part, this line checks for\n\t// the last (n) part:\n\tif (email.length - lastDotIndex > 63) return false;\n\n\t// 7.2. Character checks.\n\t//\n\t// From <account>@<domain>:\n\t// - Extract the <account> part by slicing the input from start to the @\n\t// character. Validate afterwards.\n\t// - Extract the <domain> part by slicing the input from the start of\n\t// <domain>. Validate afterwards.\n\t//\n\t// Note: we inline the variables so <domain> isn't created unless the\n\t// <account> check passes.\n\treturn accountRegex.test(email.slice(0, atIndex)) && validateEmailDomain(email.slice(domainIndex));\n}\n\nfunction validateEmailDomain(domain: string): boolean {\n\ttry {\n\t\treturn new URL(`http://${domain}`).hostname === domain;\n\t} catch {\n\t\treturn false;\n\t}\n}\n","/**\n * Code ported from https://github.com/nodejs/node/blob/5fad0b93667ffc6e4def52996b9529ac99b26319/lib/internal/net.js\n */\n\n// IPv4 Segment\nconst v4Seg = '(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])';\nconst v4Str = `(${v4Seg}[.]){3}${v4Seg}`;\nconst IPv4Reg = new RegExp(`^${v4Str}$`);\n\n// IPv6 Segment\nconst v6Seg = '(?:[0-9a-fA-F]{1,4})';\nconst IPv6Reg = new RegExp(\n\t'^(' +\n\t\t`(?:${v6Seg}:){7}(?:${v6Seg}|:)|` +\n\t\t`(?:${v6Seg}:){6}(?:${v4Str}|:${v6Seg}|:)|` +\n\t\t`(?:${v6Seg}:){5}(?::${v4Str}|(:${v6Seg}){1,2}|:)|` +\n\t\t`(?:${v6Seg}:){4}(?:(:${v6Seg}){0,1}:${v4Str}|(:${v6Seg}){1,3}|:)|` +\n\t\t`(?:${v6Seg}:){3}(?:(:${v6Seg}){0,2}:${v4Str}|(:${v6Seg}){1,4}|:)|` +\n\t\t`(?:${v6Seg}:){2}(?:(:${v6Seg}){0,3}:${v4Str}|(:${v6Seg}){1,5}|:)|` +\n\t\t`(?:${v6Seg}:){1}(?:(:${v6Seg}){0,4}:${v4Str}|(:${v6Seg}){1,6}|:)|` +\n\t\t`(?::((?::${v6Seg}){0,5}:${v4Str}|(?::${v6Seg}){1,7}|:))` +\n\t\t')(%[0-9a-zA-Z-.:]{1,})?$'\n);\n\nexport function isIPv4(s: string): boolean {\n\treturn IPv4Reg.test(s);\n}\n\nexport function isIPv6(s: string): boolean {\n\treturn IPv6Reg.test(s);\n}\n\nexport function isIP(s: string): number {\n\tif (isIPv4(s)) return 4;\n\tif (isIPv6(s)) return 6;\n\treturn 0;\n}\n","import { inspect, type InspectOptionsStylized } from 'util';\nimport { BaseConstraintError, type ConstraintErrorNames } from './BaseConstraintError';\nimport { customInspectSymbolStackLess } from './BaseError';\nimport type { MultiplePossibilitiesConstraintErrorJsonified } from './error-types';\n\nexport class MultiplePossibilitiesConstraintError<T = unknown> extends BaseConstraintError<T> {\n\tpublic readonly expected: readonly string[];\n\n\tpublic constructor(constraint: ConstraintErrorNames, message: string, given: T, expected: readonly string[]) {\n\t\tsuper(constraint, message, given);\n\t\tthis.expected = expected;\n\t}\n\n\tpublic override toJSON(): MultiplePossibilitiesConstraintErrorJsonified<T> {\n\t\treturn {\n\t\t\tname: this.name,\n\t\t\tmessage: this.message,\n\t\t\tconstraint: this.constraint,\n\t\t\tgiven: this.given,\n\t\t\texpected: this.expected\n\t\t};\n\t}\n\n\tprotected [customInspectSymbolStackLess](depth: number, options: InspectOptionsStylized): string {\n\t\tconst constraint = options.stylize(this.constraint, 'string');\n\t\tif (depth < 0) {\n\t\t\treturn options.stylize(`[MultiplePossibilitiesConstraintError: ${constraint}]`, 'special');\n\t\t}\n\n\t\tconst newOptions = { ...options, depth: options.depth === null ? null : options.depth! - 1 };\n\n\t\tconst verticalLine = options.stylize('|', 'undefined');\n\t\tconst padding = `\\n ${verticalLine} `;\n\t\tconst given = inspect(this.given, newOptions).replace(/\\n/g, padding);\n\n\t\tconst header = `${options.stylize('MultiplePossibilitiesConstraintError', 'special')} > ${constraint}`;\n\t\tconst message = options.stylize(this.message, 'regexp');\n\n\t\tconst expectedPadding = `\\n ${verticalLine} - `;\n\t\tconst expectedBlock = `\\n ${options.stylize('Expected any of the following:', 'string')}${expectedPadding}${this.expected\n\t\t\t.map((possible) => options.stylize(possible, 'boolean'))\n\t\t\t.join(expectedPadding)}`;\n\t\tconst givenBlock = `\\n ${options.stylize('Received:', 'regexp')}${padding}${given}`;\n\t\treturn `${header}\\n ${message}\\n${expectedBlock}\\n${givenBlock}`;\n\t}\n}\n","export function combinedErrorFn<P extends [...any], E extends Error>(...fns: ErrorFn<P, E>[]): ErrorFn<P, E> {\n\tswitch (fns.length) {\n\t\tcase 0:\n\t\t\treturn () => null;\n\t\tcase 1:\n\t\t\treturn fns[0];\n\t\tcase 2: {\n\t\t\tconst [fn0, fn1] = fns;\n\t\t\treturn (...params) => fn0(...params) || fn1(...params);\n\t\t}\n\t\tdefault: {\n\t\t\treturn (...params) => {\n\t\t\t\tfor (const fn of fns) {\n\t\t\t\t\tconst result = fn(...params);\n\t\t\t\t\tif (result) return result;\n\t\t\t\t}\n\n\t\t\t\treturn null;\n\t\t\t};\n\t\t}\n\t}\n}\n\nexport type ErrorFn<P extends [...any], E extends Error> = (...params: P) => E | null;\n","import { MultiplePossibilitiesConstraintError } from '../../lib/errors/MultiplePossibilitiesConstraintError';\nimport type { ValidatorOptions } from '../../lib/util-types';\nimport { combinedErrorFn, type ErrorFn } from './common/combinedResultFn';\n\nexport type StringProtocol = `${string}:`;\n\nexport type StringDomain = `${string}.${string}`;\n\nexport interface UrlOptions {\n\tallowedProtocols?: StringProtocol[];\n\tallowedDomains?: StringDomain[];\n}\n\nexport function createUrlValidators(options?: UrlOptions, validatorOptions?: ValidatorOptions) {\n\tconst fns: ErrorFn<[input: string, url: URL], MultiplePossibilitiesConstraintError<string>>[] = [];\n\n\tif (options?.allowedProtocols?.length) fns.push(allowedProtocolsFn(options.allowedProtocols, validatorOptions));\n\tif (options?.allowedDomains?.length) fns.push(allowedDomainsFn(options.allowedDomains, validatorOptions));\n\n\treturn combinedErrorFn(...fns);\n}\n\nfunction allowedProtocolsFn(allowedProtocols: StringProtocol[], options?: ValidatorOptions) {\n\treturn (input: string, url: URL) =>\n\t\tallowedProtocols.includes(url.protocol as StringProtocol)\n\t\t\t? null\n\t\t\t: new MultiplePossibilitiesConstraintError('s.string().url()', options?.message ?? 'Invalid URL protocol', input, allowedProtocols);\n}\n\nfunction allowedDomainsFn(allowedDomains: StringDomain[], options?: ValidatorOptions) {\n\treturn (input: string, url: URL) =>\n\t\tallowedDomains.includes(url.hostname as StringDomain)\n\t\t\t? null\n\t\t\t: new MultiplePossibilitiesConstraintError('s.string().url()', options?.message ?? 'Invalid URL domain', input, allowedDomains);\n}\n","import { ExpectedConstraintError } from '../lib/errors/ExpectedConstraintError';\nimport { Result } from '../lib/Result';\nimport type { ValidatorOptions } from '../lib/util-types';\nimport type { IConstraint } from './base/IConstraint';\nimport { validateEmail } from './util/emailValidator';\nimport { isIP, isIPv4, isIPv6 } from './util/net';\nimport { equal, greaterThan, greaterThanOrEqual, lessThan, lessThanOrEqual, notEqual, type Comparator } from './util/operators';\nimport { validatePhoneNumber } from './util/phoneValidator';\nimport { createUrlValidators } from './util/urlValidators';\n\nexport type StringConstraintName = `s.string().${\n\t| `length${'LessThan' | 'LessThanOrEqual' | 'GreaterThan' | 'GreaterThanOrEqual' | 'Equal' | 'NotEqual'}`\n\t| 'regex'\n\t| 'url'\n\t| 'uuid'\n\t| 'email'\n\t| `ip${'v4' | 'v6' | ''}`\n\t| 'date'\n\t| 'phone'}()`;\n\nexport type StringProtocol = `${string}:`;\n\nexport type StringDomain = `${string}.${string}`;\n\nexport interface UrlOptions {\n\tallowedProtocols?: StringProtocol[];\n\tallowedDomains?: StringDomain[];\n}\n\nexport type UUIDVersion = 1 | 3 | 4 | 5;\n\nexport interface StringUuidOptions {\n\tversion?: UUIDVersion | `${UUIDVersion}-${UUIDVersion}` | null;\n\tnullable?: boolean;\n}\n\nfunction stringLengthComparator(\n\tcomparator: Comparator,\n\tname: StringConstraintName,\n\texpected: string,\n\tlength: number,\n\toptions?: ValidatorOptions\n): IConstraint<string> {\n\treturn {\n\t\trun(input: string) {\n\t\t\treturn comparator(input.length, length) //\n\t\t\t\t? Result.ok(input)\n\t\t\t\t: Result.err(new ExpectedConstraintError(name, options?.message ?? 'Invalid string length', input, expected));\n\t\t}\n\t};\n}\n\nexport function stringLengthLessThan(length: number, options?: ValidatorOptions): IConstraint<string> {\n\tconst expected = `expected.length < ${length}`;\n\treturn stringLengthComparator(lessThan, 's.string().lengthLessThan()', expected, length, options);\n}\n\nexport function stringLengthLessThanOrEqual(length: number, options?: ValidatorOptions): IConstraint<string> {\n\tconst expected = `expected.length <= ${length}`;\n\treturn stringLengthComparator(lessThanOrEqual, 's.string().lengthLessThanOrEqual()', expected, length, options);\n}\n\nexport function stringLengthGreaterThan(length: number, options?: ValidatorOptions): IConstraint<string> {\n\tconst expected = `expected.length > ${length}`;\n\treturn stringLengthComparator(greaterThan, 's.string().lengthGreaterThan()', expected, length, options);\n}\n\nexport function stringLengthGreaterThanOrEqual(length: number, options?: ValidatorOptions): IConstraint<string> {\n\tconst expected = `expected.length >= ${length}`;\n\treturn stringLengthComparator(greaterThanOrEqual, 's.string().lengthGreaterThanOrEqual()', expected, length, options);\n}\n\nexport function stringLengthEqual(length: number, options?: ValidatorOptions): IConstraint<string> {\n\tconst expected = `expected.length === ${length}`;\n\treturn stringLengthComparator(equal, 's.string().lengthEqual()', expected, length, options);\n}\n\nexport function stringLengthNotEqual(length: number, options?: ValidatorOptions): IConstraint<string> {\n\tconst expected = `expected.length !== ${length}`;\n\treturn stringLengthComparator(notEqual, 's.string().lengthNotEqual()', expected, length, options);\n}\n\nexport function stringEmail(options?: ValidatorOptions): IConstraint<string> {\n\treturn {\n\t\trun(input: string) {\n\t\t\treturn validateEmail(input)\n\t\t\t\t? Result.ok(input)\n\t\t\t\t: Result.err(\n\t\t\t\t\t\tnew ExpectedConstraintError(\n\t\t\t\t\t\t\t's.string().email()',\n\t\t\t\t\t\t\toptions?.message ?? 'Invalid email address',\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\t'expected to be an email address'\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\t\t}\n\t};\n}\n\nfunction stringRegexValidator(type: StringConstraintName, expected: string, regex: RegExp, options?: ValidatorOptions): IConstraint<string> {\n\treturn {\n\t\trun(input: string) {\n\t\t\treturn regex.test(input) //\n\t\t\t\t? Result.ok(input)\n\t\t\t\t: Result.err(new ExpectedConstraintError(type, options?.message ?? 'Invalid string format', input, expected));\n\t\t}\n\t};\n}\n\nexport function stringUrl(options?: UrlOptions, validatorOptions?: ValidatorOptions): IConstraint<string> {\n\tconst validatorFn = createUrlValidators(options, validatorOptions);\n\treturn {\n\t\trun(input: string) {\n\t\t\tlet url: URL;\n\t\t\ttry {\n\t\t\t\turl = new URL(input);\n\t\t\t} catch {\n\t\t\t\treturn Result.err(\n\t\t\t\t\tnew ExpectedConstraintError('s.string().url()', validatorOptions?.message ?? 'Invalid URL', input, 'expected to match a URL')\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst validatorFnResult = validatorFn(input, url);\n\t\t\tif (validatorFnResult === null) return Result.ok(input);\n\t\t\treturn Result.err(validatorFnResult);\n\t\t}\n\t};\n}\n\nexport function stringIp(version?: 4 | 6, options?: ValidatorOptions): IConstraint<string> {\n\tconst ipVersion = version ? (`v${version}` as const) : '';\n\tconst validatorFn = version === 4 ? isIPv4 : version === 6 ? isIPv6 : isIP;\n\n\tconst name = `s.string().ip${ipVersion}()` as const;\n\tconst message = `Invalid IP${ipVersion} address`;\n\tconst expected = `expected to be an IP${ipVersion} address`;\n\treturn {\n\t\trun(input: string) {\n\t\t\treturn validatorFn(input)\n\t\t\t\t? Result.ok(input)\n\t\t\t\t: Result.err(new ExpectedConstraintError(name, options?.message ?? message, input, expected));\n\t\t}\n\t};\n}\n\nexport function stringRegex(regex: RegExp, options?: ValidatorOptions) {\n\treturn stringRegexValidator('s.string().regex()', `expected ${regex}.test(expected) to be true`, regex, options);\n}\n\nexport function stringUuid({ version = 4, nullable = false }: StringUuidOptions = {}, options?: ValidatorOptions) {\n\tversion ??= '1-5';\n\tconst regex = new RegExp(\n\t\t`^(?:[0-9A-F]{8}-[0-9A-F]{4}-[${version}][0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}${\n\t\t\tnullable ? '|00000000-0000-0000-0000-000000000000' : ''\n\t\t})$`,\n\t\t'i'\n\t);\n\tconst expected = `expected to match UUID${typeof version === 'number' ? `v${version}` : ` in range of ${version}`}`;\n\treturn stringRegexValidator('s.string().uuid()', expected, regex, options);\n}\n\nexport function stringDate(options?: ValidatorOptions): IConstraint<string> {\n\treturn {\n\t\trun(input: string) {\n\t\t\tconst time = Date.parse(input);\n\n\t\t\treturn Number.isNaN(time)\n\t\t\t\t? Result.err(\n\t\t\t\t\t\tnew ExpectedConstraintError(\n\t\t\t\t\t\t\t's.string().date()',\n\t\t\t\t\t\t\toptions?.message ?? 'Invalid date string',\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\t'expected to be a valid date string (in the ISO 8601 or ECMA-262 format)'\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t: Result.ok(input);\n\t\t}\n\t};\n}\n\nexport function stringPhone(options?: ValidatorOptions): IConstraint<string> {\n\treturn {\n\t\trun(input: string) {\n\t\t\treturn validatePhoneNumber(input)\n\t\t\t\t? Result.ok(input)\n\t\t\t\t: Result.err(\n\t\t\t\t\t\tnew ExpectedConstraintError(\n\t\t\t\t\t\t\t's.string().phone()',\n\t\t\t\t\t\t\toptions?.message ?? 'Invalid phone number',\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\t'expected to be a phone number'\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\t\t}\n\t};\n}\n","import { UnknownEnumValueError } from '../lib/errors/UnknownEnumValueError';\nimport { ValidationError } from '../lib/errors/ValidationError';\nimport { Result } from '../lib/Result';\nimport type { ValidatorOptions } from '../lib/util-types';\nimport { BaseValidator } from './imports';\n\nexport class NativeEnumValidator<T extends NativeEnumLike> extends BaseValidator<T[keyof T]> {\n\tpublic readonly enumShape: T;\n\tpublic readonly hasNumericElements: boolean = false;\n\tprivate readonly enumKeys: string[];\n\tprivate readonly enumMapping = new Map<string | number, T[keyof T]>();\n\n\tpublic constructor(enumShape: T, validatorOptions: ValidatorOptions = {}) {\n\t\tsuper(validatorOptions);\n\t\tthis.enumShape = enumShape;\n\n\t\tthis.enumKeys = Object.keys(enumShape).filter((key) => {\n\t\t\treturn typeof enumShape[enumShape[key]] !== 'number';\n\t\t});\n\n\t\tfor (const key of this.enumKeys) {\n\t\t\tconst enumValue = enumShape[key] as T[keyof T];\n\n\t\t\tthis.enumMapping.set(key, enumValue);\n\t\t\tthis.enumMapping.set(enumValue, enumValue);\n\n\t\t\tif (typeof enumValue === 'number') {\n\t\t\t\tthis.hasNumericElements = true;\n\t\t\t\tthis.enumMapping.set(`${enumValue}`, enumValue);\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected override handle(value: unknown): Result<T[keyof T], ValidationError | UnknownEnumValueError> {\n\t\tconst typeOfValue = typeof value;\n\n\t\tif (typeOfValue === 'number') {\n\t\t\tif (!this.hasNumericElements) {\n\t\t\t\treturn Result.err(\n\t\t\t\t\tnew ValidationError('s.nativeEnum(T)', this.validatorOptions.message ?? 'Expected the value to be a string', value)\n\t\t\t\t);\n\t\t\t}\n\t\t} else if (typeOfValue !== 'string') {\n\t\t\t// typeOfValue !== 'number' is implied here\n\t\t\treturn Result.err(\n\t\t\t\tnew ValidationError('s.nativeEnum(T)', this.validatorOptions.message ?? 'Expected the value to be a string or number', value)\n\t\t\t);\n\t\t}\n\n\t\tconst casted = value as string | number;\n\n\t\tconst possibleEnumValue = this.enumMapping.get(casted);\n\n\t\treturn typeof possibleEnumValue === 'undefined'\n\t\t\t? Result.err(new UnknownEnumValueError(casted, this.enumKeys, this.enumMapping, this.validatorOptions))\n\t\t\t: Result.ok(possibleEnumValue);\n\t}\n\n\tprotected override clone(): this {\n\t\treturn Reflect.construct(this.constructor, [this.enumShape, this.validatorOptions]);\n\t}\n}\n\nexport interface NativeEnumLike {\n\t[key: string]: string | number;\n\t[key: number]: string;\n}\n","import { ExpectedConstraintError } from '../lib/errors/ExpectedConstraintError';\nimport { Result } from '../lib/Result';\nimport type { ValidatorOptions } from '../lib/util-types';\nimport type { IConstraint } from './base/IConstraint';\nimport { equal, greaterThan, greaterThanOrEqual, lessThan, lessThanOrEqual, notEqual, type Comparator } from './util/operators';\nimport type { TypedArray } from './util/typedArray';\n\nexport type TypedArrayConstraintName = `s.typedArray(T).${'byteLength' | 'length'}${\n\t| 'LessThan'\n\t| 'LessThanOrEqual'\n\t| 'GreaterThan'\n\t| 'GreaterThanOrEqual'\n\t| 'Equal'\n\t| 'NotEqual'\n\t| 'Range'\n\t| 'RangeInclusive'\n\t| 'RangeExclusive'}()`;\n\nfunction typedArrayByteLengthComparator<T extends TypedArray>(\n\tcomparator: Comparator,\n\tname: TypedArrayConstraintName,\n\texpected: string,\n\tlength: number,\n\toptions?: ValidatorOptions\n): IConstraint<T> {\n\treturn {\n\t\trun(input: T) {\n\t\t\treturn comparator(input.byteLength, length) //\n\t\t\t\t? Result.ok(input)\n\t\t\t\t: Result.err(new ExpectedConstraintError(name, options?.message ?? 'Invalid Typed Array byte length', input, expected));\n\t\t}\n\t};\n}\n\nexport function typedArrayByteLengthLessThan<T extends TypedArray>(value: number, options?: ValidatorOptions): IConstraint<T> {\n\tconst expected = `expected.byteLength < ${value}`;\n\treturn typedArrayByteLengthComparator(lessThan, 's.typedArray(T).byteLengthLessThan()', expected, value, options);\n}\n\nexport function typedArrayByteLengthLessThanOrEqual<T extends TypedArray>(value: number, options?: ValidatorOptions): IConstraint<T> {\n\tconst expected = `expected.byteLength <= ${value}`;\n\treturn typedArrayByteLengthComparator(lessThanOrEqual, 's.typedArray(T).byteLengthLessThanOrEqual()', expected, value, options);\n}\n\nexport function typedArrayByteLengthGreaterThan<T extends TypedArray>(value: number, options?: ValidatorOptions): IConstraint<T> {\n\tconst expected = `expected.byteLength > ${value}`;\n\treturn typedArrayByteLengthComparator(greaterThan, 's.typedArray(T).byteLengthGreaterThan()', expected, value, options);\n}\n\nexport function typedArrayByteLengthGreaterThanOrEqual<T extends TypedArray>(value: number, options?: ValidatorOptions): IConstraint<T> {\n\tconst expected = `expected.byteLength >= ${value}`;\n\treturn typedArrayByteLengthComparator(greaterThanOrEqual, 's.typedArray(T).byteLengthGreaterThanOrEqual()', expected, value, options);\n}\n\nexport function typedArrayByteLengthEqual<T extends TypedArray>(value: number, options?: ValidatorOptions): IConstraint<T> {\n\tconst expected = `expected.byteLength === ${value}`;\n\treturn typedArrayByteLengthComparator(equal, 's.typedArray(T).byteLengthEqual()', expected, value, options);\n}\n\nexport function typedArrayByteLengthNotEqual<T extends TypedArray>(value: number, options?: ValidatorOptions): IConstraint<T> {\n\tconst expected = `expected.byteLength !== ${value}`;\n\treturn typedArrayByteLengthComparator(notEqual, 's.typedArray(T).byteLengthNotEqual()', expected, value, options);\n}\n\nexport function typedArrayByteLengthRange<T extends TypedArray>(start: number, endBefore: number, options?: ValidatorOptions): IConstraint<T> {\n\tconst expected = `expected.byteLength >= ${start} && expected.byteLength < ${endBefore}`;\n\treturn {\n\t\trun(input: T) {\n\t\t\treturn input.byteLength >= start && input.byteLength < endBefore //\n\t\t\t\t? Result.ok(input)\n\t\t\t\t: Result.err(\n\t\t\t\t\t\tnew ExpectedConstraintError(\n\t\t\t\t\t\t\t's.typedArray(T).byteLengthRange()',\n\t\t\t\t\t\t\toptions?.message ?? 'Invalid Typed Array byte length',\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\texpected\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\t\t}\n\t};\n}\n\nexport function typedArrayByteLengthRangeInclusive<T extends TypedArray>(start: number, end: number, options?: ValidatorOptions) {\n\tconst expected = `expected.byteLength >= ${start} && expected.byteLength <= ${end}`;\n\treturn {\n\t\trun(input: T) {\n\t\t\treturn input.byteLength >= start && input.byteLength <= end //\n\t\t\t\t? Result.ok(input)\n\t\t\t\t: Result.err(\n\t\t\t\t\t\tnew ExpectedConstraintError(\n\t\t\t\t\t\t\t's.typedArray(T).byteLengthRangeInclusive()',\n\t\t\t\t\t\t\toptions?.message ?? 'Invalid Typed Array byte length',\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\texpected\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\t\t}\n\t};\n}\n\nexport function typedArrayByteLengthRangeExclusive<T extends TypedArray>(\n\tstartAfter: number,\n\tendBefore: number,\n\toptions?: ValidatorOptions\n): IConstraint<T> {\n\tconst expected = `expected.byteLength > ${startAfter} && expected.byteLength < ${endBefore}`;\n\treturn {\n\t\trun(input: T) {\n\t\t\treturn input.byteLength > startAfter && input.byteLength < endBefore //\n\t\t\t\t? Result.ok(input)\n\t\t\t\t: Result.err(\n\t\t\t\t\t\tnew ExpectedConstraintError(\n\t\t\t\t\t\t\t's.typedArray(T).byteLengthRangeExclusive()',\n\t\t\t\t\t\t\toptions?.message ?? 'Invalid Typed Array byte length',\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\texpected\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\t\t}\n\t};\n}\n\nfunction typedArrayLengthComparator<T extends TypedArray>(\n\tcomparator: Comparator,\n\tname: TypedArrayConstraintName,\n\texpected: string,\n\tlength: number,\n\toptions?: ValidatorOptions\n): IConstraint<T> {\n\treturn {\n\t\trun(input: T) {\n\t\t\treturn comparator(input.length, length) //\n\t\t\t\t? Result.ok(input)\n\t\t\t\t: Result.err(new ExpectedConstraintError(name, options?.message ?? 'Invalid Typed Array length', input, expected));\n\t\t}\n\t};\n}\n\nexport function typedArrayLengthLessThan<T extends TypedArray>(value: number, options?: ValidatorOptions): IConstraint<T> {\n\tconst expected = `expected.length < ${value}`;\n\treturn typedArrayLengthComparator(lessThan, 's.typedArray(T).lengthLessThan()', expected, value, options);\n}\n\nexport function typedArrayLengthLessThanOrEqual<T extends TypedArray>(value: number, options?: ValidatorOptions): IConstraint<T> {\n\tconst expected = `expected.length <= ${value}`;\n\treturn typedArrayLengthComparator(lessThanOrEqual, 's.typedArray(T).lengthLessThanOrEqual()', expected, value, options);\n}\n\nexport function typedArrayLengthGreaterThan<T extends TypedArray>(value: number, options?: ValidatorOptions): IConstraint<T> {\n\tconst expected = `expected.length > ${value}`;\n\treturn typedArrayLengthComparator(greaterThan, 's.typedArray(T).lengthGreaterThan()', expected, value, options);\n}\n\nexport function typedArrayLengthGreaterThanOrEqual<T extends TypedArray>(value: number, options?: ValidatorOptions): IConstraint<T> {\n\tconst expected = `expected.length >= ${value}`;\n\treturn typedArrayLengthComparator(greaterThanOrEqual, 's.typedArray(T).lengthGreaterThanOrEqual()', expected, value, options);\n}\n\nexport function typedArrayLengthEqual<T extends TypedArray>(value: number, options?: ValidatorOptions): IConstraint<T> {\n\tconst expected = `expected.length === ${value}`;\n\treturn typedArrayLengthComparator(equal, 's.typedArray(T).lengthEqual()', expected, value, options);\n}\n\nexport function typedArrayLengthNotEqual<T extends TypedArray>(value: number, options?: ValidatorOptions): IConstraint<T> {\n\tconst expected = `expected.length !== ${value}`;\n\treturn typedArrayLengthComparator(notEqual, 's.typedArray(T).lengthNotEqual()', expected, value, options);\n}\n\nexport function typedArrayLengthRange<T extends TypedArray>(start: number, endBefore: number, options?: ValidatorOptions): IConstraint<T> {\n\tconst expected = `expected.length >= ${start} && expected.length < ${endBefore}`;\n\treturn {\n\t\trun(input: T) {\n\t\t\treturn input.length >= start && input.length < endBefore //\n\t\t\t\t? Result.ok(input)\n\t\t\t\t: Result.err(\n\t\t\t\t\t\tnew ExpectedConstraintError(\n\t\t\t\t\t\t\t's.typedArray(T).lengthRange()',\n\t\t\t\t\t\t\toptions?.message ?? 'Invalid Typed Array length',\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\texpected\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\t\t}\n\t};\n}\n\nexport function typedArrayLengthRangeInclusive<T extends TypedArray>(start: number, end: number, options?: ValidatorOptions): IConstraint<T> {\n\tconst expected = `expected.length >= ${start} && expected.length <= ${end}`;\n\treturn {\n\t\trun(input: T) {\n\t\t\treturn input.length >= start && input.length <= end //\n\t\t\t\t? Result.ok(input)\n\t\t\t\t: Result.err(\n\t\t\t\t\t\tnew ExpectedConstraintError(\n\t\t\t\t\t\t\t's.typedArray(T).lengthRangeInclusive()',\n\t\t\t\t\t\t\toptions?.message ?? 'Invalid Typed Array length',\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\texpected\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\t\t}\n\t};\n}\n\nexport function typedArrayLengthRangeExclusive<T extends TypedArray>(\n\tstartAfter: number,\n\tendBefore: number,\n\toptions?: ValidatorOptions\n): IConstraint<T> {\n\tconst expected = `expected.length > ${startAfter} && expected.length < ${endBefore}`;\n\treturn {\n\t\trun(input: T) {\n\t\t\treturn input.length > startAfter && input.length < endBefore //\n\t\t\t\t? Result.ok(input)\n\t\t\t\t: Result.err(\n\t\t\t\t\t\tnew ExpectedConstraintError(\n\t\t\t\t\t\t\t's.typedArray(T).lengthRangeExclusive()',\n\t\t\t\t\t\t\toptions?.message ?? 'Invalid Typed Array length',\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\texpected\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\t\t}\n\t};\n}\n","import './chunk-ce0fbc82.js';\nimport { X } from './chunk-b4205b57.js';\nexport { X as default } from './chunk-b4205b57.js';\nimport './chunk-5decc758.js';\n\nvar _extend = X._extend;\r\nvar callbackify = X.callbackify;\r\nvar debuglog = X.debuglog;\r\nvar deprecate = X.deprecate;\r\nvar format = X.format;\r\nvar inherits = X.inherits;\r\nvar inspect = X.inspect;\r\nvar isArray = X.isArray;\r\nvar isBoolean = X.isBoolean;\r\nvar isBuffer = X.isBuffer;\r\nvar isDate = X.isDate;\r\nvar isError = X.isError;\r\nvar isFunction = X.isFunction;\r\nvar isNull = X.isNull;\r\nvar isNullOrUndefined = X.isNullOrUndefined;\r\nvar isNumber = X.isNumber;\r\nvar isObject = X.isObject;\r\nvar isPrimitive = X.isPrimitive;\r\nvar isRegExp = X.isRegExp;\r\nvar isString = X.isString;\r\nvar isSymbol = X.isSymbol;\r\nvar isUndefined = X.isUndefined;\r\nvar log = X.log;\r\nvar promisify = X.promisify;\r\nvar types = X.types;\r\n\r\nconst TextEncoder = X.TextEncoder = globalThis.TextEncoder;\r\nconst TextDecoder = X.TextDecoder = globalThis.TextDecoder;\n\nexport { TextDecoder, TextEncoder, _extend, callbackify, debuglog, deprecate, format, inherits, inspect, isArray, isBoolean, isBuffer, isDate, isError, isFunction, isNull, isNullOrUndefined, isNumber, isObject, isPrimitive, isRegExp, isString, isSymbol, isUndefined, log, promisify, types };\n","import type { InspectOptionsStylized } from 'util';\nimport type { BaseErrorJsonified } from './error-types';\n\nexport const customInspectSymbol = Symbol.for('nodejs.util.inspect.custom');\nexport const customInspectSymbolStackLess = Symbol.for('nodejs.util.inspect.custom.stack-less');\n\nexport abstract class BaseError extends Error {\n\tpublic toJSON(): BaseErrorJsonified {\n\t\treturn {\n\t\t\tname: this.name,\n\t\t\tmessage: this.message\n\t\t};\n\t}\n\n\tprotected [customInspectSymbol](depth: number, options: InspectOptionsStylized) {\n\t\treturn `${this[customInspectSymbolStackLess](depth, options)}\\n${this.stack!.slice(this.stack!.indexOf('\\n'))}`;\n\t}\n\n\tprotected abstract [customInspectSymbolStackLess](depth: number, options: InspectOptionsStylized): string;\n}\n","import type {\n\tArrayConstraintName,\n\tBigIntConstraintName,\n\tBooleanConstraintName,\n\tDateConstraintName,\n\tNumberConstraintName,\n\tObjectConstraintName,\n\tStringConstraintName,\n\tTypedArrayConstraintName\n} from '../../constraints/type-exports';\nimport { BaseError } from './BaseError';\nimport type { BaseConstraintErrorJsonified } from './error-types';\n\nexport type ConstraintErrorNames =\n\t| TypedArrayConstraintName\n\t| ArrayConstraintName\n\t| BigIntConstraintName\n\t| BooleanConstraintName\n\t| DateConstraintName\n\t| NumberConstraintName\n\t| ObjectConstraintName\n\t| StringConstraintName;\n\nexport abstract class BaseConstraintError<T = unknown> extends BaseError {\n\tpublic readonly constraint: ConstraintErrorNames;\n\tpublic readonly given: T;\n\n\tpublic constructor(constraint: ConstraintErrorNames, message: string, given: T) {\n\t\tsuper(message);\n\t\tthis.constraint = constraint;\n\t\tthis.given = given;\n\t}\n\n\tpublic override toJSON(): BaseConstraintErrorJsonified<T> {\n\t\treturn {\n\t\t\tname: this.name,\n\t\t\tconstraint: this.constraint,\n\t\t\tgiven: this.given,\n\t\t\tmessage: this.message\n\t\t};\n\t}\n}\n","import { inspect, type InspectOptionsStylized } from 'util';\nimport { BaseConstraintError, type ConstraintErrorNames } from './BaseConstraintError';\nimport { customInspectSymbolStackLess } from './BaseError';\nimport type { ExpectedConstraintErrorJsonified } from './error-types';\n\nexport class ExpectedConstraintError<T = unknown> extends BaseConstraintError<T> {\n\tpublic readonly expected: string;\n\n\tpublic constructor(constraint: ConstraintErrorNames, message: string, given: T, expected: string) {\n\t\tsuper(constraint, message, given);\n\t\tthis.expected = expected;\n\t}\n\n\tpublic override toJSON(): ExpectedConstraintErrorJsonified<T> {\n\t\treturn {\n\t\t\tname: this.name,\n\t\t\tconstraint: this.constraint,\n\t\t\tgiven: this.given,\n\t\t\texpected: this.expected,\n\t\t\tmessage: this.message\n\t\t};\n\t}\n\n\tprotected [customInspectSymbolStackLess](depth: number, options: InspectOptionsStylized): string {\n\t\tconst constraint = options.stylize(this.constraint, 'string');\n\t\tif (depth < 0) {\n\t\t\treturn options.stylize(`[ExpectedConstraintError: ${constraint}]`, 'special');\n\t\t}\n\n\t\tconst newOptions = { ...options, depth: options.depth === null ? null : options.depth! - 1 };\n\n\t\tconst padding = `\\n ${options.stylize('|', 'undefined')} `;\n\t\tconst given = inspect(this.given, newOptions).replace(/\\n/g, padding);\n\n\t\tconst header = `${options.stylize('ExpectedConstraintError', 'special')} > ${constraint}`;\n\t\tconst message = options.stylize(this.message, 'regexp');\n\t\tconst expectedBlock = `\\n ${options.stylize('Expected: ', 'string')}${options.stylize(this.expected, 'boolean')}`;\n\t\tconst givenBlock = `\\n ${options.stylize('Received:', 'regexp')}${padding}${given}`;\n\t\treturn `${header}\\n ${message}\\n${expectedBlock}\\n${givenBlock}`;\n\t}\n}\n","export class Result<T, E extends Error = Error> {\n\tpublic readonly success: boolean;\n\tpublic readonly value?: T;\n\tpublic readonly error?: E;\n\n\tprivate constructor(success: boolean, value?: T, error?: E) {\n\t\tthis.success = success;\n\t\tif (success) {\n\t\t\tthis.value = value;\n\t\t} else {\n\t\t\tthis.error = error;\n\t\t}\n\t}\n\n\tpublic isOk(): this is { success: true; value: T } {\n\t\treturn this.success;\n\t}\n\n\tpublic isErr(): this is { success: false; error: E } {\n\t\treturn !this.success;\n\t}\n\n\tpublic unwrap(): T {\n\t\tif (this.isOk()) return this.value;\n\t\tthrow this.error as Error;\n\t}\n\n\tpublic static ok<T, E extends Error = Error>(value: T): Result<T, E> {\n\t\treturn new Result<T, E>(true, value);\n\t}\n\n\tpublic static err<T, E extends Error = Error>(error: E): Result<T, E> {\n\t\treturn new Result<T, E>(false, undefined, error);\n\t}\n}\n","import type { InspectOptionsStylized } from 'util';\nimport type { ValidatorOptions } from '../util-types';\nimport { BaseError, customInspectSymbolStackLess } from './BaseError';\n\nexport class CombinedPropertyError extends BaseError {\n\tpublic readonly errors: [PropertyKey, BaseError][];\n\n\tpublic constructor(errors: [PropertyKey, BaseError][], validatorOptions?: ValidatorOptions) {\n\t\tsuper(validatorOptions?.message ?? 'Received one or more errors');\n\n\t\tthis.errors = errors;\n\t}\n\n\tprotected [customInspectSymbolStackLess](depth: number, options: InspectOptionsStylized): string {\n\t\tif (depth < 0) {\n\t\t\treturn options.stylize('[CombinedPropertyError]', 'special');\n\t\t}\n\n\t\tconst newOptions = { ...options, depth: options.depth === null ? null : options.depth! - 1, compact: true };\n\n\t\tconst padding = `\\n ${options.stylize('|', 'undefined')} `;\n\n\t\tconst header = `${options.stylize('CombinedPropertyError', 'special')} (${options.stylize(this.errors.length.toString(), 'number')})`;\n\t\tconst message = options.stylize(this.message, 'regexp');\n\t\tconst errors = this.errors\n\t\t\t.map(([key, error]) => {\n\t\t\t\tconst property = CombinedPropertyError.formatProperty(key, options);\n\t\t\t\tconst body = error[customInspectSymbolStackLess](depth - 1, newOptions).replace(/\\n/g, padding);\n\n\t\t\t\treturn ` input${property}${padding}${body}`;\n\t\t\t})\n\t\t\t.join('\\n\\n');\n\t\treturn `${header}\\n ${message}\\n\\n${errors}`;\n\t}\n\n\tprivate static formatProperty(key: PropertyKey, options: InspectOptionsStylized): string {\n\t\tif (typeof key === 'string') return options.stylize(`.${key}`, 'symbol');\n\t\tif (typeof key === 'number') return `[${options.stylize(key.toString(), 'number')}]`;\n\t\treturn `[${options.stylize('Symbol', 'symbol')}(${key.description})]`;\n\t}\n}\n","import { inspect, type InspectOptionsStylized } from 'util';\nimport { BaseError, customInspectSymbolStackLess } from './BaseError';\nimport type { ValidationErrorJsonified } from './error-types';\n\nexport class ValidationError extends BaseError {\n\tpublic readonly validator: string;\n\tpublic readonly given: unknown;\n\n\tpublic constructor(validator: string, message: string, given: unknown) {\n\t\tsuper(message);\n\n\t\tthis.validator = validator;\n\t\tthis.given = given;\n\t}\n\n\tpublic override toJSON(): ValidationErrorJsonified {\n\t\treturn {\n\t\t\tname: this.name,\n\t\t\tmessage: 'Unknown validation error occurred.',\n\t\t\tvalidator: this.validator,\n\t\t\tgiven: this.given\n\t\t};\n\t}\n\n\tprotected [customInspectSymbolStackLess](depth: number, options: InspectOptionsStylized): string {\n\t\tconst validator = options.stylize(this.validator, 'string');\n\t\tif (depth < 0) {\n\t\t\treturn options.stylize(`[ValidationError: ${validator}]`, 'special');\n\t\t}\n\n\t\tconst newOptions = { ...options, depth: options.depth === null ? null : options.depth! - 1, compact: true };\n\n\t\tconst padding = `\\n ${options.stylize('|', 'undefined')} `;\n\t\tconst given = inspect(this.given, newOptions).replace(/\\n/g, padding);\n\n\t\tconst header = `${options.stylize('ValidationError', 'special')} > ${validator}`;\n\t\tconst message = options.stylize(this.message, 'regexp');\n\t\tconst givenBlock = `\\n ${options.stylize('Received:', 'regexp')}${padding}${given}`;\n\t\treturn `${header}\\n ${message}\\n${givenBlock}`;\n\t}\n}\n","import {\n\tdateEqual,\n\tdateGreaterThan,\n\tdateGreaterThanOrEqual,\n\tdateInvalid,\n\tdateLessThan,\n\tdateLessThanOrEqual,\n\tdateNotEqual,\n\tdateValid\n} from '../constraints/DateConstraints';\nimport { ValidationError } from '../lib/errors/ValidationError';\nimport { Result } from '../lib/Result';\nimport type { ValidatorOptions } from '../lib/util-types';\nimport { BaseValidator } from './imports';\n\nexport class DateValidator extends BaseValidator<Date> {\n\tpublic lessThan(date: Date | number | string, options: ValidatorOptions = this.validatorOptions): this {\n\t\treturn this.addConstraint(dateLessThan(new Date(date), options));\n\t}\n\n\tpublic lessThanOrEqual(date: Date | number | string, options: ValidatorOptions = this.validatorOptions): this {\n\t\treturn this.addConstraint(dateLessThanOrEqual(new Date(date), options));\n\t}\n\n\tpublic greaterThan(date: Date | number | string, options: ValidatorOptions = this.validatorOptions): this {\n\t\treturn this.addConstraint(dateGreaterThan(new Date(date), options));\n\t}\n\n\tpublic greaterThanOrEqual(date: Date | number | string, options: ValidatorOptions = this.validatorOptions): this {\n\t\treturn this.addConstraint(dateGreaterThanOrEqual(new Date(date), options));\n\t}\n\n\tpublic equal(date: Date | number | string, options: ValidatorOptions = this.validatorOptions): this {\n\t\tconst resolved = new Date(date);\n\t\treturn Number.isNaN(resolved.getTime()) //\n\t\t\t? this.invalid(options)\n\t\t\t: this.addConstraint(dateEqual(resolved, options));\n\t}\n\n\tpublic notEqual(date: Date | number | string, options: ValidatorOptions = this.validatorOptions): this {\n\t\tconst resolved = new Date(date);\n\t\treturn Number.isNaN(resolved.getTime()) //\n\t\t\t? this.valid(options)\n\t\t\t: this.addConstraint(dateNotEqual(resolved, options));\n\t}\n\n\tpublic valid(options: ValidatorOptions = this.validatorOptions): this {\n\t\treturn this.addConstraint(dateValid(options));\n\t}\n\n\tpublic invalid(options: ValidatorOptions = this.validatorOptions): this {\n\t\treturn this.addConstraint(dateInvalid(options));\n\t}\n\n\tprotected handle(value: unknown): Result<Date, ValidationError> {\n\t\treturn value instanceof Date //\n\t\t\t? Result.ok(value)\n\t\t\t: Result.err(new ValidationError('s.date()', this.validatorOptions.message ?? 'Expected a Date', value));\n\t}\n}\n","import { inspect, type InspectOptionsStylized } from 'util';\nimport { customInspectSymbolStackLess } from './BaseError';\nimport type { ExpectedValidationErrorJsonified } from './error-types';\nimport { ValidationError } from './ValidationError';\n\nexport class ExpectedValidationError<T> extends ValidationError {\n\tpublic readonly expected: T;\n\n\tpublic constructor(validator: string, message: string, given: unknown, expected: T) {\n\t\tsuper(validator, message, given);\n\t\tthis.expected = expected;\n\t}\n\n\tpublic override toJSON(): ExpectedValidationErrorJsonified<T> {\n\t\treturn {\n\t\t\tname: this.name,\n\t\t\tvalidator: this.validator,\n\t\t\tgiven: this.given,\n\t\t\texpected: this.expected,\n\t\t\tmessage: this.message\n\t\t};\n\t}\n\n\tprotected [customInspectSymbolStackLess](depth: number, options: InspectOptionsStylized): string {\n\t\tconst validator = options.stylize(this.validator, 'string');\n\t\tif (depth < 0) {\n\t\t\treturn options.stylize(`[ExpectedValidationError: ${validator}]`, 'special');\n\t\t}\n\n\t\tconst newOptions = { ...options, depth: options.depth === null ? null : options.depth! - 1 };\n\n\t\tconst padding = `\\n ${options.stylize('|', 'undefined')} `;\n\t\tconst expected = inspect(this.expected, newOptions).replace(/\\n/g, padding);\n\t\tconst given = inspect(this.given, newOptions).replace(/\\n/g, padding);\n\n\t\tconst header = `${options.stylize('ExpectedValidationError', 'special')} > ${validator}`;\n\t\tconst message = options.stylize(this.message, 'regexp');\n\t\tconst expectedBlock = `\\n ${options.stylize('Expected:', 'string')}${padding}${expected}`;\n\t\tconst givenBlock = `\\n ${options.stylize('Received:', 'regexp')}${padding}${given}`;\n\t\treturn `${header}\\n ${message}\\n${expectedBlock}\\n${givenBlock}`;\n\t}\n}\n","import type { IConstraint } from '../constraints/base/IConstraint';\nimport { ExpectedValidationError } from '../lib/errors/ExpectedValidationError';\nimport { Result } from '../lib/Result';\nimport type { Constructor, ValidatorOptions } from '../lib/util-types';\nimport { BaseValidator } from './imports';\n\nexport class InstanceValidator<T> extends BaseValidator<T> {\n\tpublic readonly expected: Constructor<T>;\n\n\tpublic constructor(expected: Constructor<T>, validatorOptions: ValidatorOptions = {}, constraints: readonly IConstraint<T>[] = []) {\n\t\tsuper(validatorOptions, constraints);\n\t\tthis.expected = expected;\n\t}\n\n\tprotected handle(value: unknown): Result<T, ExpectedValidationError<Constructor<T>>> {\n\t\treturn value instanceof this.expected //\n\t\t\t? Result.ok(value)\n\t\t\t: Result.err(new ExpectedValidationError('s.instance(V)', this.validatorOptions.message ?? 'Expected', value, this.expected));\n\t}\n\n\tprotected override clone(): this {\n\t\treturn Reflect.construct(this.constructor, [this.expected, this.validatorOptions, this.constraints]);\n\t}\n}\n","import type { IConstraint } from '../constraints/base/IConstraint';\nimport { ExpectedValidationError } from '../lib/errors/ExpectedValidationError';\nimport { Result } from '../lib/Result';\nimport type { ValidatorOptions } from '../lib/util-types';\nimport { BaseValidator } from './imports';\n\nexport class LiteralValidator<T> extends BaseValidator<T> {\n\tpublic readonly expected: T;\n\n\tpublic constructor(literal: T, validatorOptions: ValidatorOptions = {}, constraints: readonly IConstraint<T>[] = []) {\n\t\tsuper(validatorOptions, constraints);\n\t\tthis.expected = literal;\n\t}\n\n\tprotected handle(value: unknown): Result<T, ExpectedValidationError<T>> {\n\t\treturn Object.is(value, this.expected) //\n\t\t\t? Result.ok(value as T)\n\t\t\t: Result.err(\n\t\t\t\t\tnew ExpectedValidationError('s.literal(V)', this.validatorOptions.message ?? 'Expected values to be equals', value, this.expected)\n\t\t\t\t);\n\t}\n\n\tprotected override clone(): this {\n\t\treturn Reflect.construct(this.constructor, [this.expected, this.validatorOptions, this.constraints]);\n\t}\n}\n","import { ValidationError } from '../lib/errors/ValidationError';\nimport { Result } from '../lib/Result';\nimport { BaseValidator } from './imports';\n\nexport class NeverValidator extends BaseValidator<never> {\n\tprotected handle(value: unknown): Result<never, ValidationError> {\n\t\treturn Result.err(new ValidationError('s.never()', this.validatorOptions.message ?? 'Expected a value to not be passed', value));\n\t}\n}\n","import type { IConstraint } from '../constraints/base/IConstraint';\nimport {\n\tnumberDivisibleBy,\n\tnumberEqual,\n\tnumberFinite,\n\tnumberGreaterThan,\n\tnumberGreaterThanOrEqual,\n\tnumberInt,\n\tnumberLessThan,\n\tnumberLessThanOrEqual,\n\tnumberNaN,\n\tnumberNotEqual,\n\tnumberNotNaN,\n\tnumberSafeInt\n} from '../constraints/NumberConstraints';\nimport { ValidationError } from '../lib/errors/ValidationError';\nimport { Result } from '../lib/Result';\nimport type { ValidatorOptions } from '../lib/util-types';\nimport { BaseValidator } from './imports';\n\nexport class NumberValidator<T extends number> extends BaseValidator<T> {\n\tpublic lessThan(number: number, options: ValidatorOptions = this.validatorOptions): this {\n\t\treturn this.addConstraint(numberLessThan(number, options) as IConstraint<T>);\n\t}\n\n\tpublic lessThanOrEqual(number: number, options: ValidatorOptions = this.validatorOptions): this {\n\t\treturn this.addConstraint(numberLessThanOrEqual(number, options) as IConstraint<T>);\n\t}\n\n\tpublic greaterThan(number: number, options: ValidatorOptions = this.validatorOptions): this {\n\t\treturn this.addConstraint(numberGreaterThan(number, options) as IConstraint<T>);\n\t}\n\n\tpublic greaterThanOrEqual(number: number, options: ValidatorOptions = this.validatorOptions): this {\n\t\treturn this.addConstraint(numberGreaterThanOrEqual(number, options) as IConstraint<T>);\n\t}\n\n\tpublic equal<N extends number>(number: N, options: ValidatorOptions = this.validatorOptions): NumberValidator<N> {\n\t\treturn Number.isNaN(number) //\n\t\t\t? (this.addConstraint(numberNaN(options) as IConstraint<T>) as unknown as NumberValidator<N>)\n\t\t\t: (this.addConstraint(numberEqual(number, options) as IConstraint<T>) as unknown as NumberValidator<N>);\n\t}\n\n\tpublic notEqual(number: number, options: ValidatorOptions = this.validatorOptions): this {\n\t\treturn Number.isNaN(number) //\n\t\t\t? this.addConstraint(numberNotNaN(options) as IConstraint<T>)\n\t\t\t: this.addConstraint(numberNotEqual(number, options) as IConstraint<T>);\n\t}\n\n\tpublic int(options: ValidatorOptions = this.validatorOptions): this {\n\t\treturn this.addConstraint(numberInt(options) as IConstraint<T>);\n\t}\n\n\tpublic safeInt(options: ValidatorOptions = this.validatorOptions): this {\n\t\treturn this.addConstraint(numberSafeInt(options) as IConstraint<T>);\n\t}\n\n\tpublic finite(options: ValidatorOptions = this.validatorOptions): this {\n\t\treturn this.addConstraint(numberFinite(options) as IConstraint<T>);\n\t}\n\n\tpublic positive(options: ValidatorOptions = this.validatorOptions): this {\n\t\treturn this.greaterThanOrEqual(0, options);\n\t}\n\n\tpublic negative(options: ValidatorOptions = this.validatorOptions): this {\n\t\treturn this.lessThan(0, options);\n\t}\n\n\tpublic divisibleBy(divider: number, options: ValidatorOptions = this.validatorOptions): this {\n\t\treturn this.addConstraint(numberDivisibleBy(divider, options) as IConstraint<T>);\n\t}\n\n\tpublic abs(options: ValidatorOptions = this.validatorOptions): this {\n\t\treturn this.transform(Math.abs as (value: number) => T, options);\n\t}\n\n\tpublic sign(options: ValidatorOptions = this.validatorOptions): this {\n\t\treturn this.transform(Math.sign as (value: number) => T, options);\n\t}\n\n\tpublic trunc(options: ValidatorOptions = this.validatorOptions): this {\n\t\treturn this.transform(Math.trunc as (value: number) => T, options);\n\t}\n\n\tpublic floor(options: ValidatorOptions = this.validatorOptions): this {\n\t\treturn this.transform(Math.floor as (value: number) => T, options);\n\t}\n\n\tpublic fround(options: ValidatorOptions = this.validatorOptions): this {\n\t\treturn this.transform(Math.fround as (value: number) => T, options);\n\t}\n\n\tpublic round(options: ValidatorOptions = this.validatorOptions): this {\n\t\treturn this.transform(Math.round as (value: number) => T, options);\n\t}\n\n\tpublic ceil(options: ValidatorOptions = this.validatorOptions): this {\n\t\treturn this.transform(Math.ceil as (value: number) => T, options);\n\t}\n\n\tprotected handle(value: unknown): Result<T, ValidationError> {\n\t\treturn typeof value === 'number' //\n\t\t\t? Result.ok(value as T)\n\t\t\t: Result.err(new ValidationError('s.number()', this.validatorOptions.message ?? 'Expected a number primitive', value));\n\t}\n}\n","import type { InspectOptionsStylized } from 'util';\nimport type { ValidatorOptions } from '../util-types';\nimport { BaseError, customInspectSymbolStackLess } from './BaseError';\nimport type { MissingPropertyErrorJsonified } from './error-types';\n\nexport class MissingPropertyError extends BaseError {\n\tpublic readonly property: PropertyKey;\n\n\tpublic constructor(property: PropertyKey, validatorOptions?: ValidatorOptions) {\n\t\tsuper(validatorOptions?.message ?? 'A required property is missing');\n\t\tthis.property = property;\n\t}\n\n\tpublic override toJSON(): MissingPropertyErrorJsonified {\n\t\treturn {\n\t\t\tname: this.name,\n\t\t\tmessage: this.message,\n\t\t\tproperty: this.property\n\t\t};\n\t}\n\n\tprotected [customInspectSymbolStackLess](depth: number, options: InspectOptionsStylized): string {\n\t\tconst property = options.stylize(this.property.toString(), 'string');\n\t\tif (depth < 0) {\n\t\t\treturn options.stylize(`[MissingPropertyError: ${property}]`, 'special');\n\t\t}\n\n\t\tconst header = `${options.stylize('MissingPropertyError', 'special')} > ${property}`;\n\t\tconst message = options.stylize(this.message, 'regexp');\n\t\treturn `${header}\\n ${message}`;\n\t}\n}\n","import { inspect, type InspectOptionsStylized } from 'util';\nimport type { ValidatorOptions } from '../util-types';\nimport { BaseError, customInspectSymbolStackLess } from './BaseError';\nimport type { UnknownEnumKeyErrorJsonified } from './error-types';\n\nexport class UnknownPropertyError extends BaseError {\n\tpublic readonly property: PropertyKey;\n\tpublic readonly value: unknown;\n\n\tpublic constructor(property: PropertyKey, value: unknown, options?: ValidatorOptions) {\n\t\tsuper(options?.message ?? 'Received unexpected property');\n\n\t\tthis.property = property;\n\t\tthis.value = value;\n\t}\n\n\tpublic override toJSON(): UnknownEnumKeyErrorJsonified {\n\t\treturn {\n\t\t\tname: this.name,\n\t\t\tmessage: this.message,\n\t\t\tproperty: this.property,\n\t\t\tvalue: this.value\n\t\t};\n\t}\n\n\tprotected [customInspectSymbolStackLess](depth: number, options: InspectOptionsStylized): string {\n\t\tconst property = options.stylize(this.property.toString(), 'string');\n\t\tif (depth < 0) {\n\t\t\treturn options.stylize(`[UnknownPropertyError: ${property}]`, 'special');\n\t\t}\n\n\t\tconst newOptions = { ...options, depth: options.depth === null ? null : options.depth! - 1, compact: true };\n\n\t\tconst padding = `\\n ${options.stylize('|', 'undefined')} `;\n\t\tconst given = inspect(this.value, newOptions).replace(/\\n/g, padding);\n\n\t\tconst header = `${options.stylize('UnknownPropertyError', 'special')} > ${property}`;\n\t\tconst message = options.stylize(this.message, 'regexp');\n\t\tconst givenBlock = `\\n ${options.stylize('Received:', 'regexp')}${padding}${given}`;\n\t\treturn `${header}\\n ${message}\\n${givenBlock}`;\n\t}\n}\n","import type { IConstraint } from '../constraints/base/IConstraint';\nimport { Result } from '../lib/Result';\nimport type { ValidatorOptions } from '../lib/util-types';\nimport type { ValidatorError } from './BaseValidator';\nimport { BaseValidator } from './imports';\nimport { getValue } from './util/getValue';\n\nexport class DefaultValidator<T> extends BaseValidator<T> {\n\tprivate readonly validator: BaseValidator<T>;\n\tprivate defaultValue: T | (() => T);\n\n\tpublic constructor(\n\t\tvalidator: BaseValidator<T>,\n\t\tvalue: T | (() => T),\n\t\tvalidatorOptions: ValidatorOptions = {},\n\t\tconstraints: readonly IConstraint<T>[] = []\n\t) {\n\t\tsuper(validatorOptions, constraints);\n\t\tthis.validator = validator;\n\t\tthis.defaultValue = value;\n\t}\n\n\tpublic override default(\n\t\tvalue: Exclude<T, undefined> | (() => Exclude<T, undefined>),\n\t\toptions = this.validatorOptions\n\t): DefaultValidator<Exclude<T, undefined>> {\n\t\tconst clone = this.clone() as unknown as DefaultValidator<Exclude<T, undefined>>;\n\t\tclone.validatorOptions = options;\n\t\tclone.defaultValue = value;\n\t\treturn clone;\n\t}\n\n\tprotected handle(value: unknown): Result<T, ValidatorError> {\n\t\treturn typeof value === 'undefined' //\n\t\t\t? Result.ok(getValue(this.defaultValue))\n\t\t\t: this.validator['handle'](value); // eslint-disable-line @typescript-eslint/dot-notation\n\t}\n\n\tprotected override clone(): this {\n\t\treturn Reflect.construct(this.constructor, [this.validator, this.defaultValue, this.validatorOptions, this.constraints]);\n\t}\n}\n","import type { InspectOptionsStylized } from 'util';\nimport type { ValidatorOptions } from '../util-types';\nimport { BaseError, customInspectSymbolStackLess } from './BaseError';\n\nexport class CombinedError extends BaseError {\n\tpublic readonly errors: readonly BaseError[];\n\n\tpublic constructor(errors: readonly BaseError[], validatorOptions?: ValidatorOptions) {\n\t\tsuper(validatorOptions?.message ?? 'Received one or more errors');\n\n\t\tthis.errors = errors;\n\t}\n\n\tprotected [customInspectSymbolStackLess](depth: number, options: InspectOptionsStylized): string {\n\t\tif (depth < 0) {\n\t\t\treturn options.stylize('[CombinedError]', 'special');\n\t\t}\n\n\t\tconst newOptions = { ...options, depth: options.depth === null ? null : options.depth! - 1, compact: true };\n\n\t\tconst padding = `\\n ${options.stylize('|', 'undefined')} `;\n\n\t\tconst header = `${options.stylize('CombinedError', 'special')} (${options.stylize(this.errors.length.toString(), 'number')})`;\n\t\tconst message = options.stylize(this.message, 'regexp');\n\t\tconst errors = this.errors\n\t\t\t.map((error, i) => {\n\t\t\t\tconst index = options.stylize((i + 1).toString(), 'number');\n\t\t\t\tconst body = error[customInspectSymbolStackLess](depth - 1, newOptions).replace(/\\n/g, padding);\n\n\t\t\t\treturn ` ${index} ${body}`;\n\t\t\t})\n\t\t\t.join('\\n\\n');\n\t\treturn `${header}\\n ${message}\\n\\n${errors}`;\n\t}\n}\n","import type { IConstraint } from '../constraints/base/IConstraint';\nimport type { BaseError } from '../lib/errors/BaseError';\nimport { CombinedError } from '../lib/errors/CombinedError';\nimport type { ValidationError } from '../lib/errors/ValidationError';\nimport { Result } from '../lib/Result';\nimport type { ValidatorOptions } from '../lib/util-types';\nimport { BaseValidator, LiteralValidator, NullishValidator } from './imports';\n\nexport class UnionValidator<T> extends BaseValidator<T> {\n\tprivate validators: readonly BaseValidator<T>[];\n\n\tpublic constructor(validators: readonly BaseValidator<T>[], validatorOptions?: ValidatorOptions, constraints: readonly IConstraint<T>[] = []) {\n\t\tsuper(validatorOptions, constraints);\n\t\tthis.validators = validators;\n\t}\n\n\tpublic override optional(options: ValidatorOptions = this.validatorOptions): UnionValidator<T | undefined> {\n\t\tif (this.validators.length === 0)\n\t\t\treturn new UnionValidator<T | undefined>([new LiteralValidator(undefined, options)], this.validatorOptions, this.constraints);\n\n\t\tconst [validator] = this.validators;\n\t\tif (validator instanceof LiteralValidator) {\n\t\t\t// If already optional, return a clone:\n\t\t\tif (validator.expected === undefined) return this.clone();\n\n\t\t\t// If it's nullable, convert the nullable validator into a nullish validator to optimize `null | undefined`:\n\t\t\tif (validator.expected === null) {\n\t\t\t\treturn new UnionValidator<T | null | undefined>(\n\t\t\t\t\t[new NullishValidator(options), ...this.validators.slice(1)],\n\t\t\t\t\tthis.validatorOptions,\n\t\t\t\t\tthis.constraints\n\t\t\t\t) as UnionValidator<T | undefined>;\n\t\t\t}\n\t\t} else if (validator instanceof NullishValidator) {\n\t\t\t// If it's already nullish (which validates optional), return a clone:\n\t\t\treturn this.clone();\n\t\t}\n\n\t\treturn new UnionValidator([new LiteralValidator(undefined, options), ...this.validators], this.validatorOptions);\n\t}\n\n\tpublic required(options: ValidatorOptions = this.validatorOptions): UnionValidator<Exclude<T, undefined>> {\n\t\ttype RequiredValidator = UnionValidator<Exclude<T, undefined>>;\n\n\t\tif (this.validators.length === 0) return this.clone() as unknown as RequiredValidator;\n\n\t\tconst [validator] = this.validators;\n\t\tif (validator instanceof LiteralValidator) {\n\t\t\tif (validator.expected === undefined) {\n\t\t\t\treturn new UnionValidator(this.validators.slice(1), this.validatorOptions, this.constraints) as RequiredValidator;\n\t\t\t}\n\t\t} else if (validator instanceof NullishValidator) {\n\t\t\treturn new UnionValidator(\n\t\t\t\t[new LiteralValidator(null, options), ...this.validators.slice(1)],\n\t\t\t\tthis.validatorOptions,\n\t\t\t\tthis.constraints\n\t\t\t) as RequiredValidator;\n\t\t}\n\n\t\treturn this.clone() as unknown as RequiredValidator;\n\t}\n\n\tpublic override nullable(options: ValidatorOptions = this.validatorOptions): UnionValidator<T | null> {\n\t\tif (this.validators.length === 0) {\n\t\t\treturn new UnionValidator<T | null>([new LiteralValidator(null, options)], this.validatorOptions, this.constraints);\n\t\t}\n\n\t\tconst [validator] = this.validators;\n\t\tif (validator instanceof LiteralValidator) {\n\t\t\t// If already nullable, return a clone:\n\t\t\tif (validator.expected === null) return this.clone();\n\n\t\t\t// If it's optional, convert the optional validator into a nullish validator to optimize `null | undefined`:\n\t\t\tif (validator.expected === undefined) {\n\t\t\t\treturn new UnionValidator<T | null | undefined>(\n\t\t\t\t\t[new NullishValidator(options), ...this.validators.slice(1)],\n\t\t\t\t\tthis.validatorOptions,\n\t\t\t\t\tthis.constraints\n\t\t\t\t) as UnionValidator<T | null>;\n\t\t\t}\n\t\t} else if (validator instanceof NullishValidator) {\n\t\t\t// If it's already nullish (which validates nullable), return a clone:\n\t\t\treturn this.clone();\n\t\t}\n\n\t\treturn new UnionValidator([new LiteralValidator(null, options), ...this.validators], this.validatorOptions);\n\t}\n\n\tpublic override nullish(options: ValidatorOptions = this.validatorOptions): UnionValidator<T | null | undefined> {\n\t\tif (this.validators.length === 0) {\n\t\t\treturn new UnionValidator<T | null | undefined>([new NullishValidator(options)], options, this.constraints);\n\t\t}\n\n\t\tconst [validator] = this.validators;\n\t\tif (validator instanceof LiteralValidator) {\n\t\t\t// If already nullable or optional, promote the union to nullish:\n\t\t\tif (validator.expected === null || validator.expected === undefined) {\n\t\t\t\treturn new UnionValidator<T | null | undefined>(\n\t\t\t\t\t[new NullishValidator(options), ...this.validators.slice(1)],\n\t\t\t\t\toptions,\n\t\t\t\t\tthis.constraints\n\t\t\t\t);\n\t\t\t}\n\t\t} else if (validator instanceof NullishValidator) {\n\t\t\t// If it's already nullish, return a clone:\n\t\t\treturn this.clone();\n\t\t}\n\n\t\treturn new UnionValidator<T | null | undefined>([new NullishValidator(options), ...this.validators], options);\n\t}\n\n\tpublic override or<O>(...predicates: readonly BaseValidator<O>[]): UnionValidator<T | O> {\n\t\treturn new UnionValidator<T | O>([...this.validators, ...predicates], this.validatorOptions);\n\t}\n\n\tprotected override clone(): this {\n\t\treturn Reflect.construct(this.constructor, [this.validators, this.validatorOptions, this.constraints]);\n\t}\n\n\tprotected handle(value: unknown): Result<T, ValidationError | CombinedError> {\n\t\tconst errors: BaseError[] = [];\n\n\t\tfor (const validator of this.validators) {\n\t\t\tconst result = validator.run(value);\n\t\t\tif (result.isOk()) return result as Result<T, CombinedError>;\n\t\t\terrors.push(result.error!);\n\t\t}\n\n\t\treturn Result.err(new CombinedError(errors, this.validatorOptions));\n\t}\n}\n","import type { IConstraint } from '../constraints/base/IConstraint';\nimport type { BaseError } from '../lib/errors/BaseError';\nimport { CombinedPropertyError } from '../lib/errors/CombinedPropertyError';\nimport { MissingPropertyError } from '../lib/errors/MissingPropertyError';\nimport { UnknownPropertyError } from '../lib/errors/UnknownPropertyError';\nimport { ValidationError } from '../lib/errors/ValidationError';\nimport { Result } from '../lib/Result';\nimport type { MappedObjectValidator, UndefinedToOptional, ValidatorOptions } from '../lib/util-types';\nimport { BaseValidator } from './BaseValidator';\nimport { DefaultValidator } from './DefaultValidator';\nimport { LiteralValidator } from './LiteralValidator';\nimport { NullishValidator } from './NullishValidator';\nimport { UnionValidator } from './UnionValidator';\n\nexport class ObjectValidator<T extends object, I = UndefinedToOptional<T>> extends BaseValidator<I> {\n\tpublic readonly shape: MappedObjectValidator<T>;\n\tpublic readonly strategy: ObjectValidatorStrategy;\n\tprivate readonly keys: readonly (keyof I)[] = [];\n\tprivate readonly handleStrategy: (value: object) => Result<I, CombinedPropertyError>;\n\n\tprivate readonly requiredKeys = new Map<keyof I, BaseValidator<unknown>>();\n\tprivate readonly possiblyUndefinedKeys = new Map<keyof I, BaseValidator<unknown>>();\n\tprivate readonly possiblyUndefinedKeysWithDefaults = new Map<keyof I, DefaultValidator<unknown>>();\n\n\tpublic constructor(\n\t\tshape: MappedObjectValidator<T>,\n\t\tstrategy: ObjectValidatorStrategy = ObjectValidatorStrategy.Ignore,\n\t\tvalidatorOptions: ValidatorOptions = {},\n\t\tconstraints: readonly IConstraint<I>[] = []\n\t) {\n\t\tsuper(validatorOptions, constraints);\n\t\tthis.shape = shape;\n\t\tthis.strategy = strategy;\n\n\t\tswitch (this.strategy) {\n\t\t\tcase ObjectValidatorStrategy.Ignore:\n\t\t\t\tthis.handleStrategy = (value) => this.handleIgnoreStrategy(value);\n\t\t\t\tbreak;\n\t\t\tcase ObjectValidatorStrategy.Strict: {\n\t\t\t\tthis.handleStrategy = (value) => this.handleStrictStrategy(value);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase ObjectValidatorStrategy.Passthrough:\n\t\t\t\tthis.handleStrategy = (value) => this.handlePassthroughStrategy(value);\n\t\t\t\tbreak;\n\t\t}\n\n\t\tconst shapeEntries = Object.entries(shape) as [keyof I, BaseValidator<T>][];\n\t\tthis.keys = shapeEntries.map(([key]) => key);\n\n\t\tfor (const [key, validator] of shapeEntries) {\n\t\t\tif (validator instanceof UnionValidator) {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/dot-notation\n\t\t\t\tconst [possiblyLiteralOrNullishPredicate] = validator['validators'];\n\n\t\t\t\tif (possiblyLiteralOrNullishPredicate instanceof NullishValidator) {\n\t\t\t\t\tthis.possiblyUndefinedKeys.set(key, validator);\n\t\t\t\t} else if (possiblyLiteralOrNullishPredicate instanceof LiteralValidator) {\n\t\t\t\t\tif (possiblyLiteralOrNullishPredicate.expected === undefined) {\n\t\t\t\t\t\tthis.possiblyUndefinedKeys.set(key, validator);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.requiredKeys.set(key, validator);\n\t\t\t\t\t}\n\t\t\t\t} else if (validator instanceof DefaultValidator) {\n\t\t\t\t\tthis.possiblyUndefinedKeysWithDefaults.set(key, validator);\n\t\t\t\t} else {\n\t\t\t\t\tthis.requiredKeys.set(key, validator);\n\t\t\t\t}\n\t\t\t} else if (validator instanceof NullishValidator) {\n\t\t\t\tthis.possiblyUndefinedKeys.set(key, validator);\n\t\t\t} else if (validator instanceof LiteralValidator) {\n\t\t\t\tif (validator.expected === undefined) {\n\t\t\t\t\tthis.possiblyUndefinedKeys.set(key, validator);\n\t\t\t\t} else {\n\t\t\t\t\tthis.requiredKeys.set(key, validator);\n\t\t\t\t}\n\t\t\t} else if (validator instanceof DefaultValidator) {\n\t\t\t\tthis.possiblyUndefinedKeysWithDefaults.set(key, validator);\n\t\t\t} else {\n\t\t\t\tthis.requiredKeys.set(key, validator);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic strict(options: ValidatorOptions = this.validatorOptions): this {\n\t\treturn Reflect.construct(this.constructor, [this.shape, ObjectValidatorStrategy.Strict, options, this.constraints]);\n\t}\n\n\tpublic ignore(options: ValidatorOptions = this.validatorOptions): this {\n\t\treturn Reflect.construct(this.constructor, [this.shape, ObjectValidatorStrategy.Ignore, options, this.constraints]);\n\t}\n\n\tpublic passthrough(options: ValidatorOptions = this.validatorOptions): this {\n\t\treturn Reflect.construct(this.constructor, [this.shape, ObjectValidatorStrategy.Passthrough, options, this.constraints]);\n\t}\n\n\tpublic partial(options: ValidatorOptions = this.validatorOptions): ObjectValidator<{ [Key in keyof I]?: I[Key] }> {\n\t\tconst shape = Object.fromEntries(this.keys.map((key) => [key, this.shape[key as unknown as keyof typeof this.shape].optional(options)]));\n\t\treturn Reflect.construct(this.constructor, [shape, this.strategy, options, this.constraints]);\n\t}\n\n\tpublic required(options: ValidatorOptions = this.validatorOptions): ObjectValidator<{ [Key in keyof I]-?: I[Key] }> {\n\t\tconst shape = Object.fromEntries(\n\t\t\tthis.keys.map((key) => {\n\t\t\t\tlet validator = this.shape[key as unknown as keyof typeof this.shape];\n\t\t\t\tif (validator instanceof UnionValidator) validator = validator.required(options);\n\t\t\t\treturn [key, validator];\n\t\t\t})\n\t\t);\n\t\treturn Reflect.construct(this.constructor, [shape, this.strategy, options, this.constraints]);\n\t}\n\n\tpublic extend<ET extends object>(\n\t\tschema: ObjectValidator<ET> | MappedObjectValidator<ET>,\n\t\toptions: ValidatorOptions = this.validatorOptions\n\t): ObjectValidator<T & ET> {\n\t\tconst shape = { ...this.shape, ...(schema instanceof ObjectValidator ? schema.shape : schema) };\n\t\treturn Reflect.construct(this.constructor, [shape, this.strategy, options, this.constraints]);\n\t}\n\n\tpublic pick<K extends keyof I>(\n\t\tkeys: readonly K[],\n\t\toptions: ValidatorOptions = this.validatorOptions\n\t): ObjectValidator<{ [Key in keyof Pick<I, K>]: I[Key] }> {\n\t\tconst shape = Object.fromEntries(\n\t\t\tkeys.filter((key) => this.keys.includes(key)).map((key) => [key, this.shape[key as unknown as keyof typeof this.shape]])\n\t\t);\n\t\treturn Reflect.construct(this.constructor, [shape, this.strategy, options, this.constraints]);\n\t}\n\n\tpublic omit<K extends keyof I>(\n\t\tkeys: readonly K[],\n\t\toptions: ValidatorOptions = this.validatorOptions\n\t): ObjectValidator<{ [Key in keyof Omit<I, K>]: I[Key] }> {\n\t\tconst shape = Object.fromEntries(\n\t\t\tthis.keys.filter((key) => !keys.includes(key as any)).map((key) => [key, this.shape[key as unknown as keyof typeof this.shape]])\n\t\t);\n\t\treturn Reflect.construct(this.constructor, [shape, this.strategy, options, this.constraints]);\n\t}\n\n\tprotected override handle(value: unknown): Result<I, ValidationError | CombinedPropertyError> {\n\t\tconst typeOfValue = typeof value;\n\t\tif (typeOfValue !== 'object') {\n\t\t\treturn Result.err(\n\t\t\t\tnew ValidationError(\n\t\t\t\t\t's.object(T)',\n\t\t\t\t\tthis.validatorOptions.message ?? `Expected the value to be an object, but received ${typeOfValue} instead`,\n\t\t\t\t\tvalue\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\n\t\tif (value === null) {\n\t\t\treturn Result.err(new ValidationError('s.object(T)', this.validatorOptions.message ?? 'Expected the value to not be null', value));\n\t\t}\n\n\t\tif (Array.isArray(value)) {\n\t\t\treturn Result.err(new ValidationError('s.object(T)', this.validatorOptions.message ?? 'Expected the value to not be an array', value));\n\t\t}\n\n\t\tif (!this.shouldRunConstraints) {\n\t\t\treturn Result.ok(value as I);\n\t\t}\n\n\t\tfor (const predicate of Object.values(this.shape) as BaseValidator<any>[]) {\n\t\t\tpredicate.setParent(this.parent ?? value!);\n\t\t}\n\n\t\treturn this.handleStrategy(value as object);\n\t}\n\n\tprotected override clone(): this {\n\t\treturn Reflect.construct(this.constructor, [this.shape, this.strategy, this.validatorOptions, this.constraints]);\n\t}\n\n\tprivate handleIgnoreStrategy(value: object): Result<I, CombinedPropertyError> {\n\t\tconst errors: [PropertyKey, BaseError][] = [];\n\t\tconst finalObject = {} as I;\n\t\tconst inputEntries = new Map(Object.entries(value) as [keyof I, unknown][]);\n\n\t\tconst runPredicate = (key: keyof I, predicate: BaseValidator<unknown>) => {\n\t\t\tconst result = predicate.run(value[key as keyof object]);\n\n\t\t\tif (result.isOk()) {\n\t\t\t\tfinalObject[key] = result.value as I[keyof I];\n\t\t\t} else {\n\t\t\t\tconst error = result.error!;\n\t\t\t\terrors.push([key, error]);\n\t\t\t}\n\t\t};\n\n\t\tfor (const [key, predicate] of this.requiredKeys) {\n\t\t\tif (inputEntries.delete(key)) {\n\t\t\t\trunPredicate(key, predicate);\n\t\t\t} else {\n\t\t\t\terrors.push([key, new MissingPropertyError(key, this.validatorOptions)]);\n\t\t\t}\n\t\t}\n\n\t\t// Run possibly undefined keys that also have defaults even if there are no more keys to process (this is necessary so we fill in those defaults)\n\t\tfor (const [key, validator] of this.possiblyUndefinedKeysWithDefaults) {\n\t\t\tinputEntries.delete(key);\n\t\t\trunPredicate(key, validator);\n\t\t}\n\n\t\t// Early exit if there are no more properties to validate in the object and there are errors to report\n\t\tif (inputEntries.size === 0) {\n\t\t\treturn errors.length === 0 //\n\t\t\t\t? Result.ok(finalObject)\n\t\t\t\t: Result.err(new CombinedPropertyError(errors, this.validatorOptions));\n\t\t}\n\n\t\t// In the event the remaining keys to check are less than the number of possible undefined keys, we check those\n\t\t// as it could yield a faster execution\n\t\tconst checkInputEntriesInsteadOfSchemaKeys = this.possiblyUndefinedKeys.size > inputEntries.size;\n\n\t\tif (checkInputEntriesInsteadOfSchemaKeys) {\n\t\t\tfor (const [key] of inputEntries) {\n\t\t\t\tconst predicate = this.possiblyUndefinedKeys.get(key);\n\n\t\t\t\tif (predicate) {\n\t\t\t\t\trunPredicate(key, predicate);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor (const [key, predicate] of this.possiblyUndefinedKeys) {\n\t\t\t\tif (inputEntries.delete(key)) {\n\t\t\t\t\trunPredicate(key, predicate);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn errors.length === 0 //\n\t\t\t? Result.ok(finalObject)\n\t\t\t: Result.err(new CombinedPropertyError(errors, this.validatorOptions));\n\t}\n\n\tprivate handleStrictStrategy(value: object): Result<I, CombinedPropertyError> {\n\t\tconst errors: [PropertyKey, BaseError][] = [];\n\t\tconst finalResult = {} as I;\n\t\tconst inputEntries = new Map(Object.entries(value) as [keyof I, unknown][]);\n\n\t\tconst runPredicate = (key: keyof I, predicate: BaseValidator<unknown>) => {\n\t\t\tconst result = predicate.run(value[key as keyof object]);\n\n\t\t\tif (result.isOk()) {\n\t\t\t\tfinalResult[key] = result.value as I[keyof I];\n\t\t\t} else {\n\t\t\t\tconst error = result.error!;\n\t\t\t\terrors.push([key, error]);\n\t\t\t}\n\t\t};\n\n\t\tfor (const [key, predicate] of this.requiredKeys) {\n\t\t\tif (inputEntries.delete(key)) {\n\t\t\t\trunPredicate(key, predicate);\n\t\t\t} else {\n\t\t\t\terrors.push([key, new MissingPropertyError(key, this.validatorOptions)]);\n\t\t\t}\n\t\t}\n\n\t\t// Run possibly undefined keys that also have defaults even if there are no more keys to process (this is necessary so we fill in those defaults)\n\t\tfor (const [key, validator] of this.possiblyUndefinedKeysWithDefaults) {\n\t\t\tinputEntries.delete(key);\n\t\t\trunPredicate(key, validator);\n\t\t}\n\n\t\tfor (const [key, predicate] of this.possiblyUndefinedKeys) {\n\t\t\t// All of these validators are assumed to be possibly undefined, so if we have gone through the entire object and there's still validators,\n\t\t\t// safe to assume we're done here\n\t\t\tif (inputEntries.size === 0) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif (inputEntries.delete(key)) {\n\t\t\t\trunPredicate(key, predicate);\n\t\t\t}\n\t\t}\n\n\t\tif (inputEntries.size !== 0) {\n\t\t\tfor (const [key, value] of inputEntries.entries()) {\n\t\t\t\terrors.push([key, new UnknownPropertyError(key, value, this.validatorOptions)]);\n\t\t\t}\n\t\t}\n\n\t\treturn errors.length === 0 //\n\t\t\t? Result.ok(finalResult)\n\t\t\t: Result.err(new CombinedPropertyError(errors, this.validatorOptions));\n\t}\n\n\tprivate handlePassthroughStrategy(value: object): Result<I, CombinedPropertyError> {\n\t\tconst result = this.handleIgnoreStrategy(value);\n\t\treturn result.isErr() ? result : Result.ok({ ...value, ...result.value } as I);\n\t}\n}\n\nexport enum ObjectValidatorStrategy {\n\tIgnore,\n\tStrict,\n\tPassthrough\n}\n","import type { ValidationError } from '../lib/errors/ValidationError';\nimport { Result } from '../lib/Result';\nimport { BaseValidator } from './imports';\n\nexport class PassthroughValidator<T extends any | unknown> extends BaseValidator<T> {\n\tprotected handle(value: unknown): Result<T, ValidationError> {\n\t\treturn Result.ok(value as T);\n\t}\n}\n","import type { IConstraint } from '../constraints/base/IConstraint';\nimport type { BaseError } from '../lib/errors/BaseError';\nimport { CombinedPropertyError } from '../lib/errors/CombinedPropertyError';\nimport { ValidationError } from '../lib/errors/ValidationError';\nimport { Result } from '../lib/Result';\nimport type { ValidatorOptions } from '../lib/util-types';\nimport { BaseValidator } from './imports';\n\nexport class RecordValidator<T> extends BaseValidator<Record<string, T>> {\n\tprivate readonly validator: BaseValidator<T>;\n\n\tpublic constructor(\n\t\tvalidator: BaseValidator<T>,\n\t\tvalidatorOptions: ValidatorOptions = {},\n\t\tconstraints: readonly IConstraint<Record<string, T>>[] = []\n\t) {\n\t\tsuper(validatorOptions, constraints);\n\t\tthis.validator = validator;\n\t}\n\n\tprotected override clone(): this {\n\t\treturn Reflect.construct(this.constructor, [this.validator, this.validatorOptions, this.constraints]);\n\t}\n\n\tprotected handle(value: unknown): Result<Record<string, T>, ValidationError | CombinedPropertyError> {\n\t\tif (typeof value !== 'object') {\n\t\t\treturn Result.err(new ValidationError('s.record(T)', this.validatorOptions.message ?? 'Expected an object', value));\n\t\t}\n\n\t\tif (value === null) {\n\t\t\treturn Result.err(new ValidationError('s.record(T)', this.validatorOptions.message ?? 'Expected the value to not be null', value));\n\t\t}\n\n\t\tif (Array.isArray(value)) {\n\t\t\treturn Result.err(new ValidationError('s.record(T)', this.validatorOptions.message ?? 'Expected the value to not be an array', value));\n\t\t}\n\n\t\tif (!this.shouldRunConstraints) {\n\t\t\treturn Result.ok(value as Record<string, T>);\n\t\t}\n\n\t\tconst errors: [string, BaseError][] = [];\n\t\tconst transformed: Record<string, T> = {};\n\n\t\tfor (const [key, val] of Object.entries(value!)) {\n\t\t\tconst result = this.validator.run(val);\n\t\t\tif (result.isOk()) transformed[key] = result.value;\n\t\t\telse errors.push([key, result.error!]);\n\t\t}\n\n\t\treturn errors.length === 0 //\n\t\t\t? Result.ok(transformed)\n\t\t\t: Result.err(new CombinedPropertyError(errors, this.validatorOptions));\n\t}\n}\n","export const phoneNumberRegex = /^((?:\\+|0{0,2})\\d{1,2}\\s?)?\\(?\\d{3}\\)?[\\s.-]?\\d{3}[\\s.-]?\\d{4}$/;\n\nexport function validatePhoneNumber(input: string) {\n\treturn phoneNumberRegex.test(input);\n}\n","import type { IConstraint } from '../constraints/base/IConstraint';\nimport {\n\tstringDate,\n\tstringEmail,\n\tstringIp,\n\tstringLengthEqual,\n\tstringLengthGreaterThan,\n\tstringLengthGreaterThanOrEqual,\n\tstringLengthLessThan,\n\tstringLengthLessThanOrEqual,\n\tstringLengthNotEqual,\n\tstringPhone,\n\tstringRegex,\n\tstringUrl,\n\tstringUuid,\n\ttype StringUuidOptions,\n\ttype UrlOptions\n} from '../constraints/StringConstraints';\nimport { ValidationError } from '../lib/errors/ValidationError';\nimport { Result } from '../lib/Result';\nimport type { ValidatorOptions } from '../lib/util-types';\nimport { BaseValidator } from './imports';\n\nexport class StringValidator<T extends string> extends BaseValidator<T> {\n\tpublic lengthLessThan(length: number, options: ValidatorOptions = this.validatorOptions): this {\n\t\treturn this.addConstraint(stringLengthLessThan(length, options) as IConstraint<T>);\n\t}\n\n\tpublic lengthLessThanOrEqual(length: number, options: ValidatorOptions = this.validatorOptions): this {\n\t\treturn this.addConstraint(stringLengthLessThanOrEqual(length, options) as IConstraint<T>);\n\t}\n\n\tpublic lengthGreaterThan(length: number, options: ValidatorOptions = this.validatorOptions): this {\n\t\treturn this.addConstraint(stringLengthGreaterThan(length, options) as IConstraint<T>);\n\t}\n\n\tpublic lengthGreaterThanOrEqual(length: number, options: ValidatorOptions = this.validatorOptions): this {\n\t\treturn this.addConstraint(stringLengthGreaterThanOrEqual(length, options) as IConstraint<T>);\n\t}\n\n\tpublic lengthEqual(length: number, options: ValidatorOptions = this.validatorOptions): this {\n\t\treturn this.addConstraint(stringLengthEqual(length, options) as IConstraint<T>);\n\t}\n\n\tpublic lengthNotEqual(length: number, options: ValidatorOptions = this.validatorOptions): this {\n\t\treturn this.addConstraint(stringLengthNotEqual(length, options) as IConstraint<T>);\n\t}\n\n\tpublic email(options: ValidatorOptions = this.validatorOptions): this {\n\t\treturn this.addConstraint(stringEmail(options) as IConstraint<T>);\n\t}\n\n\tpublic url(validatorOptions?: ValidatorOptions): this;\n\tpublic url(options?: UrlOptions, validatorOptions?: ValidatorOptions): this;\n\tpublic url(options?: UrlOptions | ValidatorOptions, validatorOptions: ValidatorOptions = this.validatorOptions): this {\n\t\tconst urlOptions = this.isUrlOptions(options);\n\n\t\tif (urlOptions) {\n\t\t\treturn this.addConstraint(stringUrl(options, validatorOptions) as IConstraint<T>);\n\t\t}\n\n\t\treturn this.addConstraint(stringUrl(undefined, validatorOptions) as IConstraint<T>);\n\t}\n\n\tpublic uuid(validatorOptions?: ValidatorOptions): this;\n\tpublic uuid(options?: StringUuidOptions, validatorOptions?: ValidatorOptions): this;\n\tpublic uuid(options?: StringUuidOptions | ValidatorOptions, validatorOptions: ValidatorOptions = this.validatorOptions): this {\n\t\tconst stringUuidOptions = this.isStringUuidOptions(options);\n\n\t\tif (stringUuidOptions) {\n\t\t\treturn this.addConstraint(stringUuid(options, validatorOptions) as IConstraint<T>);\n\t\t}\n\n\t\treturn this.addConstraint(stringUuid(undefined, validatorOptions) as IConstraint<T>);\n\t}\n\n\tpublic regex(regex: RegExp, options: ValidatorOptions = this.validatorOptions): this {\n\t\treturn this.addConstraint(stringRegex(regex, options) as IConstraint<T>);\n\t}\n\n\tpublic date(options: ValidatorOptions = this.validatorOptions) {\n\t\treturn this.addConstraint(stringDate(options) as IConstraint<T>);\n\t}\n\n\tpublic ipv4(options: ValidatorOptions = this.validatorOptions): this {\n\t\treturn this.ip(4, options);\n\t}\n\n\tpublic ipv6(options: ValidatorOptions = this.validatorOptions): this {\n\t\treturn this.ip(6, options);\n\t}\n\n\tpublic ip(version?: 4 | 6, options: ValidatorOptions = this.validatorOptions): this {\n\t\treturn this.addConstraint(stringIp(version, options) as IConstraint<T>);\n\t}\n\n\tpublic phone(options: ValidatorOptions = this.validatorOptions): this {\n\t\treturn this.addConstraint(stringPhone(options) as IConstraint<T>);\n\t}\n\n\tprotected handle(value: unknown): Result<T, ValidationError> {\n\t\treturn typeof value === 'string' //\n\t\t\t? Result.ok(value as T)\n\t\t\t: Result.err(new ValidationError('s.string()', this.validatorOptions.message ?? 'Expected a string primitive', value));\n\t}\n\n\tprivate isUrlOptions(options?: UrlOptions | ValidatorOptions): options is UrlOptions {\n\t\treturn (options as ValidatorOptions)?.message === undefined;\n\t}\n\n\tprivate isStringUuidOptions(options?: StringUuidOptions | ValidatorOptions): options is StringUuidOptions {\n\t\treturn (options as ValidatorOptions)?.message === undefined;\n\t}\n}\n","import type { IConstraint } from '../constraints/base/IConstraint';\nimport type { BaseError } from '../lib/errors/BaseError';\nimport { CombinedPropertyError } from '../lib/errors/CombinedPropertyError';\nimport { ValidationError } from '../lib/errors/ValidationError';\nimport { Result } from '../lib/Result';\nimport type { ValidatorOptions } from '../lib/util-types';\nimport { BaseValidator } from './imports';\n\nexport class TupleValidator<T extends any[]> extends BaseValidator<[...T]> {\n\tprivate readonly validators: BaseValidator<[...T]>[] = [];\n\n\tpublic constructor(\n\t\tvalidators: BaseValidator<[...T]>[],\n\t\tvalidatorOptions: ValidatorOptions = {},\n\t\tconstraints: readonly IConstraint<[...T]>[] = []\n\t) {\n\t\tsuper(validatorOptions, constraints);\n\t\tthis.validators = validators;\n\t}\n\n\tprotected override clone(): this {\n\t\treturn Reflect.construct(this.constructor, [this.validators, this.validatorOptions, this.constraints]);\n\t}\n\n\tprotected handle(values: unknown): Result<[...T], ValidationError | CombinedPropertyError> {\n\t\tif (!Array.isArray(values)) {\n\t\t\treturn Result.err(new ValidationError('s.tuple(T)', this.validatorOptions.message ?? 'Expected an array', values));\n\t\t}\n\n\t\tif (values.length !== this.validators.length) {\n\t\t\treturn Result.err(\n\t\t\t\tnew ValidationError('s.tuple(T)', this.validatorOptions.message ?? `Expected an array of length ${this.validators.length}`, values)\n\t\t\t);\n\t\t}\n\n\t\tif (!this.shouldRunConstraints) {\n\t\t\treturn Result.ok(values as [...T]);\n\t\t}\n\n\t\tconst errors: [number, BaseError][] = [];\n\t\tconst transformed: T = [] as unknown as T;\n\n\t\tfor (let i = 0; i < values.length; i++) {\n\t\t\tconst result = this.validators[i].run(values[i]);\n\t\t\tif (result.isOk()) transformed.push(result.value);\n\t\t\telse errors.push([i, result.error!]);\n\t\t}\n\n\t\treturn errors.length === 0 //\n\t\t\t? Result.ok(transformed)\n\t\t\t: Result.err(new CombinedPropertyError(errors, this.validatorOptions));\n\t}\n}\n","import type { IConstraint } from '../constraints/base/IConstraint';\nimport type { BaseError } from '../lib/errors/BaseError';\nimport { CombinedPropertyError } from '../lib/errors/CombinedPropertyError';\nimport { ValidationError } from '../lib/errors/ValidationError';\nimport { Result } from '../lib/Result';\nimport type { ValidatorOptions } from '../lib/util-types';\nimport { BaseValidator } from './imports';\n\nexport class MapValidator<K, V> extends BaseValidator<Map<K, V>> {\n\tprivate readonly keyValidator: BaseValidator<K>;\n\tprivate readonly valueValidator: BaseValidator<V>;\n\n\tpublic constructor(\n\t\tkeyValidator: BaseValidator<K>,\n\t\tvalueValidator: BaseValidator<V>,\n\t\tvalidatorOptions: ValidatorOptions = {},\n\t\tconstraints: readonly IConstraint<Map<K, V>>[] = []\n\t) {\n\t\tsuper(validatorOptions, constraints);\n\t\tthis.keyValidator = keyValidator;\n\t\tthis.valueValidator = valueValidator;\n\t}\n\n\tprotected override clone(): this {\n\t\treturn Reflect.construct(this.constructor, [this.keyValidator, this.valueValidator, this.validatorOptions, this.constraints]);\n\t}\n\n\tprotected handle(value: unknown): Result<Map<K, V>, ValidationError | CombinedPropertyError> {\n\t\tif (!(value instanceof Map)) {\n\t\t\treturn Result.err(new ValidationError('s.map(K, V)', this.validatorOptions.message ?? 'Expected a map', value));\n\t\t}\n\n\t\tif (!this.shouldRunConstraints) {\n\t\t\treturn Result.ok(value);\n\t\t}\n\n\t\tconst errors: [string, BaseError][] = [];\n\t\tconst transformed = new Map<K, V>();\n\n\t\tfor (const [key, val] of value.entries()) {\n\t\t\tconst keyResult = this.keyValidator.run(key);\n\t\t\tconst valueResult = this.valueValidator.run(val);\n\t\t\tconst { length } = errors;\n\t\t\tif (keyResult.isErr()) errors.push([key, keyResult.error]);\n\t\t\tif (valueResult.isErr()) errors.push([key, valueResult.error]);\n\t\t\tif (errors.length === length) transformed.set(keyResult.value!, valueResult.value!);\n\t\t}\n\n\t\treturn errors.length === 0 //\n\t\t\t? Result.ok(transformed)\n\t\t\t: Result.err(new CombinedPropertyError(errors, this.validatorOptions));\n\t}\n}\n","import type { IConstraint } from '../constraints/base/IConstraint';\nimport type { Result } from '../lib/Result';\nimport type { Unwrap, ValidatorOptions } from '../lib/util-types';\nimport { BaseValidator, type ValidatorError } from './imports';\n\nexport class LazyValidator<T extends BaseValidator<unknown>, R = Unwrap<T>> extends BaseValidator<R> {\n\tprivate readonly validator: (value: unknown) => T;\n\n\tpublic constructor(validator: (value: unknown) => T, validatorOptions: ValidatorOptions = {}, constraints: readonly IConstraint<R>[] = []) {\n\t\tsuper(validatorOptions, constraints);\n\t\tthis.validator = validator;\n\t}\n\n\tprotected override clone(): this {\n\t\treturn Reflect.construct(this.constructor, [this.validator, this.validatorOptions, this.constraints]);\n\t}\n\n\tprotected handle(values: unknown): Result<R, ValidatorError> {\n\t\treturn this.validator(values).run(values) as Result<R, ValidatorError>;\n\t}\n}\n","import type { InspectOptionsStylized } from 'util';\nimport type { ValidatorOptions } from '../util-types';\nimport { BaseError, customInspectSymbolStackLess } from './BaseError';\nimport type { UnknownEnumValueErrorJsonified } from './error-types';\n\nexport class UnknownEnumValueError extends BaseError {\n\tpublic readonly value: string | number;\n\tpublic readonly enumKeys: string[];\n\tpublic readonly enumMappings: Map<string | number, string | number>;\n\n\tpublic constructor(\n\t\tvalue: string | number,\n\t\tkeys: string[],\n\t\tenumMappings: Map<string | number, string | number>,\n\t\tvalidatorOptions?: ValidatorOptions\n\t) {\n\t\tsuper(validatorOptions?.message ?? 'Expected the value to be one of the following enum values:');\n\n\t\tthis.value = value;\n\t\tthis.enumKeys = keys;\n\t\tthis.enumMappings = enumMappings;\n\t}\n\n\tpublic override toJSON(): UnknownEnumValueErrorJsonified {\n\t\treturn {\n\t\t\tname: this.name,\n\t\t\tmessage: this.message,\n\t\t\tvalue: this.value,\n\t\t\tenumKeys: this.enumKeys,\n\t\t\tenumMappings: [...this.enumMappings.entries()]\n\t\t};\n\t}\n\n\tprotected [customInspectSymbolStackLess](depth: number, options: InspectOptionsStylized): string {\n\t\tconst value = options.stylize(this.value.toString(), 'string');\n\t\tif (depth < 0) {\n\t\t\treturn options.stylize(`[UnknownEnumValueError: ${value}]`, 'special');\n\t\t}\n\n\t\tconst padding = `\\n ${options.stylize('|', 'undefined')} `;\n\t\tconst pairs = this.enumKeys\n\t\t\t.map((key) => {\n\t\t\t\tconst enumValue = this.enumMappings.get(key)!;\n\t\t\t\treturn `${options.stylize(key, 'string')} or ${options.stylize(\n\t\t\t\t\tenumValue.toString(),\n\t\t\t\t\ttypeof enumValue === 'number' ? 'number' : 'string'\n\t\t\t\t)}`;\n\t\t\t})\n\t\t\t.join(padding);\n\n\t\tconst header = `${options.stylize('UnknownEnumValueError', 'special')} > ${value}`;\n\t\tconst message = options.stylize(this.message, 'regexp');\n\t\tconst pairsBlock = `${padding}${pairs}`;\n\t\treturn `${header}\\n ${message}\\n${pairsBlock}`;\n\t}\n}\n","const vowels = ['a', 'e', 'i', 'o', 'u'];\n\nexport const aOrAn = (word: string) => {\n\treturn `${vowels.includes(word[0].toLowerCase()) ? 'an' : 'a'} ${word}`;\n};\n","export type TypedArray =\n\t| Int8Array\n\t| Uint8Array\n\t| Uint8ClampedArray\n\t| Int16Array\n\t| Uint16Array\n\t| Int32Array\n\t| Uint32Array\n\t| Float32Array\n\t| Float64Array\n\t| BigInt64Array\n\t| BigUint64Array;\n\nexport const TypedArrays = {\n\tInt8Array: (x: unknown): x is Int8Array => x instanceof Int8Array,\n\tUint8Array: (x: unknown): x is Uint8Array => x instanceof Uint8Array,\n\tUint8ClampedArray: (x: unknown): x is Uint8ClampedArray => x instanceof Uint8ClampedArray,\n\tInt16Array: (x: unknown): x is Int16Array => x instanceof Int16Array,\n\tUint16Array: (x: unknown): x is Uint16Array => x instanceof Uint16Array,\n\tInt32Array: (x: unknown): x is Int32Array => x instanceof Int32Array,\n\tUint32Array: (x: unknown): x is Uint32Array => x instanceof Uint32Array,\n\tFloat32Array: (x: unknown): x is Float32Array => x instanceof Float32Array,\n\tFloat64Array: (x: unknown): x is Float64Array => x instanceof Float64Array,\n\tBigInt64Array: (x: unknown): x is BigInt64Array => x instanceof BigInt64Array,\n\tBigUint64Array: (x: unknown): x is BigUint64Array => x instanceof BigUint64Array,\n\tTypedArray: (x: unknown): x is TypedArray => ArrayBuffer.isView(x) && !(x instanceof DataView)\n} as const;\n\nexport type TypedArrayName = keyof typeof TypedArrays;\n","import type { IConstraint } from '../constraints/base/IConstraint';\nimport {\n\ttypedArrayByteLengthEqual,\n\ttypedArrayByteLengthGreaterThan,\n\ttypedArrayByteLengthGreaterThanOrEqual,\n\ttypedArrayByteLengthLessThan,\n\ttypedArrayByteLengthLessThanOrEqual,\n\ttypedArrayByteLengthNotEqual,\n\ttypedArrayByteLengthRange,\n\ttypedArrayByteLengthRangeExclusive,\n\ttypedArrayByteLengthRangeInclusive,\n\ttypedArrayLengthEqual,\n\ttypedArrayLengthGreaterThan,\n\ttypedArrayLengthGreaterThanOrEqual,\n\ttypedArrayLengthLessThan,\n\ttypedArrayLengthLessThanOrEqual,\n\ttypedArrayLengthNotEqual,\n\ttypedArrayLengthRange,\n\ttypedArrayLengthRangeExclusive,\n\ttypedArrayLengthRangeInclusive\n} from '../constraints/TypedArrayLengthConstraints';\nimport { aOrAn } from '../constraints/util/common/vowels';\nimport { TypedArrays, type TypedArray, type TypedArrayName } from '../constraints/util/typedArray';\nimport { ValidationError } from '../lib/errors/ValidationError';\nimport { Result } from '../lib/Result';\nimport type { ValidatorOptions } from '../lib/util-types';\nimport { BaseValidator } from './imports';\n\nexport class TypedArrayValidator<T extends TypedArray> extends BaseValidator<T> {\n\tprivate readonly type: TypedArrayName;\n\n\tpublic constructor(type: TypedArrayName, validatorOptions: ValidatorOptions = {}, constraints: readonly IConstraint<T>[] = []) {\n\t\tsuper(validatorOptions, constraints);\n\t\tthis.type = type;\n\t}\n\n\tpublic byteLengthLessThan(length: number, options: ValidatorOptions = this.validatorOptions) {\n\t\treturn this.addConstraint(typedArrayByteLengthLessThan(length, options));\n\t}\n\n\tpublic byteLengthLessThanOrEqual(length: number, options: ValidatorOptions = this.validatorOptions) {\n\t\treturn this.addConstraint(typedArrayByteLengthLessThanOrEqual(length, options));\n\t}\n\n\tpublic byteLengthGreaterThan(length: number, options: ValidatorOptions = this.validatorOptions) {\n\t\treturn this.addConstraint(typedArrayByteLengthGreaterThan(length, options));\n\t}\n\n\tpublic byteLengthGreaterThanOrEqual(length: number, options: ValidatorOptions = this.validatorOptions) {\n\t\treturn this.addConstraint(typedArrayByteLengthGreaterThanOrEqual(length, options));\n\t}\n\n\tpublic byteLengthEqual(length: number, options: ValidatorOptions = this.validatorOptions) {\n\t\treturn this.addConstraint(typedArrayByteLengthEqual(length, options));\n\t}\n\n\tpublic byteLengthNotEqual(length: number, options: ValidatorOptions = this.validatorOptions) {\n\t\treturn this.addConstraint(typedArrayByteLengthNotEqual(length, options));\n\t}\n\n\tpublic byteLengthRange(start: number, endBefore: number, options: ValidatorOptions = this.validatorOptions) {\n\t\treturn this.addConstraint(typedArrayByteLengthRange(start, endBefore, options));\n\t}\n\n\tpublic byteLengthRangeInclusive(startAt: number, endAt: number, options: ValidatorOptions = this.validatorOptions) {\n\t\treturn this.addConstraint(typedArrayByteLengthRangeInclusive(startAt, endAt, options) as IConstraint<T>);\n\t}\n\n\tpublic byteLengthRangeExclusive(startAfter: number, endBefore: number, options: ValidatorOptions = this.validatorOptions) {\n\t\treturn this.addConstraint(typedArrayByteLengthRangeExclusive(startAfter, endBefore, options));\n\t}\n\n\tpublic lengthLessThan(length: number, options: ValidatorOptions = this.validatorOptions) {\n\t\treturn this.addConstraint(typedArrayLengthLessThan(length, options));\n\t}\n\n\tpublic lengthLessThanOrEqual(length: number, options: ValidatorOptions = this.validatorOptions) {\n\t\treturn this.addConstraint(typedArrayLengthLessThanOrEqual(length, options));\n\t}\n\n\tpublic lengthGreaterThan(length: number, options: ValidatorOptions = this.validatorOptions) {\n\t\treturn this.addConstraint(typedArrayLengthGreaterThan(length, options));\n\t}\n\n\tpublic lengthGreaterThanOrEqual(length: number, options: ValidatorOptions = this.validatorOptions) {\n\t\treturn this.addConstraint(typedArrayLengthGreaterThanOrEqual(length, options));\n\t}\n\n\tpublic lengthEqual(length: number, options: ValidatorOptions = this.validatorOptions) {\n\t\treturn this.addConstraint(typedArrayLengthEqual(length, options));\n\t}\n\n\tpublic lengthNotEqual(length: number, options: ValidatorOptions = this.validatorOptions) {\n\t\treturn this.addConstraint(typedArrayLengthNotEqual(length, options));\n\t}\n\n\tpublic lengthRange(start: number, endBefore: number, options: ValidatorOptions = this.validatorOptions) {\n\t\treturn this.addConstraint(typedArrayLengthRange(start, endBefore, options));\n\t}\n\n\tpublic lengthRangeInclusive(startAt: number, endAt: number, options: ValidatorOptions = this.validatorOptions) {\n\t\treturn this.addConstraint(typedArrayLengthRangeInclusive(startAt, endAt, options));\n\t}\n\n\tpublic lengthRangeExclusive(startAfter: number, endBefore: number, options: ValidatorOptions = this.validatorOptions) {\n\t\treturn this.addConstraint(typedArrayLengthRangeExclusive(startAfter, endBefore, options));\n\t}\n\n\tprotected override clone(): this {\n\t\treturn Reflect.construct(this.constructor, [this.type, this.validatorOptions, this.constraints]);\n\t}\n\n\tprotected handle(value: unknown): Result<T, ValidationError> {\n\t\treturn TypedArrays[this.type](value)\n\t\t\t? Result.ok(value as T)\n\t\t\t: Result.err(new ValidationError('s.typedArray()', this.validatorOptions.message ?? `Expected ${aOrAn(this.type)}`, value));\n\t}\n}\n","import type { TypedArray, TypedArrayName } from '../constraints/util/typedArray';\nimport type { Unwrap, UnwrapTuple, ValidatorOptions } from '../lib/util-types';\nimport {\n\tArrayValidator,\n\tBaseValidator,\n\tBigIntValidator,\n\tBooleanValidator,\n\tDateValidator,\n\tInstanceValidator,\n\tLiteralValidator,\n\tMapValidator,\n\tNeverValidator,\n\tNullishValidator,\n\tNumberValidator,\n\tObjectValidator,\n\tObjectValidatorStrategy,\n\tPassthroughValidator,\n\tRecordValidator,\n\tSetValidator,\n\tStringValidator,\n\tTupleValidator,\n\tUnionValidator\n} from '../validators/imports';\nimport { LazyValidator } from '../validators/LazyValidator';\nimport { NativeEnumValidator, type NativeEnumLike } from '../validators/NativeEnumValidator';\nimport { TypedArrayValidator } from '../validators/TypedArrayValidator';\nimport type { Constructor, MappedObjectValidator } from './util-types';\n\nexport class Shapes {\n\tpublic string(options?: ValidatorOptions) {\n\t\treturn new StringValidator(options);\n\t}\n\n\tpublic number(options?: ValidatorOptions) {\n\t\treturn new NumberValidator(options);\n\t}\n\n\tpublic bigint(options?: ValidatorOptions) {\n\t\treturn new BigIntValidator(options);\n\t}\n\n\tpublic boolean(options?: ValidatorOptions) {\n\t\treturn new BooleanValidator(options);\n\t}\n\n\tpublic date(options?: ValidatorOptions) {\n\t\treturn new DateValidator(options);\n\t}\n\n\tpublic object<T extends object>(shape: MappedObjectValidator<T>, options?: ValidatorOptions) {\n\t\treturn new ObjectValidator<T>(shape, ObjectValidatorStrategy.Ignore, options);\n\t}\n\n\tpublic undefined(options?: ValidatorOptions) {\n\t\treturn this.literal(undefined, { equalsOptions: options });\n\t}\n\n\tpublic null(options?: ValidatorOptions) {\n\t\treturn this.literal(null, { equalsOptions: options });\n\t}\n\n\tpublic nullish(options?: ValidatorOptions) {\n\t\treturn new NullishValidator(options);\n\t}\n\n\tpublic any(options?: ValidatorOptions) {\n\t\treturn new PassthroughValidator<any>(options);\n\t}\n\n\tpublic unknown(options?: ValidatorOptions) {\n\t\treturn new PassthroughValidator<unknown>(options);\n\t}\n\n\tpublic never(options?: ValidatorOptions) {\n\t\treturn new NeverValidator(options);\n\t}\n\n\tpublic enum<T>(values: readonly T[], options?: ValidatorOptions) {\n\t\treturn this.union(\n\t\t\tvalues.map((value) => this.literal(value, { equalsOptions: options })),\n\t\t\toptions\n\t\t);\n\t}\n\n\tpublic nativeEnum<T extends NativeEnumLike>(enumShape: T, options?: ValidatorOptions): NativeEnumValidator<T> {\n\t\treturn new NativeEnumValidator(enumShape, options);\n\t}\n\n\tpublic literal<T>(value: T, options?: { dateOptions?: ValidatorOptions; equalsOptions?: ValidatorOptions }): BaseValidator<T> {\n\t\tif (value instanceof Date) {\n\t\t\treturn this.date(options?.dateOptions).equal(value, options?.equalsOptions) as unknown as BaseValidator<T>;\n\t\t}\n\n\t\treturn new LiteralValidator(value, options?.equalsOptions);\n\t}\n\n\tpublic instance<T>(expected: Constructor<T>, options?: ValidatorOptions): InstanceValidator<T> {\n\t\treturn new InstanceValidator(expected, options);\n\t}\n\n\tpublic union<T extends BaseValidator<any>[]>(validators: T, options?: ValidatorOptions): UnionValidator<Unwrap<T[number]>> {\n\t\treturn new UnionValidator(validators, options);\n\t}\n\n\tpublic array<T>(validator: BaseValidator<T[][number]>, options?: ValidatorOptions): ArrayValidator<T[], T[][number]>;\n\tpublic array<T extends unknown[]>(validator: BaseValidator<T[number]>, options?: ValidatorOptions): ArrayValidator<T, T[number]>;\n\tpublic array<T extends unknown[]>(validator: BaseValidator<T[number]>, options?: ValidatorOptions) {\n\t\treturn new ArrayValidator(validator, options);\n\t}\n\n\tpublic typedArray<T extends TypedArray>(type: TypedArrayName = 'TypedArray', options?: ValidatorOptions) {\n\t\treturn new TypedArrayValidator<T>(type, options);\n\t}\n\n\tpublic int8Array(options?: ValidatorOptions) {\n\t\treturn this.typedArray<Int8Array>('Int8Array', options);\n\t}\n\n\tpublic uint8Array(options?: ValidatorOptions) {\n\t\treturn this.typedArray<Uint8Array>('Uint8Array', options);\n\t}\n\n\tpublic uint8ClampedArray(options?: ValidatorOptions) {\n\t\treturn this.typedArray<Uint8ClampedArray>('Uint8ClampedArray', options);\n\t}\n\n\tpublic int16Array(options?: ValidatorOptions) {\n\t\treturn this.typedArray<Int16Array>('Int16Array', options);\n\t}\n\n\tpublic uint16Array(options?: ValidatorOptions) {\n\t\treturn this.typedArray<Uint16Array>('Uint16Array', options);\n\t}\n\n\tpublic int32Array(options?: ValidatorOptions) {\n\t\treturn this.typedArray<Int32Array>('Int32Array', options);\n\t}\n\n\tpublic uint32Array(options?: ValidatorOptions) {\n\t\treturn this.typedArray<Uint32Array>('Uint32Array', options);\n\t}\n\n\tpublic float32Array(options?: ValidatorOptions) {\n\t\treturn this.typedArray<Float32Array>('Float32Array', options);\n\t}\n\n\tpublic float64Array(options?: ValidatorOptions) {\n\t\treturn this.typedArray<Float64Array>('Float64Array', options);\n\t}\n\n\tpublic bigInt64Array(options?: ValidatorOptions) {\n\t\treturn this.typedArray<BigInt64Array>('BigInt64Array', options);\n\t}\n\n\tpublic bigUint64Array(options?: ValidatorOptions) {\n\t\treturn this.typedArray<BigUint64Array>('BigUint64Array', options);\n\t}\n\n\tpublic tuple<T extends [...BaseValidator<any>[]]>(validators: [...T], options?: ValidatorOptions): TupleValidator<UnwrapTuple<T>> {\n\t\treturn new TupleValidator(validators, options);\n\t}\n\n\tpublic set<T>(validator: BaseValidator<T>, options?: ValidatorOptions) {\n\t\treturn new SetValidator(validator, options);\n\t}\n\n\tpublic record<T>(validator: BaseValidator<T>, options?: ValidatorOptions) {\n\t\treturn new RecordValidator(validator, options);\n\t}\n\n\tpublic map<T, U>(keyValidator: BaseValidator<T>, valueValidator: BaseValidator<U>, options?: ValidatorOptions) {\n\t\treturn new MapValidator(keyValidator, valueValidator, options);\n\t}\n\n\tpublic lazy<T extends BaseValidator<unknown>>(validator: (value: unknown) => T, options?: ValidatorOptions) {\n\t\treturn new LazyValidator(validator, options);\n\t}\n}\n","import { X } from './chunk-b4205b57.js';\nimport './chunk-5decc758.js';\n\nX._extend;X.callbackify;X.debuglog;X.deprecate;X.format;X.inherits;X.inspect;X.isArray;X.isBoolean;X.isBuffer;X.isDate;X.isError;X.isFunction;X.isNull;X.isNullOrUndefined;X.isNumber;X.isObject;X.isPrimitive;X.isRegExp;X.isString;X.isSymbol;X.isUndefined;X.log;X.promisify;\n\nvar _extend = X._extend;\nvar callbackify = X.callbackify;\nvar debuglog = X.debuglog;\nvar deprecate = X.deprecate;\nvar format = X.format;\nvar inherits = X.inherits;\nvar inspect = X.inspect;\nvar isArray = X.isArray;\nvar isBoolean = X.isBoolean;\nvar isBuffer = X.isBuffer;\nvar isDate = X.isDate;\nvar isError = X.isError;\nvar isFunction = X.isFunction;\nvar isNull = X.isNull;\nvar isNullOrUndefined = X.isNullOrUndefined;\nvar isNumber = X.isNumber;\nvar isObject = X.isObject;\nvar isPrimitive = X.isPrimitive;\nvar isRegExp = X.isRegExp;\nvar isString = X.isString;\nvar isSymbol = X.isSymbol;\nvar isUndefined = X.isUndefined;\nvar log = X.log;\nvar promisify = X.promisify;\nvar types = X.types;\n\nconst TextEncoder = self.TextEncoder;\nconst TextDecoder = self.TextDecoder;\n\nexport { TextDecoder as T, _extend as _, TextEncoder as a, deprecate as b, callbackify as c, debuglog as d, inspect as e, format as f, isArray as g, isBoolean as h, inherits as i, isBuffer as j, isDate as k, isError as l, isFunction as m, isNull as n, isNullOrUndefined as o, promisify as p, isNumber as q, isObject as r, isPrimitive as s, isRegExp as t, isString as u, isSymbol as v, isUndefined as w, log as x, types as y };\n","/* eslint-disable prefer-named-capture-group */\n\n/**\n * The options that affect what will be escaped.\n */\nexport interface EscapeMarkdownOptions {\n\t/**\n\t * Whether to escape bold text.\n\t *\n\t * @defaultValue `true`\n\t */\n\tbold?: boolean;\n\n\t/**\n\t * Whether to escape bulleted lists.\n\t *\n\t * @defaultValue `false`\n\t */\n\tbulletedList?: boolean;\n\n\t/**\n\t * Whether to escape code blocks.\n\t *\n\t * @defaultValue `true`\n\t */\n\tcodeBlock?: boolean;\n\n\t/**\n\t * Whether to escape text inside code blocks.\n\t *\n\t * @defaultValue `true`\n\t */\n\tcodeBlockContent?: boolean;\n\n\t/**\n\t * Whether to escape `\\`.\n\t *\n\t * @defaultValue `true`\n\t */\n\tescape?: boolean;\n\n\t/**\n\t * Whether to escape headings.\n\t *\n\t * @defaultValue `false`\n\t */\n\theading?: boolean;\n\n\t/**\n\t * Whether to escape inline code.\n\t *\n\t * @defaultValue `true`\n\t */\n\tinlineCode?: boolean;\n\n\t/**\n\t * Whether to escape text inside inline code.\n\t *\n\t * @defaultValue `true`\n\t */\n\tinlineCodeContent?: boolean;\n\t/**\n\t * Whether to escape italics.\n\t *\n\t * @defaultValue `true`\n\t */\n\titalic?: boolean;\n\n\t/**\n\t * Whether to escape masked links.\n\t *\n\t * @defaultValue `false`\n\t */\n\tmaskedLink?: boolean;\n\n\t/**\n\t * Whether to escape numbered lists.\n\t *\n\t * @defaultValue `false`\n\t */\n\tnumberedList?: boolean;\n\n\t/**\n\t * Whether to escape spoilers.\n\t *\n\t * @defaultValue `true`\n\t */\n\tspoiler?: boolean;\n\n\t/**\n\t * Whether to escape strikethroughs.\n\t *\n\t * @defaultValue `true`\n\t */\n\tstrikethrough?: boolean;\n\n\t/**\n\t * Whether to escape underlines.\n\t *\n\t * @defaultValue `true`\n\t */\n\tunderline?: boolean;\n}\n\n/**\n * Escapes any Discord-flavored markdown in a string.\n *\n * @param text - Content to escape\n * @param options - Options for escaping the markdown\n */\nexport function escapeMarkdown(text: string, options: EscapeMarkdownOptions = {}): string {\n\tconst {\n\t\tcodeBlock = true,\n\t\tinlineCode = true,\n\t\tbold = true,\n\t\titalic = true,\n\t\tunderline = true,\n\t\tstrikethrough = true,\n\t\tspoiler = true,\n\t\tcodeBlockContent = true,\n\t\tinlineCodeContent = true,\n\t\tescape = true,\n\t\theading = false,\n\t\tbulletedList = false,\n\t\tnumberedList = false,\n\t\tmaskedLink = false,\n\t} = options;\n\n\tif (!codeBlockContent) {\n\t\treturn text\n\t\t\t.split('```')\n\t\t\t.map((subString, index, array) => {\n\t\t\t\tif (index % 2 && index !== array.length - 1) return subString;\n\t\t\t\treturn escapeMarkdown(subString, {\n\t\t\t\t\tinlineCode,\n\t\t\t\t\tbold,\n\t\t\t\t\titalic,\n\t\t\t\t\tunderline,\n\t\t\t\t\tstrikethrough,\n\t\t\t\t\tspoiler,\n\t\t\t\t\tinlineCodeContent,\n\t\t\t\t\tescape,\n\t\t\t\t\theading,\n\t\t\t\t\tbulletedList,\n\t\t\t\t\tnumberedList,\n\t\t\t\t\tmaskedLink,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.join(codeBlock ? '\\\\`\\\\`\\\\`' : '```');\n\t}\n\n\tif (!inlineCodeContent) {\n\t\treturn text\n\t\t\t.split(/(?<=^|[^`])`(?=[^`]|$)/g)\n\t\t\t.map((subString, index, array) => {\n\t\t\t\tif (index % 2 && index !== array.length - 1) return subString;\n\t\t\t\treturn escapeMarkdown(subString, {\n\t\t\t\t\tcodeBlock,\n\t\t\t\t\tbold,\n\t\t\t\t\titalic,\n\t\t\t\t\tunderline,\n\t\t\t\t\tstrikethrough,\n\t\t\t\t\tspoiler,\n\t\t\t\t\tescape,\n\t\t\t\t\theading,\n\t\t\t\t\tbulletedList,\n\t\t\t\t\tnumberedList,\n\t\t\t\t\tmaskedLink,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.join(inlineCode ? '\\\\`' : '`');\n\t}\n\n\tlet res = text;\n\tif (escape) res = escapeEscape(res);\n\tif (inlineCode) res = escapeInlineCode(res);\n\tif (codeBlock) res = escapeCodeBlock(res);\n\tif (italic) res = escapeItalic(res);\n\tif (bold) res = escapeBold(res);\n\tif (underline) res = escapeUnderline(res);\n\tif (strikethrough) res = escapeStrikethrough(res);\n\tif (spoiler) res = escapeSpoiler(res);\n\tif (heading) res = escapeHeading(res);\n\tif (bulletedList) res = escapeBulletedList(res);\n\tif (numberedList) res = escapeNumberedList(res);\n\tif (maskedLink) res = escapeMaskedLink(res);\n\treturn res;\n}\n\n/**\n * Escapes code block markdown in a string.\n *\n * @param text - Content to escape\n */\nexport function escapeCodeBlock(text: string): string {\n\treturn text.replaceAll('```', '\\\\`\\\\`\\\\`');\n}\n\n/**\n * Escapes inline code markdown in a string.\n *\n * @param text - Content to escape\n */\nexport function escapeInlineCode(text: string): string {\n\treturn text.replaceAll(/(?<=^|[^`])``?(?=[^`]|$)/g, (match) => (match.length === 2 ? '\\\\`\\\\`' : '\\\\`'));\n}\n\n/**\n * Escapes italic markdown in a string.\n *\n * @param text - Content to escape\n */\nexport function escapeItalic(text: string): string {\n\tlet idx = 0;\n\tconst newText = text.replaceAll(\n\t\t/(?<=^|[^*])(?<!(?<!<)https?:\\/\\/\\S*|<[^\\s:]+:\\/[^\\s>]*)\\*([^*]|\\*\\*|$)/g,\n\t\t(_, match) => {\n\t\t\tif (match === '**') return ++idx % 2 ? `\\\\*${match}` : `${match}\\\\*`;\n\t\t\treturn `\\\\*${match}`;\n\t\t},\n\t);\n\tidx = 0;\n\treturn newText.replaceAll(\n\t\t/(?<=^|[^_])(?<!<a?:.+|(?<!<)https?:\\/\\/\\S*|<[^\\s:]:\\/[^\\s>]*)_(?!:\\d+>)([^_]|__|$)/g,\n\t\t(_, match) => {\n\t\t\tif (match === '__') return ++idx % 2 ? `\\\\_${match}` : `${match}\\\\_`;\n\t\t\treturn `\\\\_${match}`;\n\t\t},\n\t);\n}\n\n/**\n * Escapes bold markdown in a string.\n *\n * @param text - Content to escape\n */\nexport function escapeBold(text: string): string {\n\tlet idx = 0;\n\treturn text.replaceAll(/\\*\\*(\\*)?/g, (_, match) => {\n\t\tif (match) return ++idx % 2 ? `${match}\\\\*\\\\*` : `\\\\*\\\\*${match}`;\n\t\treturn '\\\\*\\\\*';\n\t});\n}\n\n/**\n * Escapes underline markdown in a string.\n *\n * @param text - Content to escape\n */\nexport function escapeUnderline(text: string): string {\n\tlet idx = 0;\n\treturn text.replaceAll(/(?<!<a?:.+|https?:\\/\\/\\S+)__(_)?(?!:\\d+>)/g, (_, match) => {\n\t\tif (match) return ++idx % 2 ? `${match}\\\\_\\\\_` : `\\\\_\\\\_${match}`;\n\t\treturn '\\\\_\\\\_';\n\t});\n}\n\n/**\n * Escapes strikethrough markdown in a string.\n *\n * @param text - Content to escape\n */\nexport function escapeStrikethrough(text: string): string {\n\treturn text.replaceAll('~~', '\\\\~\\\\~');\n}\n\n/**\n * Escapes spoiler markdown in a string.\n *\n * @param text - Content to escape\n */\nexport function escapeSpoiler(text: string): string {\n\treturn text.replaceAll('||', '\\\\|\\\\|');\n}\n\n/**\n * Escapes escape characters in a string.\n *\n * @param text - Content to escape\n */\nexport function escapeEscape(text: string): string {\n\treturn text.replaceAll('\\\\', '\\\\\\\\');\n}\n\n/**\n * Escapes heading characters in a string.\n *\n * @param text - Content to escape\n */\nexport function escapeHeading(text: string): string {\n\treturn text.replaceAll(/^( {0,2})([*-] )?( *)(#{1,3} )/gm, '$1$2$3\\\\$4');\n}\n\n/**\n * Escapes bulleted list characters in a string.\n *\n * @param text - Content to escape\n */\nexport function escapeBulletedList(text: string): string {\n\treturn text.replaceAll(/^( *)([*-])( +)/gm, '$1\\\\$2$3');\n}\n\n/**\n * Escapes numbered list characters in a string.\n *\n * @param text - Content to escape\n */\nexport function escapeNumberedList(text: string): string {\n\treturn text.replaceAll(/^( *\\d+)\\./gm, '$1\\\\.');\n}\n\n/**\n * Escapes masked link characters in a string.\n *\n * @param text - Content to escape\n */\nexport function escapeMaskedLink(text: string): string {\n\treturn text.replaceAll(/\\[.+]\\(.+\\)/gm, '\\\\$&');\n}\n","import type { URL } from 'node:url';\nimport type { Snowflake } from 'discord-api-types/globals';\n\n/**\n * Wraps the content inside a code block with no language.\n *\n * @typeParam Content - This is inferred by the supplied content\n * @param content - The content to wrap\n */\nexport function codeBlock<Content extends string>(content: Content): `\\`\\`\\`\\n${Content}\\n\\`\\`\\``;\n\n/**\n * Wraps the content inside a code block with the specified language.\n *\n * @typeParam Language - This is inferred by the supplied language\n * @typeParam Content - This is inferred by the supplied content\n * @param language - The language for the code block\n * @param content - The content to wrap\n */\nexport function codeBlock<Language extends string, Content extends string>(\n\tlanguage: Language,\n\tcontent: Content,\n): `\\`\\`\\`${Language}\\n${Content}\\n\\`\\`\\``;\n\nexport function codeBlock(language: string, content?: string): string {\n\treturn content === undefined ? `\\`\\`\\`\\n${language}\\n\\`\\`\\`` : `\\`\\`\\`${language}\\n${content}\\n\\`\\`\\``;\n}\n\n/**\n * Wraps the content inside \\`backticks\\` which formats it as inline code.\n *\n * @typeParam Content - This is inferred by the supplied content\n * @param content - The content to wrap\n */\nexport function inlineCode<Content extends string>(content: Content): `\\`${Content}\\`` {\n\treturn `\\`${content}\\``;\n}\n\n/**\n * Formats the content into italic text.\n *\n * @typeParam Content - This is inferred by the supplied content\n * @param content - The content to wrap\n */\nexport function italic<Content extends string>(content: Content): `_${Content}_` {\n\treturn `_${content}_`;\n}\n\n/**\n * Formats the content into bold text.\n *\n * @typeParam Content - This is inferred by the supplied content\n * @param content - The content to wrap\n */\nexport function bold<Content extends string>(content: Content): `**${Content}**` {\n\treturn `**${content}**`;\n}\n\n/**\n * Formats the content into underscored text.\n *\n * @typeParam Content - This is inferred by the supplied content\n * @param content - The content to wrap\n * @deprecated Use {@link underline} instead.\n */\nexport function underscore<Content extends string>(content: Content): `__${Content}__` {\n\treturn underline(content);\n}\n\n/**\n * Formats the content into underlined text.\n *\n * @typeParam Content - This is inferred by the supplied content\n * @param content - The content to wrap\n */\nexport function underline<Content extends string>(content: Content): `__${Content}__` {\n\treturn `__${content}__`;\n}\n\n/**\n * Formats the content into strike-through text.\n *\n * @typeParam Content - This is inferred by the supplied content\n * @param content - The content to wrap\n */\nexport function strikethrough<Content extends string>(content: Content): `~~${Content}~~` {\n\treturn `~~${content}~~`;\n}\n\n/**\n * Formats the content into a quote.\n *\n * @remarks This needs to be at the start of the line for Discord to format it.\n * @typeParam Content - This is inferred by the supplied content\n * @param content - The content to wrap\n */\nexport function quote<Content extends string>(content: Content): `> ${Content}` {\n\treturn `> ${content}`;\n}\n\n/**\n * Formats the content into a block quote.\n *\n * @remarks This needs to be at the start of the line for Discord to format it.\n * @typeParam Content - This is inferred by the supplied content\n * @param content - The content to wrap\n */\nexport function blockQuote<Content extends string>(content: Content): `>>> ${Content}` {\n\treturn `>>> ${content}`;\n}\n\n/**\n * Wraps the URL into `<>` which stops it from embedding.\n *\n * @typeParam Content - This is inferred by the supplied content\n * @param url - The URL to wrap\n */\nexport function hideLinkEmbed<Content extends string>(url: Content): `<${Content}>`;\n\n/**\n * Wraps the URL into `<>` which stops it from embedding.\n *\n * @param url - The URL to wrap\n */\nexport function hideLinkEmbed(url: URL): `<${string}>`;\n\nexport function hideLinkEmbed(url: URL | string) {\n\treturn `<${url}>`;\n}\n\n/**\n * Formats the content and the URL into a masked URL.\n *\n * @typeParam Content - This is inferred by the supplied content\n * @param content - The content to display\n * @param url - The URL the content links to\n */\nexport function hyperlink<Content extends string>(content: Content, url: URL): `[${Content}](${string})`;\n\n/**\n * Formats the content and the URL into a masked URL.\n *\n * @typeParam Content - This is inferred by the supplied content\n * @typeParam Url - This is inferred by the supplied URL\n * @param content - The content to display\n * @param url - The URL the content links to\n */\nexport function hyperlink<Content extends string, Url extends string>(\n\tcontent: Content,\n\turl: Url,\n): `[${Content}](${Url})`;\n\n/**\n * Formats the content and the URL into a masked URL with a custom tooltip.\n *\n * @typeParam Content - This is inferred by the supplied content\n * @typeParam Title - This is inferred by the supplied title\n * @param content - The content to display\n * @param url - The URL the content links to\n * @param title - The title shown when hovering on the masked link\n */\nexport function hyperlink<Content extends string, Title extends string>(\n\tcontent: Content,\n\turl: URL,\n\ttitle: Title,\n): `[${Content}](${string} \"${Title}\")`;\n\n/**\n * Formats the content and the URL into a masked URL with a custom tooltip.\n *\n * @typeParam Content - This is inferred by the supplied content\n * @typeParam Url - This is inferred by the supplied URL\n * @typeParam Title - This is inferred by the supplied title\n * @param content - The content to display\n * @param url - The URL the content links to\n * @param title - The title shown when hovering on the masked link\n */\nexport function hyperlink<Content extends string, Url extends string, Title extends string>(\n\tcontent: Content,\n\turl: Url,\n\ttitle: Title,\n): `[${Content}](${Url} \"${Title}\")`;\n\nexport function hyperlink(content: string, url: URL | string, title?: string) {\n\treturn title ? `[${content}](${url} \"${title}\")` : `[${content}](${url})`;\n}\n\n/**\n * Formats the content into a spoiler.\n *\n * @typeParam Content - This is inferred by the supplied content\n * @param content - The content to wrap\n */\nexport function spoiler<Content extends string>(content: Content): `||${Content}||` {\n\treturn `||${content}||`;\n}\n\n/**\n * Formats a user id into a user mention.\n *\n * @typeParam UserId - This is inferred by the supplied user id\n * @param userId - The user id to format\n */\nexport function userMention<UserId extends Snowflake>(userId: UserId): `<@${UserId}>` {\n\treturn `<@${userId}>`;\n}\n\n/**\n * Formats a channel id into a channel mention.\n *\n * @typeParam ChannelId - This is inferred by the supplied channel id\n * @param channelId - The channel id to format\n */\nexport function channelMention<ChannelId extends Snowflake>(channelId: ChannelId): `<#${ChannelId}>` {\n\treturn `<#${channelId}>`;\n}\n\n/**\n * Formats a role id into a role mention.\n *\n * @typeParam RoleId - This is inferred by the supplied role id\n * @param roleId - The role id to format\n */\nexport function roleMention<RoleId extends Snowflake>(roleId: RoleId): `<@&${RoleId}>` {\n\treturn `<@&${roleId}>`;\n}\n\n/**\n * Formats a role id into a linked role mention.\n *\n * @typeParam RoleId - This is inferred by the supplied role id\n * @param roleId - The role id to format\n */\nexport function linkedRoleMention<RoleId extends Snowflake>(roleId: RoleId): `<id:linked-roles:${RoleId}>` {\n\treturn `<id:linked-roles:${roleId}>`;\n}\n\n/**\n * Formats an application command name, subcommand group name, subcommand name, and id into an application command mention.\n *\n * @typeParam CommandName - This is inferred by the supplied command name\n * @typeParam SubcommandGroupName - This is inferred by the supplied subcommand group name\n * @typeParam SubcommandName - This is inferred by the supplied subcommand name\n * @typeParam CommandId - This is inferred by the supplied command id\n * @param commandName - The application command name to format\n * @param subcommandGroupName - The subcommand group name to format\n * @param subcommandName - The subcommand name to format\n * @param commandId - The application command id to format\n */\nexport function chatInputApplicationCommandMention<\n\tCommandName extends string,\n\tSubcommandGroupName extends string,\n\tSubcommandName extends string,\n\tCommandId extends Snowflake,\n>(\n\tcommandName: CommandName,\n\tsubcommandGroupName: SubcommandGroupName,\n\tsubcommandName: SubcommandName,\n\tcommandId: CommandId,\n): `</${CommandName} ${SubcommandGroupName} ${SubcommandName}:${CommandId}>`;\n\n/**\n * Formats an application command name, subcommand name, and id into an application command mention.\n *\n * @typeParam CommandName - This is inferred by the supplied command name\n * @typeParam SubcommandName - This is inferred by the supplied subcommand name\n * @typeParam CommandId - This is inferred by the supplied command id\n * @param commandName - The application command name to format\n * @param subcommandName - The subcommand name to format\n * @param commandId - The application command id to format\n */\nexport function chatInputApplicationCommandMention<\n\tCommandName extends string,\n\tSubcommandName extends string,\n\tCommandId extends Snowflake,\n>(\n\tcommandName: CommandName,\n\tsubcommandName: SubcommandName,\n\tcommandId: CommandId,\n): `</${CommandName} ${SubcommandName}:${CommandId}>`;\n\n/**\n * Formats an application command name and id into an application command mention.\n *\n * @typeParam CommandName - This is inferred by the supplied command name\n * @typeParam CommandId - This is inferred by the supplied command id\n * @param commandName - The application command name to format\n * @param commandId - The application command id to format\n */\nexport function chatInputApplicationCommandMention<CommandName extends string, CommandId extends Snowflake>(\n\tcommandName: CommandName,\n\tcommandId: CommandId,\n): `</${CommandName}:${CommandId}>`;\n\nexport function chatInputApplicationCommandMention<\n\tCommandName extends string,\n\tSubcommandGroupName extends Snowflake | string,\n\tSubcommandName extends Snowflake | string,\n\tCommandId extends Snowflake,\n>(\n\tcommandName: CommandName,\n\tsubcommandGroupName: SubcommandGroupName,\n\tsubcommandName?: SubcommandName,\n\tcommandId?: CommandId,\n):\n\t| `</${CommandName} ${SubcommandGroupName} ${SubcommandName}:${CommandId}>`\n\t| `</${CommandName} ${SubcommandGroupName}:${SubcommandName}>`\n\t| `</${CommandName}:${SubcommandGroupName}>` {\n\tif (commandId !== undefined) {\n\t\treturn `</${commandName} ${subcommandGroupName} ${subcommandName!}:${commandId}>`;\n\t}\n\n\tif (subcommandName !== undefined) {\n\t\treturn `</${commandName} ${subcommandGroupName}:${subcommandName}>`;\n\t}\n\n\treturn `</${commandName}:${subcommandGroupName}>`;\n}\n\n/**\n * Formats a non-animated emoji id into a fully qualified emoji identifier.\n *\n * @typeParam EmojiId - This is inferred by the supplied emoji id\n * @param emojiId - The emoji id to format\n */\nexport function formatEmoji<EmojiId extends Snowflake>(emojiId: EmojiId, animated?: false): `<:emoji:${EmojiId}>`;\n\n/**\n * Formats an animated emoji id into a fully qualified emoji identifier.\n *\n * @typeParam EmojiId - This is inferred by the supplied emoji id\n * @param emojiId - The emoji id to format\n * @param animated - Whether the emoji is animated\n */\nexport function formatEmoji<EmojiId extends Snowflake>(emojiId: EmojiId, animated?: true): `<a:emoji:${EmojiId}>`;\n\n/**\n * Formats an emoji id into a fully qualified emoji identifier.\n *\n * @typeParam EmojiId - This is inferred by the supplied emoji id\n * @param emojiId - The emoji id to format\n * @param animated - Whether the emoji is animated\n */\nexport function formatEmoji<EmojiId extends Snowflake>(\n\temojiId: EmojiId,\n\tanimated?: boolean,\n): `<:emoji:${EmojiId}>` | `<a:emoji:${EmojiId}>`;\n\n/**\n * Formats a non-animated emoji id and name into a fully qualified emoji identifier.\n *\n * @typeParam EmojiId - This is inferred by the supplied emoji id\n * @typeParam EmojiName - This is inferred by the supplied name\n * @param options - The options for formatting an emoji\n */\nexport function formatEmoji<EmojiId extends Snowflake, EmojiName extends string>(\n\toptions: FormatEmojiOptions<EmojiId, EmojiName> & { animated: true },\n): `<a:${EmojiName}:${EmojiId}>`;\n\n/**\n * Formats an animated emoji id and name into a fully qualified emoji identifier.\n *\n * @typeParam EmojiId - This is inferred by the supplied emoji id\n * @typeParam EmojiName - This is inferred by the supplied name\n * @param options - The options for formatting an emoji\n */\nexport function formatEmoji<EmojiId extends Snowflake, EmojiName extends string>(\n\toptions: FormatEmojiOptions<EmojiId, EmojiName> & { animated?: false },\n): `<:${EmojiName}:${EmojiId}>`;\n\n/**\n * Formats an emoji id and name into a fully qualified emoji identifier.\n *\n * @typeParam EmojiId - This is inferred by the supplied emoji id\n * @typeParam EmojiName - This is inferred by the supplied emoji name\n * @param options - The options for formatting an emoji\n */\nexport function formatEmoji<EmojiId extends Snowflake, EmojiName extends string>(\n\toptions: FormatEmojiOptions<EmojiId, EmojiName>,\n): `<:${EmojiName}:${EmojiId}>` | `<a:${EmojiName}:${EmojiId}>`;\n\nexport function formatEmoji<EmojiId extends Snowflake, EmojiName extends string>(\n\temojiIdOrOptions: EmojiId | FormatEmojiOptions<EmojiId, EmojiName>,\n\tanimated?: boolean,\n): `<:${string}:${EmojiId}>` | `<a:${string}:${EmojiId}>` {\n\tconst options =\n\t\ttypeof emojiIdOrOptions === 'string'\n\t\t\t? {\n\t\t\t\t\tid: emojiIdOrOptions,\n\t\t\t\t\tanimated: animated ?? false,\n\t\t\t\t}\n\t\t\t: emojiIdOrOptions;\n\n\tconst { id, animated: isAnimated, name: emojiName } = options;\n\n\treturn `<${isAnimated ? 'a' : ''}:${emojiName ?? 'emoji'}:${id}>`;\n}\n\n/**\n * The options for formatting an emoji.\n *\n * @typeParam EmojiId - This is inferred by the supplied emoji id\n * @typeParam EmojiName - This is inferred by the supplied emoji name\n */\nexport interface FormatEmojiOptions<EmojiId extends Snowflake, EmojiName extends string> {\n\t/**\n\t * Whether the emoji is animated\n\t */\n\tanimated?: boolean;\n\t/**\n\t * The emoji id to format\n\t */\n\tid: EmojiId;\n\t/**\n\t * The name of the emoji\n\t */\n\tname?: EmojiName;\n}\n\n/**\n * Formats a channel link for a direct message channel.\n *\n * @typeParam ChannelId - This is inferred by the supplied channel id\n * @param channelId - The channel's id\n */\nexport function channelLink<ChannelId extends Snowflake>(\n\tchannelId: ChannelId,\n): `https://discord.com/channels/@me/${ChannelId}`;\n\n/**\n * Formats a channel link for a guild channel.\n *\n * @typeParam ChannelId - This is inferred by the supplied channel id\n * @typeParam GuildId - This is inferred by the supplied guild id\n * @param channelId - The channel's id\n * @param guildId - The guild's id\n */\nexport function channelLink<ChannelId extends Snowflake, GuildId extends Snowflake>(\n\tchannelId: ChannelId,\n\tguildId: GuildId,\n): `https://discord.com/channels/${GuildId}/${ChannelId}`;\n\nexport function channelLink<ChannelId extends Snowflake, GuildId extends Snowflake>(\n\tchannelId: ChannelId,\n\tguildId?: GuildId,\n): `https://discord.com/channels/@me/${ChannelId}` | `https://discord.com/channels/${GuildId}/${ChannelId}` {\n\treturn `https://discord.com/channels/${guildId ?? '@me'}/${channelId}`;\n}\n\n/**\n * Formats a message link for a direct message channel.\n *\n * @typeParam ChannelId - This is inferred by the supplied channel id\n * @typeParam MessageId - This is inferred by the supplied message id\n * @param channelId - The channel's id\n * @param messageId - The message's id\n */\nexport function messageLink<ChannelId extends Snowflake, MessageId extends Snowflake>(\n\tchannelId: ChannelId,\n\tmessageId: MessageId,\n): `https://discord.com/channels/@me/${ChannelId}/${MessageId}`;\n\n/**\n * Formats a message link for a guild channel.\n *\n * @typeParam ChannelId - This is inferred by the supplied channel id\n * @typeParam MessageId - This is inferred by the supplied message id\n * @typeParam GuildId - This is inferred by the supplied guild id\n * @param channelId - The channel's id\n * @param messageId - The message's id\n * @param guildId - The guild's id\n */\nexport function messageLink<ChannelId extends Snowflake, MessageId extends Snowflake, GuildId extends Snowflake>(\n\tchannelId: ChannelId,\n\tmessageId: MessageId,\n\tguildId: GuildId,\n): `https://discord.com/channels/${GuildId}/${ChannelId}/${MessageId}`;\n\nexport function messageLink<ChannelId extends Snowflake, MessageId extends Snowflake, GuildId extends Snowflake>(\n\tchannelId: ChannelId,\n\tmessageId: MessageId,\n\tguildId?: GuildId,\n):\n\t| `https://discord.com/channels/@me/${ChannelId}/${MessageId}`\n\t| `https://discord.com/channels/${GuildId}/${ChannelId}/${MessageId}` {\n\treturn `${guildId === undefined ? channelLink(channelId) : channelLink(channelId, guildId)}/${messageId}`;\n}\n\n/**\n * The heading levels for expanded markdown.\n */\nexport enum HeadingLevel {\n\t/**\n\t * The first heading level.\n\t */\n\tOne = 1,\n\t/**\n\t * The second heading level.\n\t */\n\tTwo,\n\t/**\n\t * The third heading level.\n\t */\n\tThree,\n}\n\n/**\n * Formats the content into a heading level.\n *\n * @typeParam Content - This is inferred by the supplied content\n * @param content - The content to wrap\n * @param level - The heading level\n */\nexport function heading<Content extends string>(content: Content, level?: HeadingLevel.One): `# ${Content}`;\n\n/**\n * Formats the content into a heading level.\n *\n * @typeParam Content - This is inferred by the supplied content\n * @param content - The content to wrap\n * @param level - The heading level\n */\nexport function heading<Content extends string>(content: Content, level: HeadingLevel.Two): `## ${Content}`;\n\n/**\n * Formats the content into a heading level.\n *\n * @typeParam Content - This is inferred by the supplied content\n * @param content - The content to wrap\n * @param level - The heading level\n */\nexport function heading<Content extends string>(content: Content, level: HeadingLevel.Three): `### ${Content}`;\n\nexport function heading(content: string, level?: HeadingLevel) {\n\tswitch (level) {\n\t\tcase HeadingLevel.Three:\n\t\t\treturn `### ${content}`;\n\t\tcase HeadingLevel.Two:\n\t\t\treturn `## ${content}`;\n\t\tdefault:\n\t\t\treturn `# ${content}`;\n\t}\n}\n\n/**\n * A type that recursively traverses into arrays.\n */\nexport type RecursiveArray<ItemType> = readonly (ItemType | RecursiveArray<ItemType>)[];\n\n/**\n * Callback function for list formatters.\n *\n * @internal\n */\nfunction listCallback(element: RecursiveArray<string>, startNumber?: number, depth = 0): string {\n\tif (Array.isArray(element)) {\n\t\treturn element.map((element) => listCallback(element, startNumber, depth + 1)).join('\\n');\n\t}\n\n\treturn `${' '.repeat(depth - 1)}${startNumber ? `${startNumber}.` : '-'} ${element}`;\n}\n\n/**\n * Formats the elements in the array to an ordered list.\n *\n * @param list - The array of elements to list\n * @param startNumber - The starting number for the list\n */\nexport function orderedList(list: RecursiveArray<string>, startNumber = 1): string {\n\treturn listCallback(list, Math.max(startNumber, 1));\n}\n\n/**\n * Formats the elements in the array to an unordered list.\n *\n * @param list - The array of elements to list\n */\nexport function unorderedList(list: RecursiveArray<string>): string {\n\treturn listCallback(list);\n}\n\n/**\n * Formats the content into a subtext.\n *\n * @typeParam Content - This is inferred by the supplied content\n * @param content - The content to wrap\n */\nexport function subtext<Content extends string>(content: Content): `-# ${Content}` {\n\treturn `-# ${content}`;\n}\n\n/**\n * Formats a date into a short date-time string.\n *\n * @param date - The date to format. Defaults to the current time\n */\nexport function time(date?: Date): `<t:${bigint}>`;\n\n/**\n * Formats a date given a format style.\n *\n * @typeParam Style - This is inferred by the supplied {@link TimestampStylesString}\n * @param date - The date to format\n * @param style - The style to use\n */\nexport function time<Style extends TimestampStylesString>(date: Date, style: Style): `<t:${bigint}:${Style}>`;\n\n/**\n * Formats the given timestamp into a short date-time string.\n *\n * @typeParam Seconds - This is inferred by the supplied timestamp\n * @param seconds - A Unix timestamp in seconds\n */\nexport function time<Seconds extends number>(seconds: Seconds): `<t:${Seconds}>`;\n\n/**\n * Formats the given timestamp into a short date-time string.\n *\n * @typeParam Seconds - This is inferred by the supplied timestamp\n * @typeParam Style - This is inferred by the supplied {@link TimestampStylesString}\n * @param seconds - A Unix timestamp in seconds\n * @param style - The style to use\n */\nexport function time<Seconds extends number, Style extends TimestampStylesString>(\n\tseconds: Seconds,\n\tstyle: Style,\n): `<t:${Seconds}:${Style}>`;\n\nexport function time(timeOrSeconds?: Date | number, style?: TimestampStylesString): string {\n\tif (typeof timeOrSeconds !== 'number') {\n\t\t// eslint-disable-next-line no-param-reassign\n\t\ttimeOrSeconds = Math.floor((timeOrSeconds?.getTime() ?? Date.now()) / 1_000);\n\t}\n\n\treturn typeof style === 'string' ? `<t:${timeOrSeconds}:${style}>` : `<t:${timeOrSeconds}>`;\n}\n\n/**\n * Formats an application directory link.\n *\n * @typeParam ApplicationId - This is inferred by the supplied application id\n * @param applicationId - The application id\n */\nexport function applicationDirectory<ApplicationId extends Snowflake>(\n\tapplicationId: ApplicationId,\n): `https://discord.com/application-directory/${ApplicationId}/store`;\n\n/**\n * Formats an application directory SKU link.\n *\n * @typeParam ApplicationId - This is inferred by the supplied application id\n * @typeParam SKUId - This is inferred by the supplied SKU id\n * @param applicationId - The application id\n * @param skuId - The SKU id\n */\nexport function applicationDirectory<ApplicationId extends Snowflake, SKUId extends Snowflake>(\n\tapplicationId: ApplicationId,\n\tskuId: SKUId,\n): `https://discord.com/application-directory/${ApplicationId}/store/${SKUId}`;\n\nexport function applicationDirectory<ApplicationId extends Snowflake, SKUId extends Snowflake>(\n\tapplicationId: ApplicationId,\n\tskuId?: SKUId,\n):\n\t| `https://discord.com/application-directory/${ApplicationId}/store/${SKUId}`\n\t| `https://discord.com/application-directory/${ApplicationId}/store` {\n\tconst url = `https://discord.com/application-directory/${applicationId}/store` as const;\n\treturn skuId ? `${url}/${skuId}` : url;\n}\n\n/**\n * Formats an email address into an email mention.\n *\n * @typeParam Email - This is inferred by the supplied email address\n * @param email - The email address to format\n */\nexport function email<Email extends string>(email: Email): `<${Email}>`;\n\n/**\n * Formats an email address and headers into an email mention.\n *\n * @typeParam Email - This is inferred by the supplied email address\n * @param email - The email address to format\n * @param headers - Optional headers to include in the email mention\n */\nexport function email<Email extends string>(\n\temail: Email,\n\theaders: Record<string, string | readonly string[]> | undefined,\n): `<${Email}?${string}>`;\n\n/**\n * Formats an email address into an email mention.\n *\n * @typeParam Email - This is inferred by the supplied email address\n * @param email - The email address to format\n * @param headers - Optional headers to include in the email mention\n */\nexport function email<Email extends string>(email: Email, headers?: Record<string, string | readonly string[]>) {\n\tif (headers) {\n\t\t// eslint-disable-next-line n/prefer-global/url-search-params\n\t\tconst searchParams = new URLSearchParams(\n\t\t\tObject.fromEntries(Object.entries(headers).map(([key, value]) => [key.toLowerCase(), value])),\n\t\t);\n\n\t\treturn `<${email}?${searchParams.toString()}>` as const;\n\t}\n\n\treturn `<${email}>` as const;\n}\n\n/**\n * Formats a phone number into a phone number mention.\n *\n * @typeParam PhoneNumber - This is inferred by the supplied phone number\n * @param phoneNumber - The phone number to format. Must start with a `+` sign.\n */\nexport function phoneNumber<PhoneNumber extends `+${string}`>(phoneNumber: PhoneNumber) {\n\tif (!phoneNumber.startsWith('+')) {\n\t\tthrow new Error('Phone number must start with a \"+\" sign.');\n\t}\n\n\treturn `<${phoneNumber}>` as const;\n}\n\n/**\n * The {@link https://discord.com/developers/docs/reference#message-formatting-timestamp-styles | message formatting timestamp styles}\n * supported by Discord.\n */\nexport const TimestampStyles = {\n\t/**\n\t * Short time format, consisting of hours and minutes.\n\t *\n\t * @example `16:20`\n\t */\n\tShortTime: 't',\n\n\t/**\n\t * Medium time format, consisting of hours, minutes, and seconds.\n\t *\n\t * @example `16:20:30`\n\t */\n\tMediumTime: 'T',\n\n\t/**\n\t * Long time format, consisting of hours, minutes, and seconds.\n\t *\n\t * @example `16:20:30`\n\t * @deprecated Use {@link TimestampStyles.MediumTime} instead.\n\t */\n\tLongTime: 'T',\n\n\t/**\n\t * Short date format, consisting of day, month, and year.\n\t *\n\t * @example `20/04/2021`\n\t */\n\tShortDate: 'd',\n\n\t/**\n\t * Long date format, consisting of day, month, and year.\n\t *\n\t * @example `April 20, 2021`\n\t */\n\tLongDate: 'D',\n\n\t/**\n\t * Long date-short time format, consisting of long date and short time.\n\t *\n\t * @example `April 20, 2021 at 16:20`\n\t */\n\tLongDateShortTime: 'f',\n\n\t/**\n\t * Short date-time format, consisting of short date and short time formats.\n\t *\n\t * @example `20 April 2021 16:20`\n\t * @deprecated Use {@link TimestampStyles.LongDateShortTime} instead.\n\t */\n\tShortDateTime: 'f',\n\n\t/**\n\t * Full date-short time format, consisting of full date and short time.\n\t *\n\t * @example `Tuesday, April 20, 2021 at 16:20`\n\t */\n\tFullDateShortTime: 'F',\n\n\t/**\n\t * Long date-time format, consisting of long date and short time formats.\n\t *\n\t * @example `Tuesday, 20 April 2021 16:20`\n\t * @deprecated Use {@link TimestampStyles.FullDateShortTime} instead.\n\t */\n\tLongDateTime: 'F',\n\n\t/**\n\t * Short date, short time format, consisting of short date and short time.\n\t *\n\t * @example `20/04/2021, 16:20`\n\t */\n\tShortDateShortTime: 's',\n\n\t/**\n\t * Short date, medium time format, consisting of short date and medium time.\n\t *\n\t * @example `20/04/2021, 16:20:30`\n\t */\n\tShortDateMediumTime: 'S',\n\n\t/**\n\t * Relative time format, consisting of a relative duration format.\n\t *\n\t * @example `2 months ago`\n\t */\n\tRelativeTime: 'R',\n} as const satisfies Record<string, string>;\n\n/**\n * The possible {@link TimestampStyles} values.\n */\nexport type TimestampStylesString = (typeof TimestampStyles)[keyof typeof TimestampStyles];\n\n/**\n * All the available faces from Discord's native slash commands.\n */\nexport enum Faces {\n\t/**\n\t * `¯\\_(ツ)_/¯`\n\t */\n\tShrug = '¯\\\\_(ツ)_/¯',\n\n\t/**\n\t * `(╯°□°)╯︵ ┻━┻`\n\t */\n\tTableflip = '(╯°□°)╯︵ ┻━┻',\n\n\t/**\n\t * `┬─┬ノ( º _ ºノ)`\n\t */\n\tUnflip = '┬─┬ノ( º _ ºノ)',\n}\n\n/**\n * All the available guild navigation mentions.\n */\nexport enum GuildNavigationMentions {\n\t/**\n\t * Browse Channels tab.\n\t */\n\tBrowse = '<id:browse>',\n\t/**\n\t * Customize tab with the server's {@link https://discord.com/developers/docs/resources/guild#guild-onboarding-object | onboarding prompts}.\n\t */\n\tCustomize = '<id:customize>',\n\t/**\n\t * {@link https://support.discord.com/hc/articles/13497665141655 | Server Guide} tab.\n\t */\n\tGuide = '<id:guide>',\n\t/**\n\t * {@link https://support.discord.com/hc/articles/10388356626711 | Linked Roles} tab.\n\t */\n\tLinkedRoles = '<id:linked-roles>',\n}\n",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"import mod from \"./v10.js\";\n\nexport default mod;\nexport const APIApplicationCommandPermissionsConstant = mod.APIApplicationCommandPermissionsConstant;\nexport const APIVersion = mod.APIVersion;\nexport const ActivityFlags = mod.ActivityFlags;\nexport const ActivityPlatform = mod.ActivityPlatform;\nexport const ActivityType = mod.ActivityType;\nexport const AllowedMentionsTypes = mod.AllowedMentionsTypes;\nexport const ApplicationCommandOptionType = mod.ApplicationCommandOptionType;\nexport const ApplicationCommandPermissionType = mod.ApplicationCommandPermissionType;\nexport const ApplicationCommandType = mod.ApplicationCommandType;\nexport const ApplicationFlags = mod.ApplicationFlags;\nexport const ApplicationIntegrationType = mod.ApplicationIntegrationType;\nexport const ApplicationRoleConnectionMetadataType = mod.ApplicationRoleConnectionMetadataType;\nexport const ApplicationWebhookEventStatus = mod.ApplicationWebhookEventStatus;\nexport const ApplicationWebhookEventType = mod.ApplicationWebhookEventType;\nexport const ApplicationWebhookType = mod.ApplicationWebhookType;\nexport const AttachmentFlags = mod.AttachmentFlags;\nexport const AuditLogEvent = mod.AuditLogEvent;\nexport const AuditLogOptionsType = mod.AuditLogOptionsType;\nexport const AutoModerationActionType = mod.AutoModerationActionType;\nexport const AutoModerationRuleEventType = mod.AutoModerationRuleEventType;\nexport const AutoModerationRuleKeywordPresetType = mod.AutoModerationRuleKeywordPresetType;\nexport const AutoModerationRuleTriggerType = mod.AutoModerationRuleTriggerType;\nexport const ButtonStyle = mod.ButtonStyle;\nexport const CDNRoutes = mod.CDNRoutes;\nexport const ChannelFlags = mod.ChannelFlags;\nexport const ChannelType = mod.ChannelType;\nexport const ComponentType = mod.ComponentType;\nexport const ConnectionService = mod.ConnectionService;\nexport const ConnectionVisibility = mod.ConnectionVisibility;\nexport const EmbedType = mod.EmbedType;\nexport const EntitlementOwnerType = mod.EntitlementOwnerType;\nexport const EntitlementType = mod.EntitlementType;\nexport const EntryPointCommandHandlerType = mod.EntryPointCommandHandlerType;\nexport const FormattingPatterns = mod.FormattingPatterns;\nexport const ForumLayoutType = mod.ForumLayoutType;\nexport const GatewayCloseCodes = mod.GatewayCloseCodes;\nexport const GatewayDispatchEvents = mod.GatewayDispatchEvents;\nexport const GatewayIntentBits = mod.GatewayIntentBits;\nexport const GatewayOpcodes = mod.GatewayOpcodes;\nexport const GatewayVersion = mod.GatewayVersion;\nexport const GuildDefaultMessageNotifications = mod.GuildDefaultMessageNotifications;\nexport const GuildExplicitContentFilter = mod.GuildExplicitContentFilter;\nexport const GuildFeature = mod.GuildFeature;\nexport const GuildHubType = mod.GuildHubType;\nexport const GuildMFALevel = mod.GuildMFALevel;\nexport const GuildMemberFlags = mod.GuildMemberFlags;\nexport const GuildNSFWLevel = mod.GuildNSFWLevel;\nexport const GuildOnboardingMode = mod.GuildOnboardingMode;\nexport const GuildOnboardingPromptType = mod.GuildOnboardingPromptType;\nexport const GuildPremiumTier = mod.GuildPremiumTier;\nexport const GuildScheduledEventEntityType = mod.GuildScheduledEventEntityType;\nexport const GuildScheduledEventPrivacyLevel = mod.GuildScheduledEventPrivacyLevel;\nexport const GuildScheduledEventRecurrenceRuleFrequency = mod.GuildScheduledEventRecurrenceRuleFrequency;\nexport const GuildScheduledEventRecurrenceRuleMonth = mod.GuildScheduledEventRecurrenceRuleMonth;\nexport const GuildScheduledEventRecurrenceRuleWeekday = mod.GuildScheduledEventRecurrenceRuleWeekday;\nexport const GuildScheduledEventStatus = mod.GuildScheduledEventStatus;\nexport const GuildSystemChannelFlags = mod.GuildSystemChannelFlags;\nexport const GuildVerificationLevel = mod.GuildVerificationLevel;\nexport const GuildWidgetStyle = mod.GuildWidgetStyle;\nexport const ImageFormat = mod.ImageFormat;\nexport const IntegrationExpireBehavior = mod.IntegrationExpireBehavior;\nexport const InteractionContextType = mod.InteractionContextType;\nexport const InteractionResponseType = mod.InteractionResponseType;\nexport const InteractionType = mod.InteractionType;\nexport const InviteFlags = mod.InviteFlags;\nexport const InviteTargetType = mod.InviteTargetType;\nexport const InviteType = mod.InviteType;\nexport const Locale = mod.Locale;\nexport const MembershipScreeningFieldType = mod.MembershipScreeningFieldType;\nexport const MessageActivityType = mod.MessageActivityType;\nexport const MessageFlags = mod.MessageFlags;\nexport const MessageReferenceType = mod.MessageReferenceType;\nexport const MessageType = mod.MessageType;\nexport const NameplatePalette = mod.NameplatePalette;\nexport const OAuth2Routes = mod.OAuth2Routes;\nexport const OAuth2Scopes = mod.OAuth2Scopes;\nexport const OverwriteType = mod.OverwriteType;\nexport const PermissionFlagsBits = mod.PermissionFlagsBits;\nexport const PollLayoutType = mod.PollLayoutType;\nexport const PresenceUpdateStatus = mod.PresenceUpdateStatus;\nexport const RESTJSONErrorCodes = mod.RESTJSONErrorCodes;\nexport const RPCCloseEventCodes = mod.RPCCloseEventCodes;\nexport const RPCCommands = mod.RPCCommands;\nexport const RPCDeviceType = mod.RPCDeviceType;\nexport const RPCErrorCodes = mod.RPCErrorCodes;\nexport const RPCEvents = mod.RPCEvents;\nexport const RPCVersion = mod.RPCVersion;\nexport const RPCVoiceSettingsModeType = mod.RPCVoiceSettingsModeType;\nexport const RPCVoiceShortcutKeyComboKeyType = mod.RPCVoiceShortcutKeyComboKeyType;\nexport const ReactionType = mod.ReactionType;\nexport const RelationshipType = mod.RelationshipType;\nexport const RoleFlags = mod.RoleFlags;\nexport const RouteBases = mod.RouteBases;\nexport const Routes = mod.Routes;\nexport const SKUFlags = mod.SKUFlags;\nexport const SKUType = mod.SKUType;\nexport const SelectMenuDefaultValueType = mod.SelectMenuDefaultValueType;\nexport const SeparatorSpacingSize = mod.SeparatorSpacingSize;\nexport const SortOrderType = mod.SortOrderType;\nexport const StageInstancePrivacyLevel = mod.StageInstancePrivacyLevel;\nexport const StatusDisplayType = mod.StatusDisplayType;\nexport const StickerFormatType = mod.StickerFormatType;\nexport const StickerPackApplicationId = mod.StickerPackApplicationId;\nexport const StickerType = mod.StickerType;\nexport const SubscriptionStatus = mod.SubscriptionStatus;\nexport const TeamMemberMembershipState = mod.TeamMemberMembershipState;\nexport const TeamMemberRole = mod.TeamMemberRole;\nexport const TextInputStyle = mod.TextInputStyle;\nexport const ThreadAutoArchiveDuration = mod.ThreadAutoArchiveDuration;\nexport const ThreadMemberFlags = mod.ThreadMemberFlags;\nexport const UnfurledMediaItemLoadingState = mod.UnfurledMediaItemLoadingState;\nexport const UserFlags = mod.UserFlags;\nexport const UserPremiumType = mod.UserPremiumType;\nexport const Utils = mod.Utils;\nexport const VideoQualityMode = mod.VideoQualityMode;\nexport const VoiceChannelEffectSendAnimationType = mod.VoiceChannelEffectSendAnimationType;\nexport const VoiceConnectionStates = mod.VoiceConnectionStates;\nexport const WebhookType = mod.WebhookType;\nexport const urlSafeCharacters = mod.urlSafeCharacters;\n","/**\n * Lazy is a wrapper around a value that is computed lazily. It is useful for\n * cases where the value is expensive to compute and the computation may not\n * be needed at all.\n *\n * @param cb - The callback to lazily evaluate\n * @typeParam Value - The type of the value\n * @example\n * ```ts\n * const value = lazy(() => computeExpensiveValue());\n * ```\n */\n// eslint-disable-next-line promise/prefer-await-to-callbacks\nexport function lazy<Value>(cb: () => Value): () => Value {\n\tlet defaultValue: Value;\n\t// eslint-disable-next-line promise/prefer-await-to-callbacks\n\treturn () => (defaultValue ??= cb());\n}\n","/**\n * Options for creating a range\n */\nexport interface RangeOptions {\n\t/**\n\t * The end of the range (exclusive)\n\t */\n\tend: number;\n\t/**\n\t * The start of the range (inclusive)\n\t */\n\tstart: number;\n\t/**\n\t * The amount to increment by\n\t *\n\t * @defaultValue `1`\n\t */\n\tstep?: number;\n}\n\n/**\n * A generator to yield numbers in a given range\n *\n * @remarks\n * This method is end-exclusive, for example the last number yielded by `range(5)` is 4. If you\n * prefer for the end to be included add 1 to the range or `end` option.\n * @param range - A number representing the range to yield (exclusive) or an object with start, end and step\n * @example\n * Basic range\n * ```ts\n * for (const number of range(5)) {\n * console.log(number);\n * }\n * // Prints 0, 1, 2, 3, 4\n * ```\n * @example\n * Range with a step\n * ```ts\n * for (const number of range({ start: 3, end: 10, step: 2 })) {\n * \tconsole.log(number);\n * }\n * // Prints 3, 5, 7, 9\n * ```\n */\nexport function* range(range: RangeOptions | number) {\n\tlet rangeEnd: number;\n\tlet start = 0;\n\tlet step = 1;\n\n\tif (typeof range === 'number') {\n\t\trangeEnd = range;\n\t} else {\n\t\tstart = range.start;\n\t\trangeEnd = range.end;\n\t\tstep = range.step ?? 1;\n\t}\n\n\tfor (let index = start; index < rangeEnd; index += step) {\n\t\tyield index;\n\t}\n}\n","/**\n * Calculates the shard id for a given guild id.\n *\n * @param guildId - The guild id to calculate the shard id for\n * @param shardCount - The total number of shards\n */\nexport function calculateShardId(guildId: string, shardCount: number) {\n\treturn Number(BigInt(guildId) >> 22n) % shardCount;\n}\n","/* eslint-disable n/prefer-global/process */\n\nexport function shouldUseGlobalFetchAndWebSocket() {\n\t// Browser env and deno when ran directly\n\tif (typeof globalThis.process === 'undefined') {\n\t\treturn 'fetch' in globalThis && 'WebSocket' in globalThis;\n\t}\n\n\tif ('versions' in globalThis.process) {\n\t\treturn 'deno' in globalThis.process.versions || 'bun' in globalThis.process.versions;\n\t}\n\n\treturn false;\n}\n","/* eslint-disable n/prefer-global/process */\n\n/**\n * Resolves the user agent appendix string for the current environment.\n */\nexport function getUserAgentAppendix(): string {\n\t// https://vercel.com/docs/concepts/functions/edge-functions/edge-runtime#check-if-you're-running-on-the-edge-runtime\n\t// @ts-expect-error Vercel Edge functions\n\tif (typeof globalThis.EdgeRuntime !== 'undefined') {\n\t\treturn 'Vercel-Edge-Functions';\n\t}\n\n\t// @ts-expect-error Cloudflare Workers\n\tif (typeof globalThis.R2 !== 'undefined' && typeof globalThis.WebSocketPair !== 'undefined') {\n\t\t// https://developers.cloudflare.com/workers/runtime-apis/web-standards/#navigatoruseragent\n\t\treturn 'Cloudflare-Workers';\n\t}\n\n\t// https://docs.netlify.com/edge-functions/api/#netlify-global-object\n\t// @ts-expect-error Netlify Edge functions\n\tif (typeof globalThis.Netlify !== 'undefined') {\n\t\treturn 'Netlify-Edge-Functions';\n\t}\n\n\t// Most (if not all) edge environments will have `process` defined. Within a web browser we'll extract it using `navigator.userAgent`.\n\tif (typeof globalThis.process !== 'object') {\n\t\t// @ts-expect-error web env\n\t\tif (typeof globalThis.navigator === 'object') {\n\t\t\t// @ts-expect-error web env\n\t\t\treturn globalThis.navigator.userAgent;\n\t\t}\n\n\t\treturn 'UnknownEnvironment';\n\t}\n\n\tif ('versions' in globalThis.process) {\n\t\tif ('deno' in globalThis.process.versions) {\n\t\t\treturn `Deno/${globalThis.process.versions.deno}`;\n\t\t}\n\n\t\tif ('bun' in globalThis.process.versions) {\n\t\t\treturn `Bun/${globalThis.process.versions.bun}`;\n\t\t}\n\n\t\tif ('node' in globalThis.process.versions) {\n\t\t\treturn `Node.js/${globalThis.process.versions.node}`;\n\t\t}\n\t}\n\n\treturn 'UnknownEnvironment';\n}\n","/**\n * Polyfill for `Symbol.dispose` and `Symbol.asyncDispose` which is used as a part of\n * {@link https://github.com/tc39/proposal-explicit-resource-management}. Node versions below 18.x\n * don't have these symbols by default, so we need to polyfill them.\n */\nexport function polyfillDispose() {\n\t// Polyfill for `Symbol.dispose` and `Symbol.asyncDispose` if not available.\n\t// Taken from https://www.typescriptlang.org/docs/handbook/release-notes/typescript-5-2.html#using-declarations-and-explicit-resource-management\n\n\t// @ts-expect-error This is a polyfill, so it's fine to write\n\tSymbol.dispose ??= Symbol('Symbol.dispose');\n\t// @ts-expect-error Same as above\n\tSymbol.asyncDispose ??= Symbol('Symbol.asyncDispose');\n}\n","/**\n * Represents an object capable of representing itself as a JSON object\n *\n * @typeParam Value - The JSON type corresponding to {@link JSONEncodable.toJSON} outputs.\n */\nexport interface JSONEncodable<Value> {\n\t/**\n\t * Transforms this object to its JSON format\n\t */\n\ttoJSON(): Value;\n}\n\n/**\n * Indicates if an object is encodable or not.\n *\n * @param maybeEncodable - The object to check against\n */\nexport function isJSONEncodable(maybeEncodable: unknown): maybeEncodable is JSONEncodable<unknown> {\n\treturn maybeEncodable !== null && typeof maybeEncodable === 'object' && 'toJSON' in maybeEncodable;\n}\n","/**\n * Represents a structure that can be checked against another\n * given structure for equality\n *\n * @typeParam Value - The type of object to compare the current object to\n */\nexport interface Equatable<Value> {\n\t/**\n\t * Whether or not this is equal to another structure\n\t */\n\tequals(other: Value): boolean;\n}\n\n/**\n * Indicates if an object is equatable or not.\n *\n * @param maybeEquatable - The object to check against\n */\nexport function isEquatable(maybeEquatable: unknown): maybeEquatable is Equatable<unknown> {\n\treturn maybeEquatable !== null && typeof maybeEquatable === 'object' && 'equals' in maybeEquatable;\n}\n","import type { GatewayOpcodeRateLimitMetadataMap, GatewayRateLimitedDispatchData } from 'discord-api-types/v10';\n\n/**\n * Represents the error thrown when the gateway emits a `RATE_LIMITED` event after a certain request.\n */\nexport class GatewayRateLimitError extends Error {\n\tpublic override readonly name = GatewayRateLimitError.name;\n\n\tpublic constructor(\n\t\t/**\n\t\t * The data associated with the rate limit event\n\t\t */\n\t\tpublic readonly data: GatewayRateLimitedDispatchData<keyof GatewayOpcodeRateLimitMetadataMap>,\n\t\t/**\n\t\t * The payload data that lead to this rate limit\n\t\t *\n\t\t * @privateRemarks\n\t\t * Too complicated to type properly here (i.e. extract the ['data']\n\t\t * of event payloads that have t = keyof GatewayOpcodeRateLimitMetadataMap)\n\t\t */\n\t\tpublic readonly payload: unknown,\n\t) {\n\t\tsuper(`Request with opcode ${data.opcode} was rate limited. Retry after ${data.retry_after} seconds.`);\n\t}\n}\n","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n","/**\n * Utility function that works like `Object.apply`, but copies getters and setters properly as well. Additionally gives\n * the option to exclude properties by name.\n */\nconst copyProps = (dest, src, exclude = []) => {\n const props = Object.getOwnPropertyDescriptors(src);\n for (let prop of exclude)\n delete props[prop];\n Object.defineProperties(dest, props);\n};\n/**\n * Returns the full chain of prototypes up until Object.prototype given a starting object. The order of prototypes will\n * be closest to farthest in the chain.\n */\nconst protoChain = (obj, currentChain = [obj]) => {\n const proto = Object.getPrototypeOf(obj);\n if (proto === null)\n return currentChain;\n return protoChain(proto, [...currentChain, proto]);\n};\n/**\n * Identifies the nearest ancestor common to all the given objects in their prototype chains. For most unrelated\n * objects, this function should return Object.prototype.\n */\nconst nearestCommonProto = (...objs) => {\n if (objs.length === 0)\n return undefined;\n let commonProto = undefined;\n const protoChains = objs.map(obj => protoChain(obj));\n while (protoChains.every(protoChain => protoChain.length > 0)) {\n const protos = protoChains.map(protoChain => protoChain.pop());\n const potentialCommonProto = protos[0];\n if (protos.every(proto => proto === potentialCommonProto))\n commonProto = potentialCommonProto;\n else\n break;\n }\n return commonProto;\n};\n/**\n * Creates a new prototype object that is a mixture of the given prototypes. The mixing is achieved by first\n * identifying the nearest common ancestor and using it as the prototype for a new object. Then all properties/methods\n * downstream of this prototype (ONLY downstream) are copied into the new object.\n *\n * The resulting prototype is more performant than softMixProtos(...), as well as ES5 compatible. However, it's not as\n * flexible as updates to the source prototypes aren't captured by the mixed result. See softMixProtos for why you may\n * want to use that instead.\n */\nconst hardMixProtos = (ingredients, constructor, exclude = []) => {\n var _a;\n const base = (_a = nearestCommonProto(...ingredients)) !== null && _a !== void 0 ? _a : Object.prototype;\n const mixedProto = Object.create(base);\n // Keeps track of prototypes we've already visited to avoid copying the same properties multiple times. We init the\n // list with the proto chain below the nearest common ancestor because we don't want any of those methods mixed in\n // when they will already be accessible via prototype access.\n const visitedProtos = protoChain(base);\n for (let prototype of ingredients) {\n let protos = protoChain(prototype);\n // Apply the prototype chain in reverse order so that old methods don't override newer ones.\n for (let i = protos.length - 1; i >= 0; i--) {\n let newProto = protos[i];\n if (visitedProtos.indexOf(newProto) === -1) {\n copyProps(mixedProto, newProto, ['constructor', ...exclude]);\n visitedProtos.push(newProto);\n }\n }\n }\n mixedProto.constructor = constructor;\n return mixedProto;\n};\nconst unique = (arr) => arr.filter((e, i) => arr.indexOf(e) == i);\n\n/**\n * Finds the ingredient with the given prop, searching in reverse order and breadth-first if searching ingredient\n * prototypes is required.\n */\nconst getIngredientWithProp = (prop, ingredients) => {\n const protoChains = ingredients.map(ingredient => protoChain(ingredient));\n // since we search breadth-first, we need to keep track of our depth in the prototype chains\n let protoDepth = 0;\n // not all prototype chains are the same depth, so this remains true as long as at least one of the ingredients'\n // prototype chains has an object at this depth\n let protosAreLeftToSearch = true;\n while (protosAreLeftToSearch) {\n // with the start of each horizontal slice, we assume this is the one that's deeper than any of the proto chains\n protosAreLeftToSearch = false;\n // scan through the ingredients right to left\n for (let i = ingredients.length - 1; i >= 0; i--) {\n const searchTarget = protoChains[i][protoDepth];\n if (searchTarget !== undefined && searchTarget !== null) {\n // if we find something, this is proof that this horizontal slice potentially more objects to search\n protosAreLeftToSearch = true;\n // eureka, we found it\n if (Object.getOwnPropertyDescriptor(searchTarget, prop) != undefined) {\n return protoChains[i][0];\n }\n }\n }\n protoDepth++;\n }\n return undefined;\n};\n/**\n * \"Mixes\" ingredients by wrapping them in a Proxy. The optional prototype argument allows the mixed object to sit\n * downstream of an existing prototype chain. Note that \"properties\" cannot be added, deleted, or modified.\n */\nconst proxyMix = (ingredients, prototype = Object.prototype) => new Proxy({}, {\n getPrototypeOf() {\n return prototype;\n },\n setPrototypeOf() {\n throw Error('Cannot set prototype of Proxies created by ts-mixer');\n },\n getOwnPropertyDescriptor(_, prop) {\n return Object.getOwnPropertyDescriptor(getIngredientWithProp(prop, ingredients) || {}, prop);\n },\n defineProperty() {\n throw new Error('Cannot define new properties on Proxies created by ts-mixer');\n },\n has(_, prop) {\n return getIngredientWithProp(prop, ingredients) !== undefined || prototype[prop] !== undefined;\n },\n get(_, prop) {\n return (getIngredientWithProp(prop, ingredients) || prototype)[prop];\n },\n set(_, prop, val) {\n const ingredientWithProp = getIngredientWithProp(prop, ingredients);\n if (ingredientWithProp === undefined)\n throw new Error('Cannot set new properties on Proxies created by ts-mixer');\n ingredientWithProp[prop] = val;\n return true;\n },\n deleteProperty() {\n throw new Error('Cannot delete properties on Proxies created by ts-mixer');\n },\n ownKeys() {\n return ingredients\n .map(Object.getOwnPropertyNames)\n .reduce((prev, curr) => curr.concat(prev.filter(key => curr.indexOf(key) < 0)));\n },\n});\n/**\n * Creates a new proxy-prototype object that is a \"soft\" mixture of the given prototypes. The mixing is achieved by\n * proxying all property access to the ingredients. This is not ES5 compatible and less performant. However, any\n * changes made to the source prototypes will be reflected in the proxy-prototype, which may be desirable.\n */\nconst softMixProtos = (ingredients, constructor) => proxyMix([...ingredients, { constructor }]);\n\nconst settings = {\n initFunction: null,\n staticsStrategy: 'copy',\n prototypeStrategy: 'copy',\n decoratorInheritance: 'deep',\n};\n\n// Keeps track of constituent classes for every mixin class created by ts-mixer.\nconst mixins = new WeakMap();\nconst getMixinsForClass = (clazz) => mixins.get(clazz);\nconst registerMixins = (mixedClass, constituents) => mixins.set(mixedClass, constituents);\nconst hasMixin = (instance, mixin) => {\n if (instance instanceof mixin)\n return true;\n const constructor = instance.constructor;\n const visited = new Set();\n let frontier = new Set();\n frontier.add(constructor);\n while (frontier.size > 0) {\n // check if the frontier has the mixin we're looking for. if not, we can say we visited every item in the frontier\n if (frontier.has(mixin))\n return true;\n frontier.forEach((item) => visited.add(item));\n // build a new frontier based on the associated mixin classes and prototype chains of each frontier item\n const newFrontier = new Set();\n frontier.forEach((item) => {\n var _a;\n const itemConstituents = (_a = mixins.get(item)) !== null && _a !== void 0 ? _a : protoChain(item.prototype)\n .map((proto) => proto.constructor)\n .filter((item) => item !== null);\n if (itemConstituents)\n itemConstituents.forEach((constituent) => {\n if (!visited.has(constituent) && !frontier.has(constituent))\n newFrontier.add(constituent);\n });\n });\n // we have a new frontier, now search again\n frontier = newFrontier;\n }\n // if we get here, we couldn't find the mixin anywhere in the prototype chain or associated mixin classes\n return false;\n};\n\nconst mergeObjectsOfDecorators = (o1, o2) => {\n var _a, _b;\n const allKeys = unique([...Object.getOwnPropertyNames(o1), ...Object.getOwnPropertyNames(o2)]);\n const mergedObject = {};\n for (let key of allKeys)\n mergedObject[key] = unique([...((_a = o1 === null || o1 === void 0 ? void 0 : o1[key]) !== null && _a !== void 0 ? _a : []), ...((_b = o2 === null || o2 === void 0 ? void 0 : o2[key]) !== null && _b !== void 0 ? _b : [])]);\n return mergedObject;\n};\nconst mergePropertyAndMethodDecorators = (d1, d2) => {\n var _a, _b, _c, _d;\n return ({\n property: mergeObjectsOfDecorators((_a = d1 === null || d1 === void 0 ? void 0 : d1.property) !== null && _a !== void 0 ? _a : {}, (_b = d2 === null || d2 === void 0 ? void 0 : d2.property) !== null && _b !== void 0 ? _b : {}),\n method: mergeObjectsOfDecorators((_c = d1 === null || d1 === void 0 ? void 0 : d1.method) !== null && _c !== void 0 ? _c : {}, (_d = d2 === null || d2 === void 0 ? void 0 : d2.method) !== null && _d !== void 0 ? _d : {}),\n });\n};\nconst mergeDecorators = (d1, d2) => {\n var _a, _b, _c, _d, _e, _f;\n return ({\n class: unique([...(_a = d1 === null || d1 === void 0 ? void 0 : d1.class) !== null && _a !== void 0 ? _a : [], ...(_b = d2 === null || d2 === void 0 ? void 0 : d2.class) !== null && _b !== void 0 ? _b : []]),\n static: mergePropertyAndMethodDecorators((_c = d1 === null || d1 === void 0 ? void 0 : d1.static) !== null && _c !== void 0 ? _c : {}, (_d = d2 === null || d2 === void 0 ? void 0 : d2.static) !== null && _d !== void 0 ? _d : {}),\n instance: mergePropertyAndMethodDecorators((_e = d1 === null || d1 === void 0 ? void 0 : d1.instance) !== null && _e !== void 0 ? _e : {}, (_f = d2 === null || d2 === void 0 ? void 0 : d2.instance) !== null && _f !== void 0 ? _f : {}),\n });\n};\nconst decorators = new Map();\nconst findAllConstituentClasses = (...classes) => {\n var _a;\n const allClasses = new Set();\n const frontier = new Set([...classes]);\n while (frontier.size > 0) {\n for (let clazz of frontier) {\n const protoChainClasses = protoChain(clazz.prototype).map(proto => proto.constructor);\n const mixinClasses = (_a = getMixinsForClass(clazz)) !== null && _a !== void 0 ? _a : [];\n const potentiallyNewClasses = [...protoChainClasses, ...mixinClasses];\n const newClasses = potentiallyNewClasses.filter(c => !allClasses.has(c));\n for (let newClass of newClasses)\n frontier.add(newClass);\n allClasses.add(clazz);\n frontier.delete(clazz);\n }\n }\n return [...allClasses];\n};\nconst deepDecoratorSearch = (...classes) => {\n const decoratorsForClassChain = findAllConstituentClasses(...classes)\n .map(clazz => decorators.get(clazz))\n .filter(decorators => !!decorators);\n if (decoratorsForClassChain.length == 0)\n return {};\n if (decoratorsForClassChain.length == 1)\n return decoratorsForClassChain[0];\n return decoratorsForClassChain.reduce((d1, d2) => mergeDecorators(d1, d2));\n};\nconst directDecoratorSearch = (...classes) => {\n const classDecorators = classes.map(clazz => getDecoratorsForClass(clazz));\n if (classDecorators.length === 0)\n return {};\n if (classDecorators.length === 1)\n return classDecorators[0];\n return classDecorators.reduce((d1, d2) => mergeDecorators(d1, d2));\n};\nconst getDecoratorsForClass = (clazz) => {\n let decoratorsForClass = decorators.get(clazz);\n if (!decoratorsForClass) {\n decoratorsForClass = {};\n decorators.set(clazz, decoratorsForClass);\n }\n return decoratorsForClass;\n};\nconst decorateClass = (decorator) => ((clazz) => {\n const decoratorsForClass = getDecoratorsForClass(clazz);\n let classDecorators = decoratorsForClass.class;\n if (!classDecorators) {\n classDecorators = [];\n decoratorsForClass.class = classDecorators;\n }\n classDecorators.push(decorator);\n return decorator(clazz);\n});\nconst decorateMember = (decorator) => ((object, key, ...otherArgs) => {\n var _a, _b, _c;\n const decoratorTargetType = typeof object === 'function' ? 'static' : 'instance';\n const decoratorType = typeof object[key] === 'function' ? 'method' : 'property';\n const clazz = decoratorTargetType === 'static' ? object : object.constructor;\n const decoratorsForClass = getDecoratorsForClass(clazz);\n const decoratorsForTargetType = (_a = decoratorsForClass === null || decoratorsForClass === void 0 ? void 0 : decoratorsForClass[decoratorTargetType]) !== null && _a !== void 0 ? _a : {};\n decoratorsForClass[decoratorTargetType] = decoratorsForTargetType;\n let decoratorsForType = (_b = decoratorsForTargetType === null || decoratorsForTargetType === void 0 ? void 0 : decoratorsForTargetType[decoratorType]) !== null && _b !== void 0 ? _b : {};\n decoratorsForTargetType[decoratorType] = decoratorsForType;\n let decoratorsForKey = (_c = decoratorsForType === null || decoratorsForType === void 0 ? void 0 : decoratorsForType[key]) !== null && _c !== void 0 ? _c : [];\n decoratorsForType[key] = decoratorsForKey;\n // @ts-ignore: array is type `A[] | B[]` and item is type `A | B`, so technically a type error, but it's fine\n decoratorsForKey.push(decorator);\n // @ts-ignore\n return decorator(object, key, ...otherArgs);\n});\nconst decorate = (decorator) => ((...args) => {\n if (args.length === 1)\n return decorateClass(decorator)(args[0]);\n return decorateMember(decorator)(...args);\n});\n\nfunction Mixin(...constructors) {\n var _a, _b, _c;\n const prototypes = constructors.map(constructor => constructor.prototype);\n // Here we gather up the init functions of the ingredient prototypes, combine them into one init function, and\n // attach it to the mixed class prototype. The reason we do this is because we want the init functions to mix\n // similarly to constructors -- not methods, which simply override each other.\n const initFunctionName = settings.initFunction;\n if (initFunctionName !== null) {\n const initFunctions = prototypes\n .map(proto => proto[initFunctionName])\n .filter(func => typeof func === 'function');\n const combinedInitFunction = function (...args) {\n for (let initFunction of initFunctions)\n initFunction.apply(this, args);\n };\n const extraProto = { [initFunctionName]: combinedInitFunction };\n prototypes.push(extraProto);\n }\n function MixedClass(...args) {\n for (const constructor of constructors)\n // @ts-ignore: potentially abstract class\n copyProps(this, new constructor(...args));\n if (initFunctionName !== null && typeof this[initFunctionName] === 'function')\n this[initFunctionName].apply(this, args);\n }\n MixedClass.prototype = settings.prototypeStrategy === 'copy'\n ? hardMixProtos(prototypes, MixedClass)\n : softMixProtos(prototypes, MixedClass);\n Object.setPrototypeOf(MixedClass, settings.staticsStrategy === 'copy'\n ? hardMixProtos(constructors, null, ['prototype'])\n : proxyMix(constructors, Function.prototype));\n let DecoratedMixedClass = MixedClass;\n if (settings.decoratorInheritance !== 'none') {\n const classDecorators = settings.decoratorInheritance === 'deep'\n ? deepDecoratorSearch(...constructors)\n : directDecoratorSearch(...constructors);\n for (let decorator of (_a = classDecorators === null || classDecorators === void 0 ? void 0 : classDecorators.class) !== null && _a !== void 0 ? _a : []) {\n const result = decorator(DecoratedMixedClass);\n if (result) {\n DecoratedMixedClass = result;\n }\n }\n applyPropAndMethodDecorators((_b = classDecorators === null || classDecorators === void 0 ? void 0 : classDecorators.static) !== null && _b !== void 0 ? _b : {}, DecoratedMixedClass);\n applyPropAndMethodDecorators((_c = classDecorators === null || classDecorators === void 0 ? void 0 : classDecorators.instance) !== null && _c !== void 0 ? _c : {}, DecoratedMixedClass.prototype);\n }\n registerMixins(DecoratedMixedClass, constructors);\n return DecoratedMixedClass;\n}\nconst applyPropAndMethodDecorators = (propAndMethodDecorators, target) => {\n const propDecorators = propAndMethodDecorators.property;\n const methodDecorators = propAndMethodDecorators.method;\n if (propDecorators)\n for (let key in propDecorators)\n for (let decorator of propDecorators[key])\n decorator(target, key);\n if (methodDecorators)\n for (let key in methodDecorators)\n for (let decorator of methodDecorators[key])\n decorator(target, key, Object.getOwnPropertyDescriptor(target, key));\n};\n/**\n * A decorator version of the `Mixin` function. You'll want to use this instead of `Mixin` for mixing generic classes.\n */\nconst mix = (...ingredients) => decoratedClass => {\n // @ts-ignore\n const mixedClass = Mixin(...ingredients.concat([decoratedClass]));\n Object.defineProperty(mixedClass, 'name', {\n value: decoratedClass.name,\n writable: false,\n });\n return mixedClass;\n};\n\nexport { Mixin, decorate, hasMixin, mix, settings };\n","let validate = true;\n\n/**\n * Enables validators.\n *\n * @returns Whether validation is occurring.\n */\nexport function enableValidators() {\n\treturn (validate = true);\n}\n\n/**\n * Disables validators.\n *\n * @returns Whether validation is occurring.\n */\nexport function disableValidators() {\n\treturn (validate = false);\n}\n\n/**\n * Checks whether validation is occurring.\n */\nexport function isValidationEnabled() {\n\treturn validate;\n}\n","import { s } from '@sapphire/shapeshift';\nimport type { APIEmbedField } from 'discord-api-types/v10';\nimport { isValidationEnabled } from '../../util/validation.js';\n\nexport const fieldNamePredicate = s.string().lengthLessThanOrEqual(256).setValidationEnabled(isValidationEnabled);\n\nexport const fieldValuePredicate = s.string().lengthLessThanOrEqual(1_024).setValidationEnabled(isValidationEnabled);\n\nexport const fieldInlinePredicate = s.boolean().optional();\n\nexport const embedFieldPredicate = s\n\t.object({\n\t\tname: fieldNamePredicate,\n\t\tvalue: fieldValuePredicate,\n\t\tinline: fieldInlinePredicate,\n\t})\n\t.setValidationEnabled(isValidationEnabled);\n\nexport const embedFieldsArrayPredicate = embedFieldPredicate.array().setValidationEnabled(isValidationEnabled);\n\nexport const fieldLengthPredicate = s.number().lessThanOrEqual(25).setValidationEnabled(isValidationEnabled);\n\nexport function validateFieldLength(amountAdding: number, fields?: APIEmbedField[]): void {\n\tfieldLengthPredicate.parse((fields?.length ?? 0) + amountAdding);\n}\n\nexport const authorNamePredicate = fieldNamePredicate\n\t.lengthGreaterThanOrEqual(1)\n\t.nullable()\n\t.setValidationEnabled(isValidationEnabled);\n\nexport const imageURLPredicate = s\n\t.string()\n\t.url({\n\t\tallowedProtocols: ['http:', 'https:', 'attachment:'],\n\t})\n\t.nullish()\n\t.setValidationEnabled(isValidationEnabled);\n\nexport const urlPredicate = s\n\t.string()\n\t.url({\n\t\tallowedProtocols: ['http:', 'https:'],\n\t})\n\t.nullish()\n\t.setValidationEnabled(isValidationEnabled);\n\nexport const embedAuthorPredicate = s\n\t.object({\n\t\tname: authorNamePredicate,\n\t\ticonURL: imageURLPredicate,\n\t\turl: urlPredicate,\n\t})\n\t.setValidationEnabled(isValidationEnabled);\n\nexport const RGBPredicate = s\n\t.number()\n\t.int()\n\t.greaterThanOrEqual(0)\n\t.lessThanOrEqual(255)\n\t.setValidationEnabled(isValidationEnabled);\nexport const colorPredicate = s\n\t.number()\n\t.int()\n\t.greaterThanOrEqual(0)\n\t.lessThanOrEqual(0xffffff)\n\t.or(s.tuple([RGBPredicate, RGBPredicate, RGBPredicate]))\n\t.nullable()\n\t.setValidationEnabled(isValidationEnabled);\n\nexport const descriptionPredicate = s\n\t.string()\n\t.lengthGreaterThanOrEqual(1)\n\t.lengthLessThanOrEqual(4_096)\n\t.nullable()\n\t.setValidationEnabled(isValidationEnabled);\n\nexport const footerTextPredicate = s\n\t.string()\n\t.lengthGreaterThanOrEqual(1)\n\t.lengthLessThanOrEqual(2_048)\n\t.nullable()\n\t.setValidationEnabled(isValidationEnabled);\n\nexport const embedFooterPredicate = s\n\t.object({\n\t\ttext: footerTextPredicate,\n\t\ticonURL: imageURLPredicate,\n\t})\n\t.setValidationEnabled(isValidationEnabled);\n\nexport const timestampPredicate = s.union([s.number(), s.date()]).nullable().setValidationEnabled(isValidationEnabled);\n\nexport const titlePredicate = fieldNamePredicate\n\t.lengthGreaterThanOrEqual(1)\n\t.nullable()\n\t.setValidationEnabled(isValidationEnabled);\n","/**\n * Normalizes data that is a rest parameter or an array into an array with a depth of 1.\n *\n * @typeParam ItemType - The data that must satisfy {@link RestOrArray}.\n * @param arr - The (possibly variadic) data to normalize\n */\nexport function normalizeArray<ItemType>(arr: RestOrArray<ItemType>): ItemType[] {\n\tif (Array.isArray(arr[0])) return [...arr[0]];\n\treturn arr as ItemType[];\n}\n\n/**\n * Represents data that may be an array or came from a rest parameter.\n *\n * @remarks\n * This type is used throughout builders to ensure both an array and variadic arguments\n * may be used. It is normalized with {@link normalizeArray}.\n */\nexport type RestOrArray<Type> = Type[] | [Type[]];\n","import { s } from '@sapphire/shapeshift';\nimport { ButtonStyle, ChannelType, type APIMessageComponentEmoji } from 'discord-api-types/v10';\nimport { isValidationEnabled } from '../util/validation.js';\nimport { StringSelectMenuOptionBuilder } from './selectMenu/StringSelectMenuOption.js';\n\nexport const idValidator = s\n\t.number()\n\t.safeInt()\n\t.greaterThanOrEqual(1)\n\t.lessThan(4_294_967_296) // 2^32 - 1\n\t.setValidationEnabled(isValidationEnabled);\n\nexport const customIdValidator = s\n\t.string()\n\t.lengthGreaterThanOrEqual(1)\n\t.lengthLessThanOrEqual(100)\n\t.setValidationEnabled(isValidationEnabled);\n\nexport const emojiValidator = s\n\t.object({\n\t\tid: s.string(),\n\t\tname: s.string(),\n\t\tanimated: s.boolean(),\n\t})\n\t.partial()\n\t.strict()\n\t.setValidationEnabled(isValidationEnabled);\n\nexport const disabledValidator = s.boolean();\n\nexport const buttonLabelValidator = s\n\t.string()\n\t.lengthGreaterThanOrEqual(1)\n\t.lengthLessThanOrEqual(80)\n\t.setValidationEnabled(isValidationEnabled);\n\nexport const buttonStyleValidator = s.nativeEnum(ButtonStyle);\n\nexport const placeholderValidator = s.string().lengthLessThanOrEqual(150).setValidationEnabled(isValidationEnabled);\nexport const minMaxValidator = s\n\t.number()\n\t.int()\n\t.greaterThanOrEqual(0)\n\t.lessThanOrEqual(25)\n\t.setValidationEnabled(isValidationEnabled);\n\nexport const labelValueDescriptionValidator = s\n\t.string()\n\t.lengthGreaterThanOrEqual(1)\n\t.lengthLessThanOrEqual(100)\n\t.setValidationEnabled(isValidationEnabled);\n\n/**\n * @deprecated Replaced with selectMenuStringOptionPredicate.\n */\nexport const jsonOptionValidator = s\n\t.object({\n\t\tlabel: labelValueDescriptionValidator,\n\t\tvalue: labelValueDescriptionValidator,\n\t\tdescription: labelValueDescriptionValidator.optional(),\n\t\temoji: emojiValidator.optional(),\n\t\tdefault: s.boolean().optional(),\n\t})\n\t.setValidationEnabled(isValidationEnabled);\n\nexport const optionValidator = s.instance(StringSelectMenuOptionBuilder).setValidationEnabled(isValidationEnabled);\n\nexport const optionsValidator = optionValidator\n\t.array()\n\t.lengthGreaterThanOrEqual(0)\n\t.setValidationEnabled(isValidationEnabled);\nexport const optionsLengthValidator = s\n\t.number()\n\t.int()\n\t.greaterThanOrEqual(0)\n\t.lessThanOrEqual(25)\n\t.setValidationEnabled(isValidationEnabled);\n\nexport function validateRequiredSelectMenuParameters(options: StringSelectMenuOptionBuilder[], customId?: string) {\n\tcustomIdValidator.parse(customId);\n\toptionsValidator.parse(options);\n}\n\nexport const defaultValidator = s.boolean();\n\nexport function validateRequiredSelectMenuOptionParameters(label?: string, value?: string) {\n\tlabelValueDescriptionValidator.parse(label);\n\tlabelValueDescriptionValidator.parse(value);\n}\n\nexport const channelTypesValidator = s.nativeEnum(ChannelType).array().setValidationEnabled(isValidationEnabled);\n\nexport const urlValidator = s\n\t.string()\n\t.url({\n\t\tallowedProtocols: ['http:', 'https:', 'discord:'],\n\t})\n\t.setValidationEnabled(isValidationEnabled);\n\nexport function validateRequiredButtonParameters(\n\tstyle?: ButtonStyle,\n\tlabel?: string,\n\temoji?: APIMessageComponentEmoji,\n\tcustomId?: string,\n\tskuId?: string,\n\turl?: string,\n) {\n\tif (style === ButtonStyle.Premium) {\n\t\tif (!skuId) {\n\t\t\tthrow new RangeError('Premium buttons must have an SKU id.');\n\t\t}\n\n\t\tif (customId || label || url || emoji) {\n\t\t\tthrow new RangeError('Premium buttons cannot have a custom id, label, URL, or emoji.');\n\t\t}\n\t} else {\n\t\tif (skuId) {\n\t\t\tthrow new RangeError('Non-premium buttons must not have an SKU id.');\n\t\t}\n\n\t\tif (url && customId) {\n\t\t\tthrow new RangeError('URL and custom id are mutually exclusive.');\n\t\t}\n\n\t\tif (!label && !emoji) {\n\t\t\tthrow new RangeError('Non-premium buttons must have a label and/or an emoji.');\n\t\t}\n\n\t\tif (style === ButtonStyle.Link) {\n\t\t\tif (!url) {\n\t\t\t\tthrow new RangeError('Link buttons must have a URL.');\n\t\t\t}\n\t\t} else if (url) {\n\t\t\tthrow new RangeError('Non-premium and non-link buttons cannot have a URL.');\n\t\t}\n\t}\n}\n","import { s } from '@sapphire/shapeshift';\nimport { ComponentType, TextInputStyle } from 'discord-api-types/v10';\nimport { isValidationEnabled } from '../../util/validation.js';\nimport { customIdValidator, idValidator } from '../Assertions.js';\n\nexport const textInputStyleValidator = s.nativeEnum(TextInputStyle).setValidationEnabled(isValidationEnabled);\nexport const minLengthValidator = s\n\t.number()\n\t.int()\n\t.greaterThanOrEqual(0)\n\t.lessThanOrEqual(4_000)\n\t.setValidationEnabled(isValidationEnabled);\nexport const maxLengthValidator = s\n\t.number()\n\t.int()\n\t.greaterThanOrEqual(1)\n\t.lessThanOrEqual(4_000)\n\t.setValidationEnabled(isValidationEnabled);\nexport const requiredValidator = s.boolean().setValidationEnabled(isValidationEnabled);\nexport const valueValidator = s.string().lengthLessThanOrEqual(4_000).setValidationEnabled(isValidationEnabled);\nexport const placeholderValidator = s.string().lengthLessThanOrEqual(100).setValidationEnabled(isValidationEnabled);\nexport const labelValidator = s\n\t.string()\n\t.lengthGreaterThanOrEqual(1)\n\t.lengthLessThanOrEqual(45)\n\t.setValidationEnabled(isValidationEnabled);\n\nexport const textInputPredicate = s\n\t.object({\n\t\ttype: s.literal(ComponentType.TextInput),\n\t\tcustom_id: customIdValidator,\n\t\tstyle: textInputStyleValidator,\n\t\tid: idValidator.optional(),\n\t\tmin_length: minLengthValidator.optional(),\n\t\tmax_length: maxLengthValidator.optional(),\n\t\tplaceholder: placeholderValidator.optional(),\n\t\tvalue: valueValidator.optional(),\n\t\trequired: requiredValidator.optional(),\n\t})\n\t.setValidationEnabled(isValidationEnabled);\n\nexport function validateRequiredParameters(customId?: string, style?: TextInputStyle) {\n\tcustomIdValidator.parse(customId);\n\ttextInputStyleValidator.parse(style);\n}\n","import { s } from '@sapphire/shapeshift';\nimport { SeparatorSpacingSize } from 'discord-api-types/v10';\nimport { colorPredicate } from '../../messages/embed/Assertions';\nimport { isValidationEnabled } from '../../util/validation';\nimport { ComponentBuilder } from '../Component';\nimport { ButtonBuilder } from '../button/Button';\nimport type { ContainerComponentBuilder } from './Container';\nimport type { MediaGalleryItemBuilder } from './MediaGalleryItem';\nimport type { TextDisplayBuilder } from './TextDisplay';\nimport { ThumbnailBuilder } from './Thumbnail';\n\nexport const unfurledMediaItemPredicate = s\n\t.object({\n\t\turl: s\n\t\t\t.string()\n\t\t\t.url(\n\t\t\t\t{ allowedProtocols: ['http:', 'https:', 'attachment:'] },\n\t\t\t\t{ message: 'Invalid protocol for media URL. Must be http:, https:, or attachment:' },\n\t\t\t),\n\t})\n\t.setValidationEnabled(isValidationEnabled);\n\nexport const descriptionPredicate = s\n\t.string()\n\t.lengthGreaterThanOrEqual(1)\n\t.lengthLessThanOrEqual(1_024)\n\t.setValidationEnabled(isValidationEnabled);\n\nexport const filePredicate = s\n\t.object({\n\t\turl: s\n\t\t\t.string()\n\t\t\t.url({ allowedProtocols: ['attachment:'] }, { message: 'Invalid protocol for file URL. Must be attachment:' }),\n\t})\n\t.setValidationEnabled(isValidationEnabled);\n\nexport const spoilerPredicate = s.boolean();\n\nexport const dividerPredicate = s.boolean();\n\nexport const spacingPredicate = s.nativeEnum(SeparatorSpacingSize);\n\nexport const textDisplayContentPredicate = s\n\t.string()\n\t.lengthGreaterThanOrEqual(1)\n\t.lengthLessThanOrEqual(4_000)\n\t.setValidationEnabled(isValidationEnabled);\n\nexport const accessoryPredicate = s\n\t.instance(ButtonBuilder)\n\t.or(s.instance(ThumbnailBuilder))\n\t.setValidationEnabled(isValidationEnabled);\n\nexport const containerColorPredicate = colorPredicate.nullish();\n\nexport function assertReturnOfBuilder<ReturnType extends MediaGalleryItemBuilder | TextDisplayBuilder>(\n\tinput: unknown,\n\tExpectedInstanceOf: new () => ReturnType,\n): asserts input is ReturnType {\n\ts.instance(ExpectedInstanceOf).setValidationEnabled(isValidationEnabled).parse(input);\n}\n\nexport function validateComponentArray<\n\tReturnType extends ContainerComponentBuilder | MediaGalleryItemBuilder = ContainerComponentBuilder,\n>(input: unknown, min: number, max: number, ExpectedInstanceOf?: new () => ReturnType): asserts input is ReturnType[] {\n\t(ExpectedInstanceOf ? s.instance(ExpectedInstanceOf) : s.instance(ComponentBuilder))\n\t\t.array()\n\t\t.lengthGreaterThanOrEqual(min)\n\t\t.lengthLessThanOrEqual(max)\n\t\t.setValidationEnabled(isValidationEnabled)\n\t\t.parse(input);\n}\n","import type { JSONEncodable } from '@discordjs/util';\nimport { ComponentType, type APIMessageComponent, type APIModalComponent } from 'discord-api-types/v10';\nimport {\n\tActionRowBuilder,\n\ttype MessageActionRowComponentBuilder,\n\ttype AnyComponentBuilder,\n\ttype ModalComponentBuilder,\n} from './ActionRow.js';\nimport { ComponentBuilder } from './Component.js';\nimport { ButtonBuilder } from './button/Button.js';\nimport { FileUploadBuilder } from './fileUpload/FileUpload.js';\nimport { LabelBuilder } from './label/Label.js';\nimport { ChannelSelectMenuBuilder } from './selectMenu/ChannelSelectMenu.js';\nimport { MentionableSelectMenuBuilder } from './selectMenu/MentionableSelectMenu.js';\nimport { RoleSelectMenuBuilder } from './selectMenu/RoleSelectMenu.js';\nimport { StringSelectMenuBuilder } from './selectMenu/StringSelectMenu.js';\nimport { UserSelectMenuBuilder } from './selectMenu/UserSelectMenu.js';\nimport { TextInputBuilder } from './textInput/TextInput.js';\nimport { ContainerBuilder } from './v2/Container.js';\nimport { FileBuilder } from './v2/File.js';\nimport { MediaGalleryBuilder } from './v2/MediaGallery.js';\nimport { SectionBuilder } from './v2/Section.js';\nimport { SeparatorBuilder } from './v2/Separator.js';\nimport { TextDisplayBuilder } from './v2/TextDisplay.js';\nimport { ThumbnailBuilder } from './v2/Thumbnail.js';\n\n/**\n * The builders that may be used for messages.\n */\nexport type MessageComponentBuilder =\n\t| ActionRowBuilder<MessageActionRowComponentBuilder>\n\t| ContainerBuilder\n\t| FileBuilder\n\t| MediaGalleryBuilder\n\t| MessageActionRowComponentBuilder\n\t| SectionBuilder\n\t| SeparatorBuilder\n\t| TextDisplayBuilder\n\t| ThumbnailBuilder;\n\n/**\n * Components here are mapped to their respective builder.\n */\nexport interface MappedComponentTypes {\n\t/**\n\t * The action row component type is associated with an {@link ActionRowBuilder}.\n\t */\n\t[ComponentType.ActionRow]: ActionRowBuilder<AnyComponentBuilder>;\n\t/**\n\t * The button component type is associated with a {@link ButtonBuilder}.\n\t */\n\t[ComponentType.Button]: ButtonBuilder;\n\t/**\n\t * The string select component type is associated with a {@link StringSelectMenuBuilder}.\n\t */\n\t[ComponentType.StringSelect]: StringSelectMenuBuilder;\n\t/**\n\t * The text input component type is associated with a {@link TextInputBuilder}.\n\t */\n\t[ComponentType.TextInput]: TextInputBuilder;\n\t/**\n\t * The user select component type is associated with a {@link UserSelectMenuBuilder}.\n\t */\n\t[ComponentType.UserSelect]: UserSelectMenuBuilder;\n\t/**\n\t * The role select component type is associated with a {@link RoleSelectMenuBuilder}.\n\t */\n\t[ComponentType.RoleSelect]: RoleSelectMenuBuilder;\n\t/**\n\t * The mentionable select component type is associated with a {@link MentionableSelectMenuBuilder}.\n\t */\n\t[ComponentType.MentionableSelect]: MentionableSelectMenuBuilder;\n\t/**\n\t * The channel select component type is associated with a {@link ChannelSelectMenuBuilder}.\n\t */\n\t[ComponentType.ChannelSelect]: ChannelSelectMenuBuilder;\n\t/**\n\t * The file component type is associated with a {@link FileBuilder}.\n\t */\n\t[ComponentType.File]: FileBuilder;\n\t/**\n\t * The separator component type is associated with a {@link SeparatorBuilder}.\n\t */\n\t[ComponentType.Separator]: SeparatorBuilder;\n\t/**\n\t * The container component type is associated with a {@link ContainerBuilder}.\n\t */\n\t[ComponentType.Container]: ContainerBuilder;\n\t/**\n\t * The text display component type is associated with a {@link TextDisplayBuilder}.\n\t */\n\t[ComponentType.TextDisplay]: TextDisplayBuilder;\n\t/**\n\t * The thumbnail component type is associated with a {@link ThumbnailBuilder}.\n\t */\n\t[ComponentType.Thumbnail]: ThumbnailBuilder;\n\t/**\n\t * The section component type is associated with a {@link SectionBuilder}.\n\t */\n\t[ComponentType.Section]: SectionBuilder;\n\t/**\n\t * The media gallery component type is associated with a {@link MediaGalleryBuilder}.\n\t */\n\t[ComponentType.MediaGallery]: MediaGalleryBuilder;\n\t/**\n\t * The label component type is associated with a {@link LabelBuilder}.\n\t */\n\t[ComponentType.Label]: LabelBuilder;\n\t/**\n\t * The file upload component type is associated with a {@link FileUploadBuilder}.\n\t */\n\t[ComponentType.FileUpload]: FileUploadBuilder;\n}\n\n/**\n * Factory for creating components from API data.\n *\n * @typeParam ComponentType - The type of component to use\n * @param data - The API data to transform to a component class\n */\nexport function createComponentBuilder<ComponentType extends keyof MappedComponentTypes>(\n\t// eslint-disable-next-line @typescript-eslint/sort-type-constituents\n\tdata: (APIModalComponent | APIMessageComponent) & { type: ComponentType },\n): MappedComponentTypes[ComponentType];\n\n/**\n * Factory for creating components from API data.\n *\n * @typeParam ComponentBuilder - The type of component to use\n * @param data - The API data to transform to a component class\n */\nexport function createComponentBuilder<ComponentBuilder extends MessageComponentBuilder | ModalComponentBuilder>(\n\tdata: ComponentBuilder,\n): ComponentBuilder;\n\nexport function createComponentBuilder(\n\tdata: APIMessageComponent | APIModalComponent | MessageComponentBuilder,\n): ComponentBuilder {\n\tif (data instanceof ComponentBuilder) {\n\t\treturn data;\n\t}\n\n\tswitch (data.type) {\n\t\tcase ComponentType.ActionRow:\n\t\t\treturn new ActionRowBuilder(data);\n\t\tcase ComponentType.Button:\n\t\t\treturn new ButtonBuilder(data);\n\t\tcase ComponentType.StringSelect:\n\t\t\treturn new StringSelectMenuBuilder(data);\n\t\tcase ComponentType.TextInput:\n\t\t\treturn new TextInputBuilder(data);\n\t\tcase ComponentType.UserSelect:\n\t\t\treturn new UserSelectMenuBuilder(data);\n\t\tcase ComponentType.RoleSelect:\n\t\t\treturn new RoleSelectMenuBuilder(data);\n\t\tcase ComponentType.MentionableSelect:\n\t\t\treturn new MentionableSelectMenuBuilder(data);\n\t\tcase ComponentType.ChannelSelect:\n\t\t\treturn new ChannelSelectMenuBuilder(data);\n\t\tcase ComponentType.File:\n\t\t\treturn new FileBuilder(data);\n\t\tcase ComponentType.Container:\n\t\t\treturn new ContainerBuilder(data);\n\t\tcase ComponentType.Section:\n\t\t\treturn new SectionBuilder(data);\n\t\tcase ComponentType.Separator:\n\t\t\treturn new SeparatorBuilder(data);\n\t\tcase ComponentType.TextDisplay:\n\t\t\treturn new TextDisplayBuilder(data);\n\t\tcase ComponentType.Thumbnail:\n\t\t\treturn new ThumbnailBuilder(data);\n\t\tcase ComponentType.MediaGallery:\n\t\t\treturn new MediaGalleryBuilder(data);\n\t\tcase ComponentType.Label:\n\t\t\treturn new LabelBuilder(data);\n\t\tcase ComponentType.FileUpload:\n\t\t\treturn new FileUploadBuilder(data);\n\t\tdefault:\n\t\t\t// @ts-expect-error This case can still occur if we get a newer unsupported component type\n\t\t\tthrow new Error(`Cannot properly serialize component type: ${data.type}`);\n\t}\n}\n\nfunction isBuilder<Builder extends JSONEncodable<any>>(\n\tbuilder: unknown,\n\tConstructor: new () => Builder,\n): builder is Builder {\n\treturn builder instanceof Constructor;\n}\n\nexport function resolveBuilder<ComponentType extends Record<PropertyKey, any>, Builder extends JSONEncodable<any>>(\n\tbuilder: Builder | ComponentType | ((builder: Builder) => Builder),\n\tConstructor: new (data?: ComponentType) => Builder,\n) {\n\tif (isBuilder(builder, Constructor)) {\n\t\treturn builder;\n\t}\n\n\tif (typeof builder === 'function') {\n\t\treturn builder(new Constructor());\n\t}\n\n\treturn new Constructor(builder);\n}\n","import { s } from '@sapphire/shapeshift';\nimport { ActionRowBuilder, type ModalActionRowComponentBuilder } from '../../components/ActionRow.js';\nimport { customIdValidator } from '../../components/Assertions.js';\nimport { LabelBuilder } from '../../components/label/Label.js';\nimport { TextDisplayBuilder } from '../../components/v2/TextDisplay.js';\nimport { isValidationEnabled } from '../../util/validation.js';\n\nexport const titleValidator = s\n\t.string()\n\t.lengthGreaterThanOrEqual(1)\n\t.lengthLessThanOrEqual(45)\n\t.setValidationEnabled(isValidationEnabled);\nexport const componentsValidator = s\n\t.union([s.instance(ActionRowBuilder), s.instance(LabelBuilder), s.instance(TextDisplayBuilder)])\n\t.array()\n\t.lengthGreaterThanOrEqual(1)\n\t.setValidationEnabled(isValidationEnabled);\n\nexport function validateRequiredParameters(\n\tcustomId?: string,\n\ttitle?: string,\n\tcomponents?: (ActionRowBuilder<ModalActionRowComponentBuilder> | LabelBuilder | TextDisplayBuilder)[],\n) {\n\tcustomIdValidator.parse(customId);\n\ttitleValidator.parse(title);\n\tcomponentsValidator.parse(components);\n}\n","import { s } from '@sapphire/shapeshift';\nimport {\n\tApplicationIntegrationType,\n\tInteractionContextType,\n\tLocale,\n\ttype APIApplicationCommandOptionChoice,\n\ttype LocalizationMap,\n} from 'discord-api-types/v10';\nimport { isValidationEnabled } from '../../util/validation.js';\nimport type { ToAPIApplicationCommandOptions } from './SlashCommandBuilder.js';\nimport type { SlashCommandSubcommandBuilder, SlashCommandSubcommandGroupBuilder } from './SlashCommandSubcommands.js';\nimport type { ApplicationCommandOptionBase } from './mixins/ApplicationCommandOptionBase.js';\n\nconst namePredicate = s\n\t.string()\n\t.lengthGreaterThanOrEqual(1)\n\t.lengthLessThanOrEqual(32)\n\t.regex(/^[\\p{Ll}\\p{Lm}\\p{Lo}\\p{N}\\p{sc=Devanagari}\\p{sc=Thai}_-]+$/u)\n\t.setValidationEnabled(isValidationEnabled);\n\nexport function validateName(name: unknown): asserts name is string {\n\tnamePredicate.parse(name);\n}\n\nconst descriptionPredicate = s\n\t.string()\n\t.lengthGreaterThanOrEqual(1)\n\t.lengthLessThanOrEqual(100)\n\t.setValidationEnabled(isValidationEnabled);\nconst localePredicate = s.nativeEnum(Locale);\n\nexport function validateDescription(description: unknown): asserts description is string {\n\tdescriptionPredicate.parse(description);\n}\n\nconst maxArrayLengthPredicate = s.unknown().array().lengthLessThanOrEqual(25).setValidationEnabled(isValidationEnabled);\nexport function validateLocale(locale: unknown) {\n\treturn localePredicate.parse(locale);\n}\n\nexport function validateMaxOptionsLength(options: unknown): asserts options is ToAPIApplicationCommandOptions[] {\n\tmaxArrayLengthPredicate.parse(options);\n}\n\nexport function validateRequiredParameters(\n\tname: string,\n\tdescription: string,\n\toptions: ToAPIApplicationCommandOptions[],\n) {\n\t// Assert name matches all conditions\n\tvalidateName(name);\n\n\t// Assert description conditions\n\tvalidateDescription(description);\n\n\t// Assert options conditions\n\tvalidateMaxOptionsLength(options);\n}\n\nconst booleanPredicate = s.boolean();\n\nexport function validateDefaultPermission(value: unknown): asserts value is boolean {\n\tbooleanPredicate.parse(value);\n}\n\nexport function validateRequired(required: unknown): asserts required is boolean {\n\tbooleanPredicate.parse(required);\n}\n\nconst choicesLengthPredicate = s.number().lessThanOrEqual(25).setValidationEnabled(isValidationEnabled);\n\nexport function validateChoicesLength(amountAdding: number, choices?: APIApplicationCommandOptionChoice[]): void {\n\tchoicesLengthPredicate.parse((choices?.length ?? 0) + amountAdding);\n}\n\nexport function assertReturnOfBuilder<\n\tReturnType extends ApplicationCommandOptionBase | SlashCommandSubcommandBuilder | SlashCommandSubcommandGroupBuilder,\n>(input: unknown, ExpectedInstanceOf: new () => ReturnType): asserts input is ReturnType {\n\ts.instance(ExpectedInstanceOf).parse(input);\n}\n\nexport const localizationMapPredicate = s\n\t.object<LocalizationMap>(Object.fromEntries(Object.values(Locale).map((locale) => [locale, s.string().nullish()])))\n\t.strict()\n\t.nullish()\n\t.setValidationEnabled(isValidationEnabled);\n\nexport function validateLocalizationMap(value: unknown): asserts value is LocalizationMap {\n\tlocalizationMapPredicate.parse(value);\n}\n\nconst dmPermissionPredicate = s.boolean().nullish();\n\nexport function validateDMPermission(value: unknown): asserts value is boolean | null | undefined {\n\tdmPermissionPredicate.parse(value);\n}\n\nconst memberPermissionPredicate = s\n\t.union([\n\t\ts.bigint().transform((value) => value.toString()),\n\t\ts\n\t\t\t.number()\n\t\t\t.safeInt()\n\t\t\t.transform((value) => value.toString()),\n\t\ts.string().regex(/^\\d+$/),\n\t])\n\t.nullish();\n\nexport function validateDefaultMemberPermissions(permissions: unknown) {\n\treturn memberPermissionPredicate.parse(permissions);\n}\n\nexport function validateNSFW(value: unknown): asserts value is boolean {\n\tbooleanPredicate.parse(value);\n}\n\nexport const contextsPredicate = s.array(\n\ts.nativeEnum(InteractionContextType).setValidationEnabled(isValidationEnabled),\n);\n\nexport const integrationTypesPredicate = s.array(\n\ts.nativeEnum(ApplicationIntegrationType).setValidationEnabled(isValidationEnabled),\n);\n","import { s } from '@sapphire/shapeshift';\nimport { ApplicationCommandType, ApplicationIntegrationType, InteractionContextType } from 'discord-api-types/v10';\nimport { isValidationEnabled } from '../../util/validation.js';\nimport type { ContextMenuCommandType } from './ContextMenuCommandBuilder.js';\n\nconst namePredicate = s\n\t.string()\n\t.lengthGreaterThanOrEqual(1)\n\t.lengthLessThanOrEqual(32)\n\t.regex(/\\S/)\n\t.setValidationEnabled(isValidationEnabled);\nconst typePredicate = s\n\t.union([s.literal(ApplicationCommandType.User), s.literal(ApplicationCommandType.Message)])\n\t.setValidationEnabled(isValidationEnabled);\nconst booleanPredicate = s.boolean();\n\nexport function validateDefaultPermission(value: unknown): asserts value is boolean {\n\tbooleanPredicate.parse(value);\n}\n\nexport function validateName(name: unknown): asserts name is string {\n\tnamePredicate.parse(name);\n}\n\nexport function validateType(type: unknown): asserts type is ContextMenuCommandType {\n\ttypePredicate.parse(type);\n}\n\nexport function validateRequiredParameters(name: string, type: number) {\n\t// Assert name matches all conditions\n\tvalidateName(name);\n\n\t// Assert type is valid\n\tvalidateType(type);\n}\n\nconst dmPermissionPredicate = s.boolean().nullish();\n\nexport function validateDMPermission(value: unknown): asserts value is boolean | null | undefined {\n\tdmPermissionPredicate.parse(value);\n}\n\nconst memberPermissionPredicate = s\n\t.union([\n\t\ts.bigint().transform((value) => value.toString()),\n\t\ts\n\t\t\t.number()\n\t\t\t.safeInt()\n\t\t\t.transform((value) => value.toString()),\n\t\ts.string().regex(/^\\d+$/),\n\t])\n\t.nullish();\n\nexport function validateDefaultMemberPermissions(permissions: unknown) {\n\treturn memberPermissionPredicate.parse(permissions);\n}\n\nexport const contextsPredicate = s.array(\n\ts.nativeEnum(InteractionContextType).setValidationEnabled(isValidationEnabled),\n);\n\nexport const integrationTypesPredicate = s.array(\n\ts.nativeEnum(ApplicationIntegrationType).setValidationEnabled(isValidationEnabled),\n);\n","import type { APIEmbed } from 'discord-api-types/v10';\n\n/**\n * Calculates the length of the embed.\n *\n * @param data - The embed data to check\n */\nexport function embedLength(data: APIEmbed) {\n\treturn (\n\t\t(data.title?.length ?? 0) +\n\t\t(data.description?.length ?? 0) +\n\t\t(data.fields?.reduce((prev, curr) => prev + curr.name.length + curr.value.length, 0) ?? 0) +\n\t\t(data.footer?.text.length ?? 0) +\n\t\t(data.author?.name.length ?? 0)\n\t);\n}\n","import { isJSONEncodable, type Equatable, type JSONEncodable } from '@discordjs/util';\nimport { ComponentType, type TextInputStyle, type APITextInputComponent } from 'discord-api-types/v10';\nimport isEqual from 'fast-deep-equal';\nimport { customIdValidator } from '../Assertions.js';\nimport { ComponentBuilder } from '../Component.js';\nimport {\n\tmaxLengthValidator,\n\tminLengthValidator,\n\tplaceholderValidator,\n\trequiredValidator,\n\tvalueValidator,\n\tvalidateRequiredParameters,\n\tlabelValidator,\n\ttextInputStyleValidator,\n} from './Assertions.js';\n\n/**\n * A builder that creates API-compatible JSON data for text inputs.\n */\nexport class TextInputBuilder\n\textends ComponentBuilder<APITextInputComponent>\n\timplements Equatable<APITextInputComponent | JSONEncodable<APITextInputComponent>>\n{\n\t/**\n\t * Creates a new text input from API data.\n\t *\n\t * @param data - The API data to create this text input with\n\t * @example\n\t * Creating a text input from an API data object:\n\t * ```ts\n\t * const textInput = new TextInputBuilder({\n\t * \tcustom_id: 'a cool text input',\n\t * \tplaceholder: 'Type something',\n\t * \tstyle: TextInputStyle.Short,\n\t * });\n\t * ```\n\t * @example\n\t * Creating a text input using setters and API data:\n\t * ```ts\n\t * const textInput = new TextInputBuilder({\n\t * \tplaceholder: 'Type something else',\n\t * })\n\t * \t.setCustomId('woah')\n\t * \t.setStyle(TextInputStyle.Paragraph);\n\t * ```\n\t */\n\tpublic constructor(data?: APITextInputComponent & { type?: ComponentType.TextInput }) {\n\t\tsuper({ type: ComponentType.TextInput, ...data });\n\t}\n\n\t/**\n\t * Sets the custom id for this text input.\n\t *\n\t * @param customId - The custom id to use\n\t */\n\tpublic setCustomId(customId: string) {\n\t\tthis.data.custom_id = customIdValidator.parse(customId);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the label for this text input.\n\t *\n\t * @param label - The label to use\n\t * @deprecated Use a label builder to create a label (and optionally a description) instead.\n\t */\n\tpublic setLabel(label: string) {\n\t\tthis.data.label = labelValidator.parse(label);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the style for this text input.\n\t *\n\t * @param style - The style to use\n\t */\n\tpublic setStyle(style: TextInputStyle) {\n\t\tthis.data.style = textInputStyleValidator.parse(style);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the minimum length of text for this text input.\n\t *\n\t * @param minLength - The minimum length of text for this text input\n\t */\n\tpublic setMinLength(minLength: number) {\n\t\tthis.data.min_length = minLengthValidator.parse(minLength);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the maximum length of text for this text input.\n\t *\n\t * @param maxLength - The maximum length of text for this text input\n\t */\n\tpublic setMaxLength(maxLength: number) {\n\t\tthis.data.max_length = maxLengthValidator.parse(maxLength);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the placeholder for this text input.\n\t *\n\t * @param placeholder - The placeholder to use\n\t */\n\tpublic setPlaceholder(placeholder: string) {\n\t\tthis.data.placeholder = placeholderValidator.parse(placeholder);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the value for this text input.\n\t *\n\t * @param value - The value to use\n\t */\n\tpublic setValue(value: string) {\n\t\tthis.data.value = valueValidator.parse(value);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets whether this text input is required.\n\t *\n\t * @param required - Whether this text input is required\n\t */\n\tpublic setRequired(required = true) {\n\t\tthis.data.required = requiredValidator.parse(required);\n\t\treturn this;\n\t}\n\n\t/**\n\t * {@inheritDoc ComponentBuilder.toJSON}\n\t */\n\tpublic toJSON(): APITextInputComponent {\n\t\tvalidateRequiredParameters(this.data.custom_id, this.data.style);\n\n\t\treturn {\n\t\t\t...this.data,\n\t\t} as APITextInputComponent;\n\t}\n\n\t/**\n\t * Whether this is equal to another structure.\n\t */\n\tpublic equals(other: APITextInputComponent | JSONEncodable<APITextInputComponent>): boolean {\n\t\tif (isJSONEncodable(other)) {\n\t\t\treturn isEqual(other.toJSON(), this.data);\n\t\t}\n\n\t\treturn isEqual(other, this.data);\n\t}\n}\n","import type { JSONEncodable } from '@discordjs/util';\nimport type { APIMessageComponentEmoji, APISelectMenuOption } from 'discord-api-types/v10';\nimport {\n\tdefaultValidator,\n\temojiValidator,\n\tlabelValueDescriptionValidator,\n\tvalidateRequiredSelectMenuOptionParameters,\n} from '../Assertions.js';\n\n/**\n * A builder that creates API-compatible JSON data for string select menu options.\n */\nexport class StringSelectMenuOptionBuilder implements JSONEncodable<APISelectMenuOption> {\n\t/**\n\t * Creates a new string select menu option from API data.\n\t *\n\t * @param data - The API data to create this string select menu option with\n\t * @example\n\t * Creating a string select menu option from an API data object:\n\t * ```ts\n\t * const selectMenuOption = new SelectMenuOptionBuilder({\n\t * \tlabel: 'catchy label',\n\t * \tvalue: '1',\n\t * });\n\t * ```\n\t * @example\n\t * Creating a string select menu option using setters and API data:\n\t * ```ts\n\t * const selectMenuOption = new SelectMenuOptionBuilder({\n\t * \tdefault: true,\n\t * \tvalue: '1',\n\t * })\n\t * \t.setLabel('woah');\n\t * ```\n\t */\n\tpublic constructor(public data: Partial<APISelectMenuOption> = {}) {}\n\n\t/**\n\t * Sets the label for this option.\n\t *\n\t * @param label - The label to use\n\t */\n\tpublic setLabel(label: string) {\n\t\tthis.data.label = labelValueDescriptionValidator.parse(label);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the value for this option.\n\t *\n\t * @param value - The value to use\n\t */\n\tpublic setValue(value: string) {\n\t\tthis.data.value = labelValueDescriptionValidator.parse(value);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the description for this option.\n\t *\n\t * @param description - The description to use\n\t */\n\tpublic setDescription(description: string) {\n\t\tthis.data.description = labelValueDescriptionValidator.parse(description);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets whether this option is selected by default.\n\t *\n\t * @param isDefault - Whether this option is selected by default\n\t */\n\tpublic setDefault(isDefault = true) {\n\t\tthis.data.default = defaultValidator.parse(isDefault);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the emoji to display for this option.\n\t *\n\t * @param emoji - The emoji to use\n\t */\n\tpublic setEmoji(emoji: APIMessageComponentEmoji) {\n\t\tthis.data.emoji = emojiValidator.parse(emoji);\n\t\treturn this;\n\t}\n\n\t/**\n\t * {@inheritDoc BaseSelectMenuBuilder.toJSON}\n\t */\n\tpublic toJSON(): APISelectMenuOption {\n\t\tvalidateRequiredSelectMenuOptionParameters(this.data.label, this.data.value);\n\n\t\treturn {\n\t\t\t...this.data,\n\t\t} as APISelectMenuOption;\n\t}\n}\n","import type { JSONEncodable } from '@discordjs/util';\nimport type {\n\tAPIActionRowComponent,\n\tAPIComponentInActionRow,\n\tAPIBaseComponent,\n\tComponentType,\n\tAPIMessageComponent,\n\tAPIModalComponent,\n} from 'discord-api-types/v10';\nimport { idValidator } from './Assertions';\n\n/**\n * Any action row component data represented as an object.\n */\nexport type AnyAPIActionRowComponent =\n\t| APIActionRowComponent<APIComponentInActionRow>\n\t| APIComponentInActionRow\n\t| APIMessageComponent\n\t| APIModalComponent;\n\n/**\n * The base component builder that contains common symbols for all sorts of components.\n *\n * @typeParam DataType - The type of internal API data that is stored within the component\n */\nexport abstract class ComponentBuilder<\n\tDataType extends Partial<APIBaseComponent<ComponentType>> = APIBaseComponent<ComponentType>,\n> implements JSONEncodable<AnyAPIActionRowComponent>\n{\n\t/**\n\t * The API data associated with this component.\n\t */\n\tpublic readonly data: Partial<DataType>;\n\n\t/**\n\t * Serializes this builder to API-compatible JSON data.\n\t *\n\t * @remarks\n\t * This method runs validations on the data before serializing it.\n\t * As such, it may throw an error if the data is invalid.\n\t */\n\tpublic abstract toJSON(): AnyAPIActionRowComponent;\n\n\t/**\n\t * Constructs a new kind of component.\n\t *\n\t * @param data - The data to construct a component out of\n\t */\n\tpublic constructor(data: Partial<DataType>) {\n\t\tthis.data = data;\n\t}\n\n\t/**\n\t * Sets the id (not the custom id) for this component.\n\t *\n\t * @param id - The id for this component\n\t */\n\tpublic setId(id: number) {\n\t\tthis.data.id = idValidator.parse(id);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Clears the id of this component, defaulting to a default incremented id.\n\t */\n\tpublic clearId() {\n\t\tthis.data.id = undefined;\n\t\treturn this;\n\t}\n}\n","import {\n\tComponentType,\n\ttype APIButtonComponent,\n\ttype APIButtonComponentWithCustomId,\n\ttype APIButtonComponentWithSKUId,\n\ttype APIButtonComponentWithURL,\n\ttype APIMessageComponentEmoji,\n\ttype ButtonStyle,\n\ttype Snowflake,\n} from 'discord-api-types/v10';\nimport {\n\tbuttonLabelValidator,\n\tbuttonStyleValidator,\n\tcustomIdValidator,\n\tdisabledValidator,\n\temojiValidator,\n\turlValidator,\n\tvalidateRequiredButtonParameters,\n} from '../Assertions.js';\nimport { ComponentBuilder } from '../Component.js';\n\n/**\n * A builder that creates API-compatible JSON data for buttons.\n */\nexport class ButtonBuilder extends ComponentBuilder<APIButtonComponent> {\n\t/**\n\t * Creates a new button from API data.\n\t *\n\t * @param data - The API data to create this button with\n\t * @example\n\t * Creating a button from an API data object:\n\t * ```ts\n\t * const button = new ButtonBuilder({\n\t * \tcustom_id: 'a cool button',\n\t * \tstyle: ButtonStyle.Primary,\n\t * \tlabel: 'Click Me',\n\t * \temoji: {\n\t * \t\tname: 'smile',\n\t * \t\tid: '123456789012345678',\n\t * \t},\n\t * });\n\t * ```\n\t * @example\n\t * Creating a button using setters and API data:\n\t * ```ts\n\t * const button = new ButtonBuilder({\n\t * \tstyle: ButtonStyle.Secondary,\n\t * \tlabel: 'Click Me',\n\t * })\n\t * \t.setEmoji({ name: '🙂' })\n\t * \t.setCustomId('another cool button');\n\t * ```\n\t */\n\tpublic constructor(data?: Partial<APIButtonComponent>) {\n\t\tsuper({ type: ComponentType.Button, ...data });\n\t}\n\n\t/**\n\t * Sets the style of this button.\n\t *\n\t * @param style - The style to use\n\t */\n\tpublic setStyle(style: ButtonStyle) {\n\t\tthis.data.style = buttonStyleValidator.parse(style);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the URL for this button.\n\t *\n\t * @remarks\n\t * This method is only available to buttons using the `Link` button style.\n\t * Only three types of URL schemes are currently supported: `https://`, `http://`, and `discord://`.\n\t * @param url - The URL to use\n\t */\n\tpublic setURL(url: string) {\n\t\t(this.data as APIButtonComponentWithURL).url = urlValidator.parse(url);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the custom id for this button.\n\t *\n\t * @remarks\n\t * This method is only applicable to buttons that are not using the `Link` button style.\n\t * @param customId - The custom id to use\n\t */\n\tpublic setCustomId(customId: string) {\n\t\t(this.data as APIButtonComponentWithCustomId).custom_id = customIdValidator.parse(customId);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the SKU id that represents a purchasable SKU for this button.\n\t *\n\t * @remarks Only available when using premium-style buttons.\n\t * @param skuId - The SKU id to use\n\t */\n\tpublic setSKUId(skuId: Snowflake) {\n\t\t(this.data as APIButtonComponentWithSKUId).sku_id = skuId;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the emoji to display on this button.\n\t *\n\t * @param emoji - The emoji to use\n\t */\n\tpublic setEmoji(emoji: APIMessageComponentEmoji) {\n\t\t(this.data as Exclude<APIButtonComponent, APIButtonComponentWithSKUId>).emoji = emojiValidator.parse(emoji);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets whether this button is disabled.\n\t *\n\t * @param disabled - Whether to disable this button\n\t */\n\tpublic setDisabled(disabled = true) {\n\t\tthis.data.disabled = disabledValidator.parse(disabled);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the label for this button.\n\t *\n\t * @param label - The label to use\n\t */\n\tpublic setLabel(label: string) {\n\t\t(this.data as Exclude<APIButtonComponent, APIButtonComponentWithSKUId>).label = buttonLabelValidator.parse(label);\n\t\treturn this;\n\t}\n\n\t/**\n\t * {@inheritDoc ComponentBuilder.toJSON}\n\t */\n\tpublic toJSON(): APIButtonComponent {\n\t\tvalidateRequiredButtonParameters(\n\t\t\tthis.data.style,\n\t\t\t(this.data as Exclude<APIButtonComponent, APIButtonComponentWithSKUId>).label,\n\t\t\t(this.data as Exclude<APIButtonComponent, APIButtonComponentWithSKUId>).emoji,\n\t\t\t(this.data as APIButtonComponentWithCustomId).custom_id,\n\t\t\t(this.data as APIButtonComponentWithSKUId).sku_id,\n\t\t\t(this.data as APIButtonComponentWithURL).url,\n\t\t);\n\n\t\treturn {\n\t\t\t...this.data,\n\t\t} as APIButtonComponent;\n\t}\n}\n","import { s } from '@sapphire/shapeshift';\nimport { ComponentType } from 'discord-api-types/v10';\nimport { customIdValidator, idValidator } from '../Assertions.js';\n\nexport const fileUploadPredicate = s.object({\n\ttype: s.literal(ComponentType.FileUpload),\n\tid: idValidator.optional(),\n\tcustom_id: customIdValidator,\n\tmin_values: s.number().greaterThanOrEqual(0).lessThanOrEqual(10).optional(),\n\tmax_values: s.number().greaterThanOrEqual(1).lessThanOrEqual(10).optional(),\n\trequired: s.boolean().optional(),\n});\n","import { type APIFileUploadComponent, ComponentType } from 'discord-api-types/v10';\nimport { ComponentBuilder } from '../Component.js';\nimport { fileUploadPredicate } from './Assertions.js';\n\n/**\n * A builder that creates API-compatible JSON data for file uploads.\n */\nexport class FileUploadBuilder extends ComponentBuilder<APIFileUploadComponent> {\n\t/**\n\t * Creates a new file upload.\n\t *\n\t * @param data - The API data to create this file upload with\n\t * @example\n\t * Creating a file upload from an API data object:\n\t * ```ts\n\t * const fileUpload = new FileUploadBuilder({\n\t * \tcustom_id: \"file_upload\",\n\t * min_values: 2,\n\t * max_values: 5,\n\t * });\n\t * ```\n\t * @example\n\t * Creating a file upload using setters and API data:\n\t * ```ts\n\t * const fileUpload = new FileUploadBuilder({\n\t * \tcustom_id: \"file_upload\",\n\t * min_values: 2,\n\t * max_values: 5,\n\t * }).setRequired();\n\t * ```\n\t */\n\tpublic constructor(data: Partial<APIFileUploadComponent> = {}) {\n\t\tsuper({ type: ComponentType.FileUpload, ...data });\n\t}\n\n\t/**\n\t * Sets the custom id for this file upload.\n\t *\n\t * @param customId - The custom id to use\n\t */\n\tpublic setCustomId(customId: string) {\n\t\tthis.data.custom_id = customId;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the minimum number of file uploads required.\n\t *\n\t * @param minValues - The minimum values that must be uploaded\n\t */\n\tpublic setMinValues(minValues: number) {\n\t\tthis.data.min_values = minValues;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Clears the minimum values.\n\t */\n\tpublic clearMinValues() {\n\t\tthis.data.min_values = undefined;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the maximum number of file uploads required.\n\t *\n\t * @param maxValues - The maximum values that can be uploaded\n\t */\n\tpublic setMaxValues(maxValues: number) {\n\t\tthis.data.max_values = maxValues;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Clears the maximum values.\n\t */\n\tpublic clearMaxValues() {\n\t\tthis.data.max_values = undefined;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets whether this file upload is required.\n\t *\n\t * @param required - Whether this file upload is required\n\t */\n\tpublic setRequired(required = true) {\n\t\tthis.data.required = required;\n\t\treturn this;\n\t}\n\n\t/**\n\t * {@inheritDoc ComponentBuilder.toJSON}\n\t */\n\tpublic toJSON(): APIFileUploadComponent {\n\t\tfileUploadPredicate.parse(this.data);\n\t\treturn this.data as APIFileUploadComponent;\n\t}\n}\n","import type { APISelectMenuComponent } from 'discord-api-types/v10';\nimport { customIdValidator, disabledValidator, minMaxValidator, placeholderValidator } from '../Assertions.js';\nimport { ComponentBuilder } from '../Component.js';\nimport { requiredValidator } from '../textInput/Assertions.js';\n\n/**\n * The base select menu builder that contains common symbols for select menu builders.\n *\n * @typeParam SelectMenuType - The type of select menu this would be instantiated for.\n */\nexport abstract class BaseSelectMenuBuilder<\n\tSelectMenuType extends APISelectMenuComponent,\n> extends ComponentBuilder<SelectMenuType> {\n\t/**\n\t * Sets the placeholder for this select menu.\n\t *\n\t * @param placeholder - The placeholder to use\n\t */\n\tpublic setPlaceholder(placeholder: string) {\n\t\tthis.data.placeholder = placeholderValidator.parse(placeholder);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the minimum values that must be selected in the select menu.\n\t *\n\t * @param minValues - The minimum values that must be selected\n\t */\n\tpublic setMinValues(minValues: number) {\n\t\tthis.data.min_values = minMaxValidator.parse(minValues);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the maximum values that can be selected in the select menu.\n\t *\n\t * @param maxValues - The maximum values that can be selected\n\t */\n\tpublic setMaxValues(maxValues: number) {\n\t\tthis.data.max_values = minMaxValidator.parse(maxValues);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the custom id for this select menu.\n\t *\n\t * @param customId - The custom id to use\n\t */\n\tpublic setCustomId(customId: string) {\n\t\tthis.data.custom_id = customIdValidator.parse(customId);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets whether this select menu is disabled.\n\t *\n\t * @param disabled - Whether this select menu is disabled\n\t */\n\tpublic setDisabled(disabled = true) {\n\t\tthis.data.disabled = disabledValidator.parse(disabled);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets whether this select menu is required.\n\t *\n\t * @remarks Only for use in modals.\n\t * @param required - Whether this select menu is required\n\t */\n\tpublic setRequired(required = true) {\n\t\tthis.data.required = requiredValidator.parse(required);\n\t\treturn this;\n\t}\n\n\t/**\n\t * {@inheritDoc ComponentBuilder.toJSON}\n\t */\n\tpublic toJSON(): SelectMenuType {\n\t\tcustomIdValidator.parse(this.data.custom_id);\n\t\treturn {\n\t\t\t...this.data,\n\t\t} as SelectMenuType;\n\t}\n}\n","import {\n\ttype APIChannelSelectComponent,\n\ttype ChannelType,\n\ttype Snowflake,\n\tComponentType,\n\tSelectMenuDefaultValueType,\n} from 'discord-api-types/v10';\nimport { type RestOrArray, normalizeArray } from '../../util/normalizeArray.js';\nimport { channelTypesValidator, customIdValidator, optionsLengthValidator } from '../Assertions.js';\nimport { BaseSelectMenuBuilder } from './BaseSelectMenu.js';\n\n/**\n * A builder that creates API-compatible JSON data for channel select menus.\n */\nexport class ChannelSelectMenuBuilder extends BaseSelectMenuBuilder<APIChannelSelectComponent> {\n\t/**\n\t * Creates a new select menu from API data.\n\t *\n\t * @param data - The API data to create this select menu with\n\t * @example\n\t * Creating a select menu from an API data object:\n\t * ```ts\n\t * const selectMenu = new ChannelSelectMenuBuilder({\n\t * \tcustom_id: 'a cool select menu',\n\t * \tplaceholder: 'select an option',\n\t * \tmax_values: 2,\n\t * });\n\t * ```\n\t * @example\n\t * Creating a select menu using setters and API data:\n\t * ```ts\n\t * const selectMenu = new ChannelSelectMenuBuilder({\n\t * \tcustom_id: 'a cool select menu',\n\t * })\n\t * \t.addChannelTypes(ChannelType.GuildText, ChannelType.GuildAnnouncement)\n\t * \t.setMinValues(2);\n\t * ```\n\t */\n\tpublic constructor(data?: Partial<APIChannelSelectComponent>) {\n\t\tsuper({ ...data, type: ComponentType.ChannelSelect });\n\t}\n\n\t/**\n\t * Adds channel types to this select menu.\n\t *\n\t * @param types - The channel types to use\n\t */\n\tpublic addChannelTypes(...types: RestOrArray<ChannelType>) {\n\t\tconst normalizedTypes = normalizeArray(types);\n\t\tthis.data.channel_types ??= [];\n\t\tthis.data.channel_types.push(...channelTypesValidator.parse(normalizedTypes));\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets channel types for this select menu.\n\t *\n\t * @param types - The channel types to use\n\t */\n\tpublic setChannelTypes(...types: RestOrArray<ChannelType>) {\n\t\tconst normalizedTypes = normalizeArray(types);\n\t\tthis.data.channel_types ??= [];\n\t\tthis.data.channel_types.splice(0, this.data.channel_types.length, ...channelTypesValidator.parse(normalizedTypes));\n\t\treturn this;\n\t}\n\n\t/**\n\t * Adds default channels to this auto populated select menu.\n\t *\n\t * @param channels - The channels to add\n\t */\n\tpublic addDefaultChannels(...channels: RestOrArray<Snowflake>) {\n\t\tconst normalizedValues = normalizeArray(channels);\n\t\toptionsLengthValidator.parse((this.data.default_values?.length ?? 0) + normalizedValues.length);\n\t\tthis.data.default_values ??= [];\n\n\t\tthis.data.default_values.push(\n\t\t\t...normalizedValues.map((id) => ({\n\t\t\t\tid,\n\t\t\t\ttype: SelectMenuDefaultValueType.Channel as const,\n\t\t\t})),\n\t\t);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets default channels for this auto populated select menu.\n\t *\n\t * @param channels - The channels to set\n\t */\n\tpublic setDefaultChannels(...channels: RestOrArray<Snowflake>) {\n\t\tconst normalizedValues = normalizeArray(channels);\n\t\toptionsLengthValidator.parse(normalizedValues.length);\n\n\t\tthis.data.default_values = normalizedValues.map((id) => ({\n\t\t\tid,\n\t\t\ttype: SelectMenuDefaultValueType.Channel as const,\n\t\t}));\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * {@inheritDoc BaseSelectMenuBuilder.toJSON}\n\t */\n\tpublic override toJSON(): APIChannelSelectComponent {\n\t\tcustomIdValidator.parse(this.data.custom_id);\n\n\t\treturn {\n\t\t\t...this.data,\n\t\t} as APIChannelSelectComponent;\n\t}\n}\n","import {\n\ttype APIMentionableSelectComponent,\n\ttype APISelectMenuDefaultValue,\n\ttype Snowflake,\n\tComponentType,\n\tSelectMenuDefaultValueType,\n} from 'discord-api-types/v10';\nimport { type RestOrArray, normalizeArray } from '../../util/normalizeArray.js';\nimport { optionsLengthValidator } from '../Assertions.js';\nimport { BaseSelectMenuBuilder } from './BaseSelectMenu.js';\n\n/**\n * A builder that creates API-compatible JSON data for mentionable select menus.\n */\nexport class MentionableSelectMenuBuilder extends BaseSelectMenuBuilder<APIMentionableSelectComponent> {\n\t/**\n\t * Creates a new select menu from API data.\n\t *\n\t * @param data - The API data to create this select menu with\n\t * @example\n\t * Creating a select menu from an API data object:\n\t * ```ts\n\t * const selectMenu = new MentionableSelectMenuBuilder({\n\t * \tcustom_id: 'a cool select menu',\n\t * \tplaceholder: 'select an option',\n\t * \tmax_values: 2,\n\t * });\n\t * ```\n\t * @example\n\t * Creating a select menu using setters and API data:\n\t * ```ts\n\t * const selectMenu = new MentionableSelectMenuBuilder({\n\t * \tcustom_id: 'a cool select menu',\n\t * })\n\t * \t.setMinValues(1);\n\t * ```\n\t */\n\tpublic constructor(data?: Partial<APIMentionableSelectComponent>) {\n\t\tsuper({ ...data, type: ComponentType.MentionableSelect });\n\t}\n\n\t/**\n\t * Adds default roles to this auto populated select menu.\n\t *\n\t * @param roles - The roles to add\n\t */\n\tpublic addDefaultRoles(...roles: RestOrArray<Snowflake>) {\n\t\tconst normalizedValues = normalizeArray(roles);\n\t\toptionsLengthValidator.parse((this.data.default_values?.length ?? 0) + normalizedValues.length);\n\t\tthis.data.default_values ??= [];\n\n\t\tthis.data.default_values.push(\n\t\t\t...normalizedValues.map((id) => ({\n\t\t\t\tid,\n\t\t\t\ttype: SelectMenuDefaultValueType.Role as const,\n\t\t\t})),\n\t\t);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Adds default users to this auto populated select menu.\n\t *\n\t * @param users - The users to add\n\t */\n\tpublic addDefaultUsers(...users: RestOrArray<Snowflake>) {\n\t\tconst normalizedValues = normalizeArray(users);\n\t\toptionsLengthValidator.parse((this.data.default_values?.length ?? 0) + normalizedValues.length);\n\t\tthis.data.default_values ??= [];\n\n\t\tthis.data.default_values.push(\n\t\t\t...normalizedValues.map((id) => ({\n\t\t\t\tid,\n\t\t\t\ttype: SelectMenuDefaultValueType.User as const,\n\t\t\t})),\n\t\t);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Adds default values to this auto populated select menu.\n\t *\n\t * @param values - The values to add\n\t */\n\tpublic addDefaultValues(\n\t\t...values: RestOrArray<\n\t\t\t| APISelectMenuDefaultValue<SelectMenuDefaultValueType.Role>\n\t\t\t| APISelectMenuDefaultValue<SelectMenuDefaultValueType.User>\n\t\t>\n\t) {\n\t\tconst normalizedValues = normalizeArray(values);\n\t\toptionsLengthValidator.parse((this.data.default_values?.length ?? 0) + normalizedValues.length);\n\t\tthis.data.default_values ??= [];\n\t\tthis.data.default_values.push(...normalizedValues);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets default values for this auto populated select menu.\n\t *\n\t * @param values - The values to set\n\t */\n\tpublic setDefaultValues(\n\t\t...values: RestOrArray<\n\t\t\t| APISelectMenuDefaultValue<SelectMenuDefaultValueType.Role>\n\t\t\t| APISelectMenuDefaultValue<SelectMenuDefaultValueType.User>\n\t\t>\n\t) {\n\t\tconst normalizedValues = normalizeArray(values);\n\t\toptionsLengthValidator.parse(normalizedValues.length);\n\t\tthis.data.default_values = normalizedValues;\n\t\treturn this;\n\t}\n}\n","import {\n\ttype APIRoleSelectComponent,\n\ttype Snowflake,\n\tComponentType,\n\tSelectMenuDefaultValueType,\n} from 'discord-api-types/v10';\nimport { type RestOrArray, normalizeArray } from '../../util/normalizeArray.js';\nimport { optionsLengthValidator } from '../Assertions.js';\nimport { BaseSelectMenuBuilder } from './BaseSelectMenu.js';\n\n/**\n * A builder that creates API-compatible JSON data for role select menus.\n */\nexport class RoleSelectMenuBuilder extends BaseSelectMenuBuilder<APIRoleSelectComponent> {\n\t/**\n\t * Creates a new select menu from API data.\n\t *\n\t * @param data - The API data to create this select menu with\n\t * @example\n\t * Creating a select menu from an API data object:\n\t * ```ts\n\t * const selectMenu = new RoleSelectMenuBuilder({\n\t * \tcustom_id: 'a cool select menu',\n\t * \tplaceholder: 'select an option',\n\t * \tmax_values: 2,\n\t * });\n\t * ```\n\t * @example\n\t * Creating a select menu using setters and API data:\n\t * ```ts\n\t * const selectMenu = new RoleSelectMenuBuilder({\n\t * \tcustom_id: 'a cool select menu',\n\t * })\n\t * \t.setMinValues(1);\n\t * ```\n\t */\n\tpublic constructor(data?: Partial<APIRoleSelectComponent>) {\n\t\tsuper({ ...data, type: ComponentType.RoleSelect });\n\t}\n\n\t/**\n\t * Adds default roles to this auto populated select menu.\n\t *\n\t * @param roles - The roles to add\n\t */\n\tpublic addDefaultRoles(...roles: RestOrArray<Snowflake>) {\n\t\tconst normalizedValues = normalizeArray(roles);\n\t\toptionsLengthValidator.parse((this.data.default_values?.length ?? 0) + normalizedValues.length);\n\t\tthis.data.default_values ??= [];\n\n\t\tthis.data.default_values.push(\n\t\t\t...normalizedValues.map((id) => ({\n\t\t\t\tid,\n\t\t\t\ttype: SelectMenuDefaultValueType.Role as const,\n\t\t\t})),\n\t\t);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets default roles for this auto populated select menu.\n\t *\n\t * @param roles - The roles to set\n\t */\n\tpublic setDefaultRoles(...roles: RestOrArray<Snowflake>) {\n\t\tconst normalizedValues = normalizeArray(roles);\n\t\toptionsLengthValidator.parse(normalizedValues.length);\n\n\t\tthis.data.default_values = normalizedValues.map((id) => ({\n\t\t\tid,\n\t\t\ttype: SelectMenuDefaultValueType.Role as const,\n\t\t}));\n\n\t\treturn this;\n\t}\n}\n","import { Result, s } from '@sapphire/shapeshift';\nimport { ChannelType, ComponentType, SelectMenuDefaultValueType } from 'discord-api-types/v10';\nimport { isValidationEnabled } from '../../util/validation.js';\nimport { customIdValidator, emojiValidator, idValidator } from '../Assertions.js';\n\nconst selectMenuBasePredicate = s.object({\n\tid: idValidator.optional(),\n\tplaceholder: s.string().lengthLessThanOrEqual(150).optional(),\n\tmin_values: s.number().greaterThanOrEqual(0).lessThanOrEqual(25).optional(),\n\tmax_values: s.number().greaterThanOrEqual(0).lessThanOrEqual(25).optional(),\n\tcustom_id: customIdValidator,\n\tdisabled: s.boolean().optional(),\n});\n\nexport const selectMenuChannelPredicate = selectMenuBasePredicate\n\t.extend({\n\t\ttype: s.literal(ComponentType.ChannelSelect),\n\t\tchannel_types: s.nativeEnum(ChannelType).array().optional(),\n\t\tdefault_values: s\n\t\t\t.object({ id: s.string(), type: s.literal(SelectMenuDefaultValueType.Channel) })\n\t\t\t.array()\n\t\t\t.lengthLessThanOrEqual(25)\n\t\t\t.optional(),\n\t})\n\t.setValidationEnabled(isValidationEnabled);\n\nexport const selectMenuMentionablePredicate = selectMenuBasePredicate\n\t.extend({\n\t\ttype: s.literal(ComponentType.MentionableSelect),\n\t\tdefault_values: s\n\t\t\t.object({\n\t\t\t\tid: s.string(),\n\t\t\t\ttype: s.union([s.literal(SelectMenuDefaultValueType.Role), s.literal(SelectMenuDefaultValueType.User)]),\n\t\t\t})\n\t\t\t.array()\n\t\t\t.lengthLessThanOrEqual(25)\n\t\t\t.optional(),\n\t})\n\t.setValidationEnabled(isValidationEnabled);\n\nexport const selectMenuRolePredicate = selectMenuBasePredicate\n\t.extend({\n\t\ttype: s.literal(ComponentType.RoleSelect),\n\t\tdefault_values: s\n\t\t\t.object({ id: s.string(), type: s.literal(SelectMenuDefaultValueType.Role) })\n\t\t\t.array()\n\t\t\t.lengthLessThanOrEqual(25)\n\t\t\t.optional(),\n\t})\n\t.setValidationEnabled(isValidationEnabled);\n\nexport const selectMenuUserPredicate = selectMenuBasePredicate\n\t.extend({\n\t\ttype: s.literal(ComponentType.UserSelect),\n\t\tdefault_values: s\n\t\t\t.object({ id: s.string(), type: s.literal(SelectMenuDefaultValueType.User) })\n\t\t\t.array()\n\t\t\t.lengthLessThanOrEqual(25)\n\t\t\t.optional(),\n\t})\n\t.setValidationEnabled(isValidationEnabled);\n\nexport const selectMenuStringOptionPredicate = s\n\t.object({\n\t\tlabel: s.string().lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(100),\n\t\tvalue: s.string().lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(100),\n\t\tdescription: s.string().lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(100).optional(),\n\t\temoji: emojiValidator.optional(),\n\t\tdefault: s.boolean().optional(),\n\t})\n\t.setValidationEnabled(isValidationEnabled);\n\nexport const selectMenuStringPredicate = selectMenuBasePredicate\n\t.extend({\n\t\ttype: s.literal(ComponentType.StringSelect),\n\t\toptions: selectMenuStringOptionPredicate.array().lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(25),\n\t})\n\t.reshape((value) => {\n\t\tif (value.min_values !== undefined && value.options.length < value.min_values) {\n\t\t\treturn Result.err(new RangeError(`The number of options must be greater than or equal to min_values`));\n\t\t}\n\n\t\tif (value.min_values !== undefined && value.max_values !== undefined && value.min_values > value.max_values) {\n\t\t\treturn Result.err(\n\t\t\t\tnew RangeError(`The maximum amount of options must be greater than or equal to the minimum amount of options`),\n\t\t\t);\n\t\t}\n\n\t\treturn Result.ok(value);\n\t})\n\t.setValidationEnabled(isValidationEnabled);\n","import { ComponentType } from 'discord-api-types/v10';\nimport type { APIStringSelectComponent, APISelectMenuOption } from 'discord-api-types/v10';\nimport { normalizeArray, type RestOrArray } from '../../util/normalizeArray.js';\nimport { optionsLengthValidator, validateRequiredSelectMenuParameters } from '../Assertions.js';\nimport { selectMenuStringOptionPredicate } from './Assertions.js';\nimport { BaseSelectMenuBuilder } from './BaseSelectMenu.js';\nimport { StringSelectMenuOptionBuilder } from './StringSelectMenuOption.js';\n\n/**\n * A builder that creates API-compatible JSON data for string select menus.\n */\nexport class StringSelectMenuBuilder extends BaseSelectMenuBuilder<APIStringSelectComponent> {\n\t/**\n\t * The options within this select menu.\n\t */\n\tpublic readonly options: StringSelectMenuOptionBuilder[];\n\n\t/**\n\t * Creates a new select menu from API data.\n\t *\n\t * @param data - The API data to create this select menu with\n\t * @example\n\t * Creating a select menu from an API data object:\n\t * ```ts\n\t * const selectMenu = new StringSelectMenuBuilder({\n\t * \tcustom_id: 'a cool select menu',\n\t * \tplaceholder: 'select an option',\n\t * \tmax_values: 2,\n\t * \toptions: [\n\t * \t\t{ label: 'option 1', value: '1' },\n\t * \t\t{ label: 'option 2', value: '2' },\n\t * \t\t{ label: 'option 3', value: '3' },\n\t * \t],\n\t * });\n\t * ```\n\t * @example\n\t * Creating a select menu using setters and API data:\n\t * ```ts\n\t * const selectMenu = new StringSelectMenuBuilder({\n\t * \tcustom_id: 'a cool select menu',\n\t * })\n\t * \t.setMinValues(1)\n\t * \t.addOptions({\n\t * \t\tlabel: 'Catchy',\n\t * \t\tvalue: 'catch',\n\t * \t});\n\t * ```\n\t */\n\tpublic constructor(data?: Partial<APIStringSelectComponent>) {\n\t\tconst { options, ...initData } = data ?? {};\n\t\tsuper({ ...initData, type: ComponentType.StringSelect });\n\t\tthis.options = options?.map((option: APISelectMenuOption) => new StringSelectMenuOptionBuilder(option)) ?? [];\n\t}\n\n\t/**\n\t * Adds options to this select menu.\n\t *\n\t * @param options - The options to add\n\t */\n\tpublic addOptions(...options: RestOrArray<APISelectMenuOption | StringSelectMenuOptionBuilder>) {\n\t\tconst normalizedOptions = normalizeArray(options);\n\t\toptionsLengthValidator.parse(this.options.length + normalizedOptions.length);\n\t\tthis.options.push(\n\t\t\t...normalizedOptions.map((normalizedOption) =>\n\t\t\t\tnormalizedOption instanceof StringSelectMenuOptionBuilder\n\t\t\t\t\t? normalizedOption\n\t\t\t\t\t: new StringSelectMenuOptionBuilder(selectMenuStringOptionPredicate.parse(normalizedOption)),\n\t\t\t),\n\t\t);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the options for this select menu.\n\t *\n\t * @param options - The options to set\n\t */\n\tpublic setOptions(...options: RestOrArray<APISelectMenuOption | StringSelectMenuOptionBuilder>) {\n\t\treturn this.spliceOptions(0, this.options.length, ...options);\n\t}\n\n\t/**\n\t * Removes, replaces, or inserts options for this select menu.\n\t *\n\t * @remarks\n\t * This method behaves similarly\n\t * to {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice | Array.prototype.splice()}.\n\t * It's useful for modifying and adjusting the order of existing options.\n\t * @example\n\t * Remove the first option:\n\t * ```ts\n\t * selectMenu.spliceOptions(0, 1);\n\t * ```\n\t * @example\n\t * Remove the first n option:\n\t * ```ts\n\t * const n = 4;\n\t * selectMenu.spliceOptions(0, n);\n\t * ```\n\t * @example\n\t * Remove the last option:\n\t * ```ts\n\t * selectMenu.spliceOptions(-1, 1);\n\t * ```\n\t * @param index - The index to start at\n\t * @param deleteCount - The number of options to remove\n\t * @param options - The replacing option objects or builders\n\t */\n\tpublic spliceOptions(\n\t\tindex: number,\n\t\tdeleteCount: number,\n\t\t...options: RestOrArray<APISelectMenuOption | StringSelectMenuOptionBuilder>\n\t) {\n\t\tconst normalizedOptions = normalizeArray(options);\n\n\t\tconst clone = [...this.options];\n\n\t\tclone.splice(\n\t\t\tindex,\n\t\t\tdeleteCount,\n\t\t\t...normalizedOptions.map((normalizedOption) =>\n\t\t\t\tnormalizedOption instanceof StringSelectMenuOptionBuilder\n\t\t\t\t\t? normalizedOption\n\t\t\t\t\t: new StringSelectMenuOptionBuilder(selectMenuStringOptionPredicate.parse(normalizedOption)),\n\t\t\t),\n\t\t);\n\n\t\toptionsLengthValidator.parse(clone.length);\n\t\tthis.options.splice(0, this.options.length, ...clone);\n\t\treturn this;\n\t}\n\n\t/**\n\t * {@inheritDoc BaseSelectMenuBuilder.toJSON}\n\t */\n\tpublic override toJSON(): APIStringSelectComponent {\n\t\tvalidateRequiredSelectMenuParameters(this.options, this.data.custom_id);\n\n\t\treturn {\n\t\t\t...this.data,\n\t\t\toptions: this.options.map((option) => option.toJSON()),\n\t\t} as APIStringSelectComponent;\n\t}\n}\n","import {\n\ttype APIUserSelectComponent,\n\ttype Snowflake,\n\tComponentType,\n\tSelectMenuDefaultValueType,\n} from 'discord-api-types/v10';\nimport { type RestOrArray, normalizeArray } from '../../util/normalizeArray.js';\nimport { optionsLengthValidator } from '../Assertions.js';\nimport { BaseSelectMenuBuilder } from './BaseSelectMenu.js';\n\n/**\n * A builder that creates API-compatible JSON data for user select menus.\n */\nexport class UserSelectMenuBuilder extends BaseSelectMenuBuilder<APIUserSelectComponent> {\n\t/**\n\t * Creates a new select menu from API data.\n\t *\n\t * @param data - The API data to create this select menu with\n\t * @example\n\t * Creating a select menu from an API data object:\n\t * ```ts\n\t * const selectMenu = new UserSelectMenuBuilder({\n\t * \tcustom_id: 'a cool select menu',\n\t * \tplaceholder: 'select an option',\n\t * \tmax_values: 2,\n\t * });\n\t * ```\n\t * @example\n\t * Creating a select menu using setters and API data:\n\t * ```ts\n\t * const selectMenu = new UserSelectMenuBuilder({\n\t * \tcustom_id: 'a cool select menu',\n\t * })\n\t * \t.setMinValues(1);\n\t * ```\n\t */\n\tpublic constructor(data?: Partial<APIUserSelectComponent>) {\n\t\tsuper({ ...data, type: ComponentType.UserSelect });\n\t}\n\n\t/**\n\t * Adds default users to this auto populated select menu.\n\t *\n\t * @param users - The users to add\n\t */\n\tpublic addDefaultUsers(...users: RestOrArray<Snowflake>) {\n\t\tconst normalizedValues = normalizeArray(users);\n\t\toptionsLengthValidator.parse((this.data.default_values?.length ?? 0) + normalizedValues.length);\n\t\tthis.data.default_values ??= [];\n\n\t\tthis.data.default_values.push(\n\t\t\t...normalizedValues.map((id) => ({\n\t\t\t\tid,\n\t\t\t\ttype: SelectMenuDefaultValueType.User as const,\n\t\t\t})),\n\t\t);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets default users for this auto populated select menu.\n\t *\n\t * @param users - The users to set\n\t */\n\tpublic setDefaultUsers(...users: RestOrArray<Snowflake>) {\n\t\tconst normalizedValues = normalizeArray(users);\n\t\toptionsLengthValidator.parse(normalizedValues.length);\n\n\t\tthis.data.default_values = normalizedValues.map((id) => ({\n\t\t\tid,\n\t\t\ttype: SelectMenuDefaultValueType.User as const,\n\t\t}));\n\n\t\treturn this;\n\t}\n}\n","import { s } from '@sapphire/shapeshift';\nimport { ComponentType } from 'discord-api-types/v10';\nimport { isValidationEnabled } from '../../util/validation.js';\nimport { idValidator } from '../Assertions.js';\nimport { fileUploadPredicate } from '../fileUpload/Assertions.js';\nimport {\n\tselectMenuChannelPredicate,\n\tselectMenuMentionablePredicate,\n\tselectMenuRolePredicate,\n\tselectMenuStringPredicate,\n\tselectMenuUserPredicate,\n} from '../selectMenu/Assertions.js';\nimport { textInputPredicate } from '../textInput/Assertions.js';\n\nexport const labelPredicate = s\n\t.object({\n\t\tid: idValidator.optional(),\n\t\ttype: s.literal(ComponentType.Label),\n\t\tlabel: s.string().lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(45),\n\t\tdescription: s.string().lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(100).optional(),\n\t\tcomponent: s.union([\n\t\t\ttextInputPredicate,\n\t\t\tselectMenuUserPredicate,\n\t\t\tselectMenuRolePredicate,\n\t\t\tselectMenuMentionablePredicate,\n\t\t\tselectMenuChannelPredicate,\n\t\t\tselectMenuStringPredicate,\n\t\t\tfileUploadPredicate,\n\t\t]),\n\t})\n\t.setValidationEnabled(isValidationEnabled);\n","import type {\n\tAPIChannelSelectComponent,\n\tAPIFileUploadComponent,\n\tAPILabelComponent,\n\tAPIMentionableSelectComponent,\n\tAPIRoleSelectComponent,\n\tAPIStringSelectComponent,\n\tAPITextInputComponent,\n\tAPIUserSelectComponent,\n} from 'discord-api-types/v10';\nimport { ComponentType } from 'discord-api-types/v10';\nimport { ComponentBuilder } from '../Component.js';\nimport { createComponentBuilder, resolveBuilder } from '../Components.js';\nimport { FileUploadBuilder } from '../fileUpload/FileUpload.js';\nimport { ChannelSelectMenuBuilder } from '../selectMenu/ChannelSelectMenu.js';\nimport { MentionableSelectMenuBuilder } from '../selectMenu/MentionableSelectMenu.js';\nimport { RoleSelectMenuBuilder } from '../selectMenu/RoleSelectMenu.js';\nimport { StringSelectMenuBuilder } from '../selectMenu/StringSelectMenu.js';\nimport { UserSelectMenuBuilder } from '../selectMenu/UserSelectMenu.js';\nimport { TextInputBuilder } from '../textInput/TextInput.js';\nimport { labelPredicate } from './Assertions.js';\n\nexport interface LabelBuilderData extends Partial<Omit<APILabelComponent, 'component'>> {\n\tcomponent?:\n\t\t| ChannelSelectMenuBuilder\n\t\t| FileUploadBuilder\n\t\t| MentionableSelectMenuBuilder\n\t\t| RoleSelectMenuBuilder\n\t\t| StringSelectMenuBuilder\n\t\t| TextInputBuilder\n\t\t| UserSelectMenuBuilder;\n}\n\n/**\n * A builder that creates API-compatible JSON data for labels.\n */\nexport class LabelBuilder extends ComponentBuilder<LabelBuilderData> {\n\t/**\n\t * @internal\n\t */\n\tpublic override readonly data: LabelBuilderData;\n\n\t/**\n\t * Creates a new label.\n\t *\n\t * @param data - The API data to create this label with\n\t * @example\n\t * Creating a label from an API data object:\n\t * ```ts\n\t * const label = new LabelBuilder({\n\t * \tlabel: \"label\",\n\t * \tcomponent,\n\t * });\n\t * ```\n\t * @example\n\t * Creating a label using setters and API data:\n\t * ```ts\n\t * const label = new LabelBuilder({\n\t * \tlabel: 'label',\n\t * \tcomponent,\n\t * }).setLabel('new text');\n\t * ```\n\t */\n\tpublic constructor(data: Partial<APILabelComponent> = {}) {\n\t\tsuper({ type: ComponentType.Label });\n\n\t\tconst { component, ...rest } = data;\n\n\t\tthis.data = {\n\t\t\t...rest,\n\t\t\tcomponent: component ? createComponentBuilder(component) : undefined,\n\t\t\ttype: ComponentType.Label,\n\t\t};\n\t}\n\n\t/**\n\t * Sets the label for this label.\n\t *\n\t * @param label - The label to use\n\t */\n\tpublic setLabel(label: string) {\n\t\tthis.data.label = label;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the description for this label.\n\t *\n\t * @param description - The description to use\n\t */\n\tpublic setDescription(description: string) {\n\t\tthis.data.description = description;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Clears the description for this label.\n\t */\n\tpublic clearDescription() {\n\t\tthis.data.description = undefined;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets a string select menu component to this label.\n\t *\n\t * @param input - A function that returns a component builder or an already built builder\n\t */\n\tpublic setStringSelectMenuComponent(\n\t\tinput:\n\t\t\t| APIStringSelectComponent\n\t\t\t| StringSelectMenuBuilder\n\t\t\t| ((builder: StringSelectMenuBuilder) => StringSelectMenuBuilder),\n\t): this {\n\t\tthis.data.component = resolveBuilder(input, StringSelectMenuBuilder);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets a user select menu component to this label.\n\t *\n\t * @param input - A function that returns a component builder or an already built builder\n\t */\n\tpublic setUserSelectMenuComponent(\n\t\tinput: APIUserSelectComponent | UserSelectMenuBuilder | ((builder: UserSelectMenuBuilder) => UserSelectMenuBuilder),\n\t): this {\n\t\tthis.data.component = resolveBuilder(input, UserSelectMenuBuilder);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets a role select menu component to this label.\n\t *\n\t * @param input - A function that returns a component builder or an already built builder\n\t */\n\tpublic setRoleSelectMenuComponent(\n\t\tinput: APIRoleSelectComponent | RoleSelectMenuBuilder | ((builder: RoleSelectMenuBuilder) => RoleSelectMenuBuilder),\n\t): this {\n\t\tthis.data.component = resolveBuilder(input, RoleSelectMenuBuilder);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets a mentionable select menu component to this label.\n\t *\n\t * @param input - A function that returns a component builder or an already built builder\n\t */\n\tpublic setMentionableSelectMenuComponent(\n\t\tinput:\n\t\t\t| APIMentionableSelectComponent\n\t\t\t| MentionableSelectMenuBuilder\n\t\t\t| ((builder: MentionableSelectMenuBuilder) => MentionableSelectMenuBuilder),\n\t): this {\n\t\tthis.data.component = resolveBuilder(input, MentionableSelectMenuBuilder);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets a channel select menu component to this label.\n\t *\n\t * @param input - A function that returns a component builder or an already built builder\n\t */\n\tpublic setChannelSelectMenuComponent(\n\t\tinput:\n\t\t\t| APIChannelSelectComponent\n\t\t\t| ChannelSelectMenuBuilder\n\t\t\t| ((builder: ChannelSelectMenuBuilder) => ChannelSelectMenuBuilder),\n\t): this {\n\t\tthis.data.component = resolveBuilder(input, ChannelSelectMenuBuilder);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets a text input component to this label.\n\t *\n\t * @param input - A function that returns a component builder or an already built builder\n\t */\n\tpublic setTextInputComponent(\n\t\tinput: APITextInputComponent | TextInputBuilder | ((builder: TextInputBuilder) => TextInputBuilder),\n\t): this {\n\t\tthis.data.component = resolveBuilder(input, TextInputBuilder);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets a file upload component to this label.\n\t *\n\t * @param input - A function that returns a component builder or an already built builder\n\t */\n\tpublic setFileUploadComponent(\n\t\tinput: APIFileUploadComponent | FileUploadBuilder | ((builder: FileUploadBuilder) => FileUploadBuilder),\n\t): this {\n\t\tthis.data.component = resolveBuilder(input, FileUploadBuilder);\n\t\treturn this;\n\t}\n\n\t/**\n\t * {@inheritDoc ComponentBuilder.toJSON}\n\t */\n\tpublic override toJSON(): APILabelComponent {\n\t\tconst { component, ...rest } = this.data;\n\n\t\tconst data = {\n\t\t\t...rest,\n\t\t\t// The label predicate validates the component.\n\t\t\tcomponent: component?.toJSON(),\n\t\t};\n\n\t\tlabelPredicate.parse(data);\n\n\t\treturn data as APILabelComponent;\n\t}\n}\n","import type { APIThumbnailComponent } from 'discord-api-types/v10';\nimport { ComponentType } from 'discord-api-types/v10';\nimport { ComponentBuilder } from '../Component';\nimport { descriptionPredicate, spoilerPredicate, unfurledMediaItemPredicate } from './Assertions';\n\nexport class ThumbnailBuilder extends ComponentBuilder<APIThumbnailComponent> {\n\t/**\n\t * Creates a new thumbnail from API data.\n\t *\n\t * @param data - The API data to create this thumbnail with\n\t * @example\n\t * Creating a thumbnail from an API data object:\n\t * ```ts\n\t * const thumbnail = new ThumbnailBuilder({\n\t * \tdescription: 'some text',\n\t * media: {\n\t * url: 'https://cdn.discordapp.com/embed/avatars/4.png',\n\t * },\n\t * });\n\t * ```\n\t * @example\n\t * Creating a thumbnail using setters and API data:\n\t * ```ts\n\t * const thumbnail = new ThumbnailBuilder({\n\t * \tmedia: {\n\t * url: 'attachment://image.png',\n\t * },\n\t * })\n\t * \t.setDescription('alt text');\n\t * ```\n\t */\n\tpublic constructor(data: Partial<APIThumbnailComponent> = {}) {\n\t\tsuper({\n\t\t\ttype: ComponentType.Thumbnail,\n\t\t\t...data,\n\t\t\tmedia: data.media ? { url: data.media.url } : undefined,\n\t\t});\n\t}\n\n\t/**\n\t * Sets the description of this thumbnail.\n\t *\n\t * @param description - The description to use\n\t */\n\tpublic setDescription(description: string) {\n\t\tthis.data.description = descriptionPredicate.parse(description);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Clears the description of this thumbnail.\n\t */\n\tpublic clearDescription() {\n\t\tthis.data.description = undefined;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the spoiler status of this thumbnail.\n\t *\n\t * @param spoiler - The spoiler status to use\n\t */\n\tpublic setSpoiler(spoiler = true) {\n\t\tthis.data.spoiler = spoilerPredicate.parse(spoiler);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the media URL of this thumbnail.\n\t *\n\t * @param url - The URL to use\n\t */\n\tpublic setURL(url: string) {\n\t\tthis.data.media = unfurledMediaItemPredicate.parse({ url });\n\t\treturn this;\n\t}\n\n\t/**\n\t * {@inheritdoc ComponentBuilder.toJSON}\n\t */\n\tpublic override toJSON(): APIThumbnailComponent {\n\t\tunfurledMediaItemPredicate.parse(this.data.media);\n\n\t\treturn { ...this.data } as APIThumbnailComponent;\n\t}\n}\n","import { ComponentType, type APIFileComponent } from 'discord-api-types/v10';\nimport { ComponentBuilder } from '../Component';\nimport { filePredicate, spoilerPredicate } from './Assertions';\n\nexport class FileBuilder extends ComponentBuilder<APIFileComponent> {\n\t/**\n\t * Creates a new file from API data.\n\t *\n\t * @param data - The API data to create this file with\n\t * @example\n\t * Creating a file from an API data object:\n\t * ```ts\n\t * const file = new FileBuilder({\n\t * \tspoiler: true,\n\t * \tfile: {\n\t * \t\turl: 'attachment://file.png',\n\t * \t},\n\t * });\n\t * ```\n\t * @example\n\t * Creating a file using setters and API data:\n\t * ```ts\n\t * const file = new FileBuilder({\n\t * \tfile: {\n\t * \t\turl: 'attachment://image.jpg',\n\t * \t},\n\t * })\n\t * \t.setSpoiler(false);\n\t * ```\n\t */\n\tpublic constructor(data: Partial<APIFileComponent> = {}) {\n\t\tsuper({ type: ComponentType.File, ...data, file: data.file ? { url: data.file.url } : undefined });\n\t}\n\n\t/**\n\t * Sets the spoiler status of this file.\n\t *\n\t * @param spoiler - The spoiler status to use\n\t */\n\tpublic setSpoiler(spoiler = true) {\n\t\tthis.data.spoiler = spoilerPredicate.parse(spoiler);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the media URL of this file.\n\t *\n\t * @param url - The URL to use\n\t */\n\tpublic setURL(url: string) {\n\t\tthis.data.file = filePredicate.parse({ url });\n\t\treturn this;\n\t}\n\n\t/**\n\t * {@inheritDoc ComponentBuilder.toJSON}\n\t */\n\tpublic override toJSON(): APIFileComponent {\n\t\tfilePredicate.parse(this.data.file);\n\n\t\treturn { ...this.data, file: { ...this.data.file } } as APIFileComponent;\n\t}\n}\n","import type { SeparatorSpacingSize, APISeparatorComponent } from 'discord-api-types/v10';\nimport { ComponentType } from 'discord-api-types/v10';\nimport { ComponentBuilder } from '../Component';\nimport { dividerPredicate, spacingPredicate } from './Assertions';\n\nexport class SeparatorBuilder extends ComponentBuilder<APISeparatorComponent> {\n\t/**\n\t * Creates a new separator from API data.\n\t *\n\t * @param data - The API data to create this separator with\n\t * @example\n\t * Creating a separator from an API data object:\n\t * ```ts\n\t * const separator = new SeparatorBuilder({\n\t * \tspacing: SeparatorSpacingSize.Small,\n\t * divider: true,\n\t * });\n\t * ```\n\t * @example\n\t * Creating a separator using setters and API data:\n\t * ```ts\n\t * const separator = new SeparatorBuilder({\n\t * \tspacing: SeparatorSpacingSize.Large,\n\t * })\n\t * \t.setDivider(false);\n\t * ```\n\t */\n\tpublic constructor(data: Partial<APISeparatorComponent> = {}) {\n\t\tsuper({\n\t\t\ttype: ComponentType.Separator,\n\t\t\t...data,\n\t\t});\n\t}\n\n\t/**\n\t * Sets whether this separator should show a divider line.\n\t *\n\t * @param divider - Whether to show a divider line\n\t */\n\tpublic setDivider(divider = true) {\n\t\tthis.data.divider = dividerPredicate.parse(divider);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the spacing of this separator.\n\t *\n\t * @param spacing - The spacing to use\n\t */\n\tpublic setSpacing(spacing: SeparatorSpacingSize) {\n\t\tthis.data.spacing = spacingPredicate.parse(spacing);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Clears the spacing of this separator.\n\t */\n\tpublic clearSpacing() {\n\t\tthis.data.spacing = undefined;\n\t\treturn this;\n\t}\n\n\t/**\n\t * {@inheritDoc ComponentBuilder.toJSON}\n\t */\n\tpublic override toJSON(): APISeparatorComponent {\n\t\treturn { ...this.data } as APISeparatorComponent;\n\t}\n}\n","import type { APITextDisplayComponent } from 'discord-api-types/v10';\nimport { ComponentType } from 'discord-api-types/v10';\nimport { ComponentBuilder } from '../Component';\nimport { textDisplayContentPredicate } from './Assertions';\n\nexport class TextDisplayBuilder extends ComponentBuilder<APITextDisplayComponent> {\n\t/**\n\t * Creates a new text display from API data.\n\t *\n\t * @param data - The API data to create this text display with\n\t * @example\n\t * Creating a text display from an API data object:\n\t * ```ts\n\t * const textDisplay = new TextDisplayBuilder({\n\t * \tcontent: 'some text',\n\t * });\n\t * ```\n\t * @example\n\t * Creating a text display using setters and API data:\n\t * ```ts\n\t * const textDisplay = new TextDisplayBuilder({\n\t * \tcontent: 'old text',\n\t * })\n\t * \t.setContent('new text');\n\t * ```\n\t */\n\tpublic constructor(data: Partial<APITextDisplayComponent> = {}) {\n\t\tsuper({\n\t\t\ttype: ComponentType.TextDisplay,\n\t\t\t...data,\n\t\t});\n\t}\n\n\t/**\n\t * Sets the text of this text display.\n\t *\n\t * @param content - The text to use\n\t */\n\tpublic setContent(content: string) {\n\t\tthis.data.content = textDisplayContentPredicate.parse(content);\n\t\treturn this;\n\t}\n\n\t/**\n\t * {@inheritDoc ComponentBuilder.toJSON}\n\t */\n\tpublic override toJSON(): APITextDisplayComponent {\n\t\ttextDisplayContentPredicate.parse(this.data.content);\n\n\t\treturn { ...this.data } as APITextDisplayComponent;\n\t}\n}\n","/* eslint-disable jsdoc/check-param-names */\n\nimport type {\n\tAPIActionRowComponent,\n\tAPIComponentInContainer,\n\tAPIComponentInMessageActionRow,\n\tAPIContainerComponent,\n\tAPIFileComponent,\n\tAPIMediaGalleryComponent,\n\tAPISectionComponent,\n\tAPISeparatorComponent,\n\tAPITextDisplayComponent,\n} from 'discord-api-types/v10';\nimport { ComponentType } from 'discord-api-types/v10';\nimport type { RGBTuple } from '../../index.js';\nimport { MediaGalleryBuilder, SectionBuilder } from '../../index.js';\nimport { normalizeArray, type RestOrArray } from '../../util/normalizeArray.js';\nimport type { AnyComponentBuilder, MessageActionRowComponentBuilder } from '../ActionRow.js';\nimport { ActionRowBuilder } from '../ActionRow.js';\nimport { ComponentBuilder } from '../Component.js';\nimport { createComponentBuilder, resolveBuilder } from '../Components.js';\nimport { containerColorPredicate, spoilerPredicate } from './Assertions.js';\nimport { FileBuilder } from './File.js';\nimport { SeparatorBuilder } from './Separator.js';\nimport { TextDisplayBuilder } from './TextDisplay.js';\n\n/**\n * The builders that may be used within a container.\n */\nexport type ContainerComponentBuilder =\n\t| ActionRowBuilder<AnyComponentBuilder>\n\t| FileBuilder\n\t| MediaGalleryBuilder\n\t| SectionBuilder\n\t| SeparatorBuilder\n\t| TextDisplayBuilder;\n\n/**\n * A builder that creates API-compatible JSON data for a container.\n */\nexport class ContainerBuilder extends ComponentBuilder<APIContainerComponent> {\n\t/**\n\t * The components within this container.\n\t */\n\tpublic readonly components: ContainerComponentBuilder[];\n\n\t/**\n\t * Creates a new container from API data.\n\t *\n\t * @param data - The API data to create this container with\n\t * @example\n\t * Creating a container from an API data object:\n\t * ```ts\n\t * const container = new ContainerBuilder({\n\t * \tcomponents: [\n\t * \t\t{\n\t * \t\t\tcontent: \"Some text here\",\n\t * \t\t\ttype: ComponentType.TextDisplay,\n\t * \t\t},\n\t * \t],\n\t * });\n\t * ```\n\t * @example\n\t * Creating a container using setters and API data:\n\t * ```ts\n\t * const container = new ContainerBuilder({\n\t * \tcomponents: [\n\t * \t\t{\n\t * \t\t\tcontent: \"# Heading\",\n\t * \t\t\ttype: ComponentType.TextDisplay,\n\t * \t\t},\n\t * \t],\n\t * })\n\t * .addSeparatorComponents(separator)\n\t * .addSectionComponents(section);\n\t * ```\n\t */\n\tpublic constructor({ components, ...data }: Partial<APIContainerComponent> = {}) {\n\t\tsuper({ type: ComponentType.Container, ...data });\n\t\tthis.components = (components?.map((component) => createComponentBuilder(component)) ??\n\t\t\t[]) as ContainerComponentBuilder[];\n\t}\n\n\t/**\n\t * Sets the accent color of this container.\n\t *\n\t * @param color - The color to use\n\t */\n\tpublic setAccentColor(color?: RGBTuple | number): this {\n\t\t// Data assertions\n\t\tcontainerColorPredicate.parse(color);\n\n\t\tif (Array.isArray(color)) {\n\t\t\tconst [red, green, blue] = color;\n\t\t\tthis.data.accent_color = (red << 16) + (green << 8) + blue;\n\t\t\treturn this;\n\t\t}\n\n\t\tthis.data.accent_color = color;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Clears the accent color of this container.\n\t */\n\tpublic clearAccentColor() {\n\t\tthis.data.accent_color = undefined;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Adds action row components to this container.\n\t *\n\t * @param components - The action row components to add\n\t */\n\tpublic addActionRowComponents<ComponentType extends MessageActionRowComponentBuilder>(\n\t\t...components: RestOrArray<\n\t\t\t| ActionRowBuilder<ComponentType>\n\t\t\t| APIActionRowComponent<APIComponentInMessageActionRow>\n\t\t\t| ((builder: ActionRowBuilder<ComponentType>) => ActionRowBuilder<ComponentType>)\n\t\t>\n\t) {\n\t\tthis.components.push(\n\t\t\t...normalizeArray(components).map((component) => resolveBuilder(component, ActionRowBuilder<ComponentType>)),\n\t\t);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Adds file components to this container.\n\t *\n\t * @param components - The file components to add\n\t */\n\tpublic addFileComponents(\n\t\t...components: RestOrArray<APIFileComponent | FileBuilder | ((builder: FileBuilder) => FileBuilder)>\n\t) {\n\t\tthis.components.push(...normalizeArray(components).map((component) => resolveBuilder(component, FileBuilder)));\n\t\treturn this;\n\t}\n\n\t/**\n\t * Adds media gallery components to this container.\n\t *\n\t * @param components - The media gallery components to add\n\t */\n\tpublic addMediaGalleryComponents(\n\t\t...components: RestOrArray<\n\t\t\tAPIMediaGalleryComponent | MediaGalleryBuilder | ((builder: MediaGalleryBuilder) => MediaGalleryBuilder)\n\t\t>\n\t) {\n\t\tthis.components.push(\n\t\t\t...normalizeArray(components).map((component) => resolveBuilder(component, MediaGalleryBuilder)),\n\t\t);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Adds section components to this container.\n\t *\n\t * @param components - The section components to add\n\t */\n\tpublic addSectionComponents(\n\t\t...components: RestOrArray<APISectionComponent | SectionBuilder | ((builder: SectionBuilder) => SectionBuilder)>\n\t) {\n\t\tthis.components.push(...normalizeArray(components).map((component) => resolveBuilder(component, SectionBuilder)));\n\t\treturn this;\n\t}\n\n\t/**\n\t * Adds separator components to this container.\n\t *\n\t * @param components - The separator components to add\n\t */\n\tpublic addSeparatorComponents(\n\t\t...components: RestOrArray<\n\t\t\tAPISeparatorComponent | SeparatorBuilder | ((builder: SeparatorBuilder) => SeparatorBuilder)\n\t\t>\n\t) {\n\t\tthis.components.push(...normalizeArray(components).map((component) => resolveBuilder(component, SeparatorBuilder)));\n\t\treturn this;\n\t}\n\n\t/**\n\t * Adds text display components to this container.\n\t *\n\t * @param components - The text display components to add\n\t */\n\tpublic addTextDisplayComponents(\n\t\t...components: RestOrArray<\n\t\t\tAPITextDisplayComponent | TextDisplayBuilder | ((builder: TextDisplayBuilder) => TextDisplayBuilder)\n\t\t>\n\t) {\n\t\tthis.components.push(\n\t\t\t...normalizeArray(components).map((component) => resolveBuilder(component, TextDisplayBuilder)),\n\t\t);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Removes, replaces, or inserts components for this container.\n\t *\n\t * @param index - The index to start removing, replacing or inserting components\n\t * @param deleteCount - The amount of components to remove\n\t * @param components - The components to set\n\t */\n\tpublic spliceComponents(\n\t\tindex: number,\n\t\tdeleteCount: number,\n\t\t...components: RestOrArray<APIComponentInContainer | ContainerComponentBuilder>\n\t) {\n\t\tthis.components.splice(\n\t\t\tindex,\n\t\t\tdeleteCount,\n\t\t\t...normalizeArray(components).map((component) =>\n\t\t\t\tcomponent instanceof ComponentBuilder ? component : createComponentBuilder(component),\n\t\t\t),\n\t\t);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the spoiler status of this container.\n\t *\n\t * @param spoiler - The spoiler status to use\n\t */\n\tpublic setSpoiler(spoiler = true) {\n\t\tthis.data.spoiler = spoilerPredicate.parse(spoiler);\n\t\treturn this;\n\t}\n\n\t/**\n\t * {@inheritDoc ComponentBuilder.toJSON}\n\t */\n\tpublic toJSON(): APIContainerComponent {\n\t\treturn {\n\t\t\t...this.data,\n\t\t\tcomponents: this.components.map((component) => component.toJSON()),\n\t\t} as APIContainerComponent;\n\t}\n}\n","import type { JSONEncodable } from '@discordjs/util';\nimport type { APIMediaGalleryItem } from 'discord-api-types/v10';\nimport { descriptionPredicate, spoilerPredicate, unfurledMediaItemPredicate } from './Assertions';\n\nexport class MediaGalleryItemBuilder implements JSONEncodable<APIMediaGalleryItem> {\n\t/**\n\t * The API data associated with this media gallery item.\n\t */\n\tpublic readonly data: Partial<APIMediaGalleryItem>;\n\n\t/**\n\t * Creates a new media gallery item from API data.\n\t *\n\t * @param data - The API data to create this media gallery item with\n\t * @example\n\t * Creating a media gallery item from an API data object:\n\t * ```ts\n\t * const item = new MediaGalleryItemBuilder({\n\t * \tdescription: \"Some text here\",\n\t * \tmedia: {\n\t * \t\turl: 'https://cdn.discordapp.com/embed/avatars/2.png',\n\t * \t},\n\t * });\n\t * ```\n\t * @example\n\t * Creating a media gallery item using setters and API data:\n\t * ```ts\n\t * const item = new MediaGalleryItemBuilder({\n\t * \tmedia: {\n\t * \t\turl: 'https://cdn.discordapp.com/embed/avatars/5.png',\n\t * \t},\n\t * })\n\t * \t.setDescription(\"alt text\");\n\t * ```\n\t */\n\tpublic constructor(data: Partial<APIMediaGalleryItem> = {}) {\n\t\tthis.data = data;\n\t}\n\n\t/**\n\t * Sets the description of this media gallery item.\n\t *\n\t * @param description - The description to use\n\t */\n\tpublic setDescription(description: string) {\n\t\tthis.data.description = descriptionPredicate.parse(description);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Clears the description of this media gallery item.\n\t */\n\tpublic clearDescription() {\n\t\tthis.data.description = undefined;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the spoiler status of this media gallery item.\n\t *\n\t * @param spoiler - The spoiler status to use\n\t */\n\tpublic setSpoiler(spoiler = true) {\n\t\tthis.data.spoiler = spoilerPredicate.parse(spoiler);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the media URL of this media gallery item.\n\t *\n\t * @param url - The URL to use\n\t */\n\tpublic setURL(url: string) {\n\t\tthis.data.media = unfurledMediaItemPredicate.parse({ url });\n\t\treturn this;\n\t}\n\n\t/**\n\t * Serializes this builder to API-compatible JSON data.\n\t *\n\t * @remarks\n\t * This method runs validations on the data before serializing it.\n\t * As such, it may throw an error if the data is invalid.\n\t */\n\tpublic toJSON(): APIMediaGalleryItem {\n\t\tunfurledMediaItemPredicate.parse(this.data.media);\n\n\t\treturn { ...this.data } as APIMediaGalleryItem;\n\t}\n}\n","/* eslint-disable jsdoc/check-param-names */\n\nimport type { APIMediaGalleryComponent, APIMediaGalleryItem } from 'discord-api-types/v10';\nimport { ComponentType } from 'discord-api-types/v10';\nimport { normalizeArray, type RestOrArray } from '../../util/normalizeArray.js';\nimport { ComponentBuilder } from '../Component.js';\nimport { resolveBuilder } from '../Components.js';\nimport { assertReturnOfBuilder, validateComponentArray } from './Assertions.js';\nimport { MediaGalleryItemBuilder } from './MediaGalleryItem.js';\n\n/**\n * A builder that creates API-compatible JSON data for a container.\n */\nexport class MediaGalleryBuilder extends ComponentBuilder<APIMediaGalleryComponent> {\n\t/**\n\t * The components within this container.\n\t */\n\tpublic readonly items: MediaGalleryItemBuilder[];\n\n\t/**\n\t * Creates a new media gallery from API data.\n\t *\n\t * @param data - The API data to create this media gallery with\n\t * @example\n\t * Creating a media gallery from an API data object:\n\t * ```ts\n\t * const mediaGallery = new MediaGalleryBuilder({\n\t * \titems: [\n\t * \t\t{\n\t * \t\t\tdescription: \"Some text here\",\n\t * \t\t\tmedia: {\n\t * \t\t\t\turl: 'https://cdn.discordapp.com/embed/avatars/2.png',\n\t * \t\t\t},\n\t * \t\t},\n\t * \t],\n\t * });\n\t * ```\n\t * @example\n\t * Creating a media gallery using setters and API data:\n\t * ```ts\n\t * const mediaGallery = new MediaGalleryBuilder({\n\t * \titems: [\n\t * \t\t{\n\t * \t\t\tdescription: \"alt text\",\n\t * \t\t\tmedia: {\n\t * \t\t\t\turl: 'https://cdn.discordapp.com/embed/avatars/5.png',\n\t * \t\t\t},\n\t * \t\t},\n\t * \t],\n\t * })\n\t * \t.addItems(item2, item3);\n\t * ```\n\t */\n\tpublic constructor({ items, ...data }: Partial<APIMediaGalleryComponent> = {}) {\n\t\tsuper({ type: ComponentType.MediaGallery, ...data });\n\t\tthis.items = items?.map((item) => new MediaGalleryItemBuilder(item)) ?? [];\n\t}\n\n\t/**\n\t * Adds items to this media gallery.\n\t *\n\t * @param items - The items to add\n\t */\n\tpublic addItems(\n\t\t...items: RestOrArray<\n\t\t\tAPIMediaGalleryItem | MediaGalleryItemBuilder | ((builder: MediaGalleryItemBuilder) => MediaGalleryItemBuilder)\n\t\t>\n\t) {\n\t\tthis.items.push(\n\t\t\t...normalizeArray(items).map((input) => {\n\t\t\t\tconst result = resolveBuilder(input, MediaGalleryItemBuilder);\n\n\t\t\t\tassertReturnOfBuilder(result, MediaGalleryItemBuilder);\n\t\t\t\treturn result;\n\t\t\t}),\n\t\t);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Removes, replaces, or inserts media gallery items for this media gallery.\n\t *\n\t * @param index - The index to start removing, replacing or inserting items\n\t * @param deleteCount - The amount of items to remove\n\t * @param items - The items to insert\n\t */\n\tpublic spliceItems(\n\t\tindex: number,\n\t\tdeleteCount: number,\n\t\t...items: RestOrArray<\n\t\t\tAPIMediaGalleryItem | MediaGalleryItemBuilder | ((builder: MediaGalleryItemBuilder) => MediaGalleryItemBuilder)\n\t\t>\n\t) {\n\t\tthis.items.splice(\n\t\t\tindex,\n\t\t\tdeleteCount,\n\t\t\t...normalizeArray(items).map((input) => {\n\t\t\t\tconst result = resolveBuilder(input, MediaGalleryItemBuilder);\n\n\t\t\t\tassertReturnOfBuilder(result, MediaGalleryItemBuilder);\n\t\t\t\treturn result;\n\t\t\t}),\n\t\t);\n\t\treturn this;\n\t}\n\n\t/**\n\t * {@inheritDoc ComponentBuilder.toJSON}\n\t */\n\tpublic toJSON(): APIMediaGalleryComponent {\n\t\tvalidateComponentArray(this.items, 1, 10, MediaGalleryItemBuilder);\n\t\treturn {\n\t\t\t...this.data,\n\t\t\titems: this.items.map((item) => item.toJSON()),\n\t\t} as APIMediaGalleryComponent;\n\t}\n}\n","/* eslint-disable jsdoc/check-param-names */\n\nimport type {\n\tAPIButtonComponent,\n\tAPISectionComponent,\n\tAPITextDisplayComponent,\n\tAPIThumbnailComponent,\n} from 'discord-api-types/v10';\nimport { ComponentType } from 'discord-api-types/v10';\nimport { ButtonBuilder, ThumbnailBuilder } from '../../index.js';\nimport { normalizeArray, type RestOrArray } from '../../util/normalizeArray.js';\nimport { ComponentBuilder } from '../Component.js';\nimport { createComponentBuilder, resolveBuilder } from '../Components.js';\nimport { accessoryPredicate, assertReturnOfBuilder, validateComponentArray } from './Assertions.js';\nimport { TextDisplayBuilder } from './TextDisplay.js';\n\n/**\n * A builder that creates API-compatible JSON data for a section.\n */\nexport class SectionBuilder extends ComponentBuilder<APISectionComponent> {\n\t/**\n\t * The components within this section.\n\t */\n\tpublic readonly components: ComponentBuilder[];\n\n\t/**\n\t * The accessory of this section.\n\t */\n\tpublic readonly accessory?: ButtonBuilder | ThumbnailBuilder;\n\n\t/**\n\t * Creates a new section from API data.\n\t *\n\t * @param data - The API data to create this section with\n\t * @example\n\t * Creating a section from an API data object:\n\t * ```ts\n\t * const section = new SectionBuilder({\n\t * \tcomponents: [\n\t * \t\t{\n\t * \t\t\tcontent: \"Some text here\",\n\t * \t\t\ttype: ComponentType.TextDisplay,\n\t * \t\t},\n\t * \t],\n\t * accessory: {\n\t * media: {\n\t * url: 'https://cdn.discordapp.com/embed/avatars/3.png',\n\t * },\n\t * }\n\t * });\n\t * ```\n\t * @example\n\t * Creating a section using setters and API data:\n\t * ```ts\n\t * const section = new SectionBuilder({\n\t * \tcomponents: [\n\t * \t\t{\n\t * \t\t\tcontent: \"# Heading\",\n\t * \t\t\ttype: ComponentType.TextDisplay,\n\t * \t\t},\n\t * \t],\n\t * })\n\t * \t.setPrimaryButtonAccessory(button);\n\t * ```\n\t */\n\tpublic constructor({ components, accessory, ...data }: Partial<APISectionComponent> = {}) {\n\t\tsuper({ type: ComponentType.Section, ...data });\n\t\tthis.components = (components?.map((component) => createComponentBuilder(component)) ?? []) as ComponentBuilder[];\n\t\tthis.accessory = accessory ? createComponentBuilder(accessory) : undefined;\n\t}\n\n\t/**\n\t * Sets the accessory of this section to a button.\n\t *\n\t * @param accessory - The accessory to use\n\t */\n\tpublic setButtonAccessory(\n\t\taccessory: APIButtonComponent | ButtonBuilder | ((builder: ButtonBuilder) => ButtonBuilder),\n\t): this {\n\t\tReflect.set(this, 'accessory', accessoryPredicate.parse(resolveBuilder(accessory, ButtonBuilder)));\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the accessory of this section to a thumbnail.\n\t *\n\t * @param accessory - The accessory to use\n\t */\n\tpublic setThumbnailAccessory(\n\t\taccessory: APIThumbnailComponent | ThumbnailBuilder | ((builder: ThumbnailBuilder) => ThumbnailBuilder),\n\t): this {\n\t\tReflect.set(this, 'accessory', accessoryPredicate.parse(resolveBuilder(accessory, ThumbnailBuilder)));\n\t\treturn this;\n\t}\n\n\t/**\n\t * Adds text display components to this section.\n\t *\n\t * @param components - The text display components to add\n\t */\n\tpublic addTextDisplayComponents(\n\t\t...components: RestOrArray<TextDisplayBuilder | ((builder: TextDisplayBuilder) => TextDisplayBuilder)>\n\t) {\n\t\tthis.components.push(\n\t\t\t...normalizeArray(components).map((input) => {\n\t\t\t\tconst result = resolveBuilder(input, TextDisplayBuilder);\n\n\t\t\t\tassertReturnOfBuilder(result, TextDisplayBuilder);\n\t\t\t\treturn result;\n\t\t\t}),\n\t\t);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Removes, replaces, or inserts text display components for this section.\n\t *\n\t * @param index - The index to start removing, replacing or inserting text display components\n\t * @param deleteCount - The amount of text display components to remove\n\t * @param components - The text display components to insert\n\t */\n\tpublic spliceTextDisplayComponents(\n\t\tindex: number,\n\t\tdeleteCount: number,\n\t\t...components: RestOrArray<\n\t\t\tAPITextDisplayComponent | TextDisplayBuilder | ((builder: TextDisplayBuilder) => TextDisplayBuilder)\n\t\t>\n\t) {\n\t\tthis.components.splice(\n\t\t\tindex,\n\t\t\tdeleteCount,\n\t\t\t...normalizeArray(components).map((input) => {\n\t\t\t\tconst result = resolveBuilder(input, TextDisplayBuilder);\n\n\t\t\t\tassertReturnOfBuilder(result, TextDisplayBuilder);\n\t\t\t\treturn result;\n\t\t\t}),\n\t\t);\n\t\treturn this;\n\t}\n\n\t/**\n\t * {@inheritDoc ComponentBuilder.toJSON}\n\t */\n\tpublic toJSON(): APISectionComponent {\n\t\tvalidateComponentArray(this.components, 1, 3, TextDisplayBuilder);\n\t\treturn {\n\t\t\t...this.data,\n\t\t\tcomponents: this.components.map((component) => component.toJSON()),\n\t\t\taccessory: accessoryPredicate.parse(this.accessory).toJSON(),\n\t\t} as APISectionComponent;\n\t}\n}\n","/* eslint-disable jsdoc/check-param-names */\n\nimport {\n\ttype APIActionRowComponent,\n\tComponentType,\n\ttype APIComponentInMessageActionRow,\n\ttype APIComponentInModalActionRow,\n\ttype APIComponentInActionRow,\n} from 'discord-api-types/v10';\nimport { normalizeArray, type RestOrArray } from '../util/normalizeArray.js';\nimport { ComponentBuilder } from './Component.js';\nimport { createComponentBuilder } from './Components.js';\nimport type { ButtonBuilder } from './button/Button.js';\nimport type { ChannelSelectMenuBuilder } from './selectMenu/ChannelSelectMenu.js';\nimport type { MentionableSelectMenuBuilder } from './selectMenu/MentionableSelectMenu.js';\nimport type { RoleSelectMenuBuilder } from './selectMenu/RoleSelectMenu.js';\nimport type { StringSelectMenuBuilder } from './selectMenu/StringSelectMenu.js';\nimport type { UserSelectMenuBuilder } from './selectMenu/UserSelectMenu.js';\nimport type { TextInputBuilder } from './textInput/TextInput.js';\n\n/**\n * The builders that may be used for modals.\n */\nexport type ModalComponentBuilder = ActionRowBuilder<ModalActionRowComponentBuilder> | ModalActionRowComponentBuilder;\n\n/**\n * The builders that may be used within an action row for messages.\n */\nexport type MessageActionRowComponentBuilder =\n\t| ButtonBuilder\n\t| ChannelSelectMenuBuilder\n\t| MentionableSelectMenuBuilder\n\t| RoleSelectMenuBuilder\n\t| StringSelectMenuBuilder\n\t| UserSelectMenuBuilder;\n\n/**\n * The builders that may be used within an action row for modals.\n */\nexport type ModalActionRowComponentBuilder = TextInputBuilder;\n\n/**\n * Any builder.\n */\nexport type AnyComponentBuilder = MessageActionRowComponentBuilder | ModalActionRowComponentBuilder;\n\n/**\n * A builder that creates API-compatible JSON data for action rows.\n *\n * @typeParam ComponentType - The types of components this action row holds\n */\nexport class ActionRowBuilder<ComponentType extends AnyComponentBuilder> extends ComponentBuilder<\n\tAPIActionRowComponent<APIComponentInMessageActionRow | APIComponentInModalActionRow>\n> {\n\t/**\n\t * The components within this action row.\n\t */\n\tpublic readonly components: ComponentType[];\n\n\t/**\n\t * Creates a new action row from API data.\n\t *\n\t * @param data - The API data to create this action row with\n\t * @example\n\t * Creating an action row from an API data object:\n\t * ```ts\n\t * const actionRow = new ActionRowBuilder({\n\t * \tcomponents: [\n\t * \t\t{\n\t * \t\t\tcustom_id: \"custom id\",\n\t * \t\t\tlabel: \"Type something\",\n\t * \t\t\tstyle: TextInputStyle.Short,\n\t * \t\t\ttype: ComponentType.TextInput,\n\t * \t\t},\n\t * \t],\n\t * });\n\t * ```\n\t * @example\n\t * Creating an action row using setters and API data:\n\t * ```ts\n\t * const actionRow = new ActionRowBuilder({\n\t * \tcomponents: [\n\t * \t\t{\n\t * \t\t\tcustom_id: \"custom id\",\n\t * \t\t\tlabel: \"Click me\",\n\t * \t\t\tstyle: ButtonStyle.Primary,\n\t * \t\t\ttype: ComponentType.Button,\n\t * \t\t},\n\t * \t],\n\t * })\n\t * \t.addComponents(button2, button3);\n\t * ```\n\t */\n\tpublic constructor({ components, ...data }: Partial<APIActionRowComponent<APIComponentInActionRow>> = {}) {\n\t\tsuper({ type: ComponentType.ActionRow, ...data });\n\t\tthis.components = (components?.map((component) => createComponentBuilder(component)) ?? []) as ComponentType[];\n\t}\n\n\t/**\n\t * Adds components to this action row.\n\t *\n\t * @param components - The components to add\n\t */\n\tpublic addComponents(...components: RestOrArray<ComponentType>) {\n\t\tthis.components.push(...normalizeArray(components));\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets components for this action row.\n\t *\n\t * @param components - The components to set\n\t */\n\tpublic setComponents(...components: RestOrArray<ComponentType>) {\n\t\tthis.components.splice(0, this.components.length, ...normalizeArray(components));\n\t\treturn this;\n\t}\n\n\t/**\n\t * {@inheritDoc ComponentBuilder.toJSON}\n\t */\n\tpublic toJSON(): APIActionRowComponent<ReturnType<ComponentType['toJSON']>> {\n\t\treturn {\n\t\t\t...this.data,\n\t\t\tcomponents: this.components.map((component) => component.toJSON()),\n\t\t} as APIActionRowComponent<ReturnType<ComponentType['toJSON']>>;\n\t}\n}\n","import type { LocaleString, LocalizationMap } from 'discord-api-types/v10';\nimport { validateDescription, validateLocale, validateName } from '../Assertions.js';\n\n/**\n * This mixin holds name and description symbols for slash commands.\n */\nexport class SharedNameAndDescription {\n\t/**\n\t * The name of this command.\n\t */\n\tpublic readonly name!: string;\n\n\t/**\n\t * The name localizations of this command.\n\t */\n\tpublic readonly name_localizations?: LocalizationMap;\n\n\t/**\n\t * The description of this command.\n\t */\n\tpublic readonly description!: string;\n\n\t/**\n\t * The description localizations of this command.\n\t */\n\tpublic readonly description_localizations?: LocalizationMap;\n\n\t/**\n\t * Sets the name of this command.\n\t *\n\t * @param name - The name to use\n\t */\n\tpublic setName(name: string): this {\n\t\t// Assert the name matches the conditions\n\t\tvalidateName(name);\n\n\t\tReflect.set(this, 'name', name);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the description of this command.\n\t *\n\t * @param description - The description to use\n\t */\n\tpublic setDescription(description: string) {\n\t\t// Assert the description matches the conditions\n\t\tvalidateDescription(description);\n\n\t\tReflect.set(this, 'description', description);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets a name localization for this command.\n\t *\n\t * @param locale - The locale to set\n\t * @param localizedName - The localized name for the given `locale`\n\t */\n\tpublic setNameLocalization(locale: LocaleString, localizedName: string | null) {\n\t\tif (!this.name_localizations) {\n\t\t\tReflect.set(this, 'name_localizations', {});\n\t\t}\n\n\t\tconst parsedLocale = validateLocale(locale);\n\n\t\tif (localizedName === null) {\n\t\t\tthis.name_localizations![parsedLocale] = null;\n\t\t\treturn this;\n\t\t}\n\n\t\tvalidateName(localizedName);\n\n\t\tthis.name_localizations![parsedLocale] = localizedName;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the name localizations for this command.\n\t *\n\t * @param localizedNames - The object of localized names to set\n\t */\n\tpublic setNameLocalizations(localizedNames: LocalizationMap | null) {\n\t\tif (localizedNames === null) {\n\t\t\tReflect.set(this, 'name_localizations', null);\n\t\t\treturn this;\n\t\t}\n\n\t\tReflect.set(this, 'name_localizations', {});\n\n\t\tfor (const args of Object.entries(localizedNames)) {\n\t\t\tthis.setNameLocalization(...(args as [LocaleString, string | null]));\n\t\t}\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets a description localization for this command.\n\t *\n\t * @param locale - The locale to set\n\t * @param localizedDescription - The localized description for the given locale\n\t */\n\tpublic setDescriptionLocalization(locale: LocaleString, localizedDescription: string | null) {\n\t\tif (!this.description_localizations) {\n\t\t\tReflect.set(this, 'description_localizations', {});\n\t\t}\n\n\t\tconst parsedLocale = validateLocale(locale);\n\n\t\tif (localizedDescription === null) {\n\t\t\tthis.description_localizations![parsedLocale] = null;\n\t\t\treturn this;\n\t\t}\n\n\t\tvalidateDescription(localizedDescription);\n\n\t\tthis.description_localizations![parsedLocale] = localizedDescription;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the description localizations for this command.\n\t *\n\t * @param localizedDescriptions - The object of localized descriptions to set\n\t */\n\tpublic setDescriptionLocalizations(localizedDescriptions: LocalizationMap | null) {\n\t\tif (localizedDescriptions === null) {\n\t\t\tReflect.set(this, 'description_localizations', null);\n\t\t\treturn this;\n\t\t}\n\n\t\tReflect.set(this, 'description_localizations', {});\n\t\tfor (const args of Object.entries(localizedDescriptions)) {\n\t\t\tthis.setDescriptionLocalization(...(args as [LocaleString, string | null]));\n\t\t}\n\n\t\treturn this;\n\t}\n}\n","import {\n\tApplicationCommandType,\n\ttype ApplicationIntegrationType,\n\ttype InteractionContextType,\n\ttype LocalizationMap,\n\ttype Permissions,\n\ttype RESTPostAPIChatInputApplicationCommandsJSONBody,\n} from 'discord-api-types/v10';\nimport type { RestOrArray } from '../../../util/normalizeArray.js';\nimport { normalizeArray } from '../../../util/normalizeArray.js';\nimport {\n\tcontextsPredicate,\n\tintegrationTypesPredicate,\n\tvalidateDMPermission,\n\tvalidateDefaultMemberPermissions,\n\tvalidateDefaultPermission,\n\tvalidateLocalizationMap,\n\tvalidateNSFW,\n\tvalidateRequiredParameters,\n} from '../Assertions.js';\nimport type { ToAPIApplicationCommandOptions } from '../SlashCommandBuilder.js';\n\n/**\n * This mixin holds symbols that can be shared in slashcommands independent of options or subcommands.\n */\nexport class SharedSlashCommand {\n\tpublic readonly name: string = undefined!;\n\n\tpublic readonly name_localizations?: LocalizationMap;\n\n\tpublic readonly description: string = undefined!;\n\n\tpublic readonly description_localizations?: LocalizationMap;\n\n\tpublic readonly options: ToAPIApplicationCommandOptions[] = [];\n\n\tpublic readonly contexts?: InteractionContextType[];\n\n\t/**\n\t * @deprecated Use {@link SharedSlashCommand.setDefaultMemberPermissions} or {@link SharedSlashCommand.setDMPermission} instead.\n\t */\n\tpublic readonly default_permission: boolean | undefined = undefined;\n\n\tpublic readonly default_member_permissions: Permissions | null | undefined = undefined;\n\n\t/**\n\t * @deprecated Use {@link SharedSlashCommand.contexts} instead.\n\t */\n\tpublic readonly dm_permission: boolean | undefined = undefined;\n\n\tpublic readonly integration_types?: ApplicationIntegrationType[];\n\n\tpublic readonly nsfw: boolean | undefined = undefined;\n\n\t/**\n\t * Sets the contexts of this command.\n\t *\n\t * @param contexts - The contexts\n\t */\n\tpublic setContexts(...contexts: RestOrArray<InteractionContextType>) {\n\t\tReflect.set(this, 'contexts', contextsPredicate.parse(normalizeArray(contexts)));\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the integration types of this command.\n\t *\n\t * @param integrationTypes - The integration types\n\t */\n\tpublic setIntegrationTypes(...integrationTypes: RestOrArray<ApplicationIntegrationType>) {\n\t\tReflect.set(this, 'integration_types', integrationTypesPredicate.parse(normalizeArray(integrationTypes)));\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets whether the command is enabled by default when the application is added to a guild.\n\t *\n\t * @remarks\n\t * If set to `false`, you will have to later `PUT` the permissions for this command.\n\t * @param value - Whether or not to enable this command by default\n\t * @see {@link https://discord.com/developers/docs/interactions/application-commands#permissions}\n\t * @deprecated Use {@link SharedSlashCommand.setDefaultMemberPermissions} or {@link SharedSlashCommand.setDMPermission} instead.\n\t */\n\tpublic setDefaultPermission(value: boolean) {\n\t\t// Assert the value matches the conditions\n\t\tvalidateDefaultPermission(value);\n\n\t\tReflect.set(this, 'default_permission', value);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the default permissions a member should have in order to run the command.\n\t *\n\t * @remarks\n\t * You can set this to `'0'` to disable the command by default.\n\t * @param permissions - The permissions bit field to set\n\t * @see {@link https://discord.com/developers/docs/interactions/application-commands#permissions}\n\t */\n\tpublic setDefaultMemberPermissions(permissions: Permissions | bigint | number | null | undefined) {\n\t\t// Assert the value and parse it\n\t\tconst permissionValue = validateDefaultMemberPermissions(permissions);\n\n\t\tReflect.set(this, 'default_member_permissions', permissionValue);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets if the command is available in direct messages with the application.\n\t *\n\t * @remarks\n\t * By default, commands are visible. This method is only for global commands.\n\t * @param enabled - Whether the command should be enabled in direct messages\n\t * @see {@link https://discord.com/developers/docs/interactions/application-commands#permissions}\n\t * @deprecated\n\t * Use {@link SharedSlashCommand.setContexts} instead.\n\t */\n\tpublic setDMPermission(enabled: boolean | null | undefined) {\n\t\t// Assert the value matches the conditions\n\t\tvalidateDMPermission(enabled);\n\n\t\tReflect.set(this, 'dm_permission', enabled);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets whether this command is NSFW.\n\t *\n\t * @param nsfw - Whether this command is NSFW\n\t */\n\tpublic setNSFW(nsfw = true) {\n\t\t// Assert the value matches the conditions\n\t\tvalidateNSFW(nsfw);\n\t\tReflect.set(this, 'nsfw', nsfw);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Serializes this builder to API-compatible JSON data.\n\t *\n\t * @remarks\n\t * This method runs validations on the data before serializing it.\n\t * As such, it may throw an error if the data is invalid.\n\t */\n\tpublic toJSON(): RESTPostAPIChatInputApplicationCommandsJSONBody {\n\t\tvalidateRequiredParameters(this.name, this.description, this.options);\n\n\t\tvalidateLocalizationMap(this.name_localizations);\n\t\tvalidateLocalizationMap(this.description_localizations);\n\n\t\treturn {\n\t\t\t...this,\n\t\t\ttype: ApplicationCommandType.ChatInput,\n\t\t\toptions: this.options.map((option) => option.toJSON()),\n\t\t};\n\t}\n}\n","import type { APIApplicationCommandBasicOption, ApplicationCommandOptionType } from 'discord-api-types/v10';\nimport { validateRequiredParameters, validateRequired, validateLocalizationMap } from '../Assertions.js';\nimport { SharedNameAndDescription } from './NameAndDescription.js';\n\n/**\n * The base application command option builder that contains common symbols for application command builders.\n */\nexport abstract class ApplicationCommandOptionBase extends SharedNameAndDescription {\n\t/**\n\t * The type of this option.\n\t */\n\tpublic abstract readonly type: ApplicationCommandOptionType;\n\n\t/**\n\t * Whether this option is required.\n\t *\n\t * @defaultValue `false`\n\t */\n\tpublic readonly required: boolean = false;\n\n\t/**\n\t * Sets whether this option is required.\n\t *\n\t * @param required - Whether this option should be required\n\t */\n\tpublic setRequired(required: boolean) {\n\t\t// Assert that you actually passed a boolean\n\t\tvalidateRequired(required);\n\n\t\tReflect.set(this, 'required', required);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Serializes this builder to API-compatible JSON data.\n\t *\n\t * @remarks\n\t * This method runs validations on the data before serializing it.\n\t * As such, it may throw an error if the data is invalid.\n\t */\n\tpublic abstract toJSON(): APIApplicationCommandBasicOption;\n\n\t/**\n\t * This method runs required validators on this builder.\n\t */\n\tprotected runRequiredValidations() {\n\t\tvalidateRequiredParameters(this.name, this.description, []);\n\n\t\t// Validate localizations\n\t\tvalidateLocalizationMap(this.name_localizations);\n\t\tvalidateLocalizationMap(this.description_localizations);\n\n\t\t// Assert that you actually passed a boolean\n\t\tvalidateRequired(this.required);\n\t}\n}\n","import { ApplicationCommandOptionType, type APIApplicationCommandAttachmentOption } from 'discord-api-types/v10';\nimport { ApplicationCommandOptionBase } from '../mixins/ApplicationCommandOptionBase.js';\n\n/**\n * A slash command attachment option.\n */\nexport class SlashCommandAttachmentOption extends ApplicationCommandOptionBase {\n\t/**\n\t * The type of this option.\n\t */\n\tpublic override readonly type = ApplicationCommandOptionType.Attachment as const;\n\n\t/**\n\t * {@inheritDoc ApplicationCommandOptionBase.toJSON}\n\t */\n\tpublic toJSON(): APIApplicationCommandAttachmentOption {\n\t\tthis.runRequiredValidations();\n\n\t\treturn { ...this };\n\t}\n}\n","import { ApplicationCommandOptionType, type APIApplicationCommandBooleanOption } from 'discord-api-types/v10';\nimport { ApplicationCommandOptionBase } from '../mixins/ApplicationCommandOptionBase.js';\n\n/**\n * A slash command boolean option.\n */\nexport class SlashCommandBooleanOption extends ApplicationCommandOptionBase {\n\t/**\n\t * The type of this option.\n\t */\n\tpublic readonly type = ApplicationCommandOptionType.Boolean as const;\n\n\t/**\n\t * {@inheritDoc ApplicationCommandOptionBase.toJSON}\n\t */\n\tpublic toJSON(): APIApplicationCommandBooleanOption {\n\t\tthis.runRequiredValidations();\n\n\t\treturn { ...this };\n\t}\n}\n","import { s } from '@sapphire/shapeshift';\nimport { ChannelType } from 'discord-api-types/v10';\nimport { normalizeArray, type RestOrArray } from '../../../util/normalizeArray';\n\n/**\n * The allowed channel types used for a channel option in a slash command builder.\n *\n * @privateRemarks This can't be dynamic because const enums are erased at runtime.\n * @internal\n */\nconst allowedChannelTypes = [\n\tChannelType.GuildText,\n\tChannelType.GuildVoice,\n\tChannelType.GuildCategory,\n\tChannelType.GuildAnnouncement,\n\tChannelType.AnnouncementThread,\n\tChannelType.PublicThread,\n\tChannelType.PrivateThread,\n\tChannelType.GuildStageVoice,\n\tChannelType.GuildForum,\n\tChannelType.GuildMedia,\n] as const;\n\n/**\n * The type of allowed channel types used for a channel option.\n */\nexport type ApplicationCommandOptionAllowedChannelTypes = (typeof allowedChannelTypes)[number];\n\nconst channelTypesPredicate = s.array(s.union(allowedChannelTypes.map((type) => s.literal(type))));\n\n/**\n * This mixin holds channel type symbols used for options.\n */\nexport class ApplicationCommandOptionChannelTypesMixin {\n\t/**\n\t * The channel types of this option.\n\t */\n\tpublic readonly channel_types?: ApplicationCommandOptionAllowedChannelTypes[];\n\n\t/**\n\t * Adds channel types to this option.\n\t *\n\t * @param channelTypes - The channel types\n\t */\n\tpublic addChannelTypes(...channelTypes: RestOrArray<ApplicationCommandOptionAllowedChannelTypes>) {\n\t\tif (this.channel_types === undefined) {\n\t\t\tReflect.set(this, 'channel_types', []);\n\t\t}\n\n\t\tthis.channel_types!.push(...channelTypesPredicate.parse(normalizeArray(channelTypes)));\n\n\t\treturn this;\n\t}\n}\n","import { ApplicationCommandOptionType, type APIApplicationCommandChannelOption } from 'discord-api-types/v10';\nimport { mix } from 'ts-mixer';\nimport { ApplicationCommandOptionBase } from '../mixins/ApplicationCommandOptionBase.js';\nimport { ApplicationCommandOptionChannelTypesMixin } from '../mixins/ApplicationCommandOptionChannelTypesMixin.js';\n\n/**\n * A slash command channel option.\n */\n@mix(ApplicationCommandOptionChannelTypesMixin)\nexport class SlashCommandChannelOption extends ApplicationCommandOptionBase {\n\t/**\n\t * The type of this option.\n\t */\n\tpublic override readonly type = ApplicationCommandOptionType.Channel as const;\n\n\t/**\n\t * {@inheritDoc ApplicationCommandOptionBase.toJSON}\n\t */\n\tpublic toJSON(): APIApplicationCommandChannelOption {\n\t\tthis.runRequiredValidations();\n\n\t\treturn { ...this };\n\t}\n}\n\nexport interface SlashCommandChannelOption extends ApplicationCommandOptionChannelTypesMixin {}\n","/**\n * This mixin holds minimum and maximum symbols used for options.\n */\nexport abstract class ApplicationCommandNumericOptionMinMaxValueMixin {\n\t/**\n\t * The maximum value of this option.\n\t */\n\tpublic readonly max_value?: number;\n\n\t/**\n\t * The minimum value of this option.\n\t */\n\tpublic readonly min_value?: number;\n\n\t/**\n\t * Sets the maximum number value of this option.\n\t *\n\t * @param max - The maximum value this option can be\n\t */\n\tpublic abstract setMaxValue(max: number): this;\n\n\t/**\n\t * Sets the minimum number value of this option.\n\t *\n\t * @param min - The minimum value this option can be\n\t */\n\tpublic abstract setMinValue(min: number): this;\n}\n","import { s } from '@sapphire/shapeshift';\nimport type { ApplicationCommandOptionType } from 'discord-api-types/v10';\n\nconst booleanPredicate = s.boolean();\n\n/**\n * This mixin holds choices and autocomplete symbols used for options.\n */\nexport class ApplicationCommandOptionWithAutocompleteMixin {\n\t/**\n\t * Whether this option utilizes autocomplete.\n\t */\n\tpublic readonly autocomplete?: boolean;\n\n\t/**\n\t * The type of this option.\n\t *\n\t * @privateRemarks Since this is present and this is a mixin, this is needed.\n\t */\n\tpublic readonly type!: ApplicationCommandOptionType;\n\n\t/**\n\t * Whether this option uses autocomplete.\n\t *\n\t * @param autocomplete - Whether this option should use autocomplete\n\t */\n\tpublic setAutocomplete(autocomplete: boolean): this {\n\t\t// Assert that you actually passed a boolean\n\t\tbooleanPredicate.parse(autocomplete);\n\n\t\tif (autocomplete && 'choices' in this && Array.isArray(this.choices) && this.choices.length > 0) {\n\t\t\tthrow new RangeError('Autocomplete and choices are mutually exclusive to each other.');\n\t\t}\n\n\t\tReflect.set(this, 'autocomplete', autocomplete);\n\n\t\treturn this;\n\t}\n}\n","import { s } from '@sapphire/shapeshift';\nimport { ApplicationCommandOptionType, type APIApplicationCommandOptionChoice } from 'discord-api-types/v10';\nimport { normalizeArray, type RestOrArray } from '../../../util/normalizeArray.js';\nimport { localizationMapPredicate, validateChoicesLength } from '../Assertions.js';\n\nconst stringPredicate = s.string().lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(100);\nconst numberPredicate = s.number().greaterThan(Number.NEGATIVE_INFINITY).lessThan(Number.POSITIVE_INFINITY);\nconst choicesPredicate = s\n\t.object({\n\t\tname: stringPredicate,\n\t\tname_localizations: localizationMapPredicate,\n\t\tvalue: s.union([stringPredicate, numberPredicate]),\n\t})\n\t.array();\n\n/**\n * This mixin holds choices and autocomplete symbols used for options.\n */\nexport class ApplicationCommandOptionWithChoicesMixin<ChoiceType extends number | string> {\n\t/**\n\t * The choices of this option.\n\t */\n\tpublic readonly choices?: APIApplicationCommandOptionChoice<ChoiceType>[];\n\n\t/**\n\t * The type of this option.\n\t *\n\t * @privateRemarks Since this is present and this is a mixin, this is needed.\n\t */\n\tpublic readonly type!: ApplicationCommandOptionType;\n\n\t/**\n\t * Adds multiple choices to this option.\n\t *\n\t * @param choices - The choices to add\n\t */\n\tpublic addChoices(...choices: RestOrArray<APIApplicationCommandOptionChoice<ChoiceType>>): this {\n\t\tconst normalizedChoices = normalizeArray(choices);\n\t\tif (normalizedChoices.length > 0 && 'autocomplete' in this && this.autocomplete) {\n\t\t\tthrow new RangeError('Autocomplete and choices are mutually exclusive to each other.');\n\t\t}\n\n\t\tchoicesPredicate.parse(normalizedChoices);\n\n\t\tif (this.choices === undefined) {\n\t\t\tReflect.set(this, 'choices', []);\n\t\t}\n\n\t\tvalidateChoicesLength(normalizedChoices.length, this.choices);\n\n\t\tfor (const { name, name_localizations, value } of normalizedChoices) {\n\t\t\t// Validate the value\n\t\t\tif (this.type === ApplicationCommandOptionType.String) {\n\t\t\t\tstringPredicate.parse(value);\n\t\t\t} else {\n\t\t\t\tnumberPredicate.parse(value);\n\t\t\t}\n\n\t\t\tthis.choices!.push({ name, name_localizations, value });\n\t\t}\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets multiple choices for this option.\n\t *\n\t * @param choices - The choices to set\n\t */\n\tpublic setChoices<Input extends APIApplicationCommandOptionChoice<ChoiceType>>(...choices: RestOrArray<Input>): this {\n\t\tconst normalizedChoices = normalizeArray(choices);\n\t\tif (normalizedChoices.length > 0 && 'autocomplete' in this && this.autocomplete) {\n\t\t\tthrow new RangeError('Autocomplete and choices are mutually exclusive to each other.');\n\t\t}\n\n\t\tchoicesPredicate.parse(normalizedChoices);\n\n\t\tReflect.set(this, 'choices', []);\n\t\tthis.addChoices(normalizedChoices);\n\n\t\treturn this;\n\t}\n}\n","import { s } from '@sapphire/shapeshift';\nimport { ApplicationCommandOptionType, type APIApplicationCommandIntegerOption } from 'discord-api-types/v10';\nimport { mix } from 'ts-mixer';\nimport { ApplicationCommandNumericOptionMinMaxValueMixin } from '../mixins/ApplicationCommandNumericOptionMinMaxValueMixin.js';\nimport { ApplicationCommandOptionBase } from '../mixins/ApplicationCommandOptionBase.js';\nimport { ApplicationCommandOptionWithAutocompleteMixin } from '../mixins/ApplicationCommandOptionWithAutocompleteMixin.js';\nimport { ApplicationCommandOptionWithChoicesMixin } from '../mixins/ApplicationCommandOptionWithChoicesMixin.js';\n\nconst numberValidator = s.number().int();\n\n/**\n * A slash command integer option.\n */\n@mix(\n\tApplicationCommandNumericOptionMinMaxValueMixin,\n\tApplicationCommandOptionWithAutocompleteMixin,\n\tApplicationCommandOptionWithChoicesMixin,\n)\nexport class SlashCommandIntegerOption\n\textends ApplicationCommandOptionBase\n\timplements ApplicationCommandNumericOptionMinMaxValueMixin\n{\n\t/**\n\t * The type of this option.\n\t */\n\tpublic readonly type = ApplicationCommandOptionType.Integer as const;\n\n\t/**\n\t * {@inheritDoc ApplicationCommandNumericOptionMinMaxValueMixin.setMaxValue}\n\t */\n\tpublic setMaxValue(max: number): this {\n\t\tnumberValidator.parse(max);\n\n\t\tReflect.set(this, 'max_value', max);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * {@inheritDoc ApplicationCommandNumericOptionMinMaxValueMixin.setMinValue}\n\t */\n\tpublic setMinValue(min: number): this {\n\t\tnumberValidator.parse(min);\n\n\t\tReflect.set(this, 'min_value', min);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * {@inheritDoc ApplicationCommandOptionBase.toJSON}\n\t */\n\tpublic toJSON(): APIApplicationCommandIntegerOption {\n\t\tthis.runRequiredValidations();\n\n\t\tif (this.autocomplete && Array.isArray(this.choices) && this.choices.length > 0) {\n\t\t\tthrow new RangeError('Autocomplete and choices are mutually exclusive to each other.');\n\t\t}\n\n\t\treturn { ...this } as APIApplicationCommandIntegerOption;\n\t}\n}\n\nexport interface SlashCommandIntegerOption\n\textends ApplicationCommandNumericOptionMinMaxValueMixin,\n\t\tApplicationCommandOptionWithChoicesMixin<number>,\n\t\tApplicationCommandOptionWithAutocompleteMixin {}\n","import { ApplicationCommandOptionType, type APIApplicationCommandMentionableOption } from 'discord-api-types/v10';\nimport { ApplicationCommandOptionBase } from '../mixins/ApplicationCommandOptionBase.js';\n\n/**\n * A slash command mentionable option.\n */\nexport class SlashCommandMentionableOption extends ApplicationCommandOptionBase {\n\t/**\n\t * The type of this option.\n\t */\n\tpublic readonly type = ApplicationCommandOptionType.Mentionable as const;\n\n\t/**\n\t * {@inheritDoc ApplicationCommandOptionBase.toJSON}\n\t */\n\tpublic toJSON(): APIApplicationCommandMentionableOption {\n\t\tthis.runRequiredValidations();\n\n\t\treturn { ...this };\n\t}\n}\n","import { s } from '@sapphire/shapeshift';\nimport { ApplicationCommandOptionType, type APIApplicationCommandNumberOption } from 'discord-api-types/v10';\nimport { mix } from 'ts-mixer';\nimport { ApplicationCommandNumericOptionMinMaxValueMixin } from '../mixins/ApplicationCommandNumericOptionMinMaxValueMixin.js';\nimport { ApplicationCommandOptionBase } from '../mixins/ApplicationCommandOptionBase.js';\nimport { ApplicationCommandOptionWithAutocompleteMixin } from '../mixins/ApplicationCommandOptionWithAutocompleteMixin.js';\nimport { ApplicationCommandOptionWithChoicesMixin } from '../mixins/ApplicationCommandOptionWithChoicesMixin.js';\n\nconst numberValidator = s.number();\n\n/**\n * A slash command number option.\n */\n@mix(\n\tApplicationCommandNumericOptionMinMaxValueMixin,\n\tApplicationCommandOptionWithAutocompleteMixin,\n\tApplicationCommandOptionWithChoicesMixin,\n)\nexport class SlashCommandNumberOption\n\textends ApplicationCommandOptionBase\n\timplements ApplicationCommandNumericOptionMinMaxValueMixin\n{\n\t/**\n\t * The type of this option.\n\t */\n\tpublic readonly type = ApplicationCommandOptionType.Number as const;\n\n\t/**\n\t * {@inheritDoc ApplicationCommandNumericOptionMinMaxValueMixin.setMaxValue}\n\t */\n\tpublic setMaxValue(max: number): this {\n\t\tnumberValidator.parse(max);\n\n\t\tReflect.set(this, 'max_value', max);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * {@inheritDoc ApplicationCommandNumericOptionMinMaxValueMixin.setMinValue}\n\t */\n\tpublic setMinValue(min: number): this {\n\t\tnumberValidator.parse(min);\n\n\t\tReflect.set(this, 'min_value', min);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * {@inheritDoc ApplicationCommandOptionBase.toJSON}\n\t */\n\tpublic toJSON(): APIApplicationCommandNumberOption {\n\t\tthis.runRequiredValidations();\n\n\t\tif (this.autocomplete && Array.isArray(this.choices) && this.choices.length > 0) {\n\t\t\tthrow new RangeError('Autocomplete and choices are mutually exclusive to each other.');\n\t\t}\n\n\t\treturn { ...this } as APIApplicationCommandNumberOption;\n\t}\n}\n\nexport interface SlashCommandNumberOption\n\textends ApplicationCommandNumericOptionMinMaxValueMixin,\n\t\tApplicationCommandOptionWithChoicesMixin<number>,\n\t\tApplicationCommandOptionWithAutocompleteMixin {}\n","import { ApplicationCommandOptionType, type APIApplicationCommandRoleOption } from 'discord-api-types/v10';\nimport { ApplicationCommandOptionBase } from '../mixins/ApplicationCommandOptionBase.js';\n\n/**\n * A slash command role option.\n */\nexport class SlashCommandRoleOption extends ApplicationCommandOptionBase {\n\t/**\n\t * The type of this option.\n\t */\n\tpublic override readonly type = ApplicationCommandOptionType.Role as const;\n\n\t/**\n\t * {@inheritDoc ApplicationCommandOptionBase.toJSON}\n\t */\n\tpublic toJSON(): APIApplicationCommandRoleOption {\n\t\tthis.runRequiredValidations();\n\n\t\treturn { ...this };\n\t}\n}\n","import { s } from '@sapphire/shapeshift';\nimport { ApplicationCommandOptionType, type APIApplicationCommandStringOption } from 'discord-api-types/v10';\nimport { mix } from 'ts-mixer';\nimport { ApplicationCommandOptionBase } from '../mixins/ApplicationCommandOptionBase.js';\nimport { ApplicationCommandOptionWithAutocompleteMixin } from '../mixins/ApplicationCommandOptionWithAutocompleteMixin.js';\nimport { ApplicationCommandOptionWithChoicesMixin } from '../mixins/ApplicationCommandOptionWithChoicesMixin.js';\n\nconst minLengthValidator = s.number().greaterThanOrEqual(0).lessThanOrEqual(6_000);\nconst maxLengthValidator = s.number().greaterThanOrEqual(1).lessThanOrEqual(6_000);\n\n/**\n * A slash command string option.\n */\n@mix(ApplicationCommandOptionWithAutocompleteMixin, ApplicationCommandOptionWithChoicesMixin)\nexport class SlashCommandStringOption extends ApplicationCommandOptionBase {\n\t/**\n\t * The type of this option.\n\t */\n\tpublic readonly type = ApplicationCommandOptionType.String as const;\n\n\t/**\n\t * The maximum length of this option.\n\t */\n\tpublic readonly max_length?: number;\n\n\t/**\n\t * The minimum length of this option.\n\t */\n\tpublic readonly min_length?: number;\n\n\t/**\n\t * Sets the maximum length of this string option.\n\t *\n\t * @param max - The maximum length this option can be\n\t */\n\tpublic setMaxLength(max: number): this {\n\t\tmaxLengthValidator.parse(max);\n\n\t\tReflect.set(this, 'max_length', max);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the minimum length of this string option.\n\t *\n\t * @param min - The minimum length this option can be\n\t */\n\tpublic setMinLength(min: number): this {\n\t\tminLengthValidator.parse(min);\n\n\t\tReflect.set(this, 'min_length', min);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * {@inheritDoc ApplicationCommandOptionBase.toJSON}\n\t */\n\tpublic toJSON(): APIApplicationCommandStringOption {\n\t\tthis.runRequiredValidations();\n\n\t\tif (this.autocomplete && Array.isArray(this.choices) && this.choices.length > 0) {\n\t\t\tthrow new RangeError('Autocomplete and choices are mutually exclusive to each other.');\n\t\t}\n\n\t\treturn { ...this } as APIApplicationCommandStringOption;\n\t}\n}\n\nexport interface SlashCommandStringOption\n\textends ApplicationCommandOptionWithChoicesMixin<string>,\n\t\tApplicationCommandOptionWithAutocompleteMixin {}\n","import { ApplicationCommandOptionType, type APIApplicationCommandUserOption } from 'discord-api-types/v10';\nimport { ApplicationCommandOptionBase } from '../mixins/ApplicationCommandOptionBase.js';\n\n/**\n * A slash command user option.\n */\nexport class SlashCommandUserOption extends ApplicationCommandOptionBase {\n\t/**\n\t * The type of this option.\n\t */\n\tpublic readonly type = ApplicationCommandOptionType.User as const;\n\n\t/**\n\t * {@inheritDoc ApplicationCommandOptionBase.toJSON}\n\t */\n\tpublic toJSON(): APIApplicationCommandUserOption {\n\t\tthis.runRequiredValidations();\n\n\t\treturn { ...this };\n\t}\n}\n","import { assertReturnOfBuilder, validateMaxOptionsLength } from '../Assertions.js';\nimport type { ToAPIApplicationCommandOptions } from '../SlashCommandBuilder';\nimport { SlashCommandAttachmentOption } from '../options/attachment.js';\nimport { SlashCommandBooleanOption } from '../options/boolean.js';\nimport { SlashCommandChannelOption } from '../options/channel.js';\nimport { SlashCommandIntegerOption } from '../options/integer.js';\nimport { SlashCommandMentionableOption } from '../options/mentionable.js';\nimport { SlashCommandNumberOption } from '../options/number.js';\nimport { SlashCommandRoleOption } from '../options/role.js';\nimport { SlashCommandStringOption } from '../options/string.js';\nimport { SlashCommandUserOption } from '../options/user.js';\nimport type { ApplicationCommandOptionBase } from './ApplicationCommandOptionBase.js';\n\n/**\n * This mixin holds symbols that can be shared in slash command options.\n *\n * @typeParam TypeAfterAddingOptions - The type this class should return after adding an option.\n */\nexport class SharedSlashCommandOptions<\n\tTypeAfterAddingOptions extends SharedSlashCommandOptions<TypeAfterAddingOptions>,\n> {\n\tpublic readonly options!: ToAPIApplicationCommandOptions[];\n\n\t/**\n\t * Adds a boolean option.\n\t *\n\t * @param input - A function that returns an option builder or an already built builder\n\t */\n\tpublic addBooleanOption(\n\t\tinput: SlashCommandBooleanOption | ((builder: SlashCommandBooleanOption) => SlashCommandBooleanOption),\n\t) {\n\t\treturn this._sharedAddOptionMethod(input, SlashCommandBooleanOption);\n\t}\n\n\t/**\n\t * Adds a user option.\n\t *\n\t * @param input - A function that returns an option builder or an already built builder\n\t */\n\tpublic addUserOption(input: SlashCommandUserOption | ((builder: SlashCommandUserOption) => SlashCommandUserOption)) {\n\t\treturn this._sharedAddOptionMethod(input, SlashCommandUserOption);\n\t}\n\n\t/**\n\t * Adds a channel option.\n\t *\n\t * @param input - A function that returns an option builder or an already built builder\n\t */\n\tpublic addChannelOption(\n\t\tinput: SlashCommandChannelOption | ((builder: SlashCommandChannelOption) => SlashCommandChannelOption),\n\t) {\n\t\treturn this._sharedAddOptionMethod(input, SlashCommandChannelOption);\n\t}\n\n\t/**\n\t * Adds a role option.\n\t *\n\t * @param input - A function that returns an option builder or an already built builder\n\t */\n\tpublic addRoleOption(input: SlashCommandRoleOption | ((builder: SlashCommandRoleOption) => SlashCommandRoleOption)) {\n\t\treturn this._sharedAddOptionMethod(input, SlashCommandRoleOption);\n\t}\n\n\t/**\n\t * Adds an attachment option.\n\t *\n\t * @param input - A function that returns an option builder or an already built builder\n\t */\n\tpublic addAttachmentOption(\n\t\tinput: SlashCommandAttachmentOption | ((builder: SlashCommandAttachmentOption) => SlashCommandAttachmentOption),\n\t) {\n\t\treturn this._sharedAddOptionMethod(input, SlashCommandAttachmentOption);\n\t}\n\n\t/**\n\t * Adds a mentionable option.\n\t *\n\t * @param input - A function that returns an option builder or an already built builder\n\t */\n\tpublic addMentionableOption(\n\t\tinput: SlashCommandMentionableOption | ((builder: SlashCommandMentionableOption) => SlashCommandMentionableOption),\n\t) {\n\t\treturn this._sharedAddOptionMethod(input, SlashCommandMentionableOption);\n\t}\n\n\t/**\n\t * Adds a string option.\n\t *\n\t * @param input - A function that returns an option builder or an already built builder\n\t */\n\tpublic addStringOption(\n\t\tinput: SlashCommandStringOption | ((builder: SlashCommandStringOption) => SlashCommandStringOption),\n\t) {\n\t\treturn this._sharedAddOptionMethod(input, SlashCommandStringOption);\n\t}\n\n\t/**\n\t * Adds an integer option.\n\t *\n\t * @param input - A function that returns an option builder or an already built builder\n\t */\n\tpublic addIntegerOption(\n\t\tinput: SlashCommandIntegerOption | ((builder: SlashCommandIntegerOption) => SlashCommandIntegerOption),\n\t) {\n\t\treturn this._sharedAddOptionMethod(input, SlashCommandIntegerOption);\n\t}\n\n\t/**\n\t * Adds a number option.\n\t *\n\t * @param input - A function that returns an option builder or an already built builder\n\t */\n\tpublic addNumberOption(\n\t\tinput: SlashCommandNumberOption | ((builder: SlashCommandNumberOption) => SlashCommandNumberOption),\n\t) {\n\t\treturn this._sharedAddOptionMethod(input, SlashCommandNumberOption);\n\t}\n\n\t/**\n\t * Where the actual adding magic happens. ✨\n\t *\n\t * @param input - The input. What else?\n\t * @param Instance - The instance of whatever is being added\n\t * @internal\n\t */\n\tprivate _sharedAddOptionMethod<OptionBuilder extends ApplicationCommandOptionBase>(\n\t\tinput: OptionBuilder | ((builder: OptionBuilder) => OptionBuilder),\n\t\tInstance: new () => OptionBuilder,\n\t): TypeAfterAddingOptions {\n\t\tconst { options } = this;\n\n\t\t// First, assert options conditions - we cannot have more than 25 options\n\t\tvalidateMaxOptionsLength(options);\n\n\t\t// Get the final result\n\t\tconst result = typeof input === 'function' ? input(new Instance()) : input;\n\n\t\tassertReturnOfBuilder(result, Instance);\n\n\t\t// Push it\n\t\toptions.push(result);\n\n\t\treturn this as unknown as TypeAfterAddingOptions;\n\t}\n}\n","import {\n\tApplicationCommandOptionType,\n\ttype APIApplicationCommandSubcommandGroupOption,\n\ttype APIApplicationCommandSubcommandOption,\n} from 'discord-api-types/v10';\nimport { mix } from 'ts-mixer';\nimport { assertReturnOfBuilder, validateMaxOptionsLength, validateRequiredParameters } from './Assertions.js';\nimport type { ToAPIApplicationCommandOptions } from './SlashCommandBuilder.js';\nimport type { ApplicationCommandOptionBase } from './mixins/ApplicationCommandOptionBase.js';\nimport { SharedNameAndDescription } from './mixins/NameAndDescription.js';\nimport { SharedSlashCommandOptions } from './mixins/SharedSlashCommandOptions.js';\n\n/**\n * Represents a folder for subcommands.\n *\n * @see {@link https://discord.com/developers/docs/interactions/application-commands#subcommands-and-subcommand-groups}\n */\n@mix(SharedNameAndDescription)\nexport class SlashCommandSubcommandGroupBuilder implements ToAPIApplicationCommandOptions {\n\t/**\n\t * The name of this subcommand group.\n\t */\n\tpublic readonly name: string = undefined!;\n\n\t/**\n\t * The description of this subcommand group.\n\t */\n\tpublic readonly description: string = undefined!;\n\n\t/**\n\t * The subcommands within this subcommand group.\n\t */\n\tpublic readonly options: SlashCommandSubcommandBuilder[] = [];\n\n\t/**\n\t * Adds a new subcommand to this group.\n\t *\n\t * @param input - A function that returns a subcommand builder or an already built builder\n\t */\n\tpublic addSubcommand(\n\t\tinput:\n\t\t\t| SlashCommandSubcommandBuilder\n\t\t\t| ((subcommandGroup: SlashCommandSubcommandBuilder) => SlashCommandSubcommandBuilder),\n\t) {\n\t\tconst { options } = this;\n\n\t\t// First, assert options conditions - we cannot have more than 25 options\n\t\tvalidateMaxOptionsLength(options);\n\n\t\t// Get the final result\n\t\t// eslint-disable-next-line @typescript-eslint/no-use-before-define\n\t\tconst result = typeof input === 'function' ? input(new SlashCommandSubcommandBuilder()) : input;\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-use-before-define\n\t\tassertReturnOfBuilder(result, SlashCommandSubcommandBuilder);\n\n\t\t// Push it\n\t\toptions.push(result);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Serializes this builder to API-compatible JSON data.\n\t *\n\t * @remarks\n\t * This method runs validations on the data before serializing it.\n\t * As such, it may throw an error if the data is invalid.\n\t */\n\tpublic toJSON(): APIApplicationCommandSubcommandGroupOption {\n\t\tvalidateRequiredParameters(this.name, this.description, this.options);\n\n\t\treturn {\n\t\t\ttype: ApplicationCommandOptionType.SubcommandGroup,\n\t\t\tname: this.name,\n\t\t\tname_localizations: this.name_localizations,\n\t\t\tdescription: this.description,\n\t\t\tdescription_localizations: this.description_localizations,\n\t\t\toptions: this.options.map((option) => option.toJSON()),\n\t\t};\n\t}\n}\n\nexport interface SlashCommandSubcommandGroupBuilder extends SharedNameAndDescription {}\n\n/**\n * A builder that creates API-compatible JSON data for slash command subcommands.\n *\n * @see {@link https://discord.com/developers/docs/interactions/application-commands#subcommands-and-subcommand-groups}\n */\n@mix(SharedNameAndDescription, SharedSlashCommandOptions)\nexport class SlashCommandSubcommandBuilder implements ToAPIApplicationCommandOptions {\n\t/**\n\t * The name of this subcommand.\n\t */\n\tpublic readonly name: string = undefined!;\n\n\t/**\n\t * The description of this subcommand.\n\t */\n\tpublic readonly description: string = undefined!;\n\n\t/**\n\t * The options within this subcommand.\n\t */\n\tpublic readonly options: ApplicationCommandOptionBase[] = [];\n\n\t/**\n\t * Serializes this builder to API-compatible JSON data.\n\t *\n\t * @remarks\n\t * This method runs validations on the data before serializing it.\n\t * As such, it may throw an error if the data is invalid.\n\t */\n\tpublic toJSON(): APIApplicationCommandSubcommandOption {\n\t\tvalidateRequiredParameters(this.name, this.description, this.options);\n\n\t\treturn {\n\t\t\ttype: ApplicationCommandOptionType.Subcommand,\n\t\t\tname: this.name,\n\t\t\tname_localizations: this.name_localizations,\n\t\t\tdescription: this.description,\n\t\t\tdescription_localizations: this.description_localizations,\n\t\t\toptions: this.options.map((option) => option.toJSON()),\n\t\t};\n\t}\n}\n\nexport interface SlashCommandSubcommandBuilder\n\textends SharedNameAndDescription,\n\t\tSharedSlashCommandOptions<SlashCommandSubcommandBuilder> {}\n","import { assertReturnOfBuilder, validateMaxOptionsLength } from '../Assertions.js';\nimport type { ToAPIApplicationCommandOptions } from '../SlashCommandBuilder.js';\nimport { SlashCommandSubcommandBuilder, SlashCommandSubcommandGroupBuilder } from '../SlashCommandSubcommands.js';\n\n/**\n * This mixin holds symbols that can be shared in slash subcommands.\n *\n * @typeParam TypeAfterAddingSubcommands - The type this class should return after adding a subcommand or subcommand group.\n */\nexport class SharedSlashCommandSubcommands<\n\tTypeAfterAddingSubcommands extends SharedSlashCommandSubcommands<TypeAfterAddingSubcommands>,\n> {\n\tpublic readonly options: ToAPIApplicationCommandOptions[] = [];\n\n\t/**\n\t * Adds a new subcommand group to this command.\n\t *\n\t * @param input - A function that returns a subcommand group builder or an already built builder\n\t */\n\tpublic addSubcommandGroup(\n\t\tinput:\n\t\t\t| SlashCommandSubcommandGroupBuilder\n\t\t\t| ((subcommandGroup: SlashCommandSubcommandGroupBuilder) => SlashCommandSubcommandGroupBuilder),\n\t): TypeAfterAddingSubcommands {\n\t\tconst { options } = this;\n\n\t\t// First, assert options conditions - we cannot have more than 25 options\n\t\tvalidateMaxOptionsLength(options);\n\n\t\t// Get the final result\n\t\tconst result = typeof input === 'function' ? input(new SlashCommandSubcommandGroupBuilder()) : input;\n\n\t\tassertReturnOfBuilder(result, SlashCommandSubcommandGroupBuilder);\n\n\t\t// Push it\n\t\toptions.push(result);\n\n\t\treturn this as unknown as TypeAfterAddingSubcommands;\n\t}\n\n\t/**\n\t * Adds a new subcommand to this command.\n\t *\n\t * @param input - A function that returns a subcommand builder or an already built builder\n\t */\n\tpublic addSubcommand(\n\t\tinput:\n\t\t\t| SlashCommandSubcommandBuilder\n\t\t\t| ((subcommandGroup: SlashCommandSubcommandBuilder) => SlashCommandSubcommandBuilder),\n\t): TypeAfterAddingSubcommands {\n\t\tconst { options } = this;\n\n\t\t// First, assert options conditions - we cannot have more than 25 options\n\t\tvalidateMaxOptionsLength(options);\n\n\t\t// Get the final result\n\t\tconst result = typeof input === 'function' ? input(new SlashCommandSubcommandBuilder()) : input;\n\n\t\tassertReturnOfBuilder(result, SlashCommandSubcommandBuilder);\n\n\t\t// Push it\n\t\toptions.push(result);\n\n\t\treturn this as unknown as TypeAfterAddingSubcommands;\n\t}\n}\n","import type {\n\tAPIApplicationCommandOption,\n\tApplicationIntegrationType,\n\tInteractionContextType,\n\tLocalizationMap,\n\tPermissions,\n} from 'discord-api-types/v10';\nimport { mix } from 'ts-mixer';\nimport { SharedNameAndDescription } from './mixins/NameAndDescription.js';\nimport { SharedSlashCommand } from './mixins/SharedSlashCommand.js';\nimport { SharedSlashCommandOptions } from './mixins/SharedSlashCommandOptions.js';\nimport { SharedSlashCommandSubcommands } from './mixins/SharedSubcommands.js';\n\n/**\n * A builder that creates API-compatible JSON data for slash commands.\n */\n@mix(SharedSlashCommandOptions, SharedNameAndDescription, SharedSlashCommandSubcommands, SharedSlashCommand)\nexport class SlashCommandBuilder {\n\t/**\n\t * The name of this command.\n\t */\n\tpublic readonly name: string = undefined!;\n\n\t/**\n\t * The name localizations of this command.\n\t */\n\tpublic readonly name_localizations?: LocalizationMap;\n\n\t/**\n\t * The description of this command.\n\t */\n\tpublic readonly description: string = undefined!;\n\n\t/**\n\t * The description localizations of this command.\n\t */\n\tpublic readonly description_localizations?: LocalizationMap;\n\n\t/**\n\t * The options of this command.\n\t */\n\tpublic readonly options: ToAPIApplicationCommandOptions[] = [];\n\n\t/**\n\t * The contexts for this command.\n\t */\n\tpublic readonly contexts?: InteractionContextType[];\n\n\t/**\n\t * Whether this command is enabled by default when the application is added to a guild.\n\t *\n\t * @deprecated Use {@link SharedSlashCommand.setDefaultMemberPermissions} or {@link SharedSlashCommand.setDMPermission} instead.\n\t */\n\tpublic readonly default_permission: boolean | undefined = undefined;\n\n\t/**\n\t * The set of permissions represented as a bit set for the command.\n\t */\n\tpublic readonly default_member_permissions: Permissions | null | undefined = undefined;\n\n\t/**\n\t * Indicates whether the command is available in direct messages with the application.\n\t *\n\t * @remarks\n\t * By default, commands are visible. This property is only for global commands.\n\t * @deprecated\n\t * Use {@link SlashCommandBuilder.contexts} instead.\n\t */\n\tpublic readonly dm_permission: boolean | undefined = undefined;\n\n\t/**\n\t * The integration types for this command.\n\t */\n\tpublic readonly integration_types?: ApplicationIntegrationType[];\n\n\t/**\n\t * Whether this command is NSFW.\n\t */\n\tpublic readonly nsfw: boolean | undefined = undefined;\n}\n\nexport interface SlashCommandBuilder\n\textends SharedNameAndDescription,\n\t\tSharedSlashCommandOptions<SlashCommandOptionsOnlyBuilder>,\n\t\tSharedSlashCommandSubcommands<SlashCommandSubcommandsOnlyBuilder>,\n\t\tSharedSlashCommand {}\n\n/**\n * An interface specifically for slash command subcommands.\n */\nexport interface SlashCommandSubcommandsOnlyBuilder\n\textends SharedNameAndDescription,\n\t\tSharedSlashCommandSubcommands<SlashCommandSubcommandsOnlyBuilder>,\n\t\tSharedSlashCommand {}\n\n/**\n * An interface specifically for slash command options.\n */\nexport interface SlashCommandOptionsOnlyBuilder\n\textends SharedNameAndDescription,\n\t\tSharedSlashCommandOptions<SlashCommandOptionsOnlyBuilder>,\n\t\tSharedSlashCommand {}\n\n/**\n * An interface that ensures the `toJSON()` call will return something\n * that can be serialized into API-compatible data.\n */\nexport interface ToAPIApplicationCommandOptions {\n\ttoJSON(): APIApplicationCommandOption;\n}\n","export * as EmbedAssertions from './messages/embed/Assertions.js';\nexport * from './messages/embed/Embed.js';\n// TODO: Consider removing this dep in the next major version\nexport * from '@discordjs/formatters';\n\nexport * as ComponentAssertions from './components/Assertions.js';\nexport * from './components/ActionRow.js';\nexport * from './components/button/Button.js';\nexport * from './components/Component.js';\nexport * from './components/Components.js';\nexport * from './components/textInput/TextInput.js';\nexport * as TextInputAssertions from './components/textInput/Assertions.js';\nexport * from './interactions/modals/Modal.js';\nexport * as ModalAssertions from './interactions/modals/Assertions.js';\n\nexport * from './components/selectMenu/BaseSelectMenu.js';\nexport * from './components/selectMenu/ChannelSelectMenu.js';\nexport * from './components/selectMenu/MentionableSelectMenu.js';\nexport * from './components/selectMenu/RoleSelectMenu.js';\nexport * from './components/selectMenu/StringSelectMenu.js';\n// TODO: Remove those aliases in v2\nexport {\n\t/**\n\t * @deprecated Will be removed in the next major version, use {@link StringSelectMenuBuilder} instead.\n\t */\n\tStringSelectMenuBuilder as SelectMenuBuilder,\n} from './components/selectMenu/StringSelectMenu.js';\nexport {\n\t/**\n\t * @deprecated Will be removed in the next major version, use {@link StringSelectMenuOptionBuilder} instead.\n\t */\n\tStringSelectMenuOptionBuilder as SelectMenuOptionBuilder,\n} from './components/selectMenu/StringSelectMenuOption.js';\nexport * as SelectMenuAssertions from './components/selectMenu/Assertions.js';\nexport * from './components/selectMenu/StringSelectMenuOption.js';\nexport * from './components/selectMenu/UserSelectMenu.js';\n\nexport * from './components/fileUpload/FileUpload.js';\nexport * as FileUploadAssertions from './components/fileUpload/Assertions.js';\n\nexport * from './components/label/Label.js';\nexport * as LabelAssertions from './components/label/Assertions.js';\n\nexport * as ComponentsV2Assertions from './components/v2/Assertions.js';\nexport * from './components/v2/Container.js';\nexport * from './components/v2/File.js';\nexport * from './components/v2/MediaGallery.js';\nexport * from './components/v2/MediaGalleryItem.js';\nexport * from './components/v2/Section.js';\nexport * from './components/v2/Separator.js';\nexport * from './components/v2/TextDisplay.js';\nexport * from './components/v2/Thumbnail.js';\n\nexport * as SlashCommandAssertions from './interactions/slashCommands/Assertions.js';\nexport * from './interactions/slashCommands/SlashCommandBuilder.js';\nexport * from './interactions/slashCommands/SlashCommandSubcommands.js';\nexport * from './interactions/slashCommands/options/boolean.js';\nexport * from './interactions/slashCommands/options/channel.js';\nexport * from './interactions/slashCommands/options/integer.js';\nexport * from './interactions/slashCommands/options/mentionable.js';\nexport * from './interactions/slashCommands/options/number.js';\nexport * from './interactions/slashCommands/options/role.js';\nexport * from './interactions/slashCommands/options/attachment.js';\nexport * from './interactions/slashCommands/options/string.js';\nexport * from './interactions/slashCommands/options/user.js';\nexport * from './interactions/slashCommands/mixins/ApplicationCommandNumericOptionMinMaxValueMixin.js';\nexport * from './interactions/slashCommands/mixins/ApplicationCommandOptionBase.js';\nexport * from './interactions/slashCommands/mixins/ApplicationCommandOptionChannelTypesMixin.js';\nexport * from './interactions/slashCommands/mixins/ApplicationCommandOptionWithAutocompleteMixin.js';\nexport * from './interactions/slashCommands/mixins/ApplicationCommandOptionWithChoicesMixin.js';\nexport * from './interactions/slashCommands/mixins/NameAndDescription.js';\nexport * from './interactions/slashCommands/mixins/SharedSlashCommandOptions.js';\nexport * from './interactions/slashCommands/mixins/SharedSubcommands.js';\nexport * from './interactions/slashCommands/mixins/SharedSlashCommand.js';\n\nexport * as ContextMenuCommandAssertions from './interactions/contextMenuCommands/Assertions.js';\nexport * from './interactions/contextMenuCommands/ContextMenuCommandBuilder.js';\n\nexport * from './util/componentUtil.js';\nexport * from './util/normalizeArray.js';\nexport * from './util/validation.js';\n\n/**\n * The {@link https://github.com/discordjs/discord.js/blob/main/packages/builders#readme | @discordjs/builders} version\n * that you are currently using.\n *\n * @privateRemarks This needs to explicitly be `string` so it is not typed as a \"const string\" that gets injected by esbuild.\n */\nexport const version = '1.13.1' as string;\n","/* eslint-disable jsdoc/check-param-names */\n\nimport type { JSONEncodable } from '@discordjs/util';\nimport type {\n\tAPITextInputComponent,\n\tAPIActionRowComponent,\n\tAPIComponentInModalActionRow,\n\tAPILabelComponent,\n\tAPIModalInteractionResponseCallbackData,\n\tAPITextDisplayComponent,\n} from 'discord-api-types/v10';\nimport { ComponentType } from 'discord-api-types/v10';\nimport { ActionRowBuilder, type ModalActionRowComponentBuilder } from '../../components/ActionRow.js';\nimport { customIdValidator } from '../../components/Assertions.js';\nimport { createComponentBuilder, resolveBuilder } from '../../components/Components.js';\nimport { LabelBuilder } from '../../components/label/Label.js';\nimport { TextInputBuilder } from '../../components/textInput/TextInput.js';\nimport { TextDisplayBuilder } from '../../components/v2/TextDisplay.js';\nimport { normalizeArray, type RestOrArray } from '../../util/normalizeArray.js';\nimport { titleValidator, validateRequiredParameters } from './Assertions.js';\n\n/**\n * A builder that creates API-compatible JSON data for modals.\n */\nexport class ModalBuilder implements JSONEncodable<APIModalInteractionResponseCallbackData> {\n\t/**\n\t * The API data associated with this modal.\n\t */\n\tpublic readonly data: Partial<APIModalInteractionResponseCallbackData>;\n\n\t/**\n\t * The components within this modal.\n\t */\n\tpublic readonly components: (ActionRowBuilder<ModalActionRowComponentBuilder> | LabelBuilder | TextDisplayBuilder)[] =\n\t\t[];\n\n\t/**\n\t * Creates a new modal from API data.\n\t *\n\t * @param data - The API data to create this modal with\n\t */\n\tpublic constructor({ components, ...data }: Partial<APIModalInteractionResponseCallbackData> = {}) {\n\t\tthis.data = { ...data };\n\t\tthis.components = (components?.map((component) => createComponentBuilder(component)) ?? []) as (\n\t\t\t| ActionRowBuilder<ModalActionRowComponentBuilder>\n\t\t\t| LabelBuilder\n\t\t)[];\n\t}\n\n\t/**\n\t * Sets the title of this modal.\n\t *\n\t * @param title - The title to use\n\t */\n\tpublic setTitle(title: string) {\n\t\tthis.data.title = titleValidator.parse(title);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the custom id of this modal.\n\t *\n\t * @param customId - The custom id to use\n\t */\n\tpublic setCustomId(customId: string) {\n\t\tthis.data.custom_id = customIdValidator.parse(customId);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Adds components to this modal.\n\t *\n\t * @param components - The components to add\n\t * @deprecated Use {@link ModalBuilder.addLabelComponents} or {@link ModalBuilder.addTextDisplayComponents} instead\n\t */\n\tpublic addComponents(\n\t\t...components: RestOrArray<\n\t\t\t| ActionRowBuilder<ModalActionRowComponentBuilder>\n\t\t\t| APIActionRowComponent<APIComponentInModalActionRow>\n\t\t\t| APILabelComponent\n\t\t\t| APITextDisplayComponent\n\t\t\t| APITextInputComponent\n\t\t\t| LabelBuilder\n\t\t\t| TextDisplayBuilder\n\t\t\t| TextInputBuilder\n\t\t>\n\t) {\n\t\tthis.components.push(\n\t\t\t...normalizeArray(components).map((component, idx) => {\n\t\t\t\tif (\n\t\t\t\t\tcomponent instanceof ActionRowBuilder ||\n\t\t\t\t\tcomponent instanceof LabelBuilder ||\n\t\t\t\t\tcomponent instanceof TextDisplayBuilder\n\t\t\t\t) {\n\t\t\t\t\treturn component;\n\t\t\t\t}\n\n\t\t\t\t// Deprecated support\n\t\t\t\tif (component instanceof TextInputBuilder) {\n\t\t\t\t\treturn new ActionRowBuilder<ModalActionRowComponentBuilder>().addComponents(component);\n\t\t\t\t}\n\n\t\t\t\tif ('type' in component) {\n\t\t\t\t\tif (component.type === ComponentType.ActionRow) {\n\t\t\t\t\t\treturn new ActionRowBuilder<ModalActionRowComponentBuilder>(component);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (component.type === ComponentType.Label) {\n\t\t\t\t\t\treturn new LabelBuilder(component);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (component.type === ComponentType.TextDisplay) {\n\t\t\t\t\t\treturn new TextDisplayBuilder(component);\n\t\t\t\t\t}\n\n\t\t\t\t\t// Deprecated, should go in a label component\n\t\t\t\t\tif (component.type === ComponentType.TextInput) {\n\t\t\t\t\t\treturn new ActionRowBuilder<ModalActionRowComponentBuilder>().addComponents(\n\t\t\t\t\t\t\tnew TextInputBuilder(component),\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthrow new TypeError(`Invalid component passed in ModalBuilder.addComponents at index ${idx}!`);\n\t\t\t}),\n\t\t);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Adds label components to this modal.\n\t *\n\t * @param components - The components to add\n\t */\n\tpublic addLabelComponents(\n\t\t...components: RestOrArray<APILabelComponent | LabelBuilder | ((builder: LabelBuilder) => LabelBuilder)>\n\t) {\n\t\tconst normalized = normalizeArray(components);\n\t\tconst resolved = normalized.map((label) => resolveBuilder(label, LabelBuilder));\n\n\t\tthis.components.push(...resolved);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Adds text display components to this modal.\n\t *\n\t * @param components - The components to add\n\t */\n\tpublic addTextDisplayComponents(\n\t\t...components: RestOrArray<\n\t\t\tAPITextDisplayComponent | TextDisplayBuilder | ((builder: TextDisplayBuilder) => TextDisplayBuilder)\n\t\t>\n\t) {\n\t\tconst normalized = normalizeArray(components);\n\t\tconst resolved = normalized.map((row) => resolveBuilder(row, TextDisplayBuilder));\n\n\t\tthis.components.push(...resolved);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Adds action rows to this modal.\n\t *\n\t * @param components - The components to add\n\t * @deprecated Use {@link ModalBuilder.addLabelComponents} instead\n\t */\n\tpublic addActionRowComponents(\n\t\t...components: RestOrArray<\n\t\t\t| ActionRowBuilder<ModalActionRowComponentBuilder>\n\t\t\t| APIActionRowComponent<APIComponentInModalActionRow>\n\t\t\t| ((\n\t\t\t\t\tbuilder: ActionRowBuilder<ModalActionRowComponentBuilder>,\n\t\t\t ) => ActionRowBuilder<ModalActionRowComponentBuilder>)\n\t\t>\n\t) {\n\t\tconst normalized = normalizeArray(components);\n\t\tconst resolved = normalized.map((row) => resolveBuilder(row, ActionRowBuilder<ModalActionRowComponentBuilder>));\n\n\t\tthis.components.push(...resolved);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the labels for this modal.\n\t *\n\t * @param components - The components to set\n\t */\n\tpublic setLabelComponents(\n\t\t...components: RestOrArray<APILabelComponent | LabelBuilder | ((builder: LabelBuilder) => LabelBuilder)>\n\t) {\n\t\tconst normalized = normalizeArray(components);\n\t\tthis.spliceLabelComponents(0, this.components.length, ...normalized);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Removes, replaces, or inserts labels for this modal.\n\t *\n\t * @remarks\n\t * This method behaves similarly\n\t * to {@link https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/splice | Array.prototype.splice()}.\n\t * The maximum amount of labels that can be added is 5.\n\t *\n\t * It's useful for modifying and adjusting order of the already-existing labels of a modal.\n\t * @example\n\t * Remove the first label:\n\t * ```ts\n\t * modal.spliceLabelComponents(0, 1);\n\t * ```\n\t * @example\n\t * Remove the first n labels:\n\t * ```ts\n\t * const n = 4;\n\t * modal.spliceLabelComponents(0, n);\n\t * ```\n\t * @example\n\t * Remove the last label:\n\t * ```ts\n\t * modal.spliceLabelComponents(-1, 1);\n\t * ```\n\t * @param index - The index to start at\n\t * @param deleteCount - The number of labels to remove\n\t * @param labels - The replacing label objects\n\t */\n\tpublic spliceLabelComponents(\n\t\tindex: number,\n\t\tdeleteCount: number,\n\t\t...labels: (APILabelComponent | LabelBuilder | ((builder: LabelBuilder) => LabelBuilder))[]\n\t): this {\n\t\tconst resolved = labels.map((label) => resolveBuilder(label, LabelBuilder));\n\t\tthis.components.splice(index, deleteCount, ...resolved);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets components for this modal.\n\t *\n\t * @param components - The components to set\n\t * @deprecated Use {@link ModalBuilder.setLabelComponents} instead\n\t */\n\tpublic setComponents(\n\t\t...components: RestOrArray<ActionRowBuilder<ModalActionRowComponentBuilder> | LabelBuilder | TextDisplayBuilder>\n\t) {\n\t\tthis.components.splice(0, this.components.length, ...normalizeArray(components));\n\t\treturn this;\n\t}\n\n\t/**\n\t * {@inheritDoc ComponentBuilder.toJSON}\n\t */\n\tpublic toJSON(): APIModalInteractionResponseCallbackData {\n\t\tvalidateRequiredParameters(this.data.custom_id, this.data.title, this.components);\n\n\t\treturn {\n\t\t\t...this.data,\n\t\t\tcomponents: this.components.map((component) => component.toJSON()),\n\t\t} as APIModalInteractionResponseCallbackData;\n\t}\n}\n","import type { APIEmbed, APIEmbedAuthor, APIEmbedField, APIEmbedFooter, APIEmbedImage } from 'discord-api-types/v10';\nimport { normalizeArray, type RestOrArray } from '../../util/normalizeArray.js';\nimport {\n\tcolorPredicate,\n\tdescriptionPredicate,\n\tembedAuthorPredicate,\n\tembedFieldsArrayPredicate,\n\tembedFooterPredicate,\n\timageURLPredicate,\n\ttimestampPredicate,\n\ttitlePredicate,\n\turlPredicate,\n\tvalidateFieldLength,\n} from './Assertions.js';\n\n/**\n * A tuple satisfying the RGB color model.\n *\n * @see {@link https://developer.mozilla.org/docs/Glossary/RGB}\n */\nexport type RGBTuple = [red: number, green: number, blue: number];\n\n/**\n * The base icon data typically used in payloads.\n */\nexport interface IconData {\n\t/**\n\t * The URL of the icon.\n\t */\n\ticonURL?: string;\n\t/**\n\t * The proxy URL of the icon.\n\t */\n\tproxyIconURL?: string;\n}\n\n/**\n * Represents the author data of an embed.\n */\nexport interface EmbedAuthorData extends IconData, Omit<APIEmbedAuthor, 'icon_url' | 'proxy_icon_url'> {}\n\n/**\n * Represents the author options of an embed.\n */\nexport interface EmbedAuthorOptions extends Omit<EmbedAuthorData, 'proxyIconURL'> {}\n\n/**\n * Represents the footer data of an embed.\n */\nexport interface EmbedFooterData extends IconData, Omit<APIEmbedFooter, 'icon_url' | 'proxy_icon_url'> {}\n\n/**\n * Represents the footer options of an embed.\n */\nexport interface EmbedFooterOptions extends Omit<EmbedFooterData, 'proxyIconURL'> {}\n\n/**\n * Represents the image data of an embed.\n */\nexport interface EmbedImageData extends Omit<APIEmbedImage, 'proxy_url'> {\n\t/**\n\t * The proxy URL for the image.\n\t */\n\tproxyURL?: string;\n}\n\n/**\n * A builder that creates API-compatible JSON data for embeds.\n */\nexport class EmbedBuilder {\n\t/**\n\t * The API data associated with this embed.\n\t */\n\tpublic readonly data: APIEmbed;\n\n\t/**\n\t * Creates a new embed from API data.\n\t *\n\t * @param data - The API data to create this embed with\n\t */\n\tpublic constructor(data: APIEmbed = {}) {\n\t\tthis.data = { ...data };\n\t\tif (data.timestamp) this.data.timestamp = new Date(data.timestamp).toISOString();\n\t}\n\n\t/**\n\t * Appends fields to the embed.\n\t *\n\t * @remarks\n\t * This method accepts either an array of fields or a variable number of field parameters.\n\t * The maximum amount of fields that can be added is 25.\n\t * @example\n\t * Using an array:\n\t * ```ts\n\t * const fields: APIEmbedField[] = ...;\n\t * const embed = new EmbedBuilder()\n\t * \t.addFields(fields);\n\t * ```\n\t * @example\n\t * Using rest parameters (variadic):\n\t * ```ts\n\t * const embed = new EmbedBuilder()\n\t * \t.addFields(\n\t * \t\t{ name: 'Field 1', value: 'Value 1' },\n\t * \t\t{ name: 'Field 2', value: 'Value 2' },\n\t * \t);\n\t * ```\n\t * @param fields - The fields to add\n\t */\n\tpublic addFields(...fields: RestOrArray<APIEmbedField>): this {\n\t\tconst normalizedFields = normalizeArray(fields);\n\t\t// Ensure adding these fields won't exceed the 25 field limit\n\t\tvalidateFieldLength(normalizedFields.length, this.data.fields);\n\n\t\t// Data assertions\n\t\tembedFieldsArrayPredicate.parse(normalizedFields);\n\n\t\tif (this.data.fields) this.data.fields.push(...normalizedFields);\n\t\telse this.data.fields = normalizedFields;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Removes, replaces, or inserts fields for this embed.\n\t *\n\t * @remarks\n\t * This method behaves similarly\n\t * to {@link https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/splice | Array.prototype.splice()}.\n\t * The maximum amount of fields that can be added is 25.\n\t *\n\t * It's useful for modifying and adjusting order of the already-existing fields of an embed.\n\t * @example\n\t * Remove the first field:\n\t * ```ts\n\t * embed.spliceFields(0, 1);\n\t * ```\n\t * @example\n\t * Remove the first n fields:\n\t * ```ts\n\t * const n = 4;\n\t * embed.spliceFields(0, n);\n\t * ```\n\t * @example\n\t * Remove the last field:\n\t * ```ts\n\t * embed.spliceFields(-1, 1);\n\t * ```\n\t * @param index - The index to start at\n\t * @param deleteCount - The number of fields to remove\n\t * @param fields - The replacing field objects\n\t */\n\tpublic spliceFields(index: number, deleteCount: number, ...fields: APIEmbedField[]): this {\n\t\t// Ensure adding these fields won't exceed the 25 field limit\n\t\tvalidateFieldLength(fields.length - deleteCount, this.data.fields);\n\n\t\t// Data assertions\n\t\tembedFieldsArrayPredicate.parse(fields);\n\t\tif (this.data.fields) this.data.fields.splice(index, deleteCount, ...fields);\n\t\telse this.data.fields = fields;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the fields for this embed.\n\t *\n\t * @remarks\n\t * This method is an alias for {@link EmbedBuilder.spliceFields}. More specifically,\n\t * it splices the entire array of fields, replacing them with the provided fields.\n\t *\n\t * You can set a maximum of 25 fields.\n\t * @param fields - The fields to set\n\t */\n\tpublic setFields(...fields: RestOrArray<APIEmbedField>): this {\n\t\tthis.spliceFields(0, this.data.fields?.length ?? 0, ...normalizeArray(fields));\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the author of this embed.\n\t *\n\t * @param options - The options to use\n\t */\n\n\tpublic setAuthor(options: EmbedAuthorOptions | null): this {\n\t\tif (options === null) {\n\t\t\tthis.data.author = undefined;\n\t\t\treturn this;\n\t\t}\n\n\t\t// Data assertions\n\t\tembedAuthorPredicate.parse(options);\n\n\t\tthis.data.author = { name: options.name, url: options.url, icon_url: options.iconURL };\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the color of this embed.\n\t *\n\t * @param color - The color to use\n\t */\n\tpublic setColor(color: RGBTuple | number | null): this {\n\t\t// Data assertions\n\t\tcolorPredicate.parse(color);\n\n\t\tif (Array.isArray(color)) {\n\t\t\tconst [red, green, blue] = color;\n\t\t\tthis.data.color = (red << 16) + (green << 8) + blue;\n\t\t\treturn this;\n\t\t}\n\n\t\tthis.data.color = color ?? undefined;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the description of this embed.\n\t *\n\t * @param description - The description to use\n\t */\n\tpublic setDescription(description: string | null): this {\n\t\t// Data assertions\n\t\tdescriptionPredicate.parse(description);\n\n\t\tthis.data.description = description ?? undefined;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the footer of this embed.\n\t *\n\t * @param options - The footer to use\n\t */\n\tpublic setFooter(options: EmbedFooterOptions | null): this {\n\t\tif (options === null) {\n\t\t\tthis.data.footer = undefined;\n\t\t\treturn this;\n\t\t}\n\n\t\t// Data assertions\n\t\tembedFooterPredicate.parse(options);\n\n\t\tthis.data.footer = { text: options.text, icon_url: options.iconURL };\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the image of this embed.\n\t *\n\t * @param url - The image URL to use\n\t */\n\tpublic setImage(url: string | null): this {\n\t\t// Data assertions\n\t\timageURLPredicate.parse(url);\n\n\t\tthis.data.image = url ? { url } : undefined;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the thumbnail of this embed.\n\t *\n\t * @param url - The thumbnail URL to use\n\t */\n\tpublic setThumbnail(url: string | null): this {\n\t\t// Data assertions\n\t\timageURLPredicate.parse(url);\n\n\t\tthis.data.thumbnail = url ? { url } : undefined;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the timestamp of this embed.\n\t *\n\t * @param timestamp - The timestamp or date to use\n\t */\n\tpublic setTimestamp(timestamp: Date | number | null = Date.now()): this {\n\t\t// Data assertions\n\t\ttimestampPredicate.parse(timestamp);\n\n\t\tthis.data.timestamp = timestamp ? new Date(timestamp).toISOString() : undefined;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the title for this embed.\n\t *\n\t * @param title - The title to use\n\t */\n\tpublic setTitle(title: string | null): this {\n\t\t// Data assertions\n\t\ttitlePredicate.parse(title);\n\n\t\tthis.data.title = title ?? undefined;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the URL of this embed.\n\t *\n\t * @param url - The URL to use\n\t */\n\tpublic setURL(url: string | null): this {\n\t\t// Data assertions\n\t\turlPredicate.parse(url);\n\n\t\tthis.data.url = url ?? undefined;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Serializes this builder to API-compatible JSON data.\n\t *\n\t * @remarks\n\t * This method runs validations on the data before serializing it.\n\t * As such, it may throw an error if the data is invalid.\n\t */\n\tpublic toJSON(): APIEmbed {\n\t\treturn { ...this.data };\n\t}\n}\n","import type {\n\tApplicationCommandType,\n\tApplicationIntegrationType,\n\tInteractionContextType,\n\tLocaleString,\n\tLocalizationMap,\n\tPermissions,\n\tRESTPostAPIContextMenuApplicationCommandsJSONBody,\n} from 'discord-api-types/v10';\nimport type { RestOrArray } from '../../util/normalizeArray.js';\nimport { normalizeArray } from '../../util/normalizeArray.js';\nimport { validateLocale, validateLocalizationMap } from '../slashCommands/Assertions.js';\nimport {\n\tvalidateRequiredParameters,\n\tvalidateName,\n\tvalidateType,\n\tvalidateDefaultPermission,\n\tvalidateDefaultMemberPermissions,\n\tvalidateDMPermission,\n\tcontextsPredicate,\n\tintegrationTypesPredicate,\n} from './Assertions.js';\n\n/**\n * The type a context menu command can be.\n */\nexport type ContextMenuCommandType = ApplicationCommandType.Message | ApplicationCommandType.User;\n\n/**\n * A builder that creates API-compatible JSON data for context menu commands.\n */\nexport class ContextMenuCommandBuilder {\n\t/**\n\t * The name of this command.\n\t */\n\tpublic readonly name: string = undefined!;\n\n\t/**\n\t * The name localizations of this command.\n\t */\n\tpublic readonly name_localizations?: LocalizationMap;\n\n\t/**\n\t * The type of this command.\n\t */\n\tpublic readonly type: ContextMenuCommandType = undefined!;\n\n\t/**\n\t * The contexts for this command.\n\t */\n\tpublic readonly contexts?: InteractionContextType[];\n\n\t/**\n\t * Whether this command is enabled by default when the application is added to a guild.\n\t *\n\t * @deprecated Use {@link ContextMenuCommandBuilder.setDefaultMemberPermissions} or {@link ContextMenuCommandBuilder.setDMPermission} instead.\n\t */\n\tpublic readonly default_permission: boolean | undefined = undefined;\n\n\t/**\n\t * The set of permissions represented as a bit set for the command.\n\t */\n\tpublic readonly default_member_permissions: Permissions | null | undefined = undefined;\n\n\t/**\n\t * Indicates whether the command is available in direct messages with the application.\n\t *\n\t * @remarks\n\t * By default, commands are visible. This property is only for global commands.\n\t * @deprecated\n\t * Use {@link ContextMenuCommandBuilder.contexts} instead.\n\t */\n\tpublic readonly dm_permission: boolean | undefined = undefined;\n\n\t/**\n\t * The integration types for this command.\n\t */\n\tpublic readonly integration_types?: ApplicationIntegrationType[];\n\n\t/**\n\t * Sets the contexts of this command.\n\t *\n\t * @param contexts - The contexts\n\t */\n\tpublic setContexts(...contexts: RestOrArray<InteractionContextType>) {\n\t\tReflect.set(this, 'contexts', contextsPredicate.parse(normalizeArray(contexts)));\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets integration types of this command.\n\t *\n\t * @param integrationTypes - The integration types\n\t */\n\tpublic setIntegrationTypes(...integrationTypes: RestOrArray<ApplicationIntegrationType>) {\n\t\tReflect.set(this, 'integration_types', integrationTypesPredicate.parse(normalizeArray(integrationTypes)));\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the name of this command.\n\t *\n\t * @param name - The name to use\n\t */\n\tpublic setName(name: string) {\n\t\t// Assert the name matches the conditions\n\t\tvalidateName(name);\n\n\t\tReflect.set(this, 'name', name);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the type of this command.\n\t *\n\t * @param type - The type to use\n\t */\n\tpublic setType(type: ContextMenuCommandType) {\n\t\t// Assert the type is valid\n\t\tvalidateType(type);\n\n\t\tReflect.set(this, 'type', type);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets whether the command is enabled by default when the application is added to a guild.\n\t *\n\t * @remarks\n\t * If set to `false`, you will have to later `PUT` the permissions for this command.\n\t * @param value - Whether to enable this command by default\n\t * @see {@link https://discord.com/developers/docs/interactions/application-commands#permissions}\n\t * @deprecated Use {@link ContextMenuCommandBuilder.setDefaultMemberPermissions} or {@link ContextMenuCommandBuilder.setDMPermission} instead.\n\t */\n\tpublic setDefaultPermission(value: boolean) {\n\t\t// Assert the value matches the conditions\n\t\tvalidateDefaultPermission(value);\n\n\t\tReflect.set(this, 'default_permission', value);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the default permissions a member should have in order to run this command.\n\t *\n\t * @remarks\n\t * You can set this to `'0'` to disable the command by default.\n\t * @param permissions - The permissions bit field to set\n\t * @see {@link https://discord.com/developers/docs/interactions/application-commands#permissions}\n\t */\n\tpublic setDefaultMemberPermissions(permissions: Permissions | bigint | number | null | undefined) {\n\t\t// Assert the value and parse it\n\t\tconst permissionValue = validateDefaultMemberPermissions(permissions);\n\n\t\tReflect.set(this, 'default_member_permissions', permissionValue);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets if the command is available in direct messages with the application.\n\t *\n\t * @remarks\n\t * By default, commands are visible. This method is only for global commands.\n\t * @param enabled - Whether the command should be enabled in direct messages\n\t * @see {@link https://discord.com/developers/docs/interactions/application-commands#permissions}\n\t * @deprecated Use {@link ContextMenuCommandBuilder.setContexts} instead.\n\t */\n\tpublic setDMPermission(enabled: boolean | null | undefined) {\n\t\t// Assert the value matches the conditions\n\t\tvalidateDMPermission(enabled);\n\n\t\tReflect.set(this, 'dm_permission', enabled);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets a name localization for this command.\n\t *\n\t * @param locale - The locale to set\n\t * @param localizedName - The localized name for the given `locale`\n\t */\n\tpublic setNameLocalization(locale: LocaleString, localizedName: string | null) {\n\t\tif (!this.name_localizations) {\n\t\t\tReflect.set(this, 'name_localizations', {});\n\t\t}\n\n\t\tconst parsedLocale = validateLocale(locale);\n\n\t\tif (localizedName === null) {\n\t\t\tthis.name_localizations![parsedLocale] = null;\n\t\t\treturn this;\n\t\t}\n\n\t\tvalidateName(localizedName);\n\n\t\tthis.name_localizations![parsedLocale] = localizedName;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the name localizations for this command.\n\t *\n\t * @param localizedNames - The object of localized names to set\n\t */\n\tpublic setNameLocalizations(localizedNames: LocalizationMap | null) {\n\t\tif (localizedNames === null) {\n\t\t\tReflect.set(this, 'name_localizations', null);\n\t\t\treturn this;\n\t\t}\n\n\t\tReflect.set(this, 'name_localizations', {});\n\n\t\tfor (const args of Object.entries(localizedNames))\n\t\t\tthis.setNameLocalization(...(args as [LocaleString, string | null]));\n\t\treturn this;\n\t}\n\n\t/**\n\t * Serializes this builder to API-compatible JSON data.\n\t *\n\t * @remarks\n\t * This method runs validations on the data before serializing it.\n\t * As such, it may throw an error if the data is invalid.\n\t */\n\tpublic toJSON(): RESTPostAPIContextMenuApplicationCommandsJSONBody {\n\t\tvalidateRequiredParameters(this.name, this.type);\n\n\t\tvalidateLocalizationMap(this.name_localizations);\n\n\t\treturn { ...this };\n\t}\n}\n","import { SlashCommandBuilder } from '@discordjs/builders';\nimport type { RESTPostAPIChatInputApplicationCommandsJSONBody } from 'discord.js';\n\n/**\n * Discord slash command definitions for CMDOP bot.\n *\n * All commands use the Interactions API (slash commands).\n * Message content intent is NOT required — preferred since 2022.\n */\n\nexport const DISCORD_COMMANDS: RESTPostAPIChatInputApplicationCommandsJSONBody[] = [\n new SlashCommandBuilder()\n .setName('exec')\n .setDescription('Execute a shell command on a remote machine')\n .addStringOption((opt) =>\n opt\n .setName('command')\n .setDescription('The shell command to run (e.g. ls -la, df -h)')\n .setRequired(true),\n )\n .addStringOption((opt) =>\n opt\n .setName('machine')\n .setDescription('Target machine hostname (uses default if omitted)')\n .setRequired(false),\n )\n .toJSON(),\n\n new SlashCommandBuilder()\n .setName('agent')\n .setDescription('Run an AI agent task on a remote machine')\n .addStringOption((opt) =>\n opt\n .setName('prompt')\n .setDescription('The task for the AI agent to perform')\n .setRequired(true),\n )\n .addStringOption((opt) =>\n opt\n .setName('machine')\n .setDescription('Target machine hostname (uses default if omitted)')\n .setRequired(false),\n )\n .toJSON(),\n\n new SlashCommandBuilder()\n .setName('files')\n .setDescription('List files and directories on a remote machine')\n .addStringOption((opt) =>\n opt\n .setName('path')\n .setDescription('Directory path to list (default: home directory)')\n .setRequired(false),\n )\n .addStringOption((opt) =>\n opt\n .setName('machine')\n .setDescription('Target machine hostname (uses default if omitted)')\n .setRequired(false),\n )\n .toJSON(),\n\n new SlashCommandBuilder()\n .setName('help')\n .setDescription('Show available CMDOP commands and usage examples')\n .toJSON(),\n];\n\n/** All slash command names — used to build the prefix-based text fallback */\nexport const DISCORD_COMMAND_NAMES = DISCORD_COMMANDS.map((c) => c.name);\n","import {\n Client,\n GatewayIntentBits,\n Events,\n REST,\n Routes,\n type ChatInputCommandInteraction,\n type Interaction,\n} from 'discord.js';\nimport { BaseChannel } from '../../core/base-channel.js';\nimport { DiscordFormatter } from './formatter.js';\nimport { DISCORD_COMMANDS } from './commands.js';\nimport type { OutgoingMessage, IncomingMessage } from '../../models/message.js';\nimport type { PermissionManager } from '../../core/permission-manager.js';\nimport type { MessageDispatcher } from '../../core/dispatcher.js';\nimport type { LoggerProtocol } from '../../core/types.js';\nimport { DiscordError } from '../../errors.js';\n\nexport interface DiscordChannelOptions {\n /** Bot token from Discord Developer Portal */\n token: string;\n /** Your Discord application/client ID */\n clientId: string;\n /** Guild ID for guild-scoped command registration (instant). Omit for global commands (up to 1h). */\n guildId?: string;\n /** User IDs (string) that get ADMIN permission automatically */\n adminUsers?: string[];\n /** Max characters before truncating outgoing messages. Default: 1900 */\n maxMessageLength?: number;\n}\n\nexport class DiscordChannel extends BaseChannel {\n private client: Client | null = null;\n private readonly token: string;\n private readonly clientId: string;\n private readonly guildId: string | undefined;\n private readonly formatter: DiscordFormatter;\n private readonly maxLength: number;\n private messageHandlers: Array<(msg: IncomingMessage) => Promise<void>> = [];\n\n constructor(\n options: DiscordChannelOptions,\n permissions: PermissionManager,\n dispatcher: MessageDispatcher,\n logger: LoggerProtocol,\n ) {\n super('discord', 'Discord', permissions, dispatcher, logger);\n this.token = options.token;\n this.clientId = options.clientId;\n this.guildId = options.guildId;\n this.formatter = new DiscordFormatter();\n this.maxLength = options.maxMessageLength ?? 1900;\n }\n\n async start(): Promise<void> {\n // Register slash commands via REST before connecting\n await this.registerSlashCommands();\n\n const client = new Client({\n intents: [GatewayIntentBits.Guilds],\n });\n\n client.on(Events.InteractionCreate, (interaction: Interaction) => {\n if (!interaction.isChatInputCommand()) return;\n void this.handleInteraction(interaction);\n });\n\n client.on(Events.Error, (err) => {\n this.logger.error('Discord client error', {\n channel: this.id,\n err: err.message,\n });\n });\n\n client.on(Events.Warn, (msg) => {\n this.logger.warn('Discord client warning', { channel: this.id, msg });\n });\n\n // Rate limit monitoring via REST debug events (not a gateway event)\n client.rest.on('rateLimited', (info) => {\n this.logger.warn('Discord rate limited', {\n channel: this.id,\n route: info.route,\n retryAfter: info.retryAfter,\n });\n });\n\n this.client = client;\n\n await client.login(this.token);\n this.logEvent('started (gateway)');\n }\n\n async stop(): Promise<void> {\n if (this.client) {\n this.client.destroy();\n this.client = null;\n }\n this.messageHandlers = [];\n this.logEvent('stopped');\n }\n\n async send(userId: string, message: OutgoingMessage): Promise<void> {\n if (!this.client) throw new DiscordError('Client not started');\n\n try {\n const user = await this.client.users.fetch(userId);\n const dm = await user.createDM();\n\n switch (message.type) {\n case 'text': {\n const text = this.truncate(this.formatter.formatText(message.text));\n await dm.send(text);\n break;\n }\n case 'code': {\n const code = this.formatter.formatCode(message.code, message.language);\n await dm.send(code);\n break;\n }\n case 'error': {\n const errText = this.formatter.formatError(\n Object.assign(new Error(message.message), {\n code: 'BOT_ERROR',\n context: {},\n toLog: () => ({}),\n }),\n );\n await dm.send(errText);\n break;\n }\n }\n } catch (err) {\n throw new DiscordError(\n `Failed to send DM to ${userId}`,\n err instanceof Error ? err : undefined,\n );\n }\n }\n\n onMessage(handler: (msg: IncomingMessage) => Promise<void>): void {\n this.messageHandlers.push(handler);\n }\n\n // ─── Slash command handler ────────────────────────────────────────────────\n\n private async handleInteraction(interaction: ChatInputCommandInteraction): Promise<void> {\n // Defer reply immediately — operations may take >3 seconds\n await interaction.deferReply();\n\n const commandName = interaction.commandName;\n const userId = interaction.user.id;\n const channelId = interaction.channelId ?? interaction.guildId ?? userId;\n\n // Build the text representation that processMessage expects\n const text = this.buildCommandText(interaction);\n\n const msg: IncomingMessage = {\n id: interaction.id,\n userId,\n channelId,\n text,\n timestamp: new Date(),\n attachments: [],\n };\n\n // Notify any external onMessage handlers\n for (const h of this.messageHandlers) await h(msg);\n\n // Dispatch via base class, but we need to send the reply via editReply\n // Override: call dispatcher directly and edit the deferred reply\n try {\n const parsed = { name: commandName, args: this.extractArgs(interaction) };\n const ctx = {\n userId,\n command: parsed.name,\n args: parsed.args,\n channelId,\n message: msg,\n } as const;\n\n const result = await this.dispatcher.dispatch(ctx);\n\n if (result.ok) {\n const reply = this.outgoingToString(result.value);\n await interaction.editReply(this.truncate(reply));\n } else {\n const errText = this.formatter.formatError(result.error);\n await interaction.editReply(errText);\n }\n } catch (err) {\n this.logger.error('Discord interaction error', {\n commandName,\n userId,\n err: err instanceof Error ? err.message : String(err),\n });\n await interaction.editReply('❌ Something went wrong. Please try again.').catch(() => {\n // ignore if interaction already expired\n });\n }\n }\n\n private buildCommandText(interaction: ChatInputCommandInteraction): string {\n const name = interaction.commandName;\n const command = interaction.options.getString('command');\n const prompt = interaction.options.getString('prompt');\n const path = interaction.options.getString('path');\n const machine = interaction.options.getString('machine');\n\n const parts = [`/${name}`];\n if (command) parts.push(command);\n if (prompt) parts.push(prompt);\n if (path) parts.push(path);\n if (machine) parts.push(`--machine=${machine}`);\n return parts.join(' ');\n }\n\n private extractArgs(interaction: ChatInputCommandInteraction): string[] {\n const args: string[] = [];\n const command = interaction.options.getString('command');\n const prompt = interaction.options.getString('prompt');\n const path = interaction.options.getString('path');\n const machine = interaction.options.getString('machine');\n\n if (command) args.push(...command.split(/\\s+/).filter(Boolean));\n if (prompt) args.push(prompt);\n if (path) args.push(path);\n if (machine) args.push(`--machine=${machine}`);\n return args;\n }\n\n private outgoingToString(msg: OutgoingMessage): string {\n switch (msg.type) {\n case 'text':\n return this.formatter.formatText(msg.text);\n case 'code':\n return this.formatter.formatCode(msg.code, msg.language);\n case 'error':\n return `❌ ${msg.message}`;\n }\n }\n\n private truncate(text: string): string {\n if (text.length <= this.maxLength) return text;\n return text.slice(0, this.maxLength - 20) + '\\n...(truncated)';\n }\n\n // ─── Slash command registration ───────────────────────────────────────────\n\n private async registerSlashCommands(): Promise<void> {\n const rest = new REST({ version: '10' }).setToken(this.token);\n\n try {\n if (this.guildId) {\n await rest.put(Routes.applicationGuildCommands(this.clientId, this.guildId), {\n body: DISCORD_COMMANDS,\n });\n this.logEvent(`slash commands registered (guild: ${this.guildId})`);\n } else {\n await rest.put(Routes.applicationCommands(this.clientId), {\n body: DISCORD_COMMANDS,\n });\n this.logEvent('slash commands registered (global)');\n }\n } catch (err) {\n throw new DiscordError(\n 'Failed to register slash commands',\n err instanceof Error ? err : undefined,\n );\n }\n }\n}\n","import type { FormatterProtocol } from '../../core/types.js';\nimport type { BotError } from '../../errors.js';\nimport {\n PermissionDeniedError,\n CommandNotFoundError,\n CommandArgsError,\n MachineOfflineError,\n RateLimitError,\n} from '../../errors.js';\n\n/**\n * Slack mrkdwn formatter.\n *\n * Slack uses its own \"mrkdwn\" dialect (not standard Markdown).\n * Bold: *text* Italic: _text_ Code: `text` Code block: ```text```\n * No escaping of . - ! etc. Special chars are: * _ ` & < >\n */\n\nexport const SLACK_MAX_TEXT_LENGTH = 3000;\n\nexport class SlackFormatter implements FormatterProtocol {\n /**\n * Escape mrkdwn special characters in plain text.\n * Slack requires escaping: & < >\n * Ampersand must be escaped first to avoid double-escaping.\n */\n formatText(text: string): string {\n return text\n .replace(/&/g, '&amp;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;');\n }\n\n /**\n * Wrap code in a triple-backtick code block.\n * Truncates if over Slack's limit.\n */\n formatCode(code: string, language?: string): string {\n // Slack code blocks don't support language tags — ignore language param\n void language;\n const safeCode = code.replace(/```/g, \"''`\");\n const wrapped = `\\`\\`\\`\\n${safeCode}\\n\\`\\`\\``;\n\n if (wrapped.length <= SLACK_MAX_TEXT_LENGTH) return wrapped;\n\n const maxCode = SLACK_MAX_TEXT_LENGTH - 21;\n return `\\`\\`\\`\\n${safeCode.slice(0, maxCode)}\\n…(truncated)\\n\\`\\`\\``;\n }\n\n /**\n * Format a BotError into a user-friendly Slack mrkdwn message.\n */\n formatError(error: BotError): string {\n if (error instanceof PermissionDeniedError) {\n const required = error.context['required'] as string;\n return `:no_entry: *Access denied* — required permission: \\`${required}\\``;\n }\n if (error instanceof CommandNotFoundError) {\n const cmd = error.context['command'] as string;\n return `:question: Unknown command \\`/${cmd}\\`. Type \\`/help\\` to see available commands.`;\n }\n if (error instanceof CommandArgsError) {\n return `:warning: ${this.formatText(error.message)}`;\n }\n if (error instanceof MachineOfflineError) {\n return `:electric_plug: *Machine offline* — ${this.formatText(error.message)}`;\n }\n if (error instanceof RateLimitError) {\n return `:hourglass_flowing_sand: Rate limit reached. Please wait and try again.`;\n }\n // Generic fallback — do not expose internal details\n return `:x: Something went wrong. Please try again.`;\n }\n\n /**\n * Format a file listing entry line.\n */\n formatFileEntry(name: string, isDir: boolean, size?: number): string {\n const icon = isDir ? ':file_folder:' : ':page_facing_up:';\n const sizeStr = size !== undefined && !isDir ? ` (${formatBytes(size)})` : '';\n return `${icon} \\`${name}\\`${sizeStr}`;\n }\n}\n\nfunction formatBytes(bytes: number): string {\n if (bytes < 1024) return `${bytes}B`;\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)}K`;\n return `${(bytes / (1024 * 1024)).toFixed(1)}M`;\n}\n","import { App, Assistant } from '@slack/bolt';\nimport { BaseChannel } from '../../core/base-channel.js';\nimport { SlackFormatter } from './formatter.js';\nimport type { OutgoingMessage, IncomingMessage } from '../../models/message.js';\nimport type { PermissionManager } from '../../core/permission-manager.js';\nimport type { MessageDispatcher } from '../../core/dispatcher.js';\nimport type { LoggerProtocol } from '../../core/types.js';\nimport { SlackError } from '../../errors.js';\n\nexport interface SlackChannelOptions {\n /** Bot OAuth token (xoxb-...) */\n token: string;\n /** App-level token for Socket Mode (xapp-...) */\n appToken: string;\n /** User IDs that get ADMIN permission automatically */\n adminUsers?: string[];\n /** Max characters before truncating outgoing messages. Default: 2800 */\n maxMessageLength?: number;\n}\n\nexport class SlackChannel extends BaseChannel {\n private app: App | null = null;\n private readonly token: string;\n private readonly appToken: string;\n private readonly formatter: SlackFormatter;\n private readonly maxLength: number;\n private messageHandlers: Array<(msg: IncomingMessage) => Promise<void>> = [];\n\n constructor(\n options: SlackChannelOptions,\n permissions: PermissionManager,\n dispatcher: MessageDispatcher,\n logger: LoggerProtocol,\n ) {\n super('slack', 'Slack', permissions, dispatcher, logger);\n this.token = options.token;\n this.appToken = options.appToken;\n this.formatter = new SlackFormatter();\n this.maxLength = options.maxMessageLength ?? 2800;\n }\n\n async start(): Promise<void> {\n const app = new App({\n token: this.token,\n appToken: this.appToken,\n socketMode: true,\n });\n\n // ─── Message handler — slash-style commands in DMs / channels ──────────\n app.message(async ({ message, say }) => {\n // message can be a subtype; we only handle plain messages with text\n if (message.subtype !== undefined) return;\n const plainMsg = message as { text?: string; user?: string; ts: string; channel: string };\n if (!plainMsg.text || !plainMsg.user) return;\n\n const incomingMsg: IncomingMessage = {\n id: plainMsg.ts,\n userId: plainMsg.user,\n channelId: plainMsg.channel,\n text: plainMsg.text,\n timestamp: new Date(),\n attachments: [],\n };\n\n for (const h of this.messageHandlers) await h(incomingMsg);\n\n await this.processMessageWithSay(incomingMsg, async (text) => {\n await say(text);\n });\n });\n\n // ─── Assistant integration ─────────────────────────────────────────────\n const assistant = new Assistant({\n threadStarted: async ({ say, setTitle, setSuggestedPrompts }) => {\n await setTitle('CMDOP Assistant');\n await setSuggestedPrompts({\n prompts: [\n { title: 'Run a command', message: '/exec ls -la' },\n { title: 'List files', message: '/files /' },\n { title: 'Get help', message: '/help' },\n ],\n });\n await say('Hello! Use `/exec`, `/agent`, `/files`, or `/help`.');\n },\n\n threadContextChanged: async ({ saveThreadContext }) => {\n await saveThreadContext();\n },\n\n userMessage: async ({ message, say }) => {\n const plainMsg = message as { text?: string; user?: string; ts: string; channel: string; thread_ts?: string };\n if (!plainMsg.text || !plainMsg.user) return;\n\n const incomingMsg: IncomingMessage = {\n id: plainMsg.ts,\n userId: plainMsg.user,\n channelId: plainMsg.channel,\n text: plainMsg.text,\n timestamp: new Date(),\n attachments: [],\n };\n\n await this.processMessageWithSay(incomingMsg, async (text) => {\n await say(text);\n });\n },\n });\n\n app.assistant(assistant);\n\n // ─── Global error handler ──────────────────────────────────────────────\n app.error(async (err) => {\n this.logger.error('Slack app error', {\n channel: this.id,\n err: err.message,\n code: (err as { code?: string }).code,\n });\n });\n\n this.app = app;\n\n // start() returns when Socket Mode connection is established\n await app.start();\n this.logEvent('started (socket mode)');\n }\n\n async stop(): Promise<void> {\n if (this.app) {\n await this.app.stop();\n this.app = null;\n }\n this.messageHandlers = [];\n this.logEvent('stopped');\n }\n\n async send(userId: string, message: OutgoingMessage): Promise<void> {\n if (!this.app) throw new SlackError('App not started');\n\n try {\n const text = this.buildText(message);\n await this.app.client.chat.postMessage({\n channel: userId,\n text: this.truncate(text),\n });\n } catch (err) {\n throw new SlackError(\n `Failed to send DM to ${userId}`,\n err instanceof Error ? err : undefined,\n );\n }\n }\n\n onMessage(handler: (msg: IncomingMessage) => Promise<void>): void {\n this.messageHandlers.push(handler);\n }\n\n // ─── Helpers ──────────────────────────────────────────────────────────────\n\n private async processMessageWithSay(\n msg: IncomingMessage,\n say: (text: string) => Promise<void>,\n ): Promise<void> {\n const { parseCommand } = await import('../../models/command.js');\n const parsed = parseCommand(msg.text);\n if (!parsed) return;\n\n const ctx = {\n userId: msg.userId,\n command: parsed.name,\n args: parsed.args,\n channelId: msg.channelId,\n message: msg,\n } as const;\n\n try {\n const result = await this.dispatcher.dispatch(ctx);\n\n if (result.ok) {\n await say(this.truncate(this.buildText(result.value)));\n } else {\n await say(this.formatter.formatError(result.error));\n }\n } catch (err) {\n this.logger.error('Slack message processing error', {\n userId: msg.userId,\n err: err instanceof Error ? err.message : String(err),\n });\n await say(':x: Something went wrong. Please try again.');\n }\n }\n\n private buildText(message: OutgoingMessage): string {\n switch (message.type) {\n case 'text':\n return this.formatter.formatText(message.text);\n case 'code':\n return this.formatter.formatCode(message.code, message.language);\n case 'error':\n return `:x: ${message.message}`;\n }\n }\n\n private truncate(text: string): string {\n if (text.length <= this.maxLength) return text;\n return text.slice(0, this.maxLength - 20) + '\\n…(truncated)';\n }\n}\n","import { CommandNotFoundError } from '../errors.js';\nimport type { HandlerProtocol, HandlerResult, LoggerProtocol } from './types.js';\nimport type { CommandContext, CommandInfo } from '../models/command.js';\nimport type { PermissionLevel } from '../models/user.js';\nimport type { PermissionManager } from './permission-manager.js';\nimport { PERMISSION_ORDER } from '../models/user.js';\n\nexport class MessageDispatcher {\n private readonly handlers = new Map<string, HandlerProtocol>();\n\n constructor(\n private readonly permissions: PermissionManager,\n private readonly logger: LoggerProtocol,\n ) {}\n\n register(handler: HandlerProtocol): void {\n this.handlers.set(handler.name, handler);\n }\n\n async dispatch(ctx: CommandContext): Promise<HandlerResult> {\n const handler = this.handlers.get(ctx.command);\n if (!handler) {\n return { ok: false, error: new CommandNotFoundError(ctx.command) };\n }\n\n // Permission check\n await this.permissions.checkPermission(ctx.userId, handler.requiredPermission);\n\n const start = Date.now();\n try {\n const result = await handler.handle(ctx);\n this.logger.debug('Handler completed', {\n command: ctx.command,\n durationMs: Date.now() - start,\n ok: result.ok,\n });\n return result;\n } catch (err) {\n this.logger.error('Handler threw', {\n command: ctx.command,\n durationMs: Date.now() - start,\n err: err instanceof Error ? err.message : String(err),\n });\n throw err;\n }\n }\n\n getCommandList(minPermission: PermissionLevel = 'NONE'): CommandInfo[] {\n const minOrder = PERMISSION_ORDER[minPermission];\n return [...this.handlers.values()]\n .filter((h) => PERMISSION_ORDER[h.requiredPermission] <= minOrder + 4) // show all accessible+next\n .map((h) => ({\n name: h.name,\n description: h.description,\n usage: h.usage,\n requiredPermission: h.requiredPermission,\n }));\n }\n\n hasCommand(name: string): boolean {\n return this.handlers.has(name);\n }\n}\n","import { z } from 'zod/v4';\n\nexport const PermissionLevelSchema = z.enum(['NONE', 'READ', 'EXECUTE', 'FILES', 'ADMIN']);\nexport type PermissionLevel = z.infer<typeof PermissionLevelSchema>;\n\nexport const PERMISSION_ORDER: Record<PermissionLevel, number> = {\n NONE: 0,\n READ: 1,\n EXECUTE: 2,\n FILES: 3,\n ADMIN: 4,\n};\n\nexport const UserIdentitySchema = z.object({\n platform: z.string().min(1),\n platformId: z.string().min(1),\n username: z.string().optional(),\n displayName: z.string().optional(),\n});\nexport type UserIdentity = z.infer<typeof UserIdentitySchema>;\n\nexport const BotUserSchema = z.object({\n id: z.string().min(1),\n identity: UserIdentitySchema,\n permission: PermissionLevelSchema,\n createdAt: z.coerce.date(),\n lastSeenAt: z.coerce.date(),\n});\nexport type BotUser = z.infer<typeof BotUserSchema>;\n","import { PermissionDeniedError } from '../errors.js';\nimport type { PermissionLevel, PermissionStoreProtocol } from './types.js';\nimport { PERMISSION_ORDER } from '../models/user.js';\n\n// ─────────────────────────────────────────────────────────────────────────────\n// In-memory store (default, no persistence)\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport class InMemoryPermissionStore implements PermissionStoreProtocol {\n private readonly store = new Map<string, PermissionLevel>();\n\n constructor(seed: Record<string, PermissionLevel> = {}) {\n for (const [id, level] of Object.entries(seed)) {\n this.store.set(id, level);\n }\n }\n\n async getLevel(userId: string): Promise<PermissionLevel> {\n return this.store.get(userId) ?? 'NONE';\n }\n\n async setLevel(userId: string, level: PermissionLevel): Promise<void> {\n this.store.set(userId, level);\n }\n\n async deleteUser(userId: string): Promise<void> {\n this.store.delete(userId);\n }\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Cross-channel identity map\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Maps platform-scoped user IDs to a single canonical user ID.\n *\n * Platform IDs are namespaced as `\"<channel>:<userId>\"` (e.g. `\"telegram:12345\"`).\n * When a user is linked, all their platform IDs resolve to the same canonical ID,\n * so a permission granted on Telegram automatically applies on Discord and Slack.\n *\n * Example:\n * map.link('telegram:12345', 'discord:67890');\n * map.resolve('discord:67890') // → 'telegram:12345' (canonical = first linked)\n */\nexport class IdentityMap {\n // Maps any platform ID → canonical ID\n private readonly links = new Map<string, string>();\n\n /**\n * Build a namespaced platform ID.\n */\n static platformId(channel: string, userId: string): string {\n return `${channel}:${userId}`;\n }\n\n /**\n * Link two platform IDs together.\n * The first ID becomes (or joins) the canonical identity for the group.\n * Both IDs resolve to the same canonical ID after linking.\n */\n link(idA: string, idB: string): void {\n const canonA = this.resolve(idA);\n const canonB = this.resolve(idB);\n if (canonA === canonB) return; // already the same identity\n\n // Merge B's group into A's canonical\n for (const [key, val] of this.links.entries()) {\n if (val === canonB) this.links.set(key, canonA);\n }\n this.links.set(idB, canonA);\n if (!this.links.has(idA)) this.links.set(idA, canonA);\n }\n\n /**\n * Resolve a platform ID to its canonical ID.\n * Returns the original ID if no link exists (it is its own canonical).\n */\n resolve(id: string): string {\n return this.links.get(id) ?? id;\n }\n\n /**\n * Remove all links for a given platform ID.\n * The canonical group still exists — only this ID is unlinked.\n */\n unlink(id: string): void {\n this.links.delete(id);\n }\n\n /**\n * True if the two IDs resolve to the same canonical identity.\n */\n areSameIdentity(idA: string, idB: string): boolean {\n return this.resolve(idA) === this.resolve(idB);\n }\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Manager\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport interface PermissionManagerOptions {\n adminUsers?: string[];\n defaultLevel?: PermissionLevel;\n /** Cross-channel identity map. Shared across all channels in an IntegrationHub. */\n identityMap?: IdentityMap;\n}\n\nexport class PermissionManager {\n private readonly adminSet: Set<string>;\n private readonly defaultLevel: PermissionLevel;\n private readonly identityMap: IdentityMap;\n\n constructor(\n private readonly store: PermissionStoreProtocol,\n options: PermissionManagerOptions = {},\n ) {\n this.adminSet = new Set(options.adminUsers ?? []);\n this.defaultLevel = options.defaultLevel ?? 'NONE';\n this.identityMap = options.identityMap ?? new IdentityMap();\n }\n\n /**\n * Get the effective permission level for a user.\n * Resolves cross-channel identity before looking up the store.\n */\n async getLevel(userId: string): Promise<PermissionLevel> {\n const canonical = this.identityMap.resolve(userId);\n if (this.adminSet.has(canonical) || this.adminSet.has(userId)) return 'ADMIN';\n const stored = await this.store.getLevel(canonical);\n if (stored !== 'NONE') return stored;\n return this.defaultLevel;\n }\n\n async setLevel(userId: string, level: PermissionLevel): Promise<void> {\n // Always store under the canonical ID so all linked IDs share the level\n const canonical = this.identityMap.resolve(userId);\n await this.store.setLevel(canonical, level);\n }\n\n async deleteUser(userId: string): Promise<void> {\n const canonical = this.identityMap.resolve(userId);\n await this.store.deleteUser(canonical);\n }\n\n /**\n * Throws PermissionDeniedError if user doesn't have required level.\n */\n async checkPermission(userId: string, required: PermissionLevel): Promise<void> {\n const actual = await this.getLevel(userId);\n if (PERMISSION_ORDER[actual] < PERMISSION_ORDER[required]) {\n throw new PermissionDeniedError(userId, required);\n }\n }\n\n async hasPermission(userId: string, required: PermissionLevel): Promise<boolean> {\n const actual = await this.getLevel(userId);\n return PERMISSION_ORDER[actual] >= PERMISSION_ORDER[required];\n }\n\n /** Expose the identity map for cross-channel linking at the hub level. */\n get identity(): IdentityMap {\n return this.identityMap;\n }\n}\n","import type { LoggerProtocol } from './types.js';\n\ntype LogLevel = 'debug' | 'info' | 'warn' | 'error';\n\nconst LEVELS: Record<LogLevel, number> = { debug: 0, info: 1, warn: 2, error: 3 };\n\nexport function createLogger(level: LogLevel = 'info'): LoggerProtocol {\n const minLevel = LEVELS[level];\n\n function log(lvl: LogLevel, msg: string, meta: Record<string, unknown> = {}): void {\n if (LEVELS[lvl] < minLevel) return;\n const entry = { ts: new Date().toISOString(), level: lvl, msg, ...meta };\n process.stderr.write(JSON.stringify(entry) + '\\n');\n }\n\n return {\n debug: (msg, meta) => log('debug', msg, meta ?? {}),\n info: (msg, meta) => log('info', msg, meta ?? {}),\n warn: (msg, meta) => log('warn', msg, meta ?? {}),\n error: (msg, meta) => log('error', msg, meta ?? {}),\n };\n}\n","import type { CMDOPClient } from '@cmdop/node';\nimport type { HandlerProtocol, HandlerResult, LoggerProtocol } from './types.js';\nimport type { CommandContext } from '../models/command.js';\nimport type { PermissionLevel } from '../models/user.js';\n\nexport abstract class BaseHandler implements HandlerProtocol {\n abstract readonly name: string;\n abstract readonly description: string;\n abstract readonly usage: string;\n abstract readonly requiredPermission: PermissionLevel;\n\n protected constructor(\n protected readonly client: CMDOPClient,\n protected readonly logger: LoggerProtocol,\n ) {}\n\n abstract handle(ctx: CommandContext): Promise<HandlerResult>;\n}\n","import type { OutgoingMessage, IncomingMessage } from '../models/message.js';\nimport type { PermissionLevel } from '../models/user.js';\nimport type { CommandContext, CommandInfo } from '../models/command.js';\nimport type { BotError } from '../errors.js';\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Result\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport type HandlerResult =\n | { ok: true; value: OutgoingMessage }\n | { ok: false; error: BotError };\n\nexport function ok(value: OutgoingMessage): HandlerResult {\n return { ok: true, value };\n}\n\nexport function err(error: BotError): HandlerResult {\n return { ok: false, error };\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Protocols\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport interface ChannelProtocol {\n readonly id: string;\n readonly name: string;\n start(): Promise<void>;\n stop(): Promise<void>;\n send(userId: string, message: OutgoingMessage): Promise<void>;\n onMessage(handler: (msg: IncomingMessage) => Promise<void>): void;\n}\n\nexport interface HandlerProtocol {\n readonly name: string;\n readonly description: string;\n readonly usage: string;\n readonly requiredPermission: PermissionLevel;\n handle(ctx: CommandContext): Promise<HandlerResult>;\n}\n\nexport interface FormatterProtocol {\n formatText(text: string): string;\n formatCode(code: string, language?: string): string;\n formatError(error: BotError): string;\n}\n\nexport interface PermissionStoreProtocol {\n getLevel(userId: string): Promise<PermissionLevel>;\n setLevel(userId: string, level: PermissionLevel): Promise<void>;\n deleteUser(userId: string): Promise<void>;\n}\n\nexport interface LoggerProtocol {\n debug(msg: string, meta?: Record<string, unknown>): void;\n info(msg: string, meta?: Record<string, unknown>): void;\n warn(msg: string, meta?: Record<string, unknown>): void;\n error(msg: string, meta?: Record<string, unknown>): void;\n}\n\n// Re-export for convenience\nexport type { OutgoingMessage, IncomingMessage, PermissionLevel, CommandContext, CommandInfo };\n","import type { CMDOPClient } from '@cmdop/node';\nimport { BaseHandler } from '../core/base-handler.js';\nimport { ok, err } from '../core/types.js';\nimport type { HandlerResult, LoggerProtocol } from '../core/types.js';\nimport type { CommandContext } from '../models/command.js';\nimport { CommandArgsError, CMDOPError } from '../errors.js';\n\nconst MAX_OUTPUT = 4000;\nconst DEFAULT_TIMEOUT_MS = 30_000;\n\nexport interface TerminalHandlerConfig {\n maxOutputLength?: number;\n defaultTimeoutMs?: number;\n}\n\nexport class TerminalHandler extends BaseHandler {\n readonly name = 'exec';\n readonly description = 'Execute a shell command on the remote machine';\n readonly usage = '/exec <command>';\n readonly requiredPermission = 'EXECUTE' as const;\n\n private readonly maxOutput: number;\n private readonly timeoutMs: number;\n\n constructor(client: CMDOPClient, logger: LoggerProtocol, config: TerminalHandlerConfig = {}) {\n super(client, logger);\n this.maxOutput = config.maxOutputLength ?? MAX_OUTPUT;\n this.timeoutMs = config.defaultTimeoutMs ?? DEFAULT_TIMEOUT_MS;\n }\n\n async handle(ctx: CommandContext): Promise<HandlerResult> {\n const command = ctx.args.join(' ').trim();\n if (!command) {\n return err(new CommandArgsError('exec', 'A shell command is required. Example: /exec ls -la'));\n }\n\n try {\n // Route to machine if specified\n if (ctx.machine) {\n const active = await this.client.terminal.getActiveSession({ hostname: ctx.machine });\n if (!active) {\n return err(new CMDOPError(`No active session on machine '${ctx.machine}'`));\n }\n // Use sessionId option on execute\n const result = await this.client.terminal.execute(command, {\n sessionId: active.sessionId,\n timeoutMs: this.timeoutMs,\n });\n return this.formatResult(result.output, result.exitCode);\n }\n\n // Default: use currently tracked session\n const { sessions } = await this.client.terminal.list();\n if (sessions.length === 0) {\n return err(new CMDOPError('No active sessions. Start the CMDOP agent first.'));\n }\n\n const result = await this.client.terminal.execute(command, {\n sessionId: sessions[0]!.sessionId,\n timeoutMs: this.timeoutMs,\n });\n return this.formatResult(result.output, result.exitCode);\n } catch (e) {\n return err(new CMDOPError('Terminal execution failed', e instanceof Error ? e : undefined));\n }\n }\n\n private formatResult(output: string, exitCode: number): HandlerResult {\n const truncated = output.length > this.maxOutput\n ? output.slice(0, this.maxOutput) + '\\n...(truncated)'\n : output;\n\n const exitInfo = exitCode !== 0 ? ` (exit ${exitCode})` : '';\n const code = (truncated.trim() || `(no output)`) + (exitCode !== 0 ? exitInfo : '');\n\n return ok({ type: 'code', code, language: 'text' });\n }\n}\n","import type { CMDOPClient } from '@cmdop/node';\nimport { BaseHandler } from '../core/base-handler.js';\nimport { ok, err } from '../core/types.js';\nimport type { HandlerResult, LoggerProtocol } from '../core/types.js';\nimport type { CommandContext } from '../models/command.js';\nimport { CommandArgsError, CMDOPError } from '../errors.js';\n\nexport interface AgentHandlerConfig {\n timeoutSeconds?: number;\n maxOutputLength?: number;\n}\n\nexport class AgentHandler extends BaseHandler {\n readonly name = 'agent';\n readonly description = 'Run an AI agent prompt on the remote machine';\n readonly usage = '/agent <prompt>';\n readonly requiredPermission = 'EXECUTE' as const;\n\n private readonly timeout: number;\n private readonly maxOutput: number;\n\n constructor(client: CMDOPClient, logger: LoggerProtocol, config: AgentHandlerConfig = {}) {\n super(client, logger);\n this.timeout = config.timeoutSeconds ?? 60;\n this.maxOutput = config.maxOutputLength ?? 4000;\n }\n\n async handle(ctx: CommandContext): Promise<HandlerResult> {\n const prompt = ctx.args.join(' ').trim();\n if (!prompt) {\n return err(new CommandArgsError('agent', 'A prompt is required. Example: /agent list files in /tmp'));\n }\n\n try {\n if (ctx.machine) {\n await this.client.agent.setMachine(ctx.machine);\n }\n\n const result = await this.client.agent.run(prompt, {\n mode: 'chat',\n timeoutSeconds: this.timeout,\n });\n\n if (!result.success) {\n return err(new CMDOPError(result.error ?? 'Agent returned no result'));\n }\n\n const text = result.text.length > this.maxOutput\n ? result.text.slice(0, this.maxOutput) + '\\n...(truncated)'\n : result.text;\n\n return ok({ type: 'text', text });\n } catch (e) {\n return err(new CMDOPError('Agent execution failed', e instanceof Error ? e : undefined));\n }\n }\n}\n","import type { CMDOPClient } from '@cmdop/node';\nimport { BaseHandler } from '../core/base-handler.js';\nimport { ok, err } from '../core/types.js';\nimport type { HandlerResult, LoggerProtocol } from '../core/types.js';\nimport type { CommandContext } from '../models/command.js';\nimport { CommandArgsError, CMDOPError } from '../errors.js';\n\nexport interface FilesHandlerConfig {\n maxEntries?: number;\n maxFileSize?: number;\n}\n\nexport class FilesHandler extends BaseHandler {\n readonly name = 'files';\n readonly description = 'List files in a directory on the remote machine';\n readonly usage = '/files <path>';\n readonly requiredPermission = 'READ' as const;\n\n private readonly maxEntries: number;\n\n constructor(client: CMDOPClient, logger: LoggerProtocol, config: FilesHandlerConfig = {}) {\n super(client, logger);\n this.maxEntries = config.maxEntries ?? 50;\n }\n\n async handle(ctx: CommandContext): Promise<HandlerResult> {\n const subCommand = ctx.args[0] ?? 'list';\n const path = ctx.args[1] ?? ctx.args[0] ?? '/';\n\n // Detect if first arg looks like a path (not a subcommand)\n const isPathOnly = ctx.args.length === 1 && (path.startsWith('/') || path.startsWith('~') || path.startsWith('.'));\n\n if (isPathOnly || subCommand === 'list' || subCommand === 'ls') {\n return this.handleList(ctx, isPathOnly ? path : (ctx.args[1] ?? '/'));\n }\n\n if (subCommand === 'read' || subCommand === 'cat') {\n return this.handleRead(ctx, ctx.args[1] ?? '');\n }\n\n return err(new CommandArgsError('files', 'Usage: /files <path> | /files read <path>'));\n }\n\n private async handleList(ctx: CommandContext, path: string): Promise<HandlerResult> {\n if (!path) {\n return err(new CommandArgsError('files', 'Path required. Example: /files /tmp'));\n }\n try {\n if (ctx.machine) await this.client.files.setMachine(ctx.machine);\n const result = await this.client.files.list(path, { pageSize: this.maxEntries });\n if (result.entries.length === 0) {\n return ok({ type: 'text', text: `📂 \\`${path}\\` is empty` });\n }\n const lines = result.entries.map((e) => {\n const icon = e.type === 'directory' ? '📁' : '📄';\n const size = e.type === 'file' ? ` (${formatSize(e.size ?? 0)})` : '';\n return `${icon} ${e.name}${size}`;\n });\n const header = `📂 **${path}** — ${result.entries.length} entries`;\n const more = result.totalCount > result.entries.length\n ? `\\n_...and ${result.totalCount - result.entries.length} more_`\n : '';\n return ok({ type: 'text', text: `${header}\\n${lines.join('\\n')}${more}` });\n } catch (e) {\n return err(new CMDOPError(`Failed to list ${path}`, e instanceof Error ? e : undefined));\n }\n }\n\n private async handleRead(ctx: CommandContext, path: string): Promise<HandlerResult> {\n if (!path) {\n return err(new CommandArgsError('files', 'Path required. Example: /files read /etc/hostname'));\n }\n try {\n if (ctx.machine) await this.client.files.setMachine(ctx.machine);\n const result = await this.client.files.read(path);\n const content = result.content.slice(0, 3000);\n const truncated = result.content.length > 3000 ? '\\n...(truncated)' : '';\n return ok({ type: 'code', code: content + truncated });\n } catch (e) {\n return err(new CMDOPError(`Failed to read ${path}`, e instanceof Error ? e : undefined));\n }\n }\n}\n\nfunction formatSize(bytes: number): string {\n if (bytes < 1024) return `${bytes}B`;\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)}K`;\n return `${(bytes / (1024 * 1024)).toFixed(1)}M`;\n}\n","import type { CMDOPClient } from '@cmdop/node';\nimport { BaseHandler } from '../core/base-handler.js';\nimport { ok } from '../core/types.js';\nimport type { HandlerResult, LoggerProtocol } from '../core/types.js';\nimport type { CommandContext, CommandInfo } from '../models/command.js';\n\nexport interface HelpHandlerConfig {\n getCommands: () => CommandInfo[];\n}\n\nexport class HelpHandler extends BaseHandler {\n readonly name = 'help';\n readonly description = 'Show available commands and their usage';\n readonly usage = '/help';\n readonly requiredPermission = 'NONE' as const;\n\n constructor(\n client: CMDOPClient,\n logger: LoggerProtocol,\n private readonly config: HelpHandlerConfig,\n ) {\n super(client, logger);\n }\n\n async handle(_ctx: CommandContext): Promise<HandlerResult> {\n const commands = this.config.getCommands();\n\n const lines = commands.map((cmd) =>\n `**/${cmd.name}** — ${cmd.description}\\n _Usage:_ \\`${cmd.usage}\\` _Permission:_ ${cmd.requiredPermission}`,\n );\n\n const text = `**CMDOP Bot Commands**\\n\\n${lines.join('\\n\\n')}`;\n return ok({ type: 'text', text });\n }\n}\n","import { z } from 'zod/v4';\nimport { ConfigError } from './errors.js';\n\nexport const BotSettingsSchema = z.object({\n logLevel: z.enum(['debug', 'info', 'warn', 'error']).default('info'),\n allowedUsers: z.array(z.string()).default([]),\n maxOutputLength: z.number().int().positive().default(4000),\n debounceMs: z.number().int().min(100).max(5000).default(500),\n defaultMachine: z.string().optional(),\n});\nexport type BotSettings = z.infer<typeof BotSettingsSchema>;\n\nexport function loadSettings(env: NodeJS.ProcessEnv = process.env): BotSettings {\n const raw = {\n logLevel: env['BOT_LOG_LEVEL'],\n allowedUsers: env['BOT_ALLOWED_USERS']?.split(',').map((s) => s.trim()).filter(Boolean),\n maxOutputLength: env['BOT_MAX_OUTPUT'] ? Number(env['BOT_MAX_OUTPUT']) : undefined,\n debounceMs: env['BOT_DEBOUNCE_MS'] ? Number(env['BOT_DEBOUNCE_MS']) : undefined,\n defaultMachine: env['CMDOP_MACHINE'],\n };\n\n const result = BotSettingsSchema.safeParse(raw);\n if (!result.success) {\n throw new ConfigError(`Invalid bot configuration: ${result.error.message}`);\n }\n return result.data;\n}\n","import { CMDOPClient } from '@cmdop/node';\nimport { MessageDispatcher } from './core/dispatcher.js';\nimport { PermissionManager, InMemoryPermissionStore, IdentityMap } from './core/permission-manager.js';\nimport { createLogger } from './core/logger.js';\nimport { TerminalHandler } from './handlers/terminal.js';\nimport { AgentHandler } from './handlers/agent.js';\nimport { FilesHandler } from './handlers/files.js';\nimport { HelpHandler } from './handlers/help.js';\nimport type { ChannelProtocol, HandlerProtocol, LoggerProtocol, PermissionStoreProtocol } from './core/types.js';\nimport type { BotSettings } from './config.js';\nimport { loadSettings } from './config.js';\n\n// Lazy channel imports — only imported when actually used, keeping platform deps optional\ntype TelegramChannelCtor = typeof import('./channels/telegram/channel.js').TelegramChannel;\ntype TelegramOptions = import('./channels/telegram/channel.js').TelegramChannelOptions;\n\ntype DiscordChannelCtor = typeof import('./channels/discord/channel.js').DiscordChannel;\ntype DiscordOptions = import('./channels/discord/channel.js').DiscordChannelOptions;\n\ntype SlackChannelCtor = typeof import('./channels/slack/channel.js').SlackChannel;\ntype SlackOptions = import('./channels/slack/channel.js').SlackChannelOptions;\n\nexport interface HubOptions {\n /** CMDOP cloud API key. If omitted, uses local IPC connection. */\n apiKey?: string;\n /** Connect to local IPC agent instead of cloud. Default: false unless apiKey is absent. */\n local?: boolean;\n /** Default machine hostname for all operations. */\n defaultMachine?: string;\n /** Permission store for user levels. Default: in-memory. */\n permissionStore?: PermissionStoreProtocol;\n /** Admin user IDs (always have ADMIN permission). */\n adminUsers?: string[];\n /** Logger instance. Default: stderr JSON logger at info level. */\n logger?: LoggerProtocol;\n /** Bot settings. Default: loaded from environment variables. */\n settings?: Partial<BotSettings>;\n /**\n * Whether a channel start() failure should be treated as fatal (throws) or\n * isolated (logs error and continues with remaining channels).\n * Default: 'isolated'\n */\n channelStartMode?: 'strict' | 'isolated';\n}\n\n/** Per-channel runtime status */\nexport type ChannelStatus = 'pending' | 'running' | 'failed' | 'stopped';\n\nexport class IntegrationHub {\n private readonly channels = new Map<string, ChannelProtocol>();\n private readonly channelStatus = new Map<string, ChannelStatus>();\n private readonly _dispatcher: MessageDispatcher;\n private readonly _permissions: PermissionManager;\n private readonly channelStartMode: 'strict' | 'isolated';\n private started = false;\n\n private constructor(\n private readonly _client: CMDOPClient,\n private readonly _logger: LoggerProtocol,\n private readonly _settings: BotSettings,\n permissions: PermissionManager,\n dispatcher: MessageDispatcher,\n channelStartMode: 'strict' | 'isolated',\n ) {\n this._permissions = permissions;\n this._dispatcher = dispatcher;\n this.channelStartMode = channelStartMode;\n }\n\n /**\n * Create and configure an IntegrationHub.\n * Registers default handlers: exec, agent, files, help.\n */\n static async create(options: HubOptions = {}): Promise<IntegrationHub> {\n const settings = loadSettings();\n Object.assign(settings, options.settings ?? {});\n if (options.defaultMachine) settings.defaultMachine = options.defaultMachine;\n\n const logger = options.logger ?? createLogger(settings.logLevel);\n\n const client = options.apiKey\n ? await CMDOPClient.remote(options.apiKey)\n : await CMDOPClient.local();\n\n const store = options.permissionStore ?? new InMemoryPermissionStore();\n const identityMap = new IdentityMap();\n const permissions = new PermissionManager(store, {\n adminUsers: [...(options.adminUsers ?? []), ...settings.allowedUsers],\n identityMap,\n });\n\n const dispatcher = new MessageDispatcher(permissions, logger);\n const mode = options.channelStartMode ?? 'isolated';\n\n const hub = new IntegrationHub(client, logger, settings, permissions, dispatcher, mode);\n\n // Register default handlers\n hub.registerHandler(new TerminalHandler(client, logger, { maxOutputLength: settings.maxOutputLength }));\n hub.registerHandler(new AgentHandler(client, logger, { maxOutputLength: settings.maxOutputLength }));\n hub.registerHandler(new FilesHandler(client, logger));\n hub.registerHandler(new HelpHandler(client, logger, {\n getCommands: () => dispatcher.getCommandList(),\n }));\n\n return hub;\n }\n\n // ─── Channel registration ─────────────────────────────────────────────────\n\n registerChannel(channel: ChannelProtocol): this {\n this.channels.set(channel.id, channel);\n this.channelStatus.set(channel.id, 'pending');\n return this;\n }\n\n /**\n * Convenience: create and register a TelegramChannel without importing it manually.\n * Requires `grammy` to be installed.\n */\n async addTelegram(options: TelegramOptions): Promise<this> {\n const { TelegramChannel } = await import('./channels/telegram/channel.js') as { TelegramChannel: TelegramChannelCtor };\n const channel = new TelegramChannel(options, this._permissions, this._dispatcher, this._logger);\n return this.registerChannel(channel);\n }\n\n /**\n * Convenience: create and register a DiscordChannel without importing it manually.\n * Requires `discord.js`, `@discordjs/rest`, and `@discordjs/builders` to be installed.\n */\n async addDiscord(options: DiscordOptions): Promise<this> {\n const { DiscordChannel } = await import('./channels/discord/channel.js') as { DiscordChannel: DiscordChannelCtor };\n const channel = new DiscordChannel(options, this._permissions, this._dispatcher, this._logger);\n return this.registerChannel(channel);\n }\n\n /**\n * Convenience: create and register a SlackChannel without importing it manually.\n * Requires `@slack/bolt` and `@slack/web-api` to be installed.\n */\n async addSlack(options: SlackOptions): Promise<this> {\n const { SlackChannel } = await import('./channels/slack/channel.js') as { SlackChannel: SlackChannelCtor };\n const channel = new SlackChannel(options, this._permissions, this._dispatcher, this._logger);\n return this.registerChannel(channel);\n }\n\n registerHandler(handler: HandlerProtocol): this {\n this._dispatcher.register(handler);\n return this;\n }\n\n // ─── Lifecycle ────────────────────────────────────────────────────────────\n\n async start(): Promise<void> {\n if (this.started) return;\n this.started = true;\n\n if (this.channelStartMode === 'strict') {\n // All channels must start — any failure is fatal\n await Promise.all([...this.channels.values()].map(async (ch) => {\n await ch.start();\n this.channelStatus.set(ch.id, 'running');\n }));\n } else {\n // Isolated mode — a failing channel is logged but does not prevent others\n await Promise.allSettled([...this.channels.values()].map(async (ch) => {\n try {\n await ch.start();\n this.channelStatus.set(ch.id, 'running');\n } catch (err) {\n this.channelStatus.set(ch.id, 'failed');\n this._logger.error('Channel failed to start', {\n channel: ch.id,\n err: err instanceof Error ? err.message : String(err),\n });\n }\n }));\n }\n\n this._logger.info('IntegrationHub started', {\n channels: [...this.channels.keys()],\n running: this.runningChannelIds,\n failed: this.failedChannelIds,\n });\n }\n\n async stop(): Promise<void> {\n this.started = false;\n const results = await Promise.allSettled(\n [...this.channels.values()].map(async (ch) => {\n await ch.stop();\n this.channelStatus.set(ch.id, 'stopped');\n }),\n );\n for (const r of results) {\n if (r.status === 'rejected') {\n this._logger.error('Channel stop error', { reason: String(r.reason) });\n }\n }\n await this._client.close();\n this._logger.info('IntegrationHub stopped');\n }\n\n // ─── Identity linking ─────────────────────────────────────────────────────\n\n /**\n * Link two platform-scoped user IDs to share the same permission identity.\n *\n * Example — a user's Telegram ID and Discord ID map to the same permissions:\n * hub.linkIdentities('telegram', '12345', 'discord', '67890');\n *\n * After linking, granting EXECUTE to the Telegram user also grants it to the\n * Discord user (and vice versa), because both resolve to the same canonical ID.\n */\n linkIdentities(\n channelA: string, userIdA: string,\n channelB: string, userIdB: string,\n ): void {\n const pidA = IdentityMap.platformId(channelA, userIdA);\n const pidB = IdentityMap.platformId(channelB, userIdB);\n this._permissions.identity.link(pidA, pidB);\n }\n\n // ─── Introspection ────────────────────────────────────────────────────────\n\n /** Get a registered channel by its ID, or undefined if not found. */\n getChannel(id: string): ChannelProtocol | undefined {\n return this.channels.get(id);\n }\n\n /** IDs of all registered channels. */\n get channelIds(): string[] {\n return [...this.channels.keys()];\n }\n\n /** Total number of registered channels. */\n get channelCount(): number {\n return this.channels.size;\n }\n\n /** IDs of channels that started successfully. */\n get runningChannelIds(): string[] {\n return [...this.channelStatus.entries()]\n .filter(([, s]) => s === 'running')\n .map(([id]) => id);\n }\n\n /** IDs of channels that failed to start. */\n get failedChannelIds(): string[] {\n return [...this.channelStatus.entries()]\n .filter(([, s]) => s === 'failed')\n .map(([id]) => id);\n }\n\n /** Runtime status of a specific channel. */\n getChannelStatus(id: string): ChannelStatus | undefined {\n return this.channelStatus.get(id);\n }\n\n /** Read-only access to the CMDOP client (for advanced usage in handlers). */\n get cmdop(): CMDOPClient {\n return this._client;\n }\n\n get settings(): BotSettings {\n return this._settings;\n }\n\n get isStarted(): boolean {\n return this.started;\n }\n\n /** Read-only access to the permission manager (for programmatic grants). */\n get permissions(): PermissionManager {\n return this._permissions;\n }\n}\n","/**\n * @cmdop/bot\n * Multi-channel bot integrations for CMDOP remote machine management.\n */\n\n// ─── Hub ────────────────────────────────────────────────────────────────────\nexport { IntegrationHub } from './hub.js';\nexport type { HubOptions, ChannelStatus } from './hub.js';\n\n// ─── Core ───────────────────────────────────────────────────────────────────\nexport { BaseChannel } from './core/base-channel.js';\nexport { BaseHandler } from './core/base-handler.js';\nexport { MessageDispatcher } from './core/dispatcher.js';\nexport { PermissionManager, InMemoryPermissionStore, IdentityMap } from './core/permission-manager.js';\nexport { createLogger } from './core/logger.js';\nexport { ok, err } from './core/types.js';\nexport type {\n ChannelProtocol,\n HandlerProtocol,\n FormatterProtocol,\n PermissionStoreProtocol,\n LoggerProtocol,\n HandlerResult,\n} from './core/types.js';\n\n// ─── Models ─────────────────────────────────────────────────────────────────\nexport * from './models/index.js';\n\n// ─── Errors ─────────────────────────────────────────────────────────────────\nexport {\n BotError,\n PermissionDeniedError,\n RateLimitError,\n HandlerError,\n CommandNotFoundError,\n CommandArgsError,\n ExecutionTimeoutError,\n CMDOPError,\n MachineNotFoundError,\n MachineOfflineError,\n CMDOPTimeoutError,\n ChannelError,\n TelegramError,\n DiscordError,\n SlackError,\n TeamsError,\n ConfigError,\n} from './errors.js';\n\n// ─── Streaming ──────────────────────────────────────────────────────────────\nexport { TokenBuffer, SlackStream } from './streaming/index.js';\n\n// ─── Handlers ───────────────────────────────────────────────────────────────\nexport { TerminalHandler, AgentHandler, FilesHandler, HelpHandler } from './handlers/index.js';\nexport type {\n TerminalHandlerConfig,\n AgentHandlerConfig,\n FilesHandlerConfig,\n HelpHandlerConfig,\n} from './handlers/index.js';\n\n// ─── Channels ───────────────────────────────────────────────────────────────\nexport { DemoChannel } from './channels/demo/index.js';\nexport type { DemoChannelOptions } from './channels/demo/index.js';\n\nexport { TelegramChannel, TelegramFormatter, buildInlineKeyboard, buildMachineKeyboard } from './channels/telegram/index.js';\nexport type { TelegramChannelOptions, KeyboardAction } from './channels/telegram/index.js';\n\nexport { DiscordChannel, DiscordFormatter, DISCORD_COMMANDS, DISCORD_COMMAND_NAMES } from './channels/discord/index.js';\nexport type { DiscordChannelOptions } from './channels/discord/index.js';\n\nexport {\n SlackChannel,\n SlackFormatter,\n SLACK_MAX_TEXT_LENGTH,\n sectionBlock,\n headerBlock,\n dividerBlock,\n contextBlock,\n fileListBlocks,\n machineStatusBlocks,\n errorBlocks,\n} from './channels/slack/index.js';\nexport type { SlackChannelOptions, SlackBlock, FileEntry, MachineStatus } from './channels/slack/index.js';\n\n// ─── Config ─────────────────────────────────────────────────────────────────\nexport { loadSettings, BotSettingsSchema } from './config.js';\nexport type { BotSettings } from './config.js';\n","import { z } from 'zod/v4';\n\nexport const AttachmentSchema = z.object({\n type: z.enum(['photo', 'document', 'audio', 'video']),\n fileId: z.string().optional(),\n url: z.string().optional(),\n mimeType: z.string().optional(),\n size: z.number().int().nonnegative().optional(),\n});\nexport type Attachment = z.infer<typeof AttachmentSchema>;\n\nexport const IncomingMessageSchema = z.object({\n id: z.string(),\n userId: z.string(),\n channelId: z.string(),\n text: z.string(),\n timestamp: z.coerce.date(),\n attachments: z.array(AttachmentSchema).default([]),\n replyToId: z.string().optional(),\n threadId: z.string().optional(),\n raw: z.unknown().optional(),\n});\nexport type IncomingMessage = z.infer<typeof IncomingMessageSchema>;\n\nexport const TextMessageSchema = z.object({\n type: z.literal('text'),\n text: z.string(),\n});\nexport type TextMessage = z.infer<typeof TextMessageSchema>;\n\nexport const CodeMessageSchema = z.object({\n type: z.literal('code'),\n code: z.string(),\n language: z.string().optional(),\n});\nexport type CodeMessage = z.infer<typeof CodeMessageSchema>;\n\nexport const ErrorMessageSchema = z.object({\n type: z.literal('error'),\n message: z.string(),\n hint: z.string().optional(),\n});\nexport type ErrorMessage = z.infer<typeof ErrorMessageSchema>;\n\nexport const OutgoingMessageSchema = z.discriminatedUnion('type', [\n TextMessageSchema,\n CodeMessageSchema,\n ErrorMessageSchema,\n]);\nexport type OutgoingMessage = z.infer<typeof OutgoingMessageSchema>;\n","export * from './message.js';\nexport * from './user.js';\nexport * from './command.js';\nexport * from './session.js';\n","import { z } from 'zod/v4';\n\nexport const UserSessionSchema = z.object({\n userId: z.string().min(1),\n currentMachine: z.string().optional(),\n lastCommand: z.string().optional(),\n updatedAt: z.coerce.date(),\n});\nexport type UserSession = z.infer<typeof UserSessionSchema>;\n\nexport const MachineSessionSchema = z.object({\n sessionId: z.string().min(1),\n hostname: z.string().optional(),\n status: z.enum(['online', 'offline', 'unknown']),\n connectedAt: z.coerce.date().optional(),\n});\nexport type MachineSession = z.infer<typeof MachineSessionSchema>;\n","/**\n * TokenBuffer — debounced flush for streaming tokens to rate-limited platforms.\n *\n * Telegram/Discord enforce ~1 message edit per second per chat.\n * Accumulate tokens and flush on a timer to avoid 429 errors.\n */\n\nexport class TokenBuffer {\n private buffer = '';\n private timer: ReturnType<typeof setTimeout> | null = null;\n private stopped = false;\n\n constructor(\n private readonly flush: (text: string) => Promise<void>,\n private readonly debounceMs: number = 500,\n ) {}\n\n /**\n * Append a token. Schedules a flush if not already scheduled.\n * No-op after drain() is called.\n */\n append(token: string): void {\n if (this.stopped) return;\n this.buffer += token;\n this.scheduleFlush();\n }\n\n private scheduleFlush(): void {\n if (this.timer !== null) return; // already scheduled\n this.timer = setTimeout(() => {\n this.timer = null;\n const text = this.buffer;\n this.buffer = '';\n if (text) {\n void this.flush(text).catch(() => {\n // Flush errors are intentionally swallowed here —\n // the caller should handle platform-level errors at a higher level.\n });\n }\n }, this.debounceMs);\n }\n\n /**\n * Cancel pending timer, flush remaining content immediately, stop accepting tokens.\n * Always call this after the stream ends.\n */\n async drain(): Promise<void> {\n this.stopped = true;\n if (this.timer !== null) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n if (this.buffer) {\n const text = this.buffer;\n this.buffer = '';\n await this.flush(text);\n }\n }\n\n get bufferedLength(): number {\n return this.buffer.length;\n }\n\n get isStopped(): boolean {\n return this.stopped;\n }\n}\n","import type { WebClient } from '@slack/web-api';\n\n/**\n * Slack native streaming via chat.startStream / appendStream / stopStream.\n *\n * Unlike Telegram/Discord (which need TokenBuffer debouncing), Slack provides\n * first-class streaming primitives — no debounce required.\n *\n * The streaming protocol uses the message `ts` (timestamp) as the handle:\n * 1. startStream() → returns { ts, channel }\n * 2. appendStream({ channel, ts, markdown_text })\n * 3. stopStream({ channel, ts })\n *\n * Usage:\n * const stream = await SlackStream.start(client, channel, threadTs);\n * await stream.append('token...');\n * await stream.finish();\n */\nexport class SlackStream {\n private stopped = false;\n\n private constructor(\n private readonly client: WebClient,\n private readonly channel: string,\n private readonly ts: string,\n ) {}\n\n /**\n * Start a new streaming message in the given channel/thread.\n */\n static async start(\n client: WebClient,\n channel: string,\n threadTs?: string,\n ): Promise<SlackStream> {\n const args: { channel: string; thread_ts?: string } = { channel };\n if (threadTs) args.thread_ts = threadTs;\n\n const res = await client.chat.startStream(args as Parameters<typeof client.chat.startStream>[0]);\n\n if (!res.ts) {\n throw new Error('Slack startStream did not return ts');\n }\n\n return new SlackStream(client, channel, res.ts);\n }\n\n /**\n * Append a token/chunk to the in-progress stream.\n * Silently ignores appends after finish().\n */\n async append(text: string): Promise<void> {\n if (this.stopped) return;\n await this.client.chat.appendStream({\n channel: this.channel,\n ts: this.ts,\n markdown_text: text,\n });\n }\n\n /**\n * Stop the stream and finalise the message.\n * Idempotent — safe to call multiple times.\n */\n async finish(): Promise<void> {\n if (this.stopped) return;\n this.stopped = true;\n await this.client.chat.stopStream({\n channel: this.channel,\n ts: this.ts,\n });\n }\n\n get isFinished(): boolean {\n return this.stopped;\n }\n\n /** The Slack message ts that identifies this stream. */\n get messageTs(): string {\n return this.ts;\n }\n}\n","import { BaseChannel } from '../../core/base-channel.js';\nimport type { OutgoingMessage, IncomingMessage } from '../../models/message.js';\nimport type { PermissionManager } from '../../core/permission-manager.js';\nimport type { MessageDispatcher } from '../../core/dispatcher.js';\nimport type { LoggerProtocol } from '../../core/types.js';\n\nexport interface DemoChannelOptions {\n /** Called for every outgoing message (default: JSON to stdout) */\n onOutput?: (text: string, message: OutgoingMessage) => void;\n}\n\n/**\n * DemoChannel — stdio-based channel for local testing and CLI usage.\n * No real platform; messages are injected programmatically via injectMessage().\n */\nexport class DemoChannel extends BaseChannel {\n private messageHandlers: Array<(msg: IncomingMessage) => Promise<void>> = [];\n private readonly onOutput: (text: string, message: OutgoingMessage) => void;\n\n constructor(\n permissions: PermissionManager,\n dispatcher: MessageDispatcher,\n logger: LoggerProtocol,\n options: DemoChannelOptions = {},\n ) {\n super('demo', 'Demo', permissions, dispatcher, logger);\n this.onOutput = options.onOutput ?? ((text) => process.stdout.write(text + '\\n'));\n }\n\n async start(): Promise<void> {\n this.logEvent('started');\n }\n\n async stop(): Promise<void> {\n this.messageHandlers = [];\n this.logEvent('stopped');\n }\n\n send(_userId: string, message: OutgoingMessage): Promise<void> {\n const text = formatOutgoing(message);\n this.onOutput(text, message);\n return Promise.resolve();\n }\n\n onMessage(handler: (msg: IncomingMessage) => Promise<void>): void {\n this.messageHandlers.push(handler);\n }\n\n /**\n * Inject a message as if it came from a real platform user.\n * Primarily used in tests and CLI demos.\n */\n async injectMessage(input: { userId?: string; text: string }): Promise<void> {\n const msg: IncomingMessage = {\n id: `demo-${Date.now()}`,\n userId: input.userId ?? 'demo-user',\n channelId: this.id,\n text: input.text,\n timestamp: new Date(),\n attachments: [],\n };\n\n // Call registered onMessage handlers (set by hub)\n for (const handler of this.messageHandlers) {\n await handler(msg);\n }\n // Also process through dispatcher directly\n await this.processMessage(msg);\n }\n}\n\nfunction formatOutgoing(message: OutgoingMessage): string {\n switch (message.type) {\n case 'text':\n return message.text;\n case 'code':\n return `\\`\\`\\`${message.language ?? ''}\\n${message.code}\\n\\`\\`\\``;\n case 'error':\n return `❌ ${message.message}${message.hint ? `\\n💡 ${message.hint}` : ''}`;\n }\n}\n","export { TelegramChannel } from './channel.js';\nexport type { TelegramChannelOptions } from './channel.js';\nexport { TelegramFormatter } from './formatter.js';\nexport { buildInlineKeyboard, buildMachineKeyboard } from './keyboard.js';\nexport type { KeyboardAction } from './keyboard.js';\n","import type { InlineKeyboardButton } from 'grammy/types';\n\nexport interface KeyboardAction {\n label: string;\n command: string;\n}\n\n/**\n * Build a simple inline keyboard row from command shortcuts.\n */\nexport function buildInlineKeyboard(actions: KeyboardAction[]): { inline_keyboard: InlineKeyboardButton[][] } {\n const row: InlineKeyboardButton[] = actions.map((a) => ({\n text: a.label,\n callback_data: a.command,\n }));\n return { inline_keyboard: [row] };\n}\n\n/**\n * Standard machine selection keyboard.\n */\nexport function buildMachineKeyboard(machines: string[]): { inline_keyboard: InlineKeyboardButton[][] } {\n const rows: InlineKeyboardButton[][] = [];\n // Two machines per row\n for (let i = 0; i < machines.length; i += 2) {\n const row: InlineKeyboardButton[] = [\n { text: `🖥 ${machines[i]!}`, callback_data: `/machine ${machines[i]!}` },\n ];\n if (machines[i + 1]) {\n row.push({ text: `🖥 ${machines[i + 1]!}`, callback_data: `/machine ${machines[i + 1]!}` });\n }\n rows.push(row);\n }\n return { inline_keyboard: rows };\n}\n","export { DiscordChannel } from './channel.js';\nexport type { DiscordChannelOptions } from './channel.js';\nexport { DiscordFormatter, DISCORD_MAX_MESSAGE_LENGTH } from './formatter.js';\nexport { DISCORD_COMMANDS, DISCORD_COMMAND_NAMES } from './commands.js';\n","export { SlackChannel } from './channel.js';\nexport type { SlackChannelOptions } from './channel.js';\nexport { SlackFormatter, SLACK_MAX_TEXT_LENGTH } from './formatter.js';\nexport {\n sectionBlock,\n headerBlock,\n dividerBlock,\n contextBlock,\n fileListBlocks,\n machineStatusBlocks,\n errorBlocks,\n} from './blocks.js';\nexport type { SlackBlock, FileEntry, MachineStatus } from './blocks.js';\n","/**\n * Slack Block Kit builders for structured CMDOP output.\n *\n * Blocks are the Slack equivalent of Discord embeds.\n * Used for file listings, machine tables, and error cards.\n *\n * Reference: https://api.slack.com/block-kit\n */\n\nexport interface SlackBlock {\n type: string;\n [key: string]: unknown;\n}\n\n// ─── Section block ────────────────────────────────────────────────────────────\n\nexport function sectionBlock(text: string): SlackBlock {\n return {\n type: 'section',\n text: { type: 'mrkdwn', text },\n };\n}\n\n// ─── Header block ─────────────────────────────────────────────────────────────\n\nexport function headerBlock(text: string): SlackBlock {\n return {\n type: 'header',\n text: { type: 'plain_text', text, emoji: true },\n };\n}\n\n// ─── Divider ──────────────────────────────────────────────────────────────────\n\nexport function dividerBlock(): SlackBlock {\n return { type: 'divider' };\n}\n\n// ─── Context block (small grey text) ─────────────────────────────────────────\n\nexport function contextBlock(text: string): SlackBlock {\n return {\n type: 'context',\n elements: [{ type: 'mrkdwn', text }],\n };\n}\n\n// ─── File listing block ───────────────────────────────────────────────────────\n\nexport interface FileEntry {\n name: string;\n isDir: boolean;\n size?: number;\n}\n\n/**\n * Build a Block Kit representation of a file listing.\n * Splits into chunks of up to `chunkSize` entries per section block\n * to respect Slack's 3000-char section limit.\n */\nexport function fileListBlocks(\n path: string,\n entries: FileEntry[],\n chunkSize = 30,\n): SlackBlock[] {\n const blocks: SlackBlock[] = [\n headerBlock(`:open_file_folder: ${path}`),\n ];\n\n if (entries.length === 0) {\n blocks.push(sectionBlock('_(empty directory)_'));\n return blocks;\n }\n\n for (let i = 0; i < entries.length; i += chunkSize) {\n const chunk = entries.slice(i, i + chunkSize);\n const lines = chunk.map((e) => {\n const icon = e.isDir ? ':file_folder:' : ':page_facing_up:';\n const size = e.size !== undefined && !e.isDir ? ` (${formatBytes(e.size)})` : '';\n return `${icon} \\`${e.name}\\`${size}`;\n });\n blocks.push(sectionBlock(lines.join('\\n')));\n }\n\n blocks.push(contextBlock(`${entries.length} item${entries.length === 1 ? '' : 's'}`));\n return blocks;\n}\n\n// ─── Machine status table ─────────────────────────────────────────────────────\n\nexport interface MachineStatus {\n hostname: string;\n online: boolean;\n label?: string;\n}\n\n/**\n * Build a Block Kit machine status table.\n */\nexport function machineStatusBlocks(machines: MachineStatus[]): SlackBlock[] {\n if (machines.length === 0) {\n return [sectionBlock('No machines configured.')];\n }\n\n const lines = machines.map((m) => {\n const status = m.online ? ':large_green_circle: online' : ':red_circle: offline';\n const label = m.label ? ` — ${m.label}` : '';\n return `*${m.hostname}*${label} ${status}`;\n });\n\n return [\n headerBlock(':computer: Machine Status'),\n sectionBlock(lines.join('\\n')),\n ];\n}\n\n// ─── Error card ───────────────────────────────────────────────────────────────\n\n/**\n * Build a Block Kit error card with context.\n */\nexport function errorBlocks(message: string, detail?: string): SlackBlock[] {\n const blocks: SlackBlock[] = [\n sectionBlock(`:x: *Error*\\n${message}`),\n ];\n if (detail) {\n blocks.push(contextBlock(detail));\n }\n return blocks;\n}\n\n// ─── Internal helpers ─────────────────────────────────────────────────────────\n\nfunction formatBytes(bytes: number): string {\n if (bytes < 1024) return `${bytes}B`;\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)}K`;\n return `${(bytes / (1024 * 1024)).toFixed(1)}M`;\n}\n"]}