@wavemaker/app-ng-runtime 11.14.1-3.6306 → 11.14.1-6.6324

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 (44) hide show
  1. package/components/base/bundles/index.umd.js +7 -75
  2. package/components/base/esm2022/pipes/custom-pipes.mjs +1 -1
  3. package/components/base/esm2022/widgets/common/base/base.component.mjs +7 -68
  4. package/components/base/esm2022/widgets/common/lazy-load/lazy-load.directive.mjs +2 -4
  5. package/components/base/esm2022/widgets/framework/property-change-handler.mjs +2 -7
  6. package/components/base/fesm2022/index.mjs +8 -76
  7. package/components/base/fesm2022/index.mjs.map +1 -1
  8. package/components/basic/label/bundles/index.umd.js +1 -9
  9. package/components/basic/label/esm2022/label.directive.mjs +2 -10
  10. package/components/basic/label/fesm2022/index.mjs +1 -9
  11. package/components/basic/label/fesm2022/index.mjs.map +1 -1
  12. package/components/data/table/bundles/index.umd.js +11 -218
  13. package/components/data/table/esm2022/table.component.mjs +12 -219
  14. package/components/data/table/fesm2022/index.mjs +11 -218
  15. package/components/data/table/fesm2022/index.mjs.map +1 -1
  16. package/components/data/table/table.component.d.ts +2 -6
  17. package/components/navigation/menu/bundles/index.umd.js +0 -5
  18. package/components/navigation/menu/esm2022/menu.component.mjs +1 -6
  19. package/components/navigation/menu/fesm2022/index.mjs +0 -5
  20. package/components/navigation/menu/fesm2022/index.mjs.map +1 -1
  21. package/components/navigation/popover/bundles/index.umd.js +6 -6
  22. package/components/navigation/popover/esm2022/popover.component.mjs +4 -4
  23. package/components/navigation/popover/fesm2022/index.mjs +3 -3
  24. package/components/navigation/popover/fesm2022/index.mjs.map +1 -1
  25. package/components/navigation/popover/popover.component.d.ts +0 -6
  26. package/core/bundles/index.umd.js +82 -326
  27. package/core/esm2022/public_api.mjs +2 -2
  28. package/core/esm2022/utils/watcher.mjs +81 -323
  29. package/core/fesm2022/index.mjs +84 -326
  30. package/core/fesm2022/index.mjs.map +1 -1
  31. package/core/public_api.d.ts +1 -1
  32. package/core/utils/watcher.d.ts +5 -26
  33. package/npm-shrinkwrap.json +2 -2
  34. package/package-lock.json +2 -2
  35. package/package.json +1 -1
  36. package/runtime/base/bundles/index.umd.js +0 -35
  37. package/runtime/base/esm2022/components/app-component/app.component.mjs +2 -7
  38. package/runtime/base/esm2022/components/base-page.component.mjs +2 -9
  39. package/runtime/base/esm2022/components/base-partial.component.mjs +2 -10
  40. package/runtime/base/esm2022/components/base-prefab.component.mjs +2 -10
  41. package/runtime/base/esm2022/components/base-spa-page.component.mjs +2 -9
  42. package/runtime/base/fesm2022/index.mjs +1 -36
  43. package/runtime/base/fesm2022/index.mjs.map +1 -1
  44. package/scripts/datatable/datatable.js +2 -19
@@ -1450,11 +1450,11 @@
1450
1450
  }
1451
1451
  };
1452
1452
 
1453
- const $RAF = window.requestAnimationFrame;
1453
+ const $RAF$1 = window.requestAnimationFrame;
1454
1454
  const $RAFQueue = [];
1455
1455
  const invokeLater = fn => {
1456
1456
  if (!$RAFQueue.length) {
1457
- $RAF(() => {
1457
+ $RAF$1(() => {
1458
1458
  $RAFQueue.forEach(f => f());
1459
1459
  $RAFQueue.length = 0;
1460
1460
  });
@@ -2191,25 +2191,14 @@
2191
2191
  return fnExecutor(expr, ExpressionType.Action);
2192
2192
  };
2193
2193
 
2194
- // Constants
2195
- const WIDGET_ID_REGEX = /^(widget-[^_]+)/;
2196
- const WIDGET_PROPERTY_REGEX = /^widget-[^_]+_(.+)$/;
2197
- const ARRAY_INDEX_PLACEHOLDER = '[$i]';
2198
- const ARRAY_INDEX_ZERO = '[0]';
2199
- const DEBOUNCE_WAIT = 100;
2200
- const MAX_WATCH_CYCLES = 5;
2201
2194
  const registry = new Map();
2202
2195
  const watchIdGenerator = new IDGenerator('watch-id-');
2203
- const FIRST_TIME_WATCH = Object.freeze({});
2204
- // State
2196
+ const FIRST_TIME_WATCH = {};
2197
+ Object.freeze(FIRST_TIME_WATCH);
2198
+ const isFirstTimeChange = v => v === FIRST_TIME_WATCH;
2205
2199
  let muted = false;
2206
- let changedByWatch = false;
2207
- let skipWatchers = false;
2208
- let ngZone;
2209
2200
  let appRef;
2210
- // Utility functions
2211
- const isFirstTimeChange = (v) => v === FIRST_TIME_WATCH;
2212
- const debounce = (fn, wait = DEBOUNCE_WAIT) => {
2201
+ const debounce = (fn, wait = 50) => {
2213
2202
  let timeout;
2214
2203
  return (...args) => {
2215
2204
  window['__zone_symbol__clearTimeout'](timeout);
@@ -2223,345 +2212,115 @@
2223
2212
  muted = false;
2224
2213
  triggerWatchers();
2225
2214
  };
2226
- /**
2227
- * Extracts widget ID from identifier (e.g., "widget-id23_eventsource" -> "widget-id23")
2228
- */
2229
- const getWidgetId = (identifier) => {
2230
- if (!identifier || typeof identifier !== 'string') {
2231
- return null;
2232
- }
2233
- const match = identifier.match(WIDGET_ID_REGEX);
2234
- return match ? match[1] : null;
2235
- };
2236
- /**
2237
- * Extracts property name from identifier (e.g., "widget-id23_eventsource" -> "eventsource")
2238
- */
2239
- const getPropertyName = (identifier) => {
2240
- if (!identifier || typeof identifier !== 'string') {
2241
- return identifier;
2242
- }
2243
- const match = identifier.match(WIDGET_PROPERTY_REGEX);
2244
- return match ? match[1] : identifier;
2245
- };
2246
- /**
2247
- * Array consumer wrapper for array-based expressions
2248
- */
2249
2215
  const arrayConsumer = (listenerFn, restExpr, newVal, oldVal) => {
2250
- if (!lodashEs.isArray(newVal)) {
2251
- return;
2252
- }
2253
- let formattedData = newVal.map(datum => findValueOf(datum, restExpr));
2254
- // Flatten if result is array of arrays
2255
- if (lodashEs.isArray(formattedData[0])) {
2256
- formattedData = lodashEs.flatten(formattedData);
2216
+ let data = newVal, formattedData;
2217
+ if (lodashEs.isArray(data)) {
2218
+ formattedData = data.map(function (datum) {
2219
+ return findValueOf(datum, restExpr);
2220
+ });
2221
+ // If resulting structure is an array of array, flatten it
2222
+ if (lodashEs.isArray(formattedData[0])) {
2223
+ formattedData = lodashEs.flatten(formattedData);
2224
+ }
2225
+ listenerFn(formattedData, oldVal);
2257
2226
  }
2258
- listenerFn(formattedData, oldVal);
2259
2227
  };
2260
- /**
2261
- * Updates watch info for array expressions
2262
- */
2263
- const getUpdatedWatchInfo = (expr, acceptsArray, listener) => {
2264
- const regex = /\[\$i\]/g;
2228
+ const getUpdatedWatcInfo = (expr, acceptsArray, listener) => {
2229
+ // listener doesn't accept array
2230
+ // replace all `[$i]` with `[0]` and return the expression
2231
+ let regex = /\[\$i\]/g, $I = '[$i]', $0 = '[0]';
2265
2232
  if (!acceptsArray) {
2266
2233
  return {
2267
- expr: expr.replace(regex, ARRAY_INDEX_ZERO),
2268
- listener
2234
+ 'expr': expr.replace(regex, $0),
2235
+ 'listener': listener
2269
2236
  };
2270
2237
  }
2271
- const lastIndex = expr.lastIndexOf(ARRAY_INDEX_PLACEHOLDER);
2272
- const baseExpr = expr.substring(0, lastIndex).replace(ARRAY_INDEX_PLACEHOLDER, ARRAY_INDEX_ZERO);
2273
- const restExpr = expr.substring(lastIndex + ARRAY_INDEX_PLACEHOLDER.length);
2274
- const arrayConsumerFn = restExpr
2275
- ? arrayConsumer.bind(undefined, listener, restExpr)
2276
- : listener;
2238
+ // listener accepts array
2239
+ // replace all except the last `[$i]` with `[0]` and return the expression.
2240
+ var index = expr.lastIndexOf($I), _expr = expr.substr(0, index).replace($I, $0), restExpr = expr.substr(index + 5), arrayConsumerFn = listener;
2241
+ if (restExpr) {
2242
+ arrayConsumerFn = arrayConsumer.bind(undefined, listener, restExpr);
2243
+ }
2277
2244
  return {
2278
- expr: baseExpr,
2279
- listener: arrayConsumerFn
2245
+ 'expr': _expr,
2246
+ 'listener': arrayConsumerFn
2280
2247
  };
2281
2248
  };
2282
- /**
2283
- * Determines if an expression is static (doesn't need to be watched)
2284
- */
2285
- const STATIC_EXPRESSION_NAMES = [
2286
- "row.getProperty('investment')",
2287
- "row.getProperty('factsheetLink')",
2288
- "row.getProperty('isRebalanceEligible')"
2289
- ];
2290
- const isStaticExpression = (expr) => {
2291
- if (typeof expr !== 'string') {
2292
- return false;
2293
- }
2294
- const trimmedExpr = expr.trim();
2295
- // Expressions that always evaluate to localization strings
2296
- if (trimmedExpr.includes('appLocale')) {
2297
- return true;
2298
- }
2299
- // Hard-coded static expression names
2300
- if (STATIC_EXPRESSION_NAMES.includes(trimmedExpr)) {
2301
- return true;
2302
- }
2303
- return false;
2304
- };
2305
- /**
2306
- * Gets the scope type from the scope object
2307
- */
2308
- const getScopeType = ($scope) => {
2309
- if (!$scope) {
2310
- return null;
2311
- }
2312
- if ($scope.pageName)
2313
- return 'Page';
2314
- if ($scope.prefabName)
2315
- return 'Prefab';
2316
- if ($scope.partialName)
2317
- return 'Partial';
2318
- // Check for App scope
2319
- if ($scope.Variables !== undefined &&
2320
- $scope.Actions !== undefined &&
2321
- !$scope.pageName &&
2322
- !$scope.prefabName &&
2323
- !$scope.partialName) {
2324
- return 'App';
2325
- }
2326
- if ($scope.constructor?.name === 'AppRef') {
2327
- return 'App';
2328
- }
2329
- return null;
2330
- };
2331
- /**
2332
- * Gets scope name based on scope type
2333
- */
2334
- const getScopeName = ($scope, scopeType) => {
2335
- if (!scopeType || !$scope) {
2336
- return null;
2337
- }
2338
- switch (scopeType) {
2339
- case 'Prefab': return $scope.prefabName || null;
2340
- case 'Partial': return $scope.partialName || null;
2341
- case 'Page': return $scope.pageName || null;
2342
- default: return null;
2343
- }
2344
- };
2345
- /**
2346
- * Main watch function
2347
- */
2348
2249
  const $watch = (expr, $scope, $locals, listener, identifier = watchIdGenerator.nextUid(), doNotClone = false, config = {}, isMuted) => {
2349
- // Handle array expressions
2350
- if (expr.includes(ARRAY_INDEX_PLACEHOLDER)) {
2351
- const watchInfo = getUpdatedWatchInfo(expr, config.arrayType || config.isList || false, listener);
2250
+ if (expr.indexOf('[$i]') !== -1) {
2251
+ let watchInfo = getUpdatedWatcInfo(expr, config && (config.arrayType || config.isList), listener);
2352
2252
  expr = watchInfo.expr;
2353
2253
  listener = watchInfo.listener;
2354
2254
  }
2355
- // Handle static expressions
2356
- if (isStaticExpression(expr)) {
2357
- try {
2358
- const fn = $parseExpr(expr);
2359
- const staticValue = fn($scope, $locals);
2360
- listener(staticValue, FIRST_TIME_WATCH);
2361
- }
2362
- catch (e) {
2363
- console.warn(`Error evaluating static expression '${expr}':`, e);
2364
- listener(undefined, FIRST_TIME_WATCH);
2365
- }
2366
- return () => { }; // No-op unsubscribe
2367
- }
2368
2255
  const fn = $parseExpr(expr);
2369
- const scopeType = getScopeType($scope);
2370
- const scopeName = getScopeName($scope, scopeType);
2371
- const watchInfo = {
2372
- fn: fn.bind(null, $scope, $locals),
2256
+ registry.set(identifier, {
2257
+ fn: fn.bind(expr, $scope, $locals),
2373
2258
  listener,
2374
2259
  expr,
2375
2260
  last: FIRST_TIME_WATCH,
2376
2261
  doNotClone,
2377
- isMuted,
2378
- scopeType,
2379
- scopeName
2380
- };
2381
- // Store in registry
2382
- const widgetId = getWidgetId(identifier);
2383
- if (widgetId) {
2384
- const propertyName = getPropertyName(identifier);
2385
- if (!registry.has(widgetId)) {
2386
- registry.set(widgetId, {});
2387
- }
2388
- const widgetGroup = registry.get(widgetId);
2389
- widgetGroup[propertyName] = watchInfo;
2390
- }
2391
- else {
2392
- registry.set(identifier, watchInfo);
2393
- }
2394
- return () => $unwatch(identifier);
2395
- };
2396
- /**
2397
- * Unwatches a single identifier
2398
- */
2399
- const $unwatch = (identifier) => {
2400
- const widgetId = getWidgetId(identifier);
2401
- if (widgetId) {
2402
- const propertyName = getPropertyName(identifier);
2403
- const widgetGroup = registry.get(widgetId);
2404
- if (widgetGroup && typeof widgetGroup === 'object' && !widgetGroup.fn) {
2405
- const watchInfo = widgetGroup[propertyName];
2406
- if (watchInfo) {
2407
- delete widgetGroup[propertyName];
2408
- // Clean up empty widget groups
2409
- if (Object.keys(widgetGroup).length === 0) {
2410
- registry.delete(widgetId);
2411
- }
2412
- return true;
2413
- }
2414
- }
2415
- }
2416
- // Fallback to direct lookup
2417
- if (registry.has(identifier)) {
2418
- registry.delete(identifier);
2419
- return true;
2420
- }
2421
- return false;
2422
- };
2423
- /**
2424
- * Unwatches all watchers for a specific widget ID
2425
- */
2426
- const $unwatchAll = (widgetId) => {
2427
- if (!widgetId || typeof widgetId !== 'string') {
2428
- return 0;
2429
- }
2430
- const widgetGroup = registry.get(widgetId);
2431
- if (widgetGroup && typeof widgetGroup === 'object' && !widgetGroup.fn) {
2432
- const count = Object.keys(widgetGroup).length;
2433
- registry.delete(widgetId);
2434
- return count;
2435
- }
2436
- // Fallback: find all identifiers starting with this widget ID
2437
- let removedCount = 0;
2438
- const identifiersToRemove = [];
2439
- registry.forEach((_, key) => {
2440
- if (key.startsWith(widgetId + '_')) {
2441
- identifiersToRemove.push(key);
2442
- }
2262
+ isMuted: isMuted
2443
2263
  });
2444
- identifiersToRemove.forEach(identifier => {
2445
- if ($unwatch(identifier)) {
2446
- removedCount++;
2447
- }
2448
- });
2449
- return removedCount;
2450
- };
2451
- /**
2452
- * Unwatches all watchers for a specific scope (Page, Prefab, Partial, or App)
2453
- * Now works directly with the main registry instead of separate scoped registries
2454
- */
2455
- const $unwatchAllByScope = (scopeType, scopeName) => {
2456
- if (!scopeType) {
2457
- return 0;
2458
- }
2459
- let removedCount = 0;
2460
- const identifiersToRemove = [];
2461
- registry.forEach((value, key) => {
2462
- // Handle grouped structure (widget groups)
2463
- if (value && typeof value === 'object' && !value.fn) {
2464
- Object.entries(value).forEach(([propertyName, watchInfo]) => {
2465
- if (watchInfo?.scopeType === scopeType &&
2466
- (!scopeName || watchInfo.scopeName === scopeName)) {
2467
- identifiersToRemove.push(`${key}_${propertyName}`);
2468
- }
2469
- });
2470
- }
2471
- else {
2472
- // Direct watchInfo
2473
- const watchInfo = value;
2474
- if (watchInfo?.scopeType === scopeType &&
2475
- (!scopeName || watchInfo.scopeName === scopeName)) {
2476
- identifiersToRemove.push(key);
2477
- }
2478
- }
2479
- });
2480
- // Unwatch all collected identifiers
2481
- identifiersToRemove.forEach(identifier => {
2482
- if ($unwatch(identifier)) {
2483
- removedCount++;
2484
- }
2485
- });
2486
- return removedCount;
2487
- };
2488
- /**
2489
- * Processes a single watch info during trigger cycle
2490
- */
2491
- const processWatchInfo = (watchInfo) => {
2492
- if (!watchInfo?.fn || (watchInfo.isMuted?.() ?? false)) {
2493
- return false;
2494
- }
2495
- let newValue;
2496
- try {
2497
- newValue = watchInfo.fn();
2498
- }
2499
- catch (e) {
2500
- console.warn(`Error executing expression: '${watchInfo.expr}'`, e);
2501
- return false;
2502
- }
2503
- if (lodashEs.isEqual(newValue, watchInfo.last)) {
2504
- return false;
2505
- }
2506
- // Change detected
2507
- changedByWatch = true;
2508
- watchInfo.last = lodashEs.isObject(newValue) && !watchInfo.doNotClone
2509
- ? lodashEs.clone(newValue)
2510
- : newValue;
2511
- watchInfo.listener(newValue, watchInfo.last === newValue ? FIRST_TIME_WATCH : watchInfo.last);
2512
- changedByWatch = false;
2513
- return true;
2264
+ return () => $unwatch(identifier);
2514
2265
  };
2515
- /**
2516
- * Triggers all watchers
2517
- */
2518
- const triggerWatchers = (ignoreMuted = false) => {
2266
+ const $unwatch = identifier => registry.delete(identifier);
2267
+ let changedByWatch = false;
2268
+ const $RAF = window.requestAnimationFrame;
2269
+ let ngZone;
2270
+ const triggerWatchers = (ignoreMuted) => {
2519
2271
  if (muted && !ignoreMuted) {
2520
2272
  return;
2521
2273
  }
2274
+ const limit = 5;
2522
2275
  let pass = 1;
2523
2276
  let changeDetected;
2524
2277
  do {
2525
2278
  changeDetected = false;
2526
- registry.forEach((value) => {
2527
- // Handle grouped structure
2528
- if (value && typeof value === 'object' && !value.fn) {
2529
- Object.values(value).forEach((watchInfo) => {
2530
- if (processWatchInfo(watchInfo)) {
2531
- changeDetected = true;
2532
- }
2533
- });
2279
+ registry.forEach(watchInfo => {
2280
+ if (watchInfo.isMuted && watchInfo.isMuted()) {
2281
+ return;
2534
2282
  }
2535
- else {
2536
- // Direct watchInfo
2537
- if (processWatchInfo(value)) {
2538
- changeDetected = true;
2283
+ const fn = watchInfo.fn;
2284
+ const listener = watchInfo.listener;
2285
+ const ov = watchInfo.last;
2286
+ let nv;
2287
+ try {
2288
+ nv = fn();
2289
+ }
2290
+ catch (e) {
2291
+ console.warn(`error in executing expression: '${watchInfo.expr}'`);
2292
+ }
2293
+ if (!lodashEs.isEqual(nv, ov)) {
2294
+ changeDetected = true;
2295
+ changedByWatch = true;
2296
+ watchInfo.last = nv;
2297
+ // @ts-ignore
2298
+ if (lodashEs.isObject(nv) && !watchInfo.doNotClone && nv.__cloneable__ !== false) {
2299
+ watchInfo.last = lodashEs.clone(nv);
2539
2300
  }
2301
+ listener(nv, ov);
2302
+ resetChangeFromWatch();
2540
2303
  }
2541
2304
  });
2542
2305
  pass++;
2543
- } while (changeDetected && pass < MAX_WATCH_CYCLES);
2544
- if (changeDetected && pass === MAX_WATCH_CYCLES) {
2545
- console.warn(`Watch cycles exceeded limit of ${MAX_WATCH_CYCLES}`);
2306
+ } while (changeDetected && pass < limit);
2307
+ if (changeDetected && pass === limit) {
2308
+ console.warn(`Number of watch cycles gone above set limit of: ${limit} `);
2546
2309
  }
2547
2310
  };
2548
- // Angular zone integration
2549
- const setNgZone = (zone) => {
2550
- ngZone = zone;
2551
- };
2552
- const setAppRef = (ref) => {
2311
+ const setNgZone = zone => ngZone = zone;
2312
+ const setAppRef = ref => {
2553
2313
  appRef = ref;
2554
2314
  };
2555
2315
  const isChangeFromWatch = () => changedByWatch;
2556
- const resetChangeFromWatch = () => {
2557
- changedByWatch = false;
2558
- };
2559
- // Debounced trigger
2316
+ const resetChangeFromWatch = () => changedByWatch = false;
2317
+ window.watchRegistry = registry;
2318
+ let skipWatchers;
2560
2319
  const debouncedTriggerWatchers = debounce(() => {
2561
2320
  skipWatchers = true;
2562
2321
  ngZone.run(() => triggerWatchers());
2563
- }, DEBOUNCE_WAIT);
2564
- const $invokeWatchers = (force = false, ignoreMuted = false) => {
2322
+ }, 100);
2323
+ const $invokeWatchers = (force, ignoreMuted) => {
2565
2324
  if (force) {
2566
2325
  triggerWatchers(ignoreMuted);
2567
2326
  }
@@ -2575,8 +2334,7 @@
2575
2334
  };
2576
2335
  const $appDigest = (() => {
2577
2336
  let queued = false;
2578
- const $RAF = window.requestAnimationFrame;
2579
- return (force = false) => {
2337
+ return (force) => {
2580
2338
  if (!appRef) {
2581
2339
  return;
2582
2340
  }
@@ -2588,16 +2346,16 @@
2588
2346
  if (queued) {
2589
2347
  return;
2590
2348
  }
2591
- queued = true;
2592
- $RAF(() => {
2593
- ngZone.run(() => appRef.tick());
2594
- queued = false;
2595
- });
2349
+ else {
2350
+ queued = true;
2351
+ $RAF(() => {
2352
+ ngZone.run(() => appRef.tick());
2353
+ queued = false;
2354
+ });
2355
+ }
2596
2356
  }
2597
2357
  };
2598
2358
  })();
2599
- // Export registry for debugging
2600
- // (window as any).watchRegistry = registry;
2601
2359
 
2602
2360
  exports.ComponentType = void 0;
2603
2361
  (function (ComponentType) {
@@ -5406,8 +5164,6 @@
5406
5164
  exports.$parseEvent = $parseEvent;
5407
5165
  exports.$parseExpr = $parseExpr;
5408
5166
  exports.$unwatch = $unwatch;
5409
- exports.$unwatchAll = $unwatchAll;
5410
- exports.$unwatchAllByScope = $unwatchAllByScope;
5411
5167
  exports.$watch = $watch;
5412
5168
  exports.AbstractDialogService = AbstractDialogService;
5413
5169
  exports.AbstractHttpService = AbstractHttpService;
@@ -8,7 +8,7 @@ export * from './enums/enums';
8
8
  export * from './utils/event-notifier';
9
9
  export { $parseExpr, $parseEvent, registerFnByExpr, setPipeProvider, getFnByExpr, getFnForBindExpr, getFnForEventExpr } from './utils/expression-parser';
10
10
  export { isDefined, isObject, toBoolean, isIE, isAndroid, isAndroidTablet, isIphone, isIpod, isIpad, isIos, isSafari, isLargeTabletLandscape, isLargeTabletPortrait, isMobile, getAndroidVersion, isKitkatDevice, encodeUrl, encodeUrlParams, initCaps, spaceSeparate, replaceAt, periodSeparate, prettifyLabel, deHyphenate, prettifyLabels, isInsecureContentRequest, stringStartsWith, getEvaluatedExprValue, isImageFile, isAudioFile, isVideoFile, isValidImageUrl, isValidWebURL, getResourceURL, triggerFn, hasOffsetStr, getFormattedDate, getDateObj, addEventListenerOnElement, getClonedObject, getFiles, generateGUId, validateAccessRoles, getValidJSON, xmlToJson, findValueOf, extractType, isNumberType, isEmptyObject, scrollToElement, isElementInViewport, isPageable, replace, isDateTimeType, getValidDateObject, getNativeDateObject, getBlob, isEqualWithFields, loadStyleSheet, loadStyleSheets, loadScript, loadScripts, _WM_APP_PROJECT, setSessionStorageItem, getSessionStorageItem, noop, convertToBlob, AppConstants, openLink, fetchContent, toPromise, retryIfFails, getAbortableDefer, createCSSRule, getUrlParams, getMomentLocaleObject, getRouteNameFromLink, isAppleProduct, defer, executePromiseChain, isDataSourceEqual, validateDataSourceCtx, processFilterExpBindNode, extendProto, removeExtraSlashes, getDisplayDateTimeFormat, addForIdAttributes, adjustContainerPosition, adjustContainerRightEdges, setTranslation3dPosition, getWebkitTraslationMatrix, closePopover, detectChanges, triggerItemAction, getDatasourceFromExpr, extractCurrentItemExpr, findRootContainer, VALIDATOR, transformFileURI, appendScriptToHead, getAppSetting, setListClass, findParent, getNavClass, getSheetPositionClass } from './utils/utils';
11
- export { FIRST_TIME_WATCH, isFirstTimeChange, debounce, muteWatchers, unMuteWatchers, $watch, $unwatch, $unwatchAll, $unwatchAllByScope, setNgZone, setAppRef, isChangeFromWatch, resetChangeFromWatch, $invokeWatchers, $appDigest } from './utils/watcher';
11
+ export { FIRST_TIME_WATCH, isFirstTimeChange, debounce, muteWatchers, unMuteWatchers, $watch, $unwatch, setNgZone, setAppRef, isChangeFromWatch, resetChangeFromWatch, $invokeWatchers, $appDigest } from './utils/watcher';
12
12
  export * from './utils/id-generator';
13
13
  export * from './types/types';
14
14
  export { Viewport } from './services/viewport.service';
@@ -23,4 +23,4 @@ export { StatePersistence } from './services/state-persistence.service';
23
23
  export { PaginationService } from './services/pagination.service';
24
24
  export * from './utils/wm-project-properties';
25
25
  export * from './utils/lru-cache';
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFDSCxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsT0FBTyxFQUNILFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLFVBQVUsRUFDVixXQUFXLEVBQ1gsUUFBUSxFQUNSLFdBQVcsRUFDWCxXQUFXLEVBQ1gsTUFBTSxFQUNOLGFBQWEsRUFDYixXQUFXLEVBQ1gsT0FBTyxFQUNQLE9BQU8sRUFDUCxVQUFVLEVBQ1YsYUFBYSxFQUNiLFdBQVcsRUFDZCxNQUFNLGFBQWEsQ0FBQztBQUNyQixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLE9BQU8sRUFFSCxVQUFVLEVBQ1YsV0FBVyxFQUNYLGdCQUFnQixFQUNoQixlQUFlLEVBQ2YsV0FBVyxFQUNYLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDcEIsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBRUgsU0FBUyxFQUNULFFBQVEsRUFDUixTQUFTLEVBQ1QsSUFBSSxFQUNKLFNBQVMsRUFDVCxlQUFlLEVBQ2YsUUFBUSxFQUNSLE1BQU0sRUFDTixNQUFNLEVBQ04sS0FBSyxFQUNMLFFBQVEsRUFDUixzQkFBc0IsRUFDdEIscUJBQXFCLEVBQ3JCLFFBQVEsRUFDUixpQkFBaUIsRUFDakIsY0FBYyxFQUNkLFNBQVMsRUFDVCxlQUFlLEVBQ2YsUUFBUSxFQUNSLGFBQWEsRUFDYixTQUFTLEVBQ1QsY0FBYyxFQUNkLGFBQWEsRUFDYixXQUFXLEVBQ1gsY0FBYyxFQUNkLHdCQUF3QixFQUN4QixnQkFBZ0IsRUFDaEIscUJBQXFCLEVBQ3JCLFdBQVcsRUFDWCxXQUFXLEVBQ1gsV0FBVyxFQUNYLGVBQWUsRUFDZixhQUFhLEVBQ2IsY0FBYyxFQUNkLFNBQVMsRUFDVCxZQUFZLEVBQ1osZ0JBQWdCLEVBQ2hCLFVBQVUsRUFDVix5QkFBeUIsRUFDekIsZUFBZSxFQUNmLFFBQVEsRUFDUixZQUFZLEVBQ1osbUJBQW1CLEVBQ25CLFlBQVksRUFDWixTQUFTLEVBQ1QsV0FBVyxFQUNYLFdBQVcsRUFDWCxZQUFZLEVBQ1osYUFBYSxFQUNiLGVBQWUsRUFDZixtQkFBbUIsRUFDbkIsVUFBVSxFQUNWLE9BQU8sRUFDUCxjQUFjLEVBQ2Qsa0JBQWtCLEVBQ2xCLG1CQUFtQixFQUNuQixPQUFPLEVBQ1AsaUJBQWlCLEVBQ2pCLGNBQWMsRUFDZCxlQUFlLEVBQ2YsVUFBVSxFQUNWLFdBQVcsRUFDWCxlQUFlLEVBQ2YscUJBQXFCLEVBQ3JCLHFCQUFxQixFQUNyQixJQUFJLEVBQ0osYUFBYSxFQUNiLFlBQVksRUFDWixRQUFRLEVBQ1IsWUFBWSxFQUNaLFNBQVMsRUFDVCxZQUFZLEVBQ1osaUJBQWlCLEVBQ2pCLGFBQWEsRUFDYixZQUFZLEVBQ1oscUJBQXFCLEVBQ3JCLG9CQUFvQixFQUNwQixjQUFjLEVBQ2QsS0FBSyxFQUNMLG1CQUFtQixFQUNuQixpQkFBaUIsRUFDakIscUJBQXFCLEVBQ3JCLHdCQUF3QixFQUN4QixXQUFXLEVBQ1gsa0JBQWtCLEVBQ2xCLHdCQUF3QixFQUN4QixrQkFBa0IsRUFDbEIsdUJBQXVCLEVBQ3ZCLHlCQUF5QixFQUN6Qix3QkFBd0IsRUFDeEIseUJBQXlCLEVBQ3pCLFlBQVksRUFDWixhQUFhLEVBQ2IsaUJBQWlCLEVBQ2pCLHFCQUFxQixFQUNyQixzQkFBc0IsRUFDdEIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxnQkFBZ0IsRUFDaEIsa0JBQWtCLEVBQ2xCLGFBQWEsRUFDYixZQUFZLEVBQ1osVUFBVSxFQUNWLFdBQVcsRUFDWCxxQkFBcUIsRUFDeEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILGdCQUFnQixFQUNoQixpQkFBaUIsRUFDakIsUUFBUSxFQUNSLFlBQVksRUFDWixjQUFjLEVBQ2QsTUFBTSxFQUNOLFFBQVEsRUFDUixXQUFXLEVBQ1gsa0JBQWtCLEVBQ2xCLFNBQVMsRUFDVCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLG9CQUFvQixFQUNwQixlQUFlLEVBQ2YsVUFBVSxFQUNiLE1BQU0saUJBQWlCLENBQUM7QUFDekIsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLGVBQWUsQ0FBQztBQUM5QixPQUFPLEVBQUUsUUFBUSxFQUFpQixNQUFNLDZCQUE2QixDQUFDO0FBQ3RFLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDeEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBjb3JlXG4gKi9cbmV4cG9ydCAqIGZyb20gJy4vdXRpbHMvYnVpbGQtdXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdGFudHMvY3VycmVuY3ktY29uc3RhbnRzJztcbmV4cG9ydCB7XG4gICAgYXBwZW5kTm9kZSxcbiAgICBpbnNlcnRCZWZvcmUsXG4gICAgaW5zZXJ0QWZ0ZXIsXG4gICAgcmVtb3ZlTm9kZSxcbiAgICByZW1vdmVDbGFzcyxcbiAgICBhZGRDbGFzcyxcbiAgICBzd2l0Y2hDbGFzcyxcbiAgICB0b2dnbGVDbGFzcyxcbiAgICBzZXRDU1MsXG4gICAgc2V0Q1NTRnJvbU9iaixcbiAgICBzZXRQcm9wZXJ0eSxcbiAgICBzZXRBdHRyLFxuICAgIHNldEh0bWwsXG4gICAgcmVtb3ZlQXR0cixcbiAgICBjcmVhdGVFbGVtZW50LFxuICAgIHRvRGltZW5zaW9uXG59IGZyb20gJy4vdXRpbHMvZG9tJztcbmV4cG9ydCAqIGZyb20gJy4vZW51bXMvZW51bXMnO1xuZXhwb3J0ICogZnJvbSAnLi91dGlscy9ldmVudC1ub3RpZmllcic7XG5leHBvcnQge1xuICAgIFBhcnNlRXhwclJlc3VsdCxcbiAgICAkcGFyc2VFeHByLFxuICAgICRwYXJzZUV2ZW50LFxuICAgIHJlZ2lzdGVyRm5CeUV4cHIsXG4gICAgc2V0UGlwZVByb3ZpZGVyLFxuICAgIGdldEZuQnlFeHByLFxuICAgIGdldEZuRm9yQmluZEV4cHIsXG4gICAgZ2V0Rm5Gb3JFdmVudEV4cHJcbn0gZnJvbSAnLi91dGlscy9leHByZXNzaW9uLXBhcnNlcic7XG5leHBvcnQge1xuICAgIEVWRU5UX0xJRkUsXG4gICAgaXNEZWZpbmVkLFxuICAgIGlzT2JqZWN0LFxuICAgIHRvQm9vbGVhbixcbiAgICBpc0lFLFxuICAgIGlzQW5kcm9pZCxcbiAgICBpc0FuZHJvaWRUYWJsZXQsXG4gICAgaXNJcGhvbmUsXG4gICAgaXNJcG9kLFxuICAgIGlzSXBhZCxcbiAgICBpc0lvcyxcbiAgICBpc1NhZmFyaSxcbiAgICBpc0xhcmdlVGFibGV0TGFuZHNjYXBlLFxuICAgIGlzTGFyZ2VUYWJsZXRQb3J0cmFpdCxcbiAgICBpc01vYmlsZSxcbiAgICBnZXRBbmRyb2lkVmVyc2lvbixcbiAgICBpc0tpdGthdERldmljZSxcbiAgICBlbmNvZGVVcmwsXG4gICAgZW5jb2RlVXJsUGFyYW1zLFxuICAgIGluaXRDYXBzLFxuICAgIHNwYWNlU2VwYXJhdGUsXG4gICAgcmVwbGFjZUF0LFxuICAgIHBlcmlvZFNlcGFyYXRlLFxuICAgIHByZXR0aWZ5TGFiZWwsXG4gICAgZGVIeXBoZW5hdGUsXG4gICAgcHJldHRpZnlMYWJlbHMsXG4gICAgaXNJbnNlY3VyZUNvbnRlbnRSZXF1ZXN0LFxuICAgIHN0cmluZ1N0YXJ0c1dpdGgsXG4gICAgZ2V0RXZhbHVhdGVkRXhwclZhbHVlLFxuICAgIGlzSW1hZ2VGaWxlLFxuICAgIGlzQXVkaW9GaWxlLFxuICAgIGlzVmlkZW9GaWxlLFxuICAgIGlzVmFsaWRJbWFnZVVybCxcbiAgICBpc1ZhbGlkV2ViVVJMLFxuICAgIGdldFJlc291cmNlVVJMLFxuICAgIHRyaWdnZXJGbixcbiAgICBoYXNPZmZzZXRTdHIsXG4gICAgZ2V0Rm9ybWF0dGVkRGF0ZSxcbiAgICBnZXREYXRlT2JqLFxuICAgIGFkZEV2ZW50TGlzdGVuZXJPbkVsZW1lbnQsXG4gICAgZ2V0Q2xvbmVkT2JqZWN0LFxuICAgIGdldEZpbGVzLFxuICAgIGdlbmVyYXRlR1VJZCxcbiAgICB2YWxpZGF0ZUFjY2Vzc1JvbGVzLFxuICAgIGdldFZhbGlkSlNPTixcbiAgICB4bWxUb0pzb24sXG4gICAgZmluZFZhbHVlT2YsXG4gICAgZXh0cmFjdFR5cGUsXG4gICAgaXNOdW1iZXJUeXBlLFxuICAgIGlzRW1wdHlPYmplY3QsXG4gICAgc2Nyb2xsVG9FbGVtZW50LFxuICAgIGlzRWxlbWVudEluVmlld3BvcnQsXG4gICAgaXNQYWdlYWJsZSxcbiAgICByZXBsYWNlLFxuICAgIGlzRGF0ZVRpbWVUeXBlLFxuICAgIGdldFZhbGlkRGF0ZU9iamVjdCxcbiAgICBnZXROYXRpdmVEYXRlT2JqZWN0LFxuICAgIGdldEJsb2IsXG4gICAgaXNFcXVhbFdpdGhGaWVsZHMsXG4gICAgbG9hZFN0eWxlU2hlZXQsXG4gICAgbG9hZFN0eWxlU2hlZXRzLFxuICAgIGxvYWRTY3JpcHQsXG4gICAgbG9hZFNjcmlwdHMsXG4gICAgX1dNX0FQUF9QUk9KRUNULFxuICAgIHNldFNlc3Npb25TdG9yYWdlSXRlbSxcbiAgICBnZXRTZXNzaW9uU3RvcmFnZUl0ZW0sXG4gICAgbm9vcCxcbiAgICBjb252ZXJ0VG9CbG9iLFxuICAgIEFwcENvbnN0YW50cyxcbiAgICBvcGVuTGluayxcbiAgICBmZXRjaENvbnRlbnQsXG4gICAgdG9Qcm9taXNlLFxuICAgIHJldHJ5SWZGYWlscyxcbiAgICBnZXRBYm9ydGFibGVEZWZlcixcbiAgICBjcmVhdGVDU1NSdWxlLFxuICAgIGdldFVybFBhcmFtcyxcbiAgICBnZXRNb21lbnRMb2NhbGVPYmplY3QsXG4gICAgZ2V0Um91dGVOYW1lRnJvbUxpbmssXG4gICAgaXNBcHBsZVByb2R1Y3QsXG4gICAgZGVmZXIsXG4gICAgZXhlY3V0ZVByb21pc2VDaGFpbixcbiAgICBpc0RhdGFTb3VyY2VFcXVhbCxcbiAgICB2YWxpZGF0ZURhdGFTb3VyY2VDdHgsXG4gICAgcHJvY2Vzc0ZpbHRlckV4cEJpbmROb2RlLFxuICAgIGV4dGVuZFByb3RvLFxuICAgIHJlbW92ZUV4dHJhU2xhc2hlcyxcbiAgICBnZXREaXNwbGF5RGF0ZVRpbWVGb3JtYXQsXG4gICAgYWRkRm9ySWRBdHRyaWJ1dGVzLFxuICAgIGFkanVzdENvbnRhaW5lclBvc2l0aW9uLFxuICAgIGFkanVzdENvbnRhaW5lclJpZ2h0RWRnZXMsXG4gICAgc2V0VHJhbnNsYXRpb24zZFBvc2l0aW9uLFxuICAgIGdldFdlYmtpdFRyYXNsYXRpb25NYXRyaXgsXG4gICAgY2xvc2VQb3BvdmVyLFxuICAgIGRldGVjdENoYW5nZXMsXG4gICAgdHJpZ2dlckl0ZW1BY3Rpb24sXG4gICAgZ2V0RGF0YXNvdXJjZUZyb21FeHByLFxuICAgIGV4dHJhY3RDdXJyZW50SXRlbUV4cHIsXG4gICAgZmluZFJvb3RDb250YWluZXIsXG4gICAgVkFMSURBVE9SLFxuICAgIHRyYW5zZm9ybUZpbGVVUkksXG4gICAgYXBwZW5kU2NyaXB0VG9IZWFkLFxuICAgIGdldEFwcFNldHRpbmcsXG4gICAgc2V0TGlzdENsYXNzLFxuICAgIGZpbmRQYXJlbnQsXG4gICAgZ2V0TmF2Q2xhc3MsXG4gICAgZ2V0U2hlZXRQb3NpdGlvbkNsYXNzXG59IGZyb20gJy4vdXRpbHMvdXRpbHMnO1xuZXhwb3J0IHtcbiAgICBGSVJTVF9USU1FX1dBVENILFxuICAgIGlzRmlyc3RUaW1lQ2hhbmdlLFxuICAgIGRlYm91bmNlLFxuICAgIG11dGVXYXRjaGVycyxcbiAgICB1bk11dGVXYXRjaGVycyxcbiAgICAkd2F0Y2gsXG4gICAgJHVud2F0Y2gsXG4gICAgJHVud2F0Y2hBbGwsXG4gICAgJHVud2F0Y2hBbGxCeVNjb3BlLFxuICAgIHNldE5nWm9uZSxcbiAgICBzZXRBcHBSZWYsXG4gICAgaXNDaGFuZ2VGcm9tV2F0Y2gsXG4gICAgcmVzZXRDaGFuZ2VGcm9tV2F0Y2gsXG4gICAgJGludm9rZVdhdGNoZXJzLFxuICAgICRhcHBEaWdlc3Rcbn0gZnJvbSAnLi91dGlscy93YXRjaGVyJztcbmV4cG9ydCAqIGZyb20gJy4vdXRpbHMvaWQtZ2VuZXJhdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMvdHlwZXMnO1xuZXhwb3J0IHsgVmlld3BvcnQsIFZpZXdwb3J0RXZlbnQgfSBmcm9tICcuL3NlcnZpY2VzL3ZpZXdwb3J0LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy9jb25zdGFudC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvdXRpbHMuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL2ZpZWxkLXR5cGUuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL2ZpZWxkLXdpZGdldC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvc2NyaXB0LWxvYWRlci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvdXNlci1jdXN0b20tcGlwZS1tYW5hZ2VyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy9jdXN0b20taWNvbnMtbG9hZGVyLnNlcnZpY2UnO1xuZXhwb3J0IHsgU3RhdGVQZXJzaXN0ZW5jZSB9IGZyb20gJy4vc2VydmljZXMvc3RhdGUtcGVyc2lzdGVuY2Uuc2VydmljZSc7XG5leHBvcnQgeyBQYWdpbmF0aW9uU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvcGFnaW5hdGlvbi5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vdXRpbHMvd20tcHJvamVjdC1wcm9wZXJ0aWVzJztcbmV4cG9ydCAqIGZyb20gJy4vdXRpbHMvbHJ1LWNhY2hlJztcbiJdfQ==
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFDSCxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsT0FBTyxFQUNILFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLFVBQVUsRUFDVixXQUFXLEVBQ1gsUUFBUSxFQUNSLFdBQVcsRUFDWCxXQUFXLEVBQ1gsTUFBTSxFQUNOLGFBQWEsRUFDYixXQUFXLEVBQ1gsT0FBTyxFQUNQLE9BQU8sRUFDUCxVQUFVLEVBQ1YsYUFBYSxFQUNiLFdBQVcsRUFDZCxNQUFNLGFBQWEsQ0FBQztBQUNyQixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLE9BQU8sRUFFSCxVQUFVLEVBQ1YsV0FBVyxFQUNYLGdCQUFnQixFQUNoQixlQUFlLEVBQ2YsV0FBVyxFQUNYLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDcEIsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBRUgsU0FBUyxFQUNULFFBQVEsRUFDUixTQUFTLEVBQ1QsSUFBSSxFQUNKLFNBQVMsRUFDVCxlQUFlLEVBQ2YsUUFBUSxFQUNSLE1BQU0sRUFDTixNQUFNLEVBQ04sS0FBSyxFQUNMLFFBQVEsRUFDUixzQkFBc0IsRUFDdEIscUJBQXFCLEVBQ3JCLFFBQVEsRUFDUixpQkFBaUIsRUFDakIsY0FBYyxFQUNkLFNBQVMsRUFDVCxlQUFlLEVBQ2YsUUFBUSxFQUNSLGFBQWEsRUFDYixTQUFTLEVBQ1QsY0FBYyxFQUNkLGFBQWEsRUFDYixXQUFXLEVBQ1gsY0FBYyxFQUNkLHdCQUF3QixFQUN4QixnQkFBZ0IsRUFDaEIscUJBQXFCLEVBQ3JCLFdBQVcsRUFDWCxXQUFXLEVBQ1gsV0FBVyxFQUNYLGVBQWUsRUFDZixhQUFhLEVBQ2IsY0FBYyxFQUNkLFNBQVMsRUFDVCxZQUFZLEVBQ1osZ0JBQWdCLEVBQ2hCLFVBQVUsRUFDVix5QkFBeUIsRUFDekIsZUFBZSxFQUNmLFFBQVEsRUFDUixZQUFZLEVBQ1osbUJBQW1CLEVBQ25CLFlBQVksRUFDWixTQUFTLEVBQ1QsV0FBVyxFQUNYLFdBQVcsRUFDWCxZQUFZLEVBQ1osYUFBYSxFQUNiLGVBQWUsRUFDZixtQkFBbUIsRUFDbkIsVUFBVSxFQUNWLE9BQU8sRUFDUCxjQUFjLEVBQ2Qsa0JBQWtCLEVBQ2xCLG1CQUFtQixFQUNuQixPQUFPLEVBQ1AsaUJBQWlCLEVBQ2pCLGNBQWMsRUFDZCxlQUFlLEVBQ2YsVUFBVSxFQUNWLFdBQVcsRUFDWCxlQUFlLEVBQ2YscUJBQXFCLEVBQ3JCLHFCQUFxQixFQUNyQixJQUFJLEVBQ0osYUFBYSxFQUNiLFlBQVksRUFDWixRQUFRLEVBQ1IsWUFBWSxFQUNaLFNBQVMsRUFDVCxZQUFZLEVBQ1osaUJBQWlCLEVBQ2pCLGFBQWEsRUFDYixZQUFZLEVBQ1oscUJBQXFCLEVBQ3JCLG9CQUFvQixFQUNwQixjQUFjLEVBQ2QsS0FBSyxFQUNMLG1CQUFtQixFQUNuQixpQkFBaUIsRUFDakIscUJBQXFCLEVBQ3JCLHdCQUF3QixFQUN4QixXQUFXLEVBQ1gsa0JBQWtCLEVBQ2xCLHdCQUF3QixFQUN4QixrQkFBa0IsRUFDbEIsdUJBQXVCLEVBQ3ZCLHlCQUF5QixFQUN6Qix3QkFBd0IsRUFDeEIseUJBQXlCLEVBQ3pCLFlBQVksRUFDWixhQUFhLEVBQ2IsaUJBQWlCLEVBQ2pCLHFCQUFxQixFQUNyQixzQkFBc0IsRUFDdEIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxnQkFBZ0IsRUFDaEIsa0JBQWtCLEVBQ2xCLGFBQWEsRUFDYixZQUFZLEVBQ1osVUFBVSxFQUNWLFdBQVcsRUFDWCxxQkFBcUIsRUFDeEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILGdCQUFnQixFQUNoQixpQkFBaUIsRUFDakIsUUFBUSxFQUNSLFlBQVksRUFDWixjQUFjLEVBQ2QsTUFBTSxFQUNOLFFBQVEsRUFDUixTQUFTLEVBQ1QsU0FBUyxFQUNULGlCQUFpQixFQUNqQixvQkFBb0IsRUFDcEIsZUFBZSxFQUNmLFVBQVUsRUFDYixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxlQUFlLENBQUM7QUFDOUIsT0FBTyxFQUFFLFFBQVEsRUFBaUIsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RSxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgY29yZVxuICovXG5leHBvcnQgKiBmcm9tICcuL3V0aWxzL2J1aWxkLXV0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RhbnRzL2N1cnJlbmN5LWNvbnN0YW50cyc7XG5leHBvcnQge1xuICAgIGFwcGVuZE5vZGUsXG4gICAgaW5zZXJ0QmVmb3JlLFxuICAgIGluc2VydEFmdGVyLFxuICAgIHJlbW92ZU5vZGUsXG4gICAgcmVtb3ZlQ2xhc3MsXG4gICAgYWRkQ2xhc3MsXG4gICAgc3dpdGNoQ2xhc3MsXG4gICAgdG9nZ2xlQ2xhc3MsXG4gICAgc2V0Q1NTLFxuICAgIHNldENTU0Zyb21PYmosXG4gICAgc2V0UHJvcGVydHksXG4gICAgc2V0QXR0cixcbiAgICBzZXRIdG1sLFxuICAgIHJlbW92ZUF0dHIsXG4gICAgY3JlYXRlRWxlbWVudCxcbiAgICB0b0RpbWVuc2lvblxufSBmcm9tICcuL3V0aWxzL2RvbSc7XG5leHBvcnQgKiBmcm9tICcuL2VudW1zL2VudW1zJztcbmV4cG9ydCAqIGZyb20gJy4vdXRpbHMvZXZlbnQtbm90aWZpZXInO1xuZXhwb3J0IHtcbiAgICBQYXJzZUV4cHJSZXN1bHQsXG4gICAgJHBhcnNlRXhwcixcbiAgICAkcGFyc2VFdmVudCxcbiAgICByZWdpc3RlckZuQnlFeHByLFxuICAgIHNldFBpcGVQcm92aWRlcixcbiAgICBnZXRGbkJ5RXhwcixcbiAgICBnZXRGbkZvckJpbmRFeHByLFxuICAgIGdldEZuRm9yRXZlbnRFeHByXG59IGZyb20gJy4vdXRpbHMvZXhwcmVzc2lvbi1wYXJzZXInO1xuZXhwb3J0IHtcbiAgICBFVkVOVF9MSUZFLFxuICAgIGlzRGVmaW5lZCxcbiAgICBpc09iamVjdCxcbiAgICB0b0Jvb2xlYW4sXG4gICAgaXNJRSxcbiAgICBpc0FuZHJvaWQsXG4gICAgaXNBbmRyb2lkVGFibGV0LFxuICAgIGlzSXBob25lLFxuICAgIGlzSXBvZCxcbiAgICBpc0lwYWQsXG4gICAgaXNJb3MsXG4gICAgaXNTYWZhcmksXG4gICAgaXNMYXJnZVRhYmxldExhbmRzY2FwZSxcbiAgICBpc0xhcmdlVGFibGV0UG9ydHJhaXQsXG4gICAgaXNNb2JpbGUsXG4gICAgZ2V0QW5kcm9pZFZlcnNpb24sXG4gICAgaXNLaXRrYXREZXZpY2UsXG4gICAgZW5jb2RlVXJsLFxuICAgIGVuY29kZVVybFBhcmFtcyxcbiAgICBpbml0Q2FwcyxcbiAgICBzcGFjZVNlcGFyYXRlLFxuICAgIHJlcGxhY2VBdCxcbiAgICBwZXJpb2RTZXBhcmF0ZSxcbiAgICBwcmV0dGlmeUxhYmVsLFxuICAgIGRlSHlwaGVuYXRlLFxuICAgIHByZXR0aWZ5TGFiZWxzLFxuICAgIGlzSW5zZWN1cmVDb250ZW50UmVxdWVzdCxcbiAgICBzdHJpbmdTdGFydHNXaXRoLFxuICAgIGdldEV2YWx1YXRlZEV4cHJWYWx1ZSxcbiAgICBpc0ltYWdlRmlsZSxcbiAgICBpc0F1ZGlvRmlsZSxcbiAgICBpc1ZpZGVvRmlsZSxcbiAgICBpc1ZhbGlkSW1hZ2VVcmwsXG4gICAgaXNWYWxpZFdlYlVSTCxcbiAgICBnZXRSZXNvdXJjZVVSTCxcbiAgICB0cmlnZ2VyRm4sXG4gICAgaGFzT2Zmc2V0U3RyLFxuICAgIGdldEZvcm1hdHRlZERhdGUsXG4gICAgZ2V0RGF0ZU9iaixcbiAgICBhZGRFdmVudExpc3RlbmVyT25FbGVtZW50LFxuICAgIGdldENsb25lZE9iamVjdCxcbiAgICBnZXRGaWxlcyxcbiAgICBnZW5lcmF0ZUdVSWQsXG4gICAgdmFsaWRhdGVBY2Nlc3NSb2xlcyxcbiAgICBnZXRWYWxpZEpTT04sXG4gICAgeG1sVG9Kc29uLFxuICAgIGZpbmRWYWx1ZU9mLFxuICAgIGV4dHJhY3RUeXBlLFxuICAgIGlzTnVtYmVyVHlwZSxcbiAgICBpc0VtcHR5T2JqZWN0LFxuICAgIHNjcm9sbFRvRWxlbWVudCxcbiAgICBpc0VsZW1lbnRJblZpZXdwb3J0LFxuICAgIGlzUGFnZWFibGUsXG4gICAgcmVwbGFjZSxcbiAgICBpc0RhdGVUaW1lVHlwZSxcbiAgICBnZXRWYWxpZERhdGVPYmplY3QsXG4gICAgZ2V0TmF0aXZlRGF0ZU9iamVjdCxcbiAgICBnZXRCbG9iLFxuICAgIGlzRXF1YWxXaXRoRmllbGRzLFxuICAgIGxvYWRTdHlsZVNoZWV0LFxuICAgIGxvYWRTdHlsZVNoZWV0cyxcbiAgICBsb2FkU2NyaXB0LFxuICAgIGxvYWRTY3JpcHRzLFxuICAgIF9XTV9BUFBfUFJPSkVDVCxcbiAgICBzZXRTZXNzaW9uU3RvcmFnZUl0ZW0sXG4gICAgZ2V0U2Vzc2lvblN0b3JhZ2VJdGVtLFxuICAgIG5vb3AsXG4gICAgY29udmVydFRvQmxvYixcbiAgICBBcHBDb25zdGFudHMsXG4gICAgb3BlbkxpbmssXG4gICAgZmV0Y2hDb250ZW50LFxuICAgIHRvUHJvbWlzZSxcbiAgICByZXRyeUlmRmFpbHMsXG4gICAgZ2V0QWJvcnRhYmxlRGVmZXIsXG4gICAgY3JlYXRlQ1NTUnVsZSxcbiAgICBnZXRVcmxQYXJhbXMsXG4gICAgZ2V0TW9tZW50TG9jYWxlT2JqZWN0LFxuICAgIGdldFJvdXRlTmFtZUZyb21MaW5rLFxuICAgIGlzQXBwbGVQcm9kdWN0LFxuICAgIGRlZmVyLFxuICAgIGV4ZWN1dGVQcm9taXNlQ2hhaW4sXG4gICAgaXNEYXRhU291cmNlRXF1YWwsXG4gICAgdmFsaWRhdGVEYXRhU291cmNlQ3R4LFxuICAgIHByb2Nlc3NGaWx0ZXJFeHBCaW5kTm9kZSxcbiAgICBleHRlbmRQcm90byxcbiAgICByZW1vdmVFeHRyYVNsYXNoZXMsXG4gICAgZ2V0RGlzcGxheURhdGVUaW1lRm9ybWF0LFxuICAgIGFkZEZvcklkQXR0cmlidXRlcyxcbiAgICBhZGp1c3RDb250YWluZXJQb3NpdGlvbixcbiAgICBhZGp1c3RDb250YWluZXJSaWdodEVkZ2VzLFxuICAgIHNldFRyYW5zbGF0aW9uM2RQb3NpdGlvbixcbiAgICBnZXRXZWJraXRUcmFzbGF0aW9uTWF0cml4LFxuICAgIGNsb3NlUG9wb3ZlcixcbiAgICBkZXRlY3RDaGFuZ2VzLFxuICAgIHRyaWdnZXJJdGVtQWN0aW9uLFxuICAgIGdldERhdGFzb3VyY2VGcm9tRXhwcixcbiAgICBleHRyYWN0Q3VycmVudEl0ZW1FeHByLFxuICAgIGZpbmRSb290Q29udGFpbmVyLFxuICAgIFZBTElEQVRPUixcbiAgICB0cmFuc2Zvcm1GaWxlVVJJLFxuICAgIGFwcGVuZFNjcmlwdFRvSGVhZCxcbiAgICBnZXRBcHBTZXR0aW5nLFxuICAgIHNldExpc3RDbGFzcyxcbiAgICBmaW5kUGFyZW50LFxuICAgIGdldE5hdkNsYXNzLFxuICAgIGdldFNoZWV0UG9zaXRpb25DbGFzc1xufSBmcm9tICcuL3V0aWxzL3V0aWxzJztcbmV4cG9ydCB7XG4gICAgRklSU1RfVElNRV9XQVRDSCxcbiAgICBpc0ZpcnN0VGltZUNoYW5nZSxcbiAgICBkZWJvdW5jZSxcbiAgICBtdXRlV2F0Y2hlcnMsXG4gICAgdW5NdXRlV2F0Y2hlcnMsXG4gICAgJHdhdGNoLFxuICAgICR1bndhdGNoLFxuICAgIHNldE5nWm9uZSxcbiAgICBzZXRBcHBSZWYsXG4gICAgaXNDaGFuZ2VGcm9tV2F0Y2gsXG4gICAgcmVzZXRDaGFuZ2VGcm9tV2F0Y2gsXG4gICAgJGludm9rZVdhdGNoZXJzLFxuICAgICRhcHBEaWdlc3Rcbn0gZnJvbSAnLi91dGlscy93YXRjaGVyJztcbmV4cG9ydCAqIGZyb20gJy4vdXRpbHMvaWQtZ2VuZXJhdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMvdHlwZXMnO1xuZXhwb3J0IHsgVmlld3BvcnQsIFZpZXdwb3J0RXZlbnQgfSBmcm9tICcuL3NlcnZpY2VzL3ZpZXdwb3J0LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy9jb25zdGFudC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvdXRpbHMuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL2ZpZWxkLXR5cGUuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL2ZpZWxkLXdpZGdldC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvc2NyaXB0LWxvYWRlci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvdXNlci1jdXN0b20tcGlwZS1tYW5hZ2VyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy9jdXN0b20taWNvbnMtbG9hZGVyLnNlcnZpY2UnO1xuZXhwb3J0IHsgU3RhdGVQZXJzaXN0ZW5jZSB9IGZyb20gJy4vc2VydmljZXMvc3RhdGUtcGVyc2lzdGVuY2Uuc2VydmljZSc7XG5leHBvcnQgeyBQYWdpbmF0aW9uU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvcGFnaW5hdGlvbi5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vdXRpbHMvd20tcHJvamVjdC1wcm9wZXJ0aWVzJztcbmV4cG9ydCAqIGZyb20gJy4vdXRpbHMvbHJ1LWNhY2hlJztcbiJdfQ==