{"version":3,"sources":["../src/utils/defaultGetLocaleFromPath.ts","../src/generation/runtime/merge.ts","../src/generation/runtime/deepMerge.ts","../src/core/config.ts","../src/utils/keys.ts","../src/utils/json.ts","../src/utils/error-formatter.ts","../src/generation/runtime/translateWrapperFunction.ts","../src/generation/runtime/hrmHotUpdate.ts","../src/generation/runtime/createI18nInstance.ts","../src/generation/treeShakeGenerator.ts","../src/generation/generator.ts","../src/utils/hash.ts","../src/utils/file.ts","../node_modules/picocolors/picocolors.js","../src/core/combined-messages.ts","../src/core/file-manager.ts","../src/createConsoleLogger.ts","../package.json","../node_modules/readdirp/esm/index.js","../node_modules/chokidar/esm/handler.js","../node_modules/chokidar/esm/index.js","../src/api.ts","../src/cli.ts"],"names":["path","normalizePath","out","messages","error","deepMerge","init_deepMerge","createI18n","fallbackLocales","hrmHotUpdate","createI18nInstance","availableLocales","fs","open","pc","resolve","options","import_picocolors","Readable","lstat","stat","presolve","readdir","basename","pjoin","prelative","realpath","psep","osType","sysPath","main","fs_watch","unwatchFile","watchFile","rawEmitter","listener","dirname","newStats","closer","fsrealpath","stats","relative","sysPath2","DOUBLE_SLASH_RE","testString","EventEmitter","statcb","now","parseArgs","FileManager","normalizeConfig","createColoredLogger","mkdir","writeFile"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEO,SAAS,yBAAyB,QAAA,EAAiC;AAIxE,EAAA,MAAM,QAAA,GAAWA,2BAAA,CAAK,QAAA,CAAS,QAAQ,CAAA;AACvC,EAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,KAAA,CAAM,GAAG,CAAA;AAEhC,EAAA,IAAI,KAAA,CAAM,SAAS,CAAA,IAAK,KAAA,CAAM,MAAM,MAAA,GAAS,CAAC,MAAM,MAAA,EAAQ;AAC1D,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,MAAM,KAAA,GAAQ,mEAAA;AACd,EAAA,MAAM,UAAA,GAAa,QAAA,CAAS,KAAA,CAAM,KAAK,CAAA;AACvC,EAAA,IAAI,CAAC,UAAA,EAAY;AACf,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,IAAI,QAAA,CAAS,UAAA,CAAW,GAAG,CAAA,EAAG;AAC5B,IAAA,OAAO,IAAA;AAAA,EACT;AACA,EAAA,MAAM,MAAA,GAAS,WAAW,MAAA,EAAQ,MAAA;AAClC,EAAA,OAAO,MAAA,IAAU,MAAA,EAAQ,MAAA,GAAS,CAAA,GAAI,MAAA,GAAS,IAAA;AACjD;AAxBA,IAAA,6BAAA,GAAA,KAAA,CAAA;AAAA,EAAA,uCAAA,GAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACAA,IAEa,YAAA,EAEA,OAAA;AAJb,IAAA,UAAA,GAAA,KAAA,CAAA;AAAA,EAAA,iCAAA,GAAA;AAEO,IAAM,YAAA,GAAe,CAAgC,CAAA,EAAM,CAAA,KAAS,OAAO,MAAA,CAAO,EAAC,EAAG,CAAA,EAAG,CAAC,CAAA;AAE1F,IAAM,OAAA,GAAU,CAAM,CAAA,KAAiB,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA,GAAI,CAAA,GAAI,CAAA,GAAI,CAAC,CAAC,CAAA,GAAI,EAAC;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACJhF,SAAS,SAAA,CAAyC,QAAW,MAAA,EAAc;AACzE,EAAA,IAAI,MAAA,KAAW,QAAQ,OAAO,MAAA;AAC9B,EAAA,IAAI,KAAA,CAAM,QAAQ,MAAM,CAAA,IAAK,MAAM,OAAA,CAAQ,MAAM,GAAG,OAAO,MAAA;AAC3D,EAAA,IACE,UACA,MAAA,IACA,OAAO,MAAA,KAAW,QAAA,IAClB,OAAO,MAAA,KAAW,QAAA,IAClB,CAAC,KAAA,CAAM,QAAQ,MAAM,CAAA,IACrB,CAAC,KAAA,CAAM,OAAA,CAAQ,MAAM,CAAA,EACrB;AACA,IAAA,MAAM,GAAA,GAA2B,EAAC,GAAG,MAAA,EAAM;AAC3C,IAAA,KAAA,MAAW,GAAA,IAAO,MAAA,CAAO,IAAA,CAAK,MAAM,CAAA,EAAG;AACrC,MAAA,GAAA,CAAI,GAAG,CAAA,GAAI,GAAA,IAAO,MAAA,GAAS,SAAA,CAAU,MAAA,CAAO,GAAG,CAAA,EAAI,MAAA,CAAe,GAAG,CAAC,CAAA,GAAK,OAAe,GAAG,CAAA;AAAA,IAC/F;AACA,IAAA,OAAO,GAAA;AAAA,EACT;AACA,EAAA,OAAO,MAAA;AACT;AAlBA,IAAA,cAAA,GAAA,KAAA,CAAA;AAAA,EAAA,qCAAA,GAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACAA,IAAA,cAAA,GAAA,EAAA;AAAA,QAAA,CAAA,cAAA,EAAA;AAAA,EAAA,MAAA,EAAA,MAAA,MAAA;AAAA,EAAA,eAAA,EAAA,MAAA;AAAA,CAAA,CAAA;AAkBO,SAAS,eAAA,CAAgB,WAAA,GAAqC,EAAC,EAAG,QAAsB,GAAA,EAExD;AACrC,EAAA,MAAM,UAAA,GAAa,YAAY,UAAA,IAAc,IAAA;AAC7C,EAAA,MAAM,OAAe,GAAA,EAAK,IAAA,IAAQ,WAAA,CAAY,IAAA,IAAQ,QAAQ,GAAA,EAAI;AAElE,EAAA,SAAS,eAAe,OAAA,EAAyB;AAC/C,IAAA,IAAI,CAAC,OAAA,EAAS,MAAM,IAAI,MAAM,+BAA+B,CAAA;AAC7D,IAAA,MAAM,SAAA,GAAY,OAAA,CAAQ,UAAA,CAAW,GAAG,CAAA;AACxC,IAAA,MAAM,UAAA,GAAa,SAAA,GAAY,OAAA,CAAQ,KAAA,CAAM,CAAC,CAAA,GAAI,OAAA;AAClD,IAAA,MAAM,cAAA,GAAiB,WAAW,UAAA,CAAW,IAAI,IAAI,UAAA,CAAW,KAAA,CAAM,CAAC,CAAA,GAAI,UAAA;AAC3E,IAAA,MAAM,eAAA,GAAkBA,4BAAK,UAAA,CAAW,UAAU,IAC9C,UAAA,GACAA,2BAAAA,CAAK,IAAA,CAAK,IAAA,EAAM,cAAc,CAAA;AAClC,IAAA,MAAM,UAAA,GAAaC,mBAAc,eAAe,CAAA;AAChD,IAAA,OAAO,SAAA,GAAY,CAAA,CAAA,EAAI,UAAU,CAAA,CAAA,GAAK,UAAA;AAAA,EACxC;AAEA,EAAA,MAAM,QAAA,GAAW,YAAY,QAAA,IAAY,wBAAA;AAGzC,EAAA,MAAM,MAAA,GAA4B;AAAA,IAChC,GAAG,WAAA;AAAA,IACH,QAAA;AAAA,IACA,IAAA;AAAA,IACA,aAAA,EAAe,YAAY,aAAA,IAAiB,GAAA;AAAA,IAC5C,OAAA,EAAS,YAAY,KAAA,IAAS,KAAA;AAAA,IAC9B,SAAA,EAAW,YAAY,SAAA,IAAa,8BAAA;AAAA,IACpC,iBAAiB,WAAA,CAAY,eAAA;AAAA,IAC7B,iBAAA,EAAmB,YAAY,iBAAA,IAAqB,wBAAA;AAAA,IACpD,UAAA;AAAA,IACA,OAAA,EAAA,CAAU,KAAA,CAAM,OAAA,CAAQ,WAAA,CAAY,OAAO,CAAA,GACvC,WAAA,CAAY,OAAA,GACZ,WAAA,CAAY,OAAA,GACV,CAAC,WAAA,CAAY,OAAO,CAAA,GACpB;AAAA,MACA,qBAAA;AAAA,MACA,mBAAA;AAAA,MACA,SAAS,UAAU,CAAA,KAAA;AAAA,KACrB,EAAG,IAAI,cAAc,CAAA;AAAA,IACzB,OAAA,EAAA,CAAU,KAAA,CAAM,OAAA,CAAQ,WAAA,CAAY,OAAO,CAAA,GACvC,WAAA,CAAY,OAAA,GACZ,WAAA,CAAY,OAAA,GACV,CAAC,WAAA,CAAY,OAAO,CAAA,GACpB;AAAA,MACA,eAAA;AAAA,MACA,oBAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,eAAA;AAAA,MACA,eAAA;AAAA,MACA,aAAA;AAAA,MACA;AAAA,KACF,EAAG,GAAA,CAAI,CAAC,OAAA,KAAY;AACtB,MAAA,MAAM,QAAA,GAAW,eAAe,OAAO,CAAA;AAEvC,MAAA,OAAO,SAAS,UAAA,CAAW,GAAG,CAAA,GAAI,QAAA,GAAW,IAAI,QAAQ,CAAA,CAAA;AAAA,IAC3D,CAAC,CAAA,CAAE,GAAA,CAAI,CAAC,OAAA,KAAY;AAClB,MAAA,MAAM,QAAA,GAAW,eAAe,OAAO,CAAA;AAEvC,MAAA,OAAO,SAAS,UAAA,CAAW,GAAG,CAAA,GAAI,QAAA,GAAW,IAAI,QAAQ,CAAA,CAAA;AAAA,IAC3D,CAAC,CAAA;AAAA,IACD,KAAA,EAAO,YAAY,KAAA,IAAS,MAAA;AAAA,IAC5B,aAAA,EAAA,CAAgB,WAAA,CAAY,KAAA,IAAS,MAAA,MAAY,SAAS,SAAA,GAAY,YAAA;AAAA,IACtE,QAAQ,WAAA,CAAY,MAAA;AAAA,IACpB,KAAA,EAAO,YAAY,KAAA,IAAS,KAAA;AAAA,IAC5B,MAAA;AAAA,IACA,eAAe,WAAA,CAAY;AAAA,GAC7B;AAEA,EAAA,OAAO,MAAA;AACT;AAzFA,IASa,MAAA;AATb,IAAA,WAAA,GAAA,KAAA,CAAA;AAAA,EAAA,oBAAA,GAAA;AAKA,IAAA,6BAAA,EAAA;AACA,IAAA,UAAA,EAAA;AACA,IAAA,cAAA,EAAA;AAEO,IAAM,MAAA,GAAS;AAAA;AAAA,MAEpB,UAAA,EAAY,wBAAA;AAAA,MACZ,YAAA,EAAc;AAAA,KAChB;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACVO,SAAS,cAAc,IAAA,EAA0B;AACtD,EAAA,MAAM,GAAA,uBAAU,GAAA,EAAY;AAC5B,EAAA,KAAA,MAAW,KAAK,IAAA,EAAM;AACpB,IAAA,IAAI,OAAO,CAAA,KAAM,QAAA,IAAY,CAAA,EAAG,GAAA,CAAI,IAAI,CAAC,CAAA;AAAA,EAC3C;AACA,EAAA,OAAO,KAAA,CAAM,IAAA,CAAK,GAAG,CAAA,CAAE,KAAK,CAAC,CAAA,EAAG,CAAA,KAAO,CAAA,GAAI,CAAA,GAAI,EAAA,GAAK,CAAA,GAAI,CAAA,GAAI,IAAI,CAAE,CAAA;AACpE;AATA,IAAA,SAAA,GAAA,KAAA,CAAA;AAAA,EAAA,mBAAA,GAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACqEO,SAAS,iBAAiB,GAAA,EAAwC;AACvE,EAAA,MAAM,QAAkB,EAAC;AAEzB,EAAA,MAAM,aAAA,GAAgB,CAAC,GAAA,KACrB,MAAA,CAAO,UAAU,QAAA,CAAS,IAAA,CAAK,GAAG,CAAA,KAAM,iBAAA;AAE1C,EAAA,SAAS,IAAA,CAAK,OAAgB,WAAA,EAA2B;AAEvD,IAAA,IAAI,SAAS,IAAA,EAAM;AACjB,MAAA,IAAI,WAAA,EAAa,KAAA,CAAM,IAAA,CAAK,WAAW,CAAA;AACvC,MAAA;AAAA,IACF;AAGA,IAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACxB,MAAA,IAAI,WAAA,EAAa,KAAA,CAAM,IAAA,CAAK,WAAW,CAAA;AACvC,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,KAAA,CAAM,QAAQ,CAAA,EAAA,EAAK;AACrC,QAAA,MAAM,IAAA,GAAO,cAAc,CAAA,EAAG,WAAW,IAAI,CAAC,CAAA,CAAA,GAAK,OAAO,CAAC,CAAA;AAC3D,QAAA,IAAA,CAAK,KAAA,CAAM,CAAC,CAAA,EAAG,IAAI,CAAA;AAAA,MACrB;AACA,MAAA;AAAA,IACF;AAGA,IAAA,IAAI,aAAA,CAAc,KAAK,CAAA,EAAG;AACxB,MAAA,MAAM,OAAA,GAAU,MAAA,CAAO,OAAA,CAAQ,KAAK,CAAA;AACpC,MAAA,IAAI,OAAA,CAAQ,WAAW,CAAA,EAAG;AAExB,QAAA;AAAA,MACF;AACA,MAAA,KAAA,MAAW,CAAC,CAAA,EAAG,CAAC,CAAA,IAAK,OAAA,EAAS;AAC5B,QAAA,MAAM,OAAO,WAAA,GAAc,CAAA,EAAG,WAAW,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,GAAK,CAAA;AACnD,QAAA,IAAA,CAAK,GAAG,IAAI,CAAA;AAAA,MACd;AACA,MAAA;AAAA,IACF;AAGA,IAAA,IAAI,WAAA,EAAa;AACf,MAAA,KAAA,CAAM,KAAK,WAAW,CAAA;AAAA,IACxB;AAAA,EACF;AAEA,EAAA,IAAA,CAAK,KAAK,EAAE,CAAA;AACZ,EAAA,OAAO,KAAA;AACT;AAMO,SAAS,aAAkC,KAAA,EAAyB;AACzE,EAAA,IAAI,KAAA,KAAU,IAAA,IAAQ,OAAO,KAAA,KAAU,UAAU,OAAO,KAAA;AACxD,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACxB,IAAA,MAAM,GAAA,GAAM,KAAA;AACZ,IAAA,MAAMC,IAAAA,GAAiB,IAAI,KAAA,CAAM,GAAA,CAAI,MAAM,CAAA;AAC3C,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,GAAA,CAAI,MAAA,EAAQ,CAAA,EAAA,EAAKA,IAAAA,CAAI,CAAC,CAAA,GAAI,YAAA,CAAa,GAAA,CAAI,CAAC,CAAC,CAAA;AACjE,IAAA,OAAOA,IAAAA;AAAA,EACT;AACA,EAAA,MAAM,GAAA,GAAM,KAAA;AACZ,EAAA,MAAM,IAAA,GAAO,MAAA,CAAO,IAAA,CAAK,GAAG,EAAE,IAAA,CAAK,CAAC,CAAA,EAAG,CAAA,KAAO,IAAI,CAAA,GAAI,EAAA,GAAK,CAAA,GAAI,CAAA,GAAI,IAAI,CAAE,CAAA;AACzE,EAAA,MAAM,MAAkB,EAAC;AACzB,EAAA,KAAA,MAAW,CAAA,IAAK,MAAM,GAAA,CAAI,CAAC,IAAI,YAAA,CAAa,GAAA,CAAI,CAAC,CAAC,CAAA;AAClD,EAAA,OAAO,GAAA;AACT;AAQO,SAAS,mBAAmBC,SAAAA,EAA+C;AAChF,EAAA,MAAM,YAAsB,EAAC;AAC7B,EAAA,MAAM,UAAA,uBAAiB,GAAA,EAAiC;AAGxD,EAAA,MAAM,YAAA,GAAe,CAAC,GAAA,KAAyB;AAC7C,IAAA,IAAI,GAAA,KAAQ,MAAM,OAAO,MAAA;AACzB,IAAA,IAAI,GAAA,KAAQ,QAAW,OAAO,WAAA;AAC9B,IAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,GAAG,CAAA,EAAG,OAAO,OAAA;AAC/B,IAAA,IAAI,OAAO,GAAA,KAAQ,QAAA,EAAU,OAAO,QAAA;AACpC,IAAA,OAAO,OAAO,GAAA;AAAA,EAChB,CAAA;AAGA,EAAA,MAAM,eAAA,GAAkB,CAAC,GAAA,EAAc,MAAA,EAAgBH,QAAO,EAAA,KAAa;AACzE,IAAA,IAAI,GAAA,KAAQ,IAAA,IAAQ,GAAA,KAAQ,MAAA,EAAW;AACrC,MAAA,IAAIA,KAAAA,EAAM;AACR,QAAA,IAAI,CAAC,UAAA,CAAW,GAAA,CAAIA,KAAI,CAAA,aAAc,GAAA,CAAIA,KAAAA,kBAAM,IAAI,GAAA,EAAK,CAAA;AACzD,QAAA,UAAA,CAAW,IAAIA,KAAI,CAAA,CAAG,IAAI,MAAA,EAAQ,YAAA,CAAa,GAAG,CAAC,CAAA;AAAA,MACrD;AACA,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,GAAG,CAAA,EAAG;AACtB,MAAA,IAAIA,KAAAA,EAAM;AACR,QAAA,IAAI,CAAC,UAAA,CAAW,GAAA,CAAIA,KAAI,CAAA,aAAc,GAAA,CAAIA,KAAAA,kBAAM,IAAI,GAAA,EAAK,CAAA;AACzD,QAAA,UAAA,CAAW,GAAA,CAAIA,KAAI,CAAA,CAAG,GAAA,CAAI,QAAQ,OAAO,CAAA;AAAA,MAC3C;AAEA,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,OAAO,QAAQ,QAAA,EAAU;AAC3B,MAAA,IAAIA,KAAAA,EAAM;AACR,QAAA,IAAI,CAAC,UAAA,CAAW,GAAA,CAAIA,KAAI,CAAA,aAAc,GAAA,CAAIA,KAAAA,kBAAM,IAAI,GAAA,EAAK,CAAA;AACzD,QAAA,UAAA,CAAW,GAAA,CAAIA,KAAI,CAAA,CAAG,GAAA,CAAI,QAAQ,QAAQ,CAAA;AAAA,MAC5C;AACA,MAAA,KAAA,MAAW,CAAC,GAAA,EAAK,KAAK,KAAK,MAAA,CAAO,OAAA,CAAQ,GAAG,CAAA,EAAG;AAC9C,QAAA,MAAM,UAAUA,KAAAA,GAAO,CAAA,EAAGA,KAAI,CAAA,CAAA,EAAI,GAAG,CAAA,CAAA,GAAK,GAAA;AAC1C,QAAA,eAAA,CAAgB,KAAA,EAAO,QAAQ,OAAO,CAAA;AAAA,MACxC;AACA,MAAA;AAAA,IACF;AAGA,IAAA,IAAIA,KAAAA,EAAM;AACR,MAAA,IAAI,CAAC,UAAA,CAAW,GAAA,CAAIA,KAAI,CAAA,aAAc,GAAA,CAAIA,KAAAA,kBAAM,IAAI,GAAA,EAAK,CAAA;AACzD,MAAA,UAAA,CAAW,IAAIA,KAAI,CAAA,CAAG,IAAI,MAAA,EAAQ,YAAA,CAAa,GAAG,CAAC,CAAA;AAAA,IACrD;AAAA,EACF,CAAA;AAGA,EAAA,KAAA,MAAW,CAAC,MAAA,EAAQ,cAAc,KAAK,MAAA,CAAO,OAAA,CAAQG,SAAQ,CAAA,EAAG;AAC/D,IAAA,IAAI,WAAW,aAAA,EAAe;AAC9B,IAAA,eAAA,CAAgB,gBAAgB,MAAM,CAAA;AAAA,EACxC;AAGA,EAAA,KAAA,MAAW,CAAC,GAAA,EAAK,WAAW,CAAA,IAAK,UAAA,CAAW,SAAQ,EAAG;AACrD,IAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,IAAA,CAAK,WAAA,CAAY,SAAS,CAAA;AAC9C,IAAA,MAAM,WAAA,GAAc,IAAI,GAAA,CAAI,KAAA,CAAM,GAAA,CAAI,CAAC,CAAC,CAAA,EAAG,IAAI,CAAA,KAAM,IAAI,CAAC,CAAA;AAE1D,IAAA,IAAI,WAAA,CAAY,OAAO,CAAA,EAAG;AAExB,MAAA,MAAM,UAAA,uBAAiB,GAAA,EAAsB;AAC7C,MAAA,KAAA,MAAW,CAAC,MAAA,EAAQ,IAAI,CAAA,IAAK,KAAA,EAAO;AAClC,QAAA,IAAI,CAAC,WAAW,GAAA,CAAI,IAAI,GAAG,UAAA,CAAW,GAAA,CAAI,IAAA,EAAM,EAAE,CAAA;AAClD,QAAA,UAAA,CAAW,GAAA,CAAI,IAAI,CAAA,CAAG,IAAA,CAAK,MAAM,CAAA;AAAA,MACnC;AAEA,MAAA,MAAM,iBAAA,GAAoB,MAAM,IAAA,CAAK,UAAA,CAAW,SAAS,CAAA,CACtD,GAAA,CAAI,CAAC,CAAC,IAAA,EAAM,OAAO,CAAA,KAAM,CAAA,EAAG,IAAI,CAAA,KAAA,EAAQ,OAAA,CAAQ,IAAA,CAAK,IAAI,CAAC,CAAA,CAAA,CAAG,CAAA,CAC7D,IAAA,CAAK,MAAM,CAAA;AAEd,MAAA,SAAA,CAAU,IAAA,CAAK,CAAA,KAAA,EAAQ,GAAG,CAAA,yBAAA,EAA4B,iBAAiB,CAAA,CAAE,CAAA;AAAA,IAC3E;AAAA,EACF;AAEA,EAAA,OAAO,SAAA;AACT;AAEO,SAAS,YAAA,CAAoDA,WAAmC,UAAA,EAA4B;AACjI,EAAA,MAAM,qBAAA,GAAyBA,YAAW,UAAU,CAAA,IAAK,OAAO,MAAA,CAAOA,SAAQ,EAAE,CAAC,CAAA;AAClF,EAAA,MAAM,UAAA,GAAa,gBAAA,CAAiB,qBAAqB,CAAA,CACtD,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,CAAE,OAAA,CAAQ,iBAAA,EAAmB,EAAE,CAAC,CAAA;AAE9C,EAAA,OAAO,cAAc,UAAU,CAAA;AACjC;AApOA,IAAA,SAAA,GAAA,KAAA,CAAA;AAAA,EAAA,mBAAA,GAAA;AACA,IAAA,SAAA,EAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACWO,SAAS,qBAAA,CACd,SACA,QAAA,EACK;AACL,EAAA,IAAI;AACF,IAAA,OAAO,IAAA,CAAK,MAAM,OAAO,CAAA;AAAA,EAC3B,SAAS,KAAA,EAAY;AACnB,IAAA,MAAM,QAAA,GAAW,wBAAA,CAAyB,KAAA,EAAO,OAAO,CAAA;AACxD,IAAA,MAAM,oBAAA,CAAqB,QAAA,EAAU,OAAA,EAAS,QAAA,EAAU,MAAM,OAAO,CAAA;AAAA,EACvE;AACF;AAKA,SAAS,wBAAA,CACP,OACA,OAAA,EACsB;AACtB,EAAA,MAAM,UAAU,KAAA,CAAM,OAAA;AAItB,EAAA,MAAM,aAAA,GAAgB,OAAA,CAAQ,KAAA,CAAM,mBAAmB,CAAA;AACvD,EAAA,IAAI,aAAA,EAAe;AACjB,IAAA,MAAM,QAAA,GAAW,QAAA,CAAS,aAAA,CAAc,CAAC,GAAG,EAAE,CAAA;AAC9C,IAAA,OAAO,gBAAA,CAAiB,SAAS,QAAQ,CAAA;AAAA,EAC3C;AAGA,EAAA,MAAM,YAAA,GAAe,OAAA,CAAQ,KAAA,CAAM,yBAAyB,CAAA;AAC5D,EAAA,IAAI,YAAA,EAAc;AAChB,IAAA,OAAO;AAAA,MACL,IAAA,EAAM,QAAA,CAAS,YAAA,CAAa,CAAC,GAAG,EAAE,CAAA;AAAA,MAClC,MAAA,EAAQ,QAAA,CAAS,YAAA,CAAa,CAAC,GAAG,EAAE;AAAA,KACtC;AAAA,EACF;AAEA,EAAA,OAAO,IAAA;AACT;AAKA,SAAS,gBAAA,CAAiB,SAAiB,QAAA,EAAiC;AAC1E,EAAA,MAAM,QAAQ,OAAA,CAAQ,SAAA,CAAU,GAAG,QAAQ,CAAA,CAAE,MAAM,IAAI,CAAA;AACvD,EAAA,MAAM,OAAO,KAAA,CAAM,MAAA;AACnB,EAAA,MAAM,SAAS,KAAA,CAAM,KAAA,CAAM,MAAA,GAAS,CAAC,EAAE,MAAA,GAAS,CAAA;AAEhD,EAAA,OAAO,EAAC,MAAM,MAAA,EAAM;AACtB;AAKA,SAAS,oBAAA,CACP,QAAA,EACA,OAAA,EACA,QAAA,EACA,eAAA,EACO;AACP,EAAA,IAAI,CAAC,QAAA,EAAU;AAEb,IAAA,MAAMC,MAAAA,GAAQ,IAAI,KAAA,CAAM,CAAA,wBAAA,EAA2B,QAAQ;AAAA,EAAK,eAAe,CAAA,CAAE,CAAA;AACjF,IAAAA,OAAM,IAAA,GAAO,gBAAA;AACb,IAAA,OAAOA,MAAAA;AAAA,EACT;AAEA,EAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,KAAA,CAAM,IAAI,CAAA;AAChC,EAAA,MAAM,EAAC,IAAA,EAAM,MAAA,EAAM,GAAI,QAAA;AAGvB,EAAA,MAAM,YAAA,GAAe,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,OAAO,CAAC,CAAA;AACzC,EAAA,MAAM,aAAa,IAAA,CAAK,GAAA,CAAI,KAAA,CAAM,MAAA,EAAQ,OAAO,CAAC,CAAA;AAClD,EAAA,MAAM,YAAA,GAAe,KAAA,CAAM,KAAA,CAAM,YAAA,EAAc,UAAU,CAAA;AAGzD,EAAA,MAAM,aAAuB,EAAC;AAC9B,EAAA,UAAA,CAAW,IAAA,CAAK;AAAA,2BAAA,EAA2B,QAAQ,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA,EAAI,MAAM,CAAA,CAAE,CAAA;AACvE,EAAA,UAAA,CAAW,KAAK,EAAE,CAAA;AAClB,EAAA,UAAA,CAAW,KAAK,eAAe,CAAA;AAC/B,EAAA,UAAA,CAAW,KAAK,EAAE,CAAA;AAGlB,EAAA,YAAA,CAAa,OAAA,CAAQ,CAAC,WAAA,EAAa,KAAA,KAAU;AAC3C,IAAA,MAAM,OAAA,GAAU,eAAe,KAAA,GAAQ,CAAA;AACvC,IAAA,MAAM,cAAc,OAAA,KAAY,IAAA;AAChC,IAAA,MAAM,MAAA,GAAS,cAAc,GAAA,GAAM,GAAA;AACnC,IAAA,MAAM,aAAa,MAAA,CAAO,OAAO,CAAA,CAAE,QAAA,CAAS,GAAG,GAAG,CAAA;AAElD,IAAA,UAAA,CAAW,KAAK,CAAA,EAAG,MAAM,IAAI,UAAU,CAAA,GAAA,EAAM,WAAW,CAAA,CAAE,CAAA;AAG1D,IAAA,IAAI,WAAA,IAAe,SAAS,CAAA,EAAG;AAC7B,MAAA,MAAM,OAAA,GAAU,GAAA,CAAI,MAAA,CAAO,CAAA,GAAI,MAAM,CAAA,GAAI,GAAA;AACzC,MAAA,UAAA,CAAW,KAAK,OAAO,CAAA;AAAA,IACzB;AAAA,EACF,CAAC,CAAA;AAED,EAAA,UAAA,CAAW,KAAK,EAAE,CAAA;AAElB,EAAA,MAAM,QAAQ,IAAI,KAAA,CAAM,UAAA,CAAW,IAAA,CAAK,IAAI,CAAC,CAAA;AAC7C,EAAA,KAAA,CAAM,IAAA,GAAO,gBAAA;AACb,EAAA,OAAO,KAAA;AACT;AAoBO,SAAS,iBAAA,CACd,UACA,KAAA,EACO;AACP,EAAA,IAAI,KAAA,CAAM,IAAA,KAAS,gBAAA,IAAoB,KAAA,CAAM,SAAS,WAAA,EAAa;AAEjE,IAAA,OAAO,KAAA;AAAA,EACT;AAEA,EAAA,MAAM,eAAe,IAAI,KAAA;AAAA,IACvB;AAAA,wBAAA,EAAwB,QAAQ;AAAA,EAAK,MAAM,OAAO;AAAA;AAAA,GACpD;AACA,EAAA,YAAA,CAAa,IAAA,GAAO,qBAAA;AACpB,EAAA,YAAA,CAAa,QAAQ,KAAA,CAAM,KAAA;AAC3B,EAAA,OAAO,YAAA;AACT;AAvJA,IAAA,oBAAA,GAAA,KAAA,CAAA;AAAA,EAAA,8BAAA,GAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACaO,SAAS,yBAA8D,EAAA,EAAc;AAG1F,EAAA,QAAQ,IAAI,IAAA,KAAoB;AAE9B,IAAA,IAAI,IAAA,CAAK,UAAU,CAAA,EAAG;AACpB,MAAA,MAAM,SAAA,GAAY,KAAK,CAAC,CAAA;AACxB,MAAA,OAAA,CAAQ,GAAA,CAAI,IAAA,EAAM,OAAO,SAAS,CAAA;AAKlC,MAAA,IAAI,OAAO,SAAA,KAAc,QAAA,IAAa,OAAO,SAAA,KAAc,QAAA,IAAY,CAAC,KAAA,CAAM,UAAA,CAAW,SAAS,CAAC,CAAA,EAAI;AACrG,QAAA,MAAM,YAAA,GAAe,UAAA,CAAW,SAAA,CAAU,QAAA,EAAU,CAAA;AACpD,QAAA,MAAM,gBAAA,GAAmB,KAAK,CAAC,CAAA;AAK/B,QAAA,MAAM,WAAA,GAAe,OAAO,gBAAA,KAAqB,QAAA,IAAY,qBAAqB,IAAA,IAAQ,CAAC,KAAA,CAAM,OAAA,CAAQ,gBAAgB,CAAA,GACrH,EAAC,GAAG,gBAAA,EAAkB,KAAA,EAAO,YAAA,EAAc,CAAA,EAAG,YAAA,KAC9C,EAAC,KAAA,EAAO,YAAA,EAAc,CAAA,EAAG,YAAA,EAAY;AAGzC,QAAA,MAAM,OAAA,GAAU;AAAA,UACd,KAAK,CAAC,CAAA;AAAA;AAAA;AAAA,UAEN;AAAA;AAAA,SAEF;AACA,QAAA,OAAA,CAAQ,IAAI,WAAW,CAAA;AAGvB,QAAA,OAAO,EAAA,CAAG,KAAA,CAAM,IAAA,EAAM,OAAO,CAAA;AAAA,MAC/B;AAAA,IACF;AAIA,IAAA,OAAO,EAAA,CAAG,KAAA,CAAM,IAAA,EAAM,IAAI,CAAA;AAAA,EAC5B,CAAA;AACF;AAtDA,IAwDO,gCAAA;AAxDP,IAAA,6BAAA,GAAA,KAAA,CAAA;AAAA,EAAA,4DAAA,GAAA;AAwDA,IAAO,gCAAA,GAAQ,wBAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ALxDf,SAASC,UAAAA,CAAyC,QAAW,MAAA,EAAc;AACzE,EAAA,IAAI,MAAA,KAAW,QAAQ,OAAO,MAAA;AAC9B,EAAA,IAAI,KAAA,CAAM,QAAQ,MAAM,CAAA,IAAK,MAAM,OAAA,CAAQ,MAAM,GAAG,OAAO,MAAA;AAC3D,EAAA,IACE,UACA,MAAA,IACA,OAAO,MAAA,KAAW,QAAA,IAClB,OAAO,MAAA,KAAW,QAAA,IAClB,CAAC,KAAA,CAAM,QAAQ,MAAM,CAAA,IACrB,CAAC,KAAA,CAAM,OAAA,CAAQ,MAAM,CAAA,EACrB;AACA,IAAA,MAAM,GAAA,GAA2B,EAAC,GAAG,MAAA,EAAM;AAC3C,IAAA,KAAA,MAAW,GAAA,IAAO,MAAA,CAAO,IAAA,CAAK,MAAM,CAAA,EAAG;AACrC,MAAA,GAAA,CAAI,GAAG,CAAA,GAAI,GAAA,IAAO,MAAA,GAASA,UAAAA,CAAU,MAAA,CAAO,GAAG,CAAA,EAAI,MAAA,CAAe,GAAG,CAAC,CAAA,GAAK,OAAe,GAAG,CAAA;AAAA,IAC/F;AACA,IAAA,OAAO,GAAA;AAAA,EACT;AACA,EAAA,OAAO,MAAA;AACT;AAlBA,IAAAC,eAAAA,GAAA,KAAA,CAAA;AAAA,EAAA,6CAAA,GAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;AMiCO,SAAS,YAAA,CAAaH,SAAAA,EAAsC,IAAA,EAAiE,GAAA,EAAoBE,UAAAA,EAAoC;AAE1L,EAAA,MAAM,UAAA,GAAa,GAAA,IAAO,UAAA,EAAY,UAAA,EAAY,MAAA;AAClD,EAAA,IAAI,CAAC,UAAA,EAAY;AACf,IAAA,OAAA,CAAQ,MAAM,kEAAkE,CAAA;AAChF,IAAA;AAAA,EACF;AACA,EAAA,IAAI,CAAC,IAAA,EAAM,QAAA,EAAU,WAAW,MAAA,IAAU,CAAC,MAAM,MAAA,EAAQ;AACvD,IAAA,OAAA,CAAQ,IAAA,CAAK,4EAA4E,IAAI,CAAA;AAC7F,IAAA;AAAA,EACF;AAEA,EAAA,IAAI,KAAK,QAAA,EAAU;AAEjB,IAAA,OAAA,CAAQ,MAAM,CAAA,+CAAA,EAAkD,IAAA,CAAK,SAAS,SAAS,CAAA,EAAA,EAAK,KAAK,QAAA,CAAS,SAAA,CAAU,IAAA,CAAK,GAAG,CAAC,CAAA,YAAA,EAAe,IAAA,CAAK,MAAM,IAAA,CAAK,IAAI,CAAC,CAAA,CAAE,CAAA;AAEnK,IAAA,MAAM,cAAA,GAAiB,KAAK,QAAA,CAAS,QAAA;AAGrC,IAAA,IAAI,UAAA,EAAY;AAEd,MAAA,IAAA,CAAK,QAAA,CAAS,SAAA,CAAU,OAAA,CAAQ,CAAA,MAAA,KAAU;AACxC,QAAA,UAAA,CAAW,gBAAA,CAAiB,MAAA,EAAQ,cAAA,CAAe,MAAM,CAAC,CAAA;AAAA,MAE5D,CAAC,CAAA;AAAA,IACH;AAAA,EAGF,CAAA,MAAO;AACL,IAAA,OAAA,CAAQ,KAAA,CAAM,mDAAA,GAAsD,IAAA,CAAK,MAAM,CAAA;AAC/E,IAAA,UAAA,CAAW,kBAAA,CAAmB,IAAA,CAAK,MAAA,EAAQ,IAAA,CAAK,MAAM,CAAA;AAAA,EACxD;AAIA,EAAA,MAAM,aAAA,GAAgB,OAAA,CAAQ,UAAA,CAAW,MAAM,CAAA;AAC/C,EAAA,IAAI,CAAC,aAAA,EAAe;AAClB,IAAA,OAAA,CAAQ,KAAK,8EAA8E,CAAA;AAC3F,IAAA;AAAA,EACF;AACA,EAAA,IAAI,UAAA,CAAW,UAAA,CAAW,MAAM,CAAA,EAAG;AACjC,IAAA,UAAA,CAAW,OAAO,KAAA,GAAQ,aAAA;AAAA,EAC5B,CAAA,MAAO;AAGL,IAAA,UAAA,CAAW,MAAA,GAAS,KAAK,MAAA,IAAU,aAAA;AAAA,EACrC;AAIF;AAnFA,IAqFO,oBAAA;AArFP,IAAA,iBAAA,GAAA,KAAA,CAAA;AAAA,EAAA,gDAAA,GAAA;AAqFA,IAAO,oBAAA,GAAQ,YAAA;AAAA,EAAA;AAAA,CAAA,CAAA;AC5ER,SAAS,mBAA8C,OAAA,EAAmT;AAG/W,EAAA,MAAM,UAAUE,kBAAA,CAAW;AAAA,IACzB,cAAA,EAAgB,eAAA;AAAA;AAAA;AAAA,IAGhB,QAAQ,SAAA,EAAW,QAAA;AAAA,IACnB,MAAA,EAAQ,KAAA;AAAA,IACR,GAAG,OAAA;AAAA,IACH;AAAA,GACe,CAAA;AAEjB,EAAA,UAAA,CAAW,OAAA,GAAU,OAAA;AAErB,EAAA,OAAO,OAAA;AACT;AAzBA,IA2BO,0BAAA;AA3BP,IAAA,uBAAA,GAAA,KAAA,CAAA;AAAA,EAAA,sDAAA,GAAA;AA2BA,IAAO,0BAAA,GAAQ,kBAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACuDf,SAAS,oBAAoB,gBAAA,EAAyD;AACpF,EAAe,gBAAA,CAAiB;AAEhC,EAAA,SAAS,WAAA,GAAc;AAgBrB,IAAA,OAAO,CAAA,wBAAA,EAA2B,iBAAiB,kBAAkB,CAAA,CAAA,CAAA;AAAA,EAEvE;AAEA,EAAA,OAAO;AAAA,IACL,CAAC,OAAO,GAAG;AAAA;AAAA;AAAA,IAAA,CAAA;AAAA,IAIX,CAACJ,SAAQ,GAAG,WAAA,EAAY;AAAA,IACxB,CAAC,gBAAgB,GAAG,CAAA,gCAAA,EAAmC,gBAAA,CAAiB,gBAAgB,CAAA,CAAA,CAAA;AAAA,IACxF,CAACK,gBAAe,GAAG,CAAA,+BAAA,EAAkC,KAAK,SAAA,CAAU,gBAAA,CAAiB,eAAe,CAAC,CAAA,CAAA,CAAA;AAAA,IACrG,CAACC,aAAY,GAAG,gBAAA;AAAA,IAChB,CAAC,UAAU,GAAG,4DAAA;AAAA,IAGd,CAAC,kBAAkB,GAAG,SAAA,GAAY,gCAAA;AAAA,IAClC,CAACC,mBAAkB,GAAG,SAAA,GAAY,0BAAA;AAAA,IAClC,CAAC,wBAAwB,GAAG,6DAAA;AAAA,IAC5B,CAAC,eAAe,GACd,CAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;AAAA,GAYJ;AAEF;AAvIA,IAyBa,OAAA,EACAP,SAAAA,EACAM,aAAAA,EACA,gBAAA,EACA,UAAA,EACAD,kBACA,kBAAA,EACAE,mBAAAA,EACA,wBAAA,EACA,eAAA,EAMA,gBAAA,EAoGA,cAAA;AA5Ib,IAAA,uBAAA,GAAA,KAAA,CAAA;AAAA,EAAA,sCAAA,GAAA;AAGA,IAAA,6BAAA,EAAA;AACA,IAAAJ,eAAAA,EAAAA;AACA,IAAA,iBAAA,EAAA;AACA,IAAA,uBAAA,EAAA;AAmBO,IAAM,OAAA,GAAU,UAAA;AAChB,IAAMH,SAAAA,GAAW,UAAA;AACjB,IAAMM,aAAAA,GAAe,eAAA;AACrB,IAAM,gBAAA,GAAmB,kBAAA;AACzB,IAAM,UAAA,GAAa,YAAA;AACnB,IAAMD,gBAAAA,GAAkB,iBAAA;AACxB,IAAM,kBAAA,GAAqB,oBAAA;AAC3B,IAAME,mBAAAA,GAAqB,oBAAA;AAC3B,IAAM,wBAAA,GAA2B,0BAAA;AACjC,IAAM,eAAA,GAAkB,iBAAA;AAMxB,IAAM,gBAAA,GAAmB;;AAAA;AAAA;AAAA,EAI9BL,UAAS;AAAA,EACT,oBAAiB;AAAA;AAAA;;AAAA;AAAA,CAAA,CAAA;AA+FZ,IAAM,iBAAN,MAAqB;AAAA,MACT,KAAA;AAAA,MACA,OAAA;AAAA,MAEjB,YAAY,gBAAA,EAAoC;AAC9C,QAAA,IAAA,CAAK,KAAA,GAAQ,oBAAoB,gBAAgB,CAAA;AACjD,QAAA,IAAA,CAAK,UAAU,gBAAA,CAAiB,MAAA;AAAA,MAClC;AAAA;AAAA,MAIA,aAAA,CAAc,gBAAgB,UAAA,EAAoB;AAChD,QAAA,OAAO,MAAA,CAAO,OAAO,IAAA,CAAK,KAAK,EAAE,IAAA,CAAK,MAAM,IAAI,iBAAA,GAAoB,aAAA;AAAA,MACtE;AAAA,MAEA,mBAAmB,GAAA,EAA8C;AAC/D,QAAA,KAAA,MAAW,CAAC,UAAU,YAAY,CAAA,IAAK,OAAO,OAAA,CAAQ,IAAA,CAAK,KAAK,CAAA,EAAG;AAGjE,UAAA,IAAI,QAAA,CAAS,QAAA,EAAS,IAAK,GAAA,CAAI,UAAS,EAAG;AACzC,YAAA,OAAO,YAAA;AAAA,UACT;AAAA,QAEF;AACA,QAAA,OAAO,MAAA;AAAA,MACT;AAAA,MAGA,iBAAA,CAAkB,MAAA,EAA6B,SAAA,GAAY,MAAA,EAAgB;AAGzE,QAAA,MAAM,YAAA,GAAe,IAAA,CAAK,kBAAA,CAAmB,MAAM,CAAA;AACnD,QAAA,IAAI,CAAC,YAAA,EAAc;AAEjB,UAAA,IAAA,CAAK,OAAA,CAAQ,MAAA,CAAO,KAAA,CAAM,CAAA,6CAAA,EAAgD,MAAM,CAAA,mBAAA,EAAsB,MAAA,CAAO,OAAA,CAAQ,IAAA,CAAK,KAAK,CAAA,CAAE,IAAA,CAAK,IAAI,CAAC,CAAA,CAAE,CAAA;AAC7I,UAAA,OAAO,IAAA,CAAK,cAAc,MAAM,CAAA;AAAA,QAClC;AAKA,QAAA,MAAM,WAAA,GAAc,IAAA,CAAK,KAAA,CAAM,OAAO,CAAA;AAOtC,QAAA,MAAM,iBAAA,GAAyC,CAAA,eAAA,EAAkB,MAAM,CAAA,CAAA,CAAK;AAE5E,QAAA,MAAM,QAAQ,CAAC,WAAA,EAAa,cAAc,iBAAiB,CAAA,CAAE,OAAO,OAAO,CAAA;AAC3E,QAAA,OAAO,KAAA,CAAM,KAAK,SAAS,CAAA;AAAA,MAC7B;AAAA,KACF;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACzLO,SAAS,eAAe,MAAA,EAGpB;AACT,EAAA,MAAM;AAAA,IACJ,gBAAA;AAAA,IACA;AAAA,GACF,GAAI,MAAA;AACJ,EAAA,MAAM,QAAA,GAAW,QAAQ,QAAA,IAAY,iBAAA;AAErC,EAAA,MAAM,YAAY,gBAAA,CAAiB,MAAA;AAGnC,EAAA,MAAM,gBACH,MAAA,EAAQ,MAAA;AAAA,EACP,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAAA,EAKmB,SAAS;AAAA,CAAA,CAChC,KAAA,CAAM,IAAI,CAAA,CAAE,GAAA,CAAI,OAAK,CAAA,CAAE,IAAA,EAAM,CAAA,CAAE,OAAO,CAAA,CAAA,KAAK,CAAC,CAAA,CAAE,IAAA,CAAK,IAAI,CAAA,GAAI,MAAA;AAE3D,EAAA,MAAM,EAAA,GAAK,IAAA;AACX,EAAA,MAAM,qBAAqB,gBAAA,CAAiB,kBAAA;AAC5C,EAAA,MAAM,YAAY,gBAAA,CAAiB,IAAA;AACnC,EAAA,MAAMM,oBAAmB,gBAAA,CAAiB,SAAA;AAG1C,EAAA,MAAM,SAAA,GAAY;AAAA,IAChB,kBAAA;AAAA,IAGA;;AAAA,gBAAA,EAEc,QAAQ,CAAA;AAAA;;AAAA;;AAAA,qCAAA,EAKa,IAAA,CAAK,SAAA,CAAU,gBAAA,CAAiB,QAAQ,CAAC,CAAA;AAAA;;AAAA,qEAAA,EAAA,CAGR,SAAA,IAAW,EAAC,EAAG,IAAA,CAAK,OAAO,CAAC,CAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA,gBAAA,EASlF,QAAQ,CAAA;AAAA;;AAAA,4CAAA,EAGoBA,iBAAAA,CAAiB,IAAI,CAAA,CAAA,KAAK,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,CAAG,CAAA,CAAE,IAAA,CAAK,IAAI,CAAC,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAAA,EAK1E,QAAQ,CAAA;AAAA;AAAA,qCAAA,EAEa,QAAQ,CAAA;AAAA;AAAA,mHAAA,EAEsE,QAAQ,CAAA;AAAA,uBAAA,EACpG,QAAQ,CAAA;AAAA,wBAAA,EACP,QAAQ,CAAA;AAAA,yDAAA,EACyB,QAAQ,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,gCAAA,EAyCjC,gBAAA,CAAiB,OAAO,UAAU,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,iCAAA,EAiCjC,QAAQ,CAAA;AAAA,kCAAA,EACP,QAAQ,CAAA;AAAA,0BAAA,EAChB,QAAQ,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BAAA,EAUR,IAAA,CAAK,SAAA,CAAU,kBAAkB,CAAC;AAAA;;AAAA;AAAA,2BAAA,EAIjC,gBAAA,CAAiB,gBAAgB,CAAA;AAAA;AAAA;;;AAAA,gBAAA,EAK5C,QAAQ,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAAA,EAKR,QAAQ,CAAA;AAAA,yDAAA,EACiC,QAAQ,CAAA;AAAA;AAAA;AAAA;AAAA,gBAAA,EAIjD,QAAQ,CAAA;AAAA,+DAAA,EACuC,QAAQ,CAAA;AAAA;AAAA;AAAA;AAAA,gBAAA,EAIvD,QAAQ,CAAA;AAAA,kCAAA,EACU,QAAQ,CAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA,sCAAA,EAiBJ,QAAQ,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAW9C;AAEA,EAAA,OAAA,CAAQ,aAAA,GAAgB,SAAA,CAAU,IAAA,CAAK,EAAE,GAAG,OAAA,CAAQ,OAAA,EAAS,EAAE,CAAA,CAAE,QAAQ,KAAA,EAAO,EAAE,CAAA,CAAE,OAAA,CAAQ,QAAQ,IAAI,CAAA;AAC1G;AAcO,SAAS,wBAAyB,gBAAA,EAAoD;AAE7F,EAAA,MAAM,cAAA,GAAiB,IAAI,cAAA,CAAgB,gBAAgB,CAAA;AACzD,EAAA,OAAO,cAAA;AAET;AA5OA,IAAA,cAAA,GAAA,KAAA,CAAA;AAAA,EAAA,6BAAA,GAAA;AAEA,IAAA,uBAAA,EAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACCO,SAAS,QAAQ,KAAA,EAAuB;AAC7C,EAAA,IAAI,CAAA,GAAI,UAAA;AACR,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,KAAA,CAAM,QAAQ,CAAA,EAAA,EAAK;AACrC,IAAA,CAAA,IAAK,KAAA,CAAM,WAAW,CAAC,CAAA;AAEvB,IAAA,CAAA,GAAK,CAAA,IAAA,CAAM,CAAA,IAAK,CAAA,KAAM,CAAA,IAAK,CAAA,CAAA,IAAM,KAAK,CAAA,CAAA,IAAM,CAAA,IAAK,CAAA,CAAA,IAAM,CAAA,IAAK,EAAA,CAAA,CAAA,KAAU,CAAA;AAAA,EACxE;AACA,EAAA,OAAA,CAAQ,aAAa,CAAA,CAAE,QAAA,CAAS,EAAE,CAAA,EAAG,MAAM,EAAE,CAAA;AAC/C;AAXA,IAAA,SAAA,GAAA,KAAA,CAAA;AAAA,EAAA,mBAAA,GAAA;AAAA,EAAA;AAAA,CAAA,CAAA;ACMA,eAAsB,UAAU,QAAA,EAAkB;AAChD,EAAA,MAAM,GAAA,GAAMX,2BAAAA,CAAK,OAAA,CAAQ,QAAQ,CAAA;AACjC,EAAA,MAAMY,oBAAG,KAAA,CAAM,GAAA,EAAK,EAAC,SAAA,EAAW,MAAK,CAAA;AACvC;AAKA,eAAsB,eAAA,CAAgB,UAAkB,OAAA,EAAiB;AACvE,EAAA,IAAI;AAOF,IAAA,MAAMA,mBAAA,CAAG,UAAU,QAAA,EAAU,OAAA,EAAS,EAAC,QAAA,EAAU,MAAA,EAAQ,KAAA,EAAO,IAAA,EAAK,CAAA;AAAA,EAGvE,SAAS,CAAA,EAAG;AACV,IAAA,OAAA,CAAQ,KAAA,CAAM,mBAAmB,CAAC,CAAA;AAAA,EACpC;AACF;AA5BA,IAAA,SAAA,GAAA,KAAA,CAAA;AAAA,EAAA,mBAAA,GAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACAA,IAAA,kBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,uCAAA,CAAA,OAAA,EAAA,MAAA,EAAA;AAAA,IAAA,IAAI,CAAA,GAAI,WAAW,EAAC;AAApB,IAAA,IAAuB,IAAA,GAAO,CAAA,CAAE,IAAA,IAAQ,EAAC;AAAzC,IAAA,IAA4C,GAAA,GAAM,CAAA,CAAE,GAAA,IAAO,EAAC;AAC5D,IAAA,IAAI,gBAAA,GACH,EAAE,CAAC,CAAC,GAAA,CAAI,QAAA,IAAY,IAAA,CAAK,QAAA,CAAS,YAAY,CAAA,CAAA,KAC7C,CAAC,CAAC,IAAI,WAAA,IAAe,IAAA,CAAK,QAAA,CAAS,SAAS,CAAA,IAAK,CAAA,CAAE,QAAA,KAAa,OAAA,IAAA,CAAa,EAAE,MAAA,IAAU,EAAC,EAAG,KAAA,IAAS,GAAA,CAAI,IAAA,KAAS,MAAA,IAAW,CAAC,CAAC,GAAA,CAAI,EAAA,CAAA;AAEtI,IAAA,IAAI,YAAY,CAACC,KAAAA,EAAM,KAAA,EAAO,OAAA,GAAUA,UACvC,CAAA,KAAA,KAAS;AACR,MAAA,IAAI,MAAA,GAAS,KAAK,KAAA,EAAO,KAAA,GAAQ,OAAO,OAAA,CAAQ,KAAA,EAAOA,MAAK,MAAM,CAAA;AAClE,MAAA,OAAO,CAAC,KAAA,GAAQA,KAAAA,GAAO,YAAA,CAAa,MAAA,EAAQ,KAAA,EAAO,OAAA,EAAS,KAAK,CAAA,GAAI,KAAA,GAAQA,KAAAA,GAAO,MAAA,GAAS,KAAA;AAAA,IAC9F,CAAA;AAED,IAAA,IAAI,YAAA,GAAe,CAAC,MAAA,EAAQ,KAAA,EAAO,SAAS,KAAA,KAAU;AACrD,MAAA,IAAI,MAAA,GAAS,IAAI,MAAA,GAAS,CAAA;AAC1B,MAAA,GAAG;AACF,QAAA,MAAA,IAAU,MAAA,CAAO,SAAA,CAAU,MAAA,EAAQ,KAAK,CAAA,GAAI,OAAA;AAC5C,QAAA,MAAA,GAAS,QAAQ,KAAA,CAAM,MAAA;AACvB,QAAA,KAAA,GAAQ,MAAA,CAAO,OAAA,CAAQ,KAAA,EAAO,MAAM,CAAA;AAAA,MACrC,SAAS,CAAC,KAAA;AACV,MAAA,OAAO,MAAA,GAAS,MAAA,CAAO,SAAA,CAAU,MAAM,CAAA;AAAA,IACxC,CAAA;AAEA,IAAA,IAAI,YAAA,GAAe,CAAC,OAAA,GAAU,gBAAA,KAAqB;AAClD,MAAA,IAAI,CAAA,GAAI,OAAA,GAAU,SAAA,GAAY,MAAM,MAAA;AACpC,MAAA,OAAO;AAAA,QACN,gBAAA,EAAkB,OAAA;AAAA,QAClB,KAAA,EAAO,CAAA,CAAE,SAAA,EAAW,SAAS,CAAA;AAAA,QAC7B,IAAA,EAAM,CAAA,CAAE,SAAA,EAAW,UAAA,EAAY,iBAAiB,CAAA;AAAA,QAChD,GAAA,EAAK,CAAA,CAAE,SAAA,EAAW,UAAA,EAAY,iBAAiB,CAAA;AAAA,QAC/C,MAAA,EAAQ,CAAA,CAAE,SAAA,EAAW,UAAU,CAAA;AAAA,QAC/B,SAAA,EAAW,CAAA,CAAE,SAAA,EAAW,UAAU,CAAA;AAAA,QAClC,OAAA,EAAS,CAAA,CAAE,SAAA,EAAW,UAAU,CAAA;AAAA,QAChC,MAAA,EAAQ,CAAA,CAAE,SAAA,EAAW,UAAU,CAAA;AAAA,QAC/B,aAAA,EAAe,CAAA,CAAE,SAAA,EAAW,UAAU,CAAA;AAAA,QAEtC,KAAA,EAAO,CAAA,CAAE,UAAA,EAAY,UAAU,CAAA;AAAA,QAC/B,GAAA,EAAK,CAAA,CAAE,UAAA,EAAY,UAAU,CAAA;AAAA,QAC7B,KAAA,EAAO,CAAA,CAAE,UAAA,EAAY,UAAU,CAAA;AAAA,QAC/B,MAAA,EAAQ,CAAA,CAAE,UAAA,EAAY,UAAU,CAAA;AAAA,QAChC,IAAA,EAAM,CAAA,CAAE,UAAA,EAAY,UAAU,CAAA;AAAA,QAC9B,OAAA,EAAS,CAAA,CAAE,UAAA,EAAY,UAAU,CAAA;AAAA,QACjC,IAAA,EAAM,CAAA,CAAE,UAAA,EAAY,UAAU,CAAA;AAAA,QAC9B,KAAA,EAAO,CAAA,CAAE,UAAA,EAAY,UAAU,CAAA;AAAA,QAC/B,IAAA,EAAM,CAAA,CAAE,UAAA,EAAY,UAAU,CAAA;AAAA,QAE9B,OAAA,EAAS,CAAA,CAAE,UAAA,EAAY,UAAU,CAAA;AAAA,QACjC,KAAA,EAAO,CAAA,CAAE,UAAA,EAAY,UAAU,CAAA;AAAA,QAC/B,OAAA,EAAS,CAAA,CAAE,UAAA,EAAY,UAAU,CAAA;AAAA,QACjC,QAAA,EAAU,CAAA,CAAE,UAAA,EAAY,UAAU,CAAA;AAAA,QAClC,MAAA,EAAQ,CAAA,CAAE,UAAA,EAAY,UAAU,CAAA;AAAA,QAChC,SAAA,EAAW,CAAA,CAAE,UAAA,EAAY,UAAU,CAAA;AAAA,QACnC,MAAA,EAAQ,CAAA,CAAE,UAAA,EAAY,UAAU,CAAA;AAAA,QAChC,OAAA,EAAS,CAAA,CAAE,UAAA,EAAY,UAAU,CAAA;AAAA,QAEjC,WAAA,EAAa,CAAA,CAAE,UAAA,EAAY,UAAU,CAAA;AAAA,QACrC,SAAA,EAAW,CAAA,CAAE,UAAA,EAAY,UAAU,CAAA;AAAA,QACnC,WAAA,EAAa,CAAA,CAAE,UAAA,EAAY,UAAU,CAAA;AAAA,QACrC,YAAA,EAAc,CAAA,CAAE,UAAA,EAAY,UAAU,CAAA;AAAA,QACtC,UAAA,EAAY,CAAA,CAAE,UAAA,EAAY,UAAU,CAAA;AAAA,QACpC,aAAA,EAAe,CAAA,CAAE,UAAA,EAAY,UAAU,CAAA;AAAA,QACvC,UAAA,EAAY,CAAA,CAAE,UAAA,EAAY,UAAU,CAAA;AAAA,QACpC,WAAA,EAAa,CAAA,CAAE,UAAA,EAAY,UAAU,CAAA;AAAA,QAErC,aAAA,EAAe,CAAA,CAAE,WAAA,EAAa,UAAU,CAAA;AAAA,QACxC,WAAA,EAAa,CAAA,CAAE,WAAA,EAAa,UAAU,CAAA;AAAA,QACtC,aAAA,EAAe,CAAA,CAAE,WAAA,EAAa,UAAU,CAAA;AAAA,QACxC,cAAA,EAAgB,CAAA,CAAE,WAAA,EAAa,UAAU,CAAA;AAAA,QACzC,YAAA,EAAc,CAAA,CAAE,WAAA,EAAa,UAAU,CAAA;AAAA,QACvC,eAAA,EAAiB,CAAA,CAAE,WAAA,EAAa,UAAU,CAAA;AAAA,QAC1C,YAAA,EAAc,CAAA,CAAE,WAAA,EAAa,UAAU,CAAA;AAAA,QACvC,aAAA,EAAe,CAAA,CAAE,WAAA,EAAa,UAAU;AAAA,OACzC;AAAA,IACD,CAAA;AAEA,IAAA,MAAA,CAAO,UAAU,YAAA,EAAa;AAC9B,IAAA,MAAA,CAAO,QAAQ,YAAA,GAAe,YAAA;AAAA,EAAA;AAAA,CAAA,CAAA;AC1E9B,IAOA,iBAAA,EAEa,gBAAA;AATb,IAAA,sBAAA,GAAA,KAAA,CAAA;AAAA,EAAA,+BAAA,GAAA;AACA,IAAA,cAAA,EAAA;AAEA,IAAA,SAAA,EAAA;AACA,IAAA,SAAA,EAAA;AACA,IAAA,SAAA,EAAA;AAEA,IAAA,iBAAA,GAAe,OAAA,CAAA,kBAAA,EAAA,CAAA;AAER,IAAM,gBAAA,GAAN,MAAM,iBAAA,CAAgG;AAAA,MAYpG,WAAA,CAAmBV,WAAyD,MAAA,EAA2B;AAApF,QAAA,IAAA,CAAA,QAAA,GAAAA,SAAAA;AAAyD,QAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AACjF,QAAA,IAAA,CAAK,kBAAA,GAAqB,IAAA,CAAK,SAAA,CAAUA,SAAQ,CAAA;AACjD,QAAA,MAAM,UAAA,GAAa,KAAK,MAAA,CAAO,UAAA,IAAc,OAAO,IAAA,CAAKA,SAAQ,EAAE,CAAC,CAAA;AACpE,QAAA,IAAA,CAAK,IAAA,GAAO,YAAA,CAAaA,SAAAA,EAAU,UAAwB,CAAA;AAC3D,QAAA,IAAA,CAAK,kBAAA,GAAqBA,SAAAA,GAAW,UAAU,CAAA,IAAK,MAAA,CAAO,OAAOA,SAAQ,CAAA,CAAE,CAAC,CAAA,IAAK,EAAC;AAEnF,QAAA,MAAM,SAAA,GAAY,MAAA,CAAO,IAAA,CAAKA,SAAQ,CAAA;AACtC,QAAA,IAAA,CAAK,YAAY,KAAA,CAAM,IAAA,CAAK,IAAI,GAAA,CAAI,SAAS,CAAC,CAAA,CAAE,IAAA;AAAA,UAAK,CAAC,GAAG,CAAA,KACvD,CAAA,GAAI,IAAI,EAAA,GAAK,CAAA,GAAI,IAAI,CAAA,GAAI;AAAA,SAC3B;AAEA,QAAA,IAAA,CAAK,SAAA,GAAY,OAAA,CAAQ,IAAA,CAAK,kBAAkB,CAAA;AAChD,QAAA,IAAA,CAAK,SAAS,OAAA,CAAQ,IAAA,CAAK,IAAA,CAAK,IAAA,CAAK,GAAG,CAAC,CAAA;AACzC,QAAA,IAAA,CAAK,eAAA,GAAkB,iBAAA,CAAiB,kBAAA,CAAmB,IAAA,CAAK,SAAS,CAAA;AAAA,MAC3E;AAAA,MAvBgB,kBAAA;AAAA,MACA,IAAA;AAAA,MACA,kBAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,MAAA;AAAA,MACA,eAAA;AAAA,MAoBhB,IAAI,YAAA,GAAe;AACjB,QAAA,OAAOH,4BAAK,UAAA,CAAW,IAAA,CAAK,MAAA,CAAO,SAAS,IACxC,IAAA,CAAK,MAAA,CAAO,SAAA,GACZA,2BAAAA,CAAK,KAAK,IAAA,CAAK,MAAA,CAAO,IAAA,EAAM,IAAA,CAAK,OAAO,SAAS,CAAA;AAAA,MACvD;AAAA,MAEA,IAAI,cAAA,GAAiB;AACnB,QAAA,OAAO,IAAA,CAAK,OAAO,eAAA,GACfA,2BAAAA,CAAK,WAAW,IAAA,CAAK,MAAA,CAAO,eAAe,CAAA,GACzC,IAAA,CAAK,OAAO,eAAA,GACZA,2BAAAA,CAAK,KAAK,IAAA,CAAK,MAAA,CAAO,MAAM,IAAA,CAAK,MAAA,CAAO,eAAe,CAAA,GACzD,MAAA;AAAA,MACN;AAAA,MAEO,cAAA,GAAyB;AAC9B,QAAA,OAAO,CAAA,EAAA,EAAK,IAAA,CAAK,SAAA,CAAU,IAAA,CAAK,MAAM,CAAC,CAAA,EAAA,CAAA;AAAA,MACzC;AAAA,MAEO,cAAA,GAAyB;AAC9B,QAAA,OAAO,CAAA,CAAA,EAAI,IAAA,CAAK,SAAA,CAAU,IAAA,CAAK,OAAO,CAAC,CAAA,CAAA,CAAA;AAAA,MACzC;AAAA,MAEA,MAAa,cAAA,GAAiB;AAC5B,QAAA,MAAM,SAAA,CAAU,KAAK,YAAY,CAAA;AACjC,QAAA,IAAA,CAAK,OAAO,MAAA,CAAO,IAAA,CAAK,CAAA,uBAAA,EAA0B,IAAA,CAAK,YAAY,CAAA,CAAE,CAAA;AACrE,QAAA,MAAM,eAAA,CAAgB,IAAA,CAAK,YAAA,EAAc,IAAA,CAAK,iBAAiB,CAAA;AAAA,MACjE;AAAA,MAEA,MAAa,gBAAA,GAAmB;AAE9B,QAAA,MAAM,WAAW,IAAA,CAAK,cAAA;AACtB,QAAA,IAAI,CAAC,QAAA,EAAU;AACf,QAAA,MAAM,UAAU,QAAQ,CAAA;AAExB,QAAA,IAAA,CAAK,MAAA,CAAO,MAAA,CAAO,IAAA,CAAK,CAAA,uBAAA,EAA0B,QAAQ,CAAA,CAAE,CAAA;AAC5D,QAAA,MAAM,eAAA,CAAgB,QAAA,EAAU,IAAA,CAAK,iBAAA,EAAmB,CAAA;AAAA,MAE1D;AAAA,MAEA,OAAc,mBAAmB,KAAA,EAAiB;AAChD,QAAA,OAAO,KAAA,CAAM,MAAA,CAAO,CAAC,GAAA,EAAK,MAAA,KAAW;AACnC,UAAA,GAAA,CAAI,MAAM,CAAA,GAAI,CAAC,MAAA,EAAQ,MAAA,KAAW,OAAO,MAAA,GAAY,IAAA,EAAM,MAAA,KAAW,IAAA,GAAO,SAAY,IAAI,CAAA,CAAE,MAAA,CAAO,CAAA,CAAA,KAAK,MAAM,MAAS,CAAA;AAC1H,UAAA,IAAI,MAAA,KAAW,IAAA,EAAM,GAAA,CAAI,MAAM,CAAA,GAAI,CAAC,GAAG,GAAA,CAAI,MAAM,CAAA,EAAG,OAAO,CAAA;AAC3D,UAAA,OAAO,GAAA;AAAA,QACT,CAAA,EAAG,EAA8B,CAAA;AAAA,MACnC;AAAA,MAEO,iBAAA,GAAoB;AAEzB,QAAA,OAAO,IAAA,CAAK,iBAAA,EAAkB,CAAE,aAAA,EAAc;AAAA,MAChD;AAAA,MAEQ,oBAAA,GAA8C,IAAA;AAAA,MAE/C,iBAAA,GAAoC;AACzC,QAAA,IAAI,IAAA,CAAK,oBAAA,EAAsB,OAAO,IAAA,CAAK,oBAAA;AAC3C,QAAA,IAAA,CAAK,oBAAA,GAAuB,wBAAwB,IAAI,CAAA;AACxD,QAAA,OAAO,IAAA,CAAK,oBAAA;AAAA,MACd;AAAA,MAEO,sBAAsB,eAAA,EAAsC;AACjE,QAAA,MAAM,IAAA,GAAO,KAAK,iBAAA,EAAkB;AACpC,QAAA,IAAI,oBAAoB,EAAA,EAAI;AAC1B,UAAA,IAAA,CAAK,MAAA,CAAO,MAAA,CAAO,IAAA,CAAK,CAAA,WAAA,EAAO,iBAAA,CAAAc,OAAAA,CAAG,KAAA,CAAM,MAAM,CAAC,CAAA,yCAAA,EAA4C,eAAe,CAAA,CAAE,CAAA;AAC5G,UAAA,OAAO,KAAK,aAAA,EAAc;AAAA,QAC5B;AAEA,QAAA,MAAM,UAAA,GAAa,IAAA,CAAK,iBAAA,CAAkB,eAAe,CAAA;AACzD,QAAA,IAAA,CAAK,OAAO,MAAA,CAAO,IAAA,CAAK,cAAO,iBAAA,CAAAA,OAAAA,CAAG,MAAM,MAAM,CAAC,CAAA,8BAAA,EAAiC,iBAAA,CAAAA,QAAG,MAAA,CAAO,eAAe,CAAC,CAAA,UAAA,EAAa,UAAA,CAAW,MAAM,CAAA,CAAE,CAAA;AAC1I,QAAA,OAAO,UAAA;AAAA,MAET;AAAA,MAEA,MAAa,UAAA,GAAa;AACxB,QAAA,MAAM,UAAA,GAAa,YAAY,GAAA,EAAI;AACnC,QAAA,MAAM,OAAA,CAAQ,IAAI,CAAC,IAAA,CAAK,gBAAe,EAAG,IAAA,CAAK,gBAAA,EAAkB,CAAC,CAAA;AAClE,QAAA,MAAM,gBAAgB,IAAA,CAAK,KAAA,CAAM,WAAA,CAAY,GAAA,KAAQ,UAAU,CAAA;AAC/D,QAAA,IAAA,CAAK,MAAA,CAAO,MAAA,CAAO,KAAA,CAAM,CAAA,iBAAA,EAAoB,aAAa,CAAA,EAAA,CAAI,CAAA;AAAA,MAChE;AAAA,MAEO,eAAA,GAAkB;AACvB,QAAA,MAAM,MAAA,GAAS,MAAA,CAAO,MAAA,CAAO,EAAC,EAAG;AAAA,UAC/B,gBAAA,EAAkB,IAAA;AAAA,UAElB,QAAQ,IAAA,CAAK;AAAA,SAEd,CAAA;AACD,QAAA,OAAO,eAAe,MAAM,CAAA;AAAA,MAC9B;AAAA;AAAA;AAAA;AAAA,MAKO,gBAAA,GAAyB;AAC9B,QAAA,MAAM,SAAA,GAAY,kBAAA,CAAmB,IAAA,CAAK,QAAQ,CAAA;AAClD,QAAA,IAAI,SAAA,CAAU,SAAS,CAAA,EAAG;AACxB,UAAA,IAAA,CAAK,MAAA,CAAO,MAAA,CAAO,KAAA,CAAM,sDAAA,EAA8C;AAAA,YACrE,SAAA,EAAW;AAAA,WACZ,CAAA;AACD,UAAA,KAAA,MAAW,YAAY,SAAA,EAAW;AAChC,YAAA,IAAA,CAAK,MAAA,CAAO,OAAO,KAAA,CAAM,CAAA,GAAA,EAAM,QAAQ,CAAA,CAAA,EAAI,EAAC,SAAA,EAAW,IAAA,EAAK,CAAA;AAAA,UAC9D;AAAA,QACF;AAAA,MACF;AAAA,KAEF;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC/IA,IAAA,oBAAA,GAAA,EAAA;AAAA,QAAA,CAAA,oBAAA,EAAA;AAAA,EAAA,WAAA,EAAA,MAAA;AAAA,CAAA,CAAA;AAAA,IAsBa,WAAA;AAtBb,IAAA,iBAAA,GAAA,KAAA,CAAA;AAAA,EAAA,0BAAA,GAAA;AAKA,IAAA,UAAA,EAAA;AACA,IAAA,SAAA,EAAA;AACA,IAAA,oBAAA,EAAA;AACA,IAAA,sBAAA,EAAA;AAcO,IAAM,cAAN,MAAkB;AAAA,MAMvB,YAAmB,OAAA,EAA4B;AAA5B,QAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AAAA,MAEnB;AAAA,MAPQ,gBAAA,uBAAuB,GAAA,EAAwB;AAAA;AAAA,MAE/C,cAAA,uBAAkC,GAAA,EAAY;AAAA,MAC/C,cAAA,uBAAkC,GAAA,EAAY;AAAA,MAMrD,MAAa,SAAA,GAAY;AACvB,QAAA,MAAM,QAAA,GAAY,MAAM,IAAA,CAAK,gBAAA,EAAiB;AAG9C,QAAA,IAAA,CAAK,cAAA,GAAiB,IAAI,GAAA,CAAI,QAAQ,CAAA;AAAA,MAGxC;AAAA,MAEA,MAAa,YAAY,IAAA,EAAe;AACtC,QAAA,IAAA,KAAS,IAAA,CAAK,cAAA,CAAe,MAAA,EAAO,CAAE,MAAK,CAAE,KAAA;AAC7C,QAAA,IAAI,IAAA,EAAM;AAER,UAAA,MAAM,IAAA,CAAK,SAAS,IAAI,CAAA;AAGxB,UAAA,OAAO,IAAA;AAAA,QACT;AACA,QAAA,OAAO,IAAA;AAAA,MAET;AAAA,MAEA,MAAc,QAAA,GAAW;AACvB,QAAA,MAAM,QAAA,GAAW,OAAA,CAAQ,IAAA,CAAK,OAAA,CAAQ,OAAO,CAAA;AAE7C,QAAA,MAAM,SAAS,OAAA,CAAQ,IAAA,CAAK,OAAA,CAAQ,OAAO,EAAE,GAAA,CAAI,CAAA,CAAA,KAAK,CAAA,CAAE,UAAA,CAAW,GAAG,CAAA,GAAI,CAAA,CAAE,KAAA,CAAM,CAAC,IAAI,CAAC,CAAA;AAExF,QAAA,MAAM,GAAA,GAAM,KAAK,OAAA,CAAQ,IAAA;AACzB,QAAA,MAAM,KAAA,GAAQ,YAAY,GAAA,EAAI;AAC9B,QAAA,MAAM,EAAC,OAAA,EAAS,EAAA,EAAE,GAAI,MAAM,OAAO,WAAW,CAAA;AAC9C,QAAA,MAAM,IAAA,GAAiB,MAAM,EAAA,CAAG,QAAA,EAAU;AAAA,UACxC,GAAA;AAAA,UACA,MAAA;AAAA,UACA,QAAA,EAAU,IAAA;AAAA,UACV,SAAA,EAAW,IAAA;AAAA,UACX,GAAA,EAAK;AAAA,SACN,CAAA;AAGD,QAAA,MAAM,UAAU,IAAA,CAAK,GAAA,CAAI,OAAKd,2BAAAA,CAAK,SAAA,CAAU,CAAC,CAAC,CAAA;AAC/C,QAAA,IAAA,CAAK,OAAA,CAAQ,MAAA,CAAO,IAAA,CAAK,CAAA,2CAAA,EAA8C,QAAQ,MAAM,CAAA,UAAA,EAAa,IAAA,CAAK,KAAA,CAAM,WAAA,CAAY,GAAA,EAAI,GAAI,KAAK,CAAC,CAAA,EAAA,CAAI,CAAA;AAC3I,QAAA,OAAO,OAAA;AAAA,MACT;AAAA;AAAA;AAAA;AAAA,MAKA,MAAM,gBAAA,GAAsC;AAC1C,QAAA,MAAM,QAAA,GAAW,OAAA,CAAQ,IAAA,CAAK,OAAA,CAAQ,OAAO,CAAA;AAE7C,QAAA,MAAM,SAAS,OAAA,CAAQ,IAAA,CAAK,OAAA,CAAQ,OAAO,EAAE,GAAA,CAAI,CAAA,CAAA,KAAK,CAAA,CAAE,UAAA,CAAW,GAAG,CAAA,GAAI,CAAA,CAAE,KAAA,CAAM,CAAC,IAAI,CAAC,CAAA;AAExF,QAAA,MAAM,GAAA,GAAM,KAAK,OAAA,CAAQ,IAAA;AAEzB,QAAA,IAAA,CAAK,OAAA,CAAQ,OAAO,KAAA,CAAM,CAAA,yCAAA,EAA4C,SAAS,IAAA,CAAK,IAAI,CAAC,CAAA,CAAE,CAAA;AAC3F,QAAA,IAAA,CAAK,OAAA,CAAQ,MAAA,CAAO,KAAA,CAAM,CAAA,oCAAA,EAAuC,GAAG,CAAA,CAAE,CAAA;AACtE,QAAA,IAAA,CAAK,OAAA,CAAQ,OAAO,KAAA,CAAM,CAAA,uCAAA,EAA0C,OAAO,IAAA,CAAK,IAAI,CAAC,CAAA,CAAE,CAAA;AAEvF,QAAY,YAAY,GAAA;AAIxB,QAAQ,YAAY,GAAA,EAAI;AAKxB,QAAA,MAAM,eAAA,GAAkB,KAAK,QAAA,EAAS;AACtC,QAAA,MAAM,0BAAU,IAAI,GAAA,CAAY,CAAC,GAAI,MAAM,eAAgB,CAAC,CAAA;AAG5D,QAAA,MAAM,GAAA,GAAM,KAAA,CAAM,IAAA,CAAK,OAAO,CAAA;AAE9B,QAAA,IAAA,CAAK,QAAQ,MAAA,CAAO,KAAA,CAAM,CAAA,2BAAA,EAA8B,GAAA,CAAI,MAAM,CAAA,EAAG,IAAA,CAAK,GAAA,CAAI,GAAA,CAAI,QAAQ,EAAE,CAAC,EAAE,IAAA,CAAK,IAAI,CAAC,CAAA,CAAE,CAAA;AAC3G,QAAA,MAAM,aAAA,GAAgB,GAAA;AACtB,QAAA,IAAA,CAAK,OAAA,CAAQ,OAAO,IAAA,CAAK,CAAA,4CAAA,EAA+C,IAAI,MAAM,CAAA,CAAA,EAAI,aAAA,CAAc,MAAM,CAAA,gBAAA,CAAkB,CAAA;AAG5H,QAAA,aAAA,CAAc,KAAK,CAAC,CAAA,EAAG,MAAM,CAAA,CAAE,aAAA,CAAc,CAAC,CAAC,CAAA;AAC/C,QAAA,OAAO,aAAA;AAAA,MACT;AAAA;AAAA;AAAA;AAAA,MAMA,MAAM,YAAA,GAAe;AACnB,QAAA,MAAM,cAAA,GAAiB,YAAY,GAAA,EAAI;AAGvC,QAAA,IAAI,IAAA,CAAK,eAAe,IAAA,KAAS,CAAA;AAE/B,UAAA,MAAM,KAAK,SAAA,EAAU;AAEvB,QAAA,MAAM,QAAQ,IAAA,CAAK,cAAA;AAInB,QAAsB,YAAY,GAAA;AAClC,QAAA,MAAM,KAAK,gBAAA,EAAiB;AAI5B,QAAA,MAAM,gBAAgB,IAAA,CAAK,KAAA,CAAM,WAAA,CAAY,GAAA,KAAQ,cAAc,CAAA;AAEnE,QAAA,IAAA,CAAK,OAAA,CAAQ,OAAO,IAAA,CAAK,CAAA,sBAAA,EAAyB,KAAK,cAAA,CAAe,IAAI,CAAA,oBAAA,EAAuB,aAAa,CAAA,EAAA,CAAI,CAAA;AAClH,QAAA,MAAM,gBAAA,GAAmB,MAAM,IAAA,CAAK,sBAAA,CAAuB,KAAK,CAAA;AAChE,QAAA,OAAO;AAAA,UACL,QAAA,EAAU,gBAAA;AAAA,UACV,KAAA,EAAO;AAAA,YAEL,SAAA,EAAW;AAAA,cACT,IAAA,EAAM,aAAA;AAAA,cACN,IAAA,EAAM,aAAA;AAAA,cAEN,KAAA,EAAO;AAAA;AACT;AACF,SACF;AAAA,MACF;AAAA,MAEA,MAAc,uBAAuB,KAAA,EAA+B;AAClE,QAAA,MAAM,mBAAmB,IAAI,gBAAA,CAAiB,KAAK,UAAA,EAAW,EAAG,KAAK,OAAO,CAAA;AAC7E,QAAA,MAAM,OAAA,CAAQ,GAAA,CAAI,IAAA,CAAK,SAAA,CAAU,GAAA,CAAI,CAAA,EAAA,KAAM,EAAA,CAAG,gBAAA,EAAkB,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;AAC5E,QAAA,OAAO,gBAAA;AAAA,MACT;AAAA,MAEO,WAAW,KAAA,EAAiC;AACjD,QAAA,MAAM,UAA+B,EAAC;AACtC,QAAA,KAAA,KAAU,IAAA,CAAK,gBAAA;AACf,QAAA,KAAA,MAAW,CAAC,CAAA,EAAG,EAAC,WAAW,QAAA,EAAS,KAAK,KAAA,EAAO;AAC9C,UAAA,IAAI,EAAE,SAAA,IAAa,OAAA,CAAA,EAAU,OAAA,CAAQ,SAAS,IAAI,EAAC;AACnD,UAAA,OAAA,CAAQ,SAAS,IAAI,IAAA,CAAK,OAAA,CAAQ,cAAc,OAAA,CAAQ,SAAS,GAAG,QAAQ,CAAA;AAAA,QAC9E;AACA,QAAA,OAAO,aAAa,OAAoB,CAAA;AAAA,MAG1C;AAAA;AAAA;AAAA;AAAA,MAKA,MAAa,gBAAA,GAAkC;AAC7C,QAAA,IAAI,SAAA,GAAY,CAAA;AAChB,QAAA,MAAM,iCAAiB,IAAI,GAAA,CAAI,CAAC,GAAG,IAAA,CAAK,cAAc,CAAC,CAAA;AACvD,QAAA,MAAM,aAAa,cAAA,CAAe,IAAA;AAClC,QAAA,MAAM,KAAA,GAAQ,YAAY,GAAA,EAAI;AAC9B,QAAA,OAAO,cAAA,CAAe,OAAO,CAAA,EAAG;AAC9B,UAAA,MAAM,eAAA,GAAkB,IAAA,CAAK,OAAA,CAAQ,aAAA,IAAiB,GAAA;AACtD,UAAA,MAAM,qBAAA,GAAwB,CAAC,GAAG,cAAc,CAAA,CAAE,KAAA,CAAM,CAAA,EAAG,IAAA,CAAK,GAAA,CAAI,eAAA,EAAiB,cAAA,CAAe,IAAI,CAAC,CAAA;AACzG,UAAA,IAAA,CAAK,OAAA,CAAQ,MAAA,CAAO,KAAA,CAAM,CAAA,oDAAA,EAAuD,SAAS,CAAA,GAAA,EAAM,UAAU,CAAA,mBAAA,EAAsB,IAAA,CAAK,MAAM,WAAA,CAAY,GAAA,EAAI,GAAI,KAAK,CAAC,CAAA,EAAA,CAAI,CAAA;AACzK,UAAA,MAAM,QAAQ,qBAAA,CACX,GAAA,CAAI,OAAK,IAAA,CAAK,WAAA,CAAY,CAAC,CAAC,CAAA;AAC/B,UAAA,qBAAA,CAAsB,OAAA,CAAQ,CAAA,CAAA,KAAK,cAAA,CAAe,MAAA,CAAO,CAAC,CAAC,CAAA;AAC3D,UAAA,MAAM,OAAA,CAAQ,IAAI,KAAK,CAAA;AACvB,UAAA,qBAAA,CAAsB,QAAQ,CAAA,IAAA,KAAQ,IAAA,CAAK,cAAA,CAAe,MAAA,CAAO,IAAI,CAAC,CAAA;AACtE,UAAA,qBAAA,CAAsB,QAAQ,CAAA,IAAA,KAAQ,IAAA,CAAK,cAAA,CAAe,GAAA,CAAI,IAAI,CAAC,CAAA;AAEnE,UAAA,SAAA,IAAa,qBAAA,CAAsB,MAAA;AAAA,QAErC;AAAA,MACF;AAAA,MAEA,MAAc,QAAA,CAAS,GAAA,EAAa,eAAA,EAAkD,YAA2B,IAAA,EAAM;AACrH,QAAA,SAAA,KAAc,KAAK,OAAA,CAAQ,iBAAA,CAAkB,GAAA,EAAK,IAAA,CAAK,QAAQ,IAAI,CAAA;AAGnE,QAAA,IAAI,CAAC,SAAA,EAAW;AACd,UAAA,IAAA,CAAK,OAAA,CAAQ,MAAA,EAAQ,IAAA,CAAK,CAAA,mCAAA,EAAsC,GAAG,CAAA,CAAE,CAAA;AACrE,UAAA;AAAA,QACF;AAEA,QAAA,IAAI,SAAA,CAAU,MAAA,KAAW,CAAA,IAAK,SAAA,CAAU,WAAW,CAAA,EAAG;AACpD,UAAA,IAAA,CAAK,QAAQ,MAAA,EAAQ,IAAA,CAAK,oBAAoB,GAAG,CAAA,IAAA,EAAO,SAAS,CAAA,CAAE,CAAA;AAAA,QACrE;AAEA,QAAA,IAAI;AACF,UAAA,eAAA,KAAoB,MAAMY,aAAAA,CAAG,QAAA,CAAS,GAAA,EAAK,MAAM,CAAA;AACjD,UAAA,MAAM,GAAA,GAAM,MAAM,eAAA,EAAgB;AAGlC,UAAA,MAAM,MAAA,GAAS,qBAAA,CAAsB,GAAA,EAAK,GAAG,CAAA;AAE7C,UAAA,MAAM,QAAA,GAAW,KAAK,OAAA,CAAQ,aAAA,GAC1B,KAAK,OAAA,CAAQ,aAAA,CAAc,MAAA,EAAQ,GAAG,CAAA,GACtC,MAAA;AACJ,UAAA,IAAA,CAAK,iBAAiB,GAAA,CAAI,GAAA,EAAK,EAAC,SAAA,EAAW,UAAS,CAAA;AACpD,UAAA,OAAO,EAAC,WAAW,QAAA,EAAQ;AAAA,QAC7B,SAAS,GAAA,EAAU;AAEjB,UAAA,MAAM,cAAA,GAAiB,iBAAA,CAAkB,GAAA,EAAK,GAAG,CAAA;AACjD,UAAA,IAAA,CAAK,OAAA,CAAQ,MAAA,EAAQ,KAAA,CAAM,cAAA,CAAe,OAAO,CAAA;AACjD,UAAA,MAAM,cAAA;AAAA,QACR;AAAA,MACF;AAAA;AAAA;AAAA;AAAA,MAKA,YAAA,GAAyB;AACvB,QAAA,OAAO,CAAC,GAAG,IAAA,CAAK,cAAc,CAAA;AAAA,MAChC;AAAA;AAAA;AAAA;AAAA,MAKA,UAAA,GAAmB;AAEjB,QAAA,IAAA,CAAK,iBAAiB,KAAA,EAAM;AAC5B,QAAA,IAAA,CAAK,cAAA,uBAAqB,GAAA,EAAY;AACtC,QAAA,IAAA,CAAK,cAAA,uBAAqB,GAAA,EAAY;AAAA,MACxC;AAAA,MAEA,MAAa,WAAA,CAAY,QAAA,EAAkB,QAAA,EAA2C,SAAwB,IAAA,EAAuC;AAOnJ,QAAA,IAAA,CAAK,gBAAA,CAAiB,OAAO,QAAQ,CAAA;AACrC,QAAA,IAAA,CAAK,cAAA,CAAe,IAAI,QAAQ,CAAA;AAChC,QAAA,MAAM,MAAA,GAAS,MAAM,IAAA,CAAK,QAAA,CAAS,QAAQ,CAAA;AAI3C,QAAA,MAAM,IAAA,CAAK,sBAAA,CAAuB,CAAC,QAAQ,CAAC,CAAA;AAC5C,QAAA,OAAO,MAAA;AAAA,MAGT;AAAA,MAEO,qBAAA,CAAsB,UAAkB,MAAA,EAAiD;AAC9F,QAAA,OAAO,IAAA,CAAK,WAAA,CAAY,QAAA,EAAU,MAAA,EAAW,MAAM,CAAA;AAAA,MAGrD;AAAA,MAEO,gBAAA,GAAsC;AAC3C,QAAA,OAAO,IAAI,OAAA,CAAQ,CAACG,QAAAA,KAAY;AAE9B,UAAA,MAAM,SAAA,GAAY,kBAAA,CAAmB,IAAA,CAAK,UAAA,EAAY,CAAA;AACtD,UAAA,IAAI,SAAA,CAAU,SAAS,CAAA,EAAG;AACxB,YAAA,IAAA,CAAK,OAAA,CAAQ,MAAA,CAAO,KAAA,CAAM,sDAAA,EAA8C;AAAA,cACtE,SAAA,EAAW;AAAA,aACZ,CAAA;AACD,YAAA,KAAA,MAAW,YAAY,SAAA,EAAW;AAChC,cAAA,IAAA,CAAK,OAAA,CAAQ,OAAO,KAAA,CAAM,CAAA,GAAA,EAAM,QAAQ,CAAA,CAAA,EAAI,EAAC,SAAA,EAAW,IAAA,EAAK,CAAA;AAAA,YAC/D;AAAA,UACF;AACA,UAAAA,SAAQ,SAAS,CAAA;AAAA,QAEnB,CAAC,CAAA;AAAA,MACH;AAAA,MAEA,MAAa,YAAY,QAAA,EAAkB;AACzC,QAAA,IAAA,CAAK,gBAAA,CAAiB,OAAO,QAAQ,CAAA;AACrC,QAAA,MAAM,IAAA,CAAK,sBAAA,CAAuB,CAAC,QAAQ,CAAC,CAAA;AAAA,MAC9C;AAAA,MAEO,UAAA,CAAW,QAAA,EAAkB,QAAA,EAA4C,KAAA,EAAe;AAC7F,QAAA,OAAO,IAAA,CAAK,WAAA,CAAY,QAAA,EAAU,QAAQ,CAAA;AAAA,MAE5C;AAAA,MAEO,uBAAmD,EAAC;AAAA,MACnD,YAA0C,EAAC;AAAA,MAE5C,sBAAA,CAAuB,QAAA,EAAiC,SAAA,GAAoB,CAAA,EAAG;AACpF,QAAA,IAAI,YAAY,CAAA,EAAG;AACjB,UAAA,IAAA,CAAK,SAAA,CAAU,QAAQ,QAAQ,CAAA;AAC/B,UAAA;AAAA,QACF,CAAA,MAAO;AACL,UAAA,IAAA,CAAK,SAAA,CAAU,KAAK,QAAQ,CAAA;AAAA,QAC9B;AAAA,MACF;AAAA,MAEO,iBAAiB,QAAA,EAA+B;AACrD,QAAA,IAAA,CAAK,oBAAA,CAAqB,KAAK,QAAQ,CAAA;AAAA,MACzC;AAAA,KACF;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACxTA,IAAA,2BAAA,GAAA,EAAA;AAAA,QAAA,CAAA,2BAAA,EAAA;AAAA,EAAA,mBAAA,EAAA,MAAA,mBAAA;AAAA,EAAA,mBAAA,EAAA,MAAA;AAAA,CAAA,CAAA;AAOO,SAAS,mBAAA,CAAoB,YAAA,GAAwB,KAAA,EAAO,MAAA,GAAiB,CAAA,gBAAA,CAAA,EAA4B;AAC9G,EAAA,MAAM,cAAA,uBAAqB,GAAA,EAAY;AAGvC,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,CAAC,GAAA,KAAgB;AAGrB,MAAA,IAAI,YAAA,EAAc;AAChB,QAAA,OAAA,CAAQ,GAAA,CAAI,IAAI,kBAAA,CAAAD,OAAAA,CAAG,IAAI,MAAM,CAAC,CAAA,EAAA,EAAK,GAAG,CAAA,CAAE,CAAA;AAAA,MAC1C;AAAA,IACF,CAAA;AAAA,IACA,IAAA,EAAM,CAAC,GAAA,KAAgB;AACrB,MAAA,OAAA,CAAQ,IAAA,CAAK,IAAI,kBAAA,CAAAA,OAAAA,CAAG,IAAI,MAAM,CAAC,CAAA,EAAA,EAAK,GAAG,CAAA,CAAE,CAAA;AAAA,IAC3C,CAAA;AAAA,IACA,KAAA,EAAO,CAAC,GAAA,KAAgB;AACtB,MAAA,OAAA,CAAQ,KAAA,CAAM,IAAI,kBAAA,CAAAA,OAAAA,CAAG,IAAI,MAAM,CAAC,CAAA,EAAA,EAAK,GAAG,CAAA,CAAE,CAAA;AAAA,IAC5C,CAAA;AAAA,IACA,QAAA,EAAU,CAAC,GAAA,KAAgB;AACzB,MAAA,IAAI,CAAC,cAAA,CAAe,GAAA,CAAI,GAAG,CAAA,EAAG;AAC5B,QAAA,cAAA,CAAe,IAAI,GAAG,CAAA;AACtB,QAAA,OAAA,CAAQ,IAAA,CAAK,IAAI,kBAAA,CAAAA,OAAAA,CAAG,IAAI,MAAM,CAAC,CAAA,EAAA,EAAK,GAAG,CAAA,CAAE,CAAA;AAAA,MAC3C;AAAA,IACF,CAAA;AAAA,IACA,aAAa,MAAM;AAAA,IACnB,CAAA;AAAA,IACA,gBAAgB,MAAM,KAAA;AAAA,IACtB,SAAA,EAAW;AAAA,GACb;AACF;AAGO,SAAS,mBAAA,CAAoB,OAA4B,OAAA,EAAyB;AAEvF,EAAA,MAAM,SAAiB,OAAA,EAAS,YAAA,IAAgB,mBAAA,CAAoB,IAAA,EAAM,SAAS,MAAM,CAAA;AACzF,EAAA,MAAM,MAAA,GAAS,SAAS,MAAA,IAAU,CAAA,mBAAA,CAAA;AAElC,EAAA,OAAO;AAAA,IACL,KAAA,EAAO,CAAC,GAAA,EAAaE,QAAAA,KAAyB;AAC5C,MAAA,IAAI,UAAU,OAAA,EAAS;AACvB,MAAA,MAAA,CAAO,KAAK,CAAA,EAAG,kBAAA,CAAAF,QAAG,GAAA,CAAI,kBAAA,CAAAA,QAAG,UAAA,CAAW,MAAM,CAAC,CAAC,IAAI,kBAAA,CAAAA,OAAAA,CAAG,KAAK,GAAG,CAAC,IAAIE,QAAO,CAAA;AAAA,IACzE,CAAA;AAAA,IACA,IAAA,EAAM,CAAC,GAAA,EAAaA,QAAAA,KAAyB;AAE3C,MAAA,MAAA,CAAO,IAAA,CAAK,CAAA,EAAG,kBAAA,CAAAF,OAAAA,CAAG,IAAI,kBAAA,CAAAA,OAAAA,CAAG,UAAA,CAAW,MAAM,CAAC,CAAC,CAAA,CAAA,EAAI,GAAG,IAAIE,QAAO,CAAA;AAAA,IAEhE,CAAA;AAAA,IACA,IAAA,EAAM,CAAC,GAAA,EAAaA,QAAAA,KAAyB;AAE3C,MAAA,MAAA,CAAO,IAAA,CAAK,CAAA,EAAG,kBAAA,CAAAF,OAAAA,CAAG,IAAI,MAAM,CAAC,CAAA,CAAA,EAAI,kBAAA,CAAAA,OAAAA,CAAG,MAAA,CAAO,GAAG,CAAC,IAAIE,QAAO,CAAA;AAAA,IAC5D,CAAA;AAAA,IACA,KAAA,EAAO,CAAC,GAAA,EAAaA,QAAAA,KAA8B;AACjD,MAAA,MAAA,CAAO,YAAY,MAAM,CAAA;AACzB,MAAA,MAAA,CAAO,KAAA,CAAM,CAAA,EAAG,kBAAA,CAAAF,OAAAA,CAAG,KAAK,MAAM,CAAC,CAAA,CAAA,EAAI,kBAAA,CAAAA,OAAAA,CAAG,GAAA,CAAI,GAAG,CAAC,IAAIE,QAAO,CAAA;AAAA,IAE3D,CAAA;AAAA,IACA,QAAA,EAAU,CAAC,GAAA,EAAaA,QAAAA,KAAyB;AAC/C,MAAA,MAAA,CAAO,YAAY,MAAM,CAAA;AACzB,MAAA,MAAA,CAAO,QAAA,CAAS,CAAA,EAAG,kBAAA,CAAAF,OAAAA,CAAG,KAAK,MAAM,CAAC,CAAA,CAAA,EAAI,kBAAA,CAAAA,OAAAA,CAAG,MAAA,CAAO,GAAG,CAAC,IAAIE,QAAO,CAAA;AAAA,IACjE,CAAA;AAAA,IACA,WAAA,EAAa,CAAC,IAAA,KAAkB;AAC9B,MAAA,MAAA,CAAO,YAAY,IAAI,CAAA;AAAA,IACzB,CAAA;AAAA,IACA,cAAA,EAAgB,CAAC,KAAA,KAAiB,MAAA,CAAO,eAAe,KAAK,CAAA;AAAA,IAC7D,WAAW,MAAA,CAAO;AAAA,GACpB;AACF;AAzEA,IAEAC,kBAAAA;AAFA,IAAA,wBAAA,GAAA,KAAA,CAAA;AAAA,EAAA,4BAAA,GAAA;AAEA,IAAAA,kBAAAA,GAAe,OAAA,CAAA,kBAAA,EAAA,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACFf,IAAA,eAAA,GAAA,UAAA,CAAA;AAAA,EAAA,cAAA,CAAA,OAAA,EAAA,MAAA,EAAA;AAAA,IAAA,MAAA,CAAA,OAAA,GAAA;AAAA,MACE,IAAA,EAAQ,iCAAA;AAAA,MACR,OAAA,EAAW,OAAA;AAAA,MACX,WAAA,EAAe,+JAAA;AAAA,MACf,QAAA,EAAY;AAAA,QACV,MAAA;AAAA,QACA,aAAA;AAAA,QACA,UAAA;AAAA,QACA,YAAA;AAAA,QACA,MAAA;AAAA,QACA,MAAA;AAAA,QACA,KAAA;AAAA,QACA,OAAA;AAAA,QACA,iBAAA;AAAA,QACA,cAAA;AAAA,QACA,kBAAA;AAAA,QACA,sBAAA;AAAA,QACA,WAAA;AAAA,QACA,yBAAA;AAAA,QACA,cAAA;AAAA,QACA,cAAA;AAAA,QACA,KAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,QAAA,EAAY,mEAAA;AAAA,MACZ,IAAA,EAAQ;AAAA,QACN,GAAA,EAAO;AAAA,OACT;AAAA,MACA,UAAA,EAAc;AAAA,QACZ,IAAA,EAAQ,KAAA;AAAA,QACR,GAAA,EAAO;AAAA,OACT;AAAA,MACA,OAAA,EAAW,KAAA;AAAA,MACX,MAAA,EAAU,mBAAA;AAAA,MACV,IAAA,EAAQ,QAAA;AAAA,MACR,OAAA,EAAW;AAAA,QACT,GAAA,EAAK;AAAA,UACH,KAAA,EAAS;AAAA,YACP,mBAAA;AAAA,YACA;AAAA,WACF;AAAA,UACA,MAAA,EAAU,iBAAA;AAAA,UACV,IAAA,EAAQ,iBAAA;AAAA,UACR,OAAA,EAAW,kBAAA;AAAA,UACX,OAAA,EAAW;AAAA,SACb;AAAA,QACA,OAAA,EAAS;AAAA,UACP,KAAA,EAAS;AAAA,YACP,iBAAA;AAAA,YACA;AAAA,WACF;AAAA,UACA,MAAA,EAAU,eAAA;AAAA,UACV,OAAA,EAAW;AAAA,SACb;AAAA,QACA,UAAA,EAAY;AAAA,UACV,KAAA,EAAS;AAAA,YACP,oBAAA;AAAA,YACA;AAAA,WACF;AAAA,UACA,MAAA,EAAU,kBAAA;AAAA,UACV,OAAA,EAAW;AAAA,SACb;AAAA,QACA,gCAAA,EAAkC;AAAA,UAChC,KAAA,EAAS;AAAA,SACX;AAAA,QACA,gBAAA,EAAkB;AAAA,OACpB;AAAA,MACA,IAAA,EAAQ,kBAAA;AAAA,MACR,MAAA,EAAU,iBAAA;AAAA,MACV,KAAA,EAAS,0CAAA;AAAA,MACT,GAAA,EAAO;AAAA,QACL,iBAAA,EAAmB;AAAA,OACrB;AAAA,MACA,KAAA,EAAS;AAAA,QACP;AAAA,OACF;AAAA,MACA,OAAA,EAAW;AAAA,QACT,KAAA,EAAS,uCAAA;AAAA,QACT,GAAA,EAAO,cAAA;AAAA,QACP,WAAA,EAAa,iCAAA;AAAA,QACb,IAAA,EAAQ,UAAA;AAAA,QACR,UAAA,EAAY,gBAAA;AAAA,QACZ,SAAA,EAAa,cAAA;AAAA,QACb,cAAA,EAAkB,eAAA;AAAA,QAClB,OAAA,EAAW,8BAAA;AAAA,QACX,IAAA,EAAQ;AAAA,OACV;AAAA,MACA,gBAAA,EAAoB;AAAA,QAClB,IAAA,EAAQ;AAAA,OACV;AAAA,MACA,sBAAwB,EAAC;AAAA,MACzB,YAAA,EAAgB;AAAA,QACd,mCAAA,EAAqC,QAAA;AAAA,QACrC,sBAAA,EAAwB,SAAA;AAAA,QACxB,mBAAA,EAAqB,SAAA;AAAA,QACrB,WAAA,EAAa,QAAA;AAAA,QACb,sBAAA,EAAwB,QAAA;AAAA,QACxB,yBAAA,EAA2B,UAAA;AAAA,QAC3B,UAAA,EAAY;AAAA,OACd;AAAA,MACA,eAAA,EAAmB;AAAA,QACjB,YAAA,EAAc,SAAA;AAAA,QACd,0BAAA,EAA4B,SAAA;AAAA,QAC5B,aAAA,EAAe,SAAA;AAAA,QACf,kCAAA,EAAoC,SAAA;AAAA,QACpC,2BAAA,EAA6B,SAAA;AAAA,QAC7B,oBAAA,EAAsB,QAAA;AAAA,QACtB,QAAA,EAAY,QAAA;AAAA,QACZ,MAAA,EAAU,SAAA;AAAA,QACV,OAAA,EAAW,SAAA;AAAA,QACX,IAAA,EAAQ,QAAA;AAAA,QACR,UAAA,EAAc,QAAA;AAAA,QACd,IAAA,EAAQ,SAAA;AAAA,QACR,MAAA,EAAU,QAAA;AAAA,QACV,SAAA,EAAW;AAAA,OACb;AAAA,MACA,OAAA,EAAW;AAAA,QACT,IAAA,EAAQ;AAAA,OACV;AAAA,MACA,aAAA,EAAiB;AAAA,QACf,MAAA,EAAU;AAAA;AACZ,KACF;AAAA,EAAA;AAAA,CAAA,CAAA;ACvHO,IAAM,UAAA,GAAa;AAAA,EACtB,SAAA,EAAW,OAAA;AAAA,EACX,QAAA,EAAU,aAAA;AAAA,EACV,aAAA,EAAe,mBAAA;AAAA,EACf,eAAA,EAAiB;AACrB,CAAA;AACA,IAAM,cAAA,GAAiB;AAAA,EACnB,IAAA,EAAM,GAAA;AAAA,EACN,UAAA,EAAY,CAAC,UAAA,KAAe,IAAA;AAAA,EAC5B,eAAA,EAAiB,CAAC,UAAA,KAAe,IAAA;AAAA,EACjC,MAAM,UAAA,CAAW,SAAA;AAAA,EACjB,KAAA,EAAO,KAAA;AAAA,EACP,KAAA,EAAO,UAAA;AAAA,EACP,UAAA,EAAY,KAAA;AAAA,EACZ,aAAA,EAAe;AACnB,CAAA;AACA,MAAA,CAAO,OAAO,cAAc,CAAA;AAC5B,IAAM,oBAAA,GAAuB,0BAAA;AAC7B,IAAM,kBAAA,uBAAyB,GAAA,CAAI,CAAC,UAAU,OAAA,EAAS,QAAA,EAAU,OAAA,EAAS,oBAAoB,CAAC,CAAA;AAC/F,IAAM,SAAA,GAAY;AAAA,EACd,UAAA,CAAW,QAAA;AAAA,EACX,UAAA,CAAW,eAAA;AAAA,EACX,UAAA,CAAW,aAAA;AAAA,EACX,UAAA,CAAW;AACf,CAAA;AACA,IAAM,SAAA,uBAAgB,GAAA,CAAI;AAAA,EACtB,UAAA,CAAW,QAAA;AAAA,EACX,UAAA,CAAW,eAAA;AAAA,EACX,UAAA,CAAW;AACf,CAAC,CAAA;AACD,IAAM,UAAA,uBAAiB,GAAA,CAAI;AAAA,EACvB,UAAA,CAAW,eAAA;AAAA,EACX,UAAA,CAAW,aAAA;AAAA,EACX,UAAA,CAAW;AACf,CAAC,CAAA;AACD,IAAM,oBAAoB,CAAC,KAAA,KAAU,kBAAA,CAAmB,GAAA,CAAI,MAAM,IAAI,CAAA;AACtE,IAAM,iBAAA,GAAoB,QAAQ,QAAA,KAAa,OAAA;AAC/C,IAAM,OAAA,GAAU,CAAC,UAAA,KAAe,IAAA;AAChC,IAAM,eAAA,GAAkB,CAAC,MAAA,KAAW;AAChC,EAAA,IAAI,MAAA,KAAW,MAAA;AACX,IAAA,OAAO,OAAA;AACX,EAAA,IAAI,OAAO,MAAA,KAAW,UAAA;AAClB,IAAA,OAAO,MAAA;AACX,EAAA,IAAI,OAAO,WAAW,QAAA,EAAU;AAC5B,IAAA,MAAM,EAAA,GAAK,OAAO,IAAA,EAAK;AACvB,IAAA,OAAO,CAAC,KAAA,KAAU,KAAA,CAAM,QAAA,KAAa,EAAA;AAAA,EACzC;AACA,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,MAAM,CAAA,EAAG;AACvB,IAAA,MAAM,UAAU,MAAA,CAAO,GAAA,CAAI,CAAC,IAAA,KAAS,IAAA,CAAK,MAAM,CAAA;AAChD,IAAA,OAAO,CAAC,UAAU,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA,KAAM,KAAA,CAAM,aAAa,CAAC,CAAA;AAAA,EAC9D;AACA,EAAA,OAAO,OAAA;AACX,CAAA;AAEO,IAAM,cAAA,GAAN,cAA6BC,eAAA,CAAS;AAAA,EACzC,WAAA,CAAY,OAAA,GAAU,EAAC,EAAG;AACtB,IAAA,KAAA,CAAM;AAAA,MACF,UAAA,EAAY,IAAA;AAAA,MACZ,WAAA,EAAa,IAAA;AAAA,MACb,eAAe,OAAA,CAAQ;AAAA,KAC1B,CAAA;AACD,IAAA,MAAM,IAAA,GAAO,EAAE,GAAG,cAAA,EAAgB,GAAG,OAAA,EAAQ;AAC7C,IAAA,MAAM,EAAE,IAAA,EAAM,IAAA,EAAK,GAAI,IAAA;AACvB,IAAA,IAAA,CAAK,WAAA,GAAc,eAAA,CAAgB,IAAA,CAAK,UAAU,CAAA;AAClD,IAAA,IAAA,CAAK,gBAAA,GAAmB,eAAA,CAAgB,IAAA,CAAK,eAAe,CAAA;AAC5D,IAAA,MAAM,UAAA,GAAa,IAAA,CAAK,KAAA,GAAQC,QAAA,GAAQC,OAAA;AAExC,IAAA,IAAI,iBAAA,EAAmB;AACnB,MAAA,IAAA,CAAK,KAAA,GAAQ,CAACpB,KAAAA,KAAS,UAAA,CAAWA,OAAM,EAAE,MAAA,EAAQ,MAAM,CAAA;AAAA,IAC5D,CAAA,MACK;AACD,MAAA,IAAA,CAAK,KAAA,GAAQ,UAAA;AAAA,IACjB;AACA,IAAA,IAAA,CAAK,SAAA,GAAY,IAAA,CAAK,KAAA,IAAS,cAAA,CAAe,KAAA;AAC9C,IAAA,IAAA,CAAK,SAAA,GAAY,IAAA,GAAO,SAAA,CAAU,GAAA,CAAI,IAAI,CAAA,GAAI,KAAA;AAC9C,IAAA,IAAA,CAAK,UAAA,GAAa,IAAA,GAAO,UAAA,CAAW,GAAA,CAAI,IAAI,CAAA,GAAI,KAAA;AAChD,IAAA,IAAA,CAAK,gBAAA,GAAmB,SAAS,UAAA,CAAW,eAAA;AAC5C,IAAA,IAAA,CAAK,KAAA,GAAQqB,iBAAS,IAAI,CAAA;AAC1B,IAAA,IAAA,CAAK,SAAA,GAAY,CAAC,IAAA,CAAK,UAAA;AACvB,IAAA,IAAA,CAAK,UAAA,GAAa,IAAA,CAAK,SAAA,GAAY,QAAA,GAAW,OAAA;AAC9C,IAAA,IAAA,CAAK,aAAa,EAAE,QAAA,EAAU,MAAA,EAAQ,aAAA,EAAe,KAAK,SAAA,EAAU;AAEpE,IAAA,IAAA,CAAK,UAAU,CAAC,IAAA,CAAK,WAAA,CAAY,IAAA,EAAM,CAAC,CAAC,CAAA;AACzC,IAAA,IAAA,CAAK,OAAA,GAAU,KAAA;AACf,IAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AAAA,EAClB;AAAA,EACA,MAAM,MAAM,KAAA,EAAO;AACf,IAAA,IAAI,IAAA,CAAK,OAAA;AACL,MAAA;AACJ,IAAA,IAAA,CAAK,OAAA,GAAU,IAAA;AACf,IAAA,IAAI;AACA,MAAA,OAAO,CAAC,IAAA,CAAK,SAAA,IAAa,KAAA,GAAQ,CAAA,EAAG;AACjC,QAAA,MAAM,MAAM,IAAA,CAAK,MAAA;AACjB,QAAA,MAAM,GAAA,GAAM,OAAO,GAAA,CAAI,KAAA;AACvB,QAAA,IAAI,GAAA,IAAO,GAAA,CAAI,MAAA,GAAS,CAAA,EAAG;AACvB,UAAA,MAAM,EAAE,IAAA,EAAArB,KAAAA,EAAM,KAAA,EAAM,GAAI,GAAA;AACxB,UAAA,MAAM,KAAA,GAAQ,GAAA,CAAI,MAAA,CAAO,CAAA,EAAG,KAAK,CAAA,CAAE,GAAA,CAAI,CAAC,MAAA,KAAW,IAAA,CAAK,YAAA,CAAa,MAAA,EAAQA,KAAI,CAAC,CAAA;AAClF,UAAA,MAAM,OAAA,GAAU,MAAM,OAAA,CAAQ,GAAA,CAAI,KAAK,CAAA;AACvC,UAAA,KAAA,MAAW,SAAS,OAAA,EAAS;AACzB,YAAA,IAAI,CAAC,KAAA;AACD,cAAA;AACJ,YAAA,IAAI,IAAA,CAAK,SAAA;AACL,cAAA;AACJ,YAAA,MAAM,SAAA,GAAY,MAAM,IAAA,CAAK,aAAA,CAAc,KAAK,CAAA;AAChD,YAAA,IAAI,SAAA,KAAc,WAAA,IAAe,IAAA,CAAK,gBAAA,CAAiB,KAAK,CAAA,EAAG;AAC3D,cAAA,IAAI,KAAA,IAAS,KAAK,SAAA,EAAW;AACzB,gBAAA,IAAA,CAAK,OAAA,CAAQ,KAAK,IAAA,CAAK,WAAA,CAAY,MAAM,QAAA,EAAU,KAAA,GAAQ,CAAC,CAAC,CAAA;AAAA,cACjE;AACA,cAAA,IAAI,KAAK,SAAA,EAAW;AAChB,gBAAA,IAAA,CAAK,KAAK,KAAK,CAAA;AACf,gBAAA,KAAA,EAAA;AAAA,cACJ;AAAA,YACJ,CAAA,MAAA,IAAA,CACU,SAAA,KAAc,MAAA,IAAU,IAAA,CAAK,cAAA,CAAe,KAAK,CAAA,KACvD,IAAA,CAAK,WAAA,CAAY,KAAK,CAAA,EAAG;AACzB,cAAA,IAAI,KAAK,UAAA,EAAY;AACjB,gBAAA,IAAA,CAAK,KAAK,KAAK,CAAA;AACf,gBAAA,KAAA,EAAA;AAAA,cACJ;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ,CAAA,MACK;AACD,UAAA,MAAM,MAAA,GAAS,IAAA,CAAK,OAAA,CAAQ,GAAA,EAAI;AAChC,UAAA,IAAI,CAAC,MAAA,EAAQ;AACT,YAAA,IAAA,CAAK,KAAK,IAAI,CAAA;AACd,YAAA;AAAA,UACJ;AACA,UAAA,IAAA,CAAK,SAAS,MAAM,MAAA;AACpB,UAAA,IAAI,IAAA,CAAK,SAAA;AACL,YAAA;AAAA,QACR;AAAA,MACJ;AAAA,IACJ,SACO,KAAA,EAAO;AACV,MAAA,IAAA,CAAK,QAAQ,KAAK,CAAA;AAAA,IACtB,CAAA,SACA;AACI,MAAA,IAAA,CAAK,OAAA,GAAU,KAAA;AAAA,IACnB;AAAA,EACJ;AAAA,EACA,MAAM,WAAA,CAAYA,KAAAA,EAAM,KAAA,EAAO;AAC3B,IAAA,IAAI,KAAA;AACJ,IAAA,IAAI;AACA,MAAA,KAAA,GAAQ,MAAMsB,UAAA,CAAQtB,KAAAA,EAAM,IAAA,CAAK,UAAU,CAAA;AAAA,IAC/C,SACO,KAAA,EAAO;AACV,MAAA,IAAA,CAAK,SAAS,KAAK,CAAA;AAAA,IACvB;AACA,IAAA,OAAO,EAAE,KAAA,EAAO,KAAA,EAAO,IAAA,EAAAA,KAAAA,EAAK;AAAA,EAChC;AAAA,EACA,MAAM,YAAA,CAAa,MAAA,EAAQA,KAAAA,EAAM;AAC7B,IAAA,IAAI,KAAA;AACJ,IAAA,MAAMuB,SAAAA,GAAW,IAAA,CAAK,SAAA,GAAY,MAAA,CAAO,IAAA,GAAO,MAAA;AAChD,IAAA,IAAI;AACA,MAAA,MAAM,QAAA,GAAWF,gBAAA,CAASG,aAAA,CAAMxB,KAAAA,EAAMuB,SAAQ,CAAC,CAAA;AAC/C,MAAA,KAAA,GAAQ,EAAE,MAAME,iBAAA,CAAU,IAAA,CAAK,OAAO,QAAQ,CAAA,EAAG,QAAA,EAAU,QAAA,EAAAF,SAAAA,EAAS;AACpE,MAAA,KAAA,CAAM,IAAA,CAAK,UAAU,CAAA,GAAI,IAAA,CAAK,YAAY,MAAA,GAAS,MAAM,IAAA,CAAK,KAAA,CAAM,QAAQ,CAAA;AAAA,IAChF,SACO,GAAA,EAAK;AACR,MAAA,IAAA,CAAK,SAAS,GAAG,CAAA;AACjB,MAAA;AAAA,IACJ;AACA,IAAA,OAAO,KAAA;AAAA,EACX;AAAA,EACA,SAAS,GAAA,EAAK;AACV,IAAA,IAAI,iBAAA,CAAkB,GAAG,CAAA,IAAK,CAAC,KAAK,SAAA,EAAW;AAC3C,MAAA,IAAA,CAAK,IAAA,CAAK,QAAQ,GAAG,CAAA;AAAA,IACzB,CAAA,MACK;AACD,MAAA,IAAA,CAAK,QAAQ,GAAG,CAAA;AAAA,IACpB;AAAA,EACJ;AAAA,EACA,MAAM,cAAc,KAAA,EAAO;AAGvB,IAAA,IAAI,CAAC,KAAA,IAAS,IAAA,CAAK,UAAA,IAAc,KAAA,EAAO;AACpC,MAAA,OAAO,EAAA;AAAA,IACX;AACA,IAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,IAAA,CAAK,UAAU,CAAA;AACnC,IAAA,IAAI,MAAM,MAAA,EAAO;AACb,MAAA,OAAO,MAAA;AACX,IAAA,IAAI,MAAM,WAAA,EAAY;AAClB,MAAA,OAAO,WAAA;AACX,IAAA,IAAI,KAAA,IAAS,KAAA,CAAM,cAAA,EAAe,EAAG;AACjC,MAAA,MAAM,OAAO,KAAA,CAAM,QAAA;AACnB,MAAA,IAAI;AACA,QAAA,MAAM,aAAA,GAAgB,MAAMG,WAAA,CAAS,IAAI,CAAA;AACzC,QAAA,MAAM,kBAAA,GAAqB,MAAMP,QAAA,CAAM,aAAa,CAAA;AACpD,QAAA,IAAI,kBAAA,CAAmB,QAAO,EAAG;AAC7B,UAAA,OAAO,MAAA;AAAA,QACX;AACA,QAAA,IAAI,kBAAA,CAAmB,aAAY,EAAG;AAClC,UAAA,MAAM,MAAM,aAAA,CAAc,MAAA;AAC1B,UAAA,IAAI,IAAA,CAAK,WAAW,aAAa,CAAA,IAAK,KAAK,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA,KAAMQ,YAAA,EAAM;AAChE,YAAA,MAAM,iBAAiB,IAAI,KAAA,CAAM,+BAA+B,IAAI,CAAA,aAAA,EAAgB,aAAa,CAAA,CAAA,CAAG,CAAA;AAEpG,YAAA,cAAA,CAAe,IAAA,GAAO,oBAAA;AACtB,YAAA,OAAO,IAAA,CAAK,SAAS,cAAc,CAAA;AAAA,UACvC;AACA,UAAA,OAAO,WAAA;AAAA,QACX;AAAA,MACJ,SACO,KAAA,EAAO;AACV,QAAA,IAAA,CAAK,SAAS,KAAK,CAAA;AACnB,QAAA,OAAO,EAAA;AAAA,MACX;AAAA,IACJ;AAAA,EACJ;AAAA,EACA,eAAe,KAAA,EAAO;AAClB,IAAA,MAAM,KAAA,GAAQ,KAAA,IAAS,KAAA,CAAM,IAAA,CAAK,UAAU,CAAA;AAC5C,IAAA,OAAO,KAAA,IAAS,IAAA,CAAK,gBAAA,IAAoB,CAAC,MAAM,WAAA,EAAY;AAAA,EAChE;AACJ,CAAA;AAOO,SAAS,QAAA,CAAS,IAAA,EAAM,OAAA,GAAU,EAAC,EAAG;AAEzC,EAAA,IAAI,IAAA,GAAO,OAAA,CAAQ,SAAA,IAAa,OAAA,CAAQ,IAAA;AACxC,EAAA,IAAI,IAAA,KAAS,MAAA;AACT,IAAA,IAAA,GAAO,UAAA,CAAW,aAAA;AACtB,EAAA,IAAI,IAAA;AACA,IAAA,OAAA,CAAQ,IAAA,GAAO,IAAA;AACnB,EAAA,IAAI,CAAC,IAAA,EAAM;AACP,IAAA,MAAM,IAAI,MAAM,qEAAqE,CAAA;AAAA,EACzF,CAAA,MAAA,IACS,OAAO,IAAA,KAAS,QAAA,EAAU;AAC/B,IAAA,MAAM,IAAI,UAAU,0EAA0E,CAAA;AAAA,EAClG,WACS,IAAA,IAAQ,CAAC,SAAA,CAAU,QAAA,CAAS,IAAI,CAAA,EAAG;AACxC,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,0CAAA,EAA6C,UAAU,IAAA,CAAK,IAAI,CAAC,CAAA,CAAE,CAAA;AAAA,EACvF;AACA,EAAA,OAAA,CAAQ,IAAA,GAAO,IAAA;AACf,EAAA,OAAO,IAAI,eAAe,OAAO,CAAA;AACrC;AC7OO,IAAM,QAAA,GAAW,MAAA;AACjB,IAAM,OAAA,GAAU,KAAA;AAChB,IAAM,SAAA,GAAY,OAAA;AAClB,IAAM,WAAW,MAAM;AAAE,CAAA;AAEhC,IAAM,KAAK,OAAA,CAAQ,QAAA;AACZ,IAAM,YAAY,EAAA,KAAO,OAAA;AACzB,IAAM,UAAU,EAAA,KAAO,QAAA;AACvB,IAAM,UAAU,EAAA,KAAO,OAAA;AACvB,IAAM,YAAY,EAAA,KAAO,SAAA;AACzB,IAAM,MAAA,GAASC,SAAO,KAAM,OAAA;AAC5B,IAAM,MAAA,GAAS;AAAA,EAClB,GAAA,EAAK,KAAA;AAAA,EACL,KAAA,EAAO,OAAA;AAAA,EACP,GAAA,EAAK,KAAA;AAAA,EACL,MAAA,EAAQ,QAAA;AAAA,EACR,OAAA,EAAS,QAAA;AAAA,EACT,MAAA,EAAQ,QAAA;AAAA,EACR,UAAA,EAAY,WAAA;AAAA,EACZ,GAAA,EAAK,KAAA;AAAA,EACL,KAAA,EAAO;AACX,CAAA;AACA,IAAM,EAAA,GAAK,MAAA;AACX,IAAM,mBAAA,GAAsB,OAAA;AAC5B,IAAM,WAAA,GAAc,EAAE,KAAA,EAAAT,QAAAA,EAAO,MAAAC,OAAAA,EAAK;AAClC,IAAM,aAAA,GAAgB,WAAA;AACtB,IAAM,OAAA,GAAU,aAAA;AAChB,IAAM,OAAA,GAAU,aAAA;AAChB,IAAM,YAAA,GAAe,CAAC,aAAA,EAAe,OAAA,EAAS,OAAO,CAAA;AAErD,IAAM,gBAAA,uBAAuB,GAAA,CAAI;AAAA,EAC7B,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,IAAA;AAAA,EAAM,GAAA;AAAA,EAAK,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,UAAA;AAAA,EAAY,SAAA;AAAA,EAAW,OAAA;AAAA,EAAS,IAAA;AAAA,EACrF,KAAA;AAAA,EAAO,MAAA;AAAA,EAAQ,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,UAAA;AAAA,EAAY,IAAA;AAAA,EAAM,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,IAAA;AAAA,EAAM,KAAA;AAAA,EAC1E,KAAA;AAAA,EAAO,MAAA;AAAA,EAAQ,IAAA;AAAA,EAAM,KAAA;AAAA,EAAO,IAAA;AAAA,EAAM,KAAA;AAAA,EAAO,MAAA;AAAA,EAAQ,KAAA;AAAA,EAAO,OAAA;AAAA,EACxD,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,OAAA;AAAA,EAAS,KAAA;AAAA,EAAO,MAAA;AAAA,EAAQ,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,MAAA;AAAA,EACvF,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,KAAA;AAAA,EAAO,MAAA;AAAA,EAAQ,KAAA;AAAA,EAAO,UAAA;AAAA,EAAY,KAAA;AAAA,EAAO,KAAA;AAAA,EACrF,OAAA;AAAA,EAAS,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EACvB,WAAA;AAAA,EAAa,WAAA;AAAA,EAAa,WAAA;AAAA,EAAa,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,MAAA;AAAA,EAAQ,KAAA;AAAA,EACpE,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,IAAA;AAAA,EAAM,KAAA;AAAA,EAAO,MAAA;AAAA,EAAQ,SAAA;AAAA,EAAW,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAC1E,IAAA;AAAA,EAAM,IAAA;AAAA,EAAM,KAAA;AAAA,EAAO,SAAA;AAAA,EAAW,IAAA;AAAA,EAAM,MAAA;AAAA,EACpC,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAC5D,KAAA;AAAA,EAAO,MAAA;AAAA,EAAQ,KAAA;AAAA,EAAO,MAAA;AAAA,EAAQ,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EACnD,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,IAAA;AAAA,EAAM,KAAA;AAAA,EAAO,MAAA;AAAA,EAAQ,KAAA;AAAA,EAC1C,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,MAAA;AAAA,EAAQ,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EACrF,MAAA;AAAA,EAAQ,KAAA;AAAA,EAAO,OAAA;AAAA,EAAS,KAAA;AAAA,EACxB,KAAA;AAAA,EAAO,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,KAAA;AAAA,EAAO,MAAA;AAAA,EAAQ,KAAA;AAAA,EACtC,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,SAAA;AAAA,EAAW,OAAA;AAAA,EACzB,GAAA;AAAA,EAAK,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EACtD,OAAA;AAAA,EAAS,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,MAAA;AAAA,EAC/E,MAAA;AAAA,EAAQ,KAAA;AAAA,EAAO,MAAA;AAAA,EACf,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,KAAA;AAAA,EAAO,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EACjF,IAAA;AAAA,EACA,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,WAAA;AAAA,EAAa,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,MAAA;AAAA,EAAQ,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,IAAA;AAAA,EACpF,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,MAAA;AAAA,EAAQ,KAAA;AAAA,EAAO,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,KAAA;AAAA,EAAO,QAAA;AAAA,EAAU,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,IAAA;AAAA,EACnF,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EACrB,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,MAAA;AAAA,EAAQ,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,MAAA;AAAA,EAAQ,KAAA;AAAA,EAAO,MAAA;AAAA,EAAQ,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAChF,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAC1C,KAAA;AAAA,EAAO,KAAA;AAAA,EACP,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,MAAA;AAAA,EAAQ,KAAA;AAAA,EAAO,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,IAAA;AAAA,EAAM,KAAA;AAAA,EAChF,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,MAAA;AAAA,EAAQ,OAAA;AAAA,EAAS,KAAA;AAAA,EAAO,KAAA;AAAA,EACtC,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,MAAA;AAAA,EAAQ,KAAA;AAAA,EAAO,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,KAAA;AAAA,EAAO,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,IAAA;AAAA,EACnF,OAAA;AAAA,EAAS,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,IAAA;AAAA,EAC9B,GAAA;AAAA,EAAK,KAAA;AAAA,EAAO;AAChB,CAAC,CAAA;AACD,IAAM,YAAA,GAAe,CAAC,QAAA,KAAa,gBAAA,CAAiB,GAAA,CAAYS,mBAAA,CAAA,OAAA,CAAQ,QAAQ,CAAA,CAAE,KAAA,CAAM,CAAC,CAAA,CAAE,WAAA,EAAa,CAAA;AAExG,IAAM,OAAA,GAAU,CAAC,GAAA,EAAK,EAAA,KAAO;AACzB,EAAA,IAAI,eAAe,GAAA,EAAK;AACpB,IAAA,GAAA,CAAI,QAAQ,EAAE,CAAA;AAAA,EAClB,CAAA,MACK;AACD,IAAA,EAAA,CAAG,GAAG,CAAA;AAAA,EACV;AACJ,CAAA;AACA,IAAM,aAAA,GAAgB,CAACC,KAAAA,EAAM,IAAA,EAAM,IAAA,KAAS;AACxC,EAAA,IAAI,SAAA,GAAYA,MAAK,IAAI,CAAA;AACzB,EAAA,IAAI,EAAE,qBAAqB,GAAA,CAAA,EAAM;AAC7B,IAAAA,KAAAA,CAAK,IAAI,CAAA,GAAI,SAAA,uBAAgB,GAAA,CAAI,CAAC,SAAS,CAAC,CAAA;AAAA,EAChD;AACA,EAAA,SAAA,CAAU,IAAI,IAAI,CAAA;AACtB,CAAA;AACA,IAAM,SAAA,GAAY,CAAC,IAAA,KAAS,CAAC,GAAA,KAAQ;AACjC,EAAA,MAAM,GAAA,GAAM,KAAK,GAAG,CAAA;AACpB,EAAA,IAAI,eAAe,GAAA,EAAK;AACpB,IAAA,GAAA,CAAI,KAAA,EAAM;AAAA,EACd,CAAA,MACK;AACD,IAAA,OAAO,KAAK,GAAG,CAAA;AAAA,EACnB;AACJ,CAAA;AACA,IAAM,UAAA,GAAa,CAACA,KAAAA,EAAM,IAAA,EAAM,IAAA,KAAS;AACrC,EAAA,MAAM,SAAA,GAAYA,MAAK,IAAI,CAAA;AAC3B,EAAA,IAAI,qBAAqB,GAAA,EAAK;AAC1B,IAAA,SAAA,CAAU,OAAO,IAAI,CAAA;AAAA,EACzB,CAAA,MAAA,IACS,cAAc,IAAA,EAAM;AACzB,IAAA,OAAOA,MAAK,IAAI,CAAA;AAAA,EACpB;AACJ,CAAA;AACA,IAAM,UAAA,GAAa,CAAC,GAAA,KAAS,GAAA,YAAe,MAAM,GAAA,CAAI,IAAA,KAAS,IAAI,CAAC,GAAA;AACpE,IAAM,gBAAA,uBAAuB,GAAA,EAAI;AAUjC,SAAS,qBAAA,CAAsB9B,KAAAA,EAAM,OAAA,EAAS,QAAA,EAAU,YAAY,OAAA,EAAS;AACzE,EAAA,MAAM,WAAA,GAAc,CAAC,QAAA,EAAU,MAAA,KAAW;AACtC,IAAA,QAAA,CAASA,KAAI,CAAA;AACb,IAAA,OAAA,CAAQ,QAAA,EAAU,MAAA,EAAQ,EAAE,WAAA,EAAaA,OAAM,CAAA;AAG/C,IAAA,IAAI,MAAA,IAAUA,UAAS,MAAA,EAAQ;AAC3B,MAAA,gBAAA,CAAyB6B,mBAAA,CAAA,OAAA,CAAQ7B,OAAM,MAAM,CAAA,EAAG,eAAuB6B,mBAAA,CAAA,IAAA,CAAK7B,KAAAA,EAAM,MAAM,CAAC,CAAA;AAAA,IAC7F;AAAA,EACJ,CAAA;AACA,EAAA,IAAI;AACA,IAAA,OAAO+B,WAAS/B,KAAAA,EAAM;AAAA,MAClB,YAAY,OAAA,CAAQ;AAAA,OACrB,WAAW,CAAA;AAAA,EAClB,SACO,KAAA,EAAO;AACV,IAAA,UAAA,CAAW,KAAK,CAAA;AAChB,IAAA,OAAO,MAAA;AAAA,EACX;AACJ;AAKA,IAAM,mBAAmB,CAAC,QAAA,EAAU,YAAA,EAAc,IAAA,EAAM,MAAM,IAAA,KAAS;AACnE,EAAA,MAAM,IAAA,GAAO,gBAAA,CAAiB,GAAA,CAAI,QAAQ,CAAA;AAC1C,EAAA,IAAI,CAAC,IAAA;AACD,IAAA;AACJ,EAAA,OAAA,CAAQ,IAAA,CAAK,YAAY,CAAA,EAAG,CAAC,QAAA,KAAa;AACtC,IAAA,QAAA,CAAS,IAAA,EAAM,MAAM,IAAI,CAAA;AAAA,EAC7B,CAAC,CAAA;AACL,CAAA;AASA,IAAM,kBAAA,GAAqB,CAACA,KAAAA,EAAM,QAAA,EAAU,SAAS,QAAA,KAAa;AAC9D,EAAA,MAAM,EAAE,QAAA,EAAU,UAAA,EAAY,UAAA,EAAW,GAAI,QAAA;AAC7C,EAAA,IAAI,IAAA,GAAO,gBAAA,CAAiB,GAAA,CAAI,QAAQ,CAAA;AACxC,EAAA,IAAI,OAAA;AACJ,EAAA,IAAI,CAAC,QAAQ,UAAA,EAAY;AACrB,IAAA,OAAA,GAAU,qBAAA,CAAsBA,KAAAA,EAAM,OAAA,EAAS,QAAA,EAAU,YAAY,UAAU,CAAA;AAC/E,IAAA,IAAI,CAAC,OAAA;AACD,MAAA;AACJ,IAAA,OAAO,OAAA,CAAQ,KAAA,CAAM,IAAA,CAAK,OAAO,CAAA;AAAA,EACrC;AACA,EAAA,IAAI,IAAA,EAAM;AACN,IAAA,aAAA,CAAc,IAAA,EAAM,eAAe,QAAQ,CAAA;AAC3C,IAAA,aAAA,CAAc,IAAA,EAAM,SAAS,UAAU,CAAA;AACvC,IAAA,aAAA,CAAc,IAAA,EAAM,SAAS,UAAU,CAAA;AAAA,EAC3C,CAAA,MACK;AACD,IAAA,OAAA,GAAU,qBAAA;AAAA,MAAsBA,KAAAA;AAAA,MAAM,OAAA;AAAA,MAAS,gBAAA,CAAiB,IAAA,CAAK,IAAA,EAAM,QAAA,EAAU,aAAa,CAAA;AAAA,MAAG,UAAA;AAAA;AAAA,MACrG,gBAAA,CAAiB,IAAA,CAAK,IAAA,EAAM,QAAA,EAAU,OAAO;AAAA,KAAC;AAC9C,IAAA,IAAI,CAAC,OAAA;AACD,MAAA;AACJ,IAAA,OAAA,CAAQ,EAAA,CAAG,EAAA,CAAG,KAAA,EAAO,OAAO,KAAA,KAAU;AAClC,MAAA,MAAM,YAAA,GAAe,gBAAA,CAAiB,IAAA,CAAK,IAAA,EAAM,UAAU,OAAO,CAAA;AAClE,MAAA,IAAI,IAAA;AACA,QAAA,IAAA,CAAK,eAAA,GAAkB,IAAA;AAE3B,MAAA,IAAI,SAAA,IAAa,KAAA,CAAM,IAAA,KAAS,OAAA,EAAS;AACrC,QAAA,IAAI;AACA,UAAA,MAAM,EAAA,GAAK,MAAMa,OAAA,CAAKb,KAAAA,EAAM,GAAG,CAAA;AAC/B,UAAA,MAAM,GAAG,KAAA,EAAM;AACf,UAAA,YAAA,CAAa,KAAK,CAAA;AAAA,QACtB,SACO,GAAA,EAAK;AAAA,QAEZ;AAAA,MACJ,CAAA,MACK;AACD,QAAA,YAAA,CAAa,KAAK,CAAA;AAAA,MACtB;AAAA,IACJ,CAAC,CAAA;AACD,IAAA,IAAA,GAAO;AAAA,MACH,SAAA,EAAW,QAAA;AAAA,MACX,WAAA,EAAa,UAAA;AAAA,MACb,WAAA,EAAa,UAAA;AAAA,MACb;AAAA,KACJ;AACA,IAAA,gBAAA,CAAiB,GAAA,CAAI,UAAU,IAAI,CAAA;AAAA,EACvC;AAIA,EAAA,OAAO,MAAM;AACT,IAAA,UAAA,CAAW,IAAA,EAAM,eAAe,QAAQ,CAAA;AACxC,IAAA,UAAA,CAAW,IAAA,EAAM,SAAS,UAAU,CAAA;AACpC,IAAA,UAAA,CAAW,IAAA,EAAM,SAAS,UAAU,CAAA;AACpC,IAAA,IAAI,UAAA,CAAW,IAAA,CAAK,SAAS,CAAA,EAAG;AAG5B,MAAA,IAAA,CAAK,QAAQ,KAAA,EAAM;AAEnB,MAAA,gBAAA,CAAiB,OAAO,QAAQ,CAAA;AAChC,MAAA,YAAA,CAAa,OAAA,CAAQ,SAAA,CAAU,IAAI,CAAC,CAAA;AAEpC,MAAA,IAAA,CAAK,OAAA,GAAU,MAAA;AACf,MAAA,MAAA,CAAO,OAAO,IAAI,CAAA;AAAA,IACtB;AAAA,EACJ,CAAA;AACJ,CAAA;AAIA,IAAM,oBAAA,uBAA2B,GAAA,EAAI;AAUrC,IAAM,sBAAA,GAAyB,CAACA,KAAAA,EAAM,QAAA,EAAU,SAAS,QAAA,KAAa;AAClE,EAAA,MAAM,EAAE,QAAA,EAAU,UAAA,EAAW,GAAI,QAAA;AACjC,EAAA,IAAI,IAAA,GAAO,oBAAA,CAAqB,GAAA,CAAI,QAAQ,CAAA;AAG5C,EAAA,MAAM,KAAA,GAAQ,QAAQ,IAAA,CAAK,OAAA;AAC3B,EAAA,IAAI,KAAA,KAAU,MAAM,UAAA,GAAa,OAAA,CAAQ,cAAc,KAAA,CAAM,QAAA,GAAW,QAAQ,QAAA,CAAA,EAAW;AAOvF,IAAAgC,gBAAA,CAAY,QAAQ,CAAA;AACpB,IAAA,IAAA,GAAO,MAAA;AAAA,EACX;AACA,EAAA,IAAI,IAAA,EAAM;AACN,IAAA,aAAA,CAAc,IAAA,EAAM,eAAe,QAAQ,CAAA;AAC3C,IAAA,aAAA,CAAc,IAAA,EAAM,SAAS,UAAU,CAAA;AAAA,EAC3C,CAAA,MACK;AAID,IAAA,IAAA,GAAO;AAAA,MACH,SAAA,EAAW,QAAA;AAAA,MACX,WAAA,EAAa,UAAA;AAAA,MACb,OAAA;AAAA,MACA,SAASC,cAAA,CAAU,QAAA,EAAU,OAAA,EAAS,CAAC,MAAM,IAAA,KAAS;AAClD,QAAA,OAAA,CAAQ,IAAA,CAAK,WAAA,EAAa,CAACC,WAAAA,KAAe;AACtC,UAAAA,YAAW,EAAA,CAAG,MAAA,EAAQ,UAAU,EAAE,IAAA,EAAM,MAAM,CAAA;AAAA,QAClD,CAAC,CAAA;AACD,QAAA,MAAM,YAAY,IAAA,CAAK,OAAA;AACvB,QAAA,IAAI,IAAA,CAAK,SAAS,IAAA,CAAK,IAAA,IAAQ,YAAY,IAAA,CAAK,OAAA,IAAW,cAAc,CAAA,EAAG;AACxE,UAAA,OAAA,CAAQ,KAAK,SAAA,EAAW,CAACC,cAAaA,SAAAA,CAASnC,KAAAA,EAAM,IAAI,CAAC,CAAA;AAAA,QAC9D;AAAA,MACJ,CAAC;AAAA,KACL;AACA,IAAA,oBAAA,CAAqB,GAAA,CAAI,UAAU,IAAI,CAAA;AAAA,EAC3C;AAIA,EAAA,OAAO,MAAM;AACT,IAAA,UAAA,CAAW,IAAA,EAAM,eAAe,QAAQ,CAAA;AACxC,IAAA,UAAA,CAAW,IAAA,EAAM,SAAS,UAAU,CAAA;AACpC,IAAA,IAAI,UAAA,CAAW,IAAA,CAAK,SAAS,CAAA,EAAG;AAC5B,MAAA,oBAAA,CAAqB,OAAO,QAAQ,CAAA;AACpC,MAAAgC,gBAAA,CAAY,QAAQ,CAAA;AACpB,MAAA,IAAA,CAAK,OAAA,GAAU,KAAK,OAAA,GAAU,MAAA;AAC9B,MAAA,MAAA,CAAO,OAAO,IAAI,CAAA;AAAA,IACtB;AAAA,EACJ,CAAA;AACJ,CAAA;AAIO,IAAM,gBAAN,MAAoB;AAAA,EACvB,YAAY,GAAA,EAAK;AACb,IAAA,IAAA,CAAK,GAAA,GAAM,GAAA;AACX,IAAA,IAAA,CAAK,iBAAA,GAAoB,CAAC,KAAA,KAAU,GAAA,CAAI,aAAa,KAAK,CAAA;AAAA,EAC9D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,gBAAA,CAAiBhC,OAAM,QAAA,EAAU;AAC7B,IAAA,MAAM,IAAA,GAAO,KAAK,GAAA,CAAI,OAAA;AACtB,IAAA,MAAM,SAAA,GAAoB6B,4BAAQ7B,KAAI,CAAA;AACtC,IAAA,MAAMuB,SAAAA,GAAmBM,6BAAS7B,KAAI,CAAA;AACtC,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,GAAA,CAAI,cAAA,CAAe,SAAS,CAAA;AAChD,IAAA,MAAA,CAAO,IAAIuB,SAAQ,CAAA;AACnB,IAAA,MAAM,YAAA,GAAuBM,4BAAQ7B,KAAI,CAAA;AACzC,IAAA,MAAM,OAAA,GAAU;AAAA,MACZ,YAAY,IAAA,CAAK;AAAA,KACrB;AACA,IAAA,IAAI,CAAC,QAAA;AACD,MAAA,QAAA,GAAW,QAAA;AACf,IAAA,IAAI,MAAA;AACJ,IAAA,IAAI,KAAK,UAAA,EAAY;AACjB,MAAA,MAAM,SAAA,GAAY,IAAA,CAAK,QAAA,KAAa,IAAA,CAAK,cAAA;AACzC,MAAA,OAAA,CAAQ,WAAW,SAAA,IAAa,YAAA,CAAauB,SAAQ,CAAA,GAAI,IAAA,CAAK,iBAAiB,IAAA,CAAK,QAAA;AACpF,MAAA,MAAA,GAAS,sBAAA,CAAuBvB,KAAAA,EAAM,YAAA,EAAc,OAAA,EAAS;AAAA,QACzD,QAAA;AAAA,QACA,UAAA,EAAY,KAAK,GAAA,CAAI;AAAA,OACxB,CAAA;AAAA,IACL,CAAA,MACK;AACD,MAAA,MAAA,GAAS,kBAAA,CAAmBA,KAAAA,EAAM,YAAA,EAAc,OAAA,EAAS;AAAA,QACrD,QAAA;AAAA,QACA,YAAY,IAAA,CAAK,iBAAA;AAAA,QACjB,UAAA,EAAY,KAAK,GAAA,CAAI;AAAA,OACxB,CAAA;AAAA,IACL;AACA,IAAA,OAAO,MAAA;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,WAAA,CAAY,IAAA,EAAM,KAAA,EAAO,UAAA,EAAY;AACjC,IAAA,IAAI,IAAA,CAAK,IAAI,MAAA,EAAQ;AACjB,MAAA;AAAA,IACJ;AACA,IAAA,MAAMoC,QAAAA,GAAkBP,4BAAQ,IAAI,CAAA;AACpC,IAAA,MAAMN,SAAAA,GAAmBM,6BAAS,IAAI,CAAA;AACtC,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,GAAA,CAAI,cAAA,CAAeO,QAAO,CAAA;AAE9C,IAAA,IAAI,SAAA,GAAY,KAAA;AAEhB,IAAA,IAAI,MAAA,CAAO,IAAIb,SAAQ,CAAA;AACnB,MAAA;AACJ,IAAA,MAAM,QAAA,GAAW,OAAOvB,KAAAA,EAAM,QAAA,KAAa;AACvC,MAAA,IAAI,CAAC,IAAA,CAAK,GAAA,CAAI,SAAA,CAAU,mBAAA,EAAqB,MAAM,CAAC,CAAA;AAChD,QAAA;AACJ,MAAA,IAAI,CAAC,QAAA,IAAY,QAAA,CAAS,OAAA,KAAY,CAAA,EAAG;AACrC,QAAA,IAAI;AACA,UAAA,MAAMqC,SAAAA,GAAW,MAAMjB,OAAAA,CAAK,IAAI,CAAA;AAChC,UAAA,IAAI,KAAK,GAAA,CAAI,MAAA;AACT,YAAA;AAEJ,UAAA,MAAM,KAAKiB,SAAAA,CAAS,OAAA;AACpB,UAAA,MAAM,KAAKA,SAAAA,CAAS,OAAA;AACpB,UAAA,IAAI,CAAC,EAAA,IAAM,EAAA,IAAM,EAAA,IAAM,EAAA,KAAO,UAAU,OAAA,EAAS;AAC7C,YAAA,IAAA,CAAK,GAAA,CAAI,KAAA,CAAM,EAAA,CAAG,MAAA,EAAQ,MAAMA,SAAQ,CAAA;AAAA,UAC5C;AACA,UAAA,IAAA,CAAK,WAAW,OAAA,IAAW,SAAA,KAAc,SAAA,CAAU,GAAA,KAAQA,UAAS,GAAA,EAAK;AACrE,YAAA,IAAA,CAAK,GAAA,CAAI,WAAWrC,KAAI,CAAA;AACxB,YAAA,SAAA,GAAYqC,SAAAA;AACZ,YAAA,MAAMC,OAAAA,GAAS,IAAA,CAAK,gBAAA,CAAiB,IAAA,EAAM,QAAQ,CAAA;AACnD,YAAA,IAAIA,OAAAA;AACA,cAAA,IAAA,CAAK,GAAA,CAAI,cAAA,CAAetC,KAAAA,EAAMsC,OAAM,CAAA;AAAA,UAC5C,CAAA,MACK;AACD,YAAA,SAAA,GAAYD,SAAAA;AAAA,UAChB;AAAA,QACJ,SACO,KAAA,EAAO;AAEV,UAAA,IAAA,CAAK,GAAA,CAAI,OAAA,CAAQD,QAAAA,EAASb,SAAQ,CAAA;AAAA,QACtC;AAAA,MAEJ,CAAA,MAAA,IACS,MAAA,CAAO,GAAA,CAAIA,SAAQ,CAAA,EAAG;AAE3B,QAAA,MAAM,KAAK,QAAA,CAAS,OAAA;AACpB,QAAA,MAAM,KAAK,QAAA,CAAS,OAAA;AACpB,QAAA,IAAI,CAAC,EAAA,IAAM,EAAA,IAAM,EAAA,IAAM,EAAA,KAAO,UAAU,OAAA,EAAS;AAC7C,UAAA,IAAA,CAAK,GAAA,CAAI,KAAA,CAAM,EAAA,CAAG,MAAA,EAAQ,MAAM,QAAQ,CAAA;AAAA,QAC5C;AACA,QAAA,SAAA,GAAY,QAAA;AAAA,MAChB;AAAA,IACJ,CAAA;AAEA,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,gBAAA,CAAiB,IAAA,EAAM,QAAQ,CAAA;AAEnD,IAAA,IAAI,EAAE,UAAA,IAAc,IAAA,CAAK,GAAA,CAAI,OAAA,CAAQ,kBAAkB,IAAA,CAAK,GAAA,CAAI,YAAA,CAAa,IAAI,CAAA,EAAG;AAChF,MAAA,IAAI,CAAC,IAAA,CAAK,GAAA,CAAI,UAAU,EAAA,CAAG,GAAA,EAAK,MAAM,CAAC,CAAA;AACnC,QAAA;AACJ,MAAA,IAAA,CAAK,GAAA,CAAI,KAAA,CAAM,EAAA,CAAG,GAAA,EAAK,MAAM,KAAK,CAAA;AAAA,IACtC;AACA,IAAA,OAAO,MAAA;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,cAAA,CAAe,KAAA,EAAO,SAAA,EAAWvB,OAAM,IAAA,EAAM;AAC/C,IAAA,IAAI,IAAA,CAAK,IAAI,MAAA,EAAQ;AACjB,MAAA;AAAA,IACJ;AACA,IAAA,MAAM,OAAO,KAAA,CAAM,QAAA;AACnB,IAAA,MAAM,GAAA,GAAM,IAAA,CAAK,GAAA,CAAI,cAAA,CAAe,SAAS,CAAA;AAC7C,IAAA,IAAI,CAAC,IAAA,CAAK,GAAA,CAAI,OAAA,CAAQ,cAAA,EAAgB;AAElC,MAAA,IAAA,CAAK,IAAI,eAAA,EAAgB;AACzB,MAAA,IAAI,QAAA;AACJ,MAAA,IAAI;AACA,QAAA,QAAA,GAAW,MAAMuC,YAAWvC,KAAI,CAAA;AAAA,MACpC,SACO,CAAA,EAAG;AACN,QAAA,IAAA,CAAK,IAAI,UAAA,EAAW;AACpB,QAAA,OAAO,IAAA;AAAA,MACX;AACA,MAAA,IAAI,KAAK,GAAA,CAAI,MAAA;AACT,QAAA;AACJ,MAAA,IAAI,GAAA,CAAI,GAAA,CAAI,IAAI,CAAA,EAAG;AACf,QAAA,IAAI,KAAK,GAAA,CAAI,aAAA,CAAc,GAAA,CAAI,IAAI,MAAM,QAAA,EAAU;AAC/C,UAAA,IAAA,CAAK,GAAA,CAAI,aAAA,CAAc,GAAA,CAAI,IAAA,EAAM,QAAQ,CAAA;AACzC,UAAA,IAAA,CAAK,IAAI,KAAA,CAAM,EAAA,CAAG,MAAA,EAAQA,KAAAA,EAAM,MAAM,KAAK,CAAA;AAAA,QAC/C;AAAA,MACJ,CAAA,MACK;AACD,QAAA,GAAA,CAAI,IAAI,IAAI,CAAA;AACZ,QAAA,IAAA,CAAK,GAAA,CAAI,aAAA,CAAc,GAAA,CAAI,IAAA,EAAM,QAAQ,CAAA;AACzC,QAAA,IAAA,CAAK,IAAI,KAAA,CAAM,EAAA,CAAG,GAAA,EAAKA,KAAAA,EAAM,MAAM,KAAK,CAAA;AAAA,MAC5C;AACA,MAAA,IAAA,CAAK,IAAI,UAAA,EAAW;AACpB,MAAA,OAAO,IAAA;AAAA,IACX;AAEA,IAAA,IAAI,IAAA,CAAK,GAAA,CAAI,aAAA,CAAc,GAAA,CAAI,IAAI,CAAA,EAAG;AAClC,MAAA,OAAO,IAAA;AAAA,IACX;AACA,IAAA,IAAA,CAAK,GAAA,CAAI,aAAA,CAAc,GAAA,CAAI,IAAA,EAAM,IAAI,CAAA;AAAA,EACzC;AAAA,EACA,YAAY,SAAA,EAAW,UAAA,EAAY,IAAI,MAAA,EAAQ,GAAA,EAAK,OAAO,SAAA,EAAW;AAElE,IAAA,SAAA,GAAoB6B,mBAAA,CAAA,IAAA,CAAK,WAAW,EAAE,CAAA;AACtC,IAAA,SAAA,GAAY,IAAA,CAAK,GAAA,CAAI,SAAA,CAAU,SAAA,EAAW,WAAW,GAAI,CAAA;AACzD,IAAA,IAAI,CAAC,SAAA;AACD,MAAA;AACJ,IAAA,MAAM,QAAA,GAAW,IAAA,CAAK,GAAA,CAAI,cAAA,CAAe,GAAG,IAAI,CAAA;AAChD,IAAA,MAAM,OAAA,uBAAc,GAAA,EAAI;AACxB,IAAA,IAAI,MAAA,GAAS,IAAA,CAAK,GAAA,CAAI,SAAA,CAAU,SAAA,EAAW;AAAA,MACvC,UAAA,EAAY,CAAC,KAAA,KAAU,EAAA,CAAG,WAAW,KAAK,CAAA;AAAA,MAC1C,eAAA,EAAiB,CAAC,KAAA,KAAU,EAAA,CAAG,UAAU,KAAK;AAAA,KACjD,CAAA;AACD,IAAA,IAAI,CAAC,MAAA;AACD,MAAA;AACJ,IAAA,MAAA,CACK,EAAA,CAAG,QAAA,EAAU,OAAO,KAAA,KAAU;AAC/B,MAAA,IAAI,IAAA,CAAK,IAAI,MAAA,EAAQ;AACjB,QAAA,MAAA,GAAS,MAAA;AACT,QAAA;AAAA,MACJ;AACA,MAAA,MAAM,OAAO,KAAA,CAAM,IAAA;AACnB,MAAA,IAAI7B,KAAAA,GAAe6B,mBAAA,CAAA,IAAA,CAAK,SAAA,EAAW,IAAI,CAAA;AACvC,MAAA,OAAA,CAAQ,IAAI,IAAI,CAAA;AAChB,MAAA,IAAI,KAAA,CAAM,KAAA,CAAM,cAAA,EAAe,IAC1B,MAAM,IAAA,CAAK,cAAA,CAAe,KAAA,EAAO,SAAA,EAAW7B,KAAAA,EAAM,IAAI,CAAA,EAAI;AAC3D,QAAA;AAAA,MACJ;AACA,MAAA,IAAI,IAAA,CAAK,IAAI,MAAA,EAAQ;AACjB,QAAA,MAAA,GAAS,MAAA;AACT,QAAA;AAAA,MACJ;AAIA,MAAA,IAAI,IAAA,KAAS,UAAW,CAAC,MAAA,IAAU,CAAC,QAAA,CAAS,GAAA,CAAI,IAAI,CAAA,EAAI;AACrD,QAAA,IAAA,CAAK,IAAI,eAAA,EAAgB;AAEzB,QAAAA,QAAe6B,mBAAA,CAAA,IAAA,CAAK,GAAA,EAAaA,mBAAA,CAAA,QAAA,CAAS,GAAA,EAAK7B,KAAI,CAAC,CAAA;AACpD,QAAA,IAAA,CAAK,YAAA,CAAaA,KAAAA,EAAM,UAAA,EAAY,EAAA,EAAI,QAAQ,CAAC,CAAA;AAAA,MACrD;AAAA,IACJ,CAAC,CAAA,CACI,EAAA,CAAG,EAAA,CAAG,KAAA,EAAO,KAAK,iBAAiB,CAAA;AACxC,IAAA,OAAO,IAAI,OAAA,CAAQ,CAACe,QAAAA,EAAS,MAAA,KAAW;AACpC,MAAA,IAAI,CAAC,MAAA;AACD,QAAA,OAAO,MAAA,EAAO;AAClB,MAAA,MAAA,CAAO,IAAA,CAAK,SAAS,MAAM;AACvB,QAAA,IAAI,IAAA,CAAK,IAAI,MAAA,EAAQ;AACjB,UAAA,MAAA,GAAS,MAAA;AACT,UAAA;AAAA,QACJ;AACA,QAAA,MAAM,YAAA,GAAe,SAAA,GAAY,SAAA,CAAU,KAAA,EAAM,GAAI,KAAA;AACrD,QAAAA,SAAQ,MAAS,CAAA;AAIjB,QAAA,QAAA,CACK,WAAA,EAAY,CACZ,MAAA,CAAO,CAAC,IAAA,KAAS;AAClB,UAAA,OAAO,IAAA,KAAS,SAAA,IAAa,CAAC,OAAA,CAAQ,IAAI,IAAI,CAAA;AAAA,QAClD,CAAC,CAAA,CACI,OAAA,CAAQ,CAAC,IAAA,KAAS;AACnB,UAAA,IAAA,CAAK,GAAA,CAAI,OAAA,CAAQ,SAAA,EAAW,IAAI,CAAA;AAAA,QACpC,CAAC,CAAA;AACD,QAAA,MAAA,GAAS,MAAA;AAET,QAAA,IAAI,YAAA;AACA,UAAA,IAAA,CAAK,YAAY,SAAA,EAAW,KAAA,EAAO,IAAI,MAAA,EAAQ,GAAA,EAAK,OAAO,SAAS,CAAA;AAAA,MAC5E,CAAC,CAAA;AAAA,IACL,CAAC,CAAA;AAAA,EACL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,MAAM,WAAW,GAAA,EAAK,KAAA,EAAO,YAAY,KAAA,EAAO,MAAA,EAAQ,IAAIW,SAAAA,EAAU;AAClE,IAAA,MAAM,YAAY,IAAA,CAAK,GAAA,CAAI,cAAA,CAAuBG,mBAAA,CAAA,OAAA,CAAQ,GAAG,CAAC,CAAA;AAC9D,IAAA,MAAM,OAAA,GAAU,SAAA,CAAU,GAAA,CAAYA,mBAAA,CAAA,QAAA,CAAS,GAAG,CAAC,CAAA;AACnD,IAAA,IAAI,EAAE,cAAc,IAAA,CAAK,GAAA,CAAI,QAAQ,aAAA,CAAA,IAAkB,CAAC,MAAA,IAAU,CAAC,OAAA,EAAS;AACxE,MAAA,IAAA,CAAK,GAAA,CAAI,KAAA,CAAM,EAAA,CAAG,OAAA,EAAS,KAAK,KAAK,CAAA;AAAA,IACzC;AAEA,IAAA,SAAA,CAAU,GAAA,CAAYA,mBAAA,CAAA,QAAA,CAAS,GAAG,CAAC,CAAA;AACnC,IAAA,IAAA,CAAK,GAAA,CAAI,eAAe,GAAG,CAAA;AAC3B,IAAA,IAAI,SAAA;AACJ,IAAA,IAAI,MAAA;AACJ,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,GAAA,CAAI,OAAA,CAAQ,KAAA;AAChC,IAAA,IAAA,CAAK,MAAA,IAAU,IAAA,IAAQ,KAAA,IAAS,MAAA,KAAW,CAAC,KAAK,GAAA,CAAI,aAAA,CAAc,GAAA,CAAIH,SAAQ,CAAA,EAAG;AAC9E,MAAA,IAAI,CAAC,MAAA,EAAQ;AACT,QAAA,MAAM,IAAA,CAAK,YAAY,GAAA,EAAK,UAAA,EAAY,IAAI,MAAA,EAAQ,GAAA,EAAK,OAAO,SAAS,CAAA;AACzE,QAAA,IAAI,KAAK,GAAA,CAAI,MAAA;AACT,UAAA;AAAA,MACR;AACA,MAAA,MAAA,GAAS,IAAA,CAAK,gBAAA,CAAiB,GAAA,EAAK,CAAC,SAASc,MAAAA,KAAU;AAEpD,QAAA,IAAIA,MAAAA,IAASA,OAAM,OAAA,KAAY,CAAA;AAC3B,UAAA;AACJ,QAAA,IAAA,CAAK,YAAY,OAAA,EAAS,KAAA,EAAO,IAAI,MAAA,EAAQ,GAAA,EAAK,OAAO,SAAS,CAAA;AAAA,MACtE,CAAC,CAAA;AAAA,IACL;AACA,IAAA,OAAO,MAAA;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAM,YAAA,CAAaxC,KAAAA,EAAM,UAAA,EAAY,OAAA,EAAS,OAAO,MAAA,EAAQ;AACzD,IAAA,MAAM,KAAA,GAAQ,KAAK,GAAA,CAAI,UAAA;AACvB,IAAA,IAAI,KAAK,GAAA,CAAI,UAAA,CAAWA,KAAI,CAAA,IAAK,IAAA,CAAK,IAAI,MAAA,EAAQ;AAC9C,MAAA,KAAA,EAAM;AACN,MAAA,OAAO,KAAA;AAAA,IACX;AACA,IAAA,MAAM,EAAA,GAAK,IAAA,CAAK,GAAA,CAAI,gBAAA,CAAiBA,KAAI,CAAA;AACzC,IAAA,IAAI,OAAA,EAAS;AACT,MAAA,EAAA,CAAG,UAAA,GAAa,CAAC,KAAA,KAAU,OAAA,CAAQ,WAAW,KAAK,CAAA;AACnD,MAAA,EAAA,CAAG,SAAA,GAAY,CAAC,KAAA,KAAU,OAAA,CAAQ,UAAU,KAAK,CAAA;AAAA,IACrD;AAEA,IAAA,IAAI;AACA,MAAA,MAAM,QAAQ,MAAM,WAAA,CAAY,GAAG,UAAU,CAAA,CAAE,GAAG,SAAS,CAAA;AAC3D,MAAA,IAAI,KAAK,GAAA,CAAI,MAAA;AACT,QAAA;AACJ,MAAA,IAAI,KAAK,GAAA,CAAI,UAAA,CAAW,EAAA,CAAG,SAAA,EAAW,KAAK,CAAA,EAAG;AAC1C,QAAA,KAAA,EAAM;AACN,QAAA,OAAO,KAAA;AAAA,MACX;AACA,MAAA,MAAM,MAAA,GAAS,IAAA,CAAK,GAAA,CAAI,OAAA,CAAQ,cAAA;AAChC,MAAA,IAAI,MAAA;AACJ,MAAA,IAAI,KAAA,CAAM,aAAY,EAAG;AACrB,QAAA,MAAM,OAAA,GAAkB6B,4BAAQ7B,KAAI,CAAA;AACpC,QAAA,MAAM,UAAA,GAAa,MAAA,GAAS,MAAMuC,WAAA,CAAWvC,KAAI,CAAA,GAAIA,KAAAA;AACrD,QAAA,IAAI,KAAK,GAAA,CAAI,MAAA;AACT,UAAA;AACJ,QAAA,MAAA,GAAS,MAAM,IAAA,CAAK,UAAA,CAAW,EAAA,CAAG,SAAA,EAAW,OAAO,UAAA,EAAY,KAAA,EAAO,MAAA,EAAQ,EAAA,EAAI,UAAU,CAAA;AAC7F,QAAA,IAAI,KAAK,GAAA,CAAI,MAAA;AACT,UAAA;AAEJ,QAAA,IAAI,OAAA,KAAY,UAAA,IAAc,UAAA,KAAe,KAAA,CAAA,EAAW;AACpD,UAAA,IAAA,CAAK,GAAA,CAAI,aAAA,CAAc,GAAA,CAAI,OAAA,EAAS,UAAU,CAAA;AAAA,QAClD;AAAA,MACJ,CAAA,MAAA,IACS,KAAA,CAAM,cAAA,EAAe,EAAG;AAC7B,QAAA,MAAM,UAAA,GAAa,MAAA,GAAS,MAAMuC,WAAA,CAAWvC,KAAI,CAAA,GAAIA,KAAAA;AACrD,QAAA,IAAI,KAAK,GAAA,CAAI,MAAA;AACT,UAAA;AACJ,QAAA,MAAM,MAAA,GAAiB6B,mBAAA,CAAA,OAAA,CAAQ,EAAA,CAAG,SAAS,CAAA;AAC3C,QAAA,IAAA,CAAK,IAAI,cAAA,CAAe,MAAM,CAAA,CAAE,GAAA,CAAI,GAAG,SAAS,CAAA;AAChD,QAAA,IAAA,CAAK,IAAI,KAAA,CAAM,EAAA,CAAG,GAAA,EAAK,EAAA,CAAG,WAAW,KAAK,CAAA;AAC1C,QAAA,MAAA,GAAS,MAAM,KAAK,UAAA,CAAW,MAAA,EAAQ,OAAO,UAAA,EAAY,KAAA,EAAO7B,KAAAA,EAAM,EAAA,EAAI,UAAU,CAAA;AACrF,QAAA,IAAI,KAAK,GAAA,CAAI,MAAA;AACT,UAAA;AAEJ,QAAA,IAAI,eAAe,KAAA,CAAA,EAAW;AAC1B,UAAA,IAAA,CAAK,IAAI,aAAA,CAAc,GAAA,CAAY6B,mBAAA,CAAA,OAAA,CAAQ7B,KAAI,GAAG,UAAU,CAAA;AAAA,QAChE;AAAA,MACJ,CAAA,MACK;AACD,QAAA,MAAA,GAAS,IAAA,CAAK,WAAA,CAAY,EAAA,CAAG,SAAA,EAAW,OAAO,UAAU,CAAA;AAAA,MAC7D;AACA,MAAA,KAAA,EAAM;AACN,MAAA,IAAI,MAAA;AACA,QAAA,IAAA,CAAK,GAAA,CAAI,cAAA,CAAeA,KAAAA,EAAM,MAAM,CAAA;AACxC,MAAA,OAAO,KAAA;AAAA,IACX,SACO,KAAA,EAAO;AACV,MAAA,IAAI,IAAA,CAAK,GAAA,CAAI,YAAA,CAAa,KAAK,CAAA,EAAG;AAC9B,QAAA,KAAA,EAAM;AACN,QAAA,OAAOA,KAAAA;AAAA,MACX;AAAA,IACJ;AAAA,EACJ;AACJ,CAAA;;;AC7mBA,IAAM,KAAA,GAAQ,GAAA;AACd,IAAM,WAAA,GAAc,IAAA;AACpB,IAAM,OAAA,GAAU,GAAA;AAChB,IAAM,QAAA,GAAW,IAAA;AACjB,IAAM,WAAA,GAAc,QAAA;AACpB,IAAM,aAAA,GAAgB,KAAA;AACtB,IAAM,eAAA,GAAkB,MAAA;AACxB,IAAM,MAAA,GAAS,kCAAA;AACf,IAAM,WAAA,GAAc,UAAA;AACpB,SAAS,OAAO,IAAA,EAAM;AAClB,EAAA,OAAO,MAAM,OAAA,CAAQ,IAAI,CAAA,GAAI,IAAA,GAAO,CAAC,IAAI,CAAA;AAC7C;AACA,IAAM,eAAA,GAAkB,CAAC,OAAA,KAAY,OAAO,YAAY,QAAA,IAAY,OAAA,KAAY,IAAA,IAAQ,EAAE,OAAA,YAAmB,MAAA,CAAA;AAC7G,SAAS,cAAc,OAAA,EAAS;AAC5B,EAAA,IAAI,OAAO,OAAA,KAAY,UAAA;AACnB,IAAA,OAAO,OAAA;AACX,EAAA,IAAI,OAAO,OAAA,KAAY,QAAA;AACnB,IAAA,OAAO,CAAC,WAAW,OAAA,KAAY,MAAA;AACnC,EAAA,IAAI,OAAA,YAAmB,MAAA;AACnB,IAAA,OAAO,CAAC,MAAA,KAAW,OAAA,CAAQ,IAAA,CAAK,MAAM,CAAA;AAC1C,EAAA,IAAI,OAAO,OAAA,KAAY,QAAA,IAAY,OAAA,KAAY,IAAA,EAAM;AACjD,IAAA,OAAO,CAAC,MAAA,KAAW;AACf,MAAA,IAAI,QAAQ,IAAA,KAAS,MAAA;AACjB,QAAA,OAAO,IAAA;AACX,MAAA,IAAI,QAAQ,SAAA,EAAW;AACnB,QAAA,MAAMyC,SAAAA,GAAmBC,mBAAA,CAAA,QAAA,CAAS,OAAA,CAAQ,IAAA,EAAM,MAAM,CAAA;AACtD,QAAA,IAAI,CAACD,SAAAA,EAAU;AACX,UAAA,OAAO,KAAA;AAAA,QACX;AACA,QAAA,OAAO,CAACA,SAAAA,CAAS,UAAA,CAAW,IAAI,CAAA,IAAK,CAASC,+BAAWD,SAAQ,CAAA;AAAA,MACrE;AACA,MAAA,OAAO,KAAA;AAAA,IACX,CAAA;AAAA,EACJ;AACA,EAAA,OAAO,MAAM,KAAA;AACjB;AACA,SAAS,cAAczC,KAAAA,EAAM;AACzB,EAAA,IAAI,OAAOA,KAAAA,KAAS,QAAA;AAChB,IAAA,MAAM,IAAI,MAAM,iBAAiB,CAAA;AACrC,EAAAA,KAAAA,GAAe0C,8BAAU1C,KAAI,CAAA;AAC7B,EAAAA,KAAAA,GAAOA,KAAAA,CAAK,OAAA,CAAQ,KAAA,EAAO,GAAG,CAAA;AAC9B,EAAA,IAAI,OAAA,GAAU,KAAA;AACd,EAAA,IAAIA,KAAAA,CAAK,WAAW,IAAI,CAAA;AACpB,IAAA,OAAA,GAAU,IAAA;AACd,EAAA,MAAM2C,gBAAAA,GAAkB,MAAA;AACxB,EAAA,OAAO3C,KAAAA,CAAK,MAAM2C,gBAAe,CAAA;AAC7B,IAAA3C,KAAAA,GAAOA,KAAAA,CAAK,OAAA,CAAQ2C,gBAAAA,EAAiB,GAAG,CAAA;AAC5C,EAAA,IAAI,OAAA;AACA,IAAA3C,QAAO,GAAA,GAAMA,KAAAA;AACjB,EAAA,OAAOA,KAAAA;AACX;AACA,SAAS,aAAA,CAAc,QAAA,EAAU,UAAA,EAAY,KAAA,EAAO;AAChD,EAAA,MAAMA,KAAAA,GAAO,cAAc,UAAU,CAAA;AACrC,EAAA,KAAA,IAAS,KAAA,GAAQ,CAAA,EAAG,KAAA,GAAQ,QAAA,CAAS,QAAQ,KAAA,EAAA,EAAS;AAClD,IAAA,MAAM,OAAA,GAAU,SAAS,KAAK,CAAA;AAC9B,IAAA,IAAI,OAAA,CAAQA,KAAAA,EAAM,KAAK,CAAA,EAAG;AACtB,MAAA,OAAO,IAAA;AAAA,IACX;AAAA,EACJ;AACA,EAAA,OAAO,KAAA;AACX;AACA,SAAS,QAAA,CAAS,UAAU,UAAA,EAAY;AACpC,EAAA,IAAI,YAAY,IAAA,EAAM;AAClB,IAAA,MAAM,IAAI,UAAU,kCAAkC,CAAA;AAAA,EAC1D;AAEA,EAAA,MAAM,aAAA,GAAgB,OAAO,QAAQ,CAAA;AACrC,EAAA,MAAM,WAAW,aAAA,CAAc,GAAA,CAAI,CAAC,OAAA,KAAY,aAAA,CAAc,OAAO,CAAC,CAAA;AACtE,EAAwB;AACpB,IAAA,OAAO,CAAC4C,aAAY,KAAA,KAAU;AAC1B,MAAA,OAAO,aAAA,CAAc,QAAA,EAAUA,WAAAA,EAAY,KAAK,CAAA;AAAA,IACpD,CAAA;AAAA,EACJ;AAEJ;AACA,IAAM,UAAA,GAAa,CAAC,MAAA,KAAW;AAC3B,EAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,MAAM,CAAA,CAAE,IAAA,EAAK;AAClC,EAAA,IAAI,CAAC,MAAM,KAAA,CAAM,CAAC,MAAM,OAAO,CAAA,KAAM,WAAW,CAAA,EAAG;AAC/C,IAAA,MAAM,IAAI,SAAA,CAAU,CAAA,mCAAA,EAAsC,KAAK,CAAA,CAAE,CAAA;AAAA,EACrE;AACA,EAAA,OAAO,KAAA,CAAM,IAAI,mBAAmB,CAAA;AACxC,CAAA;AAGA,IAAM,MAAA,GAAS,CAAC,MAAA,KAAW;AACvB,EAAA,IAAI,GAAA,GAAM,MAAA,CAAO,OAAA,CAAQ,aAAA,EAAe,KAAK,CAAA;AAC7C,EAAA,IAAI,OAAA,GAAU,KAAA;AACd,EAAA,IAAI,GAAA,CAAI,UAAA,CAAW,WAAW,CAAA,EAAG;AAC7B,IAAA,OAAA,GAAU,IAAA;AAAA,EACd;AACA,EAAA,OAAO,GAAA,CAAI,KAAA,CAAM,eAAe,CAAA,EAAG;AAC/B,IAAA,GAAA,GAAM,GAAA,CAAI,OAAA,CAAQ,eAAA,EAAiB,KAAK,CAAA;AAAA,EAC5C;AACA,EAAA,IAAI,OAAA,EAAS;AACT,IAAA,GAAA,GAAM,KAAA,GAAQ,GAAA;AAAA,EAClB;AACA,EAAA,OAAO,GAAA;AACX,CAAA;AAGA,IAAM,mBAAA,GAAsB,CAAC5C,KAAAA,KAAS,MAAA,CAAe0C,8BAAU,MAAA,CAAO1C,KAAI,CAAC,CAAC,CAAA;AAE5E,IAAM,gBAAA,GAAmB,CAAC,GAAA,GAAM,EAAA,KAAO,CAACA,KAAAA,KAAS;AAC7C,EAAA,IAAI,OAAOA,UAAS,QAAA,EAAU;AAC1B,IAAA,OAAO,mBAAA,CAA4B0C,+BAAW1C,KAAI,CAAA,GAAIA,QAAe0C,mBAAA,CAAA,IAAA,CAAK,GAAA,EAAK1C,KAAI,CAAC,CAAA;AAAA,EACxF,CAAA,MACK;AACD,IAAA,OAAOA,KAAAA;AAAA,EACX;AACJ,CAAA;AACA,IAAM,eAAA,GAAkB,CAACA,KAAAA,EAAM,GAAA,KAAQ;AACnC,EAAA,IAAY0C,mBAAA,CAAA,UAAA,CAAW1C,KAAI,CAAA,EAAG;AAC1B,IAAA,OAAOA,KAAAA;AAAA,EACX;AACA,EAAA,OAAe0C,mBAAA,CAAA,IAAA,CAAK,KAAK1C,KAAI,CAAA;AACjC,CAAA;AACA,IAAM,SAAA,GAAY,MAAA,CAAO,MAAA,iBAAO,IAAI,KAAK,CAAA;AAIzC,IAAM,WAAN,MAAe;AAAA,EACX,WAAA,CAAY,KAAK,aAAA,EAAe;AAC5B,IAAA,IAAA,CAAK,IAAA,GAAO,GAAA;AACZ,IAAA,IAAA,CAAK,cAAA,GAAiB,aAAA;AACtB,IAAA,IAAA,CAAK,KAAA,uBAAY,GAAA,EAAI;AAAA,EACzB;AAAA,EACA,IAAI,IAAA,EAAM;AACN,IAAA,MAAM,EAAE,OAAM,GAAI,IAAA;AAClB,IAAA,IAAI,CAAC,KAAA;AACD,MAAA;AACJ,IAAA,IAAI,IAAA,KAAS,WAAW,IAAA,KAAS,QAAA;AAC7B,MAAA,KAAA,CAAM,IAAI,IAAI,CAAA;AAAA,EACtB;AAAA,EACA,MAAM,OAAO,IAAA,EAAM;AACf,IAAA,MAAM,EAAE,OAAM,GAAI,IAAA;AAClB,IAAA,IAAI,CAAC,KAAA;AACD,MAAA;AACJ,IAAA,KAAA,CAAM,OAAO,IAAI,CAAA;AACjB,IAAA,IAAI,MAAM,IAAA,GAAO,CAAA;AACb,MAAA;AACJ,IAAA,MAAM,MAAM,IAAA,CAAK,IAAA;AACjB,IAAA,IAAI;AACA,MAAA,MAAMsB,WAAQ,GAAG,CAAA;AAAA,IACrB,SACO,GAAA,EAAK;AACR,MAAA,IAAI,KAAK,cAAA,EAAgB;AACrB,QAAA,IAAA,CAAK,eAAuBoB,mBAAA,CAAA,OAAA,CAAQ,GAAG,CAAA,EAAWA,mBAAA,CAAA,QAAA,CAAS,GAAG,CAAC,CAAA;AAAA,MACnE;AAAA,IACJ;AAAA,EACJ;AAAA,EACA,IAAI,IAAA,EAAM;AACN,IAAA,MAAM,EAAE,OAAM,GAAI,IAAA;AAClB,IAAA,IAAI,CAAC,KAAA;AACD,MAAA;AACJ,IAAA,OAAO,KAAA,CAAM,IAAI,IAAI,CAAA;AAAA,EACzB;AAAA,EACA,WAAA,GAAc;AACV,IAAA,MAAM,EAAE,OAAM,GAAI,IAAA;AAClB,IAAA,IAAI,CAAC,KAAA;AACD,MAAA,OAAO,EAAC;AACZ,IAAA,OAAO,CAAC,GAAG,KAAA,CAAM,MAAA,EAAQ,CAAA;AAAA,EAC7B;AAAA,EACA,OAAA,GAAU;AACN,IAAA,IAAA,CAAK,MAAM,KAAA,EAAM;AACjB,IAAA,IAAA,CAAK,IAAA,GAAO,EAAA;AACZ,IAAA,IAAA,CAAK,cAAA,GAAiB,QAAA;AACtB,IAAA,IAAA,CAAK,KAAA,GAAQ,SAAA;AACb,IAAA,MAAA,CAAO,OAAO,IAAI,CAAA;AAAA,EACtB;AACJ,CAAA;AACA,IAAM,aAAA,GAAgB,MAAA;AACtB,IAAM,aAAA,GAAgB,OAAA;AACf,IAAM,cAAN,MAAkB;AAAA,EACrB,WAAA,CAAY1C,KAAAA,EAAM,MAAA,EAAQ,GAAA,EAAK;AAC3B,IAAA,IAAA,CAAK,GAAA,GAAM,GAAA;AACX,IAAA,MAAM,SAAA,GAAYA,KAAAA;AAClB,IAAA,IAAA,CAAK,IAAA,GAAOA,KAAAA,GAAOA,KAAAA,CAAK,OAAA,CAAQ,aAAa,EAAE,CAAA;AAC/C,IAAA,IAAA,CAAK,SAAA,GAAY,SAAA;AACjB,IAAA,IAAA,CAAK,aAAA,GAAwB0C,4BAAQ,SAAS,CAAA;AAC9C,IAAA,IAAA,CAAK,WAAW,EAAC;AACjB,IAAA,IAAA,CAAK,QAAA,CAAS,OAAA,CAAQ,CAAC,KAAA,KAAU;AAC7B,MAAA,IAAI,MAAM,MAAA,GAAS,CAAA;AACf,QAAA,KAAA,CAAM,GAAA,EAAI;AAAA,IAClB,CAAC,CAAA;AACD,IAAA,IAAA,CAAK,cAAA,GAAiB,MAAA;AACtB,IAAA,IAAA,CAAK,UAAA,GAAa,SAAS,aAAA,GAAgB,aAAA;AAAA,EAC/C;AAAA,EACA,UAAU,KAAA,EAAO;AACb,IAAA,OAAeA,mBAAA,CAAA,IAAA,CAAK,KAAK,SAAA,EAAmBA,mBAAA,CAAA,QAAA,CAAS,KAAK,SAAA,EAAW,KAAA,CAAM,QAAQ,CAAC,CAAA;AAAA,EACxF;AAAA,EACA,WAAW,KAAA,EAAO;AACd,IAAA,MAAM,EAAE,OAAM,GAAI,KAAA;AAClB,IAAA,IAAI,KAAA,IAAS,MAAM,cAAA,EAAe;AAC9B,MAAA,OAAO,IAAA,CAAK,UAAU,KAAK,CAAA;AAC/B,IAAA,MAAM,YAAA,GAAe,IAAA,CAAK,SAAA,CAAU,KAAK,CAAA;AAEzC,IAAA,OAAO,IAAA,CAAK,IAAI,YAAA,CAAa,YAAA,EAAc,KAAK,CAAA,IAAK,IAAA,CAAK,GAAA,CAAI,mBAAA,CAAoB,KAAK,CAAA;AAAA,EAC3F;AAAA,EACA,UAAU,KAAA,EAAO;AACb,IAAA,OAAO,IAAA,CAAK,IAAI,YAAA,CAAa,IAAA,CAAK,UAAU,KAAK,CAAA,EAAG,MAAM,KAAK,CAAA;AAAA,EACnE;AACJ,CAAA;AASO,IAAM,SAAA,GAAN,cAAwBG,mBAAA,CAAa;AAAA;AAAA,EAExC,WAAA,CAAY,KAAA,GAAQ,EAAC,EAAG;AACpB,IAAA,KAAA,EAAM;AACN,IAAA,IAAA,CAAK,MAAA,GAAS,KAAA;AACd,IAAA,IAAA,CAAK,QAAA,uBAAe,GAAA,EAAI;AACxB,IAAA,IAAA,CAAK,aAAA,uBAAoB,GAAA,EAAI;AAC7B,IAAA,IAAA,CAAK,UAAA,uBAAiB,GAAA,EAAI;AAC1B,IAAA,IAAA,CAAK,QAAA,uBAAe,GAAA,EAAI;AACxB,IAAA,IAAA,CAAK,aAAA,uBAAoB,GAAA,EAAI;AAC7B,IAAA,IAAA,CAAK,QAAA,uBAAe,GAAA,EAAI;AACxB,IAAA,IAAA,CAAK,cAAA,uBAAqB,GAAA,EAAI;AAC9B,IAAA,IAAA,CAAK,eAAA,uBAAsB,GAAA,EAAI;AAC/B,IAAA,IAAA,CAAK,WAAA,GAAc,CAAA;AACnB,IAAA,IAAA,CAAK,aAAA,GAAgB,KAAA;AACrB,IAAA,MAAM,MAAM,KAAA,CAAM,gBAAA;AAClB,IAAA,MAAM,OAAA,GAAU,EAAE,kBAAA,EAAoB,GAAA,EAAM,cAAc,GAAA,EAAI;AAC9D,IAAA,MAAM,IAAA,GAAO;AAAA;AAAA,MAET,UAAA,EAAY,IAAA;AAAA,MACZ,aAAA,EAAe,KAAA;AAAA,MACf,sBAAA,EAAwB,KAAA;AAAA,MACxB,QAAA,EAAU,GAAA;AAAA,MACV,cAAA,EAAgB,GAAA;AAAA,MAChB,cAAA,EAAgB,IAAA;AAAA,MAChB,UAAA,EAAY,KAAA;AAAA;AAAA,MAEZ,MAAA,EAAQ,IAAA;AAAA;AAAA,MACR,GAAG,KAAA;AAAA;AAAA,MAEH,OAAA,EAAS,MAAM,OAAA,GAAU,MAAA,CAAO,MAAM,OAAO,CAAA,GAAI,MAAA,CAAO,EAAE,CAAA;AAAA,MAC1D,gBAAA,EAAkB,GAAA,KAAQ,IAAA,GAAO,OAAA,GAAU,OAAO,GAAA,KAAQ,QAAA,GAAW,EAAE,GAAG,OAAA,EAAS,GAAG,GAAA,EAAI,GAAI;AAAA,KAClG;AAEA,IAAA,IAAI,MAAA;AACA,MAAA,IAAA,CAAK,UAAA,GAAa,IAAA;AAEtB,IAAA,IAAI,KAAK,MAAA,KAAW,MAAA;AAChB,MAAA,IAAA,CAAK,MAAA,GAAS,CAAC,IAAA,CAAK,UAAA;AAIxB,IAAA,MAAM,OAAA,GAAU,QAAQ,GAAA,CAAI,mBAAA;AAC5B,IAAA,IAAI,YAAY,MAAA,EAAW;AACvB,MAAA,MAAM,QAAA,GAAW,QAAQ,WAAA,EAAY;AACrC,MAAA,IAAI,QAAA,KAAa,WAAW,QAAA,KAAa,GAAA;AACrC,QAAA,IAAA,CAAK,UAAA,GAAa,KAAA;AAAA,WAAA,IACb,QAAA,KAAa,UAAU,QAAA,KAAa,GAAA;AACzC,QAAA,IAAA,CAAK,UAAA,GAAa,IAAA;AAAA;AAElB,QAAA,IAAA,CAAK,UAAA,GAAa,CAAC,CAAC,QAAA;AAAA,IAC5B;AACA,IAAA,MAAM,WAAA,GAAc,QAAQ,GAAA,CAAI,iBAAA;AAChC,IAAA,IAAI,WAAA;AACA,MAAA,IAAA,CAAK,QAAA,GAAW,MAAA,CAAO,QAAA,CAAS,WAAA,EAAa,EAAE,CAAA;AAEnD,IAAA,IAAI,UAAA,GAAa,CAAA;AACjB,IAAA,IAAA,CAAK,aAAa,MAAM;AACpB,MAAA,UAAA,EAAA;AACA,MAAA,IAAI,UAAA,IAAc,KAAK,WAAA,EAAa;AAChC,QAAA,IAAA,CAAK,UAAA,GAAa,QAAA;AAClB,QAAA,IAAA,CAAK,aAAA,GAAgB,IAAA;AAErB,QAAA,OAAA,CAAQ,SAAS,MAAM,IAAA,CAAK,IAAA,CAAK,MAAA,CAAG,KAAK,CAAC,CAAA;AAAA,MAC9C;AAAA,IACJ,CAAA;AACA,IAAA,IAAA,CAAK,QAAA,GAAW,IAAI,IAAA,KAAS,IAAA,CAAK,KAAK,MAAA,CAAG,GAAA,EAAK,GAAG,IAAI,CAAA;AACtD,IAAA,IAAA,CAAK,YAAA,GAAe,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,IAAI,CAAA;AAC1C,IAAA,IAAA,CAAK,OAAA,GAAU,IAAA;AACf,IAAA,IAAA,CAAK,cAAA,GAAiB,IAAI,aAAA,CAAc,IAAI,CAAA;AAE5C,IAAA,MAAA,CAAO,OAAO,IAAI,CAAA;AAAA,EACtB;AAAA,EACA,gBAAgB,OAAA,EAAS;AACrB,IAAA,IAAI,eAAA,CAAgB,OAAO,CAAA,EAAG;AAE1B,MAAA,KAAA,MAAW,OAAA,IAAW,KAAK,aAAA,EAAe;AACtC,QAAA,IAAI,eAAA,CAAgB,OAAO,CAAA,IACvB,OAAA,CAAQ,IAAA,KAAS,QAAQ,IAAA,IACzB,OAAA,CAAQ,SAAA,KAAc,OAAA,CAAQ,SAAA,EAAW;AACzC,UAAA;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AACA,IAAA,IAAA,CAAK,aAAA,CAAc,IAAI,OAAO,CAAA;AAAA,EAClC;AAAA,EACA,mBAAmB,OAAA,EAAS;AACxB,IAAA,IAAA,CAAK,aAAA,CAAc,OAAO,OAAO,CAAA;AAEjC,IAAA,IAAI,OAAO,YAAY,QAAA,EAAU;AAC7B,MAAA,KAAA,MAAW,OAAA,IAAW,KAAK,aAAA,EAAe;AAItC,QAAA,IAAI,eAAA,CAAgB,OAAO,CAAA,IAAK,OAAA,CAAQ,SAAS,OAAA,EAAS;AACtD,UAAA,IAAA,CAAK,aAAA,CAAc,OAAO,OAAO,CAAA;AAAA,QACrC;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,GAAA,CAAI,MAAA,EAAQ,QAAA,EAAU,SAAA,EAAW;AAC7B,IAAA,MAAM,EAAE,GAAA,EAAI,GAAI,IAAA,CAAK,OAAA;AACrB,IAAA,IAAA,CAAK,MAAA,GAAS,KAAA;AACd,IAAA,IAAA,CAAK,aAAA,GAAgB,MAAA;AACrB,IAAA,IAAI,KAAA,GAAQ,WAAW,MAAM,CAAA;AAC7B,IAAA,IAAI,GAAA,EAAK;AACL,MAAA,KAAA,GAAQ,KAAA,CAAM,GAAA,CAAI,CAAC7C,KAAAA,KAAS;AACxB,QAAA,MAAM,OAAA,GAAU,eAAA,CAAgBA,KAAAA,EAAM,GAAG,CAAA;AAEzC,QAAA,OAAO,OAAA;AAAA,MACX,CAAC,CAAA;AAAA,IACL;AACA,IAAA,KAAA,CAAM,OAAA,CAAQ,CAACA,KAAAA,KAAS;AACpB,MAAA,IAAA,CAAK,mBAAmBA,KAAI,CAAA;AAAA,IAChC,CAAC,CAAA;AACD,IAAA,IAAA,CAAK,YAAA,GAAe,MAAA;AACpB,IAAA,IAAI,CAAC,IAAA,CAAK,WAAA;AACN,MAAA,IAAA,CAAK,WAAA,GAAc,CAAA;AACvB,IAAA,IAAA,CAAK,eAAe,KAAA,CAAM,MAAA;AAC1B,IAAA,OAAA,CAAQ,GAAA,CAAI,KAAA,CAAM,GAAA,CAAI,OAAOA,KAAAA,KAAS;AAClC,MAAA,MAAM,GAAA,GAAM,MAAM,IAAA,CAAK,cAAA,CAAe,YAAA,CAAaA,OAAM,CAAC,SAAA,EAAW,MAAA,EAAW,CAAA,EAAG,QAAQ,CAAA;AAC3F,MAAA,IAAI,GAAA;AACA,QAAA,IAAA,CAAK,UAAA,EAAW;AACpB,MAAA,OAAO,GAAA;AAAA,IACX,CAAC,CAAC,CAAA,CAAE,IAAA,CAAK,CAAC,OAAA,KAAY;AAClB,MAAA,IAAI,IAAA,CAAK,MAAA;AACL,QAAA;AACJ,MAAA,OAAA,CAAQ,OAAA,CAAQ,CAAC,IAAA,KAAS;AACtB,QAAA,IAAI,IAAA;AACA,UAAA,IAAA,CAAK,IAAY0C,mBAAA,CAAA,OAAA,CAAQ,IAAI,GAAWA,mBAAA,CAAA,QAAA,CAAS,QAAA,IAAY,IAAI,CAAC,CAAA;AAAA,MAC1E,CAAC,CAAA;AAAA,IACL,CAAC,CAAA;AACD,IAAA,OAAO,IAAA;AAAA,EACX;AAAA;AAAA;AAAA;AAAA,EAIA,QAAQ,MAAA,EAAQ;AACZ,IAAA,IAAI,IAAA,CAAK,MAAA;AACL,MAAA,OAAO,IAAA;AACX,IAAA,MAAM,KAAA,GAAQ,WAAW,MAAM,CAAA;AAC/B,IAAA,MAAM,EAAE,GAAA,EAAI,GAAI,IAAA,CAAK,OAAA;AACrB,IAAA,KAAA,CAAM,OAAA,CAAQ,CAAC1C,KAAAA,KAAS;AAEpB,MAAA,IAAI,CAAS0C,+BAAW1C,KAAI,CAAA,IAAK,CAAC,IAAA,CAAK,QAAA,CAAS,GAAA,CAAIA,KAAI,CAAA,EAAG;AACvD,QAAA,IAAI,GAAA;AACA,UAAAA,KAAAA,GAAe0C,mBAAA,CAAA,IAAA,CAAK,GAAA,EAAK1C,KAAI,CAAA;AACjC,QAAAA,KAAAA,GAAe0C,4BAAQ1C,KAAI,CAAA;AAAA,MAC/B;AACA,MAAA,IAAA,CAAK,WAAWA,KAAI,CAAA;AACpB,MAAA,IAAA,CAAK,gBAAgBA,KAAI,CAAA;AACzB,MAAA,IAAI,IAAA,CAAK,QAAA,CAAS,GAAA,CAAIA,KAAI,CAAA,EAAG;AACzB,QAAA,IAAA,CAAK,eAAA,CAAgB;AAAA,UACjB,IAAA,EAAAA,KAAAA;AAAA,UACA,SAAA,EAAW;AAAA,SACd,CAAA;AAAA,MACL;AAGA,MAAA,IAAA,CAAK,YAAA,GAAe,MAAA;AAAA,IACxB,CAAC,CAAA;AACD,IAAA,OAAO,IAAA;AAAA,EACX;AAAA;AAAA;AAAA;AAAA,EAIA,KAAA,GAAQ;AACJ,IAAA,IAAI,KAAK,aAAA,EAAe;AACpB,MAAA,OAAO,IAAA,CAAK,aAAA;AAAA,IAChB;AACA,IAAA,IAAA,CAAK,MAAA,GAAS,IAAA;AAEd,IAAA,IAAA,CAAK,kBAAA,EAAmB;AACxB,IAAA,MAAM,UAAU,EAAC;AACjB,IAAA,IAAA,CAAK,SAAS,OAAA,CAAQ,CAAC,eAAe,UAAA,CAAW,OAAA,CAAQ,CAAC,MAAA,KAAW;AACjE,MAAA,MAAM,UAAU,MAAA,EAAO;AACvB,MAAA,IAAI,OAAA,YAAmB,OAAA;AACnB,QAAA,OAAA,CAAQ,KAAK,OAAO,CAAA;AAAA,IAC5B,CAAC,CAAC,CAAA;AACF,IAAA,IAAA,CAAK,SAAS,OAAA,CAAQ,CAAC,MAAA,KAAW,MAAA,CAAO,SAAS,CAAA;AAClD,IAAA,IAAA,CAAK,YAAA,GAAe,MAAA;AACpB,IAAA,IAAA,CAAK,WAAA,GAAc,CAAA;AACnB,IAAA,IAAA,CAAK,aAAA,GAAgB,KAAA;AACrB,IAAA,IAAA,CAAK,SAAS,OAAA,CAAQ,CAAC,MAAA,KAAW,MAAA,CAAO,SAAS,CAAA;AAClD,IAAA,IAAA,CAAK,SAAS,KAAA,EAAM;AACpB,IAAA,IAAA,CAAK,SAAS,KAAA,EAAM;AACpB,IAAA,IAAA,CAAK,SAAS,KAAA,EAAM;AACpB,IAAA,IAAA,CAAK,cAAc,KAAA,EAAM;AACzB,IAAA,IAAA,CAAK,WAAW,KAAA,EAAM;AACtB,IAAA,IAAA,CAAK,aAAA,GAAgB,OAAA,CAAQ,MAAA,GACvB,OAAA,CAAQ,GAAA,CAAI,OAAO,CAAA,CAAE,IAAA,CAAK,MAAM,MAAS,CAAA,GACzC,OAAA,CAAQ,OAAA,EAAQ;AACtB,IAAA,OAAO,IAAA,CAAK,aAAA;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,UAAA,GAAa;AACT,IAAA,MAAM,YAAY,EAAC;AACnB,IAAA,IAAA,CAAK,QAAA,CAAS,OAAA,CAAQ,CAAC,KAAA,EAAO,GAAA,KAAQ;AAClC,MAAA,MAAM,GAAA,GAAM,KAAK,OAAA,CAAQ,GAAA,GAAc0C,6BAAS,IAAA,CAAK,OAAA,CAAQ,GAAA,EAAK,GAAG,CAAA,GAAI,GAAA;AACzE,MAAA,MAAM,QAAQ,GAAA,IAAO,OAAA;AACrB,MAAA,SAAA,CAAU,KAAK,CAAA,GAAI,KAAA,CAAM,WAAA,GAAc,IAAA,EAAK;AAAA,IAChD,CAAC,CAAA;AACD,IAAA,OAAO,SAAA;AAAA,EACX;AAAA,EACA,WAAA,CAAY,OAAO,IAAA,EAAM;AACrB,IAAA,IAAA,CAAK,IAAA,CAAK,KAAA,EAAO,GAAG,IAAI,CAAA;AACxB,IAAA,IAAI,UAAU,MAAA,CAAG,KAAA;AACb,MAAA,IAAA,CAAK,IAAA,CAAK,MAAA,CAAG,GAAA,EAAK,KAAA,EAAO,GAAG,IAAI,CAAA;AAAA,EACxC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAM,KAAA,CAAM,KAAA,EAAO1C,KAAAA,EAAM,KAAA,EAAO;AAC5B,IAAA,IAAI,IAAA,CAAK,MAAA;AACL,MAAA;AACJ,IAAA,MAAM,OAAO,IAAA,CAAK,OAAA;AAClB,IAAA,IAAI,SAAA;AACA,MAAAA,KAAAA,GAAe0C,8BAAU1C,KAAI,CAAA;AACjC,IAAA,IAAI,IAAA,CAAK,GAAA;AACL,MAAAA,KAAAA,GAAe0C,mBAAA,CAAA,QAAA,CAAS,IAAA,CAAK,GAAA,EAAK1C,KAAI,CAAA;AAC1C,IAAA,MAAM,IAAA,GAAO,CAACA,KAAI,CAAA;AAClB,IAAA,IAAI,KAAA,IAAS,IAAA;AACT,MAAA,IAAA,CAAK,KAAK,KAAK,CAAA;AACnB,IAAA,MAAM,MAAM,IAAA,CAAK,gBAAA;AACjB,IAAA,IAAI,EAAA;AACJ,IAAA,IAAI,QAAQ,EAAA,GAAK,IAAA,CAAK,cAAA,CAAe,GAAA,CAAIA,KAAI,CAAA,CAAA,EAAI;AAC7C,MAAA,EAAA,CAAG,UAAA,uBAAiB,IAAA,EAAK;AACzB,MAAA,OAAO,IAAA;AAAA,IACX;AACA,IAAA,IAAI,KAAK,MAAA,EAAQ;AACb,MAAA,IAAI,KAAA,KAAU,OAAG,MAAA,EAAQ;AACrB,QAAA,IAAA,CAAK,gBAAgB,GAAA,CAAIA,KAAAA,EAAM,CAAC,KAAA,EAAO,GAAG,IAAI,CAAC,CAAA;AAC/C,QAAA,UAAA,CAAW,MAAM;AACb,UAAA,IAAA,CAAK,eAAA,CAAgB,OAAA,CAAQ,CAAC,KAAA,EAAOA,KAAAA,KAAS;AAC1C,YAAA,IAAA,CAAK,IAAA,CAAK,GAAG,KAAK,CAAA;AAClB,YAAA,IAAA,CAAK,IAAA,CAAK,MAAA,CAAG,GAAA,EAAK,GAAG,KAAK,CAAA;AAC1B,YAAA,IAAA,CAAK,eAAA,CAAgB,OAAOA,KAAI,CAAA;AAAA,UACpC,CAAC,CAAA;AAAA,QACL,GAAG,OAAO,IAAA,CAAK,WAAW,QAAA,GAAW,IAAA,CAAK,SAAS,GAAG,CAAA;AACtD,QAAA,OAAO,IAAA;AAAA,MACX;AACA,MAAA,IAAI,UAAU,MAAA,CAAG,GAAA,IAAO,KAAK,eAAA,CAAgB,GAAA,CAAIA,KAAI,CAAA,EAAG;AACpD,QAAA,KAAA,GAAQ,MAAA,CAAG,MAAA;AACX,QAAA,IAAA,CAAK,eAAA,CAAgB,OAAOA,KAAI,CAAA;AAAA,MACpC;AAAA,IACJ;AACA,IAAA,IAAI,GAAA,KAAQ,UAAU,MAAA,CAAG,GAAA,IAAO,UAAU,MAAA,CAAG,MAAA,CAAA,IAAW,KAAK,aAAA,EAAe;AACxE,MAAA,MAAM,OAAA,GAAU,CAAC,GAAA,EAAKwC,MAAAA,KAAU;AAC5B,QAAA,IAAI,GAAA,EAAK;AACL,UAAA,KAAA,GAAQ,MAAA,CAAG,KAAA;AACX,UAAA,IAAA,CAAK,CAAC,CAAA,GAAI,GAAA;AACV,UAAA,IAAA,CAAK,WAAA,CAAY,OAAO,IAAI,CAAA;AAAA,QAChC,WACSA,MAAAA,EAAO;AAEZ,UAAA,IAAI,IAAA,CAAK,SAAS,CAAA,EAAG;AACjB,YAAA,IAAA,CAAK,CAAC,CAAA,GAAIA,MAAAA;AAAA,UACd,CAAA,MACK;AACD,YAAA,IAAA,CAAK,KAAKA,MAAK,CAAA;AAAA,UACnB;AACA,UAAA,IAAA,CAAK,WAAA,CAAY,OAAO,IAAI,CAAA;AAAA,QAChC;AAAA,MACJ,CAAA;AACA,MAAA,IAAA,CAAK,iBAAA,CAAkBxC,KAAAA,EAAM,GAAA,CAAI,kBAAA,EAAoB,OAAO,OAAO,CAAA;AACnE,MAAA,OAAO,IAAA;AAAA,IACX;AACA,IAAA,IAAI,KAAA,KAAU,OAAG,MAAA,EAAQ;AACrB,MAAA,MAAM,cAAc,CAAC,IAAA,CAAK,UAAU,MAAA,CAAG,MAAA,EAAQA,OAAM,EAAE,CAAA;AACvD,MAAA,IAAI,WAAA;AACA,QAAA,OAAO,IAAA;AAAA,IACf;AACA,IAAA,IAAI,IAAA,CAAK,UAAA,IACL,KAAA,KAAU,MAAA,KACT,KAAA,KAAU,MAAA,CAAG,GAAA,IAAO,KAAA,KAAU,MAAA,CAAG,OAAA,IAAW,KAAA,KAAU,MAAA,CAAG,MAAA,CAAA,EAAS;AACnE,MAAA,MAAM,WAAW,IAAA,CAAK,GAAA,GAAc0C,yBAAK,IAAA,CAAK,GAAA,EAAK1C,KAAI,CAAA,GAAIA,KAAAA;AAC3D,MAAA,IAAIwC,MAAAA;AACJ,MAAA,IAAI;AACA,QAAAA,MAAAA,GAAQ,MAAMpB,OAAAA,CAAK,QAAQ,CAAA;AAAA,MAC/B,SACO,GAAA,EAAK;AAAA,MAEZ;AAEA,MAAA,IAAI,CAACoB,UAAS,IAAA,CAAK,MAAA;AACf,QAAA;AACJ,MAAA,IAAA,CAAK,KAAKA,MAAK,CAAA;AAAA,IACnB;AACA,IAAA,IAAA,CAAK,WAAA,CAAY,OAAO,IAAI,CAAA;AAC5B,IAAA,OAAO,IAAA;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,aAAa,KAAA,EAAO;AAChB,IAAA,MAAM,IAAA,GAAO,SAAS,KAAA,CAAM,IAAA;AAC5B,IAAA,IAAI,KAAA,IACA,IAAA,KAAS,QAAA,IACT,IAAA,KAAS,SAAA,KACR,CAAC,IAAA,CAAK,OAAA,CAAQ,sBAAA,IAA2B,IAAA,KAAS,OAAA,IAAW,IAAA,KAAS,QAAA,CAAA,EAAY;AACnF,MAAA,IAAA,CAAK,IAAA,CAAK,MAAA,CAAG,KAAA,EAAO,KAAK,CAAA;AAAA,IAC7B;AACA,IAAA,OAAO,SAAS,IAAA,CAAK,MAAA;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,SAAA,CAAU,UAAA,EAAYxC,KAAAA,EAAM,OAAA,EAAS;AACjC,IAAA,IAAI,CAAC,IAAA,CAAK,UAAA,CAAW,GAAA,CAAI,UAAU,CAAA,EAAG;AAClC,MAAA,IAAA,CAAK,UAAA,CAAW,GAAA,CAAI,UAAA,kBAAY,IAAI,KAAK,CAAA;AAAA,IAC7C;AACA,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,UAAA,CAAW,GAAA,CAAI,UAAU,CAAA;AAC7C,IAAA,IAAI,CAAC,MAAA;AACD,MAAA,MAAM,IAAI,MAAM,kBAAkB,CAAA;AACtC,IAAA,MAAM,UAAA,GAAa,MAAA,CAAO,GAAA,CAAIA,KAAI,CAAA;AAClC,IAAA,IAAI,UAAA,EAAY;AACZ,MAAA,UAAA,CAAW,KAAA,EAAA;AACX,MAAA,OAAO,KAAA;AAAA,IACX;AAEA,IAAA,IAAI,aAAA;AACJ,IAAA,MAAM,QAAQ,MAAM;AAChB,MAAA,MAAM,IAAA,GAAO,MAAA,CAAO,GAAA,CAAIA,KAAI,CAAA;AAC5B,MAAA,MAAM,KAAA,GAAQ,IAAA,GAAO,IAAA,CAAK,KAAA,GAAQ,CAAA;AAClC,MAAA,MAAA,CAAO,OAAOA,KAAI,CAAA;AAClB,MAAA,YAAA,CAAa,aAAa,CAAA;AAC1B,MAAA,IAAI,IAAA;AACA,QAAA,YAAA,CAAa,KAAK,aAAa,CAAA;AACnC,MAAA,OAAO,KAAA;AAAA,IACX,CAAA;AACA,IAAA,aAAA,GAAgB,UAAA,CAAW,OAAO,OAAO,CAAA;AACzC,IAAA,MAAM,GAAA,GAAM,EAAE,aAAA,EAAe,KAAA,EAAO,OAAO,CAAA,EAAE;AAC7C,IAAA,MAAA,CAAO,GAAA,CAAIA,OAAM,GAAG,CAAA;AACpB,IAAA,OAAO,GAAA;AAAA,EACX;AAAA,EACA,eAAA,GAAkB;AACd,IAAA,OAAO,IAAA,CAAK,WAAA,EAAA;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,iBAAA,CAAkBA,KAAAA,EAAM,SAAA,EAAW,KAAA,EAAO,OAAA,EAAS;AAC/C,IAAA,MAAM,GAAA,GAAM,KAAK,OAAA,CAAQ,gBAAA;AACzB,IAAA,IAAI,OAAO,GAAA,KAAQ,QAAA;AACf,MAAA;AACJ,IAAA,MAAM,eAAe,GAAA,CAAI,YAAA;AACzB,IAAA,IAAI,cAAA;AACJ,IAAA,IAAI,QAAA,GAAWA,KAAAA;AACf,IAAA,IAAI,KAAK,OAAA,CAAQ,GAAA,IAAO,CAAS0C,mBAAA,CAAA,UAAA,CAAW1C,KAAI,CAAA,EAAG;AAC/C,MAAA,QAAA,GAAmB0C,mBAAA,CAAA,IAAA,CAAK,IAAA,CAAK,OAAA,CAAQ,GAAA,EAAK1C,KAAI,CAAA;AAAA,IAClD;AACA,IAAA,MAAM,GAAA,uBAAU,IAAA,EAAK;AACrB,IAAA,MAAM,SAAS,IAAA,CAAK,cAAA;AACpB,IAAA,SAAS,mBAAmB,QAAA,EAAU;AAClC,MAAA8C,SAAA,CAAO,QAAA,EAAU,CAAC,GAAA,EAAK,OAAA,KAAY;AAC/B,QAAA,IAAI,GAAA,IAAO,CAAC,MAAA,CAAO,GAAA,CAAI9C,KAAI,CAAA,EAAG;AAC1B,UAAA,IAAI,GAAA,IAAO,IAAI,IAAA,KAAS,QAAA;AACpB,YAAA,OAAA,CAAQ,GAAG,CAAA;AACf,UAAA;AAAA,QACJ;AACA,QAAA,MAAM+C,IAAAA,GAAM,MAAA,iBAAO,IAAI,IAAA,EAAM,CAAA;AAC7B,QAAA,IAAI,QAAA,IAAY,OAAA,CAAQ,IAAA,KAAS,QAAA,CAAS,IAAA,EAAM;AAC5C,UAAA,MAAA,CAAO,GAAA,CAAI/C,KAAI,CAAA,CAAE,UAAA,GAAa+C,IAAAA;AAAA,QAClC;AACA,QAAA,MAAM,EAAA,GAAK,MAAA,CAAO,GAAA,CAAI/C,KAAI,CAAA;AAC1B,QAAA,MAAM,EAAA,GAAK+C,OAAM,EAAA,CAAG,UAAA;AACpB,QAAA,IAAI,MAAM,SAAA,EAAW;AACjB,UAAA,MAAA,CAAO,OAAO/C,KAAI,CAAA;AAClB,UAAA,OAAA,CAAQ,QAAW,OAAO,CAAA;AAAA,QAC9B,CAAA,MACK;AACD,UAAA,cAAA,GAAiB,UAAA,CAAW,kBAAA,EAAoB,YAAA,EAAc,OAAO,CAAA;AAAA,QACzE;AAAA,MACJ,CAAC,CAAA;AAAA,IACL;AACA,IAAA,IAAI,CAAC,MAAA,CAAO,GAAA,CAAIA,KAAI,CAAA,EAAG;AACnB,MAAA,MAAA,CAAO,IAAIA,KAAAA,EAAM;AAAA,QACb,UAAA,EAAY,GAAA;AAAA,QACZ,YAAY,MAAM;AACd,UAAA,MAAA,CAAO,OAAOA,KAAI,CAAA;AAClB,UAAA,YAAA,CAAa,cAAc,CAAA;AAC3B,UAAA,OAAO,KAAA;AAAA,QACX;AAAA,OACH,CAAA;AACD,MAAA,cAAA,GAAiB,UAAA,CAAW,oBAAoB,YAAY,CAAA;AAAA,IAChE;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA,EAIA,UAAA,CAAWA,OAAM,KAAA,EAAO;AACpB,IAAA,IAAI,IAAA,CAAK,OAAA,CAAQ,MAAA,IAAU,MAAA,CAAO,KAAKA,KAAI,CAAA;AACvC,MAAA,OAAO,IAAA;AACX,IAAA,IAAI,CAAC,KAAK,YAAA,EAAc;AACpB,MAAA,MAAM,EAAE,GAAA,EAAI,GAAI,IAAA,CAAK,OAAA;AACrB,MAAA,MAAM,GAAA,GAAM,KAAK,OAAA,CAAQ,OAAA;AACzB,MAAA,MAAM,WAAW,GAAA,IAAO,IAAI,GAAA,CAAI,gBAAA,CAAiB,GAAG,CAAC,CAAA;AACrD,MAAA,MAAM,YAAA,GAAe,CAAC,GAAG,IAAA,CAAK,aAAa,CAAA;AAC3C,MAAA,MAAM,IAAA,GAAO,CAAC,GAAG,YAAA,CAAa,GAAA,CAAI,iBAAiB,GAAG,CAAC,CAAA,EAAG,GAAG,OAAO,CAAA;AACpE,MAAA,IAAA,CAAK,YAAA,GAAe,QAAA,CAAS,IAAe,CAAA;AAAA,IAChD;AACA,IAAA,OAAO,IAAA,CAAK,YAAA,CAAaA,KAAAA,EAAM,KAAK,CAAA;AAAA,EACxC;AAAA,EACA,YAAA,CAAaA,OAAMoB,KAAAA,EAAM;AACrB,IAAA,OAAO,CAAC,IAAA,CAAK,UAAA,CAAWpB,KAAAA,EAAMoB,KAAI,CAAA;AAAA,EACtC;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,iBAAiBpB,KAAAA,EAAM;AACnB,IAAA,OAAO,IAAI,WAAA,CAAYA,KAAAA,EAAM,IAAA,CAAK,OAAA,CAAQ,gBAAgB,IAAI,CAAA;AAAA,EAClE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,eAAe,SAAA,EAAW;AACtB,IAAA,MAAM,GAAA,GAAc0C,4BAAQ,SAAS,CAAA;AACrC,IAAA,IAAI,CAAC,IAAA,CAAK,QAAA,CAAS,GAAA,CAAI,GAAG,CAAA;AACtB,MAAA,IAAA,CAAK,QAAA,CAAS,IAAI,GAAA,EAAK,IAAI,SAAS,GAAA,EAAK,IAAA,CAAK,YAAY,CAAC,CAAA;AAC/D,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,GAAA,CAAI,GAAG,CAAA;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,oBAAoB,KAAA,EAAO;AACvB,IAAA,IAAI,KAAK,OAAA,CAAQ,sBAAA;AACb,MAAA,OAAO,IAAA;AACX,IAAA,OAAO,OAAA,CAAQ,MAAA,CAAO,KAAA,CAAM,IAAI,IAAI,GAAK,CAAA;AAAA,EAC7C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,OAAA,CAAQ,SAAA,EAAW,IAAA,EAAM,WAAA,EAAa;AAIlC,IAAA,MAAM1C,KAAAA,GAAe0C,mBAAA,CAAA,IAAA,CAAK,SAAA,EAAW,IAAI,CAAA;AACzC,IAAA,MAAM,QAAA,GAAmBA,4BAAQ1C,KAAI,CAAA;AACrC,IAAA,WAAA,GACI,WAAA,IAAe,IAAA,GAAO,WAAA,GAAc,IAAA,CAAK,QAAA,CAAS,GAAA,CAAIA,KAAI,CAAA,IAAK,IAAA,CAAK,QAAA,CAAS,GAAA,CAAI,QAAQ,CAAA;AAG7F,IAAA,IAAI,CAAC,IAAA,CAAK,SAAA,CAAU,QAAA,EAAUA,OAAM,GAAG,CAAA;AACnC,MAAA;AAEJ,IAAA,IAAI,CAAC,WAAA,IAAe,IAAA,CAAK,QAAA,CAAS,SAAS,CAAA,EAAG;AAC1C,MAAA,IAAA,CAAK,GAAA,CAAI,SAAA,EAAW,IAAA,EAAM,IAAI,CAAA;AAAA,IAClC;AAGA,IAAA,MAAM,EAAA,GAAK,IAAA,CAAK,cAAA,CAAeA,KAAI,CAAA;AACnC,IAAA,MAAM,uBAAA,GAA0B,GAAG,WAAA,EAAY;AAE/C,IAAA,uBAAA,CAAwB,QAAQ,CAAC,MAAA,KAAW,KAAK,OAAA,CAAQA,KAAAA,EAAM,MAAM,CAAC,CAAA;AAEtE,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,cAAA,CAAe,SAAS,CAAA;AAC5C,IAAA,MAAM,UAAA,GAAa,MAAA,CAAO,GAAA,CAAI,IAAI,CAAA;AAClC,IAAA,MAAA,CAAO,OAAO,IAAI,CAAA;AAMlB,IAAA,IAAI,IAAA,CAAK,aAAA,CAAc,GAAA,CAAI,QAAQ,CAAA,EAAG;AAClC,MAAA,IAAA,CAAK,aAAA,CAAc,OAAO,QAAQ,CAAA;AAAA,IACtC;AAEA,IAAA,IAAI,OAAA,GAAUA,KAAAA;AACd,IAAA,IAAI,KAAK,OAAA,CAAQ,GAAA;AACb,MAAA,OAAA,GAAkB0C,mBAAA,CAAA,QAAA,CAAS,IAAA,CAAK,OAAA,CAAQ,GAAA,EAAK1C,KAAI,CAAA;AACrD,IAAA,IAAI,KAAK,OAAA,CAAQ,gBAAA,IAAoB,KAAK,cAAA,CAAe,GAAA,CAAI,OAAO,CAAA,EAAG;AACnE,MAAA,MAAM,QAAQ,IAAA,CAAK,cAAA,CAAe,GAAA,CAAI,OAAO,EAAE,UAAA,EAAW;AAC1D,MAAA,IAAI,UAAU,MAAA,CAAG,GAAA;AACb,QAAA;AAAA,IACR;AAGA,IAAA,IAAA,CAAK,QAAA,CAAS,OAAOA,KAAI,CAAA;AACzB,IAAA,IAAA,CAAK,QAAA,CAAS,OAAO,QAAQ,CAAA;AAC7B,IAAA,MAAM,SAAA,GAAY,WAAA,GAAc,MAAA,CAAG,UAAA,GAAa,MAAA,CAAG,MAAA;AACnD,IAAA,IAAI,UAAA,IAAc,CAAC,IAAA,CAAK,UAAA,CAAWA,KAAI,CAAA;AACnC,MAAA,IAAA,CAAK,KAAA,CAAM,WAAWA,KAAI,CAAA;AAE9B,IAAA,IAAA,CAAK,WAAWA,KAAI,CAAA;AAAA,EACxB;AAAA;AAAA;AAAA;AAAA,EAIA,WAAWA,KAAAA,EAAM;AACb,IAAA,IAAA,CAAK,WAAWA,KAAI,CAAA;AACpB,IAAA,MAAM,GAAA,GAAc0C,4BAAQ1C,KAAI,CAAA;AAChC,IAAA,IAAA,CAAK,eAAe,GAAG,CAAA,CAAE,MAAA,CAAe0C,mBAAA,CAAA,QAAA,CAAS1C,KAAI,CAAC,CAAA;AAAA,EAC1D;AAAA;AAAA;AAAA;AAAA,EAIA,WAAWA,KAAAA,EAAM;AACb,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,QAAA,CAAS,GAAA,CAAIA,KAAI,CAAA;AACtC,IAAA,IAAI,CAAC,OAAA;AACD,MAAA;AACJ,IAAA,OAAA,CAAQ,OAAA,CAAQ,CAAC,MAAA,KAAW,MAAA,EAAQ,CAAA;AACpC,IAAA,IAAA,CAAK,QAAA,CAAS,OAAOA,KAAI,CAAA;AAAA,EAC7B;AAAA,EACA,cAAA,CAAeA,OAAM,MAAA,EAAQ;AACzB,IAAA,IAAI,CAAC,MAAA;AACD,MAAA;AACJ,IAAA,IAAI,IAAA,GAAO,IAAA,CAAK,QAAA,CAAS,GAAA,CAAIA,KAAI,CAAA;AACjC,IAAA,IAAI,CAAC,IAAA,EAAM;AACP,MAAA,IAAA,GAAO,EAAC;AACR,MAAA,IAAA,CAAK,QAAA,CAAS,GAAA,CAAIA,KAAAA,EAAM,IAAI,CAAA;AAAA,IAChC;AACA,IAAA,IAAA,CAAK,KAAK,MAAM,CAAA;AAAA,EACpB;AAAA,EACA,SAAA,CAAU,MAAM,IAAA,EAAM;AAClB,IAAA,IAAI,IAAA,CAAK,MAAA;AACL,MAAA;AACJ,IAAA,MAAM,OAAA,GAAU,EAAE,IAAA,EAAM,MAAA,CAAG,GAAA,EAAK,UAAA,EAAY,IAAA,EAAM,KAAA,EAAO,IAAA,EAAM,GAAG,IAAA,EAAM,KAAA,EAAO,CAAA,EAAE;AACjF,IAAA,IAAI,MAAA,GAAS,QAAA,CAAS,IAAA,EAAM,OAAO,CAAA;AACnC,IAAA,IAAA,CAAK,QAAA,CAAS,IAAI,MAAM,CAAA;AACxB,IAAA,MAAA,CAAO,IAAA,CAAK,WAAW,MAAM;AACzB,MAAA,MAAA,GAAS,MAAA;AAAA,IACb,CAAC,CAAA;AACD,IAAA,MAAA,CAAO,IAAA,CAAK,SAAS,MAAM;AACvB,MAAA,IAAI,MAAA,EAAQ;AACR,QAAA,IAAA,CAAK,QAAA,CAAS,OAAO,MAAM,CAAA;AAC3B,QAAA,MAAA,GAAS,MAAA;AAAA,MACb;AAAA,IACJ,CAAC,CAAA;AACD,IAAA,OAAO,MAAA;AAAA,EACX;AACJ,CAAA;AAUO,SAAS,KAAA,CAAM,KAAA,EAAO,OAAA,GAAU,EAAC,EAAG;AACvC,EAAA,MAAM,OAAA,GAAU,IAAI,SAAA,CAAU,OAAO,CAAA;AACrC,EAAA,OAAA,CAAQ,IAAI,KAAK,CAAA;AACjB,EAAA,OAAO,OAAA;AACX;;;AC1xBA,WAAA,EAAA;AACA,iBAAA,EAAA;AACA,wBAAA,EAAA;AAEA,sBAAA,EAAA;AAyBA,eAAsB,iBAAA,CACpB,OAAA,GAAgC,EAAC,EACH;AAC9B,EAAA,MAAM,IAAA,GAAO,QAAQ,IAAA,GAAOA,2BAAAA,CAAK,QAAQ,OAAA,CAAQ,IAAI,CAAA,GAAI,OAAA,CAAQ,GAAA,EAAI;AACrE,EAAA,MAAM,YAAA,GAAe,OAAA,CAAQ,KAAA,IAAS,OAAA,CAAQ,OAAA,IAAW,KAAA;AACzD,EAAA,MAAM,MAAA,GAAS,mBAAA,CAAoB,OAAA,CAAQ,KAAA,GAAQ,UAAU,MAAM,CAAA;AACnE,EAAA,MAAM,SAAS,eAAA,CAAgB;AAAA,IAC7B,GAAG,OAAA;AAAA,IACH,KAAA,EAAO;AAAA,KACN,MAAM,CAAA;AAET,EAAA,MAAA,CAAO,IAAA,CAAK,CAAA,6BAAA,EAAgC,IAAI,CAAA,CAAE,CAAA;AAElD,EAAA,MAAA,CAAO,IAAA,CAAK,CAAA,aAAA,EAAgB,MAAA,CAAO,UAAU,CAAA,CAAE,CAAA;AAC/C,EAAA,MAAA,CAAO,KAAK,CAAA,kBAAA,EAAqB,MAAA,CAAO,QAAQ,IAAA,CAAK,IAAI,CAAC,CAAA,CAAE,CAAA;AAC5D,EAAA,MAAA,CAAO,IAAA,CAAK,CAAA,cAAA,EAAiB,MAAA,CAAO,SAAS,CAAA,CAAE,CAAA;AAG/C,EAAA,MAAM,WAAA,GAAc,IAAI,WAAA,CAAY,MAAM,CAAA;AAG1C,EAAA,IAAI,YAAsB,EAAC;AAG3B,EAAA,MAAM,SAAA,GAAY,YAAY,GAAA,EAAI;AAClC,EAAA,MAAM,MAAA,GAAS,MAAM,WAAA,CAAY,YAAA,EAAa;AAE9C,EAAA,SAAA,GAAY,YAAY,YAAA,EAAa;AAErC,EAAA,MAAM,OAAA,GAAU,OAAO,QAAA,CAAS,SAAA,CAAU,OAAO,CAAC,CAAA,KAAc,MAAM,aAAa,CAAA;AAGnF,EAAA,MAAM,cAAA,GAAiB,YAAY,GAAA,EAAI;AACvC,EAAA,MAAM,MAAA,CAAO,SAAS,UAAA,EAAW;AACjC,EAAA,MAAM,gBAAgB,IAAA,CAAK,KAAA,CAAM,WAAA,CAAY,GAAA,KAAQ,cAAc,CAAA;AACnE,EAAA,MAAM,gBAAgB,IAAA,CAAK,KAAA,CAAM,WAAA,CAAY,GAAA,KAAQ,SAAS,CAAA;AAE9D,EAAA,MAAA,CAAO,IAAA,CAAK,8BAAyB,OAAA,CAAQ,MAAM,eAAe,OAAA,CAAQ,IAAA,CAAK,IAAI,CAAC,CAAA,CAAE,CAAA;AACtF,EAAA,MAAA,CAAO,IAAA,CAAK,CAAA,oBAAA,EAAgB,SAAA,CAAU,MAAM,CAAA,eAAA,CAAiB,CAAA;AAG7D,EAAA,MAAM,SAAA,GAAYA,2BAAAA,CAAK,UAAA,CAAW,MAAA,CAAO,SAAS,CAAA,GAC9C,MAAA,CAAO,SAAA,GACPA,2BAAAA,CAAK,IAAA,CAAK,IAAA,EAAM,MAAA,CAAO,SAAS,CAAA;AAEpC,EAAA,MAAM,cAAA,GAAiB,CAACA,2BAAAA,CAAK,QAAA,CAAS,IAAA,EAAM,SAAS,CAAA,CAAE,OAAA,CAAQ,KAAA,EAAO,GAAG,CAAC,CAAA;AAC1E,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,IAAI,OAAO,eAAA,EAAiB;AAC1B,IAAA,MAAM,WAAA,GAAcA,2BAAAA,CAAK,UAAA,CAAW,MAAA,CAAO,eAAe,CAAA,GACtD,MAAA,CAAO,eAAA,GACPA,2BAAAA,CAAK,IAAA,CAAK,IAAA,EAAM,MAAA,CAAO,eAAe,CAAA;AAC1C,IAAA,cAAA,CAAe,IAAA,CAAKA,4BAAK,QAAA,CAAS,IAAA,EAAM,WAAW,CAAA,CAAE,OAAA,CAAQ,KAAA,EAAO,GAAG,CAAC,CAAA;AACxE,IAAA,YAAA,GAAe,CAAA;AAAA,EACjB;AAEA,EAAA,OAAO;AAAA,IACL,YAAA;AAAA,IACA,YAAY,cAAA,CAAe,MAAA;AAAA,IAC3B,cAAA;AAAA,IACA,SAAA,EAAW;AAAA,MACT,SAAS,aAAA,GAAgB,aAAA;AAAA,MACzB,KAAA,EAAO,aAAA;AAAA,MACP,KAAA,EAAO;AAAA,KACT;AAAA,IACA,OAAA;AAAA,IACA,kBAAkB,SAAA,CAAU,MAAA;AAAA,IAC5B,WAAA,EAAa;AAAA,GACf;AACF;;;AC5FA,wBAAA,EAAA;AACA,WAAA,EAAA;AAGA,IAAM,QAAA,GAAW;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;AAqEjB,eAAe,mBAAmB,IAAA,EAAgB;AAChD,EAAA,MAAM,EAAC,MAAA,EAAM,GAAIgD,cAAA,CAAU;AAAA,IACzB,IAAA;AAAA,IACA,OAAA,EAAS;AAAA,MACP,IAAA,EAAM,EAAC,IAAA,EAAM,QAAA,EAAQ;AAAA,MACrB,OAAA,EAAS,EAAC,IAAA,EAAM,QAAA,EAAU,UAAU,IAAA,EAAI;AAAA,MACxC,OAAA,EAAS,EAAC,IAAA,EAAM,QAAA,EAAU,UAAU,IAAA,EAAI;AAAA,MACxC,MAAA,EAAQ,EAAC,IAAA,EAAM,QAAA,EAAQ;AAAA,MACvB,KAAA,EAAO,EAAC,IAAA,EAAM,SAAA,EAAS;AAAA,MACvB,KAAA,EAAO,EAAC,IAAA,EAAM,QAAA,EAAQ;AAAA,MACtB,KAAA,EAAO,EAAC,IAAA,EAAM,SAAA,EAAS;AAAA,MACvB,OAAA,EAAS,EAAC,IAAA,EAAM,SAAA,EAAW,OAAO,GAAA;AAAG,KACvC;AAAA,IACA,MAAA,EAAQ,IAAA;AAAA,IACR,gBAAA,EAAkB;AAAA,GACnB,CAAA;AAED,EAAA,IAAI,CAAC,OAAO,MAAA,EAAQ;AAClB,IAAA,OAAA,CAAQ,MAAM,6DAAwD,CAAA;AACtE,IAAA,OAAA,CAAQ,MAAM,oFAAoF,CAAA;AAClG,IAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,EAChB;AAEA,EAAA,MAAM,YAAA,GAAe,MAAA,CAAO,KAAA,IAAS,MAAA,CAAO,OAAA,IAAW,KAAA;AACvD,EAAA,MAAM,OAAA,GAAU,YAAA;AAChB,EAAA,MAAM,UAAUhD,2BAAAA,CAAK,OAAA,CAAQ,OAAO,IAAA,IAAQ,OAAA,CAAQ,KAAK,CAAA;AAEzD,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,OAAA,CAAQ,IAAI,sDAA+C,CAAA;AAC3D,IAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,gBAAA,EAAmB,OAAO,CAAA,CAAE,CAAA;AACxC,IAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,QAAA,EAAW,MAAA,CAAO,MAAM,CAAA,CAAE,CAAA;AACtC,IAAA,OAAA,CAAQ,IAAI,CAAA,YAAA,EAAe,MAAA,CAAO,KAAA,GAAQ,SAAA,GAAY,UAAU,CAAA,CAAE,CAAA;AAAA,EACpE;AAGA,EAAA,MAAM,EAAC,WAAA,EAAAiD,YAAAA,EAAW,GAAI,MAAM,OAAA,CAAA,OAAA,EAAA,CAAA,IAAA,CAAA,OAAA,iBAAA,EAAA,EAAA,oBAAA,CAAA,CAAA;AAC5B,EAAA,MAAM,EAAC,eAAA,EAAAC,gBAAAA,EAAe,GAAI,MAAM,OAAA,CAAA,OAAA,EAAA,CAAA,IAAA,CAAA,OAAA,WAAA,EAAA,EAAA,cAAA,CAAA,CAAA;AAChC,EAAA,MAAM,EAAC,mBAAA,EAAAC,oBAAAA,EAAmB,GAAI,MAAM,OAAA,CAAA,OAAA,EAAA,CAAA,IAAA,CAAA,OAAA,wBAAA,EAAA,EAAA,2BAAA,CAAA,CAAA;AACpC,EAAA,MAAM,MAAA,GAASA,qBAAoB,YAAA,GAAe,OAAA,GAAU,QAAQ,EAAC,MAAA,EAAQ,gBAAe,CAAA;AAC5F,EAAA,MAAM,SAASD,gBAAAA,CAAgB;AAAA,IAC7B,SAAS,MAAA,CAAO,OAAA;AAAA,IAChB,SAAS,MAAA,CAAO,OAAA;AAAA,IAChB,IAAA,EAAM,OAAA;AAAA,IACN,OAAO,MAAA,CAAO,KAAA;AAAA,IACd,KAAA,EAAO;AAAA,GACT,EAAG,MAAA,EAAQ,EAAC,IAAA,EAAM,SAAQ,CAAA;AAE1B,EAAA,MAAM,WAAA,GAAc,IAAID,YAAAA,CAAY,MAAM,CAAA;AAG1C,EAAA,MAAM,MAAA,GAAS,MAAM,WAAA,CAAY,YAAA,EAAa;AAC9C,EAAA,MAAM,UAAU,MAAA,CAAO,QAAA;AACvB,EAAA,MAAM,UAAU,OAAA,CAAQ,SAAA;AAExB,EAAA,IAAI,OAAA,CAAQ,WAAW,CAAA,EAAG;AACxB,IAAA,OAAA,CAAQ,MAAM,yBAAoB,CAAA;AAClC,IAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,EAChB;AAEA,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,OAAA,CAAQ,GAAA,CAAI;AAAA,aAAA,EAAa,QAAQ,MAAM,CAAA,YAAA,EAAe,QAAQ,IAAA,CAAK,IAAI,CAAC,CAAA,CAAE,CAAA;AAAA,EAC5E;AAEA,EAAA,IAAI,OAAO,KAAA,EAAO;AAEhB,IAAA,IAAI,CAAC,MAAA,CAAO,MAAA,CAAO,QAAA,CAAS,UAAU,CAAA,EAAG;AACvC,MAAA,OAAA,CAAQ,MAAM,6EAAwE,CAAA;AACtF,MAAA,OAAA,CAAQ,MAAM,0CAA0C,CAAA;AACxD,MAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,IAChB;AAEA,IAAA,KAAA,MAAW,UAAU,OAAA,EAAS;AAC5B,MAAA,MAAM,UAAA,GAAajD,4BAAK,OAAA,CAAQ,OAAA,EAAS,OAAO,MAAA,CAAO,OAAA,CAAQ,UAAA,EAAY,MAAM,CAAC,CAAA;AAClF,MAAA,MAAM,SAAA,GAAYA,2BAAAA,CAAK,OAAA,CAAQ,UAAU,CAAA;AAGzC,MAAA,MAAMoD,QAAA,CAAM,SAAA,EAAW,EAAC,SAAA,EAAW,MAAK,CAAA;AAGxC,MAAA,MAAMC,YAAA,CAAU,UAAA,EAAY,IAAA,CAAK,SAAA,CAAU,OAAA,CAAQ,QAAA,CAAS,MAAM,CAAA,EAAG,IAAA,EAAM,CAAC,CAAA,EAAG,OAAO,CAAA;AAEtF,MAAA,IAAI,OAAA,EAAS;AACX,QAAA,OAAA,CAAQ,GAAA,CAAI,mBAAY,MAAM,CAAA,EAAA,EAAKrD,4BAAK,QAAA,CAAS,OAAA,EAAS,UAAU,CAAC,CAAA,CAAE,CAAA;AAAA,MACzE;AAAA,IACF;AAEA,IAAA,OAAA,CAAQ,GAAA,CAAI;AAAA,gBAAA,EAAgB,OAAA,CAAQ,MAAM,CAAA,eAAA,CAAiB,CAAA;AAAA,EAC7D,CAAA,MAAO;AAEL,IAAA,MAAM,UAAA,GAAaA,2BAAAA,CAAK,OAAA,CAAQ,OAAA,EAAS,OAAO,MAAM,CAAA;AACtD,IAAA,MAAM,SAAA,GAAYA,2BAAAA,CAAK,OAAA,CAAQ,UAAU,CAAA;AAGzC,IAAA,MAAMoD,QAAA,CAAM,SAAA,EAAW,EAAC,SAAA,EAAW,MAAK,CAAA;AAGxC,IAAA,MAAMC,YAAA,CAAU,YAAY,IAAA,CAAK,SAAA,CAAU,SAAS,IAAA,EAAM,CAAC,GAAG,OAAO,CAAA;AAErE,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,OAAA,CAAQ,IAAI,CAAA,iBAAA,EAAarD,2BAAAA,CAAK,SAAS,OAAA,EAAS,UAAU,CAAC,CAAA,CAAE,CAAA;AAAA,IAC/D;AAEA,IAAA,OAAA,CAAQ,GAAA,CAAI;AAAA,6BAAA,EAA6B,OAAA,CAAQ,MAAM,CAAA,UAAA,CAAY,CAAA;AAAA,EACrE;AACF;AAEA,eAAe,IAAA,GAAO;AACpB,EAAA,IAAI,YAAA,GAAe,KAAA;AACnB,EAAA,IAAI;AACF,IAAA,MAAM,IAAA,GAAO,OAAA,CAAQ,IAAA,CAAK,KAAA,CAAM,CAAC,CAAA;AAGjC,IAAA,IAAI,IAAA,CAAK,QAAA,CAAS,QAAQ,CAAA,IAAK,IAAA,CAAK,SAAS,IAAI,CAAA,IAAK,IAAA,CAAK,MAAA,KAAW,CAAA,EAAG;AACvE,MAAA,OAAA,CAAQ,IAAI,QAAQ,CAAA;AACpB,MAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,IAChB;AAEA,IAAA,IAAI,IAAA,CAAK,QAAA,CAAS,WAAW,CAAA,EAAG;AAE9B,MAAA,IAAI;AACF,QAAA,MAAM,EAAC,OAAA,EAAO,GAAI,MAAM,OAAA,CAAA,OAAA,EAAA,CAAA,IAAA,CAAA,MAAA,OAAA,CAAA,eAAA,EAAA,EAAA,CAAA,CAAA,CAAA;AACxB,QAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,CAAA,EAAI,OAAO,CAAA,CAAE,CAAA;AAAA,MAC3B,CAAA,CAAA,MAAQ;AACN,QAAA,OAAA,CAAQ,IAAI,qBAAqB,CAAA;AAAA,MACnC;AACA,MAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,IAChB;AAGA,IAAA,MAAM,OAAA,GAAU,KAAK,CAAC,CAAA;AACtB,IAAA,IAAI,UAAA,GAAa,CAAA;AAEjB,IAAA,IAAI,YAAY,cAAA,EAAgB;AAC9B,MAAA,MAAM,kBAAA,CAAmB,IAAA,CAAK,KAAA,CAAM,CAAC,CAAC,CAAA;AACtC,MAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,IAChB;AAGA,IAAA,IAAI,YAAY,UAAA,EAAY;AAC1B,MAAA,UAAA,GAAa,CAAA;AAAA,IACf;AAGA,IAAA,MAAM,EAAC,MAAA,EAAM,GAAIgD,cAAA,CAAU;AAAA,MACzB,IAAA,EAAM,IAAA,CAAK,KAAA,CAAM,UAAU,CAAA;AAAA,MAC3B,OAAA,EAAS;AAAA,QACP,IAAA,EAAM,EAAC,IAAA,EAAM,QAAA,EAAQ;AAAA,QACrB,OAAA,EAAS,EAAC,IAAA,EAAM,QAAA,EAAU,UAAU,IAAA,EAAI;AAAA,QACxC,OAAA,EAAS,EAAC,IAAA,EAAM,QAAA,EAAU,UAAU,IAAA,EAAI;AAAA,QACxC,aAAA,EAAe,EAAC,IAAA,EAAM,QAAA,EAAQ;AAAA,QAC9B,YAAA,EAAc,EAAC,IAAA,EAAM,QAAA,EAAQ;AAAA,QAC7B,mBAAA,EAAqB,EAAC,IAAA,EAAM,QAAA,EAAQ;AAAA,QACpC,WAAA,EAAa,EAAC,IAAA,EAAM,QAAA,EAAQ;AAAA,QAC5B,MAAA,EAAQ,EAAC,IAAA,EAAM,QAAA,EAAQ;AAAA,QACvB,KAAA,EAAO,EAAC,IAAA,EAAM,QAAA,EAAQ;AAAA,QACtB,KAAA,EAAO,EAAC,IAAA,EAAM,SAAA,EAAW,OAAO,GAAA,EAAG;AAAA,QACnC,KAAA,EAAO,EAAC,IAAA,EAAM,SAAA,EAAS;AAAA,QACvB,OAAA,EAAS,EAAC,IAAA,EAAM,SAAA,EAAW,OAAO,GAAA;AAAG,OACvC;AAAA,MAEA,MAAA,EAAQ,IAAA;AAAA,MACR,gBAAA,EAAkB;AAAA,KACnB,CAAA;AAED,IAAA,YAAA,GAAe,MAAA,CAAO,KAAA,IAAS,MAAA,CAAO,OAAA,IAAW,KAAA;AACjD,IAAA,MAAM,MAAA,GAAS,oBAAoB,YAAA,GAAe,OAAA,GAAU,QAAQ,EAAC,MAAA,EAAQ,gBAAe,CAAA;AAG5F,IAAA,MAAM,UAAU,eAAA,CAAgB;AAAA,MAC9B,GAAG,MAAA;AAAA,MACH,MAAM,MAAA,CAAO,IAAA;AAAA,MACb,SAAS,MAAA,CAAO,OAAA;AAAA,MAChB,KAAA,EAAO,YAAA;AAAA,MACP,UAAA,EAAY,OAAO,aAAa,CAAA;AAAA,MAChC,SAAA,EAAW,OAAO,YAAY,CAAA;AAAA,MAC9B,eAAA,EAAiB,OAAO,mBAAmB,CAAA;AAAA,MAC3C,QAAA,EAAU,OAAO,WAAW,CAAA;AAAA,MAC5B,QAAQ,MAAA,CAAO,MAAA;AAAA,MACf,OAAO,MAAA,CAAO;AAAA,OAEb,MAAA,EAAQ,EAAC,IAAA,EAAM,MAAA,CAAO,MAAK,CAAA;AAG9B,IAAA,IAAI,UAAA;AAEJ,IAAA,MAAM,gBAAgB,YAA2B;AAC/C,MAAA,MAAM,SAAA,GAAY,KAAK,GAAA,EAAI;AAC3B,MAAA,OAAA,CAAQ,IAAI,sCAA+B,CAAA;AAE3C,MAAA,IAAI;AACF,QAAA,MAAM,MAAA,GAAS,MAAM,iBAAA,CAAkB,OAAO,CAAA;AAC9C,QAAA,UAAA,GAAa,MAAA;AAEb,QAAA,MAAM,QAAA,GAAW,IAAA,CAAK,GAAA,EAAI,GAAI,SAAA;AAC9B,QAAA,OAAA,CAAQ,GAAA,CAAI;AAAA,8BAAA,EAA8B,QAAQ,CAAA,GAAA,CAAK,CAAA;AACvD,QAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,2BAAA,EAAuB,MAAA,CAAO,YAAY,CAAA,EAAA,CAAI,CAAA;AAC1D,QAAA,KAAA,MAAW,IAAA,IAAQ,OAAO,cAAA,EAAgB;AACxC,UAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,KAAA,EAAQ,IAAI,CAAA,CAAE,CAAA;AAAA,QAC5B;AACA,QAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,mBAAA,EAAe,MAAA,CAAO,OAAA,CAAQ,MAAM,CAAA,GAAA,EAAM,MAAA,CAAO,OAAA,CAAQ,IAAA,CAAK,IAAI,CAAC,CAAA,CAAE,CAAA;AACjF,QAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,oBAAA,EAAgB,MAAA,CAAO,gBAAgB,CAAA,eAAA,CAAiB,CAAA;AAAA,MACtE,SAAS,KAAA,EAAO;AACd,QAAA,OAAA,CAAQ,MAAM,6BAAwB,CAAA;AACtC,QAAA,IAAI,iBAAiB,KAAA,EAAO;AAC1B,UAAA,OAAA,CAAQ,KAAA,CAAM,MAAM,OAAO,CAAA;AAC3B,UAAA,IAAI,QAAQ,KAAA,EAAO;AACjB,YAAA,OAAA,CAAQ,MAAM,gBAAgB,CAAA;AAC9B,YAAA,OAAA,CAAQ,KAAA,CAAM,MAAM,KAAK,CAAA;AAAA,UAC3B;AAAA,QACF,CAAA,MAAO;AACL,UAAA,OAAA,CAAQ,KAAA,CAAM,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,QAC7B;AACA,QAAA,IAAI,CAAC,OAAO,KAAA,EAAO;AACjB,UAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,QAChB;AAAA,MACF;AAAA,IACF,CAAA;AAGA,IAAA,MAAM,aAAA,EAAc;AAGpB,IAAA,IAAI,OAAO,KAAA,EAAO;AAChB,MAAA,OAAA,CAAQ,IAAI,iEAAqD,CAAA;AACjE,MAAA,OAAA,CAAQ,IAAI,wBAAwB,CAAA;AAEpC,MAAA,IAAI,CAAC,UAAA,EAAY;AACf,QAAA,OAAA,CAAQ,MAAM,2DAAsD,CAAA;AACpE,QAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,MAChB;AAEA,MAAA,MAAM,OAAA,GAAUhD,2BAAAA,CAAK,OAAA,CAAQ,OAAA,CAAQ,IAAI,CAAA;AACzC,MAAA,MAAM,eAAA,GAAkB,OAAA,CAAQ,OAAA,IAAW,CAAC,uBAAuB,CAAA;AAEnE,MAAA,IAAI,QAAQ,KAAA,EAAO;AACjB,QAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,wBAAA,EAA2B,OAAO,CAAA,CAAE,CAAA;AAChD,QAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,kBAAA,EAAqB,KAAA,CAAM,OAAA,CAAQ,eAAe,CAAA,GAAI,eAAA,CAAgB,IAAA,CAAK,IAAI,CAAA,GAAI,eAAe,CAAA,CAAE,CAAA;AAAA,MAClH;AAGA,MAAA,MAAM,oBAAA,GAAuB,UAAA,GAAa,UAAA,CAAW,WAAA,GAAc,EAAC;AAEpE,MAAA,IAAI,QAAQ,KAAA,EAAO;AACjB,QAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,cAAA,EAAiB,oBAAA,CAAqB,MAAM,CAAA,wBAAA,CAA0B,CAAA;AAAA,MACpF;AAGA,MAAA,MAAM,UAAU,KAAA,CAAM,oBAAA,CAAqB,MAAA,GAAS,CAAA,GAAI,uBAAuB,eAAA,EAAiB;AAAA,QAC9F,GAAA,EAAK,OAAA;AAAA,QACL,OAAA,EAAS,OAAA,CAAQ,OAAA,IAAW,CAAC,sBAAsB,YAAY,CAAA;AAAA,QAC/D,UAAA,EAAY,IAAA;AAAA,QACZ,aAAA,EAAe,IAAA;AAAA;AAAA,QACf,gBAAA,EAAkB;AAAA,UAChB,kBAAA,EAAoB,GAAA;AAAA,UACpB,YAAA,EAAc;AAAA;AAChB,OACD,CAAA;AAGD,MAAA,IAAI,aAAA,GAAuC,IAAA;AAC3C,MAAA,MAAM,aAAA,GAAgB,GAAA;AACtB,MAAA,IAAI,cAAA,GAAiB,KAAA;AAErB,MAAA,MAAM,oBAAA,GAAuB,CAAC,SAAA,EAAmB,QAAA,KAAqB;AAEpE,QAAA,IAAI,CAAC,cAAA,IAAkB,SAAA,KAAc,OAAA,EAAS;AAC5C,UAAA;AAAA,QACF;AAEA,QAAA,IAAI,aAAA,EAAe;AACjB,UAAA,YAAA,CAAa,aAAa,CAAA;AAAA,QAC5B;AAEA,QAAA,aAAA,GAAgB,WAAW,YAAY;AACrC,UAAA,OAAA,CAAQ,GAAA,CAAI;AAAA,eAAA,EAAa,SAAS,CAAA,EAAA,EAAK,QAAQ,CAAA,CAAE,CAAA;AACjD,UAAA,MAAM,aAAA,EAAc;AAAA,QACtB,GAAG,aAAa,CAAA;AAAA,MAClB,CAAA;AAEA,MAAA,OAAA,CACG,EAAA,CAAG,SAAS,MAAM;AACjB,QAAA,cAAA,GAAiB,IAAA;AACjB,QAAA,MAAM,OAAA,GAAU,QAAQ,UAAA,EAAW;AACnC,QAAA,MAAM,YAAA,GAAe,MAAA,CAAO,MAAA,CAAO,OAAO,CAAA,CAAE,MAAA,CAAO,CAAC,GAAA,EAAK,KAAA,KAAU,GAAA,GAAM,KAAA,CAAM,MAAA,EAAQ,CAAC,CAAA;AAExF,QAAA,IAAI,QAAQ,KAAA,EAAO;AACjB,UAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,gCAAA,EAAmC,YAAY,CAAA,SAAA,CAAW,CAAA;AACtE,UAAA,KAAA,MAAW,CAAC,GAAA,EAAK,KAAK,KAAK,MAAA,CAAO,OAAA,CAAQ,OAAO,CAAA,EAAG;AAClD,YAAA,IAAI,KAAA,CAAM,SAAS,CAAA,EAAG;AACpB,cAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,EAAA,EAAK,GAAG,CAAA,CAAA,CAAG,CAAA;AACvB,cAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AACxB,gBAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,MAAA,EAAS,IAAI,CAAA,CAAE,CAAA;AAAA,cAC7B;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAEA,QAAA,IAAI,iBAAiB,CAAA,EAAG;AACtB,UAAA,OAAA,CAAQ,IAAA,CAAK;AAAA,kDAAA,CAA4C,CAAA;AACzD,UAAA,OAAA,CAAQ,IAAA,CAAK,CAAA,SAAA,EAAY,OAAO,CAAA,CAAE,CAAA;AAClC,UAAA,OAAA,CAAQ,IAAA,CAAK,CAAA,aAAA,EAAgB,KAAA,CAAM,OAAA,CAAQ,eAAe,CAAA,GAAI,eAAA,CAAgB,IAAA,CAAK,IAAI,CAAA,GAAI,eAAe,CAAA,CAAE,CAAA;AAC5G,UAAA,OAAA,CAAQ,KAAK,CAAA,6DAAA,CAA+D,CAAA;AAAA,QAC9E;AAAA,MACF,CAAC,CAAA,CACA,EAAA,CAAG,KAAA,EAAO,CAACA,KAAAA,KAAS,oBAAA,CAAqB,OAAA,EAASA,KAAI,CAAC,CAAA,CACvD,EAAA,CAAG,QAAA,EAAU,CAACA,KAAAA,KAAS,oBAAA,CAAqB,SAAA,EAAWA,KAAI,CAAC,CAAA,CAC5D,EAAA,CAAG,QAAA,EAAU,CAACA,KAAAA,KAAS,oBAAA,CAAqB,SAAA,EAAWA,KAAI,CAAC,CAAA,CAC5D,EAAA,CAAG,OAAA,EAAS,CAAC,KAAA,KAAU;AACtB,QAAA,OAAA,CAAQ,KAAA,CAAM,2BAAsB,KAAK,CAAA;AAAA,MAC3C,CAAC,CAAA;AAGH,MAAA,OAAA,CAAQ,EAAA,CAAG,UAAU,MAAM;AACzB,QAAA,OAAA,CAAQ,IAAI,sCAA+B,CAAA;AAC3C,QAAA,OAAA,CAAQ,KAAA,EAAM;AACd,QAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,MAChB,CAAC,CAAA;AAGD,MAAA;AAAA,IACF;AAEA,IAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,EAChB,SAAS,KAAA,EAAO;AACd,IAAA,OAAA,CAAQ,KAAA,CAAM,qCAAgC,KAAK,CAAA;AACnD,IAAA,IAAI,iBAAiB,KAAA,EAAO;AAC1B,MAAA,OAAA,CAAQ,KAAA,CAAM,MAAM,OAAO,CAAA;AAC3B,MAAA,OAAA,CAAQ,KAAA,CAAM,MAAM,KAAK,CAAA;AACzB,MAAA,IAAI,YAAA,EAAc;AAChB,QAAA,OAAA,CAAQ,MAAM,gBAAgB,CAAA;AAC9B,QAAA,OAAA,CAAQ,KAAA,CAAM,MAAM,KAAK,CAAA;AAAA,MAC3B;AAAA,IACF,CAAA,MAAO;AACL,MAAA,OAAA,CAAQ,KAAA,CAAM,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,IAC7B;AACA,IAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,EAChB;AACF;AAEA,IAAA,EAAK","file":"cli.cjs","sourcesContent":["import path from \"node:path\";\n\nexport function defaultGetLocaleFromPath(filePath: string): string | null {\n\n  // example path: src/locales/Asdf.vue.en.json -> en\n  // example path: src/locales/en.json -> en\n  const fileName = path.basename(filePath); // Get the file name from the path\n  const parts = fileName.split('.')\n  // last part is json\n  if (parts.length < 2 || parts[parts.length - 1] !== 'json') {\n    return null; // Not a JSON file\n  }\n\n  const regex = /^(?=.*(?:^|\\.)(?<locale>[a-z]{2}(?:-[A-Z]{2})?(?=\\.|$))).*\\.json$/\n  const regexValid = fileName.match(regex);\n  if (!regexValid) {\n    return null; // Filename does not contain a valid locale code\n  }\n  // console.log('defaultGetLocaleFromPath', regexValid?.groups?.locale);\n  if (fileName.startsWith('.')) {\n    return null;\n  }\n  const locale = regexValid.groups?.locale;\n  return locale && locale?.length > 0 ? locale : null\n}\n","\n\nexport const shallowMerge = <T extends Record<string, any>>(a: T, b: T) => Object.assign({}, a, b);\n\nexport const toArray = <T, >(v?: T | T[]) => (Array.isArray(v) ? v : v ? [v] : []);\n\n","function deepMerge<T extends Record<string, any>>(target: T, source: T): T {\n  if (target === source) return target;\n  if (Array.isArray(target) && Array.isArray(source)) return source as T;\n  if (\n    target &&\n    source &&\n    typeof target === \"object\" &&\n    typeof source === \"object\" &&\n    !Array.isArray(target) &&\n    !Array.isArray(source)\n  ) {\n    const out: Record<string, any> = {...target};\n    for (const key of Object.keys(source)) {\n      out[key] = key in target ? deepMerge(target[key], (source as any)[key]) : (source as any)[key];\n    }\n    return out as T;\n  }\n  return source;\n}\n\nexport {deepMerge, deepMerge as default};\n","import type {CustomLogger, GenerationOptions, VirtualKeysDtsOptions} from \"../types\";\n\n\nimport path from \"node:path\";\nimport {normalizePath, type ResolvedConfig} from \"vite\";\nimport {defaultGetLocaleFromPath} from \"../utils/defaultGetLocaleFromPath.ts\";\nimport {shallowMerge} from \"../generation/runtime/merge.ts\";\nimport {deepMerge} from \"../generation/runtime/deepMerge.ts\";\n\nexport const Consts = {\n  //devUrlPath\n  devUrlPath: \"/_virtual_locales.json\",\n  debugUrlPath: \"/__locales_debug__\",\n} as const;\n\n/**\n * Normalize and validate plugin configuration\n */\nexport function normalizeConfig(userOptions: VirtualKeysDtsOptions = {}, logger: CustomLogger, cfg?: {\n  root?: string\n} | ResolvedConfig): GenerationOptions {\n  const baseLocale = userOptions.baseLocale ?? 'de';\n  const root: string = cfg?.root ?? userOptions.root ?? process.cwd();\n\n  function resolvePattern(pattern: string): string {\n    if (!pattern) throw new Error('Invalid pattern: empty string');\n    const isNegated = pattern.startsWith(\"!\");\n    const rawPattern = isNegated ? pattern.slice(1) : pattern;\n    const trimmedPattern = rawPattern.startsWith(\"./\") ? rawPattern.slice(2) : rawPattern;\n    const absolutePattern = path.isAbsolute(rawPattern)\n      ? rawPattern\n      : path.join(root, trimmedPattern);\n    const normalized = normalizePath(absolutePattern);\n    return isNegated ? `!${normalized}` : normalized;\n  }\n\n  const sourceId = userOptions.sourceId ?? 'virtual:vue-i18n-types';\n\n\n  const config: GenerationOptions = {\n    ...userOptions,\n    sourceId,\n    root,\n    fileBatchSize: userOptions.fileBatchSize ?? 100,\n    verbose: userOptions.debug ?? false,\n    typesPath: userOptions.typesPath ?? './src/vite-env-override.d.ts',\n    virtualFilePath: userOptions.virtualFilePath,\n    getLocaleFromPath: userOptions.getLocaleFromPath ?? defaultGetLocaleFromPath,\n    baseLocale,\n    include: (Array.isArray(userOptions.include)\n      ? userOptions.include\n      : userOptions.include\n        ? [userOptions.include]\n        : [\n          \"./**/locales/*.json\",\n          \"./**/*.vue.*.json\",\n          `./**/*${baseLocale}.json`\n        ]).map(resolvePattern),\n    exclude: (Array.isArray(userOptions.exclude)\n      ? userOptions.exclude\n      : userOptions.exclude\n        ? [userOptions.exclude]\n        : [\n          '**/tsconfig.*',\n          '**/node_modules/**',\n          '**/.git/**',\n          '**/dist/**',\n          '**/.output/**',\n          '**/.vercel/**',\n          '**/.next/**',\n          '**/build/**',\n        ]).map((pattern) => {\n      const resolved = resolvePattern(pattern);\n\n      return resolved.startsWith(\"!\") ? resolved : `!${resolved}`;\n    }).map((pattern) => {\n      const resolved = resolvePattern(pattern);\n\n      return resolved.startsWith(\"!\") ? resolved : `!${resolved}`;\n    }),\n    merge: userOptions.merge ?? 'deep',\n    mergeFunction: (userOptions.merge ?? 'deep') === 'deep' ? deepMerge : shallowMerge,\n    banner: userOptions.banner,\n    debug: userOptions.debug ?? false,\n    logger,\n    transformJson: userOptions.transformJson,\n  } as GenerationOptions;\n\n  return config;\n}\n\n\n","/**\n * Default key normalization: unique + ascending lexicographic sort.\n */\nexport function transformKeys(keys: string[]): string[] {\n  const set = new Set<string>()\n  for (const k of keys) {\n    if (typeof k === 'string' && k) set.add(k)\n  }\n  return Array.from(set).sort((a, b) => (a < b ? -1 : a > b ? 1 : 0))\n}\n","import type {JSONArray, JSONObject, JSONValue} from '../types'\nimport {transformKeys} from \"./keys\";\n\n\ntype MessageNode = {\n  type: number\n  loc?: { source?: string }\n  static?: string\n  body?: any\n  cases?: any[]\n  items?: any[]\n};\n\nfunction extractMessage(node: MessageNode): string {\n  // if the compiler preserved the original source string\n  if (node?.loc?.source) {\n    return node.loc.source;\n  }\n\n  // fallback to static text\n  if (node.static) {\n    return node.static;\n  }\n\n  // if it’s a plural/choice\n  if (node.cases) {\n    return node.cases.map(c => extractMessage(c)).join(\" | \");\n  }\n\n  // if it’s a compound message\n  if (node.items) {\n    return node.items.map(extractMessage).join(\"\");\n  }\n\n  return \"\";\n}\n\n/**\n * Structure-normalizing extractor. Removes AST-ish metadata, unwraps translation bodies,\n * and preserves shape while pruning noise. It's defensive and avoids repeated lookups.\n */\nexport function extractJson<T extends Record<string, any>|MessageNode>(obj: T): any {\n  if (Array.isArray(obj)) {\n    return obj.map(extractJson);\n  }\n\n  if (obj && typeof obj === \"object\" && \"type\" in obj) {\n    return extractMessage(obj as MessageNode);\n  }\n\n  if (obj && typeof obj === \"object\") {\n    const result: any = {};\n    for (const [k, v] of Object.entries(obj)) {\n      result[k] = extractJson(v);\n    }\n    return result;\n  }\n\n  return obj;\n}\n\n/**\n * Collect dot-notated leaf paths of an object.\n * - Primitives produce their full path.\n * - Arrays count as leaves (the array path is included) AND their items are traversed,\n *   producing index paths (e.g., \"c\", \"c.0\", \"c.1\").\n * Example:\n *   { a: { b: 1 }, c: ['test', 'asdf'] } => [\"a.b\", \"c\", \"c.0\", \"c.1\"]\n */\nexport function getJsonLeafPaths(obj: Record<string, unknown>): string[] {\n  const paths: string[] = [];\n\n  const isPlainObject = (val: unknown): val is Record<string, unknown> =>\n    Object.prototype.toString.call(val) === \"[object Object]\";\n\n  function walk(value: unknown, currentPath: string): void {\n    // Treat null/undefined as leaf values\n    if (value == null) {\n      if (currentPath) paths.push(currentPath);\n      return;\n    }\n\n    // Arrays: include the array path itself and traverse items\n    if (Array.isArray(value)) {\n      if (currentPath) paths.push(currentPath);\n      for (let i = 0; i < value.length; i++) {\n        const next = currentPath ? `${currentPath}.${i}` : String(i);\n        walk(value[i], next);\n      }\n      return;\n    }\n\n    // Plain objects: traverse properties\n    if (isPlainObject(value)) {\n      const entries = Object.entries(value);\n      if (entries.length === 0) {\n        // Empty object – no leaves to add (even if nested)\n        return;\n      }\n      for (const [k, v] of entries) {\n        const next = currentPath ? `${currentPath}.${k}` : k;\n        walk(v, next);\n      }\n      return;\n    }\n\n    // Primitive or non-plain object (Date, Map, etc.) – treat as leaf\n    if (currentPath) {\n      paths.push(currentPath);\n    }\n  }\n\n  walk(obj, \"\");\n  return paths;\n}\n\n/**\n * Canonicalize JSON by sorting object keys recursively.\n * Arrays are preserved in-place to keep their intended order.\n */\nexport function canonicalize<T extends JSONValue>(value: T | undefined): T {\n  if (value === null || typeof value !== 'object') return value as T\n  if (Array.isArray(value)) {\n    const arr = value as JSONArray\n    const out: JSONArray = new Array(arr.length)\n    for (let i = 0; i < arr.length; i++) out[i] = canonicalize(arr[i])\n    return out as T\n  }\n  const obj = value as JSONObject\n  const keys = Object.keys(obj).sort((a, b) => (a < b ? -1 : a > b ? 1 : 0))\n  const out: JSONObject = {}\n  for (const k of keys) out[k] = canonicalize(obj[k])\n  return out as T\n}\n\n/**\n * Detect conflicting keys across different locales.\n * A conflict occurs when the same key path has different types (e.g., string vs object) across locales.\n * @param messages - Object with locale codes as keys and message objects as values\n * @returns Array of conflict descriptions\n */\nexport function detectKeyConflicts(messages: Record<string, JSONValue>): string[] {\n  const conflicts: string[] = []\n  const keyTypeMap = new Map<string, Map<string, string>>() // key -> locale -> type\n\n  // Helper to get the type of a value\n  const getValueType = (val: unknown): string => {\n    if (val === null) return 'null'\n    if (val === undefined) return 'undefined'\n    if (Array.isArray(val)) return 'array'\n    if (typeof val === 'object') return 'object'\n    return typeof val\n  }\n\n  // Helper to traverse and collect all key paths with their types\n  const collectKeyTypes = (obj: unknown, locale: string, path = ''): void => {\n    if (obj === null || obj === undefined) {\n      if (path) {\n        if (!keyTypeMap.has(path)) keyTypeMap.set(path, new Map())\n        keyTypeMap.get(path)!.set(locale, getValueType(obj))\n      }\n      return\n    }\n\n    if (Array.isArray(obj)) {\n      if (path) {\n        if (!keyTypeMap.has(path)) keyTypeMap.set(path, new Map())\n        keyTypeMap.get(path)!.set(locale, 'array')\n      }\n      // Don't traverse array items for conflict detection\n      return\n    }\n\n    if (typeof obj === 'object') {\n      if (path) {\n        if (!keyTypeMap.has(path)) keyTypeMap.set(path, new Map())\n        keyTypeMap.get(path)!.set(locale, 'object')\n      }\n      for (const [key, value] of Object.entries(obj)) {\n        const newPath = path ? `${path}.${key}` : key\n        collectKeyTypes(value, locale, newPath)\n      }\n      return\n    }\n\n    // Primitive value\n    if (path) {\n      if (!keyTypeMap.has(path)) keyTypeMap.set(path, new Map())\n      keyTypeMap.get(path)!.set(locale, getValueType(obj))\n    }\n  }\n\n  // Collect all key types for each locale\n  for (const [locale, localeMessages] of Object.entries(messages)) {\n    if (locale === 'js-reserved') continue\n    collectKeyTypes(localeMessages, locale)\n  }\n\n  // Check for conflicts\n  for (const [key, localeTypes] of keyTypeMap.entries()) {\n    const types = Array.from(localeTypes.entries())\n    const uniqueTypes = new Set(types.map(([_, type]) => type))\n\n    if (uniqueTypes.size > 1) {\n      // We have a conflict\n      const typeGroups = new Map<string, string[]>()\n      for (const [locale, type] of types) {\n        if (!typeGroups.has(type)) typeGroups.set(type, [])\n        typeGroups.get(type)!.push(locale)\n      }\n\n      const groupDescriptions = Array.from(typeGroups.entries())\n        .map(([type, locales]) => `${type} in [${locales.join(', ')}]`)\n        .join(' vs ')\n\n      conflicts.push(`Key \"${key}\" has conflicting types: ${groupDescriptions}`)\n    }\n  }\n\n  return conflicts\n}\n\nexport function getFinalKeys<TKey extends string | number | symbol>(messages: Record<TKey, JSONValue>, baseLocale: TKey): string[] {\n  const messagesForBaseLocale = (messages?.[baseLocale] ?? Object.values(messages)[0]) as Record<string, JSONValue>;\n  const allKeysRaw = getJsonLeafPaths(messagesForBaseLocale)\n    .map((p) => p.replace(/\\.body\\.cases$/g, ''))\n\n  return transformKeys(allKeysRaw);\n}\n","/**\n * Enhanced error formatting utilities\n */\n\ninterface ErrorLocation {\n  line: number;\n  column: number;\n}\n\n/**\n * Parse JSON and provide enhanced error messages with line/column information\n */\nexport function parseJSONWithLocation(\n  content: string,\n  filePath: string\n): any {\n  try {\n    return JSON.parse(content);\n  } catch (error: any) {\n    const location = extractJSONErrorLocation(error, content);\n    throw createFormattedError(filePath, content, location, error.message);\n  }\n}\n\n/**\n * Extract line and column from JSON parse error\n */\nfunction extractJSONErrorLocation(\n  error: Error,\n  content: string\n): ErrorLocation | null {\n  const message = error.message;\n\n  // Try to extract position from different error formats\n  // Node.js: \"Unexpected token } in JSON at position 123\"\n  const positionMatch = message.match(/at position (\\d+)/);\n  if (positionMatch) {\n    const position = parseInt(positionMatch[1], 10);\n    return getLineAndColumn(content, position);\n  }\n\n  // V8: \"JSON.parse: unexpected character at line 5 column 12\"\n  const lineColMatch = message.match(/line (\\d+) column (\\d+)/);\n  if (lineColMatch) {\n    return {\n      line: parseInt(lineColMatch[1], 10),\n      column: parseInt(lineColMatch[2], 10),\n    };\n  }\n\n  return null;\n}\n\n/**\n * Convert character position to line and column\n */\nfunction getLineAndColumn(content: string, position: number): ErrorLocation {\n  const lines = content.substring(0, position).split('\\n');\n  const line = lines.length;\n  const column = lines[lines.length - 1].length + 1;\n\n  return {line, column};\n}\n\n/**\n * Create a formatted error with context\n */\nfunction createFormattedError(\n  filePath: string,\n  content: string,\n  location: ErrorLocation | null,\n  originalMessage: string\n): Error {\n  if (!location) {\n    // Fallback to simple error if we can't extract location\n    const error = new Error(`Failed to parse JSON in ${filePath}\\n${originalMessage}`);\n    error.name = 'JSONParseError';\n    return error;\n  }\n\n  const lines = content.split('\\n');\n  const {line, column} = location;\n\n  // Get context lines (2 before, the error line, 2 after)\n  const contextStart = Math.max(0, line - 3);\n  const contextEnd = Math.min(lines.length, line + 2);\n  const contextLines = lines.slice(contextStart, contextEnd);\n\n  // Build error message with context\n  const errorLines: string[] = [];\n  errorLines.push(`\\n❌ JSON Parse Error in ${filePath}:${line}:${column}`);\n  errorLines.push('');\n  errorLines.push(originalMessage);\n  errorLines.push('');\n\n  // Show context with line numbers\n  contextLines.forEach((contextLine, index) => {\n    const lineNum = contextStart + index + 1;\n    const isErrorLine = lineNum === line;\n    const prefix = isErrorLine ? '>' : ' ';\n    const lineNumStr = String(lineNum).padStart(4, ' ');\n\n    errorLines.push(`${prefix} ${lineNumStr} | ${contextLine}`);\n\n    // Add pointer to error column\n    if (isErrorLine && column > 0) {\n      const pointer = ' '.repeat(8 + column) + '^';\n      errorLines.push(pointer);\n    }\n  });\n\n  errorLines.push('');\n\n  const error = new Error(errorLines.join('\\n'));\n  error.name = 'JSONParseError';\n  return error;\n}\n\n/**\n * Format a generic file error with location\n */\nexport function formatFileError(\n  filePath: string,\n  message: string,\n  line?: number,\n  column?: number\n): Error {\n  const location = line !== undefined ? `:${line}${column !== undefined ? `:${column}` : ''}` : '';\n  const error = new Error(`\\n❌ Error in ${filePath}${location}\\n${message}\\n`);\n  error.name = 'FileError';\n  return error;\n}\n\n/**\n * Wrap an error with file context\n */\nexport function wrapErrorWithFile(\n  filePath: string,\n  error: Error\n): Error {\n  if (error.name === 'JSONParseError' || error.name === 'FileError') {\n    // Already formatted\n    return error;\n  }\n\n  const wrappedError = new Error(\n    `\\n❌ Error processing ${filePath}\\n${error.message}\\n`\n  );\n  wrappedError.name = 'FileProcessingError';\n  wrappedError.stack = error.stack;\n  return wrappedError;\n}\n","/**\n * A higher-order function that wraps another function to conditionally process its arguments.\n *\n * If the wrapper is called with two or more arguments, and the second argument\n * is a string that can be parsed into a finite number, it will:\n * 1. Convert the second argument to a Number.\n * 2. Ensure the third argument is an object and add 'count' and 'n' properties\n *    to it, with the value of the parsed number. If the third argument is not\n *    an object, a new object will be created.\n *\n * @param {Function} fn The function to wrap.\n * @returns {Function} A new function that wraps the original.\n */\nexport function translateWrapperFunction<TFn extends (...args: any[]) => any>(fn: TFn): TFn {\n  // Return a new function that will be used in place of the original.\n  // We use rest parameters (...args) to capture all arguments into an array.\n  return ((...args: unknown[]) => {\n    // Condition 1: Check if there are at least two arguments.\n    if (args.length >= 2) {\n      const secondArg = args[1];\n      console.log(args, typeof secondArg)\n\n\n      // Condition 2: Check if the second argument is a string that can be parsed into a number.\n      // We use parseFloat and isFinite for a robust check.\n      if (typeof secondArg === 'number' || (typeof secondArg === 'string' && !isNaN(parseFloat(secondArg)))) {\n        const numericValue = parseFloat(secondArg.toString());\n        const originalThirdArg = args[2];\n\n        // Prepare the new third argument.\n        // If the original third arg is a non-array object, merge with it.\n        // Otherwise, create a new object.\n        const newThirdArg = (typeof originalThirdArg === 'object' && originalThirdArg !== null && !Array.isArray(originalThirdArg))\n          ? {...originalThirdArg, count: numericValue, n: numericValue}\n          : {count: numericValue, n: numericValue};\n\n        // Create a new arguments array with the modified values.\n        const newArgs = [\n          args[0],          // First argument\n          //  numericValue,     // Converted second argument\n          newThirdArg      // Modified or created third argument\n\n        ];\n        console.log(newThirdArg);\n        // Call the original function with the modified arguments.\n        // @ts-expect-error TS cannot infer types here\n        return fn.apply(this, newArgs);\n      }\n    }\n\n    // If conditions are not met, call the original function with the original arguments.\n    // @ts-expect-error TS cannot infer types here\n    return fn.apply(this, args);\n  }) as TFn;\n}\n\nexport default translateWrapperFunction;\n","import {CombinedMessages} from \"../../core/combined-messages\";\n\nimport {Composer, DefaultLocaleMessageSchema as MessagesType, useI18n} from \"vue-i18n\";\nimport {JSONObject} from \"../../types\";\n\n\nexport type  I18nGlobalApp = Composer<MessagesType, Record<string, unknown>, Record<string, unknown>, object, false>\nexport type I18nApptype = { global: I18nGlobalApp }\ndeclare type globalThisType = { i18nModule: I18nApptype }\ndeclare const availableLocales: string[];\ndeclare const globalThis: globalThisType;\n\ndeclare function toValue<T>(r: T | { value: T }): T;\n\ndeclare function isReactive<T>(r: T | { value: T }): r is { value: T };\n\nexport type CustomHotFileChangedPayload = {\n  locale: string,\n  messages: null,\n  update: JSONObject,\n  timestamp: number\n}\nexport type CustomHotReplaceI18nPayload = {\n  locale?: undefined,\n  messages: CombinedMessages,\n  timestamp: number,\n  files: string[]\n}\nexport type CustomHotModuleUpdatePayload =\n  CustomHotReplaceI18nPayload\n  | CustomHotFileChangedPayload;\n\n// export function hrmHotUpdate(messages: Record<string, JSONObject>, data: CustomHotModuleUpdatePayload, app: I18nGlobalApp, deepMerge: (a: any, b: any) => any) {\nexport function hrmHotUpdate(messages: Record<string, JSONObject>, data: CustomHotReplaceI18nPayload | CustomHotFileChangedPayload, app: I18nGlobalApp, deepMerge: (a: any, b: any) => any) {\n\n  const i18nModule = app ?? globalThis?.i18nModule?.global;\n  if (!i18nModule) {\n    console.error('[i18n hotUpdate] No i18n module instance found, skipping update.');\n    return;\n  }\n  if (!data?.messages?.languages?.length && !data?.locale) {\n    console.warn('[i18n hotUpdate] No languages found in hot update data, skipping update.', data);\n    return;\n  }\n\n  if (data.messages) {\n\n    console.debug(`[i18n hotUpdate] Received FULL hot update with ${data.messages.contentId}: ${data.messages.languages.join(',')} for files: ${data.files.join(', ')}`);\n    // Update the exported messages\n    const mergedMessages = data.messages.messages;\n\n    // Update the global i18n instance if it exists\n    if (i18nModule) {\n      // Update messages for all locales\n      data.messages.languages.forEach(locale => {\n        i18nModule.setLocaleMessage(locale, mergedMessages[locale]);\n        // console.log('[i18n hotUpdate]' ,locale,mergedMessages[locale])\n      });\n    }\n\n\n  } else {\n    console.trace('[i18n hotUpdate] Received hot update for locale: ' + data.locale);\n    i18nModule.mergeLocaleMessage(data.locale, data.update);\n  }\n\n\n  // Force re-render by updating a reactive property\n  const currentLocale = toValue(i18nModule.locale);\n  if (!currentLocale) {\n    console.warn('[i18n hotUpdate] Current locale is undefined, skipping locale re-assignment.');\n    return\n  }\n  if (isReactive(i18nModule.locale)) {\n    i18nModule.locale.value = currentLocale;\n  } else {\n    // @ts-expect-error fallback for non-reactive locale\n    // globalThis.i18nModule = useI18n({useScope: 'global', locale: currentLocale});\n    i18nModule.locale = data.locale || currentLocale;\n  }\n\n\n  // Access to ensure reactivity\n}\n\nexport default hrmHotUpdate;\n\n","// import type {MessagesType} from \"virtual:vue-i18n-types\";\nimport type {ComposerOptions, DefaultLocaleMessageSchema, I18n, Locale} from \"vue-i18n\"\nimport {createI18n} from \"vue-i18n\"\n\ndeclare global {\n  export const fallbackLocales: string[];\n  export const messages: DefaultLocaleMessageSchema;\n}\n\nexport function createI18nInstance<T extends ComposerOptions>(options?: T): I18n<DefaultLocaleMessageSchema, T[\"datetimeFormats\"] extends Record<string, unknown> ? T[\"datetimeFormats\"] : Record<string, unknown>, T[\"numberFormats\"] extends Record<string, unknown> ? T[\"numberFormats\"] : Record<string, unknown>, T[\"locale\"] extends string ? T[\"locale\"] : Locale, false> {\n\n//I18n<Messages, DateTimeFormats, NumberFormats, OptionLocale, false>\n  const i18nApp = createI18n({\n    fallbackLocale: fallbackLocales,\n    // missingWarn: false,\n    // fallbackWarn: false,\n    locale: navigator?.language,\n    legacy: false,\n    ...options,\n    messages: messages,\n  } as const as any);\n  // @ts-expect-error globalThis not defined\n  globalThis.i18nApp = i18nApp;\n  // i18nApp.global.locale = navigator?.language?.split(\"-\")?.[0] ?? '${config.baseLocale}';\n  return i18nApp as I18n<DefaultLocaleMessageSchema, T[\"datetimeFormats\"] extends Record<string, unknown> ? T[\"datetimeFormats\"] : Record<string, unknown>, T[\"numberFormats\"] extends Record<string, unknown> ? T[\"numberFormats\"] : Record<string, unknown>, T[\"locale\"] extends string ? T[\"locale\"] : Locale, false>;\n}\n\nexport default createI18nInstance;\n\n// export function createI18nInstancePlugin<T extends Partial<ComposerOptions>&I18nOptions >(options?: T): I18n<AllTranslations, T[\"datetimeFormats\"] extends Record<string,unknown> ? T[\"datetimeFormats\"] : Record<string,unknown>, T[\"numberFormats\"] extends Record<string, unknown> ? T[\"numberFormats\"] : Record<string,unknown>, T[\"locale\"] extends string ? T[\"locale\"] : Locale, false> {\n//   const i18n = createI18nInstance(options);\n//   return i18n;\n// }\n\n","// HelperMethods.ts\nimport {CombinedMessages} from \"../core/combined-messages\";\n\nimport translateWrapperFunction from \"./runtime/translateWrapperFunction.ts??inline\";\nimport deepMerge from './runtime/deepMerge.ts??inline';\nimport hotUpdateCallback from \"./runtime/hrmHotUpdate.ts??inline\";\nimport codeCreateI18nInstance from \"./runtime/createI18nInstance??inline\";\nimport {GenerationOptions} from \"../types.ts\";\n\n/** String enum keeps runtime minimal and DX straightforward */\nexport enum SymbolEnum {\n  imports = \"_imports\",\n  messages = \"messages\",\n  hrmHotUpdate = \"_hrmHotUpdate\",\n\n  useI18nApp = \"useI18nApp\",\n  availableLocales = \"availableLocales\",\n  fallbackLocales = \"fallbackLocales\",\n  translationWrapper = \"translationWrapper\",\n  createI18nInstance = \"createI18nInstance\",\n  createI18nInstancePlugin = \"createI18nInstancePlugin\",\n  useI18nTypeSafe = \"useI18nTypeSafe\",\n}\n\n/** Shorthand constants if you prefer named references */\nexport const imports = SymbolEnum.imports;\nexport const messages = SymbolEnum.messages;\nexport const hrmHotUpdate = SymbolEnum.hrmHotUpdate;\nexport const availableLocales = SymbolEnum.availableLocales;\nexport const useI18nApp = SymbolEnum.useI18nApp;\nexport const fallbackLocales = SymbolEnum.fallbackLocales;\nexport const translationWrapper = SymbolEnum.translationWrapper;\nexport const createI18nInstance = SymbolEnum.createI18nInstance;\nexport const createI18nInstancePlugin = SymbolEnum.createI18nInstancePlugin;\nexport const useI18nTypeSafe = SymbolEnum.useI18nTypeSafe;\n\n\n\n\n// HMR handling for live updates\nexport const codeHrmHotUpdate = `\n\nlet cachedMessages = {};\nif (import.meta.hot) {\n${deepMerge}\n${hotUpdateCallback}\n  import.meta.hot.on('i18n-update', (data) => {\n cachedMessages = hrmHotUpdate(cachedMessages,data, globalThis.i18nApp.global,deepMerge);\n\n  });\n}`\n\nexport type HelperMethodsRecord = Record<SymbolEnum, string>;\n// type that has every key of SymbolEnum as ker\n// ys\n// type HelperMethodsOrderKeys = keyof typeof HelperMethodsOrder;\n// type _HelperMethods = Record<HelperMethodsOrderKeys, SymbolEnum>;\n/** Stable order for full-file serialization */\n// export const HelperMethodsOrder: HelperMethodsRecord = {\n//\n//\n//   [SymbolEnum.imports.toString()]: 'imports',\n//   [messages.toString()]: SymbolEnum.messages,\n//   useI18nApp: SymbolEnum.useI18nApp,\n//   fallbackLocales: SymbolEnum.fallbackLocales,\n//   [availableLocales.toString()]: SymbolEnum.availableLocales,\n//\n//   translationWrapper: SymbolEnum.translationWrapper,\n//   createI18nInstance: SymbolEnum.createI18nInstance,\n//   createI18nInstancePlugin: SymbolEnum.createI18nInstancePlugin,\n//   useI18nTypeSafe: SymbolEnum.useI18nTypeSafe,\n// } as HelperMethodsRecord;\n\n/** All sections resolve to strings */\n\n\nexport interface RuntimeGenerationParams {\n  config: GenerationOptions,\n  buildAssetRefId?: string,\n}\n\n/** Builder: produces the enum-keyed record */\nfunction buildRuntimeMethods(messagesCombined: CombinedMessages): HelperMethodsRecord {\n  const config = messagesCombined.config;\n\n  function getMessages() {\n    // When inlineDataInBuild is true, always inline the data directly\n    // This avoids issues with virtual JSON modules in library builds\n    // if (config.emit.buildAssetRefId) {\n    //   config.logger.info(`buildAssetRefId: ${config.emit.buildAssetRefId}`)\n    //   return `\n    //   // export const messages = ${messagesCombined.messagesJsonString}\n    //   import  messagesImported  from '${config.sourceId}/messages';\n    //   export const messages = messagesImported;\n    //   // const messages = import.meta.ROLLUP_FILE_URL_${config.emit.buildAssetRefId}`\n    //\n    // } else if (config.emit.inlineDataInBuild) {\n    //   return `export const messages = ${messagesCombined.messagesJsonString}`\n    // } else {\n    //\n    // config.logger.warn(messagesImportedFromServer)\n    return `export const messages = ${messagesCombined.messagesJsonString};`\n    // }\n  }\n\n  return {\n    [imports]: `\n    import { isReactive, ref, toValue} from \"vue\";\n    import { createI18n, useI18n } from 'vue-i18n';\n    `,\n    [messages]: getMessages(),\n    [availableLocales]: `export const availableLocales = ${messagesCombined.languagesTuple()};`,\n    [fallbackLocales]: `export const fallbackLocales = ${JSON.stringify(messagesCombined.fallbackLocales)};`,\n    [hrmHotUpdate]: codeHrmHotUpdate,\n    [useI18nApp]: \"export const useI18nApp = () => globalThis.i18nApp.global;\",\n\n\n    [translationWrapper]: 'export ' + translateWrapperFunction,\n    [createI18nInstance]: 'export ' + codeCreateI18nInstance,\n    [createI18nInstancePlugin]: 'export const createI18nInstancePlugin = createI18nInstance;',\n    [useI18nTypeSafe]:\n      `export function useI18nTypeSafe(options) {\n  const { t: originalT, d, n, ...rest } = useI18n({\n\n    ...(options ?? {}),\n  });\n  return {\n    ...rest,\n    t: translateWrapperFunction(originalT),\n    d,\n    n,\n  };\n}`,\n  } as const;\n\n}\n\n\n\n/** Typed, compact class with ergonomic helpers */\nexport class RuntimeMethods {\n  private readonly _data: HelperMethodsRecord;\n  private readonly _config: GenerationOptions;\n\n  constructor(messagesCombined: CombinedMessages) {\n    this._data = buildRuntimeMethods(messagesCombined);\n    this._config = messagesCombined.config;\n  }\n\n\n  /** Deterministic full-file content (all sections in HelperMethodsOrder) */\n  toFileContent(defaultExport = 'messages'): string {\n    return Object.values(this._data).join(\"\\n\\n\") + 'export default ' + defaultExport;\n  }\n\n  parseSymbolEnumKey(key: string | SymbolEnum): string | undefined {\n    for (const [keyFound, contentFound] of Object.entries(this._data)) {\n\n\n      if (keyFound.toString() == key.toString()) {\n        return contentFound;\n      }\n\n    }\n    return undefined;\n  }\n\n\n  getFileContentFor(target: string | SymbolEnum, separator = \"\\n\\n\"): string {\n    // remove \"??*\" from target\n\n    const resolvedCode = this.parseSymbolEnumKey(target);//? this._data?.[resolved] : this._data?.[target];\n    if (!resolvedCode) {\n      // throw new Error(`getFileContentFor: No code found for target \"${target}\". Available keys: ${Object.keys(this._data).join(\", \")}`);\n      this._config.logger.error(`getFileContentFor: No code found for target \"${target}\". Available keys: ${Object.entries(this._data).join(\", \")}`);\n      return this.toFileContent(target);\n    }\n\n    // For sub-modules, we only need the specific export, not vue-i18n imports\n    // unless the module needs them (like useI18nTypeSafe)\n    const needsVueI18nImports = ['useI18nTypeSafe', 'createI18nInstance', 'createI18nInstancePlugin'].includes(target);\n    const importsCode = this._data[imports];\n\n// this._config.logger.info(`getFileContentFor: Generating code for target \"${target}\". needsVueI18nImports: ${needsVueI18nImports}`);\n// this._config.logger.debug(`Imports code: ${importsCode}`);\n    // Messages, availableLocales, and fallbackLocales are already exported in resolvedCode\n    // so we don't need to add 'export default'\n    const needsDefaultExport = true;//!['messages', 'availableLocales', 'fallbackLocales', 'useI18nApp', 'translationWrapper', 'useI18nTypeSafe', 'createI18nInstance', 'createI18nInstancePlugin'].includes(target);\n    const defaultExportCode = needsDefaultExport ? `export default ${target}` : '';\n\n    const parts = [importsCode, resolvedCode, defaultExportCode].filter(Boolean);\n    return parts.join(separator);\n  }\n}\n","import type {GenerationOptions, JSONObject} from '../types'\nimport {CombinedMessages} from '../core/combined-messages'\nimport {RuntimeGenerationParams, RuntimeMethods} from \"./treeShakeGenerator\";\n\n\n/**\n * Create .d.ts content for type definitions only\n */\nexport function toTypesContent(params: {\n  combinedMessages: CombinedMessages<string, JSONObject>;\n  config?: GenerationOptions;\n}): string {\n  const {\n    combinedMessages,\n    config,\n  } = params\n  const sourceId = config?.sourceId ?? '@vue-i18n-types'\n  // Use CombinedMessages properties directly\n  const contentId = combinedMessages.keysId\n\n\n  const autogenerated =\n    (config?.banner ?? //// @ts-nocheck\n      `/* eslint-disable */\n       /* prettier-ignore */\n      // @formatter:off\n      // biome-ignore lint: disable\n      // AUTO-GENERATED FILE. DO NOT EDIT.\n      // Content-Hash: ${contentId}\n`.split('\\n').map(l => l.trim()).filter(l => l).join('\\n') + '\\n\\n')\n\n  const NL = '\\n'\n  const baseLocaleMessages = combinedMessages.baseLocaleMessages;\n  const finalKeys = combinedMessages.keys;\n  const availableLocales = combinedMessages.languages;\n\n  // Type definitions only - build with array for better performance\n  const bodyLines = [\n    '// types content',\n\n\n    `\n\ndeclare module '${sourceId}/messages' {\n  import type {ResourceValue,TranslationsPaths,PickupPaths,RemoveIndexSignature,PickupKeys,PickupLocales, ResourcePath, IsEmptyObject,} from \"@intlify/core-base\";\n\n  import type { DefineLocaleMessage, DefaultLocaleMessageSchema,Locale } from 'vue-i18n';\n\n  export type AllMessages = Readonly<${JSON.stringify(combinedMessages.messages)}>;\n  export type MessageSchemeType = AllMessages['en'];\n\n  export type AllTranslationKeys = TranslationsPaths<AllMessages> | '${(finalKeys??[]).join(\"' | '\")}';\n  export type MessageSchemaGen = MessageSchemeType & DefineLocaleMessage;\n  export type I18nMessages = AllMessages;\n  export type AllTranslations = I18nMessages;\n  export type MessagesType = I18nMessages;\n\n  export const messages: MessagesType;\n  export {messages as default };\n}\ndeclare module '${sourceId}/availableLocales' {\n  import type {PickupLocales } from \"@intlify/core-base\";\n\n  export type AvailableLocales =  Readonly<[${availableLocales.map(l => `'${l}'`).join(', ')}]>\n  export type AvailableLocale = PickupLocales<AllMessages>\n  export const availableLocales : AvailableLocales;\n  export default availableLocales;\n}\ndeclare module '${sourceId}' {\n   import {type Plugin, type WritableComputedRef} from 'vue';\n   import { availableLocales } from '${sourceId}/availableLocales';\n   import type {  Composer, Locale, FallbackLocale, ComposerOptions as Options, ComposerOptions, I18n, I18nOptions,DefaultDateTimeFormatSchema,DefaultNumberFormatSchema, NamedValue, TranslateOptions, UseI18nOptions} from \"vue-i18n\";\n   import type { MessagesType,AllMessages, AllTranslations,AllTranslationKeys,I18nMessages,MessageSchemaGen} from '${sourceId}/messages';\n   export type * from '${sourceId}/messages';\n    export type * from '${sourceId}/availableLocales';\n   import type { AvailableLocale,AvailableLocales} from '${sourceId}/availableLocales';\n\n   export interface I18nCustom {\n     (key: AllTranslationKeys, plural: number, options: TranslateOptions): string\n      (key: AllTranslationKeys): string\n      (key: AllTranslationKeys, options?: TranslateOptions): string\n      (key: AllTranslationKeys, defaultMsg?: string): string\n      (key: AllTranslationKeys, defaultMsg: string, options?: TranslateOptions): string\n      (key: AllTranslationKeys, named: NamedValue, defaultMsg?: string): string\n      (key: AllTranslationKeys, named: NamedValue, plural?: number): string\n      (key: AllTranslationKeys, named: NamedValue, options?: TranslateOptions & Record<string,string|number>): string\n      (key: AllTranslationKeys, plural: number| UnwrapRef<number>, named?: NamedValue<TranslateOptions>): string\n      (key: AllTranslationKeys, plural: number, defaultMsg?: string): string\n  };\n\n\ndeclare module 'vue' {\n  import type {NamedValue, TranslateOptions} from \"vue-i18n\";\n  import type {AllTranslationKeys, I18nCustom} from 'virtual:vue-i18n-types';\n\n\n  /**\n   * Component Custom Properties for Vue I18n\n   *\n   * @VueI18nInjection\n   */\n  export interface ComponentCustomProperties {\n\n    // $i18n: VueI18nInstance\n    $t(key: AllTranslationKeys, plural?: number|TranslateOptions|string|NamedValue, options?: TranslateOptions|string|number): string\n\n  }\n}\n\n\n\nexport type DateTimeFormats = Record<AvailableLocale|string, DefaultDateTimeFormatSchema>\nexport type NumberFormats = Record<AvailableLocale|string, DefaultNumberFormatSchema>\n\n export type I18nOptions = Omit<ComposerOptions,'messages'>&\n {\n   messages:AllMessages,locale: ${combinedMessages.config.baseLocale},\n\n };\n export type CreateI18nOptions = Omit<ComposerOptions,'messages'>& I18nOptions &\n {\n\n  lecacy: false,\n  dateTimeFormats?: DateTimeFormats,\n  numberFormats?: NumberFormats\n };\n// export type DateTimeFormats = DefaultDateTimeFormatSchema\n// export type NumberFormats =  DefaultNumberFormatSchema\n\n  export type I18InstanceType<Options extends CreateI18nOptions> = I18n<AllMessages,DateTimeFormats, NumberFormats, AvailableLocale,false>\n  export type UseI18nTypesafeReturn<TOptions extends I18nOptions=I18nOptions> = Omit<Composer<AllMessages, NonNullable<TOptions['datetimeFormats']>, NonNullable<TOptions['numberFormats']>, TOptions['locale'] extends unknown ?AvailableLocale: TOptions['locale']>,'t'> &\n  {\n  availableLocales: AvailableLocales\n   t: I18nCustom\n   tm: <TKey extends string |PickupPaths<MessageSchemaGen>,TResult extends ResourceValue<MessageSchemaGen, TKey>>(t: TKey) =>  TResult\n   locale: WritableComputedRef<AvailableLocale>\n  };\n\n  type I18nInstance<T extends Omit<ComposerOptions,'messages'>> = I18n<\n    MessagesType,\n    T['datetimeFormats'] extends Record<string, unknown> ? T['datetimeFormats'] : object,\n    T['numberFormats'] extends Record<string, unknown> ? T['numberFormats'] : object,\n    T['locale'] extends string ? T['locale'] : Locale,\n    false\n  >\n  export function createI18nInstance<Options extends CreateI18nOptions>(options?: Options): I18InstanceType<Options>;\n  export function createI18nInstancePlugin<T extends  CreateI18nOptions>(options?: T):\n      Plugin<unknown[]>& I18nInstance<T>\n\n  export {fallbackLocales} from '${sourceId}/fallbackLocales'\n  export {availableLocales} from '${sourceId}/availableLocales'\n  export {messages} from '${sourceId}/messages'\n  export const useI18nApp: ()=> UseI18nTypesafeReturn\n  export function useI18nTypeSafe(options?:I18nOptions):UseI18nTypesafeReturn;\n}\n// declare module '@intlify/core-base' {\n//\n//   export type DefineCoreLocaleMessage = _AllMessages;\n// }\n//   import type { Composer, UseI18nOptions,DefaultLocaleMessageSchema, SchemaParams, LocaleParams, VueMessageType } from 'vue-i18n';\n// declare module 'vue-i18n' {\n  // type messageScheme = ${JSON.stringify(baseLocaleMessages)}\n  // export type DefaultLocaleMessageSchema = _MessageSchemeType\n\n  // export type DefineLocaleMessage = _MessageSchemeType\n  // export type Locale =  ${combinedMessages.languagesUnion()};\n//export type ComposerTranslation\n// }\n\n\ndeclare module '${sourceId}/fallbackLocales' {\n  import type { Locale } from \"vue-i18n\";\n  export const fallbackLocales: { [locale in string]: Locale[];}\n  export default fallbackLocales;\n}\ndeclare module '${sourceId}/createI18nInstance' {\n  import type {createI18nInstance as ImportedType} from '${sourceId}';\n  export const createI18nInstance: ImportedType;\n  export default createI18nInstance;\n}\ndeclare module '${sourceId}/createI18nInstancePlugin' {\n  import type {createI18nInstancePlugin as ImportedType} from '${sourceId}';\n  export const createI18nInstancePlugin: ImportedType;\n  export default createI18nInstancePlugin;\n}\ndeclare module '${sourceId}/useI18nTypeSafe' {\n  export  {useI18nTypeSafe} from '${sourceId}'\n  //export const useI18nTypeSafe: ImportedType\n  //export default useI18nTypeSafe;\n}\n\n// export {};\n// declare module '@intlify/core-base' {\n//   export interface DefineCoreLocaleMessage {\n//     title: string\n//     menu: {\n//       login: string\n//     }\n//   }\n// }\n\n// declare module 'vue-i18n' {\n//\n// //  import type { messages } from '${sourceId}/messages'\n//    interface DefineLocaleMessage {\n//    //(typeof messages)['de']\n//    test: string\n//    }\n//    export declare type I18nMode = 'composition'\n//\n//      export = DefineLocaleMessage;\n//      export = x\n// }\n`,\n  ];\n\n  return (autogenerated + bodyLines.join(NL)).replace(/\\r\\n/g, NL).replace(/\\r/g, NL).replace(/\\n*$/, '\\n')\n}\n\n/**\n * Generate virtual module file content for physical file generation\n */\nexport function toVirtualModuleContent( messagesCombined: CombinedMessages): string {\nreturn createVirtualModuleCode(messagesCombined).toFileContent('messages');\n}\n\n\n/**\n * Emit **pure JS** (no TS annotations, no 'as const').\n * Rollup will replace 'import.meta.ROLLUP_FILE_URL_<ref>' in build.\n */\nexport function createVirtualModuleCode( messagesCombined: CombinedMessages): RuntimeMethods {\n\nconst messageMethods = new RuntimeMethods( messagesCombined)\n  return messageMethods\n\n}\n","/**\n * Lightweight FNV-1a 32-bit hash for short, deterministic content IDs.\n */\nexport function fnv1a32(input: string): string {\n  let h = 0x811c9dc5\n  for (let i = 0; i < input.length; i++) {\n    h ^= input.charCodeAt(i)\n    // 32-bit multiply by prime 16777619\n    h = (h + ((h << 1) + (h << 4) + (h << 7) + (h << 8) + (h << 24))) >>> 0\n  }\n  return ('00000000' + h.toString(16)).slice(-8)\n}","import path from 'node:path'\nimport fs from 'node:fs/promises'\n\n/**\n * Small helper: ensure a directory exists.\n */\nexport async function ensureDir(filePath: string) {\n  const dir = path.dirname(filePath)\n  await fs.mkdir(dir, {recursive: true})\n}\n\n/**\n * Atomic write: write to a temp file in the same folder, then rename.\n */\nexport async function writeFileAtomic(filePath: string, content: string) {\n  try {\n    // const dir = path.dirname(filePath)\n    // const tmp = path.join(dir, `.${path.basename(filePath)}.${randomUUID()}.tmp`)\n    // await fs.writeFile(tmp, content, 'utf8')\n    // await fs.rename(tmp, filePath)\n    //     const dir = path.dirname(filePath)\n    // const tmp = path.join(dir, `.${path.basename(filePath)}.${randomUUID()}.tmp`)\n    await fs.writeFile(filePath, content, {encoding: 'utf8', flush: true})\n\n    // await fs.rename(tmp, filePath)\n  } catch (e) {\n    console.error('writeFileAtomic', e)\n  }\n}\n","let p = process || {}, argv = p.argv || [], env = p.env || {}\nlet isColorSupported =\n\t!(!!env.NO_COLOR || argv.includes(\"--no-color\")) &&\n\t(!!env.FORCE_COLOR || argv.includes(\"--color\") || p.platform === \"win32\" || ((p.stdout || {}).isTTY && env.TERM !== \"dumb\") || !!env.CI)\n\nlet formatter = (open, close, replace = open) =>\n\tinput => {\n\t\tlet string = \"\" + input, index = string.indexOf(close, open.length)\n\t\treturn ~index ? open + replaceClose(string, close, replace, index) + close : open + string + close\n\t}\n\nlet replaceClose = (string, close, replace, index) => {\n\tlet result = \"\", cursor = 0\n\tdo {\n\t\tresult += string.substring(cursor, index) + replace\n\t\tcursor = index + close.length\n\t\tindex = string.indexOf(close, cursor)\n\t} while (~index)\n\treturn result + string.substring(cursor)\n}\n\nlet createColors = (enabled = isColorSupported) => {\n\tlet f = enabled ? formatter : () => String\n\treturn {\n\t\tisColorSupported: enabled,\n\t\treset: f(\"\\x1b[0m\", \"\\x1b[0m\"),\n\t\tbold: f(\"\\x1b[1m\", \"\\x1b[22m\", \"\\x1b[22m\\x1b[1m\"),\n\t\tdim: f(\"\\x1b[2m\", \"\\x1b[22m\", \"\\x1b[22m\\x1b[2m\"),\n\t\titalic: f(\"\\x1b[3m\", \"\\x1b[23m\"),\n\t\tunderline: f(\"\\x1b[4m\", \"\\x1b[24m\"),\n\t\tinverse: f(\"\\x1b[7m\", \"\\x1b[27m\"),\n\t\thidden: f(\"\\x1b[8m\", \"\\x1b[28m\"),\n\t\tstrikethrough: f(\"\\x1b[9m\", \"\\x1b[29m\"),\n\n\t\tblack: f(\"\\x1b[30m\", \"\\x1b[39m\"),\n\t\tred: f(\"\\x1b[31m\", \"\\x1b[39m\"),\n\t\tgreen: f(\"\\x1b[32m\", \"\\x1b[39m\"),\n\t\tyellow: f(\"\\x1b[33m\", \"\\x1b[39m\"),\n\t\tblue: f(\"\\x1b[34m\", \"\\x1b[39m\"),\n\t\tmagenta: f(\"\\x1b[35m\", \"\\x1b[39m\"),\n\t\tcyan: f(\"\\x1b[36m\", \"\\x1b[39m\"),\n\t\twhite: f(\"\\x1b[37m\", \"\\x1b[39m\"),\n\t\tgray: f(\"\\x1b[90m\", \"\\x1b[39m\"),\n\n\t\tbgBlack: f(\"\\x1b[40m\", \"\\x1b[49m\"),\n\t\tbgRed: f(\"\\x1b[41m\", \"\\x1b[49m\"),\n\t\tbgGreen: f(\"\\x1b[42m\", \"\\x1b[49m\"),\n\t\tbgYellow: f(\"\\x1b[43m\", \"\\x1b[49m\"),\n\t\tbgBlue: f(\"\\x1b[44m\", \"\\x1b[49m\"),\n\t\tbgMagenta: f(\"\\x1b[45m\", \"\\x1b[49m\"),\n\t\tbgCyan: f(\"\\x1b[46m\", \"\\x1b[49m\"),\n\t\tbgWhite: f(\"\\x1b[47m\", \"\\x1b[49m\"),\n\n\t\tblackBright: f(\"\\x1b[90m\", \"\\x1b[39m\"),\n\t\tredBright: f(\"\\x1b[91m\", \"\\x1b[39m\"),\n\t\tgreenBright: f(\"\\x1b[92m\", \"\\x1b[39m\"),\n\t\tyellowBright: f(\"\\x1b[93m\", \"\\x1b[39m\"),\n\t\tblueBright: f(\"\\x1b[94m\", \"\\x1b[39m\"),\n\t\tmagentaBright: f(\"\\x1b[95m\", \"\\x1b[39m\"),\n\t\tcyanBright: f(\"\\x1b[96m\", \"\\x1b[39m\"),\n\t\twhiteBright: f(\"\\x1b[97m\", \"\\x1b[39m\"),\n\n\t\tbgBlackBright: f(\"\\x1b[100m\", \"\\x1b[49m\"),\n\t\tbgRedBright: f(\"\\x1b[101m\", \"\\x1b[49m\"),\n\t\tbgGreenBright: f(\"\\x1b[102m\", \"\\x1b[49m\"),\n\t\tbgYellowBright: f(\"\\x1b[103m\", \"\\x1b[49m\"),\n\t\tbgBlueBright: f(\"\\x1b[104m\", \"\\x1b[49m\"),\n\t\tbgMagentaBright: f(\"\\x1b[105m\", \"\\x1b[49m\"),\n\t\tbgCyanBright: f(\"\\x1b[106m\", \"\\x1b[49m\"),\n\t\tbgWhiteBright: f(\"\\x1b[107m\", \"\\x1b[49m\"),\n\t}\n}\n\nmodule.exports = createColors()\nmodule.exports.createColors = createColors\n","import type {GenerationOptions, JSONObject} from \"../types\";\nimport {createVirtualModuleCode, toTypesContent} from \"../generation/generator.ts\";\nimport path from \"node:path\";\nimport {fnv1a32} from \"../utils/hash.ts\";\nimport {detectKeyConflicts, getFinalKeys} from \"../utils/json.ts\";\nimport {ensureDir, writeFileAtomic} from \"../utils/file.ts\";\nimport {RuntimeMethods, SymbolEnum} from \"../generation/treeShakeGenerator.ts\";\nimport pc from \"picocolors\";\n\nexport class CombinedMessages<TLanguages extends string = string, TMessages extends JSONObject = JSONObject> {\n\n\n  public readonly messagesJsonString: string;\n  public readonly keys: string[];\n  public readonly baseLocaleMessages: TMessages;\n  public readonly languages: TLanguages[];\n  public readonly contentId: string;\n  public readonly keysId: string;\n  public readonly fallbackLocales: Record<string, string[]>;\n\n\n  public constructor(public messages: Record<TLanguages | string, TMessages>, public config: GenerationOptions) {\n    this.messagesJsonString = JSON.stringify(messages);\n    const baseLocale = this.config.baseLocale || Object.keys(messages)[0];\n    this.keys = getFinalKeys(messages, baseLocale as TLanguages);\n    this.baseLocaleMessages = messages?.[baseLocale] ?? Object.values(messages)[0] ?? {} as TMessages;\n\n    const languages = Object.keys(messages);\n    this.languages = Array.from(new Set(languages)).sort((a, b) =>\n      a < b ? -1 : a > b ? 1 : 0\n    ) as TLanguages[];\n\n    this.contentId = fnv1a32(this.messagesJsonString);\n    this.keysId = fnv1a32(this.keys.join('|'));\n    this.fallbackLocales = CombinedMessages.getFallBackLocales(this.languages);\n  }\n\n\n  get typesOutpath() {\n    return path.isAbsolute(this.config.typesPath)\n      ? this.config.typesPath\n      : path.join(this.config.root, this.config.typesPath);\n  }\n\n  get virtualOutPath() {\n    return this.config.virtualFilePath\n      ? path.isAbsolute(this.config.virtualFilePath)\n        ? this.config.virtualFilePath\n        : path.join(this.config.root, this.config.virtualFilePath)\n      : undefined;\n  }\n\n  public languagesTuple(): string {\n    return `['${this.languages.join(`', '`)}']`\n  }\n\n  public languagesUnion(): string {\n    return `'${this.languages.join(`' | '`)}'`\n  }\n\n  public async writeTypesFile() {\n    await ensureDir(this.typesOutpath);\n    this.config.logger.info(`Writing types file to: ${this.typesOutpath}`);\n    await writeFileAtomic(this.typesOutpath, this.getTypesContent());\n  }\n\n  public async writeVirtualFile() {\n    // Write types file\n    const filePath = this.virtualOutPath;\n    if (!filePath) return;\n    await ensureDir(filePath);\n    // if (await this.shouldWriteFile(typesPath, typesContent)) {\n    this.config.logger.info(`Writing types file to: ${filePath}`);\n    await writeFileAtomic(filePath, this.getRuntimeContent());\n\n  }\n\n  public static getFallBackLocales(langs: string[]) {\n    return langs.reduce((acc, locale) => {\n      acc[locale] = [locale, locale === 'en' ? undefined : 'en', locale === 'de' ? undefined : 'de'].filter(a => a !== undefined);\n      if (locale === 'en') acc[locale] = [...acc[locale], 'en-US'];\n      return acc;\n    }, {} as Record<string, string[]>);\n  }\n\n  public getRuntimeContent() {\n\n    return this.getRuntimeMethods().toFileContent()\n  }\n\n  private _runtimeMethodsCache: RuntimeMethods | null = null;\n\n  public getRuntimeMethods(): RuntimeMethods {\n    if (this._runtimeMethodsCache) return this._runtimeMethodsCache;\n    this._runtimeMethodsCache = createVirtualModuleCode(this);\n    return this._runtimeMethodsCache;\n  }\n\n  public loadVirtualModuleCode(moduleToResolve: string | SymbolEnum) {\n    const code = this.getRuntimeMethods()\n    if (moduleToResolve === \"\") {\n      this.config.logger.info(`📄 [${pc.green('load')}] Generated dev code for virtual module: ${moduleToResolve}`);\n      return code.toFileContent()\n    }\n\n    const methodCode = code.getFileContentFor(moduleToResolve);\n    this.config.logger.info(`📄 [${pc.green('load')}] Loading virtual sub-module: ${pc.yellow(moduleToResolve)}, length: ${methodCode.length}`);\n    return methodCode;\n\n  }\n\n  public async writeFiles() {\n    const startWrite = performance.now();\n    await Promise.all([this.writeTypesFile(), this.writeVirtualFile()]);\n    const writeDuration = Math.round(performance.now() - startWrite);\n    this.config.logger.debug(`Generation took: ${writeDuration}ms`);\n  }\n\n  public getTypesContent() {\n    const params = Object.assign({}, {\n      combinedMessages: this,\n\n      config: this.config,\n\n    })\n    return toTypesContent(params)\n  }\n\n  /**\n   * Validate messages and log conflicts\n   */\n  public validateMessages(): void {\n    const conflicts = detectKeyConflicts(this.messages);\n    if (conflicts.length > 0) {\n      this.config.logger.error('⚠️  Conflicting translation keys detected:', {\n        timestamp: true,\n      });\n      for (const conflict of conflicts) {\n        this.config.logger.error(`   ${conflict}`, {timestamp: true});\n      }\n    }\n  }\n\n}\n","import path from \"node:path\";\nimport {promises as fs} from \"node:fs\";\n\n\nimport type {GenerationOptions, JSONValue} from \"../types.ts\";\nimport {toArray} from \"../generation/runtime/merge.ts\";\nimport {canonicalize, detectKeyConflicts} from \"../utils/json.ts\";\nimport {parseJSONWithLocation, wrapErrorWithFile} from \"../utils/error-formatter.ts\";\nimport {CombinedMessages} from \"./combined-messages.ts\";\n\ntype FilesProcesedCallback = (files: CombinedMessages, change?: string[]) => void | Promise<void>;\ntype FileUpdatedCallback = (file: ParsedFile) => (void | Promise<void>)\n\nexport interface ParsedFile {\n  localeKey: string;\n  prepared: any;\n}\n\n/**\n * Manages file reading, caching, and incremental updates for locale files\n */\n\nexport class FileManager {\n  private parsedFilesCache = new Map<string, ParsedFile>();\n  // private grouped:Record<string, any> = {};\n  private processedFiles: Set<string> = new Set<string>();\n  public filesToProcess: Set<string> = new Set<string>();\n\n  constructor(public options: GenerationOptions) {\n\n  }\n\n  public async findFiles() {\n    const allfiles = (await this.collectJsonFiles())\n\n\n    this.filesToProcess = new Set(allfiles);\n\n\n  }\n\n  public async processFile(file?: string) {\n    file ??= this.filesToProcess.values().next().value;\n    if (file) {\n\n      await this.readFile(file);\n\n\n      return file;\n    }\n    return null\n\n  }\n\n  private async fastGlob() {\n    const patterns = toArray(this.options.include);\n    // Remove the '!' prefix from exclude patterns since fast-glob's ignore option doesn't use it\n    const ignore = toArray(this.options.exclude).map(p => p.startsWith('!') ? p.slice(1) : p);\n\n    const cwd = this.options.root;\n    const start = performance.now();\n    const {default: fg} = await import(\"fast-glob\");\n    const list: string[] = await fg(patterns, {\n      cwd,\n      ignore,\n      absolute: true,\n      onlyFiles: true,\n      dot: false\n    });\n\n\n    const entries = list.map(p => path.normalize(p));\n    this.options.logger.info(`[FileManager] [findFiles] fast-glob: found ${entries.length} files in ${Math.round(performance.now() - start)}ms`);\n    return entries;\n  }\n\n  /**\n   * Collect JSON files using native Node.js glob or fast-glob fallback\n   */\n  async collectJsonFiles(): Promise<string[]> {\n    const patterns = toArray(this.options.include);\n    // Remove the '!' prefix from exclude patterns since fast-glob's ignore option doesn't use it\n    const ignore = toArray(this.options.exclude).map(p => p.startsWith('!') ? p.slice(1) : p);\n\n    const cwd = this.options.root;\n\n    this.options.logger.debug(`[FileManager] collectJsonFiles: patterns=${patterns.join(', ')}`);\n    this.options.logger.debug(`[FileManager] collectJsonFiles: cwd=${cwd}`);\n    this.options.logger.debug(`[FileManager] collectJsonFiles: ignore=${ignore.join(', ')}`);\n\n    let start = performance.now();\n    // const allImports = await import.meta.glob(this.options.root + '/**/*.json');\n\n    // this.options.logger.debug(`[FileManager] collectJsonFiles: found ${Object.keys(allImports).length} JSON files via import.meta.glob in ${Math.round(performance.now() - start)}ms`);\n    start = performance.now();\n\n\n    const nativeGlobEntriess = [];//nativeGlob();\n\n    const fastGlobEntries = this.fastGlob();\n    const entries = new Set<string>([...(await fastGlobEntries)]);    // Fallbasck: fast-glob\n\n\n    const out = Array.from(entries);\n\n    this.options.logger.debug(`[FileManager] foundFiles:  ${out.slice(0, Math.min(out.length, 10)).join(', ')}`);\n    const filteredFiles = out;\n    this.options.logger.info(`[FileManager] findFiles: total files found: ${out.length}/${filteredFiles.length} after filtering`);\n\n\n    filteredFiles.sort((a, b) => a.localeCompare(b));\n    return filteredFiles;\n  }\n\n\n  /**\n   * Read and group locale files with incremental updates\n   */\n  async readAndGroup() {\n    const startReadGroup = performance.now();\n\n    // Find all locale files first\n    if (this.filesToProcess.size === 0)\n\n      await this.findFiles();\n\n    const files = this.filesToProcess\n    // Check which files need to be re-read (new or modified)\n\n\n    const startFileRead = performance.now();\n    await this.readChangedFiles();\n\n    // Merge all cached files (including unchanged ones)\n\n    const totalDuration = Math.round(performance.now() - startReadGroup);\n\n    this.options.logger.info(`[FileManager] reading ${this.processedFiles.size} files completed in ${totalDuration}ms`);\n    const combinedMessages = await this.buildMessagesAndNotify(files);\n    return {\n      messages: combinedMessages,\n      stats: {\n\n        durations: {\n          stat: totalDuration,\n          read: totalDuration,\n\n          total: totalDuration,\n        },\n      },\n    };\n  }\n\n  private async buildMessagesAndNotify(files: Set<string> | string[]) {\n    const combinedMessages = new CombinedMessages(this.getGrouped(), this.options);\n    await Promise.all(this.callbacks.map(cb => cb(combinedMessages, [...files])));\n    return combinedMessages;\n  }\n\n  public getGrouped(files?: Map<string, ParsedFile>) {\n    const grouped: Record<string, any> = {}\n    files ??= this.parsedFilesCache;\n    for (const [_, {localeKey, prepared}] of files) {\n      if (!(localeKey in grouped)) grouped[localeKey] = {};\n      grouped[localeKey] = this.options.mergeFunction(grouped[localeKey], prepared);\n    }\n    return canonicalize(grouped as JSONValue) as Record<string, any>;\n\n\n  }\n\n  /**\n   * Read and parse changed files\n   */\n  public async readChangedFiles(): Promise<void> {\n    let readFiles = 0;\n    const filesToProcess = new Set([...this.filesToProcess])\n    const totalFiles = filesToProcess.size;\n    const start = performance.now();\n    while (filesToProcess.size > 0) {\n      const readFileBatches = this.options.fileBatchSize ?? 100;\n      const filesToProcessInRound = [...filesToProcess].slice(0, Math.min(readFileBatches, filesToProcess.size));\n      this.options.logger.debug(`[FileManager] readChangedFiles: processing batch of ${readFiles} / ${totalFiles} files. | Elapsed: ${Math.round(performance.now() - start)}ms`);\n      const tasks = filesToProcessInRound\n        .map(a => this.processFile(a))\n      filesToProcessInRound.forEach(a => filesToProcess.delete(a));\n      await Promise.all(tasks);\n      filesToProcessInRound.forEach(file => this.filesToProcess.delete(file))\n      filesToProcessInRound.forEach(file => this.processedFiles.add(file))\n\n      readFiles += filesToProcessInRound.length;\n\n    }\n  }\n\n  private async readFile(abs: string, readFileContent?: () => string | Promise<string>, localeKey: string | null = null) {\n    localeKey ??= this.options.getLocaleFromPath(abs, this.options.root);\n\n\n    if (!localeKey) {\n      this.options.logger?.warn(`Skipping file with invalid locale: ${abs}`);\n      return;\n    }\n\n    if (localeKey.length !== 2 && localeKey.length !== 5) {\n      this.options.logger?.warn(`Uncommon locale: ${abs} -> ${localeKey}`);\n    }\n\n    try {\n      readFileContent ??= () => fs.readFile(abs, \"utf8\");\n      const raw = await readFileContent();\n\n      // Parse JSON with enhanced error messages\n      const parsed = parseJSONWithLocation(raw, abs);\n\n      const prepared = this.options.transformJson\n        ? this.options.transformJson(parsed, abs)\n        : parsed;\n      this.parsedFilesCache.set(abs, {localeKey, prepared});\n      return {localeKey, prepared} as ParsedFile;\n    } catch (err: any) {\n      // Wrap error with file context if not already formatted\n      const formattedError = wrapErrorWithFile(abs, err);\n      this.options.logger?.error(formattedError.message);\n      throw formattedError;\n    }\n  }\n\n  /**\n   * Get list of last processed files\n   */\n  getLastFiles(): string[] {\n    return [...this.processedFiles];\n  }\n\n  /**\n   * Clear all caches\n   */\n  clearCache(): void {\n\n    this.parsedFilesCache.clear();\n    this.processedFiles = new Set<string>();\n    this.filesToProcess = new Set<string>();\n  }\n\n  public async fileUpdated(filePath: string, readFile?: () => string | Promise<string>, locale: string | null = null): Promise<ParsedFile | undefined> {\n    // let newVar = await this.readFile(filePath, readFile, locale);\n    // if (newVar) {\n    //   await Promise.all(this.callbacksFileChanged.map(async a => await a(newVar)));\n    // }\n    // return newVar;\n\n    this.parsedFilesCache.delete(filePath);\n    this.filesToProcess.add(filePath);\n    const newVar = await this.readFile(filePath);\n    if (newVar) {\n      // this.callbacksFileChanged.map(async a => await a(newVar));\n    }\n    await this.buildMessagesAndNotify([filePath]);\n    return newVar;\n\n\n  }\n\n  public fileUpdatedWithLocale(filePath: string, locale: string): Promise<ParsedFile | undefined> {\n    return this.fileUpdated(filePath, undefined, locale);\n\n\n  }\n\n  public validateMessages(): Promise<string[]> {\n    return new Promise((resolve) => {\n\n      const conflicts = detectKeyConflicts(this.getGrouped());\n      if (conflicts.length > 0) {\n        this.options.logger.error('⚠️  Conflicting translation keys detected:', {\n          timestamp: true,\n        });\n        for (const conflict of conflicts) {\n          this.options.logger.error(`   ${conflict}`, {timestamp: true});\n        }\n      }\n      resolve(conflicts);\n\n    })\n  }\n\n  public async fileRemoved(filePath: string) {\n    this.parsedFilesCache.delete(filePath);\n    await this.buildMessagesAndNotify([filePath]);\n  }\n\n  public addNewFile(filePath: string, readFile: () => (string | Promise<string>), mtime: number) {\n    return this.fileUpdated(filePath, readFile);\n\n  }\n\n  public callbacksFileChanged: Array<FileUpdatedCallback> = [];\n  private callbacks: Array<FilesProcesedCallback> = [];\n\n  public addOnAllFilesProcessed(callback: FilesProcesedCallback, _priority: number = 0) {\n    if (_priority > 0) {\n      this.callbacks.unshift(callback);\n      return;\n    } else {\n      this.callbacks.push(callback);\n    }\n  }\n\n  public addOnFileChanged(callback: FileUpdatedCallback) {\n    this.callbacksFileChanged.push(callback);\n  }\n}\n","import type {LogErrorOptions, Logger, LoggerOptions, LogLevel, LogOptions, LogType} from \"vite\";\n\nimport pc from 'picocolors';\n\n/**\n * Create a simple console logger compatible with Vite's Logger interface\n */\nexport function createConsoleLogger(debugEnabled: boolean = false, prefix: string = ` i18n-typescript`): Logger {\n  const warnedMessages = new Set<string>();\n\n\n  return {\n    info: (msg: string) => {\n\n\n      if (debugEnabled) {\n        console.log(`[${pc.dim(prefix)}] ${msg}`);\n      }\n    },\n    warn: (msg: string) => {\n      console.warn(`[${pc.dim(prefix)}] ${msg}`);\n    },\n    error: (msg: string) => {\n      console.error(`[${pc.dim(prefix)}] ${msg}`);\n    },\n    warnOnce: (msg: string) => {\n      if (!warnedMessages.has(msg)) {\n        warnedMessages.add(msg);\n        console.warn(`[${pc.dim(prefix)}] ${msg}`);\n      }\n    },\n    clearScreen: () => {\n    },\n    hasErrorLogged: () => false,\n    hasWarned: false,\n  };\n}\n\n// decorator of Logger with prefix and colored output\nexport function createColoredLogger(level?: LogLevel | 'debug', options?: LoggerOptions) {\n\n  const logger: Logger = options?.customLogger ?? createConsoleLogger(true, options?.prefix)\n  const prefix = options?.prefix ?? `vue-i18n-typescript`;\n\n  return {\n    debug: (msg: string, options?: LogOptions) => {\n      if (level !== 'debug') return\n      logger.info(`${pc.dim(pc.cyanBright(prefix))} ${pc.gray(msg)}`, options);\n    },\n    info: (msg: string, options?: LogOptions) => {\n\n      logger.info(`${pc.dim(pc.blueBright(prefix))} ${msg}`, options);\n\n    },\n    warn: (msg: string, options?: LogOptions) => {\n\n      logger.warn(`${pc.dim(prefix)} ${pc.yellow(msg)}`, options);\n    },\n    error: (msg: string, options?: LogErrorOptions) => {\n      logger.clearScreen(\"info\")\n      logger.error(`${pc.bold(prefix)} ${pc.red(msg)}`, options);\n      // red console color\n    },\n    warnOnce: (msg: string, options?: LogOptions) => {\n      logger.clearScreen(\"info\")\n      logger.warnOnce(`${pc.bold(prefix)} ${pc.yellow(msg)}`, options);\n    },\n    clearScreen: (type: LogType) => {\n      logger.clearScreen(type);\n    },\n    hasErrorLogged: (error: Error) => logger.hasErrorLogged(error),\n    hasWarned: logger.hasWarned,\n  };\n}\n","{\n  \"name\": \"vite-plugin-vue-i18n-typescript\",\n  \"version\": \"1.2.1\",\n  \"description\": \"Type-safe Vue i18n translations. Auto-generates TypeScript types from JSON locale files. Catch translation errors at compile time with full IDE autocomplete.\",\n  \"keywords\": [\n    \"vite\",\n    \"vite-plugin\",\n    \"vue-i18n\",\n    \"typescript\",\n    \"i18n\",\n    \"vue3\",\n    \"vue\",\n    \"types\",\n    \"type-generation\",\n    \"localization\",\n    \"translation-keys\",\n    \"internationalization\",\n    \"type-safe\",\n    \"compile-time-validation\",\n    \"autocomplete\",\n    \"intellisense\",\n    \"hmr\",\n    \"hot-reload\"\n  ],\n  \"homepage\": \"https://github.com/gcwioro/vite-plugin-vue-i18n-typescript#readme\",\n  \"bugs\": {\n    \"url\": \"https://github.com/gcwioro/vite-plugin-vue-i18n-typescript/issues\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/gcwioro/vite-plugin-vue-i18n-typescript.git\"\n  },\n  \"license\": \"MIT\",\n  \"author\": \"Günther Cwioro\",\n  \"type\": \"module\",\n  \"exports\": {\n    \".\": {\n      \"types\": [\n        \"./dist/index.d.ts\",\n        \"./dist/index.d.cts\"\n      ],\n      \"import\": \"./dist/index.js\",\n      \"node\": \"./dist/index.js\",\n      \"require\": \"./dist/index.cjs\",\n      \"default\": \"./dist/index.js\"\n    },\n    \"./api\": {\n      \"types\": [\n        \"./dist/api.d.ts\",\n        \"./dist/api.d.cts\"\n      ],\n      \"import\": \"./dist/api.js\",\n      \"require\": \"./dist/api.cjs\"\n    },\n    \"./plugin\": {\n      \"types\": [\n        \"./dist/plugin.d.ts\",\n        \"./dist/plugin.d.cts\"\n      ],\n      \"import\": \"./dist/plugin.js\",\n      \"require\": \"./dist/plugin.cjs\"\n    },\n    \"./vite-env-override-components\": {\n      \"types\": \"./dist/vite-env-override-components\"\n    },\n    \"./package.json\": \"./package.json\"\n  },\n  \"main\": \"./dist/index.cjs\",\n  \"module\": \"./dist/index.js\",\n  \"types\": \"./dist/vite-env-override-components.d.ts\",\n  \"bin\": {\n    \"i18n-typescript\": \"./dist/cli.js\"\n  },\n  \"files\": [\n    \"dist\"\n  ],\n  \"scripts\": {\n    \"build\": \"tsup --tsconfig tsconfig.json --clean\",\n    \"dev\": \"tsup --watch\",\n    \"dev:debug\": \"tsup --watch --sourcemap inline\",\n    \"lint\": \"eslint .\",\n    \"lint:fix\": \"eslint . --fix\",\n    \"typecheck\": \"tsc --noEmit\",\n    \"prepublishOnly\": \"npm run build\",\n    \"release\": \"npm run build && npm publish\",\n    \"test\": \"vitest\"\n  },\n  \"peerDependencies\": {\n    \"vite\": \">=4.0.0 || ^7.0.0\"\n  },\n  \"peerDependenciesMeta\": {},\n  \"dependencies\": {\n    \"eslint-import-resolver-typescript\": \"^4.4.4\",\n    \"eslint-plugin-import\": \"^2.32.0\",\n    \"eslint-plugin-vue\": \"~10.4.0\",\n    \"fast-glob\": \"^3.3.3\",\n    \"@vue/language-server\": \"^3.1.1\",\n    \"@intlify/devtools-types\": \"^11.1.12\",\n    \"vue-i18n\": \"^11.1.12\"\n  },\n  \"devDependencies\": {\n    \"@eslint/js\": \"^9.38.0\",\n    \"@microsoft/api-extractor\": \"^7.53.3\",\n    \"@types/node\": \"^24.9.1\",\n    \"@typescript-eslint/eslint-plugin\": \"^8.46.2\",\n    \"@typescript-eslint/parser\": \"^8.46.2\",\n    \"@vitejs/plugin-vue\": \"^6.0.1\",\n    \"chokidar\": \"^4.0.3\",\n    \"eslint\": \"^9.38.0\",\n    \"globals\": \"^16.4.0\",\n    \"tsup\": \"^8.5.0\",\n    \"typescript\": \"^5.9.3\",\n    \"vite\": \"^7.1.12\",\n    \"vitest\": \"^3.2.4\",\n    \"vue-tsc\": \"^3.1.1\"\n  },\n  \"engines\": {\n    \"node\": \"^20.19.0 || >=22.12.0\"\n  },\n  \"publishConfig\": {\n    \"access\": \"public\"\n  }\n}\n","import { stat, lstat, readdir, realpath } from 'node:fs/promises';\nimport { Readable } from 'node:stream';\nimport { resolve as presolve, relative as prelative, join as pjoin, sep as psep } from 'node:path';\nexport const EntryTypes = {\n    FILE_TYPE: 'files',\n    DIR_TYPE: 'directories',\n    FILE_DIR_TYPE: 'files_directories',\n    EVERYTHING_TYPE: 'all',\n};\nconst defaultOptions = {\n    root: '.',\n    fileFilter: (_entryInfo) => true,\n    directoryFilter: (_entryInfo) => true,\n    type: EntryTypes.FILE_TYPE,\n    lstat: false,\n    depth: 2147483648,\n    alwaysStat: false,\n    highWaterMark: 4096,\n};\nObject.freeze(defaultOptions);\nconst RECURSIVE_ERROR_CODE = 'READDIRP_RECURSIVE_ERROR';\nconst NORMAL_FLOW_ERRORS = new Set(['ENOENT', 'EPERM', 'EACCES', 'ELOOP', RECURSIVE_ERROR_CODE]);\nconst ALL_TYPES = [\n    EntryTypes.DIR_TYPE,\n    EntryTypes.EVERYTHING_TYPE,\n    EntryTypes.FILE_DIR_TYPE,\n    EntryTypes.FILE_TYPE,\n];\nconst DIR_TYPES = new Set([\n    EntryTypes.DIR_TYPE,\n    EntryTypes.EVERYTHING_TYPE,\n    EntryTypes.FILE_DIR_TYPE,\n]);\nconst FILE_TYPES = new Set([\n    EntryTypes.EVERYTHING_TYPE,\n    EntryTypes.FILE_DIR_TYPE,\n    EntryTypes.FILE_TYPE,\n]);\nconst isNormalFlowError = (error) => NORMAL_FLOW_ERRORS.has(error.code);\nconst wantBigintFsStats = process.platform === 'win32';\nconst emptyFn = (_entryInfo) => true;\nconst normalizeFilter = (filter) => {\n    if (filter === undefined)\n        return emptyFn;\n    if (typeof filter === 'function')\n        return filter;\n    if (typeof filter === 'string') {\n        const fl = filter.trim();\n        return (entry) => entry.basename === fl;\n    }\n    if (Array.isArray(filter)) {\n        const trItems = filter.map((item) => item.trim());\n        return (entry) => trItems.some((f) => entry.basename === f);\n    }\n    return emptyFn;\n};\n/** Readable readdir stream, emitting new files as they're being listed. */\nexport class ReaddirpStream extends Readable {\n    constructor(options = {}) {\n        super({\n            objectMode: true,\n            autoDestroy: true,\n            highWaterMark: options.highWaterMark,\n        });\n        const opts = { ...defaultOptions, ...options };\n        const { root, type } = opts;\n        this._fileFilter = normalizeFilter(opts.fileFilter);\n        this._directoryFilter = normalizeFilter(opts.directoryFilter);\n        const statMethod = opts.lstat ? lstat : stat;\n        // Use bigint stats if it's windows and stat() supports options (node 10+).\n        if (wantBigintFsStats) {\n            this._stat = (path) => statMethod(path, { bigint: true });\n        }\n        else {\n            this._stat = statMethod;\n        }\n        this._maxDepth = opts.depth ?? defaultOptions.depth;\n        this._wantsDir = type ? DIR_TYPES.has(type) : false;\n        this._wantsFile = type ? FILE_TYPES.has(type) : false;\n        this._wantsEverything = type === EntryTypes.EVERYTHING_TYPE;\n        this._root = presolve(root);\n        this._isDirent = !opts.alwaysStat;\n        this._statsProp = this._isDirent ? 'dirent' : 'stats';\n        this._rdOptions = { encoding: 'utf8', withFileTypes: this._isDirent };\n        // Launch stream with one parent, the root dir.\n        this.parents = [this._exploreDir(root, 1)];\n        this.reading = false;\n        this.parent = undefined;\n    }\n    async _read(batch) {\n        if (this.reading)\n            return;\n        this.reading = true;\n        try {\n            while (!this.destroyed && batch > 0) {\n                const par = this.parent;\n                const fil = par && par.files;\n                if (fil && fil.length > 0) {\n                    const { path, depth } = par;\n                    const slice = fil.splice(0, batch).map((dirent) => this._formatEntry(dirent, path));\n                    const awaited = await Promise.all(slice);\n                    for (const entry of awaited) {\n                        if (!entry)\n                            continue;\n                        if (this.destroyed)\n                            return;\n                        const entryType = await this._getEntryType(entry);\n                        if (entryType === 'directory' && this._directoryFilter(entry)) {\n                            if (depth <= this._maxDepth) {\n                                this.parents.push(this._exploreDir(entry.fullPath, depth + 1));\n                            }\n                            if (this._wantsDir) {\n                                this.push(entry);\n                                batch--;\n                            }\n                        }\n                        else if ((entryType === 'file' || this._includeAsFile(entry)) &&\n                            this._fileFilter(entry)) {\n                            if (this._wantsFile) {\n                                this.push(entry);\n                                batch--;\n                            }\n                        }\n                    }\n                }\n                else {\n                    const parent = this.parents.pop();\n                    if (!parent) {\n                        this.push(null);\n                        break;\n                    }\n                    this.parent = await parent;\n                    if (this.destroyed)\n                        return;\n                }\n            }\n        }\n        catch (error) {\n            this.destroy(error);\n        }\n        finally {\n            this.reading = false;\n        }\n    }\n    async _exploreDir(path, depth) {\n        let files;\n        try {\n            files = await readdir(path, this._rdOptions);\n        }\n        catch (error) {\n            this._onError(error);\n        }\n        return { files, depth, path };\n    }\n    async _formatEntry(dirent, path) {\n        let entry;\n        const basename = this._isDirent ? dirent.name : dirent;\n        try {\n            const fullPath = presolve(pjoin(path, basename));\n            entry = { path: prelative(this._root, fullPath), fullPath, basename };\n            entry[this._statsProp] = this._isDirent ? dirent : await this._stat(fullPath);\n        }\n        catch (err) {\n            this._onError(err);\n            return;\n        }\n        return entry;\n    }\n    _onError(err) {\n        if (isNormalFlowError(err) && !this.destroyed) {\n            this.emit('warn', err);\n        }\n        else {\n            this.destroy(err);\n        }\n    }\n    async _getEntryType(entry) {\n        // entry may be undefined, because a warning or an error were emitted\n        // and the statsProp is undefined\n        if (!entry && this._statsProp in entry) {\n            return '';\n        }\n        const stats = entry[this._statsProp];\n        if (stats.isFile())\n            return 'file';\n        if (stats.isDirectory())\n            return 'directory';\n        if (stats && stats.isSymbolicLink()) {\n            const full = entry.fullPath;\n            try {\n                const entryRealPath = await realpath(full);\n                const entryRealPathStats = await lstat(entryRealPath);\n                if (entryRealPathStats.isFile()) {\n                    return 'file';\n                }\n                if (entryRealPathStats.isDirectory()) {\n                    const len = entryRealPath.length;\n                    if (full.startsWith(entryRealPath) && full.substr(len, 1) === psep) {\n                        const recursiveError = new Error(`Circular symlink detected: \"${full}\" points to \"${entryRealPath}\"`);\n                        // @ts-ignore\n                        recursiveError.code = RECURSIVE_ERROR_CODE;\n                        return this._onError(recursiveError);\n                    }\n                    return 'directory';\n                }\n            }\n            catch (error) {\n                this._onError(error);\n                return '';\n            }\n        }\n    }\n    _includeAsFile(entry) {\n        const stats = entry && entry[this._statsProp];\n        return stats && this._wantsEverything && !stats.isDirectory();\n    }\n}\n/**\n * Streaming version: Reads all files and directories in given root recursively.\n * Consumes ~constant small amount of RAM.\n * @param root Root directory\n * @param options Options to specify root (start directory), filters and recursion depth\n */\nexport function readdirp(root, options = {}) {\n    // @ts-ignore\n    let type = options.entryType || options.type;\n    if (type === 'both')\n        type = EntryTypes.FILE_DIR_TYPE; // backwards-compatibility\n    if (type)\n        options.type = type;\n    if (!root) {\n        throw new Error('readdirp: root argument is required. Usage: readdirp(root, options)');\n    }\n    else if (typeof root !== 'string') {\n        throw new TypeError('readdirp: root argument must be a string. Usage: readdirp(root, options)');\n    }\n    else if (type && !ALL_TYPES.includes(type)) {\n        throw new Error(`readdirp: Invalid type passed. Use one of ${ALL_TYPES.join(', ')}`);\n    }\n    options.root = root;\n    return new ReaddirpStream(options);\n}\n/**\n * Promise version: Reads all files and directories in given root recursively.\n * Compared to streaming version, will consume a lot of RAM e.g. when 1 million files are listed.\n * @returns array of paths and their entry infos\n */\nexport function readdirpPromise(root, options = {}) {\n    return new Promise((resolve, reject) => {\n        const files = [];\n        readdirp(root, options)\n            .on('data', (entry) => files.push(entry))\n            .on('end', () => resolve(files))\n            .on('error', (error) => reject(error));\n    });\n}\nexport default readdirp;\n","import { watchFile, unwatchFile, watch as fs_watch } from 'fs';\nimport { open, stat, lstat, realpath as fsrealpath } from 'fs/promises';\nimport * as sysPath from 'path';\nimport { type as osType } from 'os';\nexport const STR_DATA = 'data';\nexport const STR_END = 'end';\nexport const STR_CLOSE = 'close';\nexport const EMPTY_FN = () => { };\nexport const IDENTITY_FN = (val) => val;\nconst pl = process.platform;\nexport const isWindows = pl === 'win32';\nexport const isMacos = pl === 'darwin';\nexport const isLinux = pl === 'linux';\nexport const isFreeBSD = pl === 'freebsd';\nexport const isIBMi = osType() === 'OS400';\nexport const EVENTS = {\n    ALL: 'all',\n    READY: 'ready',\n    ADD: 'add',\n    CHANGE: 'change',\n    ADD_DIR: 'addDir',\n    UNLINK: 'unlink',\n    UNLINK_DIR: 'unlinkDir',\n    RAW: 'raw',\n    ERROR: 'error',\n};\nconst EV = EVENTS;\nconst THROTTLE_MODE_WATCH = 'watch';\nconst statMethods = { lstat, stat };\nconst KEY_LISTENERS = 'listeners';\nconst KEY_ERR = 'errHandlers';\nconst KEY_RAW = 'rawEmitters';\nconst HANDLER_KEYS = [KEY_LISTENERS, KEY_ERR, KEY_RAW];\n// prettier-ignore\nconst binaryExtensions = new Set([\n    '3dm', '3ds', '3g2', '3gp', '7z', 'a', 'aac', 'adp', 'afdesign', 'afphoto', 'afpub', 'ai',\n    'aif', 'aiff', 'alz', 'ape', 'apk', 'appimage', 'ar', 'arj', 'asf', 'au', 'avi',\n    'bak', 'baml', 'bh', 'bin', 'bk', 'bmp', 'btif', 'bz2', 'bzip2',\n    'cab', 'caf', 'cgm', 'class', 'cmx', 'cpio', 'cr2', 'cur', 'dat', 'dcm', 'deb', 'dex', 'djvu',\n    'dll', 'dmg', 'dng', 'doc', 'docm', 'docx', 'dot', 'dotm', 'dra', 'DS_Store', 'dsk', 'dts',\n    'dtshd', 'dvb', 'dwg', 'dxf',\n    'ecelp4800', 'ecelp7470', 'ecelp9600', 'egg', 'eol', 'eot', 'epub', 'exe',\n    'f4v', 'fbs', 'fh', 'fla', 'flac', 'flatpak', 'fli', 'flv', 'fpx', 'fst', 'fvt',\n    'g3', 'gh', 'gif', 'graffle', 'gz', 'gzip',\n    'h261', 'h263', 'h264', 'icns', 'ico', 'ief', 'img', 'ipa', 'iso',\n    'jar', 'jpeg', 'jpg', 'jpgv', 'jpm', 'jxr', 'key', 'ktx',\n    'lha', 'lib', 'lvp', 'lz', 'lzh', 'lzma', 'lzo',\n    'm3u', 'm4a', 'm4v', 'mar', 'mdi', 'mht', 'mid', 'midi', 'mj2', 'mka', 'mkv', 'mmr', 'mng',\n    'mobi', 'mov', 'movie', 'mp3',\n    'mp4', 'mp4a', 'mpeg', 'mpg', 'mpga', 'mxu',\n    'nef', 'npx', 'numbers', 'nupkg',\n    'o', 'odp', 'ods', 'odt', 'oga', 'ogg', 'ogv', 'otf', 'ott',\n    'pages', 'pbm', 'pcx', 'pdb', 'pdf', 'pea', 'pgm', 'pic', 'png', 'pnm', 'pot', 'potm',\n    'potx', 'ppa', 'ppam',\n    'ppm', 'pps', 'ppsm', 'ppsx', 'ppt', 'pptm', 'pptx', 'psd', 'pya', 'pyc', 'pyo', 'pyv',\n    'qt',\n    'rar', 'ras', 'raw', 'resources', 'rgb', 'rip', 'rlc', 'rmf', 'rmvb', 'rpm', 'rtf', 'rz',\n    's3m', 's7z', 'scpt', 'sgi', 'shar', 'snap', 'sil', 'sketch', 'slk', 'smv', 'snk', 'so',\n    'stl', 'suo', 'sub', 'swf',\n    'tar', 'tbz', 'tbz2', 'tga', 'tgz', 'thmx', 'tif', 'tiff', 'tlz', 'ttc', 'ttf', 'txz',\n    'udf', 'uvh', 'uvi', 'uvm', 'uvp', 'uvs', 'uvu',\n    'viv', 'vob',\n    'war', 'wav', 'wax', 'wbmp', 'wdp', 'weba', 'webm', 'webp', 'whl', 'wim', 'wm', 'wma',\n    'wmv', 'wmx', 'woff', 'woff2', 'wrm', 'wvx',\n    'xbm', 'xif', 'xla', 'xlam', 'xls', 'xlsb', 'xlsm', 'xlsx', 'xlt', 'xltm', 'xltx', 'xm',\n    'xmind', 'xpi', 'xpm', 'xwd', 'xz',\n    'z', 'zip', 'zipx',\n]);\nconst isBinaryPath = (filePath) => binaryExtensions.has(sysPath.extname(filePath).slice(1).toLowerCase());\n// TODO: emit errors properly. Example: EMFILE on Macos.\nconst foreach = (val, fn) => {\n    if (val instanceof Set) {\n        val.forEach(fn);\n    }\n    else {\n        fn(val);\n    }\n};\nconst addAndConvert = (main, prop, item) => {\n    let container = main[prop];\n    if (!(container instanceof Set)) {\n        main[prop] = container = new Set([container]);\n    }\n    container.add(item);\n};\nconst clearItem = (cont) => (key) => {\n    const set = cont[key];\n    if (set instanceof Set) {\n        set.clear();\n    }\n    else {\n        delete cont[key];\n    }\n};\nconst delFromSet = (main, prop, item) => {\n    const container = main[prop];\n    if (container instanceof Set) {\n        container.delete(item);\n    }\n    else if (container === item) {\n        delete main[prop];\n    }\n};\nconst isEmptySet = (val) => (val instanceof Set ? val.size === 0 : !val);\nconst FsWatchInstances = new Map();\n/**\n * Instantiates the fs_watch interface\n * @param path to be watched\n * @param options to be passed to fs_watch\n * @param listener main event handler\n * @param errHandler emits info about errors\n * @param emitRaw emits raw event data\n * @returns {NativeFsWatcher}\n */\nfunction createFsWatchInstance(path, options, listener, errHandler, emitRaw) {\n    const handleEvent = (rawEvent, evPath) => {\n        listener(path);\n        emitRaw(rawEvent, evPath, { watchedPath: path });\n        // emit based on events occurring for files from a directory's watcher in\n        // case the file's watcher misses it (and rely on throttling to de-dupe)\n        if (evPath && path !== evPath) {\n            fsWatchBroadcast(sysPath.resolve(path, evPath), KEY_LISTENERS, sysPath.join(path, evPath));\n        }\n    };\n    try {\n        return fs_watch(path, {\n            persistent: options.persistent,\n        }, handleEvent);\n    }\n    catch (error) {\n        errHandler(error);\n        return undefined;\n    }\n}\n/**\n * Helper for passing fs_watch event data to a collection of listeners\n * @param fullPath absolute path bound to fs_watch instance\n */\nconst fsWatchBroadcast = (fullPath, listenerType, val1, val2, val3) => {\n    const cont = FsWatchInstances.get(fullPath);\n    if (!cont)\n        return;\n    foreach(cont[listenerType], (listener) => {\n        listener(val1, val2, val3);\n    });\n};\n/**\n * Instantiates the fs_watch interface or binds listeners\n * to an existing one covering the same file system entry\n * @param path\n * @param fullPath absolute path\n * @param options to be passed to fs_watch\n * @param handlers container for event listener functions\n */\nconst setFsWatchListener = (path, fullPath, options, handlers) => {\n    const { listener, errHandler, rawEmitter } = handlers;\n    let cont = FsWatchInstances.get(fullPath);\n    let watcher;\n    if (!options.persistent) {\n        watcher = createFsWatchInstance(path, options, listener, errHandler, rawEmitter);\n        if (!watcher)\n            return;\n        return watcher.close.bind(watcher);\n    }\n    if (cont) {\n        addAndConvert(cont, KEY_LISTENERS, listener);\n        addAndConvert(cont, KEY_ERR, errHandler);\n        addAndConvert(cont, KEY_RAW, rawEmitter);\n    }\n    else {\n        watcher = createFsWatchInstance(path, options, fsWatchBroadcast.bind(null, fullPath, KEY_LISTENERS), errHandler, // no need to use broadcast here\n        fsWatchBroadcast.bind(null, fullPath, KEY_RAW));\n        if (!watcher)\n            return;\n        watcher.on(EV.ERROR, async (error) => {\n            const broadcastErr = fsWatchBroadcast.bind(null, fullPath, KEY_ERR);\n            if (cont)\n                cont.watcherUnusable = true; // documented since Node 10.4.1\n            // Workaround for https://github.com/joyent/node/issues/4337\n            if (isWindows && error.code === 'EPERM') {\n                try {\n                    const fd = await open(path, 'r');\n                    await fd.close();\n                    broadcastErr(error);\n                }\n                catch (err) {\n                    // do nothing\n                }\n            }\n            else {\n                broadcastErr(error);\n            }\n        });\n        cont = {\n            listeners: listener,\n            errHandlers: errHandler,\n            rawEmitters: rawEmitter,\n            watcher,\n        };\n        FsWatchInstances.set(fullPath, cont);\n    }\n    // const index = cont.listeners.indexOf(listener);\n    // removes this instance's listeners and closes the underlying fs_watch\n    // instance if there are no more listeners left\n    return () => {\n        delFromSet(cont, KEY_LISTENERS, listener);\n        delFromSet(cont, KEY_ERR, errHandler);\n        delFromSet(cont, KEY_RAW, rawEmitter);\n        if (isEmptySet(cont.listeners)) {\n            // Check to protect against issue gh-730.\n            // if (cont.watcherUnusable) {\n            cont.watcher.close();\n            // }\n            FsWatchInstances.delete(fullPath);\n            HANDLER_KEYS.forEach(clearItem(cont));\n            // @ts-ignore\n            cont.watcher = undefined;\n            Object.freeze(cont);\n        }\n    };\n};\n// fs_watchFile helpers\n// object to hold per-process fs_watchFile instances\n// (may be shared across chokidar FSWatcher instances)\nconst FsWatchFileInstances = new Map();\n/**\n * Instantiates the fs_watchFile interface or binds listeners\n * to an existing one covering the same file system entry\n * @param path to be watched\n * @param fullPath absolute path\n * @param options options to be passed to fs_watchFile\n * @param handlers container for event listener functions\n * @returns closer\n */\nconst setFsWatchFileListener = (path, fullPath, options, handlers) => {\n    const { listener, rawEmitter } = handlers;\n    let cont = FsWatchFileInstances.get(fullPath);\n    // let listeners = new Set();\n    // let rawEmitters = new Set();\n    const copts = cont && cont.options;\n    if (copts && (copts.persistent < options.persistent || copts.interval > options.interval)) {\n        // \"Upgrade\" the watcher to persistence or a quicker interval.\n        // This creates some unlikely edge case issues if the user mixes\n        // settings in a very weird way, but solving for those cases\n        // doesn't seem worthwhile for the added complexity.\n        // listeners = cont.listeners;\n        // rawEmitters = cont.rawEmitters;\n        unwatchFile(fullPath);\n        cont = undefined;\n    }\n    if (cont) {\n        addAndConvert(cont, KEY_LISTENERS, listener);\n        addAndConvert(cont, KEY_RAW, rawEmitter);\n    }\n    else {\n        // TODO\n        // listeners.add(listener);\n        // rawEmitters.add(rawEmitter);\n        cont = {\n            listeners: listener,\n            rawEmitters: rawEmitter,\n            options,\n            watcher: watchFile(fullPath, options, (curr, prev) => {\n                foreach(cont.rawEmitters, (rawEmitter) => {\n                    rawEmitter(EV.CHANGE, fullPath, { curr, prev });\n                });\n                const currmtime = curr.mtimeMs;\n                if (curr.size !== prev.size || currmtime > prev.mtimeMs || currmtime === 0) {\n                    foreach(cont.listeners, (listener) => listener(path, curr));\n                }\n            }),\n        };\n        FsWatchFileInstances.set(fullPath, cont);\n    }\n    // const index = cont.listeners.indexOf(listener);\n    // Removes this instance's listeners and closes the underlying fs_watchFile\n    // instance if there are no more listeners left.\n    return () => {\n        delFromSet(cont, KEY_LISTENERS, listener);\n        delFromSet(cont, KEY_RAW, rawEmitter);\n        if (isEmptySet(cont.listeners)) {\n            FsWatchFileInstances.delete(fullPath);\n            unwatchFile(fullPath);\n            cont.options = cont.watcher = undefined;\n            Object.freeze(cont);\n        }\n    };\n};\n/**\n * @mixin\n */\nexport class NodeFsHandler {\n    constructor(fsW) {\n        this.fsw = fsW;\n        this._boundHandleError = (error) => fsW._handleError(error);\n    }\n    /**\n     * Watch file for changes with fs_watchFile or fs_watch.\n     * @param path to file or dir\n     * @param listener on fs change\n     * @returns closer for the watcher instance\n     */\n    _watchWithNodeFs(path, listener) {\n        const opts = this.fsw.options;\n        const directory = sysPath.dirname(path);\n        const basename = sysPath.basename(path);\n        const parent = this.fsw._getWatchedDir(directory);\n        parent.add(basename);\n        const absolutePath = sysPath.resolve(path);\n        const options = {\n            persistent: opts.persistent,\n        };\n        if (!listener)\n            listener = EMPTY_FN;\n        let closer;\n        if (opts.usePolling) {\n            const enableBin = opts.interval !== opts.binaryInterval;\n            options.interval = enableBin && isBinaryPath(basename) ? opts.binaryInterval : opts.interval;\n            closer = setFsWatchFileListener(path, absolutePath, options, {\n                listener,\n                rawEmitter: this.fsw._emitRaw,\n            });\n        }\n        else {\n            closer = setFsWatchListener(path, absolutePath, options, {\n                listener,\n                errHandler: this._boundHandleError,\n                rawEmitter: this.fsw._emitRaw,\n            });\n        }\n        return closer;\n    }\n    /**\n     * Watch a file and emit add event if warranted.\n     * @returns closer for the watcher instance\n     */\n    _handleFile(file, stats, initialAdd) {\n        if (this.fsw.closed) {\n            return;\n        }\n        const dirname = sysPath.dirname(file);\n        const basename = sysPath.basename(file);\n        const parent = this.fsw._getWatchedDir(dirname);\n        // stats is always present\n        let prevStats = stats;\n        // if the file is already being watched, do nothing\n        if (parent.has(basename))\n            return;\n        const listener = async (path, newStats) => {\n            if (!this.fsw._throttle(THROTTLE_MODE_WATCH, file, 5))\n                return;\n            if (!newStats || newStats.mtimeMs === 0) {\n                try {\n                    const newStats = await stat(file);\n                    if (this.fsw.closed)\n                        return;\n                    // Check that change event was not fired because of changed only accessTime.\n                    const at = newStats.atimeMs;\n                    const mt = newStats.mtimeMs;\n                    if (!at || at <= mt || mt !== prevStats.mtimeMs) {\n                        this.fsw._emit(EV.CHANGE, file, newStats);\n                    }\n                    if ((isMacos || isLinux || isFreeBSD) && prevStats.ino !== newStats.ino) {\n                        this.fsw._closeFile(path);\n                        prevStats = newStats;\n                        const closer = this._watchWithNodeFs(file, listener);\n                        if (closer)\n                            this.fsw._addPathCloser(path, closer);\n                    }\n                    else {\n                        prevStats = newStats;\n                    }\n                }\n                catch (error) {\n                    // Fix issues where mtime is null but file is still present\n                    this.fsw._remove(dirname, basename);\n                }\n                // add is about to be emitted if file not already tracked in parent\n            }\n            else if (parent.has(basename)) {\n                // Check that change event was not fired because of changed only accessTime.\n                const at = newStats.atimeMs;\n                const mt = newStats.mtimeMs;\n                if (!at || at <= mt || mt !== prevStats.mtimeMs) {\n                    this.fsw._emit(EV.CHANGE, file, newStats);\n                }\n                prevStats = newStats;\n            }\n        };\n        // kick off the watcher\n        const closer = this._watchWithNodeFs(file, listener);\n        // emit an add event if we're supposed to\n        if (!(initialAdd && this.fsw.options.ignoreInitial) && this.fsw._isntIgnored(file)) {\n            if (!this.fsw._throttle(EV.ADD, file, 0))\n                return;\n            this.fsw._emit(EV.ADD, file, stats);\n        }\n        return closer;\n    }\n    /**\n     * Handle symlinks encountered while reading a dir.\n     * @param entry returned by readdirp\n     * @param directory path of dir being read\n     * @param path of this item\n     * @param item basename of this item\n     * @returns true if no more processing is needed for this entry.\n     */\n    async _handleSymlink(entry, directory, path, item) {\n        if (this.fsw.closed) {\n            return;\n        }\n        const full = entry.fullPath;\n        const dir = this.fsw._getWatchedDir(directory);\n        if (!this.fsw.options.followSymlinks) {\n            // watch symlink directly (don't follow) and detect changes\n            this.fsw._incrReadyCount();\n            let linkPath;\n            try {\n                linkPath = await fsrealpath(path);\n            }\n            catch (e) {\n                this.fsw._emitReady();\n                return true;\n            }\n            if (this.fsw.closed)\n                return;\n            if (dir.has(item)) {\n                if (this.fsw._symlinkPaths.get(full) !== linkPath) {\n                    this.fsw._symlinkPaths.set(full, linkPath);\n                    this.fsw._emit(EV.CHANGE, path, entry.stats);\n                }\n            }\n            else {\n                dir.add(item);\n                this.fsw._symlinkPaths.set(full, linkPath);\n                this.fsw._emit(EV.ADD, path, entry.stats);\n            }\n            this.fsw._emitReady();\n            return true;\n        }\n        // don't follow the same symlink more than once\n        if (this.fsw._symlinkPaths.has(full)) {\n            return true;\n        }\n        this.fsw._symlinkPaths.set(full, true);\n    }\n    _handleRead(directory, initialAdd, wh, target, dir, depth, throttler) {\n        // Normalize the directory name on Windows\n        directory = sysPath.join(directory, '');\n        throttler = this.fsw._throttle('readdir', directory, 1000);\n        if (!throttler)\n            return;\n        const previous = this.fsw._getWatchedDir(wh.path);\n        const current = new Set();\n        let stream = this.fsw._readdirp(directory, {\n            fileFilter: (entry) => wh.filterPath(entry),\n            directoryFilter: (entry) => wh.filterDir(entry),\n        });\n        if (!stream)\n            return;\n        stream\n            .on(STR_DATA, async (entry) => {\n            if (this.fsw.closed) {\n                stream = undefined;\n                return;\n            }\n            const item = entry.path;\n            let path = sysPath.join(directory, item);\n            current.add(item);\n            if (entry.stats.isSymbolicLink() &&\n                (await this._handleSymlink(entry, directory, path, item))) {\n                return;\n            }\n            if (this.fsw.closed) {\n                stream = undefined;\n                return;\n            }\n            // Files that present in current directory snapshot\n            // but absent in previous are added to watch list and\n            // emit `add` event.\n            if (item === target || (!target && !previous.has(item))) {\n                this.fsw._incrReadyCount();\n                // ensure relativeness of path is preserved in case of watcher reuse\n                path = sysPath.join(dir, sysPath.relative(dir, path));\n                this._addToNodeFs(path, initialAdd, wh, depth + 1);\n            }\n        })\n            .on(EV.ERROR, this._boundHandleError);\n        return new Promise((resolve, reject) => {\n            if (!stream)\n                return reject();\n            stream.once(STR_END, () => {\n                if (this.fsw.closed) {\n                    stream = undefined;\n                    return;\n                }\n                const wasThrottled = throttler ? throttler.clear() : false;\n                resolve(undefined);\n                // Files that absent in current directory snapshot\n                // but present in previous emit `remove` event\n                // and are removed from @watched[directory].\n                previous\n                    .getChildren()\n                    .filter((item) => {\n                    return item !== directory && !current.has(item);\n                })\n                    .forEach((item) => {\n                    this.fsw._remove(directory, item);\n                });\n                stream = undefined;\n                // one more time for any missed in case changes came in extremely quickly\n                if (wasThrottled)\n                    this._handleRead(directory, false, wh, target, dir, depth, throttler);\n            });\n        });\n    }\n    /**\n     * Read directory to add / remove files from `@watched` list and re-read it on change.\n     * @param dir fs path\n     * @param stats\n     * @param initialAdd\n     * @param depth relative to user-supplied path\n     * @param target child path targeted for watch\n     * @param wh Common watch helpers for this path\n     * @param realpath\n     * @returns closer for the watcher instance.\n     */\n    async _handleDir(dir, stats, initialAdd, depth, target, wh, realpath) {\n        const parentDir = this.fsw._getWatchedDir(sysPath.dirname(dir));\n        const tracked = parentDir.has(sysPath.basename(dir));\n        if (!(initialAdd && this.fsw.options.ignoreInitial) && !target && !tracked) {\n            this.fsw._emit(EV.ADD_DIR, dir, stats);\n        }\n        // ensure dir is tracked (harmless if redundant)\n        parentDir.add(sysPath.basename(dir));\n        this.fsw._getWatchedDir(dir);\n        let throttler;\n        let closer;\n        const oDepth = this.fsw.options.depth;\n        if ((oDepth == null || depth <= oDepth) && !this.fsw._symlinkPaths.has(realpath)) {\n            if (!target) {\n                await this._handleRead(dir, initialAdd, wh, target, dir, depth, throttler);\n                if (this.fsw.closed)\n                    return;\n            }\n            closer = this._watchWithNodeFs(dir, (dirPath, stats) => {\n                // if current directory is removed, do nothing\n                if (stats && stats.mtimeMs === 0)\n                    return;\n                this._handleRead(dirPath, false, wh, target, dir, depth, throttler);\n            });\n        }\n        return closer;\n    }\n    /**\n     * Handle added file, directory, or glob pattern.\n     * Delegates call to _handleFile / _handleDir after checks.\n     * @param path to file or ir\n     * @param initialAdd was the file added at watch instantiation?\n     * @param priorWh depth relative to user-supplied path\n     * @param depth Child path actually targeted for watch\n     * @param target Child path actually targeted for watch\n     */\n    async _addToNodeFs(path, initialAdd, priorWh, depth, target) {\n        const ready = this.fsw._emitReady;\n        if (this.fsw._isIgnored(path) || this.fsw.closed) {\n            ready();\n            return false;\n        }\n        const wh = this.fsw._getWatchHelpers(path);\n        if (priorWh) {\n            wh.filterPath = (entry) => priorWh.filterPath(entry);\n            wh.filterDir = (entry) => priorWh.filterDir(entry);\n        }\n        // evaluate what is at the path we're being asked to watch\n        try {\n            const stats = await statMethods[wh.statMethod](wh.watchPath);\n            if (this.fsw.closed)\n                return;\n            if (this.fsw._isIgnored(wh.watchPath, stats)) {\n                ready();\n                return false;\n            }\n            const follow = this.fsw.options.followSymlinks;\n            let closer;\n            if (stats.isDirectory()) {\n                const absPath = sysPath.resolve(path);\n                const targetPath = follow ? await fsrealpath(path) : path;\n                if (this.fsw.closed)\n                    return;\n                closer = await this._handleDir(wh.watchPath, stats, initialAdd, depth, target, wh, targetPath);\n                if (this.fsw.closed)\n                    return;\n                // preserve this symlink's target path\n                if (absPath !== targetPath && targetPath !== undefined) {\n                    this.fsw._symlinkPaths.set(absPath, targetPath);\n                }\n            }\n            else if (stats.isSymbolicLink()) {\n                const targetPath = follow ? await fsrealpath(path) : path;\n                if (this.fsw.closed)\n                    return;\n                const parent = sysPath.dirname(wh.watchPath);\n                this.fsw._getWatchedDir(parent).add(wh.watchPath);\n                this.fsw._emit(EV.ADD, wh.watchPath, stats);\n                closer = await this._handleDir(parent, stats, initialAdd, depth, path, wh, targetPath);\n                if (this.fsw.closed)\n                    return;\n                // preserve this symlink's target path\n                if (targetPath !== undefined) {\n                    this.fsw._symlinkPaths.set(sysPath.resolve(path), targetPath);\n                }\n            }\n            else {\n                closer = this._handleFile(wh.watchPath, stats, initialAdd);\n            }\n            ready();\n            if (closer)\n                this.fsw._addPathCloser(path, closer);\n            return false;\n        }\n        catch (error) {\n            if (this.fsw._handleError(error)) {\n                ready();\n                return path;\n            }\n        }\n    }\n}\n","/*! chokidar - MIT License (c) 2012 Paul Miller (paulmillr.com) */\nimport { stat as statcb } from 'fs';\nimport { stat, readdir } from 'fs/promises';\nimport { EventEmitter } from 'events';\nimport * as sysPath from 'path';\nimport { readdirp } from 'readdirp';\nimport { NodeFsHandler, EVENTS as EV, isWindows, isIBMi, EMPTY_FN, STR_CLOSE, STR_END, } from './handler.js';\nconst SLASH = '/';\nconst SLASH_SLASH = '//';\nconst ONE_DOT = '.';\nconst TWO_DOTS = '..';\nconst STRING_TYPE = 'string';\nconst BACK_SLASH_RE = /\\\\/g;\nconst DOUBLE_SLASH_RE = /\\/\\//;\nconst DOT_RE = /\\..*\\.(sw[px])$|~$|\\.subl.*\\.tmp/;\nconst REPLACER_RE = /^\\.[/\\\\]/;\nfunction arrify(item) {\n    return Array.isArray(item) ? item : [item];\n}\nconst isMatcherObject = (matcher) => typeof matcher === 'object' && matcher !== null && !(matcher instanceof RegExp);\nfunction createPattern(matcher) {\n    if (typeof matcher === 'function')\n        return matcher;\n    if (typeof matcher === 'string')\n        return (string) => matcher === string;\n    if (matcher instanceof RegExp)\n        return (string) => matcher.test(string);\n    if (typeof matcher === 'object' && matcher !== null) {\n        return (string) => {\n            if (matcher.path === string)\n                return true;\n            if (matcher.recursive) {\n                const relative = sysPath.relative(matcher.path, string);\n                if (!relative) {\n                    return false;\n                }\n                return !relative.startsWith('..') && !sysPath.isAbsolute(relative);\n            }\n            return false;\n        };\n    }\n    return () => false;\n}\nfunction normalizePath(path) {\n    if (typeof path !== 'string')\n        throw new Error('string expected');\n    path = sysPath.normalize(path);\n    path = path.replace(/\\\\/g, '/');\n    let prepend = false;\n    if (path.startsWith('//'))\n        prepend = true;\n    const DOUBLE_SLASH_RE = /\\/\\//;\n    while (path.match(DOUBLE_SLASH_RE))\n        path = path.replace(DOUBLE_SLASH_RE, '/');\n    if (prepend)\n        path = '/' + path;\n    return path;\n}\nfunction matchPatterns(patterns, testString, stats) {\n    const path = normalizePath(testString);\n    for (let index = 0; index < patterns.length; index++) {\n        const pattern = patterns[index];\n        if (pattern(path, stats)) {\n            return true;\n        }\n    }\n    return false;\n}\nfunction anymatch(matchers, testString) {\n    if (matchers == null) {\n        throw new TypeError('anymatch: specify first argument');\n    }\n    // Early cache for matchers.\n    const matchersArray = arrify(matchers);\n    const patterns = matchersArray.map((matcher) => createPattern(matcher));\n    if (testString == null) {\n        return (testString, stats) => {\n            return matchPatterns(patterns, testString, stats);\n        };\n    }\n    return matchPatterns(patterns, testString);\n}\nconst unifyPaths = (paths_) => {\n    const paths = arrify(paths_).flat();\n    if (!paths.every((p) => typeof p === STRING_TYPE)) {\n        throw new TypeError(`Non-string provided as watch path: ${paths}`);\n    }\n    return paths.map(normalizePathToUnix);\n};\n// If SLASH_SLASH occurs at the beginning of path, it is not replaced\n//     because \"//StoragePC/DrivePool/Movies\" is a valid network path\nconst toUnix = (string) => {\n    let str = string.replace(BACK_SLASH_RE, SLASH);\n    let prepend = false;\n    if (str.startsWith(SLASH_SLASH)) {\n        prepend = true;\n    }\n    while (str.match(DOUBLE_SLASH_RE)) {\n        str = str.replace(DOUBLE_SLASH_RE, SLASH);\n    }\n    if (prepend) {\n        str = SLASH + str;\n    }\n    return str;\n};\n// Our version of upath.normalize\n// TODO: this is not equal to path-normalize module - investigate why\nconst normalizePathToUnix = (path) => toUnix(sysPath.normalize(toUnix(path)));\n// TODO: refactor\nconst normalizeIgnored = (cwd = '') => (path) => {\n    if (typeof path === 'string') {\n        return normalizePathToUnix(sysPath.isAbsolute(path) ? path : sysPath.join(cwd, path));\n    }\n    else {\n        return path;\n    }\n};\nconst getAbsolutePath = (path, cwd) => {\n    if (sysPath.isAbsolute(path)) {\n        return path;\n    }\n    return sysPath.join(cwd, path);\n};\nconst EMPTY_SET = Object.freeze(new Set());\n/**\n * Directory entry.\n */\nclass DirEntry {\n    constructor(dir, removeWatcher) {\n        this.path = dir;\n        this._removeWatcher = removeWatcher;\n        this.items = new Set();\n    }\n    add(item) {\n        const { items } = this;\n        if (!items)\n            return;\n        if (item !== ONE_DOT && item !== TWO_DOTS)\n            items.add(item);\n    }\n    async remove(item) {\n        const { items } = this;\n        if (!items)\n            return;\n        items.delete(item);\n        if (items.size > 0)\n            return;\n        const dir = this.path;\n        try {\n            await readdir(dir);\n        }\n        catch (err) {\n            if (this._removeWatcher) {\n                this._removeWatcher(sysPath.dirname(dir), sysPath.basename(dir));\n            }\n        }\n    }\n    has(item) {\n        const { items } = this;\n        if (!items)\n            return;\n        return items.has(item);\n    }\n    getChildren() {\n        const { items } = this;\n        if (!items)\n            return [];\n        return [...items.values()];\n    }\n    dispose() {\n        this.items.clear();\n        this.path = '';\n        this._removeWatcher = EMPTY_FN;\n        this.items = EMPTY_SET;\n        Object.freeze(this);\n    }\n}\nconst STAT_METHOD_F = 'stat';\nconst STAT_METHOD_L = 'lstat';\nexport class WatchHelper {\n    constructor(path, follow, fsw) {\n        this.fsw = fsw;\n        const watchPath = path;\n        this.path = path = path.replace(REPLACER_RE, '');\n        this.watchPath = watchPath;\n        this.fullWatchPath = sysPath.resolve(watchPath);\n        this.dirParts = [];\n        this.dirParts.forEach((parts) => {\n            if (parts.length > 1)\n                parts.pop();\n        });\n        this.followSymlinks = follow;\n        this.statMethod = follow ? STAT_METHOD_F : STAT_METHOD_L;\n    }\n    entryPath(entry) {\n        return sysPath.join(this.watchPath, sysPath.relative(this.watchPath, entry.fullPath));\n    }\n    filterPath(entry) {\n        const { stats } = entry;\n        if (stats && stats.isSymbolicLink())\n            return this.filterDir(entry);\n        const resolvedPath = this.entryPath(entry);\n        // TODO: what if stats is undefined? remove !\n        return this.fsw._isntIgnored(resolvedPath, stats) && this.fsw._hasReadPermissions(stats);\n    }\n    filterDir(entry) {\n        return this.fsw._isntIgnored(this.entryPath(entry), entry.stats);\n    }\n}\n/**\n * Watches files & directories for changes. Emitted events:\n * `add`, `addDir`, `change`, `unlink`, `unlinkDir`, `all`, `error`\n *\n *     new FSWatcher()\n *       .add(directories)\n *       .on('add', path => log('File', path, 'was added'))\n */\nexport class FSWatcher extends EventEmitter {\n    // Not indenting methods for history sake; for now.\n    constructor(_opts = {}) {\n        super();\n        this.closed = false;\n        this._closers = new Map();\n        this._ignoredPaths = new Set();\n        this._throttled = new Map();\n        this._streams = new Set();\n        this._symlinkPaths = new Map();\n        this._watched = new Map();\n        this._pendingWrites = new Map();\n        this._pendingUnlinks = new Map();\n        this._readyCount = 0;\n        this._readyEmitted = false;\n        const awf = _opts.awaitWriteFinish;\n        const DEF_AWF = { stabilityThreshold: 2000, pollInterval: 100 };\n        const opts = {\n            // Defaults\n            persistent: true,\n            ignoreInitial: false,\n            ignorePermissionErrors: false,\n            interval: 100,\n            binaryInterval: 300,\n            followSymlinks: true,\n            usePolling: false,\n            // useAsync: false,\n            atomic: true, // NOTE: overwritten later (depends on usePolling)\n            ..._opts,\n            // Change format\n            ignored: _opts.ignored ? arrify(_opts.ignored) : arrify([]),\n            awaitWriteFinish: awf === true ? DEF_AWF : typeof awf === 'object' ? { ...DEF_AWF, ...awf } : false,\n        };\n        // Always default to polling on IBM i because fs.watch() is not available on IBM i.\n        if (isIBMi)\n            opts.usePolling = true;\n        // Editor atomic write normalization enabled by default with fs.watch\n        if (opts.atomic === undefined)\n            opts.atomic = !opts.usePolling;\n        // opts.atomic = typeof _opts.atomic === 'number' ? _opts.atomic : 100;\n        // Global override. Useful for developers, who need to force polling for all\n        // instances of chokidar, regardless of usage / dependency depth\n        const envPoll = process.env.CHOKIDAR_USEPOLLING;\n        if (envPoll !== undefined) {\n            const envLower = envPoll.toLowerCase();\n            if (envLower === 'false' || envLower === '0')\n                opts.usePolling = false;\n            else if (envLower === 'true' || envLower === '1')\n                opts.usePolling = true;\n            else\n                opts.usePolling = !!envLower;\n        }\n        const envInterval = process.env.CHOKIDAR_INTERVAL;\n        if (envInterval)\n            opts.interval = Number.parseInt(envInterval, 10);\n        // This is done to emit ready only once, but each 'add' will increase that?\n        let readyCalls = 0;\n        this._emitReady = () => {\n            readyCalls++;\n            if (readyCalls >= this._readyCount) {\n                this._emitReady = EMPTY_FN;\n                this._readyEmitted = true;\n                // use process.nextTick to allow time for listener to be bound\n                process.nextTick(() => this.emit(EV.READY));\n            }\n        };\n        this._emitRaw = (...args) => this.emit(EV.RAW, ...args);\n        this._boundRemove = this._remove.bind(this);\n        this.options = opts;\n        this._nodeFsHandler = new NodeFsHandler(this);\n        // You’re frozen when your heart’s not open.\n        Object.freeze(opts);\n    }\n    _addIgnoredPath(matcher) {\n        if (isMatcherObject(matcher)) {\n            // return early if we already have a deeply equal matcher object\n            for (const ignored of this._ignoredPaths) {\n                if (isMatcherObject(ignored) &&\n                    ignored.path === matcher.path &&\n                    ignored.recursive === matcher.recursive) {\n                    return;\n                }\n            }\n        }\n        this._ignoredPaths.add(matcher);\n    }\n    _removeIgnoredPath(matcher) {\n        this._ignoredPaths.delete(matcher);\n        // now find any matcher objects with the matcher as path\n        if (typeof matcher === 'string') {\n            for (const ignored of this._ignoredPaths) {\n                // TODO (43081j): make this more efficient.\n                // probably just make a `this._ignoredDirectories` or some\n                // such thing.\n                if (isMatcherObject(ignored) && ignored.path === matcher) {\n                    this._ignoredPaths.delete(ignored);\n                }\n            }\n        }\n    }\n    // Public methods\n    /**\n     * Adds paths to be watched on an existing FSWatcher instance.\n     * @param paths_ file or file list. Other arguments are unused\n     */\n    add(paths_, _origAdd, _internal) {\n        const { cwd } = this.options;\n        this.closed = false;\n        this._closePromise = undefined;\n        let paths = unifyPaths(paths_);\n        if (cwd) {\n            paths = paths.map((path) => {\n                const absPath = getAbsolutePath(path, cwd);\n                // Check `path` instead of `absPath` because the cwd portion can't be a glob\n                return absPath;\n            });\n        }\n        paths.forEach((path) => {\n            this._removeIgnoredPath(path);\n        });\n        this._userIgnored = undefined;\n        if (!this._readyCount)\n            this._readyCount = 0;\n        this._readyCount += paths.length;\n        Promise.all(paths.map(async (path) => {\n            const res = await this._nodeFsHandler._addToNodeFs(path, !_internal, undefined, 0, _origAdd);\n            if (res)\n                this._emitReady();\n            return res;\n        })).then((results) => {\n            if (this.closed)\n                return;\n            results.forEach((item) => {\n                if (item)\n                    this.add(sysPath.dirname(item), sysPath.basename(_origAdd || item));\n            });\n        });\n        return this;\n    }\n    /**\n     * Close watchers or start ignoring events from specified paths.\n     */\n    unwatch(paths_) {\n        if (this.closed)\n            return this;\n        const paths = unifyPaths(paths_);\n        const { cwd } = this.options;\n        paths.forEach((path) => {\n            // convert to absolute path unless relative path already matches\n            if (!sysPath.isAbsolute(path) && !this._closers.has(path)) {\n                if (cwd)\n                    path = sysPath.join(cwd, path);\n                path = sysPath.resolve(path);\n            }\n            this._closePath(path);\n            this._addIgnoredPath(path);\n            if (this._watched.has(path)) {\n                this._addIgnoredPath({\n                    path,\n                    recursive: true,\n                });\n            }\n            // reset the cached userIgnored anymatch fn\n            // to make ignoredPaths changes effective\n            this._userIgnored = undefined;\n        });\n        return this;\n    }\n    /**\n     * Close watchers and remove all listeners from watched paths.\n     */\n    close() {\n        if (this._closePromise) {\n            return this._closePromise;\n        }\n        this.closed = true;\n        // Memory management.\n        this.removeAllListeners();\n        const closers = [];\n        this._closers.forEach((closerList) => closerList.forEach((closer) => {\n            const promise = closer();\n            if (promise instanceof Promise)\n                closers.push(promise);\n        }));\n        this._streams.forEach((stream) => stream.destroy());\n        this._userIgnored = undefined;\n        this._readyCount = 0;\n        this._readyEmitted = false;\n        this._watched.forEach((dirent) => dirent.dispose());\n        this._closers.clear();\n        this._watched.clear();\n        this._streams.clear();\n        this._symlinkPaths.clear();\n        this._throttled.clear();\n        this._closePromise = closers.length\n            ? Promise.all(closers).then(() => undefined)\n            : Promise.resolve();\n        return this._closePromise;\n    }\n    /**\n     * Expose list of watched paths\n     * @returns for chaining\n     */\n    getWatched() {\n        const watchList = {};\n        this._watched.forEach((entry, dir) => {\n            const key = this.options.cwd ? sysPath.relative(this.options.cwd, dir) : dir;\n            const index = key || ONE_DOT;\n            watchList[index] = entry.getChildren().sort();\n        });\n        return watchList;\n    }\n    emitWithAll(event, args) {\n        this.emit(event, ...args);\n        if (event !== EV.ERROR)\n            this.emit(EV.ALL, event, ...args);\n    }\n    // Common helpers\n    // --------------\n    /**\n     * Normalize and emit events.\n     * Calling _emit DOES NOT MEAN emit() would be called!\n     * @param event Type of event\n     * @param path File or directory path\n     * @param stats arguments to be passed with event\n     * @returns the error if defined, otherwise the value of the FSWatcher instance's `closed` flag\n     */\n    async _emit(event, path, stats) {\n        if (this.closed)\n            return;\n        const opts = this.options;\n        if (isWindows)\n            path = sysPath.normalize(path);\n        if (opts.cwd)\n            path = sysPath.relative(opts.cwd, path);\n        const args = [path];\n        if (stats != null)\n            args.push(stats);\n        const awf = opts.awaitWriteFinish;\n        let pw;\n        if (awf && (pw = this._pendingWrites.get(path))) {\n            pw.lastChange = new Date();\n            return this;\n        }\n        if (opts.atomic) {\n            if (event === EV.UNLINK) {\n                this._pendingUnlinks.set(path, [event, ...args]);\n                setTimeout(() => {\n                    this._pendingUnlinks.forEach((entry, path) => {\n                        this.emit(...entry);\n                        this.emit(EV.ALL, ...entry);\n                        this._pendingUnlinks.delete(path);\n                    });\n                }, typeof opts.atomic === 'number' ? opts.atomic : 100);\n                return this;\n            }\n            if (event === EV.ADD && this._pendingUnlinks.has(path)) {\n                event = EV.CHANGE;\n                this._pendingUnlinks.delete(path);\n            }\n        }\n        if (awf && (event === EV.ADD || event === EV.CHANGE) && this._readyEmitted) {\n            const awfEmit = (err, stats) => {\n                if (err) {\n                    event = EV.ERROR;\n                    args[0] = err;\n                    this.emitWithAll(event, args);\n                }\n                else if (stats) {\n                    // if stats doesn't exist the file must have been deleted\n                    if (args.length > 1) {\n                        args[1] = stats;\n                    }\n                    else {\n                        args.push(stats);\n                    }\n                    this.emitWithAll(event, args);\n                }\n            };\n            this._awaitWriteFinish(path, awf.stabilityThreshold, event, awfEmit);\n            return this;\n        }\n        if (event === EV.CHANGE) {\n            const isThrottled = !this._throttle(EV.CHANGE, path, 50);\n            if (isThrottled)\n                return this;\n        }\n        if (opts.alwaysStat &&\n            stats === undefined &&\n            (event === EV.ADD || event === EV.ADD_DIR || event === EV.CHANGE)) {\n            const fullPath = opts.cwd ? sysPath.join(opts.cwd, path) : path;\n            let stats;\n            try {\n                stats = await stat(fullPath);\n            }\n            catch (err) {\n                // do nothing\n            }\n            // Suppress event when fs_stat fails, to avoid sending undefined 'stat'\n            if (!stats || this.closed)\n                return;\n            args.push(stats);\n        }\n        this.emitWithAll(event, args);\n        return this;\n    }\n    /**\n     * Common handler for errors\n     * @returns The error if defined, otherwise the value of the FSWatcher instance's `closed` flag\n     */\n    _handleError(error) {\n        const code = error && error.code;\n        if (error &&\n            code !== 'ENOENT' &&\n            code !== 'ENOTDIR' &&\n            (!this.options.ignorePermissionErrors || (code !== 'EPERM' && code !== 'EACCES'))) {\n            this.emit(EV.ERROR, error);\n        }\n        return error || this.closed;\n    }\n    /**\n     * Helper utility for throttling\n     * @param actionType type being throttled\n     * @param path being acted upon\n     * @param timeout duration of time to suppress duplicate actions\n     * @returns tracking object or false if action should be suppressed\n     */\n    _throttle(actionType, path, timeout) {\n        if (!this._throttled.has(actionType)) {\n            this._throttled.set(actionType, new Map());\n        }\n        const action = this._throttled.get(actionType);\n        if (!action)\n            throw new Error('invalid throttle');\n        const actionPath = action.get(path);\n        if (actionPath) {\n            actionPath.count++;\n            return false;\n        }\n        // eslint-disable-next-line prefer-const\n        let timeoutObject;\n        const clear = () => {\n            const item = action.get(path);\n            const count = item ? item.count : 0;\n            action.delete(path);\n            clearTimeout(timeoutObject);\n            if (item)\n                clearTimeout(item.timeoutObject);\n            return count;\n        };\n        timeoutObject = setTimeout(clear, timeout);\n        const thr = { timeoutObject, clear, count: 0 };\n        action.set(path, thr);\n        return thr;\n    }\n    _incrReadyCount() {\n        return this._readyCount++;\n    }\n    /**\n     * Awaits write operation to finish.\n     * Polls a newly created file for size variations. When files size does not change for 'threshold' milliseconds calls callback.\n     * @param path being acted upon\n     * @param threshold Time in milliseconds a file size must be fixed before acknowledging write OP is finished\n     * @param event\n     * @param awfEmit Callback to be called when ready for event to be emitted.\n     */\n    _awaitWriteFinish(path, threshold, event, awfEmit) {\n        const awf = this.options.awaitWriteFinish;\n        if (typeof awf !== 'object')\n            return;\n        const pollInterval = awf.pollInterval;\n        let timeoutHandler;\n        let fullPath = path;\n        if (this.options.cwd && !sysPath.isAbsolute(path)) {\n            fullPath = sysPath.join(this.options.cwd, path);\n        }\n        const now = new Date();\n        const writes = this._pendingWrites;\n        function awaitWriteFinishFn(prevStat) {\n            statcb(fullPath, (err, curStat) => {\n                if (err || !writes.has(path)) {\n                    if (err && err.code !== 'ENOENT')\n                        awfEmit(err);\n                    return;\n                }\n                const now = Number(new Date());\n                if (prevStat && curStat.size !== prevStat.size) {\n                    writes.get(path).lastChange = now;\n                }\n                const pw = writes.get(path);\n                const df = now - pw.lastChange;\n                if (df >= threshold) {\n                    writes.delete(path);\n                    awfEmit(undefined, curStat);\n                }\n                else {\n                    timeoutHandler = setTimeout(awaitWriteFinishFn, pollInterval, curStat);\n                }\n            });\n        }\n        if (!writes.has(path)) {\n            writes.set(path, {\n                lastChange: now,\n                cancelWait: () => {\n                    writes.delete(path);\n                    clearTimeout(timeoutHandler);\n                    return event;\n                },\n            });\n            timeoutHandler = setTimeout(awaitWriteFinishFn, pollInterval);\n        }\n    }\n    /**\n     * Determines whether user has asked to ignore this path.\n     */\n    _isIgnored(path, stats) {\n        if (this.options.atomic && DOT_RE.test(path))\n            return true;\n        if (!this._userIgnored) {\n            const { cwd } = this.options;\n            const ign = this.options.ignored;\n            const ignored = (ign || []).map(normalizeIgnored(cwd));\n            const ignoredPaths = [...this._ignoredPaths];\n            const list = [...ignoredPaths.map(normalizeIgnored(cwd)), ...ignored];\n            this._userIgnored = anymatch(list, undefined);\n        }\n        return this._userIgnored(path, stats);\n    }\n    _isntIgnored(path, stat) {\n        return !this._isIgnored(path, stat);\n    }\n    /**\n     * Provides a set of common helpers and properties relating to symlink handling.\n     * @param path file or directory pattern being watched\n     */\n    _getWatchHelpers(path) {\n        return new WatchHelper(path, this.options.followSymlinks, this);\n    }\n    // Directory helpers\n    // -----------------\n    /**\n     * Provides directory tracking objects\n     * @param directory path of the directory\n     */\n    _getWatchedDir(directory) {\n        const dir = sysPath.resolve(directory);\n        if (!this._watched.has(dir))\n            this._watched.set(dir, new DirEntry(dir, this._boundRemove));\n        return this._watched.get(dir);\n    }\n    // File helpers\n    // ------------\n    /**\n     * Check for read permissions: https://stackoverflow.com/a/11781404/1358405\n     */\n    _hasReadPermissions(stats) {\n        if (this.options.ignorePermissionErrors)\n            return true;\n        return Boolean(Number(stats.mode) & 0o400);\n    }\n    /**\n     * Handles emitting unlink events for\n     * files and directories, and via recursion, for\n     * files and directories within directories that are unlinked\n     * @param directory within which the following item is located\n     * @param item      base path of item/directory\n     */\n    _remove(directory, item, isDirectory) {\n        // if what is being deleted is a directory, get that directory's paths\n        // for recursive deleting and cleaning of watched object\n        // if it is not a directory, nestedDirectoryChildren will be empty array\n        const path = sysPath.join(directory, item);\n        const fullPath = sysPath.resolve(path);\n        isDirectory =\n            isDirectory != null ? isDirectory : this._watched.has(path) || this._watched.has(fullPath);\n        // prevent duplicate handling in case of arriving here nearly simultaneously\n        // via multiple paths (such as _handleFile and _handleDir)\n        if (!this._throttle('remove', path, 100))\n            return;\n        // if the only watched file is removed, watch for its return\n        if (!isDirectory && this._watched.size === 1) {\n            this.add(directory, item, true);\n        }\n        // This will create a new entry in the watched object in either case\n        // so we got to do the directory check beforehand\n        const wp = this._getWatchedDir(path);\n        const nestedDirectoryChildren = wp.getChildren();\n        // Recursively remove children directories / files.\n        nestedDirectoryChildren.forEach((nested) => this._remove(path, nested));\n        // Check if item was on the watched list and remove it\n        const parent = this._getWatchedDir(directory);\n        const wasTracked = parent.has(item);\n        parent.remove(item);\n        // Fixes issue #1042 -> Relative paths were detected and added as symlinks\n        // (https://github.com/paulmillr/chokidar/blob/e1753ddbc9571bdc33b4a4af172d52cb6e611c10/lib/nodefs-handler.js#L612),\n        // but never removed from the map in case the path was deleted.\n        // This leads to an incorrect state if the path was recreated:\n        // https://github.com/paulmillr/chokidar/blob/e1753ddbc9571bdc33b4a4af172d52cb6e611c10/lib/nodefs-handler.js#L553\n        if (this._symlinkPaths.has(fullPath)) {\n            this._symlinkPaths.delete(fullPath);\n        }\n        // If we wait for this file to be fully written, cancel the wait.\n        let relPath = path;\n        if (this.options.cwd)\n            relPath = sysPath.relative(this.options.cwd, path);\n        if (this.options.awaitWriteFinish && this._pendingWrites.has(relPath)) {\n            const event = this._pendingWrites.get(relPath).cancelWait();\n            if (event === EV.ADD)\n                return;\n        }\n        // The Entry will either be a directory that just got removed\n        // or a bogus entry to a file, in either case we have to remove it\n        this._watched.delete(path);\n        this._watched.delete(fullPath);\n        const eventName = isDirectory ? EV.UNLINK_DIR : EV.UNLINK;\n        if (wasTracked && !this._isIgnored(path))\n            this._emit(eventName, path);\n        // Avoid conflicts if we later create another file with the same name\n        this._closePath(path);\n    }\n    /**\n     * Closes all watchers for a path\n     */\n    _closePath(path) {\n        this._closeFile(path);\n        const dir = sysPath.dirname(path);\n        this._getWatchedDir(dir).remove(sysPath.basename(path));\n    }\n    /**\n     * Closes only file-specific watchers\n     */\n    _closeFile(path) {\n        const closers = this._closers.get(path);\n        if (!closers)\n            return;\n        closers.forEach((closer) => closer());\n        this._closers.delete(path);\n    }\n    _addPathCloser(path, closer) {\n        if (!closer)\n            return;\n        let list = this._closers.get(path);\n        if (!list) {\n            list = [];\n            this._closers.set(path, list);\n        }\n        list.push(closer);\n    }\n    _readdirp(root, opts) {\n        if (this.closed)\n            return;\n        const options = { type: EV.ALL, alwaysStat: true, lstat: true, ...opts, depth: 0 };\n        let stream = readdirp(root, options);\n        this._streams.add(stream);\n        stream.once(STR_CLOSE, () => {\n            stream = undefined;\n        });\n        stream.once(STR_END, () => {\n            if (stream) {\n                this._streams.delete(stream);\n                stream = undefined;\n            }\n        });\n        return stream;\n    }\n}\n/**\n * Instantiates watcher with paths to be tracked.\n * @param paths file / directory paths\n * @param options opts, such as `atomic`, `awaitWriteFinish`, `ignored`, and others\n * @returns an instance of FSWatcher for chaining.\n * @example\n * const watcher = watch('.').on('all', (event, path) => { console.log(event, path); });\n * watch('.', { atomic: true, awaitWriteFinish: true, ignored: (f, stats) => stats?.isFile() && !f.endsWith('.js') })\n */\nexport function watch(paths, options = {}) {\n    const watcher = new FSWatcher(options);\n    watcher.add(paths);\n    return watcher;\n}\nexport default { watch, FSWatcher };\n","import path from \"node:path\";\nimport type {GenerateTypesOptions, GenerateTypesResult} from \"./types\";\nimport {normalizeConfig} from \"./core/config\";\nimport {FileManager} from \"./core/file-manager\";\nimport {createColoredLogger, createConsoleLogger} from \"./createConsoleLogger\";\n\nimport {CombinedMessages} from \"./core/combined-messages.ts\";\n\nexport {normalizeConfig, createColoredLogger, createConsoleLogger, CombinedMessages}\n\n\n/**\n * Generate TypeScript definitions from Vue i18n locale files\n *\n * @param options - Configuration options for generation\n * @returns Promise with generation result\n *\n * @example\n * ```typescript\n * import { generateI18nTypes } from 'unplugin- i18n-typescript-generation/api'\n *\n * const result = await generateI18nTypes({\n *   baseLocale: 'en',\n *   include: ['src/locales/*.json'],\n *   typesPath: 'src/i18n/i18n.gen.d.ts',\n *   verbose: true\n * })\n *\n * console.log(`Generated ${result.filesWritten} files for ${result.locales.length} locales`)\n * ```\n */\nexport async function generateI18nTypes(\n  options: GenerateTypesOptions = {}\n): Promise<GenerateTypesResult> {\n  const root = options.root ? path.resolve(options.root) : process.cwd();\n  const debugEnabled = options.debug ?? options.verbose ?? false;\n  const logger = createColoredLogger(options.debug ? \"debug\" : \"info\");\n  const config = normalizeConfig({\n    ...options,\n    debug: debugEnabled\n  }, logger);\n\n  logger.info(`Starting type generation in: ${root}`);\n\n  logger.info(`Base locale: ${config.baseLocale}`);\n  logger.info(`Include patterns: ${config.include.join(\", \")}`);\n  logger.info(`Types output: ${config.typesPath}`);\n\n  // Initialize core managers\n  const fileManager = new FileManager(config);\n\n\n  let lastFiles: string[] = [];\n\n  // Perform generation\n  const startTime = performance.now();\n  const result = await fileManager.readAndGroup();\n\n  lastFiles = fileManager.getLastFiles();\n\n  const locales = result.messages.languages.filter((l: string) => l !== \"js-reserved\");\n\n  // Write the generated files\n  const writeStartTime = performance.now();\n  await result.messages.writeFiles();\n  const writeDuration = Math.round(performance.now() - writeStartTime);\n  const totalDuration = Math.round(performance.now() - startTime);\n\n  logger.info(`✅ Generated types for ${locales.length} locale(s): ${locales.join(\", \")}`);\n  logger.info(`📁 Processed ${lastFiles.length} locale file(s)`);\n\n  // Get generation details\n  const typesPath = path.isAbsolute(config.typesPath)\n    ? config.typesPath\n    : path.join(root, config.typesPath);\n\n  const generatedFiles = [path.relative(root, typesPath).replace(/\\\\/g, '/')];\n  let filesWritten = 1;\n  if (config.virtualFilePath) {\n    const virtualPath = path.isAbsolute(config.virtualFilePath)\n      ? config.virtualFilePath\n      : path.join(root, config.virtualFilePath);\n    generatedFiles.push(path.relative(root, virtualPath).replace(/\\\\/g, '/'));\n    filesWritten = 2;\n  }\n\n  return {\n    filesWritten,\n    totalFiles: generatedFiles.length,\n    generatedFiles,\n    durations: {\n      content: totalDuration - writeDuration,\n      write: writeDuration,\n      total: totalDuration,\n    },\n    locales,\n    localeFilesCount: lastFiles.length,\n    localeFiles: lastFiles,\n  };\n}\n","#!/usr/bin/env node\n\nimport path from \"node:path\";\nimport {parseArgs} from \"node:util\";\nimport {watch} from \"chokidar\";\nimport {mkdir, writeFile} from \"node:fs/promises\";\nimport {generateI18nTypes} from \"./api\";\nimport {createColoredLogger} from \"./createConsoleLogger\";\nimport {normalizeConfig} from \"./core/config\";\n\n\nconst helpText = `\nvite-plugin-vue-i18n-typescript CLI\n\nGenerate TypeScript definitions from Vue i18n locale files\n\nCommands:\n  generate                   Generate TypeScript definitions (default)\n  merge-export              Export merged translation messages as JSON\n\nUsage:\n  npx vite-plugin-vue-i18n-typescript [generate] [options]\n  npx vite-plugin-vue-i18n-typescript merge-export [options]\n\nGenerate Options:\n  --root <path>              Root directory (default: current directory)\n  --include <pattern>        Glob pattern(s) for locale files (can be specified multiple times)\n  --exclude <pattern>        Glob pattern(s) to exclude (can be specified multiple times)\n  --base-locale <locale>     Base locale for type generation (default: \"de\")\n  --types-path <path>        Output path for .d.ts file (default: \"./src/vite-env-override.d.ts\")\n  --virtual-file-path <path> Output path for virtual module .ts file (optional)\n  --source-id <id>           Virtual module ID (default: \"virtual:vue-i18n-types\")\n  --banner <text>            Custom banner comment for generated files\n  --merge <type>             Merge strategy: \"deep\" or \"shallow\" (default: \"deep\")\n  --watch, -w                Watch mode - regenerate on file changes\n  --debug                    Enable debug logging\n  --verbose, -v              Enable verbose output\n  --help, -h                 Show this help message\n  --version                  Show version\n\nMerge-Export Options:\n  --root <path>              Root directory (default: current directory)\n  --include <pattern>        Glob pattern(s) for locale files (can be specified multiple times)\n  --exclude <pattern>        Glob pattern(s) to exclude (can be specified multiple times)\n  --output <path>            Output path for JSON file(s) (required)\n  --split                    Export separate files per locale (use {locale} placeholder)\n  --merge <type>             Merge strategy: \"deep\" or \"shallow\" (default: \"deep\")\n  --debug                    Enable debug logging\n  --verbose, -v              Enable verbose output\n\nExamples:\n  # Generate TypeScript definitions (default command)\n  npx vite-plugin-vue-i18n-typescript\n  npx vite-plugin-vue-i18n-typescript generate\n\n  # Specify custom paths and base locale\n  npx vite-plugin-vue-i18n-typescript generate --base-locale en --types-path src/types/i18n.d.ts\n\n  # Multiple include patterns\n  npx vite-plugin-vue-i18n-typescript generate --include \"src/locales/**/*.json\" --include \"src/i18n/**/*.json\"\n\n  # Generate virtual file for debugging\n  npx vite-plugin-vue-i18n-typescript generate --virtual-file-path src/i18n/virtual.gen.ts --verbose\n\n  # Custom root directory\n  npx vite-plugin-vue-i18n-typescript generate --root ./packages/frontend --base-locale en\n\n  # Watch mode - regenerate on file changes\n  npx vite-plugin-vue-i18n-typescript generate --watch --verbose\n\n  # Export all messages to a single JSON file\n  npx vite-plugin-vue-i18n-typescript merge-export --output ./export/messages.json\n\n  # Export separate JSON files per locale (use {locale} placeholder in path)\n  npx vite-plugin-vue-i18n-typescript merge-export --split --output ./export/{locale}.json\n\n  # Export with custom include patterns and verbose output\n  npx vite-plugin-vue-i18n-typescript merge-export --include \"src/**/*.json\" --output ./messages.json --verbose\n`;\n\nasync function mergeExportCommand(args: string[]) {\n  const {values} = parseArgs({\n    args,\n    options: {\n      root: {type: \"string\"},\n      include: {type: \"string\", multiple: true},\n      exclude: {type: \"string\", multiple: true},\n      output: {type: \"string\"},\n      split: {type: \"boolean\"},\n      merge: {type: \"string\"},\n      debug: {type: \"boolean\"},\n      verbose: {type: \"boolean\", short: \"v\"},\n    },\n    strict: true,\n    allowPositionals: false,\n  });\n\n  if (!values.output) {\n    console.error(\"❌ Error: --output is required for merge-export command\");\n    console.error(\"Example: npx vite-plugin-vue-i18n-typescript merge-export --output ./messages.json\");\n    process.exit(1);\n  }\n\n  const debugEnabled = values.debug ?? values.verbose ?? false;\n  const verbose = debugEnabled;\n  const rootDir = path.resolve(values.root ?? process.cwd());\n\n  if (verbose) {\n    console.log(\"🚀 Exporting merged translation messages...\\n\");\n    console.log(`Root directory: ${rootDir}`);\n    console.log(`Output: ${values.output}`);\n    console.log(`Split mode: ${values.split ? \"enabled\" : \"disabled\"}`);\n  }\n\n  // Import FileManager to read and merge locale files\n  const {FileManager} = await import(\"./core/file-manager\");\n  const {normalizeConfig} = await import(\"./core/config\");\n  const {createColoredLogger} = await import('./createConsoleLogger')\n  const logger = createColoredLogger(debugEnabled ? 'debug' : 'info', {prefix: 'merge-export'})\n  const config = normalizeConfig({\n    include: values.include,\n    exclude: values.exclude,\n    root: rootDir,\n    merge: values.merge as \"deep\" | \"shallow\" | undefined,\n    debug: debugEnabled,\n  }, logger, {root: rootDir});\n\n  const fileManager = new FileManager(config);\n\n  // Read and group locale files\n  const result = await fileManager.readAndGroup();\n  const grouped = result.messages;\n  const locales = grouped.languages;\n\n  if (locales.length === 0) {\n    console.error(\"❌ No locales found\");\n    process.exit(1);\n  }\n\n  if (verbose) {\n    console.log(`\\n✅ Found ${locales.length} locale(s): ${locales.join(\", \")}`);\n  }\n\n  if (values.split) {\n    // Export separate files per locale\n    if (!values.output.includes(\"{locale}\")) {\n      console.error(\"❌ Error: --output must contain {locale} placeholder when using --split\");\n      console.error(\"Example: --output ./export/{locale}.json\");\n      process.exit(1);\n    }\n\n    for (const locale of locales) {\n      const outputPath = path.resolve(rootDir, values.output.replace(\"{locale}\", locale));\n      const outputDir = path.dirname(outputPath);\n\n      // Ensure output directory exists\n      await mkdir(outputDir, {recursive: true});\n\n      // Write locale messages\n      await writeFile(outputPath, JSON.stringify(grouped.messages[locale], null, 2), \"utf-8\");\n\n      if (verbose) {\n        console.log(`📄 Wrote ${locale}: ${path.relative(rootDir, outputPath)}`);\n      }\n    }\n\n    console.log(`\\n✅ Exported ${locales.length} locale file(s)`);\n  } else {\n    // Export combined file\n    const outputPath = path.resolve(rootDir, values.output);\n    const outputDir = path.dirname(outputPath);\n\n    // Ensure output directory exists\n    await mkdir(outputDir, {recursive: true});\n\n    // Write all messages\n    await writeFile(outputPath, JSON.stringify(grouped, null, 2), \"utf-8\");\n\n    if (verbose) {\n      console.log(`📄 Wrote: ${path.relative(rootDir, outputPath)}`);\n    }\n\n    console.log(`\\n✅ Exported messages for ${locales.length} locale(s)`);\n  }\n}\n\nasync function main() {\n  let debugEnabled = false;\n  try {\n    const args = process.argv.slice(2);\n\n    // Handle help and version\n    if (args.includes(\"--help\") || args.includes(\"-h\") || args.length === 0) {\n      console.log(helpText);\n      process.exit(0);\n    }\n\n    if (args.includes(\"--version\")) {\n      // Read version from package.json\n      try {\n        const {version} = await import(\"../package.json\");\n        console.log(`v${version}`);\n      } catch {\n        console.log(\"Version unavailable\");\n      }\n      process.exit(0);\n    }\n\n    // Check command\n    const command = args[0];\n    let startIndex = 0;\n\n    if (command === \"merge-export\") {\n      await mergeExportCommand(args.slice(1));\n      process.exit(0);\n    }\n\n    // Default to \"generate\" command\n    if (command === \"generate\") {\n      startIndex = 1;\n    }\n\n    // Parse arguments\n    const {values} = parseArgs({\n      args: args.slice(startIndex),\n      options: {\n        root: {type: \"string\"},\n        include: {type: \"string\", multiple: true},\n        exclude: {type: \"string\", multiple: true},\n        \"base-locale\": {type: \"string\"},\n        \"types-path\": {type: \"string\"},\n        \"virtual-file-path\": {type: \"string\"},\n        \"source-id\": {type: \"string\"},\n        banner: {type: \"string\"},\n        merge: {type: \"string\"},\n        watch: {type: \"boolean\", short: \"w\"},\n        debug: {type: \"boolean\"},\n        verbose: {type: \"boolean\", short: \"v\"},\n      },\n\n      strict: true,\n      allowPositionals: false,\n    });\n\n    debugEnabled = values.debug ?? values.verbose ?? false;\n    const logger = createColoredLogger(debugEnabled ? 'debug' : 'info', {prefix: 'merge-export'})\n\n    // Build options\n    const options = normalizeConfig({\n      ...values,\n      root: values.root,\n      include: values.include,\n      debug: debugEnabled,\n      baseLocale: values[\"base-locale\"],\n      typesPath: values[\"types-path\"],\n      virtualFilePath: values[\"virtual-file-path\"],\n      sourceId: values[\"source-id\"],\n      banner: values.banner,\n      merge: values.merge as \"deep\" | \"shallow\" | undefined,\n\n    }, logger, {root: values.root});\n\n    // Run generation\n    let lastResult: Awaited<ReturnType<typeof generateI18nTypes>> | undefined;\n\n    const runGeneration = async (): Promise<void> => {\n      const startTime = Date.now();\n      console.log(\"🚀 Generating i18n types...\\n\");\n\n      try {\n        const result = await generateI18nTypes(options);\n        lastResult = result;\n\n        const duration = Date.now() - startTime;\n        console.log(`\\n✅ Generation complete in ${duration}ms!`);\n        console.log(`📁 Generated files (${result.filesWritten}):`);\n        for (const file of result.generatedFiles) {\n          console.log(`   - ${file}`);\n        }\n        console.log(`🌍 Locales (${result.locales.length}): ${result.locales.join(\", \")}`);\n        console.log(`📄 Processed ${result.localeFilesCount} locale file(s)`);\n      } catch (error) {\n        console.error(\"\\n❌ Generation failed:\");\n        if (error instanceof Error) {\n          console.error(error.message);\n          if (options.debug) {\n            console.error(\"\\nStack trace:\");\n            console.error(error.stack);\n          }\n        } else {\n          console.error(String(error));\n        }\n        if (!values.watch) {\n          process.exit(1);\n        }\n      }\n    };\n\n    // Initial generation\n    await runGeneration();\n\n    // Watch mode\n    if (values.watch) {\n      console.log(\"\\n👁️  Watch mode enabled - watching for changes...\");\n      console.log(\"Press Ctrl+C to exit\\n\");\n\n      if (!lastResult) {\n        console.error(\"❌ Cannot start watch mode: Initial generation failed\");\n        process.exit(1);\n      }\n\n      const rootDir = path.resolve(options.root);\n      const includePatterns = options.include || ['src/**/locales/*.json'];\n\n      if (options.debug) {\n        console.log(`[watch] Root directory: ${rootDir}`);\n        console.log(`[watch] Patterns: ${Array.isArray(includePatterns) ? includePatterns.join(', ') : includePatterns}`);\n      }\n\n      // Use the locale files from the initial generation\n      const localeFilesFullPaths = lastResult ? lastResult.localeFiles : [];\n\n      if (options.debug) {\n        console.log(`[watch] Found ${localeFilesFullPaths.length} locale file(s) to watch`);\n      }\n\n      // Watch the actual files that were found\n      const watcher = watch(localeFilesFullPaths.length > 0 ? localeFilesFullPaths : includePatterns, {\n        cwd: rootDir,\n        ignored: options.exclude || ['**/node_modules/**', '**/.git/**'],\n        persistent: true,\n        ignoreInitial: true, // Skip initial add events since we've already generated\n        awaitWriteFinish: {\n          stabilityThreshold: 300,\n          pollInterval: 100,\n        },\n      });\n\n      // Debounce to avoid multiple rapid regenerations\n      let debounceTimer: NodeJS.Timeout | null = null;\n      const debounceDelay = 500; // 500ms debounce\n      let isWatcherReady = false;\n\n      const scheduleRegeneration = (eventType: string, filePath: string) => {\n        // Skip initial 'add' events since we've already generated once\n        if (!isWatcherReady && eventType === 'added') {\n          return;\n        }\n\n        if (debounceTimer) {\n          clearTimeout(debounceTimer);\n        }\n\n        debounceTimer = setTimeout(async () => {\n          console.log(`\\n📝 File ${eventType}: ${filePath}`);\n          await runGeneration();\n        }, debounceDelay);\n      };\n\n      watcher\n        .on('ready', () => {\n          isWatcherReady = true;\n          const watched = watcher.getWatched();\n          const watchedCount = Object.values(watched).reduce((sum, files) => sum + files.length, 0);\n\n          if (options.debug) {\n            console.log(`[watch] Watcher ready. Watching ${watchedCount} file(s):`);\n            for (const [dir, files] of Object.entries(watched)) {\n              if (files.length > 0) {\n                console.log(`  ${dir}:`);\n                for (const file of files) {\n                  console.log(`    - ${file}`);\n                }\n              }\n            }\n          }\n\n          if (watchedCount === 0) {\n            console.warn(`\\n⚠️  Warning: No files are being watched!`);\n            console.warn(`   Root: ${rootDir}`);\n            console.warn(`   Patterns: ${Array.isArray(includePatterns) ? includePatterns.join(', ') : includePatterns}`);\n            console.warn(`   This may indicate that the patterns don't match any files.`);\n          }\n        })\n        .on('add', (path) => scheduleRegeneration('added', path))\n        .on('change', (path) => scheduleRegeneration('changed', path))\n        .on('unlink', (path) => scheduleRegeneration('removed', path))\n        .on('error', (error) => {\n          console.error('\\n❌ Watcher error:', error);\n        });\n\n      // Keep process alive\n      process.on('SIGINT', () => {\n        console.log('\\n\\n👋 Stopping watch mode...');\n        watcher.close();\n        process.exit(0);\n      });\n\n      // Prevent exit\n      return;\n    }\n\n    process.exit(0);\n  } catch (error) {\n    console.error(\"\\n❌ Error generating types:\" + error);\n    if (error instanceof Error) {\n      console.error(error.message);\n      console.error(error.stack);\n      if (debugEnabled) {\n        console.error(\"\\nStack trace:\");\n        console.error(error.stack);\n      }\n    } else {\n      console.error(String(error));\n    }\n    process.exit(1);\n  }\n}\n\nmain();\n"]}