@meimu/mutracer 0.1.2 → 0.1.4

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 (125) hide show
  1. package/dist/assets/bvh.worker.js +1 -1
  2. package/dist/mutracer.umd.js +4475 -4337
  3. package/docs/api.md +11 -9
  4. package/docs/threejs.md +30 -4
  5. package/lib/Engine.js +18 -1
  6. package/lib/Engine.js.map +1 -1
  7. package/lib/main.d.ts +1 -1
  8. package/lib/main.js.map +1 -1
  9. package/lib/oidn.d.ts +1 -1
  10. package/lib/oidnBundledWeights.cdn.d.ts +2 -2
  11. package/lib/renderer/MaterialTable.d.ts +1 -0
  12. package/lib/renderer/MaterialTable.js +10 -4
  13. package/lib/renderer/MaterialTable.js.map +1 -1
  14. package/lib/renderer/WGPUBloomPass.js +18 -18
  15. package/lib/renderer/WGPUFullQuadPass.js +6 -6
  16. package/lib/renderer/WGPUJNLMDenoiser.js +68 -68
  17. package/lib/renderer/WGPURayTraceOutput.js +16 -14
  18. package/lib/renderer/WGPURayTraceOutput.js.map +1 -1
  19. package/lib/renderer/WGPURayTracePass.d.ts +2 -0
  20. package/lib/renderer/WGPURayTracePass.js +13 -7
  21. package/lib/renderer/WGPURayTracePass.js.map +1 -1
  22. package/lib/renderer/WGPURenderingPipeline.js +24 -22
  23. package/lib/renderer/WGPURenderingPipeline.js.map +1 -1
  24. package/lib/renderer/WebGLJNLMDenoiser.js +68 -68
  25. package/lib/renderer/WebGLRayTraceOutputPass.js +4 -4
  26. package/lib/renderer/WebGLRayTracePass.d.ts +1 -0
  27. package/lib/renderer/WebGLRayTracePass.js +7 -1
  28. package/lib/renderer/WebGLRayTracePass.js.map +1 -1
  29. package/lib/renderer/envMapCreation.d.ts +5 -1
  30. package/lib/renderer/envMapCreation.js +42 -5
  31. package/lib/renderer/envMapCreation.js.map +1 -1
  32. package/lib/renderer/geometryUpdates.js +1 -1
  33. package/lib/renderer/geometryUpdates.js.map +1 -1
  34. package/lib/renderer/glsl/chunks/cameraRay.glsl.js +12 -12
  35. package/lib/renderer/glsl/chunks/envMap.glsl.js +69 -57
  36. package/lib/renderer/glsl/chunks/envMap.glsl.js.map +1 -1
  37. package/lib/renderer/glsl/chunks/intersect.glsl.js +316 -310
  38. package/lib/renderer/glsl/chunks/intersect.glsl.js.map +1 -1
  39. package/lib/renderer/glsl/chunks/materialBuffer.glsl.js +153 -121
  40. package/lib/renderer/glsl/chunks/materialBuffer.glsl.js.map +1 -1
  41. package/lib/renderer/glsl/chunks/openPbrBsdf.glsl.js +540 -540
  42. package/lib/renderer/glsl/chunks/rand.glsl.js +3 -3
  43. package/lib/renderer/glsl/chunks/random.glsl.js +4 -4
  44. package/lib/renderer/glsl/chunks/rayTraceCore.glsl.js +40 -39
  45. package/lib/renderer/glsl/chunks/rayTraceCore.glsl.js.map +1 -1
  46. package/lib/renderer/glsl/chunks/sampleLight.glsl.js +71 -71
  47. package/lib/renderer/glsl/chunks/sampleMaterial.glsl.js +84 -84
  48. package/lib/renderer/glsl/chunks/sampleShadowCatcher.glsl.js +13 -13
  49. package/lib/renderer/glsl/chunks/sampling.glsl.js +77 -77
  50. package/lib/renderer/glsl/chunks/sobol.glsl.js +65 -65
  51. package/lib/renderer/glsl/chunks/textureLinear.glsl.js +5 -5
  52. package/lib/renderer/glsl/chunks/uvProjection.glsl.js +11 -11
  53. package/lib/renderer/glsl/depthQuery.frag.js +5 -5
  54. package/lib/renderer/glsl/depthQuery.frag.js.map +1 -1
  55. package/lib/renderer/glsl/normalizeRayTraceOutput.frag.js +8 -8
  56. package/lib/renderer/glsl/rayTrace.frag.js +165 -165
  57. package/lib/renderer/glsl/rayTrace.frag.js.map +1 -1
  58. package/lib/renderer/glsl/shadowCatcher.frag.js +14 -14
  59. package/lib/renderer/glsl/shadowCatcher.frag.js.map +1 -1
  60. package/lib/renderer/glsl/webglPipeline.frag.js +56 -56
  61. package/lib/renderer/lightsUtil.js +7 -5
  62. package/lib/renderer/lightsUtil.js.map +1 -1
  63. package/lib/renderer/materialChanges.js +1 -1
  64. package/lib/renderer/materialChanges.js.map +1 -1
  65. package/lib/renderer/materialComparison.generated.js +36 -18
  66. package/lib/renderer/materialComparison.generated.js.map +1 -1
  67. package/lib/renderer/prepareMeshBVH.js +2 -2
  68. package/lib/renderer/prepareMeshBVH.js.map +1 -1
  69. package/lib/renderer/sceneChangeDetector.js +4 -1
  70. package/lib/renderer/sceneChangeDetector.js.map +1 -1
  71. package/lib/renderer/sceneLightChanges.js +3 -2
  72. package/lib/renderer/sceneLightChanges.js.map +1 -1
  73. package/lib/renderer/scratchSampling.js +18 -18
  74. package/lib/renderer/wgsl/chunks/common.wgsl.js +4 -4
  75. package/lib/renderer/wgsl/chunks/envMap.wgsl.d.ts +1 -1
  76. package/lib/renderer/wgsl/chunks/envMap.wgsl.js +39 -31
  77. package/lib/renderer/wgsl/chunks/envMap.wgsl.js.map +1 -1
  78. package/lib/renderer/wgsl/chunks/intersect.wgsl.js +475 -469
  79. package/lib/renderer/wgsl/chunks/intersect.wgsl.js.map +1 -1
  80. package/lib/renderer/wgsl/chunks/intersectionAlpha.wgsl.js +8 -8
  81. package/lib/renderer/wgsl/chunks/materialBuffer.wgsl.js +95 -61
  82. package/lib/renderer/wgsl/chunks/materialBuffer.wgsl.js.map +1 -1
  83. package/lib/renderer/wgsl/chunks/openPbrBsdf.wgsl.js +562 -562
  84. package/lib/renderer/wgsl/chunks/pdm_displacement.wgsl.d.ts +1 -1
  85. package/lib/renderer/wgsl/chunks/pdm_displacement.wgsl.js +117 -120
  86. package/lib/renderer/wgsl/chunks/pdm_displacement.wgsl.js.map +1 -1
  87. package/lib/renderer/wgsl/chunks/rand.wgsl.js +3 -3
  88. package/lib/renderer/wgsl/chunks/rayTraceCore.wgsl.js +25 -22
  89. package/lib/renderer/wgsl/chunks/rayTraceCore.wgsl.js.map +1 -1
  90. package/lib/renderer/wgsl/chunks/sampleLight.wgsl.js +128 -128
  91. package/lib/renderer/wgsl/chunks/sampleMaterial.wgsl.js +143 -143
  92. package/lib/renderer/wgsl/chunks/sampleShadowCatcher.wgsl.js +6 -6
  93. package/lib/renderer/wgsl/chunks/sampling.wgsl.js +75 -75
  94. package/lib/renderer/wgsl/chunks/shadowCatcherAccumulation.wgsl.d.ts +3 -3
  95. package/lib/renderer/wgsl/chunks/shadowCatcherAccumulation.wgsl.js +2 -2
  96. package/lib/renderer/wgsl/chunks/shadowCatcherAccumulation.wgsl.js.map +1 -1
  97. package/lib/renderer/wgsl/chunks/sobol.wgsl.js +69 -69
  98. package/lib/renderer/wgsl/chunks/uvProjection.wgsl.js +11 -11
  99. package/lib/renderer/wgsl/compose.frag.wgsl.d.ts +2 -2
  100. package/lib/renderer/wgsl/compose.frag.wgsl.js +130 -102
  101. package/lib/renderer/wgsl/compose.frag.wgsl.js.map +1 -1
  102. package/lib/renderer/wgsl/customDenoise.wgsl.js +10 -10
  103. package/lib/renderer/wgsl/depthQuery.wgsl.d.ts +1 -1
  104. package/lib/renderer/wgsl/depthQuery.wgsl.js +5 -5
  105. package/lib/renderer/wgsl/depthQuery.wgsl.js.map +1 -1
  106. package/lib/renderer/wgsl/offlineAdaptive.compute.js +28 -28
  107. package/lib/renderer/wgsl/rayTrace.compute.js +289 -277
  108. package/lib/renderer/wgsl/rayTrace.compute.js.map +1 -1
  109. package/lib/scene/EnvironmentLight.d.ts +9 -3
  110. package/lib/scene/EnvironmentLight.js +9 -2
  111. package/lib/scene/EnvironmentLight.js.map +1 -1
  112. package/lib/scene/Scene.d.ts +4 -0
  113. package/lib/scene/Scene.js.map +1 -1
  114. package/lib/scene/SpotLight.d.ts +2 -2
  115. package/lib/scene/SpotLight.js +1 -1
  116. package/lib/scene/SpotLight.js.map +1 -1
  117. package/lib/scene/Texture.d.ts +17 -6
  118. package/lib/scene/Texture.js +13 -4
  119. package/lib/scene/Texture.js.map +1 -1
  120. package/lib/util/fromTHREE.js +151 -29
  121. package/lib/util/fromTHREE.js.map +1 -1
  122. package/lib/version.d.ts +1 -1
  123. package/lib/version.js +1 -1
  124. package/lib/version.js.map +1 -1
  125. package/package.json +5 -4
@@ -413,7 +413,8 @@ export function materialTexturesChanged(material, previous) {
413
413
  else if (previous[i++] !== texture || previous[i++] !== texture.version ||
414
414
  previous[i++] !== texture.image || previous[i++] !== texture.flipY ||
415
415
  previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||
416
- previous[i++] !== texture.uvChannel)
416
+ previous[i++] !== texture.uvChannel || previous[i++] !== texture.wrapS || previous[i++] !== texture.wrapT ||
417
+ previous[i++] !== texture.colorSpace)
417
418
  return true;
418
419
  }
419
420
  }
@@ -427,7 +428,8 @@ export function materialTexturesChanged(material, previous) {
427
428
  else if (previous[i++] !== texture || previous[i++] !== texture.version ||
428
429
  previous[i++] !== texture.image || previous[i++] !== texture.flipY ||
429
430
  previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||
430
- previous[i++] !== texture.uvChannel)
431
+ previous[i++] !== texture.uvChannel || previous[i++] !== texture.wrapS || previous[i++] !== texture.wrapT ||
432
+ previous[i++] !== texture.colorSpace)
431
433
  return true;
432
434
  }
433
435
  }
@@ -441,7 +443,8 @@ export function materialTexturesChanged(material, previous) {
441
443
  else if (previous[i++] !== texture || previous[i++] !== texture.version ||
442
444
  previous[i++] !== texture.image || previous[i++] !== texture.flipY ||
443
445
  previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||
444
- previous[i++] !== texture.uvChannel)
446
+ previous[i++] !== texture.uvChannel || previous[i++] !== texture.wrapS || previous[i++] !== texture.wrapT ||
447
+ previous[i++] !== texture.colorSpace)
445
448
  return true;
446
449
  }
447
450
  }
@@ -455,7 +458,8 @@ export function materialTexturesChanged(material, previous) {
455
458
  else if (previous[i++] !== texture || previous[i++] !== texture.version ||
456
459
  previous[i++] !== texture.image || previous[i++] !== texture.flipY ||
457
460
  previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||
458
- previous[i++] !== texture.uvChannel)
461
+ previous[i++] !== texture.uvChannel || previous[i++] !== texture.wrapS || previous[i++] !== texture.wrapT ||
462
+ previous[i++] !== texture.colorSpace)
459
463
  return true;
460
464
  }
461
465
  }
@@ -469,7 +473,8 @@ export function materialTexturesChanged(material, previous) {
469
473
  else if (previous[i++] !== texture || previous[i++] !== texture.version ||
470
474
  previous[i++] !== texture.image || previous[i++] !== texture.flipY ||
471
475
  previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||
472
- previous[i++] !== texture.uvChannel)
476
+ previous[i++] !== texture.uvChannel || previous[i++] !== texture.wrapS || previous[i++] !== texture.wrapT ||
477
+ previous[i++] !== texture.colorSpace)
473
478
  return true;
474
479
  }
475
480
  }
@@ -483,7 +488,8 @@ export function materialTexturesChanged(material, previous) {
483
488
  else if (previous[i++] !== texture || previous[i++] !== texture.version ||
484
489
  previous[i++] !== texture.image || previous[i++] !== texture.flipY ||
485
490
  previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||
486
- previous[i++] !== texture.uvChannel)
491
+ previous[i++] !== texture.uvChannel || previous[i++] !== texture.wrapS || previous[i++] !== texture.wrapT ||
492
+ previous[i++] !== texture.colorSpace)
487
493
  return true;
488
494
  }
489
495
  }
@@ -497,7 +503,8 @@ export function materialTexturesChanged(material, previous) {
497
503
  else if (previous[i++] !== texture || previous[i++] !== texture.version ||
498
504
  previous[i++] !== texture.image || previous[i++] !== texture.flipY ||
499
505
  previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||
500
- previous[i++] !== texture.uvChannel)
506
+ previous[i++] !== texture.uvChannel || previous[i++] !== texture.wrapS || previous[i++] !== texture.wrapT ||
507
+ previous[i++] !== texture.colorSpace)
501
508
  return true;
502
509
  }
503
510
  }
@@ -511,7 +518,8 @@ export function materialTexturesChanged(material, previous) {
511
518
  else if (previous[i++] !== texture || previous[i++] !== texture.version ||
512
519
  previous[i++] !== texture.image || previous[i++] !== texture.flipY ||
513
520
  previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||
514
- previous[i++] !== texture.uvChannel)
521
+ previous[i++] !== texture.uvChannel || previous[i++] !== texture.wrapS || previous[i++] !== texture.wrapT ||
522
+ previous[i++] !== texture.colorSpace)
515
523
  return true;
516
524
  }
517
525
  }
@@ -525,7 +533,8 @@ export function materialTexturesChanged(material, previous) {
525
533
  else if (previous[i++] !== texture || previous[i++] !== texture.version ||
526
534
  previous[i++] !== texture.image || previous[i++] !== texture.flipY ||
527
535
  previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||
528
- previous[i++] !== texture.uvChannel)
536
+ previous[i++] !== texture.uvChannel || previous[i++] !== texture.wrapS || previous[i++] !== texture.wrapT ||
537
+ previous[i++] !== texture.colorSpace)
529
538
  return true;
530
539
  }
531
540
  }
@@ -539,7 +548,8 @@ export function materialTexturesChanged(material, previous) {
539
548
  else if (previous[i++] !== texture || previous[i++] !== texture.version ||
540
549
  previous[i++] !== texture.image || previous[i++] !== texture.flipY ||
541
550
  previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||
542
- previous[i++] !== texture.uvChannel)
551
+ previous[i++] !== texture.uvChannel || previous[i++] !== texture.wrapS || previous[i++] !== texture.wrapT ||
552
+ previous[i++] !== texture.colorSpace)
543
553
  return true;
544
554
  }
545
555
  }
@@ -553,7 +563,8 @@ export function materialTexturesChanged(material, previous) {
553
563
  else if (previous[i++] !== texture || previous[i++] !== texture.version ||
554
564
  previous[i++] !== texture.image || previous[i++] !== texture.flipY ||
555
565
  previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||
556
- previous[i++] !== texture.uvChannel)
566
+ previous[i++] !== texture.uvChannel || previous[i++] !== texture.wrapS || previous[i++] !== texture.wrapT ||
567
+ previous[i++] !== texture.colorSpace)
557
568
  return true;
558
569
  }
559
570
  }
@@ -567,7 +578,8 @@ export function materialTexturesChanged(material, previous) {
567
578
  else if (previous[i++] !== texture || previous[i++] !== texture.version ||
568
579
  previous[i++] !== texture.image || previous[i++] !== texture.flipY ||
569
580
  previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||
570
- previous[i++] !== texture.uvChannel)
581
+ previous[i++] !== texture.uvChannel || previous[i++] !== texture.wrapS || previous[i++] !== texture.wrapT ||
582
+ previous[i++] !== texture.colorSpace)
571
583
  return true;
572
584
  }
573
585
  }
@@ -581,7 +593,8 @@ export function materialTexturesChanged(material, previous) {
581
593
  else if (previous[i++] !== texture || previous[i++] !== texture.version ||
582
594
  previous[i++] !== texture.image || previous[i++] !== texture.flipY ||
583
595
  previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||
584
- previous[i++] !== texture.uvChannel)
596
+ previous[i++] !== texture.uvChannel || previous[i++] !== texture.wrapS || previous[i++] !== texture.wrapT ||
597
+ previous[i++] !== texture.colorSpace)
585
598
  return true;
586
599
  }
587
600
  }
@@ -595,7 +608,8 @@ export function materialTexturesChanged(material, previous) {
595
608
  else if (previous[i++] !== texture || previous[i++] !== texture.version ||
596
609
  previous[i++] !== texture.image || previous[i++] !== texture.flipY ||
597
610
  previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||
598
- previous[i++] !== texture.uvChannel)
611
+ previous[i++] !== texture.uvChannel || previous[i++] !== texture.wrapS || previous[i++] !== texture.wrapT ||
612
+ previous[i++] !== texture.colorSpace)
599
613
  return true;
600
614
  }
601
615
  }
@@ -609,7 +623,8 @@ export function materialTexturesChanged(material, previous) {
609
623
  else if (previous[i++] !== texture || previous[i++] !== texture.version ||
610
624
  previous[i++] !== texture.image || previous[i++] !== texture.flipY ||
611
625
  previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||
612
- previous[i++] !== texture.uvChannel)
626
+ previous[i++] !== texture.uvChannel || previous[i++] !== texture.wrapS || previous[i++] !== texture.wrapT ||
627
+ previous[i++] !== texture.colorSpace)
613
628
  return true;
614
629
  }
615
630
  }
@@ -623,7 +638,8 @@ export function materialTexturesChanged(material, previous) {
623
638
  else if (previous[i++] !== texture || previous[i++] !== texture.version ||
624
639
  previous[i++] !== texture.image || previous[i++] !== texture.flipY ||
625
640
  previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||
626
- previous[i++] !== texture.uvChannel)
641
+ previous[i++] !== texture.uvChannel || previous[i++] !== texture.wrapS || previous[i++] !== texture.wrapT ||
642
+ previous[i++] !== texture.colorSpace)
627
643
  return true;
628
644
  }
629
645
  }
@@ -637,7 +653,8 @@ export function materialTexturesChanged(material, previous) {
637
653
  else if (previous[i++] !== texture || previous[i++] !== texture.version ||
638
654
  previous[i++] !== texture.image || previous[i++] !== texture.flipY ||
639
655
  previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||
640
- previous[i++] !== texture.uvChannel)
656
+ previous[i++] !== texture.uvChannel || previous[i++] !== texture.wrapS || previous[i++] !== texture.wrapT ||
657
+ previous[i++] !== texture.colorSpace)
641
658
  return true;
642
659
  }
643
660
  }
@@ -651,7 +668,8 @@ export function materialTexturesChanged(material, previous) {
651
668
  else if (previous[i++] !== texture || previous[i++] !== texture.version ||
652
669
  previous[i++] !== texture.image || previous[i++] !== texture.flipY ||
653
670
  previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||
654
- previous[i++] !== texture.uvChannel)
671
+ previous[i++] !== texture.uvChannel || previous[i++] !== texture.wrapS || previous[i++] !== texture.wrapT ||
672
+ previous[i++] !== texture.colorSpace)
655
673
  return true;
656
674
  }
657
675
  }
@@ -1 +1 @@
1
- {"version":3,"file":"materialComparison.generated.js","sourceRoot":"","sources":["../../src/renderer/materialComparison.generated.ts"],"names":[],"mappings":"AAIA,gFAAgF;AAChF,SAAS,oBAAoB,CAAC,KAAc,EAAE,QAAiB;IAC7D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACtE,MAAM,KAAK,GAAG,KAA0B,CAAC;IACzC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAC/E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE;QAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;IAC3F,OAAO,IAAI,CAAC;AACd,CAAC;AAED,0FAA0F;AAC1F,MAAM,UAAU,uBAAuB,CAAC,QAAyB,EAAE,MAA0B;IAC3F,CAAC;QACC,MAAM,KAAK,GAAG,QAAQ,CAAC,UAAU,EAAE,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACxD,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;IAC1F,CAAC;IACD,CAAC;QACC,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,EAAE,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACvD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACtD,MAAM,KAAK,GAAG,KAA0B,CAAC;YACzC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;gBAAE,OAAO,KAAK,CAAC;YAC/E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE;gBAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;oBAAE,OAAO,KAAK,CAAC;QAC7F,CAAC;aAAM,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;IACvD,CAAC;IACD,CAAC;QACC,MAAM,KAAK,GAAG,QAAQ,CAAC,oBAAoB,EAAE,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAClE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;IAC1F,CAAC;IACD,CAAC;QACC,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,EAAE,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAC3D,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;IAC1F,CAAC;IACD,CAAC;QACC,MAAM,KAAK,GAAG,QAAQ,CAAC,cAAc,EAAE,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAC5D,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;IAC1F,CAAC;IACD,CAAC;QACC,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,EAAE,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAC3D,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACtD,MAAM,KAAK,GAAG,KAA0B,CAAC;YACzC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;gBAAE,OAAO,KAAK,CAAC;YAC/E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE;gBAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;oBAAE,OAAO,KAAK,CAAC;QAC7F,CAAC;aAAM,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;IACvD,CAAC;IACD,CAAC;QACC,MAAM,KAAK,GAAG,QAAQ,CAAC,iBAAiB,EAAE,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAC/D,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;IAC1F,CAAC;IACD,CAAC;QACC,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,EAAE,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACzD,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;IAC1F,CAAC;IACD,CAAC;QACC,MAAM,KAAK,GAAG,QAAQ,CAAC,kBAAkB,EAAE,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAChE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;IAC1F,CAAC;IACD,CAAC;QACC,MAAM,KAAK,GAAG,QAAQ,CAAC,kBAAkB,EAAE,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAChE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;IAC1F,CAAC;IACD,CAAC;QACC,MAAM,KAAK,GAAG,QAAQ,CAAC,iBAAiB,EAAE,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QAChE,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACtD,MAAM,KAAK,GAAG,KAA0B,CAAC;YACzC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;gBAAE,OAAO,KAAK,CAAC;YAC/E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE;gBAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;oBAAE,OAAO,KAAK,CAAC;QAC7F,CAAC;aAAM,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;IACvD,CAAC;IACD,CAAC;QACC,MAAM,KAAK,GAAG,QAAQ,CAAC,iBAAiB,EAAE,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QAChE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;IAC1F,CAAC;IACD,CAAC;QACC,MAAM,KAAK,GAAG,QAAQ,CAAC,mBAAmB,EAAE,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QAClE,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACtD,MAAM,KAAK,GAAG,KAA0B,CAAC;YACzC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;gBAAE,OAAO,KAAK,CAAC;YAC/E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE;gBAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;oBAAE,OAAO,KAAK,CAAC;QAC7F,CAAC;aAAM,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;IACvD,CAAC;IACD,CAAC;QACC,MAAM,KAAK,GAAG,QAAQ,CAAC,6BAA6B,EAAE,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QAC5E,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;IAC1F,CAAC;IACD,CAAC;QACC,MAAM,KAAK,GAAG,QAAQ,CAAC,2BAA2B,EAAE,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QAC1E,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;IAC1F,CAAC;IACD,CAAC;QACC,MAAM,KAAK,GAAG,QAAQ,CAAC,gCAAgC,EAAE,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QAC/E,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;IAC1F,CAAC;IACD,CAAC;QACC,MAAM,KAAK,GAAG,QAAQ,CAAC,gBAAgB,EAAE,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QAC/D,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;IAC1F,CAAC;IACD,CAAC;QACC,MAAM,KAAK,GAAG,QAAQ,CAAC,eAAe,EAAE,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QAC9D,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACtD,MAAM,KAAK,GAAG,KAA0B,CAAC;YACzC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;gBAAE,OAAO,KAAK,CAAC;YAC/E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE;gBAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;oBAAE,OAAO,KAAK,CAAC;QAC7F,CAAC;aAAM,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;IACvD,CAAC;IACD,CAAC;QACC,MAAM,KAAK,GAAG,QAAQ,CAAC,gBAAgB,EAAE,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QAC/D,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;IAC1F,CAAC;IACD,CAAC;QACC,MAAM,KAAK,GAAG,QAAQ,CAAC,qBAAqB,EAAE,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QACpE,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACtD,MAAM,KAAK,GAAG,KAA0B,CAAC;YACzC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;gBAAE,OAAO,KAAK,CAAC;YAC/E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE;gBAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;oBAAE,OAAO,KAAK,CAAC;QAC7F,CAAC;aAAM,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;IACvD,CAAC;IACD,CAAC;QACC,MAAM,KAAK,GAAG,QAAQ,CAAC,oBAAoB,EAAE,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QACnE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;IAC1F,CAAC;IACD,CAAC;QACC,MAAM,KAAK,GAAG,QAAQ,CAAC,UAAU,EAAE,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QACzD,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;IAC1F,CAAC;IACD,CAAC;QACC,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,EAAE,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QACxD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACtD,MAAM,KAAK,GAAG,KAA0B,CAAC;YACzC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;gBAAE,OAAO,KAAK,CAAC;YAC/E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE;gBAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;oBAAE,OAAO,KAAK,CAAC;QAC7F,CAAC;aAAM,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;IACvD,CAAC;IACD,CAAC;QACC,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,EAAE,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QAC5D,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;IAC1F,CAAC;IACD,CAAC;QACC,MAAM,KAAK,GAAG,QAAQ,CAAC,UAAU,EAAE,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QACzD,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;IAC1F,CAAC;IACD,CAAC;QACC,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,EAAE,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QACxD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACtD,MAAM,KAAK,GAAG,KAA0B,CAAC;YACzC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;gBAAE,OAAO,KAAK,CAAC;YAC/E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE;gBAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;oBAAE,OAAO,KAAK,CAAC;QAC7F,CAAC;aAAM,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;IACvD,CAAC;IACD,CAAC;QACC,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,EAAE,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QAC5D,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;IAC1F,CAAC;IACD,CAAC;QACC,MAAM,KAAK,GAAG,QAAQ,CAAC,cAAc,EAAE,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QAC7D,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;IAC1F,CAAC;IACD,CAAC;QACC,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,EAAE,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QACtD,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;IAC1F,CAAC;IACD,CAAC;QACC,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,EAAE,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QAC5D,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;IAC1F,CAAC;IACD,CAAC;QACC,MAAM,KAAK,GAAG,QAAQ,CAAC,cAAc,EAAE,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QAC7D,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;IAC1F,CAAC;IACD,CAAC;QACC,MAAM,KAAK,GAAG,QAAQ,CAAC,iBAAiB,EAAE,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QAChE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;IAC1F,CAAC;IACD,CAAC;QACC,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,EAAE,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QAC1D,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;IAC1F,CAAC;IACD,CAAC;QACC,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,EAAE,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QAC5D,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACtD,MAAM,KAAK,GAAG,KAA0B,CAAC;YACzC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;gBAAE,OAAO,KAAK,CAAC;YAC/E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE;gBAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;oBAAE,OAAO,KAAK,CAAC;QAC7F,CAAC;aAAM,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;IACvD,CAAC;IACD,CAAC;QACC,MAAM,KAAK,GAAG,QAAQ,CAAC,iBAAiB,EAAE,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QAChE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;IAC1F,CAAC;IACD,CAAC;QACC,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,EAAE,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QACtD,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;IAC1F,CAAC;IACD,CAAC;QACC,MAAM,KAAK,GAAG,QAAQ,CAAC,UAAU,EAAE,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QACzD,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;IAC1F,CAAC;IACD,CAAC;QACC,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,EAAE,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QAC1D,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;IAC1F,CAAC;IACD,CAAC;QACC,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,EAAE,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QACxD,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;IAC1F,CAAC;IACD,CAAC;QACC,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,EAAE,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QAC1D,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;IAC1F,CAAC;IACD,CAAC;QACC,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,EAAE,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QAC1D,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACtD,MAAM,KAAK,GAAG,KAA0B,CAAC;YACzC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;gBAAE,OAAO,KAAK,CAAC;YAC/E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE;gBAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;oBAAE,OAAO,KAAK,CAAC;QAC7F,CAAC;aAAM,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;IACvD,CAAC;IACD,CAAC;QACC,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,EAAE,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QAC5D,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;IAC1F,CAAC;IACD,CAAC;QACC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;IAC1F,CAAC;IACD,CAAC;QACC,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,EAAE,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QACxD,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;IAC1F,CAAC;IACD,CAAC;QACC,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,EAAE,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QAC5D,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;IAC1F,CAAC;IACD,CAAC;QACC,MAAM,KAAK,GAAG,QAAQ,CAAC,YAAY,EAAE,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QAC3D,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;IAC1F,CAAC;IACD,CAAC;QACC,MAAM,KAAK,GAAG,QAAQ,CAAC,iBAAiB,EAAE,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QAChE,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACtD,MAAM,KAAK,GAAG,KAA0B,CAAC;YACzC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;gBAAE,OAAO,KAAK,CAAC;YAC/E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE;gBAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;oBAAE,OAAO,KAAK,CAAC;QAC7F,CAAC;aAAM,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;IACvD,CAAC;IACD,CAAC;QACC,MAAM,KAAK,GAAG,QAAQ,CAAC,wBAAwB,EAAE,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QACvE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;IAC1F,CAAC;IACD,CAAC;QACC,MAAM,KAAK,GAAG,QAAQ,CAAC,6BAA6B,EAAE,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QAC5E,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;IAC1F,CAAC;IACD,CAAC;QACC,MAAM,KAAK,GAAG,QAAQ,CAAC,iBAAiB,EAAE,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QAChE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;IAC1F,CAAC;IACD,CAAC;QACC,MAAM,KAAK,GAAG,QAAQ,CAAC,oBAAoB,EAAE,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QACnE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;IAC1F,CAAC;IACD,CAAC;QACC,MAAM,KAAK,GAAG,QAAQ,CAAC,wBAAwB,EAAE,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QACvE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;IAC1F,CAAC;IACD,CAAC;QACC,MAAM,KAAK,GAAG,QAAQ,CAAC,kBAAkB,EAAE,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QACjE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;IAC1F,CAAC;IACD,CAAC;QACC,MAAM,KAAK,GAAG,QAAQ,CAAC,0BAA0B,EAAE,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QACzE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;IAC1F,CAAC;IACD,CAAC;QACC,MAAM,KAAK,GAAG,QAAQ,CAAC,sBAAsB,EAAE,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QACrE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;IAC1F,CAAC;IACD,CAAC;QACC,MAAM,KAAK,GAAG,QAAQ,CAAC,uBAAuB,EAAE,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QACtE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;IAC1F,CAAC;IACD,CAAC;QACC,MAAM,KAAK,GAAG,QAAQ,CAAC,eAAe,EAAE,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QAC9D,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACtD,MAAM,KAAK,GAAG,KAA0B,CAAC;YACzC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;gBAAE,OAAO,KAAK,CAAC;YAC/E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE;gBAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;oBAAE,OAAO,KAAK,CAAC;QAC7F,CAAC;aAAM,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;IACvD,CAAC;IACD,CAAC;QACC,MAAM,KAAK,GAAG,QAAQ,CAAC,gBAAgB,EAAE,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QAC/D,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;IAC1F,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,uBAAuB,CAAC,QAAyB,EAAE,QAA4B;IAC7F,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,CAAC;QACC,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC;QAC7B,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAAC,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,SAAS;oBAAE,OAAO,IAAI,CAAC;YAAC,CAAC;iBAC1D,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,OAAO;gBACrE,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,KAAK,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,KAAK;gBAClE,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,OAAO,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,QAAQ;gBACvE,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,SAAS;gBAAE,OAAO,IAAI,CAAC;QACrD,CAAC;IACH,CAAC;IACD,CAAC;QACC,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC;QAClC,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAAC,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,SAAS;oBAAE,OAAO,IAAI,CAAC;YAAC,CAAC;iBAC1D,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,OAAO;gBACrE,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,KAAK,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,KAAK;gBAClE,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,OAAO,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,QAAQ;gBACvE,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,SAAS;gBAAE,OAAO,IAAI,CAAC;QACrD,CAAC;IACH,CAAC;IACD,CAAC;QACC,MAAM,OAAO,GAAG,QAAQ,CAAC,WAAW,CAAC;QACrC,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAAC,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,SAAS;oBAAE,OAAO,IAAI,CAAC;YAAC,CAAC;iBAC1D,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,OAAO;gBACrE,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,KAAK,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,KAAK;gBAClE,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,OAAO,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,QAAQ;gBACvE,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,SAAS;gBAAE,OAAO,IAAI,CAAC;QACrD,CAAC;IACH,CAAC;IACD,CAAC;QACC,MAAM,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC;QACnC,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAAC,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,SAAS;oBAAE,OAAO,IAAI,CAAC;YAAC,CAAC;iBAC1D,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,OAAO;gBACrE,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,KAAK,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,KAAK;gBAClE,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,OAAO,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,QAAQ;gBACvE,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,SAAS;gBAAE,OAAO,IAAI,CAAC;QACrD,CAAC;IACH,CAAC;IACD,CAAC;QACC,MAAM,OAAO,GAAG,QAAQ,CAAC,oBAAoB,CAAC;QAC9C,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAAC,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,SAAS;oBAAE,OAAO,IAAI,CAAC;YAAC,CAAC;iBAC1D,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,OAAO;gBACrE,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,KAAK,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,KAAK;gBAClE,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,OAAO,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,QAAQ;gBACvE,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,SAAS;gBAAE,OAAO,IAAI,CAAC;QACrD,CAAC;IACH,CAAC;IACD,CAAC;QACC,MAAM,OAAO,GAAG,QAAQ,CAAC,YAAY,CAAC;QACtC,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAAC,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,SAAS;oBAAE,OAAO,IAAI,CAAC;YAAC,CAAC;iBAC1D,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,OAAO;gBACrE,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,KAAK,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,KAAK;gBAClE,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,OAAO,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,QAAQ;gBACvE,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,SAAS;gBAAE,OAAO,IAAI,CAAC;QACrD,CAAC;IACH,CAAC;IACD,CAAC;QACC,MAAM,OAAO,GAAG,QAAQ,CAAC,YAAY,CAAC;QACtC,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAAC,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,SAAS;oBAAE,OAAO,IAAI,CAAC;YAAC,CAAC;iBAC1D,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,OAAO;gBACrE,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,KAAK,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,KAAK;gBAClE,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,OAAO,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,QAAQ;gBACvE,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,SAAS;gBAAE,OAAO,IAAI,CAAC;QACrD,CAAC;IACH,CAAC;IACD,CAAC;QACC,MAAM,OAAO,GAAG,QAAQ,CAAC,eAAe,CAAC;QACzC,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAAC,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,SAAS;oBAAE,OAAO,IAAI,CAAC;YAAC,CAAC;iBAC1D,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,OAAO;gBACrE,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,KAAK,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,KAAK;gBAClE,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,OAAO,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,QAAQ;gBACvE,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,SAAS;gBAAE,OAAO,IAAI,CAAC;QACrD,CAAC;IACH,CAAC;IACD,CAAC;QACC,MAAM,OAAO,GAAG,QAAQ,CAAC,WAAW,CAAC;QACrC,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAAC,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,SAAS;oBAAE,OAAO,IAAI,CAAC;YAAC,CAAC;iBAC1D,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,OAAO;gBACrE,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,KAAK,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,KAAK;gBAClE,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,OAAO,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,QAAQ;gBACvE,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,SAAS;gBAAE,OAAO,IAAI,CAAC;QACrD,CAAC;IACH,CAAC;IACD,CAAC;QACC,MAAM,OAAO,GAAG,QAAQ,CAAC,eAAe,CAAC;QACzC,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAAC,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,SAAS;oBAAE,OAAO,IAAI,CAAC;YAAC,CAAC;iBAC1D,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,OAAO;gBACrE,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,KAAK,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,KAAK;gBAClE,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,OAAO,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,QAAQ;gBACvE,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,SAAS;gBAAE,OAAO,IAAI,CAAC;QACrD,CAAC;IACH,CAAC;IACD,CAAC;QACC,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC;QACvC,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAAC,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,SAAS;oBAAE,OAAO,IAAI,CAAC;YAAC,CAAC;iBAC1D,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,OAAO;gBACrE,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,KAAK,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,KAAK;gBAClE,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,OAAO,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,QAAQ;gBACvE,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,SAAS;gBAAE,OAAO,IAAI,CAAC;QACrD,CAAC;IACH,CAAC;IACD,CAAC;QACC,MAAM,OAAO,GAAG,QAAQ,CAAC,gBAAgB,CAAC;QAC1C,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAAC,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,SAAS;oBAAE,OAAO,IAAI,CAAC;YAAC,CAAC;iBAC1D,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,OAAO;gBACrE,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,KAAK,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,KAAK;gBAClE,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,OAAO,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,QAAQ;gBACvE,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,SAAS;gBAAE,OAAO,IAAI,CAAC;QACrD,CAAC;IACH,CAAC;IACD,CAAC;QACC,MAAM,OAAO,GAAG,QAAQ,CAAC,YAAY,CAAC;QACtC,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAAC,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,SAAS;oBAAE,OAAO,IAAI,CAAC;YAAC,CAAC;iBAC1D,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,OAAO;gBACrE,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,KAAK,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,KAAK;gBAClE,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,OAAO,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,QAAQ;gBACvE,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,SAAS;gBAAE,OAAO,IAAI,CAAC;QACrD,CAAC;IACH,CAAC;IACD,CAAC;QACC,MAAM,OAAO,GAAG,QAAQ,CAAC,gBAAgB,CAAC;QAC1C,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAAC,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,SAAS;oBAAE,OAAO,IAAI,CAAC;YAAC,CAAC;iBAC1D,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,OAAO;gBACrE,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,KAAK,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,KAAK;gBAClE,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,OAAO,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,QAAQ;gBACvE,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,SAAS;gBAAE,OAAO,IAAI,CAAC;QACrD,CAAC;IACH,CAAC;IACD,CAAC;QACC,MAAM,OAAO,GAAG,QAAQ,CAAC,iBAAiB,CAAC;QAC3C,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAAC,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,SAAS;oBAAE,OAAO,IAAI,CAAC;YAAC,CAAC;iBAC1D,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,OAAO;gBACrE,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,KAAK,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,KAAK;gBAClE,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,OAAO,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,QAAQ;gBACvE,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,SAAS;gBAAE,OAAO,IAAI,CAAC;QACrD,CAAC;IACH,CAAC;IACD,CAAC;QACC,MAAM,OAAO,GAAG,QAAQ,CAAC,gBAAgB,CAAC;QAC1C,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAAC,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,SAAS;oBAAE,OAAO,IAAI,CAAC;YAAC,CAAC;iBAC1D,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,OAAO;gBACrE,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,KAAK,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,KAAK;gBAClE,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,OAAO,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,QAAQ;gBACvE,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,SAAS;gBAAE,OAAO,IAAI,CAAC;QACrD,CAAC;IACH,CAAC;IACD,CAAC;QACC,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC;QACvC,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAAC,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,SAAS;oBAAE,OAAO,IAAI,CAAC;YAAC,CAAC;iBAC1D,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,OAAO;gBACrE,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,KAAK,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,KAAK;gBAClE,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,OAAO,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,QAAQ;gBACvE,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,SAAS;gBAAE,OAAO,IAAI,CAAC;QACrD,CAAC;IACH,CAAC;IACD,CAAC;QACC,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC;QACvC,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAAC,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,SAAS;oBAAE,OAAO,IAAI,CAAC;YAAC,CAAC;iBAC1D,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,OAAO;gBACrE,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,KAAK,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,KAAK;gBAClE,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,OAAO,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,QAAQ;gBACvE,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,SAAS;gBAAE,OAAO,IAAI,CAAC;QACrD,CAAC;IACH,CAAC;IACD,OAAO,CAAC,KAAK,QAAQ,CAAC,MAAM,CAAC;AAC/B,CAAC","sourcesContent":["// Generated by scripts/generate-material-comparison.mjs from openPbrSchema.ts.\n// Do not edit; run npm run generate:material-comparison after changing the schema.\nimport type OpenPBRMaterial from '../scene/OpenPBRMaterial.js';\n\n// Retain the generic array behavior for unusual scalar values supplied from JS.\nfunction arrayParametersEqual(value: unknown, previous: unknown): boolean {\n if (!Array.isArray(value) && !ArrayBuffer.isView(value)) return false;\n const array = value as ArrayLike<number>;\n if (!Array.isArray(previous) || array.length !== previous.length) return false;\n for (let i = 0; i < array.length; i++) if (!Object.is(array[i], previous[i])) return false;\n return true;\n}\n\n/** Static field accesses keep the unchanged-material path free of dynamic key lookups. */\nexport function materialParametersEqual(material: OpenPBRMaterial, values: readonly unknown[]): boolean {\n {\n const value = material.baseWeight, previous = values[0];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.baseColor, previous = values[1];\n if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n const array = value as ArrayLike<number>;\n if (!Array.isArray(previous) || array.length !== previous.length) return false;\n for (let i = 0; i < array.length; i++) if (!Object.is(array[i], previous[i])) return false;\n } else if (!Object.is(value, previous)) return false;\n }\n {\n const value = material.baseDiffuseRoughness, previous = values[2];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.baseMetalness, previous = values[3];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.specularWeight, previous = values[4];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.specularColor, previous = values[5];\n if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n const array = value as ArrayLike<number>;\n if (!Array.isArray(previous) || array.length !== previous.length) return false;\n for (let i = 0; i < array.length; i++) if (!Object.is(array[i], previous[i])) return false;\n } else if (!Object.is(value, previous)) return false;\n }\n {\n const value = material.specularRoughness, previous = values[6];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.specularIor, previous = values[7];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.specularAnisotropy, previous = values[8];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.transmissionWeight, previous = values[9];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.transmissionColor, previous = values[10];\n if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n const array = value as ArrayLike<number>;\n if (!Array.isArray(previous) || array.length !== previous.length) return false;\n for (let i = 0; i < array.length; i++) if (!Object.is(array[i], previous[i])) return false;\n } else if (!Object.is(value, previous)) return false;\n }\n {\n const value = material.transmissionDepth, previous = values[11];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.transmissionScatter, previous = values[12];\n if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n const array = value as ArrayLike<number>;\n if (!Array.isArray(previous) || array.length !== previous.length) return false;\n for (let i = 0; i < array.length; i++) if (!Object.is(array[i], previous[i])) return false;\n } else if (!Object.is(value, previous)) return false;\n }\n {\n const value = material.transmissionScatterAnisotropy, previous = values[13];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.transmissionDispersionScale, previous = values[14];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.transmissionDispersionAbbeNumber, previous = values[15];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.subsurfaceWeight, previous = values[16];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.subsurfaceColor, previous = values[17];\n if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n const array = value as ArrayLike<number>;\n if (!Array.isArray(previous) || array.length !== previous.length) return false;\n for (let i = 0; i < array.length; i++) if (!Object.is(array[i], previous[i])) return false;\n } else if (!Object.is(value, previous)) return false;\n }\n {\n const value = material.subsurfaceRadius, previous = values[18];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.subsurfaceRadiusScale, previous = values[19];\n if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n const array = value as ArrayLike<number>;\n if (!Array.isArray(previous) || array.length !== previous.length) return false;\n for (let i = 0; i < array.length; i++) if (!Object.is(array[i], previous[i])) return false;\n } else if (!Object.is(value, previous)) return false;\n }\n {\n const value = material.subsurfaceAnisotropy, previous = values[20];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.fuzzWeight, previous = values[21];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.fuzzColor, previous = values[22];\n if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n const array = value as ArrayLike<number>;\n if (!Array.isArray(previous) || array.length !== previous.length) return false;\n for (let i = 0; i < array.length; i++) if (!Object.is(array[i], previous[i])) return false;\n } else if (!Object.is(value, previous)) return false;\n }\n {\n const value = material.fuzzRoughness, previous = values[23];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.coatWeight, previous = values[24];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.coatColor, previous = values[25];\n if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n const array = value as ArrayLike<number>;\n if (!Array.isArray(previous) || array.length !== previous.length) return false;\n for (let i = 0; i < array.length; i++) if (!Object.is(array[i], previous[i])) return false;\n } else if (!Object.is(value, previous)) return false;\n }\n {\n const value = material.coatRoughness, previous = values[26];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.coatAnisotropy, previous = values[27];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.coatIor, previous = values[28];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.coatDarkening, previous = values[29];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.thinFilmWeight, previous = values[30];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.thinFilmThickness, previous = values[31];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.thinFilmIor, previous = values[32];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.emissionColor, previous = values[33];\n if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n const array = value as ArrayLike<number>;\n if (!Array.isArray(previous) || array.length !== previous.length) return false;\n for (let i = 0; i < array.length; i++) if (!Object.is(array[i], previous[i])) return false;\n } else if (!Object.is(value, previous)) return false;\n }\n {\n const value = material.emissionLuminance, previous = values[34];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.opacity, previous = values[35];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.thinWalled, previous = values[36];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.doubleSided, previous = values[37];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.alphaMode, previous = values[38];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.alphaCutoff, previous = values[39];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.normalScale, previous = values[40];\n if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n const array = value as ArrayLike<number>;\n if (!Array.isArray(previous) || array.length !== previous.length) return false;\n for (let i = 0; i < array.length; i++) if (!Object.is(array[i], previous[i])) return false;\n } else if (!Object.is(value, previous)) return false;\n }\n {\n const value = material.shadowCatcher, previous = values[41];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.unlit, previous = values[42];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.bevelSize, previous = values[43];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.mapAlphaUsage, previous = values[44];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.uvProjection, previous = values[45];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.uvProjectionScale, previous = values[46];\n if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n const array = value as ArrayLike<number>;\n if (!Array.isArray(previous) || array.length !== previous.length) return false;\n for (let i = 0; i < array.length; i++) if (!Object.is(array[i], previous[i])) return false;\n } else if (!Object.is(value, previous)) return false;\n }\n {\n const value = material.displacementUvProjection, previous = values[47];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.displacementUvProjectionScale, previous = values[48];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.displacementScale, previous = values[49];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.displacementStepSize, previous = values[50];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.thinFilmThicknessMinimum, previous = values[51];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.thinFilmMapChannel, previous = values[52];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.specularAnisotropyRotation, previous = values[53];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.coatAnisotropyRotation, previous = values[54];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.specularAnisotropyModel, previous = values[55];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.coatNormalScale, previous = values[56];\n if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n const array = value as ArrayLike<number>;\n if (!Array.isArray(previous) || array.length !== previous.length) return false;\n for (let i = 0; i < array.length; i++) if (!Object.is(array[i], previous[i])) return false;\n } else if (!Object.is(value, previous)) return false;\n }\n {\n const value = material.displacementBias, previous = values[57];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n return true;\n}\n\n/** Mirrors captureMaterialTextures, including numeric texture-category scalars. */\nexport function materialTexturesChanged(material: OpenPBRMaterial, previous: readonly unknown[]): boolean {\n let i = 0;\n {\n const texture = material.map;\n if (typeof texture !== 'number') {\n if (!texture) { if (previous[i++] !== undefined) return true; }\n else if (previous[i++] !== texture || previous[i++] !== texture.version ||\n previous[i++] !== texture.image || previous[i++] !== texture.flipY ||\n previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||\n previous[i++] !== texture.uvChannel) return true;\n }\n }\n {\n const texture = material.alphaMap;\n if (typeof texture !== 'number') {\n if (!texture) { if (previous[i++] !== undefined) return true; }\n else if (previous[i++] !== texture || previous[i++] !== texture.version ||\n previous[i++] !== texture.image || previous[i++] !== texture.flipY ||\n previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||\n previous[i++] !== texture.uvChannel) return true;\n }\n }\n {\n const texture = material.emissiveMap;\n if (typeof texture !== 'number') {\n if (!texture) { if (previous[i++] !== undefined) return true; }\n else if (previous[i++] !== texture || previous[i++] !== texture.version ||\n previous[i++] !== texture.image || previous[i++] !== texture.flipY ||\n previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||\n previous[i++] !== texture.uvChannel) return true;\n }\n }\n {\n const texture = material.normalMap;\n if (typeof texture !== 'number') {\n if (!texture) { if (previous[i++] !== undefined) return true; }\n else if (previous[i++] !== texture || previous[i++] !== texture.version ||\n previous[i++] !== texture.image || previous[i++] !== texture.flipY ||\n previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||\n previous[i++] !== texture.uvChannel) return true;\n }\n }\n {\n const texture = material.metallicRoughnessMap;\n if (typeof texture !== 'number') {\n if (!texture) { if (previous[i++] !== undefined) return true; }\n else if (previous[i++] !== texture || previous[i++] !== texture.version ||\n previous[i++] !== texture.image || previous[i++] !== texture.flipY ||\n previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||\n previous[i++] !== texture.uvChannel) return true;\n }\n }\n {\n const texture = material.roughnessMap;\n if (typeof texture !== 'number') {\n if (!texture) { if (previous[i++] !== undefined) return true; }\n else if (previous[i++] !== texture || previous[i++] !== texture.version ||\n previous[i++] !== texture.image || previous[i++] !== texture.flipY ||\n previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||\n previous[i++] !== texture.uvChannel) return true;\n }\n }\n {\n const texture = material.metalnessMap;\n if (typeof texture !== 'number') {\n if (!texture) { if (previous[i++] !== undefined) return true; }\n else if (previous[i++] !== texture || previous[i++] !== texture.version ||\n previous[i++] !== texture.image || previous[i++] !== texture.flipY ||\n previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||\n previous[i++] !== texture.uvChannel) return true;\n }\n }\n {\n const texture = material.transmissionMap;\n if (typeof texture !== 'number') {\n if (!texture) { if (previous[i++] !== undefined) return true; }\n else if (previous[i++] !== texture || previous[i++] !== texture.version ||\n previous[i++] !== texture.image || previous[i++] !== texture.flipY ||\n previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||\n previous[i++] !== texture.uvChannel) return true;\n }\n }\n {\n const texture = material.thinFilmMap;\n if (typeof texture !== 'number') {\n if (!texture) { if (previous[i++] !== undefined) return true; }\n else if (previous[i++] !== texture || previous[i++] !== texture.version ||\n previous[i++] !== texture.image || previous[i++] !== texture.flipY ||\n previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||\n previous[i++] !== texture.uvChannel) return true;\n }\n }\n {\n const texture = material.displacementMap;\n if (typeof texture !== 'number') {\n if (!texture) { if (previous[i++] !== undefined) return true; }\n else if (previous[i++] !== texture || previous[i++] !== texture.version ||\n previous[i++] !== texture.image || previous[i++] !== texture.flipY ||\n previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||\n previous[i++] !== texture.uvChannel) return true;\n }\n }\n {\n const texture = material.coatWeightMap;\n if (typeof texture !== 'number') {\n if (!texture) { if (previous[i++] !== undefined) return true; }\n else if (previous[i++] !== texture || previous[i++] !== texture.version ||\n previous[i++] !== texture.image || previous[i++] !== texture.flipY ||\n previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||\n previous[i++] !== texture.uvChannel) return true;\n }\n }\n {\n const texture = material.coatRoughnessMap;\n if (typeof texture !== 'number') {\n if (!texture) { if (previous[i++] !== undefined) return true; }\n else if (previous[i++] !== texture || previous[i++] !== texture.version ||\n previous[i++] !== texture.image || previous[i++] !== texture.flipY ||\n previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||\n previous[i++] !== texture.uvChannel) return true;\n }\n }\n {\n const texture = material.fuzzColorMap;\n if (typeof texture !== 'number') {\n if (!texture) { if (previous[i++] !== undefined) return true; }\n else if (previous[i++] !== texture || previous[i++] !== texture.version ||\n previous[i++] !== texture.image || previous[i++] !== texture.flipY ||\n previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||\n previous[i++] !== texture.uvChannel) return true;\n }\n }\n {\n const texture = material.fuzzRoughnessMap;\n if (typeof texture !== 'number') {\n if (!texture) { if (previous[i++] !== undefined) return true; }\n else if (previous[i++] !== texture || previous[i++] !== texture.version ||\n previous[i++] !== texture.image || previous[i++] !== texture.flipY ||\n previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||\n previous[i++] !== texture.uvChannel) return true;\n }\n }\n {\n const texture = material.specularWeightMap;\n if (typeof texture !== 'number') {\n if (!texture) { if (previous[i++] !== undefined) return true; }\n else if (previous[i++] !== texture || previous[i++] !== texture.version ||\n previous[i++] !== texture.image || previous[i++] !== texture.flipY ||\n previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||\n previous[i++] !== texture.uvChannel) return true;\n }\n }\n {\n const texture = material.specularColorMap;\n if (typeof texture !== 'number') {\n if (!texture) { if (previous[i++] !== undefined) return true; }\n else if (previous[i++] !== texture || previous[i++] !== texture.version ||\n previous[i++] !== texture.image || previous[i++] !== texture.flipY ||\n previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||\n previous[i++] !== texture.uvChannel) return true;\n }\n }\n {\n const texture = material.anisotropyMap;\n if (typeof texture !== 'number') {\n if (!texture) { if (previous[i++] !== undefined) return true; }\n else if (previous[i++] !== texture || previous[i++] !== texture.version ||\n previous[i++] !== texture.image || previous[i++] !== texture.flipY ||\n previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||\n previous[i++] !== texture.uvChannel) return true;\n }\n }\n {\n const texture = material.coatNormalMap;\n if (typeof texture !== 'number') {\n if (!texture) { if (previous[i++] !== undefined) return true; }\n else if (previous[i++] !== texture || previous[i++] !== texture.version ||\n previous[i++] !== texture.image || previous[i++] !== texture.flipY ||\n previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||\n previous[i++] !== texture.uvChannel) return true;\n }\n }\n return i !== previous.length;\n}\n"]}
1
+ {"version":3,"file":"materialComparison.generated.js","sourceRoot":"","sources":["../../src/renderer/materialComparison.generated.ts"],"names":[],"mappings":"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","sourcesContent":["// Generated by scripts/generate-material-comparison.mjs from openPbrSchema.ts.\n// Do not edit; run npm run generate:material-comparison after changing the schema.\nimport type OpenPBRMaterial from '../scene/OpenPBRMaterial.js';\n\n// Retain the generic array behavior for unusual scalar values supplied from JS.\nfunction arrayParametersEqual(value: unknown, previous: unknown): boolean {\n if (!Array.isArray(value) && !ArrayBuffer.isView(value)) return false;\n const array = value as ArrayLike<number>;\n if (!Array.isArray(previous) || array.length !== previous.length) return false;\n for (let i = 0; i < array.length; i++) if (!Object.is(array[i], previous[i])) return false;\n return true;\n}\n\n/** Static field accesses keep the unchanged-material path free of dynamic key lookups. */\nexport function materialParametersEqual(material: OpenPBRMaterial, values: readonly unknown[]): boolean {\n {\n const value = material.baseWeight, previous = values[0];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.baseColor, previous = values[1];\n if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n const array = value as ArrayLike<number>;\n if (!Array.isArray(previous) || array.length !== previous.length) return false;\n for (let i = 0; i < array.length; i++) if (!Object.is(array[i], previous[i])) return false;\n } else if (!Object.is(value, previous)) return false;\n }\n {\n const value = material.baseDiffuseRoughness, previous = values[2];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.baseMetalness, previous = values[3];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.specularWeight, previous = values[4];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.specularColor, previous = values[5];\n if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n const array = value as ArrayLike<number>;\n if (!Array.isArray(previous) || array.length !== previous.length) return false;\n for (let i = 0; i < array.length; i++) if (!Object.is(array[i], previous[i])) return false;\n } else if (!Object.is(value, previous)) return false;\n }\n {\n const value = material.specularRoughness, previous = values[6];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.specularIor, previous = values[7];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.specularAnisotropy, previous = values[8];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.transmissionWeight, previous = values[9];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.transmissionColor, previous = values[10];\n if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n const array = value as ArrayLike<number>;\n if (!Array.isArray(previous) || array.length !== previous.length) return false;\n for (let i = 0; i < array.length; i++) if (!Object.is(array[i], previous[i])) return false;\n } else if (!Object.is(value, previous)) return false;\n }\n {\n const value = material.transmissionDepth, previous = values[11];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.transmissionScatter, previous = values[12];\n if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n const array = value as ArrayLike<number>;\n if (!Array.isArray(previous) || array.length !== previous.length) return false;\n for (let i = 0; i < array.length; i++) if (!Object.is(array[i], previous[i])) return false;\n } else if (!Object.is(value, previous)) return false;\n }\n {\n const value = material.transmissionScatterAnisotropy, previous = values[13];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.transmissionDispersionScale, previous = values[14];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.transmissionDispersionAbbeNumber, previous = values[15];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.subsurfaceWeight, previous = values[16];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.subsurfaceColor, previous = values[17];\n if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n const array = value as ArrayLike<number>;\n if (!Array.isArray(previous) || array.length !== previous.length) return false;\n for (let i = 0; i < array.length; i++) if (!Object.is(array[i], previous[i])) return false;\n } else if (!Object.is(value, previous)) return false;\n }\n {\n const value = material.subsurfaceRadius, previous = values[18];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.subsurfaceRadiusScale, previous = values[19];\n if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n const array = value as ArrayLike<number>;\n if (!Array.isArray(previous) || array.length !== previous.length) return false;\n for (let i = 0; i < array.length; i++) if (!Object.is(array[i], previous[i])) return false;\n } else if (!Object.is(value, previous)) return false;\n }\n {\n const value = material.subsurfaceAnisotropy, previous = values[20];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.fuzzWeight, previous = values[21];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.fuzzColor, previous = values[22];\n if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n const array = value as ArrayLike<number>;\n if (!Array.isArray(previous) || array.length !== previous.length) return false;\n for (let i = 0; i < array.length; i++) if (!Object.is(array[i], previous[i])) return false;\n } else if (!Object.is(value, previous)) return false;\n }\n {\n const value = material.fuzzRoughness, previous = values[23];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.coatWeight, previous = values[24];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.coatColor, previous = values[25];\n if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n const array = value as ArrayLike<number>;\n if (!Array.isArray(previous) || array.length !== previous.length) return false;\n for (let i = 0; i < array.length; i++) if (!Object.is(array[i], previous[i])) return false;\n } else if (!Object.is(value, previous)) return false;\n }\n {\n const value = material.coatRoughness, previous = values[26];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.coatAnisotropy, previous = values[27];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.coatIor, previous = values[28];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.coatDarkening, previous = values[29];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.thinFilmWeight, previous = values[30];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.thinFilmThickness, previous = values[31];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.thinFilmIor, previous = values[32];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.emissionColor, previous = values[33];\n if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n const array = value as ArrayLike<number>;\n if (!Array.isArray(previous) || array.length !== previous.length) return false;\n for (let i = 0; i < array.length; i++) if (!Object.is(array[i], previous[i])) return false;\n } else if (!Object.is(value, previous)) return false;\n }\n {\n const value = material.emissionLuminance, previous = values[34];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.opacity, previous = values[35];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.thinWalled, previous = values[36];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.doubleSided, previous = values[37];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.alphaMode, previous = values[38];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.alphaCutoff, previous = values[39];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.normalScale, previous = values[40];\n if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n const array = value as ArrayLike<number>;\n if (!Array.isArray(previous) || array.length !== previous.length) return false;\n for (let i = 0; i < array.length; i++) if (!Object.is(array[i], previous[i])) return false;\n } else if (!Object.is(value, previous)) return false;\n }\n {\n const value = material.shadowCatcher, previous = values[41];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.unlit, previous = values[42];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.bevelSize, previous = values[43];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.mapAlphaUsage, previous = values[44];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.uvProjection, previous = values[45];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.uvProjectionScale, previous = values[46];\n if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n const array = value as ArrayLike<number>;\n if (!Array.isArray(previous) || array.length !== previous.length) return false;\n for (let i = 0; i < array.length; i++) if (!Object.is(array[i], previous[i])) return false;\n } else if (!Object.is(value, previous)) return false;\n }\n {\n const value = material.displacementUvProjection, previous = values[47];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.displacementUvProjectionScale, previous = values[48];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.displacementScale, previous = values[49];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.displacementStepSize, previous = values[50];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.thinFilmThicknessMinimum, previous = values[51];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.thinFilmMapChannel, previous = values[52];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.specularAnisotropyRotation, previous = values[53];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.coatAnisotropyRotation, previous = values[54];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.specularAnisotropyModel, previous = values[55];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n {\n const value = material.coatNormalScale, previous = values[56];\n if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n const array = value as ArrayLike<number>;\n if (!Array.isArray(previous) || array.length !== previous.length) return false;\n for (let i = 0; i < array.length; i++) if (!Object.is(array[i], previous[i])) return false;\n } else if (!Object.is(value, previous)) return false;\n }\n {\n const value = material.displacementBias, previous = values[57];\n if (!Object.is(value, previous) && !arrayParametersEqual(value, previous)) return false;\n }\n return true;\n}\n\n/** Mirrors captureMaterialTextures, including numeric texture-category scalars. */\nexport function materialTexturesChanged(material: OpenPBRMaterial, previous: readonly unknown[]): boolean {\n let i = 0;\n {\n const texture = material.map;\n if (typeof texture !== 'number') {\n if (!texture) { if (previous[i++] !== undefined) return true; }\n else if (previous[i++] !== texture || previous[i++] !== texture.version ||\n previous[i++] !== texture.image || previous[i++] !== texture.flipY ||\n previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||\n previous[i++] !== texture.uvChannel || previous[i++] !== texture.wrapS || previous[i++] !== texture.wrapT ||\n previous[i++] !== texture.colorSpace) return true;\n }\n }\n {\n const texture = material.alphaMap;\n if (typeof texture !== 'number') {\n if (!texture) { if (previous[i++] !== undefined) return true; }\n else if (previous[i++] !== texture || previous[i++] !== texture.version ||\n previous[i++] !== texture.image || previous[i++] !== texture.flipY ||\n previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||\n previous[i++] !== texture.uvChannel || previous[i++] !== texture.wrapS || previous[i++] !== texture.wrapT ||\n previous[i++] !== texture.colorSpace) return true;\n }\n }\n {\n const texture = material.emissiveMap;\n if (typeof texture !== 'number') {\n if (!texture) { if (previous[i++] !== undefined) return true; }\n else if (previous[i++] !== texture || previous[i++] !== texture.version ||\n previous[i++] !== texture.image || previous[i++] !== texture.flipY ||\n previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||\n previous[i++] !== texture.uvChannel || previous[i++] !== texture.wrapS || previous[i++] !== texture.wrapT ||\n previous[i++] !== texture.colorSpace) return true;\n }\n }\n {\n const texture = material.normalMap;\n if (typeof texture !== 'number') {\n if (!texture) { if (previous[i++] !== undefined) return true; }\n else if (previous[i++] !== texture || previous[i++] !== texture.version ||\n previous[i++] !== texture.image || previous[i++] !== texture.flipY ||\n previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||\n previous[i++] !== texture.uvChannel || previous[i++] !== texture.wrapS || previous[i++] !== texture.wrapT ||\n previous[i++] !== texture.colorSpace) return true;\n }\n }\n {\n const texture = material.metallicRoughnessMap;\n if (typeof texture !== 'number') {\n if (!texture) { if (previous[i++] !== undefined) return true; }\n else if (previous[i++] !== texture || previous[i++] !== texture.version ||\n previous[i++] !== texture.image || previous[i++] !== texture.flipY ||\n previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||\n previous[i++] !== texture.uvChannel || previous[i++] !== texture.wrapS || previous[i++] !== texture.wrapT ||\n previous[i++] !== texture.colorSpace) return true;\n }\n }\n {\n const texture = material.roughnessMap;\n if (typeof texture !== 'number') {\n if (!texture) { if (previous[i++] !== undefined) return true; }\n else if (previous[i++] !== texture || previous[i++] !== texture.version ||\n previous[i++] !== texture.image || previous[i++] !== texture.flipY ||\n previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||\n previous[i++] !== texture.uvChannel || previous[i++] !== texture.wrapS || previous[i++] !== texture.wrapT ||\n previous[i++] !== texture.colorSpace) return true;\n }\n }\n {\n const texture = material.metalnessMap;\n if (typeof texture !== 'number') {\n if (!texture) { if (previous[i++] !== undefined) return true; }\n else if (previous[i++] !== texture || previous[i++] !== texture.version ||\n previous[i++] !== texture.image || previous[i++] !== texture.flipY ||\n previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||\n previous[i++] !== texture.uvChannel || previous[i++] !== texture.wrapS || previous[i++] !== texture.wrapT ||\n previous[i++] !== texture.colorSpace) return true;\n }\n }\n {\n const texture = material.transmissionMap;\n if (typeof texture !== 'number') {\n if (!texture) { if (previous[i++] !== undefined) return true; }\n else if (previous[i++] !== texture || previous[i++] !== texture.version ||\n previous[i++] !== texture.image || previous[i++] !== texture.flipY ||\n previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||\n previous[i++] !== texture.uvChannel || previous[i++] !== texture.wrapS || previous[i++] !== texture.wrapT ||\n previous[i++] !== texture.colorSpace) return true;\n }\n }\n {\n const texture = material.thinFilmMap;\n if (typeof texture !== 'number') {\n if (!texture) { if (previous[i++] !== undefined) return true; }\n else if (previous[i++] !== texture || previous[i++] !== texture.version ||\n previous[i++] !== texture.image || previous[i++] !== texture.flipY ||\n previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||\n previous[i++] !== texture.uvChannel || previous[i++] !== texture.wrapS || previous[i++] !== texture.wrapT ||\n previous[i++] !== texture.colorSpace) return true;\n }\n }\n {\n const texture = material.displacementMap;\n if (typeof texture !== 'number') {\n if (!texture) { if (previous[i++] !== undefined) return true; }\n else if (previous[i++] !== texture || previous[i++] !== texture.version ||\n previous[i++] !== texture.image || previous[i++] !== texture.flipY ||\n previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||\n previous[i++] !== texture.uvChannel || previous[i++] !== texture.wrapS || previous[i++] !== texture.wrapT ||\n previous[i++] !== texture.colorSpace) return true;\n }\n }\n {\n const texture = material.coatWeightMap;\n if (typeof texture !== 'number') {\n if (!texture) { if (previous[i++] !== undefined) return true; }\n else if (previous[i++] !== texture || previous[i++] !== texture.version ||\n previous[i++] !== texture.image || previous[i++] !== texture.flipY ||\n previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||\n previous[i++] !== texture.uvChannel || previous[i++] !== texture.wrapS || previous[i++] !== texture.wrapT ||\n previous[i++] !== texture.colorSpace) return true;\n }\n }\n {\n const texture = material.coatRoughnessMap;\n if (typeof texture !== 'number') {\n if (!texture) { if (previous[i++] !== undefined) return true; }\n else if (previous[i++] !== texture || previous[i++] !== texture.version ||\n previous[i++] !== texture.image || previous[i++] !== texture.flipY ||\n previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||\n previous[i++] !== texture.uvChannel || previous[i++] !== texture.wrapS || previous[i++] !== texture.wrapT ||\n previous[i++] !== texture.colorSpace) return true;\n }\n }\n {\n const texture = material.fuzzColorMap;\n if (typeof texture !== 'number') {\n if (!texture) { if (previous[i++] !== undefined) return true; }\n else if (previous[i++] !== texture || previous[i++] !== texture.version ||\n previous[i++] !== texture.image || previous[i++] !== texture.flipY ||\n previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||\n previous[i++] !== texture.uvChannel || previous[i++] !== texture.wrapS || previous[i++] !== texture.wrapT ||\n previous[i++] !== texture.colorSpace) return true;\n }\n }\n {\n const texture = material.fuzzRoughnessMap;\n if (typeof texture !== 'number') {\n if (!texture) { if (previous[i++] !== undefined) return true; }\n else if (previous[i++] !== texture || previous[i++] !== texture.version ||\n previous[i++] !== texture.image || previous[i++] !== texture.flipY ||\n previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||\n previous[i++] !== texture.uvChannel || previous[i++] !== texture.wrapS || previous[i++] !== texture.wrapT ||\n previous[i++] !== texture.colorSpace) return true;\n }\n }\n {\n const texture = material.specularWeightMap;\n if (typeof texture !== 'number') {\n if (!texture) { if (previous[i++] !== undefined) return true; }\n else if (previous[i++] !== texture || previous[i++] !== texture.version ||\n previous[i++] !== texture.image || previous[i++] !== texture.flipY ||\n previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||\n previous[i++] !== texture.uvChannel || previous[i++] !== texture.wrapS || previous[i++] !== texture.wrapT ||\n previous[i++] !== texture.colorSpace) return true;\n }\n }\n {\n const texture = material.specularColorMap;\n if (typeof texture !== 'number') {\n if (!texture) { if (previous[i++] !== undefined) return true; }\n else if (previous[i++] !== texture || previous[i++] !== texture.version ||\n previous[i++] !== texture.image || previous[i++] !== texture.flipY ||\n previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||\n previous[i++] !== texture.uvChannel || previous[i++] !== texture.wrapS || previous[i++] !== texture.wrapT ||\n previous[i++] !== texture.colorSpace) return true;\n }\n }\n {\n const texture = material.anisotropyMap;\n if (typeof texture !== 'number') {\n if (!texture) { if (previous[i++] !== undefined) return true; }\n else if (previous[i++] !== texture || previous[i++] !== texture.version ||\n previous[i++] !== texture.image || previous[i++] !== texture.flipY ||\n previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||\n previous[i++] !== texture.uvChannel || previous[i++] !== texture.wrapS || previous[i++] !== texture.wrapT ||\n previous[i++] !== texture.colorSpace) return true;\n }\n }\n {\n const texture = material.coatNormalMap;\n if (typeof texture !== 'number') {\n if (!texture) { if (previous[i++] !== undefined) return true; }\n else if (previous[i++] !== texture || previous[i++] !== texture.version ||\n previous[i++] !== texture.image || previous[i++] !== texture.flipY ||\n previous[i++] !== texture.uvScale || previous[i++] !== texture.uvOffset ||\n previous[i++] !== texture.uvChannel || previous[i++] !== texture.wrapS || previous[i++] !== texture.wrapT ||\n previous[i++] !== texture.colorSpace) return true;\n }\n }\n return i !== previous.length;\n}\n"]}
@@ -200,7 +200,7 @@ export function getPreparedMeshGeometryCacheKey(mesh) {
200
200
  const scale = getMeshDisplacementScale(mesh);
201
201
  if (texture && (scale !== 0 || material.displacementBias !== 0)) {
202
202
  return ['displacement', source.version, getDisplacementTextureDataCacheKey(texture),
203
- +texture.flipY, texture.uvScale.join(','), texture.uvOffset.join(','), texture.uvChannel,
203
+ +texture.flipY, texture.uvScale.join(','), texture.uvOffset.join(','), texture.uvChannel, texture.wrapS, texture.wrapT, texture.colorSpace,
204
204
  scale, material.displacementBias, material.displacementUvProjectionScale, material.displacementUvProjection].join('|');
205
205
  }
206
206
  return undefined;
@@ -763,7 +763,7 @@ function mergeGeometry(geometries, globalMaterialIndicesMap, regions) {
763
763
  uv1: uv1Attrib,
764
764
  materialIndex: materialIndexAttrib,
765
765
  color: hasColor
766
- ? new Attribute(new Float32Array(3 * totalVertexCount), 3)
766
+ ? new Attribute(new Float32Array(3 * totalVertexCount).fill(1), 3)
767
767
  : undefined,
768
768
  tangent: hasTangent
769
769
  ? new Attribute(new Float32Array(4 * totalVertexCount), 4)