Add capacitorjs runtime

This commit is contained in:
olcxja 2026-05-03 17:09:55 +02:00
commit f90c0e6c40
8362 changed files with 1502407 additions and 1 deletions

View file

@ -0,0 +1,7 @@
import { Framework } from ".";
import { MobileProject } from "../project";
export declare class CapacitorFramework extends Framework {
constructor();
static getFramework(project: MobileProject): Promise<CapacitorFramework | null>;
}
//# sourceMappingURL=capacitor.d.ts.map

View file

@ -0,0 +1 @@
{"version":3,"file":"capacitor.d.ts","sourceRoot":"","sources":["../../src/frameworks/capacitor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,qBAAa,kBAAmB,SAAQ,SAAS;;WAKlC,YAAY,CAAC,OAAO,EAAE,aAAa;CAajD"}

View file

@ -0,0 +1,23 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.CapacitorFramework = void 0;
const utils_fs_1 = require("@ionic/utils-fs");
const path_1 = require("path");
const _1 = require(".");
class CapacitorFramework extends _1.Framework {
constructor() {
super();
}
static async getFramework(project) {
if (!project.config.projectRoot) {
return null;
}
const paths = ['capacitor.config.ts', 'capacitor.config.js', 'capacitor.config.json'];
if ((await Promise.all(paths.map(p => (0, utils_fs_1.pathExists)((0, path_1.join)(project.config.projectRoot, p))))).some(s => s)) {
return new CapacitorFramework();
}
return null;
}
}
exports.CapacitorFramework = CapacitorFramework;
//# sourceMappingURL=capacitor.js.map

View file

@ -0,0 +1 @@
{"version":3,"file":"capacitor.js","sourceRoot":"","sources":["../../src/frameworks/capacitor.ts"],"names":[],"mappings":";;;AAAA,8CAA6C;AAC7C,+BAA4B;AAC5B,wBAA8B;AAG9B,MAAa,kBAAmB,SAAQ,YAAS;IAC/C;QACE,KAAK,EAAE,CAAC;IACV,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,OAAsB;QAC9C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE;YAC/B,OAAO,IAAI,CAAC;SACb;QAED,MAAM,KAAK,GAAG,CAAC,qBAAqB,EAAE,qBAAqB,EAAE,uBAAuB,CAAC,CAAC;QAEtF,IAAI,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAA,qBAAU,EAAC,IAAA,WAAI,EAAC,OAAO,CAAC,MAAM,CAAC,WAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;YACtG,OAAO,IAAI,kBAAkB,EAAE,CAAC;SACjC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAlBD,gDAkBC"}

View file

@ -0,0 +1,7 @@
import { Framework } from ".";
import { MobileProject } from "../project";
export declare class CordovaFramework extends Framework {
constructor();
static getFramework(project: MobileProject): Promise<CordovaFramework | null>;
}
//# sourceMappingURL=cordova.d.ts.map

View file

@ -0,0 +1 @@
{"version":3,"file":"cordova.d.ts","sourceRoot":"","sources":["../../src/frameworks/cordova.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,qBAAa,gBAAiB,SAAQ,SAAS;;WAKhC,YAAY,CAAC,OAAO,EAAE,aAAa;CAajD"}

View file

@ -0,0 +1,23 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.CordovaFramework = void 0;
const utils_fs_1 = require("@ionic/utils-fs");
const path_1 = require("path");
const _1 = require(".");
class CordovaFramework extends _1.Framework {
constructor() {
super();
}
static async getFramework(project) {
if (!project.config.projectRoot) {
return null;
}
const paths = ['config.xml'];
if ((await Promise.all(paths.map(p => (0, utils_fs_1.pathExists)((0, path_1.join)(project.config.projectRoot, p))))).some(s => s)) {
return new CordovaFramework();
}
return null;
}
}
exports.CordovaFramework = CordovaFramework;
//# sourceMappingURL=cordova.js.map

View file

@ -0,0 +1 @@
{"version":3,"file":"cordova.js","sourceRoot":"","sources":["../../src/frameworks/cordova.ts"],"names":[],"mappings":";;;AAAA,8CAA6C;AAC7C,+BAA4B;AAC5B,wBAA8B;AAG9B,MAAa,gBAAiB,SAAQ,YAAS;IAC7C;QACE,KAAK,EAAE,CAAC;IACV,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,OAAsB;QAC9C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE;YAC/B,OAAO,IAAI,CAAC;SACb;QAED,MAAM,KAAK,GAAG,CAAC,YAAY,CAAC,CAAC;QAE7B,IAAI,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAA,qBAAU,EAAC,IAAA,WAAI,EAAC,OAAO,CAAC,MAAM,CAAC,WAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;YACtG,OAAO,IAAI,gBAAgB,EAAE,CAAC;SAC/B;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAlBD,4CAkBC"}

View file

@ -0,0 +1,7 @@
import { Framework } from ".";
import { MobileProject } from "../project";
export declare class DotNetMauiFramework extends Framework {
constructor();
static getFramework(project: MobileProject): Promise<DotNetMauiFramework | null>;
}
//# sourceMappingURL=dotnet-maui.d.ts.map

View file

@ -0,0 +1 @@
{"version":3,"file":"dotnet-maui.d.ts","sourceRoot":"","sources":["../../src/frameworks/dotnet-maui.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,qBAAa,mBAAoB,SAAQ,SAAS;;WAKnC,YAAY,CAAC,OAAO,EAAE,aAAa;CAWjD"}

View file

@ -0,0 +1,22 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.DotNetMauiFramework = void 0;
const utils_fs_1 = require("@ionic/utils-fs");
const path_1 = require("path");
const _1 = require(".");
class DotNetMauiFramework extends _1.Framework {
constructor() {
super();
}
static async getFramework(project) {
if (!project.config.projectRoot) {
return null;
}
if (!(await (0, utils_fs_1.pathExists)((0, path_1.join)(project.config.projectRoot, 'App.xaml')))) {
return null;
}
return new DotNetMauiFramework();
}
}
exports.DotNetMauiFramework = DotNetMauiFramework;
//# sourceMappingURL=dotnet-maui.js.map

View file

@ -0,0 +1 @@
{"version":3,"file":"dotnet-maui.js","sourceRoot":"","sources":["../../src/frameworks/dotnet-maui.ts"],"names":[],"mappings":";;;AAAA,8CAA6C;AAC7C,+BAA4B;AAE5B,wBAA8B;AAG9B,MAAa,mBAAoB,SAAQ,YAAS;IAChD;QACE,KAAK,EAAE,CAAC;IACV,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,OAAsB;QAC9C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE;YAC/B,OAAO,IAAI,CAAC;SACb;QAED,IAAI,CAAC,CAAC,MAAM,IAAA,qBAAU,EAAC,IAAA,WAAI,EAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE;YACrE,OAAO,IAAI,CAAC;SACb;QAED,OAAO,IAAI,mBAAmB,EAAE,CAAC;IACnC,CAAC;CACF;AAhBD,kDAgBC"}

View file

@ -0,0 +1,7 @@
import { Framework } from ".";
import { MobileProject } from "../project";
export declare class FlutterFramework extends Framework {
constructor();
static getFramework(project: MobileProject): Promise<FlutterFramework | null>;
}
//# sourceMappingURL=flutter.d.ts.map

View file

@ -0,0 +1 @@
{"version":3,"file":"flutter.d.ts","sourceRoot":"","sources":["../../src/frameworks/flutter.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,qBAAa,gBAAiB,SAAQ,SAAS;;WAKhC,YAAY,CAAC,OAAO,EAAE,aAAa;CAWjD"}

View file

@ -0,0 +1,22 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.FlutterFramework = void 0;
const utils_fs_1 = require("@ionic/utils-fs");
const path_1 = require("path");
const _1 = require(".");
class FlutterFramework extends _1.Framework {
constructor() {
super();
}
static async getFramework(project) {
if (!project.config.projectRoot) {
return false;
}
if (!(await (0, utils_fs_1.pathExists)((0, path_1.join)(project.config.projectRoot, 'pubspec.yaml')))) {
return null;
}
return new FlutterFramework();
}
}
exports.FlutterFramework = FlutterFramework;
//# sourceMappingURL=flutter.js.map

View file

@ -0,0 +1 @@
{"version":3,"file":"flutter.js","sourceRoot":"","sources":["../../src/frameworks/flutter.ts"],"names":[],"mappings":";;;AAAA,8CAA6C;AAC7C,+BAA4B;AAE5B,wBAA8B;AAG9B,MAAa,gBAAiB,SAAQ,YAAS;IAC7C;QACE,KAAK,EAAE,CAAC;IACV,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,OAAsB;QAC9C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE;YAC/B,OAAO,KAAK,CAAC;SACd;QAED,IAAI,CAAC,CAAC,MAAM,IAAA,qBAAU,EAAC,IAAA,WAAI,EAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE;YACzE,OAAO,IAAI,CAAC;SACb;QAED,OAAO,IAAI,gBAAgB,EAAE,CAAC;IAChC,CAAC;CACF;AAhBD,4CAgBC"}

View file

@ -0,0 +1,5 @@
import { MobileProject } from "../project";
export declare class Framework {
static getFramework(project: MobileProject): Promise<Framework | null>;
}
//# sourceMappingURL=index.d.ts.map

View file

@ -0,0 +1 @@
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/frameworks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,qBAAa,SAAS;IACpB,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;CAGvE"}

View file

@ -0,0 +1,10 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Framework = void 0;
class Framework {
static getFramework(project) {
return Promise.resolve(null);
}
}
exports.Framework = Framework;
//# sourceMappingURL=index.js.map

View file

@ -0,0 +1 @@
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/frameworks/index.ts"],"names":[],"mappings":";;;AAEA,MAAa,SAAS;IACpB,MAAM,CAAC,YAAY,CAAC,OAAsB;QACxC,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;CACF;AAJD,8BAIC"}

View file

@ -0,0 +1,7 @@
import { Framework } from ".";
import { MobileProject } from "../project";
export declare class NativeAndroidFramework extends Framework {
constructor();
static getFramework(project: MobileProject): Promise<NativeAndroidFramework | null>;
}
//# sourceMappingURL=native-android.d.ts.map

View file

@ -0,0 +1 @@
{"version":3,"file":"native-android.d.ts","sourceRoot":"","sources":["../../src/frameworks/native-android.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,qBAAa,sBAAuB,SAAQ,SAAS;;WAKtC,YAAY,CAAC,OAAO,EAAE,aAAa;CAWjD"}

View file

@ -0,0 +1,22 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.NativeAndroidFramework = void 0;
const utils_fs_1 = require("@ionic/utils-fs");
const path_1 = require("path");
const _1 = require(".");
class NativeAndroidFramework extends _1.Framework {
constructor() {
super();
}
static async getFramework(project) {
if (!project.config.projectRoot) {
return false;
}
if (!(await (0, utils_fs_1.pathExists)((0, path_1.join)(project.config.projectRoot, 'build.gradle')))) {
return null;
}
return new NativeAndroidFramework();
}
}
exports.NativeAndroidFramework = NativeAndroidFramework;
//# sourceMappingURL=native-android.js.map

View file

@ -0,0 +1 @@
{"version":3,"file":"native-android.js","sourceRoot":"","sources":["../../src/frameworks/native-android.ts"],"names":[],"mappings":";;;AAAA,8CAA6C;AAC7C,+BAA4B;AAE5B,wBAA8B;AAG9B,MAAa,sBAAuB,SAAQ,YAAS;IACnD;QACE,KAAK,EAAE,CAAC;IACV,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,OAAsB;QAC9C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE;YAC/B,OAAO,KAAK,CAAC;SACd;QAED,IAAI,CAAC,CAAC,MAAM,IAAA,qBAAU,EAAC,IAAA,WAAI,EAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE;YACzE,OAAO,IAAI,CAAC;SACb;QAED,OAAO,IAAI,sBAAsB,EAAE,CAAC;IACtC,CAAC;CACF;AAhBD,wDAgBC"}

View file

@ -0,0 +1,7 @@
import { Framework } from ".";
import { MobileProject } from "../project";
export declare class NativeIosFramework extends Framework {
constructor();
static getFramework(project: MobileProject): Promise<NativeIosFramework | null>;
}
//# sourceMappingURL=native-ios.d.ts.map

View file

@ -0,0 +1 @@
{"version":3,"file":"native-ios.d.ts","sourceRoot":"","sources":["../../src/frameworks/native-ios.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,qBAAa,kBAAmB,SAAQ,SAAS;;WAKlC,YAAY,CAAC,OAAO,EAAE,aAAa;CAajD"}

View file

@ -0,0 +1,22 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.NativeIosFramework = void 0;
const utils_fs_1 = require("@ionic/utils-fs");
const _1 = require(".");
class NativeIosFramework extends _1.Framework {
constructor() {
super();
}
static async getFramework(project) {
if (!project.config.projectRoot) {
return false;
}
const files = await (0, utils_fs_1.readdir)(project.config.projectRoot);
if (!(files.some(f => f.indexOf('.xcodeproj') >= 0))) {
return null;
}
return new NativeIosFramework();
}
}
exports.NativeIosFramework = NativeIosFramework;
//# sourceMappingURL=native-ios.js.map

View file

@ -0,0 +1 @@
{"version":3,"file":"native-ios.js","sourceRoot":"","sources":["../../src/frameworks/native-ios.ts"],"names":[],"mappings":";;;AAAA,8CAAsD;AAGtD,wBAA8B;AAG9B,MAAa,kBAAmB,SAAQ,YAAS;IAC/C;QACE,KAAK,EAAE,CAAC;IACV,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,OAAsB;QAC9C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE;YAC/B,OAAO,KAAK,CAAC;SACd;QAED,MAAM,KAAK,GAAG,MAAM,IAAA,kBAAO,EAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAExD,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;YACpD,OAAO,IAAI,CAAC;SACb;QAED,OAAO,IAAI,kBAAkB,EAAE,CAAC;IAClC,CAAC;CACF;AAlBD,gDAkBC"}

View file

@ -0,0 +1,7 @@
import { Framework } from ".";
import { MobileProject } from "../project";
export declare class NativeScriptFramework extends Framework {
constructor();
static getFramework(project: MobileProject): Promise<NativeScriptFramework | null>;
}
//# sourceMappingURL=nativescript.d.ts.map

View file

@ -0,0 +1 @@
{"version":3,"file":"nativescript.d.ts","sourceRoot":"","sources":["../../src/frameworks/nativescript.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,qBAAa,qBAAsB,SAAQ,SAAS;;WAKrC,YAAY,CAAC,OAAO,EAAE,aAAa;CAWjD"}

View file

@ -0,0 +1,22 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.NativeScriptFramework = void 0;
const utils_fs_1 = require("@ionic/utils-fs");
const path_1 = require("path");
const _1 = require(".");
class NativeScriptFramework extends _1.Framework {
constructor() {
super();
}
static async getFramework(project) {
if (!project.config.projectRoot) {
return false;
}
if (!(await (0, utils_fs_1.pathExists)((0, path_1.join)(project.config.projectRoot, 'nativescript.config.ts')))) {
return null;
}
return new NativeScriptFramework();
}
}
exports.NativeScriptFramework = NativeScriptFramework;
//# sourceMappingURL=nativescript.js.map

View file

@ -0,0 +1 @@
{"version":3,"file":"nativescript.js","sourceRoot":"","sources":["../../src/frameworks/nativescript.ts"],"names":[],"mappings":";;;AAAA,8CAA6C;AAC7C,+BAA4B;AAE5B,wBAA8B;AAG9B,MAAa,qBAAsB,SAAQ,YAAS;IAClD;QACE,KAAK,EAAE,CAAC;IACV,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,OAAsB;QAC9C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE;YAC/B,OAAO,KAAK,CAAC;SACd;QAED,IAAI,CAAC,CAAC,MAAM,IAAA,qBAAU,EAAC,IAAA,WAAI,EAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,wBAAwB,CAAC,CAAC,CAAC,EAAE;YACnF,OAAO,IAAI,CAAC;SACb;QAED,OAAO,IAAI,qBAAqB,EAAE,CAAC;IACrC,CAAC;CACF;AAhBD,sDAgBC"}

View file

@ -0,0 +1,8 @@
import { Framework } from ".";
import { MobileProject } from "../project";
export declare class ReactNativeFramework extends Framework {
isExpo: boolean;
constructor(isExpo: boolean);
static getFramework(project: MobileProject): Promise<ReactNativeFramework | null>;
}
//# sourceMappingURL=react-native.d.ts.map

View file

@ -0,0 +1 @@
{"version":3,"file":"react-native.d.ts","sourceRoot":"","sources":["../../src/frameworks/react-native.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,qBAAa,oBAAqB,SAAQ,SAAS;IAC9B,MAAM,EAAE,OAAO;gBAAf,MAAM,EAAE,OAAO;WAIrB,YAAY,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;CA0BxF"}

View file

@ -0,0 +1,35 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.ReactNativeFramework = void 0;
const utils_fs_1 = require("@ionic/utils-fs");
const path_1 = require("path");
const _1 = require(".");
class ReactNativeFramework extends _1.Framework {
constructor(isExpo) {
super();
this.isExpo = isExpo;
}
static async getFramework(project) {
var _a;
if (!project.config.projectRoot) {
return null;
}
if (!(await (0, utils_fs_1.pathExists)((0, path_1.join)(project.config.projectRoot, 'app.json')))) {
return null;
}
const packageJson = (_a = (await (0, utils_fs_1.readJSON)((0, path_1.join)(project.config.projectRoot, 'package.json')))) !== null && _a !== void 0 ? _a : {};
const deps = {
...packageJson.dependencies,
...packageJson.devDependencies
};
if (!('react-native' in deps)) {
return null;
}
if ('expo' in deps) {
return new ReactNativeFramework(true);
}
return new ReactNativeFramework(false);
}
}
exports.ReactNativeFramework = ReactNativeFramework;
//# sourceMappingURL=react-native.js.map

View file

@ -0,0 +1 @@
{"version":3,"file":"react-native.js","sourceRoot":"","sources":["../../src/frameworks/react-native.ts"],"names":[],"mappings":";;;AAAA,8CAAuD;AACvD,+BAA4B;AAE5B,wBAA8B;AAG9B,MAAa,oBAAqB,SAAQ,YAAS;IACjD,YAAmB,MAAe;QAChC,KAAK,EAAE,CAAC;QADS,WAAM,GAAN,MAAM,CAAS;IAElC,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,OAAsB;;QAC9C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE;YAC/B,OAAO,IAAI,CAAC;SACb;QAED,IAAI,CAAC,CAAC,MAAM,IAAA,qBAAU,EAAC,IAAA,WAAI,EAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE;YACrE,OAAO,IAAI,CAAC;SACb;QAED,MAAM,WAAW,GAAG,MAAA,CAAC,MAAM,IAAA,mBAAQ,EAAC,IAAA,WAAI,EAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC,CAAC,mCAAI,EAAE,CAAC;QAE7F,MAAM,IAAI,GAAG;YACX,GAAG,WAAW,CAAC,YAAY;YAC3B,GAAG,WAAW,CAAC,eAAe;SAC/B,CAAC;QAEF,IAAI,CAAC,CAAC,cAAc,IAAI,IAAI,CAAC,EAAE;YAC7B,OAAO,IAAI,CAAC;SACb;QAED,IAAI,MAAM,IAAI,IAAI,EAAE;YAClB,OAAO,IAAI,oBAAoB,CAAC,IAAI,CAAC,CAAC;SACvC;QAED,OAAO,IAAI,oBAAoB,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;CACF;AA/BD,oDA+BC"}