appium-uiautomator2-driver 6.6.1 → 6.6.3

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.
Files changed (33) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +14 -9
  3. package/build/lib/commands/screenshot.d.ts +17 -14
  4. package/build/lib/commands/screenshot.d.ts.map +1 -1
  5. package/build/lib/commands/screenshot.js +50 -36
  6. package/build/lib/commands/screenshot.js.map +1 -1
  7. package/build/lib/constraints.d.ts +3 -0
  8. package/build/lib/constraints.d.ts.map +1 -1
  9. package/build/test/unit/commands/general-specs.d.ts +2 -0
  10. package/build/test/unit/commands/general-specs.d.ts.map +1 -0
  11. package/build/test/unit/commands/general-specs.js +80 -0
  12. package/build/test/unit/commands/general-specs.js.map +1 -0
  13. package/build/test/unit/commands/screenshot-specs.d.ts +2 -0
  14. package/build/test/unit/commands/screenshot-specs.d.ts.map +1 -0
  15. package/build/test/unit/commands/screenshot-specs.js +124 -0
  16. package/build/test/unit/commands/screenshot-specs.js.map +1 -0
  17. package/build/test/unit/css-converter-specs.d.ts +2 -0
  18. package/build/test/unit/css-converter-specs.d.ts.map +1 -0
  19. package/build/test/unit/css-converter-specs.js +68 -0
  20. package/build/test/unit/css-converter-specs.js.map +1 -0
  21. package/build/test/unit/driver-specs.d.ts +2 -0
  22. package/build/test/unit/driver-specs.d.ts.map +1 -0
  23. package/build/test/unit/driver-specs.js +328 -0
  24. package/build/test/unit/driver-specs.js.map +1 -0
  25. package/build/test/unit/uiautomator2-specs.d.ts +2 -0
  26. package/build/test/unit/uiautomator2-specs.d.ts.map +1 -0
  27. package/build/test/unit/uiautomator2-specs.js +320 -0
  28. package/build/test/unit/uiautomator2-specs.js.map +1 -0
  29. package/build/tsconfig.tsbuildinfo +1 -1
  30. package/lib/commands/screenshot.ts +146 -0
  31. package/npm-shrinkwrap.json +252 -387
  32. package/package.json +2 -3
  33. package/lib/commands/screenshot.js +0 -116
@@ -0,0 +1,320 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ const appium_adb_1 = require("appium-adb");
40
+ const sinon_1 = __importDefault(require("sinon"));
41
+ const uiautomator2_1 = require("../../lib/uiautomator2");
42
+ const helpers = __importStar(require("../../lib/helpers"));
43
+ const logger_1 = __importDefault(require("../../lib/logger"));
44
+ const chai_1 = require("chai");
45
+ describe('UiAutomator2', function () {
46
+ let uiautomator2;
47
+ const adb = new appium_adb_1.ADB();
48
+ const serverApk = {
49
+ 'appPath': 'path/to/appium-uiautomator2-server.apk',
50
+ 'appId': 'io.appium.uiautomator2.server'
51
+ };
52
+ const serverTestApk = {
53
+ 'appPath': 'path/to/appium-uiautomator2-server-test.apk',
54
+ 'appId': 'io.appium.uiautomator2.server.test'
55
+ };
56
+ const defaultUIA2ServerOptions = {
57
+ systemPort: 4724,
58
+ host: 'localhost',
59
+ disableWindowAnimation: false
60
+ };
61
+ describe('shouldUninstallServerPackages', function () {
62
+ beforeEach(function () {
63
+ uiautomator2 = new uiautomator2_1.UiAutomator2Server(logger_1.default, {
64
+ adb, ...defaultUIA2ServerOptions
65
+ });
66
+ });
67
+ it('with newer servers are installed', function () {
68
+ // @ts-expect-error - private method
69
+ (0, chai_1.expect)(uiautomator2.shouldUninstallServerPackages([
70
+ {
71
+ 'installState': adb.APP_INSTALL_STATE.NEWER_VERSION_INSTALLED,
72
+ ...serverApk
73
+ },
74
+ {
75
+ 'installState': adb.APP_INSTALL_STATE.NEWER_VERSION_INSTALLED,
76
+ ...serverTestApk
77
+ }
78
+ ])).to.be.true;
79
+ }),
80
+ it('with newer server is installed but the other could be old one', function () {
81
+ // Then, enforce to uninstall all apks
82
+ // @ts-expect-error - private method
83
+ (0, chai_1.expect)(uiautomator2.shouldUninstallServerPackages([
84
+ {
85
+ 'installState': adb.APP_INSTALL_STATE.NEWER_VERSION_INSTALLED,
86
+ ...serverApk
87
+ },
88
+ {
89
+ 'installState': adb.APP_INSTALL_STATE.OLDER_VERSION_INSTALLED,
90
+ ...serverTestApk
91
+ }
92
+ ])).to.be.true;
93
+ }),
94
+ it('with newer server is installed', function () {
95
+ // @ts-expect-error - private method
96
+ (0, chai_1.expect)(uiautomator2.shouldUninstallServerPackages([
97
+ {
98
+ 'installState': adb.APP_INSTALL_STATE.SAME_VERSION_INSTALLED,
99
+ ...serverApk
100
+ },
101
+ {
102
+ 'installState': adb.APP_INSTALL_STATE.SAME_VERSION_INSTALLED,
103
+ ...serverTestApk
104
+ }
105
+ ])).to.be.false;
106
+ }),
107
+ it('with older servers are installed', function () {
108
+ // then, installing newer serves are sufficient.
109
+ // @ts-expect-error - private method
110
+ (0, chai_1.expect)(uiautomator2.shouldUninstallServerPackages([
111
+ {
112
+ 'installState': adb.APP_INSTALL_STATE.OLDER_VERSION_INSTALLED,
113
+ ...serverApk
114
+ },
115
+ {
116
+ 'installState': adb.APP_INSTALL_STATE.OLDER_VERSION_INSTALLED,
117
+ ...serverTestApk
118
+ }
119
+ ])).to.be.false;
120
+ }),
121
+ it('with no server are installed', function () {
122
+ // @ts-expect-error - private method
123
+ (0, chai_1.expect)(uiautomator2.shouldUninstallServerPackages([
124
+ {
125
+ 'installState': adb.APP_INSTALL_STATE.NOT_INSTALLED,
126
+ ...serverApk
127
+ },
128
+ {
129
+ 'installState': adb.APP_INSTALL_STATE.NOT_INSTALLED,
130
+ ...serverTestApk
131
+ }
132
+ ])).to.be.false;
133
+ });
134
+ });
135
+ describe('shouldInstallServerPackages', function () {
136
+ beforeEach(function () {
137
+ uiautomator2 = new uiautomator2_1.UiAutomator2Server(logger_1.default, {
138
+ adb, ...defaultUIA2ServerOptions
139
+ });
140
+ });
141
+ it('with newer servers are installed', function () {
142
+ // @ts-expect-error - private method
143
+ (0, chai_1.expect)(uiautomator2.shouldInstallServerPackages([
144
+ {
145
+ 'installState': adb.APP_INSTALL_STATE.NEWER_VERSION_INSTALLED,
146
+ ...serverApk
147
+ },
148
+ {
149
+ 'installState': adb.APP_INSTALL_STATE.NEWER_VERSION_INSTALLED,
150
+ ...serverTestApk
151
+ }
152
+ // since installation may fail
153
+ ])).to.be.false;
154
+ }),
155
+ it('with newer server is installed but the other could be old one', function () {
156
+ // Then, enforce to uninstall all apks
157
+ // @ts-expect-error - private method
158
+ (0, chai_1.expect)(uiautomator2.shouldInstallServerPackages([
159
+ {
160
+ 'installState': adb.APP_INSTALL_STATE.NEWER_VERSION_INSTALLED,
161
+ ...serverApk
162
+ },
163
+ {
164
+ 'installState': adb.APP_INSTALL_STATE.OLDER_VERSION_INSTALLED,
165
+ ...serverTestApk
166
+ }
167
+ ])).to.be.true;
168
+ }),
169
+ it('with newer server is installed', function () {
170
+ // @ts-expect-error - private method
171
+ (0, chai_1.expect)(uiautomator2.shouldInstallServerPackages([
172
+ {
173
+ 'installState': adb.APP_INSTALL_STATE.SAME_VERSION_INSTALLED,
174
+ ...serverApk
175
+ },
176
+ {
177
+ 'installState': adb.APP_INSTALL_STATE.SAME_VERSION_INSTALLED,
178
+ ...serverTestApk
179
+ }
180
+ ])).to.be.false;
181
+ }),
182
+ it('with older servers are installed', function () {
183
+ // then, installing newer serves are sufficient.
184
+ // @ts-expect-error - private method
185
+ (0, chai_1.expect)(uiautomator2.shouldInstallServerPackages([
186
+ {
187
+ 'installState': adb.APP_INSTALL_STATE.OLDER_VERSION_INSTALLED,
188
+ ...serverApk
189
+ },
190
+ {
191
+ 'installState': adb.APP_INSTALL_STATE.OLDER_VERSION_INSTALLED,
192
+ ...serverTestApk
193
+ }
194
+ ])).to.be.true;
195
+ }),
196
+ it('with no server are installed', function () {
197
+ // @ts-expect-error - private method
198
+ (0, chai_1.expect)(uiautomator2.shouldInstallServerPackages([
199
+ {
200
+ 'installState': adb.APP_INSTALL_STATE.NOT_INSTALLED,
201
+ ...serverApk
202
+ },
203
+ {
204
+ 'installState': adb.APP_INSTALL_STATE.NOT_INSTALLED,
205
+ ...serverTestApk
206
+ }
207
+ ])).to.be.true;
208
+ });
209
+ });
210
+ describe('installServerApk', function () {
211
+ let mockAdb;
212
+ let mockHelpers;
213
+ let testAdb;
214
+ beforeEach(function () {
215
+ testAdb = new appium_adb_1.ADB();
216
+ mockAdb = sinon_1.default.mock(testAdb);
217
+ mockHelpers = sinon_1.default.mock(helpers);
218
+ uiautomator2 = new uiautomator2_1.UiAutomator2Server(logger_1.default, {
219
+ adb: testAdb, ...defaultUIA2ServerOptions
220
+ });
221
+ });
222
+ afterEach(function () {
223
+ mockAdb.verify();
224
+ mockHelpers.verify();
225
+ mockAdb.restore();
226
+ mockHelpers.restore();
227
+ });
228
+ it('new server and server.test are older than installed version', async function () {
229
+ mockHelpers.expects('isWriteable').never();
230
+ // SERVER_PACKAGE_ID
231
+ mockAdb.expects('getApplicationInstallState').once()
232
+ .returns(adb.APP_INSTALL_STATE.NEWER_VERSION_INSTALLED);
233
+ mockAdb.expects('uninstallApk').twice();
234
+ mockAdb.expects('install').twice();
235
+ mockAdb.expects('isAppInstalled')
236
+ .withExactArgs(uiautomator2_1.SERVER_TEST_PACKAGE_ID)
237
+ .once().returns(true);
238
+ mockAdb.expects('shell')
239
+ .withExactArgs(['pm', 'list', 'instrumentation'])
240
+ .once().returns(uiautomator2_1.INSTRUMENTATION_TARGET);
241
+ await uiautomator2.installServerApk();
242
+ });
243
+ it('new server and server.test are newer than installed version', async function () {
244
+ mockHelpers.expects('isWriteable').never();
245
+ // SERVER_PACKAGE_ID
246
+ mockAdb.expects('getApplicationInstallState').once()
247
+ .returns(adb.APP_INSTALL_STATE.OLDER_VERSION_INSTALLED);
248
+ mockAdb.expects('isAppInstalled')
249
+ .withExactArgs(uiautomator2_1.SERVER_TEST_PACKAGE_ID)
250
+ .once().returns(true);
251
+ mockAdb.expects('uninstallApk').never();
252
+ mockAdb.expects('install').twice();
253
+ mockAdb.expects('shell')
254
+ .withExactArgs(['pm', 'list', 'instrumentation'])
255
+ .once().returns(uiautomator2_1.INSTRUMENTATION_TARGET);
256
+ await uiautomator2.installServerApk();
257
+ });
258
+ it('new server and server.test are the same as installed version', async function () {
259
+ mockHelpers.expects('isWriteable').never();
260
+ // SERVER_PACKAGE_ID
261
+ mockAdb.expects('getApplicationInstallState').once()
262
+ .returns(adb.APP_INSTALL_STATE.SAME_VERSION_INSTALLED);
263
+ mockAdb.expects('isAppInstalled')
264
+ .withExactArgs(uiautomator2_1.SERVER_TEST_PACKAGE_ID)
265
+ .once().returns(true);
266
+ mockAdb.expects('uninstallApk').never();
267
+ mockAdb.expects('install').never();
268
+ mockAdb.expects('shell')
269
+ .withExactArgs(['pm', 'list', 'instrumentation'])
270
+ .once().returns(uiautomator2_1.INSTRUMENTATION_TARGET);
271
+ await uiautomator2.installServerApk();
272
+ });
273
+ it('new server and server.test are not installed', async function () {
274
+ mockHelpers.expects('isWriteable').never();
275
+ // SERVER_PACKAGE_ID
276
+ mockAdb.expects('getApplicationInstallState').once()
277
+ .returns(adb.APP_INSTALL_STATE.NOT_INSTALLED);
278
+ // SERVER_TEST_PACKAGE_ID
279
+ mockAdb.expects('isAppInstalled')
280
+ .withExactArgs(uiautomator2_1.SERVER_TEST_PACKAGE_ID)
281
+ .once().returns(false);
282
+ mockAdb.expects('uninstallApk').never();
283
+ mockAdb.expects('install').twice();
284
+ mockAdb.expects('shell').withExactArgs(['pm', 'list', 'instrumentation'])
285
+ .once().returns(uiautomator2_1.INSTRUMENTATION_TARGET);
286
+ await uiautomator2.installServerApk();
287
+ });
288
+ it('version numbers of new server and server.test are unknown', async function () {
289
+ mockHelpers.expects('isWriteable').never();
290
+ // SERVER_PACKAGE_ID
291
+ mockAdb.expects('getApplicationInstallState').once()
292
+ .returns(adb.APP_INSTALL_STATE.UNKNOWN);
293
+ mockAdb.expects('isAppInstalled')
294
+ .withExactArgs(uiautomator2_1.SERVER_TEST_PACKAGE_ID)
295
+ .once().returns(false);
296
+ mockAdb.expects('uninstallApk').twice();
297
+ mockAdb.expects('install').twice();
298
+ mockAdb.expects('shell')
299
+ .withExactArgs(['pm', 'list', 'instrumentation'])
300
+ .once().returns(uiautomator2_1.INSTRUMENTATION_TARGET);
301
+ await uiautomator2.installServerApk();
302
+ });
303
+ it('a server is installed but server.test is not', async function () {
304
+ mockHelpers.expects('isWriteable').never();
305
+ // SERVER_PACKAGE_ID
306
+ mockAdb.expects('getApplicationInstallState').once()
307
+ .returns(adb.APP_INSTALL_STATE.SAME_VERSION_INSTALLED);
308
+ mockAdb.expects('isAppInstalled')
309
+ .withExactArgs(uiautomator2_1.SERVER_TEST_PACKAGE_ID)
310
+ .once().returns(false);
311
+ mockAdb.expects('uninstallApk').twice();
312
+ mockAdb.expects('install').twice();
313
+ mockAdb.expects('shell')
314
+ .withExactArgs(['pm', 'list', 'instrumentation'])
315
+ .once().returns(uiautomator2_1.INSTRUMENTATION_TARGET);
316
+ await uiautomator2.installServerApk();
317
+ });
318
+ });
319
+ });
320
+ //# sourceMappingURL=uiautomator2-specs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uiautomator2-specs.js","sourceRoot":"","sources":["../../../test/unit/uiautomator2-specs.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAAiC;AACjC,kDAA0B;AAC1B,yDAEgC;AAChC,2DAA6C;AAC7C,8DAAmC;AACnC,+BAA4B;AAE5B,QAAQ,CAAC,cAAc,EAAE;IACvB,IAAI,YAAgC,CAAC;IAErC,MAAM,GAAG,GAAG,IAAI,gBAAG,EAAE,CAAC;IACtB,MAAM,SAAS,GAAG;QAChB,SAAS,EAAE,wCAAwC;QACnD,OAAO,EAAE,+BAA+B;KACzC,CAAC;IACF,MAAM,aAAa,GAAG;QACpB,SAAS,EAAE,6CAA6C;QACxD,OAAO,EAAE,oCAAoC;KAC9C,CAAC;IACF,MAAM,wBAAwB,GAAG;QAC/B,UAAU,EAAE,IAAI;QAChB,IAAI,EAAE,WAAW;QACjB,sBAAsB,EAAE,KAAK;KAC9B,CAAC;IAEF,QAAQ,CAAC,+BAA+B,EAAE;QACxC,UAAU,CAAC;YACT,YAAY,GAAG,IAAI,iCAAkB,CAAC,gBAAG,EAAE;gBACzC,GAAG,EAAE,GAAG,wBAAwB;aACjC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,kCAAkC,EAAE;YACrC,oCAAoC;YACpC,IAAA,aAAM,EAAC,YAAY,CAAC,6BAA6B,CAAC;gBAChD;oBACE,cAAc,EAAE,GAAG,CAAC,iBAAiB,CAAC,uBAAuB;oBAC7D,GAAG,SAAS;iBACb;gBACD;oBACE,cAAc,EAAE,GAAG,CAAC,iBAAiB,CAAC,uBAAuB;oBAC7D,GAAG,aAAa;iBACjB;aACF,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QACjB,CAAC,CAAC;YACF,EAAE,CAAC,+DAA+D,EAAE;gBAClE,sCAAsC;gBACtC,oCAAoC;gBACpC,IAAA,aAAM,EAAC,YAAY,CAAC,6BAA6B,CAAC;oBAChD;wBACE,cAAc,EAAE,GAAG,CAAC,iBAAiB,CAAC,uBAAuB;wBAC7D,GAAG,SAAS;qBACb;oBACD;wBACE,cAAc,EAAE,GAAG,CAAC,iBAAiB,CAAC,uBAAuB;wBAC7D,GAAG,aAAa;qBACjB;iBACF,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;YACjB,CAAC,CAAC;YACF,EAAE,CAAC,gCAAgC,EAAE;gBACnC,oCAAoC;gBACpC,IAAA,aAAM,EAAC,YAAY,CAAC,6BAA6B,CAAC;oBAChD;wBACE,cAAc,EAAE,GAAG,CAAC,iBAAiB,CAAC,sBAAsB;wBAC5D,GAAG,SAAS;qBACb;oBACD;wBACE,cAAc,EAAE,GAAG,CAAC,iBAAiB,CAAC,sBAAsB;wBAC5D,GAAG,aAAa;qBACjB;iBACF,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;YAClB,CAAC,CAAC;YACF,EAAE,CAAC,kCAAkC,EAAE;gBACrC,gDAAgD;gBAChD,oCAAoC;gBACpC,IAAA,aAAM,EAAC,YAAY,CAAC,6BAA6B,CAAC;oBAChD;wBACE,cAAc,EAAE,GAAG,CAAC,iBAAiB,CAAC,uBAAuB;wBAC7D,GAAG,SAAS;qBACb;oBACD;wBACE,cAAc,EAAE,GAAG,CAAC,iBAAiB,CAAC,uBAAuB;wBAC7D,GAAG,aAAa;qBACjB;iBACF,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;YAClB,CAAC,CAAC;YACF,EAAE,CAAC,8BAA8B,EAAE;gBACjC,oCAAoC;gBACpC,IAAA,aAAM,EAAC,YAAY,CAAC,6BAA6B,CAAC;oBAChD;wBACE,cAAc,EAAE,GAAG,CAAC,iBAAiB,CAAC,aAAa;wBACnD,GAAG,SAAS;qBACb;oBACD;wBACE,cAAc,EAAE,GAAG,CAAC,iBAAiB,CAAC,aAAa;wBACnD,GAAG,aAAa;qBACjB;iBACF,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;YAClB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,6BAA6B,EAAE;QACtC,UAAU,CAAC;YACT,YAAY,GAAG,IAAI,iCAAkB,CAAC,gBAAG,EAAE;gBACzC,GAAG,EAAE,GAAG,wBAAwB;aACjC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,kCAAkC,EAAE;YACrC,oCAAoC;YACpC,IAAA,aAAM,EAAC,YAAY,CAAC,2BAA2B,CAAC;gBAC9C;oBACE,cAAc,EAAE,GAAG,CAAC,iBAAiB,CAAC,uBAAuB;oBAC7D,GAAG,SAAS;iBACb;gBACD;oBACE,cAAc,EAAE,GAAG,CAAC,iBAAiB,CAAC,uBAAuB;oBAC7D,GAAG,aAAa;iBACjB;gBACH,8BAA8B;aAC7B,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;QAClB,CAAC,CAAC;YACF,EAAE,CAAC,+DAA+D,EAAE;gBAClE,sCAAsC;gBACtC,oCAAoC;gBACpC,IAAA,aAAM,EAAC,YAAY,CAAC,2BAA2B,CAAC;oBAC9C;wBACE,cAAc,EAAE,GAAG,CAAC,iBAAiB,CAAC,uBAAuB;wBAC7D,GAAG,SAAS;qBACb;oBACD;wBACE,cAAc,EAAE,GAAG,CAAC,iBAAiB,CAAC,uBAAuB;wBAC7D,GAAG,aAAa;qBACjB;iBACF,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;YACjB,CAAC,CAAC;YACF,EAAE,CAAC,gCAAgC,EAAE;gBACnC,oCAAoC;gBACpC,IAAA,aAAM,EAAC,YAAY,CAAC,2BAA2B,CAAC;oBAC9C;wBACE,cAAc,EAAE,GAAG,CAAC,iBAAiB,CAAC,sBAAsB;wBAC5D,GAAG,SAAS;qBACb;oBACD;wBACE,cAAc,EAAE,GAAG,CAAC,iBAAiB,CAAC,sBAAsB;wBAC5D,GAAG,aAAa;qBACjB;iBACF,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;YAClB,CAAC,CAAC;YACF,EAAE,CAAC,kCAAkC,EAAE;gBACrC,gDAAgD;gBAChD,oCAAoC;gBACpC,IAAA,aAAM,EAAC,YAAY,CAAC,2BAA2B,CAAC;oBAC9C;wBACE,cAAc,EAAE,GAAG,CAAC,iBAAiB,CAAC,uBAAuB;wBAC7D,GAAG,SAAS;qBACb;oBACD;wBACE,cAAc,EAAE,GAAG,CAAC,iBAAiB,CAAC,uBAAuB;wBAC7D,GAAG,aAAa;qBACjB;iBACF,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;YACjB,CAAC,CAAC;YACF,EAAE,CAAC,8BAA8B,EAAE;gBACjC,oCAAoC;gBACpC,IAAA,aAAM,EAAC,YAAY,CAAC,2BAA2B,CAAC;oBAC9C;wBACE,cAAc,EAAE,GAAG,CAAC,iBAAiB,CAAC,aAAa;wBACnD,GAAG,SAAS;qBACb;oBACD;wBACE,cAAc,EAAE,GAAG,CAAC,iBAAiB,CAAC,aAAa;wBACnD,GAAG,aAAa;qBACjB;iBACF,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;YACjB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,kBAAkB,EAAE;QAC3B,IAAI,OAAwB,CAAC;QAC7B,IAAI,WAA4B,CAAC;QACjC,IAAI,OAAY,CAAC;QAEjB,UAAU,CAAC;YACT,OAAO,GAAG,IAAI,gBAAG,EAAE,CAAC;YACpB,OAAO,GAAG,eAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC9B,WAAW,GAAG,eAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAElC,YAAY,GAAG,IAAI,iCAAkB,CAAC,gBAAG,EAAE;gBACzC,GAAG,EAAE,OAAO,EAAE,GAAG,wBAAwB;aAC1C,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,SAAS,CAAC;YACR,OAAO,CAAC,MAAM,EAAE,CAAC;YACjB,WAAW,CAAC,MAAM,EAAE,CAAC;YACrB,OAAO,CAAC,OAAO,EAAE,CAAC;YAClB,WAAW,CAAC,OAAO,EAAE,CAAC;QACxB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6DAA6D,EAAE,KAAK;YACrE,WAAW,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE,CAAC;YAE3C,oBAAoB;YACpB,OAAO,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC,IAAI,EAAE;iBACjD,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,CAAC;YAE1D,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,KAAK,EAAE,CAAC;YACxC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,CAAC;YAEnC,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC;iBAC9B,aAAa,CAAC,qCAAsB,CAAC;iBACrC,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAExB,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;iBACrB,aAAa,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,iBAAiB,CAAC,CAAC;iBAChD,IAAI,EAAE,CAAC,OAAO,CAAC,qCAAsB,CAAC,CAAC;YAC1C,MAAM,YAAY,CAAC,gBAAgB,EAAE,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6DAA6D,EAAE,KAAK;YACrE,WAAW,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE,CAAC;YAE3C,oBAAoB;YACpB,OAAO,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC,IAAI,EAAE;iBACjD,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,CAAC;YAE1D,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC;iBAC9B,aAAa,CAAC,qCAAsB,CAAC;iBACrC,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAExB,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,KAAK,EAAE,CAAC;YACxC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,CAAC;YAEnC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;iBACrB,aAAa,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,iBAAiB,CAAC,CAAC;iBAChD,IAAI,EAAE,CAAC,OAAO,CAAC,qCAAsB,CAAC,CAAC;YAC1C,MAAM,YAAY,CAAC,gBAAgB,EAAE,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8DAA8D,EAAE,KAAK;YACtE,WAAW,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE,CAAC;YAE3C,oBAAoB;YACpB,OAAO,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC,IAAI,EAAE;iBACjD,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,sBAAsB,CAAC,CAAC;YAEzD,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC;iBAC9B,aAAa,CAAC,qCAAsB,CAAC;iBACrC,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAExB,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,KAAK,EAAE,CAAC;YACxC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,CAAC;YAEnC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;iBACrB,aAAa,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,iBAAiB,CAAC,CAAC;iBAChD,IAAI,EAAE,CAAC,OAAO,CAAC,qCAAsB,CAAC,CAAC;YAC1C,MAAM,YAAY,CAAC,gBAAgB,EAAE,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8CAA8C,EAAE,KAAK;YACtD,WAAW,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE,CAAC;YAE3C,oBAAoB;YACpB,OAAO,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC,IAAI,EAAE;iBACjD,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;YAEhD,yBAAyB;YACzB,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC;iBAC9B,aAAa,CAAC,qCAAsB,CAAC;iBACrC,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAEzB,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,KAAK,EAAE,CAAC;YACxC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,CAAC;YAEnC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,iBAAiB,CAAC,CAAC;iBACtE,IAAI,EAAE,CAAC,OAAO,CAAC,qCAAsB,CAAC,CAAC;YAC1C,MAAM,YAAY,CAAC,gBAAgB,EAAE,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2DAA2D,EAAE,KAAK;YACnE,WAAW,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE,CAAC;YAE3C,oBAAoB;YACpB,OAAO,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC,IAAI,EAAE;iBACjD,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YAE1C,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC;iBAC9B,aAAa,CAAC,qCAAsB,CAAC;iBACrC,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAEzB,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,KAAK,EAAE,CAAC;YACxC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,CAAC;YAEnC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;iBACrB,aAAa,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,iBAAiB,CAAC,CAAC;iBAChD,IAAI,EAAE,CAAC,OAAO,CAAC,qCAAsB,CAAC,CAAC;YAC1C,MAAM,YAAY,CAAC,gBAAgB,EAAE,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8CAA8C,EAAE,KAAK;YACtD,WAAW,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE,CAAC;YAE3C,oBAAoB;YACpB,OAAO,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC,IAAI,EAAE;iBACjD,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,sBAAsB,CAAC,CAAC;YAEzD,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC;iBAC9B,aAAa,CAAC,qCAAsB,CAAC;iBACrC,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAEzB,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,KAAK,EAAE,CAAC;YACxC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,CAAC;YAEnC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;iBACrB,aAAa,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,iBAAiB,CAAC,CAAC;iBAChD,IAAI,EAAE,CAAC,OAAO,CAAC,qCAAsB,CAAC,CAAC;YAC1C,MAAM,YAAY,CAAC,gBAAgB,EAAE,CAAC;QACxC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}