zephyr-webpack-plugin 0.0.0-canary-20250122192655 → 0.0.0-canary-20250130213446

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,10 +1,28 @@
1
- # Zephyr: We made application federation easy
1
+ # zephyr-webpack-plugin
2
2
 
3
- readme too be released
3
+ <div align="center">
4
4
 
5
- how to use?
5
+ [Zephyr Cloud](https://zephyr-cloud.io) | [Zephyr Docs](https://docs.zephyr-cloud.io/recipes/rspack-react) | [Rspack Docs](https://rspack.dev) | [Discord](https://zephyr-cloud.io/discord) | [Twitter](https://x.com/ZephyrCloudIO) | [LinkedIn](https://www.linkedin.com/company/zephyr-cloud/)
6
6
 
7
- with Nx, Webpack or Rspack
7
+ <hr/>
8
+ </div>
9
+
10
+ ## Installation
11
+
12
+ ```
13
+ # npm
14
+ npm install --save-dev zephyr-webpack-plugin
15
+ # yarn
16
+ yarn add --dev zephyr-webpack-plugin
17
+ # pnpm
18
+ pnpm add --dev zephyr-webpack-plugin
19
+ # bun
20
+ bun add --dev zephyr-webpack-plugin
21
+ ```
22
+
23
+ ## Usage
24
+
25
+ ### With Nx, Webpack or Rspack
8
26
 
9
27
  ```
10
28
  export default composePlugins(
@@ -18,7 +36,7 @@ export default composePlugins(
18
36
  );
19
37
  ```
20
38
 
21
- or
39
+ ### With Webpack directly
22
40
 
23
41
  ```
24
42
  module.exports = withZephyr()(your_webpack_config);
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zephyr-webpack-plugin",
3
- "version": "0.0.31",
3
+ "version": "0.0.33",
4
4
  "license": "Apache-2.0",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -15,7 +15,6 @@
15
15
  "tslib": "^2.3.0",
16
16
  "webpack": "^5.93.0",
17
17
  "zephyr-agent": "workspace:*",
18
- "zephyr-edge-contract": "workspace:*",
19
18
  "zephyr-xpack-internal": "workspace:*"
20
19
  },
21
20
  "devDependencies": {
@@ -1,24 +1,28 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.withZephyr = void 0;
3
+ exports.withZephyr = withZephyr;
4
4
  const zephyr_agent_1 = require("zephyr-agent");
5
5
  const ze_webpack_plugin_1 = require("./ze-webpack-plugin");
6
6
  const zephyr_xpack_internal_1 = require("zephyr-xpack-internal");
7
7
  function withZephyr(zephyrPluginOptions) {
8
8
  return (config) => _zephyr_configuration(config, zephyrPluginOptions);
9
9
  }
10
- exports.withZephyr = withZephyr;
11
10
  async function _zephyr_configuration(config, _zephyrOptions) {
12
11
  // create instance of ZephyrEngine to track the application
13
- const zephyr_engine = await zephyr_agent_1.ZephyrEngine.create(config.context);
12
+ const zephyr_engine = await zephyr_agent_1.ZephyrEngine.create({
13
+ builder: 'webpack',
14
+ context: config.context,
15
+ });
14
16
  // Resolve dependencies and update the config
15
17
  const dependencyPairs = (0, zephyr_xpack_internal_1.extractFederatedDependencyPairs)(config);
16
18
  const resolved_dependency_pairs = await zephyr_engine.resolve_remote_dependencies(dependencyPairs);
17
- (0, zephyr_xpack_internal_1.mutWebpackFederatedRemotesConfig)(config, resolved_dependency_pairs);
19
+ (0, zephyr_xpack_internal_1.mutWebpackFederatedRemotesConfig)(zephyr_engine, config, resolved_dependency_pairs);
20
+ const mfConfig = (0, zephyr_xpack_internal_1.makeCopyOfModuleFederationOptions)(config);
21
+ (0, zephyr_agent_1.ze_log)(`with-zephyr.mfConfig: ${JSON.stringify(mfConfig, null, 2)}`);
18
22
  // inject the ZephyrWebpackPlugin
19
23
  config.plugins?.push(new ze_webpack_plugin_1.ZeWebpackPlugin({
20
24
  zephyr_engine,
21
- mfConfig: (0, zephyr_xpack_internal_1.makeCopyOfModuleFederationOptions)(config),
25
+ mfConfig: mfConfig,
22
26
  wait_for_index_html: _zephyrOptions?.wait_for_index_html,
23
27
  }));
24
28
  return config;
@@ -1 +1 @@
1
- {"version":3,"file":"with-zephyr.js","sourceRoot":"","sources":["../../src/webpack-plugin/with-zephyr.ts"],"names":[],"mappings":";;;AACA,+CAA4C;AAE5C,2DAAsD;AAGtD,iEAI+B;AAE/B,SAAgB,UAAU,CAAC,mBAAgD;IACzE,OAAO,CAAC,MAAqB,EAAE,EAAE,CAAC,qBAAqB,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;AACvF,CAAC;AAFD,gCAEC;AAED,KAAK,UAAU,qBAAqB,CAClC,MAA4B,EAC5B,cAA2C;IAE3C,2DAA2D;IAC3D,MAAM,aAAa,GAAG,MAAM,2BAAY,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAEhE,6CAA6C;IAC7C,MAAM,eAAe,GAAG,IAAA,uDAA+B,EAAC,MAAM,CAAC,CAAC;IAChE,MAAM,yBAAyB,GAC7B,MAAM,aAAa,CAAC,2BAA2B,CAAC,eAAe,CAAC,CAAC;IACnE,IAAA,wDAAgC,EAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC;IAEpE,iCAAiC;IACjC,MAAM,CAAC,OAAO,EAAE,IAAI,CAClB,IAAI,mCAAe,CAAC;QAClB,aAAa;QACb,QAAQ,EAAE,IAAA,yDAAiC,EAAC,MAAM,CAAC;QACnD,mBAAmB,EAAE,cAAc,EAAE,mBAAmB;KACzD,CAAC,CACH,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"with-zephyr.js","sourceRoot":"","sources":["../../src/webpack-plugin/with-zephyr.ts"],"names":[],"mappings":";;AAYA,gCAEC;AAbD,+CAAoD;AAEpD,2DAAsD;AAGtD,iEAI+B;AAE/B,SAAgB,UAAU,CAAC,mBAAgD;IACzE,OAAO,CAAC,MAAqB,EAAE,EAAE,CAAC,qBAAqB,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;AACvF,CAAC;AAED,KAAK,UAAU,qBAAqB,CAClC,MAA4B,EAC5B,cAA2C;IAE3C,2DAA2D;IAC3D,MAAM,aAAa,GAAG,MAAM,2BAAY,CAAC,MAAM,CAAC;QAC9C,OAAO,EAAE,SAAS;QAClB,OAAO,EAAE,MAAM,CAAC,OAAO;KACxB,CAAC,CAAC;IAEH,6CAA6C;IAC7C,MAAM,eAAe,GAAG,IAAA,uDAA+B,EAAC,MAAM,CAAC,CAAC;IAChE,MAAM,yBAAyB,GAC7B,MAAM,aAAa,CAAC,2BAA2B,CAAC,eAAe,CAAC,CAAC;IAEnE,IAAA,wDAAgC,EAAC,aAAa,EAAE,MAAM,EAAE,yBAAyB,CAAC,CAAC;IAEnF,MAAM,QAAQ,GAAG,IAAA,yDAAiC,EAAC,MAAM,CAAC,CAAC;IAE3D,IAAA,qBAAM,EAAC,yBAAyB,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IAErE,iCAAiC;IACjC,MAAM,CAAC,OAAO,EAAE,IAAI,CAClB,IAAI,mCAAe,CAAC;QAClB,aAAa;QACb,QAAQ,EAAE,QAAQ;QAClB,mBAAmB,EAAE,cAAc,EAAE,mBAAmB;KACzD,CAAC,CACH,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1,8 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ZeWebpackPlugin = void 0;
4
- const ze_setup_build_steps_logging_1 = require("./ze-setup-build-steps-logging");
5
- const ze_setup_ze_deploy_1 = require("./ze-setup-ze-deploy");
4
+ const zephyr_xpack_internal_1 = require("zephyr-xpack-internal");
6
5
  const pluginName = 'ZeWebpackPlugin';
7
6
  class ZeWebpackPlugin {
8
7
  constructor(options) {
@@ -10,8 +9,8 @@ class ZeWebpackPlugin {
10
9
  }
11
10
  apply(compiler) {
12
11
  this._options.zephyr_engine.buildProperties.output = compiler.outputPath;
13
- (0, ze_setup_build_steps_logging_1.logBuildSteps)(this._options, compiler);
14
- (0, ze_setup_ze_deploy_1.setupZeDeploy)(this._options, compiler);
12
+ (0, zephyr_xpack_internal_1.logBuildSteps)(this._options, compiler);
13
+ (0, zephyr_xpack_internal_1.setupZeDeploy)(this._options, compiler);
15
14
  }
16
15
  }
17
16
  exports.ZeWebpackPlugin = ZeWebpackPlugin;
@@ -1 +1 @@
1
- {"version":3,"file":"ze-webpack-plugin.js","sourceRoot":"","sources":["../../src/webpack-plugin/ze-webpack-plugin.ts"],"names":[],"mappings":";;;AAGA,iFAA+D;AAC/D,6DAAqD;AAGrD,MAAM,UAAU,GAAG,iBAAiB,CAAC;AAarC,MAAa,eAAe;IAG1B,YAAY,OAA+D;QACzE,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,EAAE,OAAO,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,QAAkB;QACtB,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,eAAe,CAAC,MAAM,GAAG,QAAQ,CAAC,UAAU,CAAC;QAEzE,IAAA,4CAAa,EAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACvC,IAAA,kCAAa,EAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACzC,CAAC;CACF;AAbD,0CAaC"}
1
+ {"version":3,"file":"ze-webpack-plugin.js","sourceRoot":"","sources":["../../src/webpack-plugin/ze-webpack-plugin.ts"],"names":[],"mappings":";;;AAGA,iEAI+B;AAE/B,MAAM,UAAU,GAAG,iBAAiB,CAAC;AAarC,MAAa,eAAe;IAG1B,YAAY,OAA+D;QACzE,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,EAAE,OAAO,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,QAAkB;QACtB,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,eAAe,CAAC,MAAM,GAAG,QAAQ,CAAC,UAAU,CAAC;QAEzE,IAAA,qCAAa,EAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACvC,IAAA,qCAAa,EAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACzC,CAAC;CACF;AAbD,0CAaC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zephyr-webpack-plugin",
3
- "version": "0.0.0-canary-20250122192655",
3
+ "version": "0.0.0-canary-20250130213446",
4
4
  "license": "Apache-2.0",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -10,9 +10,8 @@
10
10
  "is-ci": "^3.0.1",
11
11
  "tslib": "^2.3.0",
12
12
  "webpack": "^5.93.0",
13
- "zephyr-agent": "0.0.0-canary-20250122192655",
14
- "zephyr-xpack-internal": "0.0.0-canary-20250122192655",
15
- "zephyr-edge-contract": "0.0.0-canary-20250122192655"
13
+ "zephyr-agent": "0.0.0-canary-20250130213446",
14
+ "zephyr-xpack-internal": "0.0.0-canary-20250130213446"
16
15
  },
17
16
  "devDependencies": {
18
17
  "@types/is-ci": "^3.0.4",
@@ -1,5 +0,0 @@
1
- import { Compiler } from 'webpack';
2
- import { ZephyrWebpackInternalPluginOptions } from './ze-webpack-plugin';
3
- export declare function logBuildSteps(pluginOptions: ZephyrWebpackInternalPluginOptions, compiler: Compiler): {
4
- buildStartedAt: number;
5
- };
@@ -1,26 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.logBuildSteps = void 0;
4
- const zephyr_agent_1 = require("zephyr-agent");
5
- function logBuildSteps(pluginOptions, compiler) {
6
- const { pluginName } = pluginOptions;
7
- let buildStartedAt = Date.now();
8
- compiler.hooks.beforeCompile.tapAsync(pluginName, async (params, cb) => {
9
- buildStartedAt = Date.now();
10
- (0, zephyr_agent_1.ze_log)('build started at', buildStartedAt);
11
- cb();
12
- });
13
- compiler.hooks.failed.tap(pluginName, (err) => {
14
- (0, zephyr_agent_1.ze_log)(`build failed in ${Date.now() - buildStartedAt}ms`);
15
- pluginOptions.zephyr_engine.logger.then((logger) => {
16
- logger({
17
- level: 'error',
18
- action: 'build:failed',
19
- message: zephyr_agent_1.ZephyrError.format(err),
20
- });
21
- });
22
- });
23
- return { buildStartedAt };
24
- }
25
- exports.logBuildSteps = logBuildSteps;
26
- //# sourceMappingURL=ze-setup-build-steps-logging.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ze-setup-build-steps-logging.js","sourceRoot":"","sources":["../../src/webpack-plugin/ze-setup-build-steps-logging.ts"],"names":[],"mappings":";;;AAEA,+CAAmD;AAEnD,SAAgB,aAAa,CAC3B,aAAiD,EACjD,QAAkB;IAIlB,MAAM,EAAE,UAAU,EAAE,GAAG,aAAa,CAAC;IAErC,IAAI,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAEhC,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE;QACrE,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC5B,IAAA,qBAAM,EAAC,kBAAkB,EAAE,cAAc,CAAC,CAAC;QAC3C,EAAE,EAAE,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE;QAC5C,IAAA,qBAAM,EAAC,mBAAmB,IAAI,CAAC,GAAG,EAAE,GAAG,cAAc,IAAI,CAAC,CAAC;QAE3D,aAAa,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YACjD,MAAM,CAAC;gBACL,KAAK,EAAE,OAAO;gBACd,MAAM,EAAE,cAAc;gBACtB,OAAO,EAAE,0BAAW,CAAC,MAAM,CAAC,GAAG,CAAC;aACjC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,cAAc,EAAE,CAAC;AAC5B,CAAC;AA7BD,sCA6BC"}
@@ -1,3 +0,0 @@
1
- import { Compiler } from 'webpack';
2
- import { ZephyrWebpackInternalPluginOptions } from './ze-webpack-plugin';
3
- export declare function setupZeDeploy(pluginOptions: ZephyrWebpackInternalPluginOptions, compiler: Compiler): void;
@@ -1,33 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.setupZeDeploy = void 0;
4
- const tslib_1 = require("tslib");
5
- const process = tslib_1.__importStar(require("node:process"));
6
- const ze_webpack_upload_agent_1 = require("./ze-webpack-upload-agent");
7
- const zephyr_xpack_internal_1 = require("zephyr-xpack-internal");
8
- function setupZeDeploy(pluginOptions, compiler) {
9
- const { pluginName } = pluginOptions;
10
- compiler.hooks.thisCompilation.tap(pluginName, (compilation) => {
11
- compilation.hooks.processAssets.tapPromise({
12
- name: pluginName,
13
- stage: compiler.webpack.Compilation.PROCESS_ASSETS_STAGE_REPORT,
14
- }, async (assets) => {
15
- const stats = compilation.getStats();
16
- const stats_json = compilation.getStats().toJson();
17
- await pluginOptions.zephyr_engine.start_new_build();
18
- process.nextTick(ze_webpack_upload_agent_1.webpack_zephyr_agent, {
19
- stats,
20
- stats_json,
21
- assets,
22
- pluginOptions,
23
- });
24
- if (!pluginOptions.wait_for_index_html) {
25
- await (0, zephyr_xpack_internal_1.onDeploymentDone)();
26
- }
27
- // empty line to separate logs from other plugins
28
- console.log();
29
- });
30
- });
31
- }
32
- exports.setupZeDeploy = setupZeDeploy;
33
- //# sourceMappingURL=ze-setup-ze-deploy.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ze-setup-ze-deploy.js","sourceRoot":"","sources":["../../src/webpack-plugin/ze-setup-ze-deploy.ts"],"names":[],"mappings":";;;;AAAA,8DAAwC;AAGxC,uEAAiE;AACjE,iEAAyD;AAGzD,SAAgB,aAAa,CAC3B,aAAiD,EACjD,QAAkB;IAElB,MAAM,EAAE,UAAU,EAAE,GAAG,aAAa,CAAC;IACrC,QAAQ,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,WAAW,EAAE,EAAE;QAC7D,WAAW,CAAC,KAAK,CAAC,aAAa,CAAC,UAAU,CACxC;YACE,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,2BAA2B;SAChE,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;YACf,MAAM,KAAK,GAAG,WAAW,CAAC,QAAQ,EAAE,CAAC;YACrC,MAAM,UAAU,GAAG,WAAW,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,CAAC;YAEnD,MAAM,aAAa,CAAC,aAAa,CAAC,eAAe,EAAE,CAAC;YAEpD,OAAO,CAAC,QAAQ,CAAC,8CAAoB,EAAE;gBACrC,KAAK;gBACL,UAAU;gBACV,MAAM;gBACN,aAAa;aACd,CAAC,CAAC;YAEH,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,CAAC;gBACvC,MAAM,IAAA,wCAAgB,GAAE,CAAC;YAC3B,CAAC;YAED,iDAAiD;YACjD,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,CAAC,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAjCD,sCAiCC"}
@@ -1,10 +0,0 @@
1
- import type { Stats, StatsCompilation } from 'webpack';
2
- import { type Source } from 'zephyr-edge-contract';
3
- import { ZephyrWebpackInternalPluginOptions } from './ze-webpack-plugin';
4
- export interface ZephyrAgentProps {
5
- stats: Stats;
6
- stats_json: StatsCompilation;
7
- pluginOptions: ZephyrWebpackInternalPluginOptions;
8
- assets: Record<string, Source>;
9
- }
10
- export declare function webpack_zephyr_agent({ stats, stats_json, assets, pluginOptions, }: ZephyrAgentProps): Promise<void>;
@@ -1,40 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.webpack_zephyr_agent = void 0;
4
- const zephyr_agent_1 = require("zephyr-agent");
5
- const zephyr_xpack_internal_1 = require("zephyr-xpack-internal");
6
- async function webpack_zephyr_agent({ stats, stats_json, assets, pluginOptions, }) {
7
- (0, zephyr_agent_1.ze_log)('Initiating: Zephyr Webpack Upload Agent');
8
- const zeStart = Date.now();
9
- const { wait_for_index_html, zephyr_engine } = pluginOptions;
10
- try {
11
- const assetsMap = await (0, zephyr_xpack_internal_1.buildWebpackAssetMap)(assets, {
12
- wait_for_index_html,
13
- });
14
- // webpack dash data
15
- const { EDGE_URL, PLATFORM } = await zephyr_engine.application_configuration;
16
- const dashData = await (0, zephyr_xpack_internal_1.getBuildStats)({
17
- stats,
18
- stats_json,
19
- assets,
20
- pluginOptions,
21
- EDGE_URL,
22
- PLATFORM,
23
- });
24
- await zephyr_engine.upload_assets({
25
- assetsMap,
26
- mfConfig: pluginOptions.mfConfig,
27
- buildStats: dashData,
28
- });
29
- }
30
- catch (err) {
31
- (0, zephyr_agent_1.logFn)('error', zephyr_agent_1.ZephyrError.format(err));
32
- }
33
- finally {
34
- (0, zephyr_xpack_internal_1.emitDeploymentDone)();
35
- // todo: log end
36
- (0, zephyr_agent_1.ze_log)('Zephyr Webpack Upload Agent: Done in', Date.now() - zeStart, 'ms');
37
- }
38
- }
39
- exports.webpack_zephyr_agent = webpack_zephyr_agent;
40
- //# sourceMappingURL=ze-webpack-upload-agent.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ze-webpack-upload-agent.js","sourceRoot":"","sources":["../../src/webpack-plugin/ze-webpack-upload-agent.ts"],"names":[],"mappings":";;;AACA,+CAA0D;AAM1D,iEAI+B;AAUxB,KAAK,UAAU,oBAAoB,CAAC,EACzC,KAAK,EACL,UAAU,EACV,MAAM,EACN,aAAa,GACI;IACjB,IAAA,qBAAM,EAAC,yCAAyC,CAAC,CAAC;IAElD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC3B,MAAM,EAAE,mBAAmB,EAAE,aAAa,EAAE,GAAG,aAAa,CAAC;IAC7D,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,MAAM,IAAA,4CAAoB,EAAC,MAAM,EAAE;YACnD,mBAAmB;SACpB,CAAC,CAAC;QAEH,oBAAoB;QACpB,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,MAAM,aAAa,CAAC,yBAAyB,CAAC;QAE7E,MAAM,QAAQ,GAAG,MAAM,IAAA,qCAAa,EAAC;YACnC,KAAK;YACL,UAAU;YACV,MAAM;YACN,aAAa;YACb,QAAQ;YACR,QAAQ;SACT,CAAC,CAAC;QAEH,MAAM,aAAa,CAAC,aAAa,CAAC;YAChC,SAAS;YACT,QAAQ,EAAE,aAAa,CAAC,QAGX;YACb,UAAU,EAAE,QAAuC;SACpD,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAA,oBAAK,EAAC,OAAO,EAAE,0BAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1C,CAAC;YAAS,CAAC;QACT,IAAA,0CAAkB,GAAE,CAAC;QACrB,gBAAgB;QAChB,IAAA,qBAAM,EAAC,sCAAsC,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,EAAE,IAAI,CAAC,CAAC;IAC7E,CAAC;AACH,CAAC;AA1CD,oDA0CC"}