{"version":3,"file":"index.mjs","names":["process","commitTypes","commitTypes","commitTypes","commit","list"],"sources":["../src/lib/index.ts","../src/utils/cancel-if.ts","../src/data/types.ts","../src/utils/find-by.ts","../src/utils/find-command.ts","../src/utils/format.ts","../src/utils/generate-log.ts","../src/utils/get-chars-left.ts","../src/utils/get-git-root-dir.ts","../src/utils/get-issue-tracker.ts","../src/utils/get-staged-files.ts","../src/utils/print-dry-run.ts","../src/utils/register-hook-interruption-handler.ts","../src/commands/commit/questions.ts","../src/commands/commit/with-client.ts","../src/commands/commit/with-hook.ts","../src/commands/commit/commit.ts","../src/commands/commit/index.ts","../src/commands/list/list.ts","../src/commands/list/index.ts","../src/index.ts"],"sourcesContent":["const COMMANDS = {\n  COMMIT: \"commit\",\n  HOOK: \"hook\",\n  LIST: \"list\",\n};\nconst COMMIT_FORMATS = {\n  CONVENTIONAL: \"conventional\",\n  CONVENTIONAL_NO_EMOJI: \"conventional-no-emoji\",\n  GITMOJI: \"gitmoji\",\n};\n\nconst COMMIT_MODES = {\n  CLIENT: \"client\",\n  HOOK: \"hook\",\n};\n\nconst FIND_BY = {\n  EMOJI: \"emoji\",\n  TYPE: \"type\",\n};\n\nconst FLAGS = Object.freeze({\n  BREAKING: \"breaking\",\n  COMMIT: \"commit\",\n  DRYRUN: \"dryrun\",\n  EMOJI: \"emoji\",\n  HELP: \"help\",\n  HOOK: \"hook\",\n  LIST: \"list\",\n  SKIP: \"skip\",\n  VERSION: \"version\",\n});\n\nconst FORMAT = {\n  [COMMIT_FORMATS.CONVENTIONAL]: \"{type}{scope}{breaking}: {emoji}{title}\",\n  [COMMIT_FORMATS.CONVENTIONAL_NO_EMOJI]: \"{type}{scope}{breaking}: {title}\",\n  [COMMIT_FORMATS.GITMOJI]: \"{emoji}{breaking}{scope}{title}\",\n};\n\nconst LOGS = {\n  MESSAGES: {\n    COMMAND_LINE_WITHOUT_REQUIRED: \"❯ Command line option requires both: --title, --type\",\n    COMMIT_FAIL: `❯ \\n\n      ❯ Oops! An error occurred. There is likely additional logging output above.\\n\n      ❯ You can run the same commit with this command:\\n\n      ❯ \\t\n      {REPLACE}\n    `,\n    GENERATOR_TAKING_OVER: \"❯ Generator will take it from here (CTRL+C to quit)\",\n    MODE_CONFLICT: \"❯ Please choose one or the other: --commit, -c | --hook, -u\",\n    REPLACE: \"{REPLACE}\",\n    STAGED_FILES: \"❯ There are no staged files for git. Did you mean to do a dry-run (-n)?\",\n    TYPE_INCORRECT: \"❯ There is no gitmoji/type associated with: {REPLACE}\",\n  },\n  TYPES: {\n    ERROR: \"error\",\n    INFO: \"info\",\n    SUCCESS: \"success\",\n    WARNING: \"warning\",\n  },\n};\n\nconst OPTIONS = Object.freeze({\n  FORMAT: \"format\",\n  MESSAGE: \"message\",\n  SCOPE: \"scope\",\n  TITLE: \"title\",\n  TYPE: \"type\",\n});\n\nconst SCOPE = {\n  MAX: 12,\n  MIN: 3,\n};\n\nconst SEMVER = {\n  MAJOR: \"major\",\n  MINOR: \"minor\",\n  NULL: \"null\",\n  PATCH: \"patch\",\n};\n\nconst TITLE = {\n  MAX: 48,\n  MAX_SWAG: 40,\n  MIN: 3,\n  MIN_SWAG: 15,\n};\n\nconst TYPE = {\n  MAX: 15,\n};\n\nexport {\n  COMMANDS,\n  COMMIT_FORMATS,\n  COMMIT_MODES,\n  FIND_BY,\n  FLAGS,\n  FORMAT,\n  LOGS,\n  OPTIONS,\n  SCOPE,\n  SEMVER,\n  TITLE,\n  TYPE,\n};\n","/*!\n * reference: https://github.com/carloscuesta/gitmoji-cli\n */\nimport fs from \"node:fs\";\nimport process from \"node:process\";\n\nimport { execa } from \"execa\";\n\nconst cancelIfRebasing = (): Promise<void> =>\n  execa(\"git\", [\"rev-parse\", \"--absolute-git-dir\"]).then(({ stdout: gitDirectory }) => {\n    // see https://stackoverflow.com/questions/3921409/how-to-know-if-there-is-a-git-rebase-in-progress\n    // to understand how a rebase is detected\n    if (\n      fs.existsSync(gitDirectory + \"/rebase-merge\") ||\n      fs.existsSync(gitDirectory + \"/rebase-apply\")\n    ) {\n      process.exit(0);\n    }\n  });\n\nconst COMMIT_MESSAGE_SOURCE = 4;\n\nconst cancelIfAmending = (): Promise<void> =>\n  new Promise<void>((resolve) => {\n    /*\n      from https://git-scm.com/docs/githooks#_prepare_commit_msg\n      the commit message source is passed as second argument and corresponding 4 for ccommit\n      `gitmoji --hook $1 $2`\n    */\n    const commitMessageSource: string = process.argv[COMMIT_MESSAGE_SOURCE];\n    if (\n      commitMessageSource &&\n      (commitMessageSource.startsWith(\"commit\") || commitMessageSource.startsWith(\"merge\"))\n    ) {\n      process.exit(0);\n    }\n    resolve();\n  });\n\n// I avoid Promise.all to avoid race condition in future cancel callbacks\nconst cancelIfNeeded = (): Promise<void> => cancelIfAmending().then(cancelIfRebasing);\n\nexport { COMMIT_MESSAGE_SOURCE, cancelIfAmending, cancelIfNeeded, cancelIfRebasing };\n","// @todo(ccommit) cache + generation from: @jeromefitz/conventional-gitmoji\nimport { SEMVER } from \"../lib/index.ts\";\n\n// @hack(ccommit) emojiLength is to help with formatting until can do it programmatically\nconst types = [\n  {\n    code: \":wheelchair:\",\n    description: \"Improve Accessibility\",\n    emoji: \"♿️\",\n    emojiLength: 1,\n    semver: SEMVER.PATCH,\n    type: \"access\",\n  },\n  {\n    code: \":chart_with_upwards_trend:\",\n    description: \"Add or Update Analytics or Track Code\",\n    emoji: \"📈\",\n    emojiLength: 1,\n    semver: SEMVER.PATCH,\n    type: \"analytics\",\n  },\n  {\n    code: \":dizzy:\",\n    description: \"Add or Update Animations and Transitions\",\n    emoji: \"💫\",\n    emojiLength: 1,\n    semver: SEMVER.PATCH,\n    type: \"animation\",\n  },\n  {\n    code: \":building_construction:\",\n    description: \"Make Architectural Changes\",\n    emoji: \"🏗️\",\n    emojiLength: 0,\n    semver: SEMVER.NULL,\n    type: \"arch\",\n  },\n  {\n    code: \":bento:\",\n    description: \"Add or Update Assets\",\n    emoji: \"🍱\",\n    emojiLength: 1,\n    semver: SEMVER.PATCH,\n    type: \"assets\",\n  },\n  {\n    code: \":t-rex:\",\n    description: \"Backwards Compatibility\",\n    emoji: \"🦖\",\n    emojiLength: 1,\n    semver: SEMVER.NULL,\n    type: \"backwards\",\n  },\n  {\n    code: \":beers:\",\n    description: \"Write Code Drunkenly\",\n    emoji: \"🍻\",\n    emojiLength: 1,\n    semver: SEMVER.NULL,\n    type: \"beer\",\n  },\n  {\n    code: \":boom:\",\n    description: \"Introduce Breaking Changes\",\n    emoji: \"💥\",\n    emojiLength: 1,\n    semver: SEMVER.MAJOR,\n    type: \"breaking\",\n  },\n  {\n    code: \":hammer:\",\n    description: \"Add or Update Development Scripts\",\n    emoji: \"🔨\",\n    emojiLength: 1,\n    semver: SEMVER.NULL,\n    type: \"build\",\n  },\n  {\n    code: \":goal_net:\",\n    description: \"Catch Errors\",\n    emoji: \"🥅\",\n    emojiLength: 1,\n    semver: SEMVER.PATCH,\n    type: \"catch\",\n  },\n  {\n    code: \":computer_disk:\",\n    description: \"Changes That Don’t Modify Src or Test Files\",\n    emoji: \"💽️\",\n    emojiLength: 1,\n    semver: SEMVER.NULL,\n    type: \"chore\",\n  },\n  {\n    code: \":construction_worker:\",\n    description: \"Add or Update CI Build System\",\n    emoji: \"👷\",\n    emojiLength: 1,\n    semver: SEMVER.NULL,\n    type: \"ci\",\n  },\n  {\n    code: \":wastebasket:\",\n    description: \"Deprecate Code That Needs to Be Cleaned Up\",\n    emoji: \"🗑️\",\n    emojiLength: 0,\n    semver: SEMVER.PATCH,\n    type: \"clean\",\n  },\n  {\n    code: \":alien:\",\n    description: \"Update Code Due to External API Changes\",\n    emoji: \"👽️\",\n    emojiLength: 1,\n    semver: SEMVER.PATCH,\n    type: \"compat\",\n  },\n  {\n    code: \":thread:\",\n    description: \"Add or Update Code Related to Multithreading or Concurrency\",\n    emoji: \"🧵\",\n    emojiLength: 1,\n    semver: SEMVER.NULL,\n    type: \"concurrency\",\n  },\n  {\n    code: \":wrench:\",\n    description: \"Add or Update Configuration Files\",\n    emoji: \"🔧\",\n    emojiLength: 1,\n    semver: SEMVER.PATCH,\n    type: \"config\",\n  },\n  {\n    code: \":busts_in_silhouette:\",\n    description: \"Add or Update Contributor(s)\",\n    emoji: \"👥\",\n    emojiLength: 1,\n    semver: SEMVER.NULL,\n    type: \"contrib-add\",\n  },\n  {\n    code: \":monocle_face:\",\n    description: \"Data Exploration/inspection\",\n    emoji: \"🧐\",\n    emojiLength: 1,\n    semver: SEMVER.NULL,\n    type: \"data\",\n  },\n  {\n    code: \":card_file_box:\",\n    description: \"Perform Database Related Changes\",\n    emoji: \"🗃️\",\n    emojiLength: 0,\n    semver: SEMVER.PATCH,\n    type: \"db\",\n  },\n  {\n    code: \":heavy_plus_sign:\",\n    description: \"Add a Dependency\",\n    emoji: \"➕\",\n    emojiLength: 1,\n    semver: SEMVER.PATCH,\n    type: \"dep-add\",\n  },\n  {\n    code: \":heavy_minus_sign:\",\n    description: \"Remove a Dependency\",\n    emoji: \"➖\",\n    emojiLength: 1,\n    semver: SEMVER.PATCH,\n    type: \"dep-rm\",\n  },\n  {\n    code: \":package:\",\n    description: \"Add or Update Compiled Files or Packages\",\n    emoji: \"📦️\",\n    emojiLength: 1,\n    semver: SEMVER.PATCH,\n    type: \"dep-up\",\n  },\n  {\n    code: \":rocket:\",\n    description: \"Deploy Stuff\",\n    emoji: \"🚀\",\n    emojiLength: 1,\n    semver: SEMVER.NULL,\n    type: \"deploy\",\n  },\n  {\n    code: \":bulb:\",\n    description: \"Add or Update Comments in Source Code\",\n    emoji: \"💡\",\n    emojiLength: 1,\n    semver: SEMVER.NULL,\n    type: \"docs-code\",\n  },\n  {\n    code: \":memo:\",\n    description: \"Add or Update Documentation\",\n    emoji: \"📝\",\n    emojiLength: 1,\n    semver: SEMVER.NULL,\n    type: \"docs\",\n  },\n  {\n    code: \":arrow_down:\",\n    description: \"Downgrade Dependencies\",\n    emoji: \"⬇️\",\n    emojiLength: 0,\n    semver: SEMVER.PATCH,\n    type: \"downgrade\",\n  },\n  {\n    code: \":technologist:\",\n    description: \"Improve Developer Experience\",\n    emoji: \"💻\",\n    emojiLength: 1,\n    semver: SEMVER.NULL,\n    type: \"dx\",\n  },\n  {\n    code: \":egg:\",\n    description: \"Add or Update an Easter Egg\",\n    emoji: \"🥚\",\n    emojiLength: 1,\n    semver: SEMVER.PATCH,\n    type: \"egg\",\n  },\n  {\n    code: \":alembic:\",\n    description: \"Perform Experiments\",\n    emoji: \"⚗️\",\n    emojiLength: 0,\n    semver: SEMVER.PATCH,\n    type: \"experiment\",\n  },\n  {\n    code: \":sparkles:\",\n    description: \"Introduce New Features\",\n    emoji: \"✨\",\n    emojiLength: 1,\n    semver: SEMVER.MINOR,\n    type: \"feat\",\n  },\n  {\n    code: \":bug:\",\n    description: \"Fix a Bug\",\n    emoji: \"🐛\",\n    emojiLength: 1,\n    semver: SEMVER.PATCH,\n    type: \"fix\",\n  },\n  {\n    code: \":green_heart:\",\n    description: \"Fix CI Build\",\n    emoji: \"💚\",\n    emojiLength: 1,\n    semver: SEMVER.NULL,\n    type: \"fix-ci\",\n  },\n  {\n    code: \":triangular_flag_on_post:\",\n    description: \"Add Update or Remove Feature Flags\",\n    emoji: \"🚩\",\n    emojiLength: 1,\n    semver: SEMVER.PATCH,\n    type: \"flags\",\n  },\n  {\n    code: \":stethoscope:\",\n    description: \"Add or Update Healthcheck\",\n    emoji: \"🩺\",\n    emojiLength: 1,\n    semver: SEMVER.NULL,\n    type: \"healthcheck\",\n  },\n  {\n    code: \":ambulance:\",\n    description: \"Critical Hotfix\",\n    emoji: \"🚑️\",\n    emojiLength: 1,\n    semver: SEMVER.PATCH,\n    type: \"hotfix\",\n  },\n  {\n    code: \":globe_with_meridians:\",\n    description: \"Internationalization and Localization\",\n    emoji: \"🌐\",\n    emojiLength: 1,\n    semver: SEMVER.PATCH,\n    type: \"i18n\",\n  },\n  {\n    code: \":see_no_evil:\",\n    description: \"Add or Update a Gitignore File.\",\n    emoji: \"🙈\",\n    emojiLength: 1,\n    semver: SEMVER.NULL,\n    type: \"ignore\",\n  },\n  {\n    code: \":bricks:\",\n    description: \"Infrastructure Related Changes\",\n    emoji: \"🧱\",\n    emojiLength: 1,\n    semver: SEMVER.NULL,\n    type: \"inf\",\n  },\n  {\n    code: \":tada:\",\n    description: \"Begin a Project\",\n    emoji: \"🎉\",\n    emojiLength: 1,\n    semver: SEMVER.PATCH,\n    type: \"init\",\n  },\n  {\n    code: \":iphone:\",\n    description: \"Work on Responsive Design\",\n    emoji: \"📱\",\n    emojiLength: 1,\n    semver: SEMVER.PATCH,\n    type: \"iphone\",\n  },\n  {\n    code: \":page_facing_up:\",\n    description: \"Add or Update License\",\n    emoji: \"📄\",\n    emojiLength: 1,\n    semver: SEMVER.NULL,\n    type: \"license\",\n  },\n  {\n    code: \":rotating_light:\",\n    description: \"Fix Compiler / Linter Warnings\",\n    emoji: \"🚨\",\n    emojiLength: 1,\n    semver: SEMVER.NULL,\n    type: \"lint\",\n  },\n  {\n    code: \":loud_sound:\",\n    description: \"Add or Update Logs\",\n    emoji: \"🔊\",\n    emojiLength: 1,\n    semver: SEMVER.NULL,\n    type: \"log-add\",\n  },\n  {\n    code: \":mute:\",\n    description: \"Remove Logs\",\n    emoji: \"🔇\",\n    emojiLength: 1,\n    semver: SEMVER.NULL,\n    type: \"log-rm\",\n  },\n  {\n    code: \":necktie:\",\n    description: \"Add or Update Business Logic\",\n    emoji: \"👔\",\n    emojiLength: 1,\n    semver: SEMVER.PATCH,\n    type: \"logic\",\n  },\n  {\n    code: \":twisted_rightwards_arrows:\",\n    description: \"Merge Branches\",\n    emoji: \"🔀\",\n    emojiLength: 1,\n    semver: SEMVER.NULL,\n    type: \"merge\",\n  },\n  {\n    code: \":clown_face:\",\n    description: \"Mock Things\",\n    emoji: \"🤡\",\n    emojiLength: 1,\n    semver: SEMVER.NULL,\n    type: \"mock\",\n  },\n  {\n    code: \":truck:\",\n    description: \"Move or Rename Resources (Eg.: Files Paths Routes).\",\n    emoji: \"🚚\",\n    emojiLength: 1,\n    semver: SEMVER.NULL,\n    type: \"mv\",\n  },\n  {\n    code: \":airplane:\",\n    description: \"Provide offline support\",\n    emoji: \"✈️\",\n    emojiLength: 1,\n    semver: SEMVER.PATCH,\n    type: \"offline\",\n  },\n  {\n    code: \":adhesive_bandage:\",\n    description: \"Simple Fix for a Non-Critical Issue\",\n    emoji: \"🩹\",\n    emojiLength: 1,\n    semver: SEMVER.PATCH,\n    type: \"patch\",\n  },\n  {\n    code: \":zap:\",\n    description: \"Improve Performance\",\n    emoji: \"⚡️\",\n    emojiLength: 1,\n    semver: SEMVER.PATCH,\n    type: \"perf\",\n  },\n  {\n    code: \":poop:\",\n    description: \"Write Bad Code That Needs to Be Improved\",\n    emoji: \"💩\",\n    emojiLength: 1,\n    semver: SEMVER.NULL,\n    type: \"poo\",\n  },\n  {\n    code: \":fire:\",\n    description: \"Remove Code or Files\",\n    emoji: \"🔥\",\n    emojiLength: 1,\n    semver: SEMVER.NULL,\n    type: \"prune\",\n  },\n  {\n    code: \":pushpin:\",\n    description: \"Pin Dependencies to Specific Versions\",\n    emoji: \"📌\",\n    emojiLength: 1,\n    semver: SEMVER.PATCH,\n    type: \"pushpin\",\n  },\n  {\n    code: \":recycle:\",\n    description: \"Refactor Code\",\n    emoji: \"♻️\",\n    emojiLength: 0,\n    semver: SEMVER.NULL,\n    type: \"refactor\",\n  },\n  {\n    code: \":bookmark:\",\n    description: \"Release / Version Tags\",\n    emoji: \"🔖\",\n    emojiLength: 1,\n    semver: SEMVER.NULL,\n    type: \"release\",\n  },\n  {\n    code: \":rewind:\",\n    description: \"Revert Changes\",\n    emoji: \"⏪️\",\n    emojiLength: 1,\n    semver: SEMVER.PATCH,\n    type: \"revert\",\n  },\n  {\n    code: \":coffin:\",\n    description: \"Remove Dead Code\",\n    emoji: \"⚰️\",\n    emojiLength: 0,\n    semver: SEMVER.NULL,\n    type: \"rip\",\n  },\n  {\n    code: \":passport_control:\",\n    description: \"Work on Code Related to Authorization Roles and Permissions\",\n    emoji: \"🛂\",\n    emojiLength: 1,\n    semver: SEMVER.PATCH,\n    type: \"roles\",\n  },\n  {\n    code: \":fast_forward:\",\n    description: \"Create Rollforward Version\",\n    emoji: \"⏩️\",\n    emojiLength: 1,\n    semver: SEMVER.NULL,\n    type: \"rollforward\",\n  },\n  {\n    code: \":rocket:\",\n    description: \"Custom Type for CI/CD to Hook into Run Build Override\",\n    emoji: \"🚀️\",\n    emojiLength: 1,\n    semver: SEMVER.PATCH,\n    type: \"run-build\",\n  },\n  {\n    code: \":closed_lock_with_key:\",\n    description: \"Add or Update Secrets\",\n    emoji: \"🔐\",\n    emojiLength: 1,\n    semver: SEMVER.NULL,\n    type: \"secrets\",\n  },\n  {\n    code: \":lock:\",\n    description: \"Fix Security Issues\",\n    emoji: \"🔒️\",\n    emojiLength: 1,\n    semver: SEMVER.PATCH,\n    type: \"security\",\n  },\n  {\n    code: \":seedling:\",\n    description: \"Add or Update Seed Files\",\n    emoji: \"🌱\",\n    emojiLength: 1,\n    semver: SEMVER.NULL,\n    type: \"seed\",\n  },\n  {\n    code: \":mag:\",\n    description: \"Improve Seo\",\n    emoji: \"🔍️\",\n    emojiLength: 1,\n    semver: SEMVER.PATCH,\n    type: \"seo\",\n  },\n  {\n    code: \":camera_flash:\",\n    description: \"Add or Update Snapshots\",\n    emoji: \"📸\",\n    emojiLength: 1,\n    semver: SEMVER.NULL,\n    type: \"snapshot\",\n  },\n  {\n    code: \":money_with_wings:\",\n    description: \"Add Sponsorships or Money Related Infrastructure\",\n    emoji: \"💸\",\n    emojiLength: 1,\n    semver: SEMVER.NULL,\n    type: \"sponsor\",\n  },\n  {\n    code: \":art:\",\n    description: \"Improve Structure / Format of the Code\",\n    emoji: \"🎨\",\n    emojiLength: 1,\n    semver: SEMVER.NULL,\n    type: \"style\",\n  },\n  {\n    code: \":test_tube:\",\n    description: \"Add a Failing Test\",\n    emoji: \"🧪\",\n    emojiLength: 1,\n    semver: SEMVER.NULL,\n    type: \"test-fail\",\n  },\n  {\n    code: \":white_check_mark:\",\n    description: \"Add Update or Pass Tests\",\n    emoji: \"✅\",\n    emojiLength: 1,\n    semver: SEMVER.NULL,\n    type: \"test\",\n  },\n  {\n    code: \":speech_balloon:\",\n    description: \"Add or Update Text and Literals\",\n    emoji: \"💬\",\n    emojiLength: 1,\n    semver: SEMVER.PATCH,\n    type: \"texts\",\n  },\n  {\n    code: \":label:\",\n    description: \"Add or Update Types\",\n    emoji: \"🏷️\",\n    emojiLength: 0,\n    semver: SEMVER.PATCH,\n    type: \"types\",\n  },\n  {\n    code: \":pencil2:\",\n    description: \"Fix Typos\",\n    emoji: \"✏️\",\n    emojiLength: 0,\n    semver: SEMVER.PATCH,\n    type: \"typo\",\n  },\n  {\n    code: \":lipstick:\",\n    description: \"Add or Update the UI and Style Files\",\n    emoji: \"💄\",\n    emojiLength: 1,\n    semver: SEMVER.PATCH,\n    type: \"ui\",\n  },\n  {\n    code: \":arrow_up:\",\n    description: \"Upgrade Dependencies\",\n    emoji: \"⬆️\",\n    emojiLength: 0,\n    semver: SEMVER.PATCH,\n    type: \"upgrade\",\n  },\n  {\n    code: \":children_crossing:\",\n    description: \"Improve User Experience / Usability\",\n    emoji: \"🚸\",\n    emojiLength: 1,\n    semver: SEMVER.PATCH,\n    type: \"ux\",\n  },\n  {\n    code: \":safety_vest:\",\n    description: \"Add or update code related to validation\",\n    emoji: \"🦺\",\n    emojiLength: 1,\n    semver: SEMVER.PATCH,\n    type: \"validation\",\n  },\n  {\n    code: \":construction:\",\n    description: \"Work in Progress\",\n    emoji: \"🚧\",\n    emojiLength: 1,\n    semver: SEMVER.NULL,\n    type: \"wip\",\n  },\n];\n\nexport default types;\n","import commitTypes from \"../data/types.ts\";\n\nconst findBy = (str, from, to): string | undefined => {\n  const key = commitTypes.findIndex((el) => el[from] === str);\n  return commitTypes[key]?.[to];\n};\n\nexport { findBy };\n","import process from \"node:process\";\n\nimport { COMMIT_FORMATS, COMMIT_MODES, FLAGS, LOGS, OPTIONS } from \"../lib/index.ts\";\nimport { generateLog, getStagedFiles } from \"./index.ts\";\n\nconst getOptionsForCommand = (command: string, flags: any): any => {\n  const commandsWithOptions = [FLAGS.COMMIT, FLAGS.HOOK];\n\n  // @ts-ignore\n  if (commandsWithOptions.includes(command)) {\n    const options = {\n      dryrun: flags[FLAGS.DRYRUN],\n      emoji: flags[FLAGS.EMOJI],\n      // options\n      format:\n        flags[OPTIONS.FORMAT] === COMMIT_FORMATS.CONVENTIONAL\n          ? flags[FLAGS.EMOJI]\n            ? COMMIT_FORMATS.CONVENTIONAL\n            : COMMIT_FORMATS.CONVENTIONAL_NO_EMOJI\n          : COMMIT_FORMATS.GITMOJI,\n      message: flags[OPTIONS.MESSAGE],\n      mode: command === FLAGS.HOOK ? COMMIT_MODES.HOOK : COMMIT_MODES.CLIENT,\n      scope: flags[OPTIONS.SCOPE],\n      skip: flags[FLAGS.SKIP],\n      title: flags[OPTIONS.TITLE],\n      type: flags[OPTIONS.TYPE],\n    };\n\n    return options;\n  }\n\n  return null;\n};\n\n// @todo(lint) complexity: 11\n// oxlint-disable-next-line complexity\nconst findCommand = (cli: any, options: any): void => {\n  const flags = cli.flags;\n  const commandFlag = Object.keys(flags)\n    .map((flag) => flags[flag] && flag)\n    .find((flag) => options[flag]);\n\n  const filesChanged = getStagedFiles();\n\n  if (!flags[FLAGS.DRYRUN] && !filesChanged) {\n    console.log(generateLog(LOGS.TYPES.ERROR, LOGS.MESSAGES.STAGED_FILES));\n    process.exit(2);\n  }\n\n  if (flags[FLAGS.COMMIT] && flags[FLAGS.HOOK]) {\n    console.log(generateLog(LOGS.TYPES.ERROR, LOGS.MESSAGES.MODE_CONFLICT));\n    process.exit(2);\n  }\n\n  if (\n    flags[OPTIONS.MESSAGE] ||\n    flags[OPTIONS.SCOPE] ||\n    flags[OPTIONS.TITLE] ||\n    flags[OPTIONS.TYPE]\n  ) {\n    flags[FLAGS.SKIP] = true;\n  }\n\n  if (flags[FLAGS.SKIP]) {\n    if (flags[OPTIONS.TITLE] && flags[OPTIONS.TYPE]) {\n      flags[FLAGS.SKIP] = true;\n    } else {\n      flags[FLAGS.SKIP] = false;\n      console.log(generateLog(LOGS.TYPES.ERROR, LOGS.MESSAGES.COMMAND_LINE_WITHOUT_REQUIRED));\n      flags[OPTIONS.TITLE] = undefined;\n      flags[OPTIONS.TYPE] = undefined;\n    }\n  }\n\n  const commandOptions = getOptionsForCommand(commandFlag, flags);\n\n  return options[commandFlag] ? options[commandFlag](commandOptions) : cli.showHelp();\n};\n\nexport { findCommand };\n","import { COMMIT_FORMATS, FORMAT, TYPE } from \"../lib/index.ts\";\n\nconst formatCliEmoji = ({ emoji, emojiLength }) =>\n  emojiLength === 0 ? `${emoji}     ` : `${emoji}    `;\n\nconst formatCliType = (type) => type?.padEnd(TYPE.MAX);\n\nconst formatCliTypes = (commitTypes: any) => {\n  // console.log(`EMOJI  TYPE            DESCRIPTION`)\n  // console.log(`-----  ----            -----------`)\n  return commitTypes.map(({ description, emoji, emojiLength, type }) => {\n    console.log(\n      `${formatCliEmoji({\n        emoji,\n        emojiLength,\n      })} ${formatCliType(type)} ${description}`,\n    );\n  });\n};\n\n// oxlint-disable-next-line complexity\nconst formatCommitSubject = (options, answers) => {\n  const format = FORMAT[options?.format];\n\n  // @note(ccommit) two spaces after emoji\n  const emoji = answers?.gitmoji ? `${answers?.gitmoji}  ` : \"\";\n\n  let scope = answers?.scope\n    ? `(${answers?.scope.replace(/ {2}/g, \"--\").replace(/ /g, \"-\").toLowerCase().trim()})`\n    : \"\";\n  // @note(ccommit) only add space to scope if format is: gitmoji\n  scope = scope && options?.format === COMMIT_FORMATS.GITMOJI ? `${scope} ` : scope;\n\n  /**\n   * @todo(ccommit) breaking identification in commit subject\n   */\n  // const breaking = answers?.breaking\n  //   ? options?.format === COMMIT_FORMATS.GITMOJI\n  //     ? `💥 `\n  //     : '!'\n  //   : ''\n\n  return format\n    .replace(/\\{emoji\\}/g, emoji)\n    .replace(/\\{scope\\}/g, scope)\n    .replace(/\\{breaking\\}/g, \"\")\n    .replace(/\\{title\\}/g, answers?.title)\n    .replace(/\\{type\\}/g, answers?.type);\n};\n\nexport { formatCliEmoji, formatCliType, formatCliTypes, formatCommitSubject };\n","import colors from \"ansi-colors\";\n\nimport { LOGS } from \"../lib/index.ts\";\n\ntype GenerateLog = (type: string, message: string, replace?: string) => void;\n/**\n * @todo(ccommit) this is a bit much, can we reduce?\n */\nconst generateLog: GenerateLog = (type, message, replace) => {\n  let msg = replace ? message.replace(/\\{REPLACE\\}/g, replace) : message;\n  msg = `\\n${msg}\\n`;\n\n  if (type === LOGS.TYPES.ERROR) {\n    return colors.magenta.bold(msg);\n  }\n  if (type === LOGS.TYPES.INFO) {\n    return colors.blue.bold(msg);\n  }\n  if (type === LOGS.TYPES.WARNING) {\n    return colors.yellow.bold(msg);\n  }\n  return colors.green.bold(msg);\n};\n\nconst generateCount: GenerateLog = (type, message, replace) => {\n  const msg = replace ? message.replace(/\\{REPLACE\\}/g, replace) : message;\n\n  if (type === LOGS.TYPES.ERROR) {\n    return colors.red.bold(msg);\n  }\n  if (type === LOGS.TYPES.INFO) {\n    return colors.white.bold(msg);\n  }\n  if (type === LOGS.TYPES.WARNING) {\n    return colors.yellow.bold(msg);\n  }\n  return colors.green.bold(msg);\n};\n\nexport { generateCount, generateLog };\n","import { LOGS, TITLE } from \"../lib/index.ts\";\nimport { generateCount } from \"./index.ts\";\n\nconst getCharsLeft = (str: string) => {\n  const chars = str.length;\n  const message = chars.toString();\n  let logType = LOGS.TYPES.SUCCESS;\n\n  if (chars < TITLE.MIN || chars > TITLE.MAX) {\n    logType = LOGS.TYPES.ERROR;\n  } else if (chars < TITLE.MIN_SWAG || chars > TITLE.MAX_SWAG) {\n    logType = LOGS.TYPES.WARNING;\n  }\n  return generateCount(logType, LOGS.MESSAGES.REPLACE, message);\n};\n\nexport { getCharsLeft };\n","import { execSync } from \"node:child_process\";\n\nconst getGitRootDir = () => {\n  const devNull = process.platform === \"win32\" ? \" nul\" : \"/dev/null\";\n  const dir = execSync(\"git rev-parse --show-toplevel 2>\" + devNull)\n    .toString()\n    .trim();\n\n  return dir;\n};\n\nexport { getGitRootDir };\n","import { execSync } from \"node:child_process\";\n\nconst getIssueTracker = () => {\n  let branch: any,\n    init = \"\";\n\n  //  branch = 'ABC-123'\n  branch = execSync(\"git rev-parse --abbrev-ref HEAD\");\n  branch = branch.toString().trim().split(\"/\");\n  const branchType = branch[0];\n  const branchName = !branch[1] ? branchType : branch[1];\n\n  const it = branchName.split(\"-\");\n  const itProject = it[0];\n  const itNumber = !it[1] ? itProject : it[1];\n  const itTicket = `${itProject}-${itNumber}`;\n\n  if (!isNaN(parseFloat(itNumber)) && isFinite(parseFloat(itNumber))) {\n    init = itTicket;\n  }\n  return init;\n};\n\nexport { getIssueTracker };\n","import { execSync } from \"node:child_process\";\n\nconst getStagedFiles = () => {\n  const stagedFiles = execSync(\"git diff --name-only --staged\").toString().trim();\n\n  return !!stagedFiles;\n};\n\nexport { getStagedFiles };\n","import colors from \"ansi-colors\";\n\nconst printDryRun = (v) => {\n  console.log(colors.magenta.bold(`❯ dry-run mode: ${v}\\n`));\n};\n\nexport { printDryRun };\n","/*!\n * reference: https://github.com/carloscuesta/gitmoji-cli\n */\nimport process from \"node:process\";\n\nimport colors from \"ansi-colors\";\n\nconst registerHookInterruptionHandler = () => {\n  // Allow to interrupt the hook without cancelling the commit\n  process.on(\"SIGINT\", () => {\n    console.log(colors.magenta.bold(\"❯ [ccommit] interrupted\"));\n    process.exit(0);\n  });\n};\n\nexport { registerHookInterruptionHandler };\n","import colors from \"ansi-colors\";\n\nimport commitTypes from \"../../data/types.ts\";\nimport { SCOPE, TITLE } from \"../../lib/index.ts\";\nimport { formatCliEmoji, formatCliType, getCharsLeft, getIssueTracker } from \"../../utils/index.ts\";\n\nconst getTypes = () =>\n  commitTypes.map(({ description, emoji, emojiLength, type }) => ({\n    description,\n    emoji,\n    emojiLength,\n    type,\n  }));\n\nconst characterCount = (input, max) => {\n  const count = getCharsLeft(input);\n  const countMessage = `Character Count (${count}/${max})`;\n  return `${colors.dim.cyan(`›`)} ${colors.dim.bold(countMessage)}`;\n};\n\nconst prefixState = (state) => {\n  return state.submitted\n    ? state.cancelled\n      ? colors.magenta(\"✖\")\n      : colors.green(\"✔\")\n    : colors.cyan(\"?\");\n};\n\n/**\n * @note(enquirier) 3.x will \"fix\" skip passing answers for now\n *  you can access \"this\" state by __not__ using arrow functions\n */\nconst questions = [\n  {\n    default: \"(y/N)\",\n    format(input) {\n      const yn = input ? \"yes\" : \"no\";\n      // @ts-ignore\n      return this.state.submitted ? colors.green(yn) : colors.dim(yn);\n    },\n    initial: false,\n    message: \"Is there a breaking change?\",\n    name: \"breaking\",\n    prefix() {\n      // @ts-ignore\n      return prefixState(this.state);\n    },\n    styles: { primary: colors.white },\n    type: \"confirm\",\n  },\n  {\n    footer() {\n      // @ts-ignore\n      return characterCount(this.state.input, TITLE.MAX);\n    },\n    message: \"Please share breaking change info\",\n    name: \"messageBreaking\",\n    result(value) {\n      return value ? `BREAKING CHANGE: ${value.trim()}` : \"\";\n    },\n    skip() {\n      // @ts-ignore\n      return !this.state.answers.breaking;\n    },\n    type: \"input\",\n    validate(input) {\n      const chars = input?.length || 0;\n      // @ts-ignore\n      if (!this.state.answers.breaking) {\n        return true;\n      } else if (chars < 15) {\n        return `Must have at least 15 characters`;\n      } else if (chars > TITLE.MAX) {\n        return `Cannot exceed ${TITLE.MAX} characters`;\n      } else {\n        return true;\n      }\n    },\n  },\n  {\n    choices: getTypes().map(({ description, emoji, emojiLength, type }) => {\n      const value = emoji;\n      const name = `  ${formatCliEmoji({\n        emoji,\n        emojiLength,\n      })}  ${formatCliType(type)} ${description}`;\n      return {\n        name,\n        value,\n      };\n    }),\n    footer() {\n      return `${colors.dim.cyan(`›`)} ${colors.dim.bold(`scroll up and down to reveal more ↕`)}`;\n    },\n    highlight(str) {\n      return colors.cyanBright(str);\n    },\n    limit: 18,\n    message: \"Please choose a commit type\",\n    name: \"gitmoji\",\n    type: \"autocomplete\",\n  },\n  {\n    footer() {\n      // @ts-ignore\n      return characterCount(this.state.input, SCOPE.MAX);\n    },\n    format() {\n      // @ts-ignore\n      return this.state.submitted ? colors.green(this.value) : this.value;\n    },\n    message: \"Please share the scope (if any)\",\n    name: \"scope\",\n    type: \"input\",\n    validate(input) {\n      const chars = input.length;\n      if (chars === 0) {\n        return true;\n      } else if (chars < SCOPE.MIN) {\n        return `Must have at least ${SCOPE.MIN} characters`;\n      } else if (chars > SCOPE.MAX) {\n        return `Cannot exceed ${SCOPE.MAX} characters`;\n      } else {\n        return true;\n      }\n    },\n  },\n  {\n    footer() {\n      // @ts-ignore\n      return characterCount(this.state.input, TITLE.MAX);\n    },\n    hint() {\n      // @ts-ignore\n      return this.state.initial ? `… tab to use initial value` : \"\";\n    },\n    initial: getIssueTracker() ? `${getIssueTracker()} ` : \"\",\n    message: \"Please enter the commit title\",\n    name: \"title\",\n    type: \"input\",\n    validate(input) {\n      const chars = input.length;\n      if (chars < TITLE.MIN) {\n        return `Must have at least ${TITLE.MIN} characters`;\n      } else if (chars > TITLE.MAX) {\n        return `Cannot exceed ${TITLE.MAX} characters`;\n      } else {\n        return true;\n      }\n    },\n  },\n  {\n    footer() {\n      return `${colors.dim.cyan(`›`)} ${colors.dim(\"Return twice to submit/skip: ⮑  ⮑\")}`;\n    },\n    message: \"Please share a more detailed commit message (if applicable)\",\n    multiline: true,\n    name: \"message\",\n    result(input) {\n      return input === \"\\n\" ? \"\" : input;\n    },\n    type: \"input\",\n  },\n];\n\nexport default questions;\n","import process from \"node:process\";\n\nimport { execa } from \"execa\";\n\nimport { LOGS } from \"../../lib/index.ts\";\nimport { generateLog, printDryRun } from \"../../utils/index.ts\";\n\nconst withClient = async (answers, options) => {\n  try {\n    const title = answers?.subject;\n    const message = answers?.message;\n    const messageBreaking = answers?.messageBreaking;\n\n    const commitArray = [\"commit\", \"-m\", title];\n    if (message) commitArray.push(\"-m\", message);\n    if (messageBreaking) commitArray.push(\"-m\", messageBreaking);\n\n    if (options?.dryrun) {\n      printDryRun([\"git\", ...commitArray].join(\" \"));\n    } else {\n      await execa(\"git\", commitArray, {\n        buffer: false,\n        // env: { HUSKY: '0' },\n        stdio: \"inherit\",\n      });\n    }\n  } catch (error: any) {\n    console.error(generateLog(LOGS.TYPES.ERROR, LOGS.MESSAGES.COMMIT_FAIL, error.escapedCommand));\n    process.exit(1);\n  }\n};\n\nexport default withClient;\n","import fs from \"node:fs\";\nimport { join } from \"node:path\";\nimport process from \"node:process\";\n\nimport { getGitRootDir, printDryRun } from \"../../utils/index.ts\";\n\nconst commitMsgFile = join(getGitRootDir(), \".git\", \"COMMIT_EDITMSG\");\n\n// oxlint-disable-next-line complexity\nconst withHook = (answers, options) => {\n  try {\n    let commitMessage = answers?.subject;\n    if (answers?.message && answers?.message !== \"\\n\") {\n      commitMessage += `\\n\\n${answers.message}`;\n    }\n    if (answers?.messageBreaking && answers?.messageBreaking !== \"\\n\") {\n      commitMessage += `\\n\\n${answers.messageBreaking}`;\n    }\n\n    if (options?.dryrun) {\n      printDryRun(commitMessage);\n    } else {\n      fs.writeFileSync(commitMsgFile, commitMessage);\n    }\n  } catch (error) {\n    console.error(error);\n    process.exit(1);\n  } finally {\n    process.exit(0);\n  }\n};\n\nexport default withHook;\n","import process from \"node:process\";\n\nimport enquirer from \"enquirer\";\n\nimport { COMMIT_MODES, FIND_BY, LOGS } from \"../../lib/index.ts\";\nimport {\n  cancelIfNeeded,\n  findBy,\n  formatCommitSubject,\n  generateLog,\n  registerHookInterruptionHandler,\n} from \"../../utils/index.ts\";\nimport questions from \"./questions.ts\";\nimport withClient from \"./with-client.ts\";\nimport withHook from \"./with-hook.ts\";\n\nconst { prompt } = enquirer;\n\nexport type CommitOptions = {\n  message?: string;\n  mode: typeof COMMIT_MODES.CLIENT;\n  // mode: typeof COMMIT_MODES.CLIENT | typeof COMMIT_MODES.HOOK\n  scope?: string;\n  skip: boolean;\n  title?: string;\n};\n\n/**\n * @todo(ccommit) this is a hacky way to bypass the generator :X\n */\nconst promptAndCommit = async (options: CommitOptions) => {\n  let data: any = {};\n\n  if (options.skip) {\n    data = options;\n    // @note(ccommit) very type is an actual type\n    data.gitmoji = findBy(data.type, FIND_BY.TYPE, FIND_BY.EMOJI);\n    if (!data.gitmoji) {\n      console.log(generateLog(LOGS.TYPES.ERROR, LOGS.MESSAGES.TYPE_INCORRECT, data.type));\n      process.exit(2);\n    }\n  } else {\n    // @ts-ignore\n    await prompt(questions)\n      .then((answers: any) => {\n        answers.type = findBy(answers.gitmoji, FIND_BY.EMOJI, FIND_BY.TYPE);\n        return answers;\n      })\n      .then((answers) => {\n        data = answers;\n      })\n      .catch(console.error);\n  }\n\n  // oxlint-disable-next-line no-extra-boolean-cast\n  data.subject = !!data ? formatCommitSubject(options, data) : \"\";\n\n  if (options.mode === COMMIT_MODES.HOOK) {\n    return withHook(data, options);\n  } else {\n    return withClient(data, options);\n  }\n};\nconst commit = (options: CommitOptions) => {\n  if (options.mode === COMMIT_MODES.HOOK) {\n    registerHookInterruptionHandler();\n    return cancelIfNeeded().then(() => promptAndCommit(options));\n  }\n  return promptAndCommit(options);\n};\n\nexport default commit;\n","import commit from \"./commit.ts\";\n\nexport default commit;\n","import commitTypes from \"../../data/types.ts\";\nimport { formatCliTypes } from \"../../utils/index.ts\";\n\nconst list = () => formatCliTypes(commitTypes);\n\nexport default list;\n","import list from \"./list.ts\";\n\nexport default list;\n","#!/usr/bin/env node\n\n/*!\n * For license information please see index.js.LICENSE.txt\n */\nimport meow from \"meow\";\n\nimport { commit, list } from \"./commands/index.ts\";\nimport { COMMANDS, COMMIT_FORMATS, FLAGS, OPTIONS } from \"./lib/index.ts\";\nimport { findCommand } from \"./utils/index.ts\";\n\nconst cli = meow(\n  `\n  Usage\n    $ ccommit -c\n\n  Flags\n    --${FLAGS.BREAKING}, -b       💥  Breaking Change\n    --${FLAGS.COMMIT}, -c         💽  Mode: Client\n    --${FLAGS.DRYRUN}, -n         🎽  Mode: Dry Run\n    --${FLAGS.EMOJI}, -e          😜  Emoji (default)\n    --${FLAGS.HOOK}, -u           🪝   Mode: Hook\n    --${FLAGS.LIST}, -l           📖  List all types\n    --${FLAGS.VERSION}, -v        📦  Print installed version\n\n  Options\n    --${OPTIONS.FORMAT}             😜  Commit Format: conventional|gitmoji (default)\n    --${OPTIONS.MESSAGE}            📝  Commit Message\n    --${OPTIONS.SCOPE}              🔬  Commit Scope\n    --${OPTIONS.TITLE}              📓  Commit Title\n    --${OPTIONS.TYPE}               ✨  Commit Type\n\n  Notes\n    - Pass any non-format options the following will be required: --title, --type\n    - If you do not pass any options the Conventional Commit Generator prompt will run\n      - Branch Name detection is enabled to pre-populate Issue Tracker information in prompt\n`,\n  {\n    flags: {\n      // Flags\n      [FLAGS.BREAKING]: { default: false, shortFlag: \"b\", type: \"boolean\" },\n      [FLAGS.COMMIT]: { shortFlag: \"c\", type: \"boolean\" },\n      [FLAGS.DRYRUN]: { shortFlag: \"n\", type: \"boolean\" },\n      [FLAGS.EMOJI]: { default: true, shortFlag: \"e\", type: \"boolean\" },\n      [FLAGS.HELP]: { shortFlag: \"h\", type: \"boolean\" },\n      [FLAGS.HOOK]: { shortFlag: \"u\", type: \"boolean\" },\n      [FLAGS.LIST]: { shortFlag: \"l\", type: \"boolean\" },\n      [FLAGS.SKIP]: { default: false, type: \"boolean\" },\n      [FLAGS.VERSION]: { shortFlag: \"v\", type: \"boolean\" },\n      // Options\n      [OPTIONS.FORMAT]: { default: COMMIT_FORMATS.GITMOJI, type: \"string\" },\n      [OPTIONS.MESSAGE]: { type: \"string\" },\n      [OPTIONS.SCOPE]: { type: \"string\" },\n      [OPTIONS.TITLE]: { type: \"string\" },\n      [OPTIONS.TYPE]: { type: \"string\" },\n    },\n    importMeta: import.meta,\n  },\n);\n\nconst commands = {\n  [COMMANDS.COMMIT]: (options: any) => commit(options),\n  [COMMANDS.HOOK]: (options: any) => commit(options),\n  [COMMANDS.LIST]: () => list(),\n};\n\nfindCommand(cli, commands);\n"],"mappings":";uOAAA,MAAM,EAAW,CACf,OAAQ,SACR,KAAM,OACN,KAAM,MACR,EACM,EAAiB,CACrB,aAAc,eACd,sBAAuB,wBACvB,QAAS,SACX,EAEM,EAAe,CACnB,OAAQ,SACR,KAAM,MACR,EAEM,EAAU,CACd,MAAO,QACP,KAAM,MACR,EAEM,EAAQ,OAAO,OAAO,CAC1B,SAAU,WACV,OAAQ,SACR,OAAQ,SACR,MAAO,QACP,KAAM,OACN,KAAM,OACN,KAAM,OACN,KAAM,OACN,QAAS,SACX,CAAC,EAEK,EAAS,EACZ,EAAe,cAAe,2CAC9B,EAAe,uBAAwB,oCACvC,EAAe,SAAU,iCAC5B,EAEM,EAAO,CACX,SAAU,CACR,8BAA+B,uDAC/B,YAAa;;;;;;;;MAMb,sBAAuB,sDACvB,cAAe,8DACf,QAAS,YACT,aAAc,0EACd,eAAgB,uDAClB,EACA,MAAO,CACL,MAAO,QACP,KAAM,OACN,QAAS,UACT,QAAS,SACX,CACF,EAEM,EAAU,OAAO,OAAO,CAC5B,OAAQ,SACR,QAAS,UACT,MAAO,QACP,MAAO,QACP,KAAM,MACR,CAAC,EAEK,EAAQ,CACZ,IAAK,GACL,IAAK,CACP,EAEM,EAAS,CACb,MAAO,QACP,MAAO,QACP,KAAM,OACN,MAAO,OACT,EAEM,EAAQ,CACZ,IAAK,GACL,SAAU,GACV,IAAK,EACL,SAAU,EACZ,EAEM,EAAO,CACX,IAAK,EACP,ECnFM,MACJ,EAAM,MAAO,CAAC,YAAa,oBAAoB,CAAC,CAAC,CAAC,MAAM,CAAE,OAAQ,KAAmB;;;;CAIjF,EAAG,WAAW,EAAe,eAAe,GAC5C,EAAG,WAAW,EAAe,eAAe,IAE5C,EAAQ,KAAK,CAAC,CAElB,CAAC,EAIG,MACJ,IAAI,QAAe,GAAY,CAM7B,IAAM,EAA8BA,EAAQ,KAAA,GAE1C,IACC,EAAoB,WAAW,QAAQ,GAAK,EAAoB,WAAW,OAAO,IAEnF,EAAQ,KAAK,CAAC,EAEhB,EAAQ,CACV,CAAC,EAGG,MAAsC,EAAiB,CAAC,CAAC,KAAK,CAAgB,ECpC9E,EAAQ,CACZ,CACE,KAAM,eACN,YAAa,wBACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,QACR,EACA,CACE,KAAM,6BACN,YAAa,wCACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,WACR,EACA,CACE,KAAM,UACN,YAAa,2CACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,WACR,EACA,CACE,KAAM,0BACN,YAAa,6BACb,MAAO,MACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,MACR,EACA,CACE,KAAM,UACN,YAAa,uBACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,QACR,EACA,CACE,KAAM,UACN,YAAa,0BACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,WACR,EACA,CACE,KAAM,UACN,YAAa,uBACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,MACR,EACA,CACE,KAAM,SACN,YAAa,6BACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,UACR,EACA,CACE,KAAM,WACN,YAAa,oCACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,OACR,EACA,CACE,KAAM,aACN,YAAa,eACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,OACR,EACA,CACE,KAAM,kBACN,YAAa,8CACb,MAAO,MACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,OACR,EACA,CACE,KAAM,wBACN,YAAa,gCACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,IACR,EACA,CACE,KAAM,gBACN,YAAa,6CACb,MAAO,MACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,OACR,EACA,CACE,KAAM,UACN,YAAa,0CACb,MAAO,MACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,QACR,EACA,CACE,KAAM,WACN,YAAa,8DACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,aACR,EACA,CACE,KAAM,WACN,YAAa,oCACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,QACR,EACA,CACE,KAAM,wBACN,YAAa,+BACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,aACR,EACA,CACE,KAAM,iBACN,YAAa,8BACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,MACR,EACA,CACE,KAAM,kBACN,YAAa,mCACb,MAAO,MACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,IACR,EACA,CACE,KAAM,oBACN,YAAa,mBACb,MAAO,IACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,SACR,EACA,CACE,KAAM,qBACN,YAAa,sBACb,MAAO,IACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,QACR,EACA,CACE,KAAM,YACN,YAAa,2CACb,MAAO,MACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,QACR,EACA,CACE,KAAM,WACN,YAAa,eACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,QACR,EACA,CACE,KAAM,SACN,YAAa,wCACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,WACR,EACA,CACE,KAAM,SACN,YAAa,8BACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,MACR,EACA,CACE,KAAM,eACN,YAAa,yBACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,WACR,EACA,CACE,KAAM,iBACN,YAAa,+BACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,IACR,EACA,CACE,KAAM,QACN,YAAa,8BACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,KACR,EACA,CACE,KAAM,YACN,YAAa,sBACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,YACR,EACA,CACE,KAAM,aACN,YAAa,yBACb,MAAO,IACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,MACR,EACA,CACE,KAAM,QACN,YAAa,YACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,KACR,EACA,CACE,KAAM,gBACN,YAAa,eACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,QACR,EACA,CACE,KAAM,4BACN,YAAa,qCACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,OACR,EACA,CACE,KAAM,gBACN,YAAa,4BACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,aACR,EACA,CACE,KAAM,cACN,YAAa,kBACb,MAAO,MACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,QACR,EACA,CACE,KAAM,yBACN,YAAa,wCACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,MACR,EACA,CACE,KAAM,gBACN,YAAa,kCACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,QACR,EACA,CACE,KAAM,WACN,YAAa,iCACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,KACR,EACA,CACE,KAAM,SACN,YAAa,kBACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,MACR,EACA,CACE,KAAM,WACN,YAAa,4BACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,QACR,EACA,CACE,KAAM,mBACN,YAAa,wBACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,SACR,EACA,CACE,KAAM,mBACN,YAAa,iCACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,MACR,EACA,CACE,KAAM,eACN,YAAa,qBACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,SACR,EACA,CACE,KAAM,SACN,YAAa,cACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,QACR,EACA,CACE,KAAM,YACN,YAAa,+BACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,OACR,EACA,CACE,KAAM,8BACN,YAAa,iBACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,OACR,EACA,CACE,KAAM,eACN,YAAa,cACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,MACR,EACA,CACE,KAAM,UACN,YAAa,sDACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,IACR,EACA,CACE,KAAM,aACN,YAAa,0BACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,SACR,EACA,CACE,KAAM,qBACN,YAAa,sCACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,OACR,EACA,CACE,KAAM,QACN,YAAa,sBACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,MACR,EACA,CACE,KAAM,SACN,YAAa,2CACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,KACR,EACA,CACE,KAAM,SACN,YAAa,uBACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,OACR,EACA,CACE,KAAM,YACN,YAAa,wCACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,SACR,EACA,CACE,KAAM,YACN,YAAa,gBACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,UACR,EACA,CACE,KAAM,aACN,YAAa,yBACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,SACR,EACA,CACE,KAAM,WACN,YAAa,iBACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,QACR,EACA,CACE,KAAM,WACN,YAAa,mBACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,KACR,EACA,CACE,KAAM,qBACN,YAAa,8DACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,OACR,EACA,CACE,KAAM,iBACN,YAAa,6BACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,aACR,EACA,CACE,KAAM,WACN,YAAa,wDACb,MAAO,MACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,WACR,EACA,CACE,KAAM,yBACN,YAAa,wBACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,SACR,EACA,CACE,KAAM,SACN,YAAa,sBACb,MAAO,MACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,UACR,EACA,CACE,KAAM,aACN,YAAa,2BACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,MACR,EACA,CACE,KAAM,QACN,YAAa,cACb,MAAO,MACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,KACR,EACA,CACE,KAAM,iBACN,YAAa,0BACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,UACR,EACA,CACE,KAAM,qBACN,YAAa,mDACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,SACR,EACA,CACE,KAAM,QACN,YAAa,yCACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,OACR,EACA,CACE,KAAM,cACN,YAAa,qBACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,WACR,EACA,CACE,KAAM,qBACN,YAAa,2BACb,MAAO,IACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,MACR,EACA,CACE,KAAM,mBACN,YAAa,kCACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,OACR,EACA,CACE,KAAM,UACN,YAAa,sBACb,MAAO,MACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,OACR,EACA,CACE,KAAM,YACN,YAAa,YACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,MACR,EACA,CACE,KAAM,aACN,YAAa,uCACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,IACR,EACA,CACE,KAAM,aACN,YAAa,uBACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,SACR,EACA,CACE,KAAM,sBACN,YAAa,sCACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,IACR,EACA,CACE,KAAM,gBACN,YAAa,2CACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,YACR,EACA,CACE,KAAM,iBACN,YAAa,mBACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,KACR,CACF,ECnnBM,GAAU,EAAK,EAAM,IAElBC,EADKA,EAAY,UAAW,GAAO,EAAG,KAAU,CAClC,EAAE,GAAG,GCCtB,GAAwB,EAAiB,IAIzC,CAHyB,EAAM,OAAQ,EAAM,IAG3B,CAAC,CAAC,SAAS,CAAO,EAmB/B,CAjBL,OAAQ,EAAM,EAAM,QACpB,MAAO,EAAM,EAAM,OAEnB,OACE,EAAM,EAAQ,UAAY,EAAe,aACrC,EAAM,EAAM,OACV,EAAe,aACf,EAAe,sBACjB,EAAe,QACrB,QAAS,EAAM,EAAQ,SACvB,KAAM,IAAY,EAAM,KAAO,EAAa,KAAO,EAAa,OAChE,MAAO,EAAM,EAAQ,OACrB,KAAM,EAAM,EAAM,MAClB,MAAO,EAAM,EAAQ,OACrB,KAAM,EAAM,EAAQ,KAGT,EAGR,KAKH,GAAe,EAAU,IAAuB,CACpD,IAAM,EAAQ,EAAI,MACZ,EAAc,OAAO,KAAK,CAAK,CAAC,CACnC,IAAK,GAAS,EAAM,IAAS,CAAI,CAAC,CAClC,KAAM,GAAS,EAAQ,EAAK,EAEzB,EAAe,EAAe,EAEhC,CAAC,EAAM,EAAM,SAAW,CAAC,IAC3B,QAAQ,IAAI,EAAY,EAAK,MAAM,MAAO,EAAK,SAAS,YAAY,CAAC,EACrE,EAAQ,KAAK,CAAC,GAGZ,EAAM,EAAM,SAAW,EAAM,EAAM,QACrC,QAAQ,IAAI,EAAY,EAAK,MAAM,MAAO,EAAK,SAAS,aAAa,CAAC,EACtE,EAAQ,KAAK,CAAC,IAId,EAAM,EAAQ,UACd,EAAM,EAAQ,QACd,EAAM,EAAQ,QACd,EAAM,EAAQ,SAEd,EAAM,EAAM,MAAQ,IAGlB,EAAM,EAAM,QACV,EAAM,EAAQ,QAAU,EAAM,EAAQ,MACxC,EAAM,EAAM,MAAQ,IAEpB,EAAM,EAAM,MAAQ,GACpB,QAAQ,IAAI,EAAY,EAAK,MAAM,MAAO,EAAK,SAAS,6BAA6B,CAAC,EACtF,EAAM,EAAQ,OAAS,IAAA,GACvB,EAAM,EAAQ,MAAQ,IAAA,KAI1B,IAAM,EAAiB,EAAqB,EAAa,CAAK,EAE9D,OAAO,EAAQ,GAAe,EAAQ,EAAY,CAAC,CAAc,EAAI,EAAI,SAAS,CACpF,EC3EM,GAAkB,CAAE,QAAO,iBAC/B,IAAgB,EAAI,GAAG,EAAM,OAAS,GAAG,EAAM,MAE3C,EAAiB,GAAS,GAAM,OAAO,EAAK,GAAG,EAE/C,EAAkB,GAGf,EAAY,KAAK,CAAE,cAAa,QAAO,cAAa,UAAW,CACpE,QAAQ,IACN,GAAG,EAAe,CAChB,QACA,aACF,CAAC,EAAE,GAAG,EAAc,CAAI,EAAE,GAAG,GAC/B,CACF,CAAC,EAIG,GAAuB,EAAS,IAAY,CAChD,IAAM,EAAS,EAAO,GAAS,QAGzB,EAAQ,GAAS,QAAU,GAAG,GAAS,QAAQ,IAAM,GAEvD,EAAQ,GAAS,MACjB,IAAI,GAAS,MAAM,QAAQ,QAAS,IAAI,CAAC,CAAC,QAAQ,KAAM,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,KAAK,EAAE,GAClF,GAaJ,MAXA,GAAQ,GAAS,GAAS,SAAW,EAAe,QAAU,GAAG,EAAM,GAAK,EAWrE,EACJ,QAAQ,aAAc,CAAK,CAAC,CAC5B,QAAQ,aAAc,CAAK,CAAC,CAC5B,QAAQ,gBAAiB,EAAE,CAAC,CAC5B,QAAQ,aAAc,GAAS,KAAK,CAAC,CACrC,QAAQ,YAAa,GAAS,IAAI,CACvC,ECxCM,GAA4B,EAAM,EAAS,IAAY,CAC3D,IAAI,EAAM,EAAU,EAAQ,QAAQ,eAAgB,CAAO,EAAI,EAY/D,MAXA,GAAM,KAAK,EAAI,IAEX,IAAS,EAAK,MAAM,MACf,EAAO,QAAQ,KAAK,CAAG,EAE5B,IAAS,EAAK,MAAM,KACf,EAAO,KAAK,KAAK,CAAG,EAEzB,IAAS,EAAK,MAAM,QACf,EAAO,OAAO,KAAK,CAAG,EAExB,EAAO,MAAM,KAAK,CAAG,CAC9B,EAEM,GAA8B,EAAM,EAAS,IAAY,CAC7D,IAAM,EAAM,EAAU,EAAQ,QAAQ,eAAgB,CAAO,EAAI,EAWjE,OATI,IAAS,EAAK,MAAM,MACf,EAAO,IAAI,KAAK,CAAG,EAExB,IAAS,EAAK,MAAM,KACf,EAAO,MAAM,KAAK,CAAG,EAE1B,IAAS,EAAK,MAAM,QACf,EAAO,OAAO,KAAK,CAAG,EAExB,EAAO,MAAM,KAAK,CAAG,CAC9B,EClCM,EAAgB,GAAgB,CACpC,IAAM,EAAQ,EAAI,OACZ,EAAU,EAAM,SAAS,EAC3B,EAAU,EAAK,MAAM,QAOzB,OALI,EAAQ,EAAM,KAAO,EAAQ,EAAM,IACrC,EAAU,EAAK,MAAM,OACZ,EAAQ,EAAM,UAAY,EAAQ,EAAM,YACjD,EAAU,EAAK,MAAM,SAEhB,EAAc,EAAS,EAAK,SAAS,QAAS,CAAO,CAC9D,ECZM,MAEQ,EAAS,oCADL,QAAQ,WAAa,QAAU,OAAS,YACS,CAAC,CAC/D,SAAS,CAAC,CACV,KAEM,ECNL,MAAwB,CAC5B,IAAI,EACF,EAAO,GAGT,EAAS,EAAS,iCAAiC,EACnD,EAAS,EAAO,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,EAC3C,IAAM,EAAa,EAAO,GAGpB,GAFc,EAAO,GAAkB,EAAO,GAApB,EAAoB,CAE9B,MAAM,GAAG,EACzB,EAAY,EAAG,GACf,EAAY,EAAG,GAAiB,EAAG,GAAf,EACpB,EAAW,GAAG,EAAU,GAAG,IAKjC,MAHI,CAAC,MAAM,WAAW,CAAQ,CAAC,GAAK,SAAS,WAAW,CAAQ,CAAC,IAC/D,EAAO,GAEF,CACT,ECnBM,MAGG,CAAC,CAFY,EAAS,+BAA+B,CAAC,CAAC,SAAS,CAAC,CAAC,KAEtD,ECHf,EAAe,GAAM,CACzB,QAAQ,IAAI,EAAO,QAAQ,KAAK,mBAAmB,EAAE,GAAG,CAAC,CAC3D,ECGM,MAAwC;;;;AAE5C,EAAQ,GAAG,aAAgB,CACzB,QAAQ,IAAI,EAAO,QAAQ,KAAK,yBAAyB,CAAC,EAC1D,EAAQ,KAAK,CAAC,CAChB,CAAC,CACH,ECPM,MACJC,EAAY,KAAK,CAAE,cAAa,QAAO,cAAa,WAAY,CAC9D,cACA,QACA,cACA,MACF,EAAE,EAEE,GAAkB,EAAO,IAAQ,CAErC,IAAM,EAAe,oBADP,EAAa,CACkB,EAAE,GAAG,EAAI,GACtD,MAAO,GAAG,EAAO,IAAI,KAAK,GAAG,EAAE,GAAG,EAAO,IAAI,KAAK,CAAY,GAChE,EAEM,EAAe,GACZ,EAAM,UACT,EAAM,UACJ,EAAO,QAAQ,GAAG,EAClB,EAAO,MAAM,GAAG,EAClB,EAAO,KAAK,GAAG,EAOf,EAAY,CAChB,CACE,QAAS,QACT,OAAO,EAAO,CACZ,IAAM,EAAK,EAAQ,MAAQ,KAE3B,OAAO,KAAK,MAAM,UAAY,EAAO,MAAM,CAAE,EAAI,EAAO,IAAI,CAAE,CAChE,EACA,QAAS,GACT,QAAS,8BACT,KAAM,WACN,QAAS,CAEP,OAAO,EAAY,KAAK,KAAK,CAC/B,EACA,OAAQ,CAAE,QAAS,EAAO,KAAM,EAChC,KAAM,SACR,EACA,CACE,QAAS,CAEP,OAAO,EAAe,KAAK,MAAM,MAAO,EAAM,GAAG,CACnD,EACA,QAAS,oCACT,KAAM,kBACN,OAAO,EAAO,CACZ,OAAO,EAAQ,oBAAoB,EAAM,KAAK,IAAM,EACtD,EACA,MAAO,CAEL,MAAO,CAAC,KAAK,MAAM,QAAQ,QAC7B,EACA,KAAM,QACN,SAAS,EAAO,CACd,IAAM,EAAQ,GAAO,QAAU,EAS7B,OAPG,KAAK,MAAM,QAAQ,SAEb,EAAQ,GACV,mCACE,EAAQ,EAAM,IAChB,iBAAiB,EAAM,IAAI,aAE3B,GANA,EAQX,CACF,EACA,CACE,QAAS,EAAS,CAAC,CAAC,KAAK,CAAE,cAAa,QAAO,cAAa,UAAW,CACrE,IAAM,EAAQ,EAKd,MAAO,CACL,KAAA,KALgB,EAAe,CAC/B,QACA,aACF,CAAC,EAAE,IAAI,EAAc,CAAI,EAAE,GAAG,IAG5B,OACF,CACF,CAAC,EACD,QAAS,CACP,MAAO,GAAG,EAAO,IAAI,KAAK,GAAG,EAAE,GAAG,EAAO,IAAI,KAAK,qCAAqC,GACzF,EACA,UAAU,EAAK,CACb,OAAO,EAAO,WAAW,CAAG,CAC9B,EACA,MAAO,GACP,QAAS,8BACT,KAAM,UACN,KAAM,cACR,EACA,CACE,QAAS,CAEP,OAAO,EAAe,KAAK,MAAM,MAAO,EAAM,GAAG,CACnD,EACA,QAAS,CAEP,OAAO,KAAK,MAAM,UAAY,EAAO,MAAM,KAAK,KAAK,EAAI,KAAK,KAChE,EACA,QAAS,kCACT,KAAM,QACN,KAAM,QACN,SAAS,EAAO,CACd,IAAM,EAAQ,EAAM,OAQlB,OAPE,IAAU,EACL,GACE,EAAQ,EAAM,IAChB,sBAAsB,EAAM,IAAI,aAC9B,EAAQ,EAAM,IAChB,iBAAiB,EAAM,IAAI,aAE3B,EAEX,CACF,EACA,CACE,QAAS,CAEP,OAAO,EAAe,KAAK,MAAM,MAAO,EAAM,GAAG,CACnD,EACA,MAAO,CAEL,OAAO,KAAK,MAAM,QAAU,6BAA+B,EAC7D,EACA,QAAS,EAAgB,EAAI,GAAG,EAAgB,EAAE,GAAK,GACvD,QAAS,gCACT,KAAM,QACN,KAAM,QACN,SAAS,EAAO,CACd,IAAM,EAAQ,EAAM,OAMlB,OALE,EAAQ,EAAM,IACT,sBAAsB,EAAM,IAAI,aAC9B,EAAQ,EAAM,IAChB,iBAAiB,EAAM,IAAI,aAE3B,EAEX,CACF,EACA,CACE,QAAS,CACP,MAAO,GAAG,EAAO,IAAI,KAAK,GAAG,EAAE,GAAG,EAAO,IAAI,mCAAmC,GAClF,EACA,QAAS,8DACT,UAAW,GACX,KAAM,UACN,OAAO,EAAO,CACZ,OAAO,IAAU;EAAO,GAAK,CAC/B,EACA,KAAM,OACR,CACF,EC5JM,EAAa,MAAO,EAAS,IAAY,CAC7C,GAAI,CACF,IAAM,EAAQ,GAAS,QACjB,EAAU,GAAS,QACnB,EAAkB,GAAS,gBAE3B,EAAc,CAAC,SAAU,KAAM,CAAK,EACtC,GAAS,EAAY,KAAK,KAAM,CAAO,EACvC,GAAiB,EAAY,KAAK,KAAM,CAAe,EAEvD,GAAS,OACX,EAAY,CAAC,MAAO,GAAG,CAAW,CAAC,CAAC,KAAK,GAAG,CAAC,EAE7C,MAAM,EAAM,MAAO,EAAa,CAC9B,OAAQ,GAER,MAAO,SACT,CAAC,CAEL,OAAS,EAAY,CACnB,QAAQ,MAAM,EAAY,EAAK,MAAM,MAAO,EAAK,SAAS,YAAa,EAAM,cAAc,CAAC,EAC5F,EAAQ,KAAK,CAAC,CAChB,CACF,ECxBM,EAAgB,EAAK,EAAc,EAAG,OAAQ,gBAAgB,EAG9D,GAAY,EAAS,IAAY,CACrC,GAAI,CACF,IAAI,EAAgB,GAAS,QACzB,GAAS,SAAW,GAAS,UAAY;IAC3C,GAAiB,OAAO,EAAQ,WAE9B,GAAS,iBAAmB,GAAS,kBAAoB;IAC3D,GAAiB,OAAO,EAAQ,mBAG9B,GAAS,OACX,EAAY,CAAa,EAEzB,EAAG,cAAc,EAAe,CAAa,CAEjD,OAAS,EAAO,CACd,QAAQ,MAAM,CAAK,EACnB,EAAQ,KAAK,CAAC,CAChB,QAAU,CACR,EAAQ,KAAK,CAAC,CAChB,CACF,ECdM,CAAE,UAAW,EAcb,EAAkB,KAAO,IAA2B,CACxD,IAAI,EAAY,CAAC,EA6Bf,OA3BE,EAAQ,MACV,EAAO,EAEP,EAAK,QAAU,EAAO,EAAK,KAAM,EAAQ,KAAM,EAAQ,KAAK,EACvD,EAAK,UACR,QAAQ,IAAI,EAAY,EAAK,MAAM,MAAO,EAAK,SAAS,eAAgB,EAAK,IAAI,CAAC,EAClF,EAAQ,KAAK,CAAC,IAIhB,MAAM,EAAO,CAAS,CAAC,CACpB,KAAM,IACL,EAAQ,KAAO,EAAO,EAAQ,QAAS,EAAQ,MAAO,EAAQ,IAAI,EAC3D,EACR,CAAC,CACD,KAAM,GAAY,CACjB,EAAO,CACT,CAAC,CAAC,CACD,MAAM,QAAQ,KAAK,EAIxB,EAAK,QAAY,EAAO,EAAoB,EAAS,CAAI,EAAI,GAEzD,EAAQ,OAAS,EAAa,KACzB,EAAS,EAAM,CAAO,EAEtB,EAAW,EAAM,CAAO,CAEnC,EC5DA,IAAA,ED6DgB,GACV,EAAQ,OAAS,EAAa,MAChC,EAAgC,EACzB,EAAe,CAAC,CAAC,SAAW,EAAgB,CAAO,CAAC,GAEtD,EAAgB,CAAO,EGlEhC,MDCmB,EAAeC,CAAW;;;;AE+D7C,EAvDY,EACV;;;;;QAKM,EAAM,SAAS;QACf,EAAM,OAAO;QACb,EAAM,OAAO;QACb,EAAM,MAAM;QACZ,EAAM,KAAK;QACX,EAAM,KAAK;QACX,EAAM,QAAQ;;;QAGd,EAAQ,OAAO;QACf,EAAQ,QAAQ;QAChB,EAAQ,MAAM;QACd,EAAQ,MAAM;QACd,EAAQ,KAAK;;;;;;EAOnB,CACE,MAAO,EAEJ,EAAM,UAAW,CAAE,QAAS,GAAO,UAAW,IAAK,KAAM,SAAU,GACnE,EAAM,QAAS,CAAE,UAAW,IAAK,KAAM,SAAU,GACjD,EAAM,QAAS,CAAE,UAAW,IAAK,KAAM,SAAU,GACjD,EAAM,OAAQ,CAAE,QAAS,GAAM,UAAW,IAAK,KAAM,SAAU,GAC/D,EAAM,MAAO,CAAE,UAAW,IAAK,KAAM,SAAU,GAC/C,EAAM,MAAO,CAAE,UAAW,IAAK,KAAM,SAAU,GAC/C,EAAM,MAAO,CAAE,UAAW,IAAK,KAAM,SAAU,GAC/C,EAAM,MAAO,CAAE,QAAS,GAAO,KAAM,SAAU,GAC/C,EAAM,SAAU,CAAE,UAAW,IAAK,KAAM,SAAU,GAElD,EAAQ,QAAS,CAAE,QAAS,EAAe,QAAS,KAAM,QAAS,GACnE,EAAQ,SAAU,CAAE,KAAM,QAAS,GACnC,EAAQ,OAAQ,CAAE,KAAM,QAAS,GACjC,EAAQ,OAAQ,CAAE,KAAM,QAAS,GACjC,EAAQ,MAAO,CAAE,KAAM,QAAS,CACnC,EACA,WAAY,OAAO,IACrB,CASY,EAAG,EALd,EAAS,QAAU,GAAiBC,EAAO,CAAO,GAClD,EAAS,MAAQ,GAAiBA,EAAO,CAAO,GAChD,EAAS,UAAaC,EAAK,CAGN,CAAC"}