@itwin/map-layers-formats 4.1.0-dev.4 → 4.1.0-dev.40

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 (101) hide show
  1. package/.rush/temp/56b9a37b833db0202ea00aa252f5eaa1d19cf7bd.log +10 -0
  2. package/.rush/temp/operation/build/all.log +3 -3
  3. package/.rush/temp/operation/build/state.json +1 -1
  4. package/.rush/temp/operation/cover/all.log +6 -6
  5. package/.rush/temp/operation/cover/state.json +1 -1
  6. package/.rush/temp/operation/docs/all.log +2 -2
  7. package/.rush/temp/operation/docs/state.json +1 -1
  8. package/.rush/temp/package-deps_cover.json +7 -7
  9. package/.rush/temp/package-deps_docs.json +7 -7
  10. package/.rush/temp/shrinkwrap-deps.json +2 -1
  11. package/CHANGELOG.json +27 -0
  12. package/CHANGELOG.md +19 -1
  13. package/lib/cjs/ArcGisFeature/ArcGisFeatureFormat.d.ts.map +1 -1
  14. package/lib/cjs/ArcGisFeature/ArcGisFeatureFormat.js +3 -0
  15. package/lib/cjs/ArcGisFeature/ArcGisFeatureFormat.js.map +1 -1
  16. package/lib/cjs/ArcGisFeature/ArcGisFeatureJSON.js.map +1 -1
  17. package/lib/cjs/ArcGisFeature/ArcGisFeaturePBF.js.map +1 -1
  18. package/lib/cjs/ArcGisFeature/ArcGisFeatureProvider.js.map +1 -1
  19. package/lib/cjs/ArcGisFeature/ArcGisFeatureQuery.js.map +1 -1
  20. package/lib/cjs/ArcGisFeature/ArcGisFeatureReader.js.map +1 -1
  21. package/lib/cjs/ArcGisFeature/ArcGisFeatureRenderer.js.map +1 -1
  22. package/lib/cjs/ArcGisFeature/ArcGisFeatureResponse.js.map +1 -1
  23. package/lib/cjs/ArcGisFeature/ArcGisSymbologyRenderer.js.map +1 -1
  24. package/lib/cjs/ArcGisFeature/esriPBuffer.gen.js.map +1 -1
  25. package/lib/cjs/map-layers-formats.js.map +1 -1
  26. package/lib/cjs/mapLayersFormats.js.map +1 -1
  27. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureFeatureFormats.test.js.map +1 -1
  28. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureJSON.test.js.map +1 -1
  29. package/lib/cjs/test/ArcGisFeature/ArcGisFeaturePBF.test.js.map +1 -1
  30. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureProvider.test.js +6 -1
  31. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureProvider.test.js.map +1 -1
  32. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureQuery.test.js.map +1 -1
  33. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureRenderer.test.js.map +1 -1
  34. package/lib/cjs/test/ArcGisFeature/ArcGisFeatureResponse.test.js.map +1 -1
  35. package/lib/cjs/test/ArcGisFeature/ArcGisSymbologyRenderer.test.js.map +1 -1
  36. package/lib/cjs/test/ArcGisFeature/Mocks.d.ts.map +1 -1
  37. package/lib/cjs/test/ArcGisFeature/Mocks.js +1 -1
  38. package/lib/cjs/test/ArcGisFeature/Mocks.js.map +1 -1
  39. package/lib/cjs/test/ArcGisFeature/NewYorkDataset.js.map +1 -1
  40. package/lib/cjs/test/ArcGisFeature/PhillyLandmarksDataset.js.map +1 -1
  41. package/lib/cjs/test/coverage/.nyc_output/4dc5f60e-8ae8-48d3-b717-f77ecf525371.json +1 -0
  42. package/lib/cjs/test/coverage/.nyc_output/processinfo/4dc5f60e-8ae8-48d3-b717-f77ecf525371.json +1 -0
  43. package/lib/cjs/test/coverage/.nyc_output/processinfo/dac1e7eb-315e-4558-9250-262b6f23cf4a.json +1 -0
  44. package/lib/cjs/test/coverage/.nyc_output/processinfo/index.json +1 -1
  45. package/lib/cjs/test/coverage/cobertura-coverage.xml +7 -4
  46. package/lib/cjs/test/coverage/lcov-report/index.html +14 -14
  47. package/lib/cjs/test/coverage/lcov-report/src/ArcGisFeature/ArcGisFeatureFormat.ts.html +21 -9
  48. package/lib/cjs/test/coverage/lcov-report/src/ArcGisFeature/ArcGisFeatureJSON.ts.html +1 -1
  49. package/lib/cjs/test/coverage/lcov-report/src/ArcGisFeature/ArcGisFeaturePBF.ts.html +1 -1
  50. package/lib/cjs/test/coverage/lcov-report/src/ArcGisFeature/ArcGisFeatureProvider.ts.html +1 -1
  51. package/lib/cjs/test/coverage/lcov-report/src/ArcGisFeature/ArcGisFeatureQuery.ts.html +1 -1
  52. package/lib/cjs/test/coverage/lcov-report/src/ArcGisFeature/ArcGisFeatureReader.ts.html +1 -1
  53. package/lib/cjs/test/coverage/lcov-report/src/ArcGisFeature/ArcGisFeatureRenderer.ts.html +1 -1
  54. package/lib/cjs/test/coverage/lcov-report/src/ArcGisFeature/ArcGisFeatureResponse.ts.html +1 -1
  55. package/lib/cjs/test/coverage/lcov-report/src/ArcGisFeature/ArcGisSymbologyRenderer.ts.html +1 -1
  56. package/lib/cjs/test/coverage/lcov-report/src/ArcGisFeature/index.html +15 -15
  57. package/lib/cjs/test/coverage/lcov-report/src/index.html +1 -1
  58. package/lib/cjs/test/coverage/lcov-report/src/map-layers-formats.ts.html +1 -1
  59. package/lib/cjs/test/coverage/lcov-report/src/mapLayersFormats.ts.html +1 -1
  60. package/lib/cjs/test/coverage/lcov.info +9 -4
  61. package/lib/cjs/tsconfig.tsbuildinfo +1 -1
  62. package/lib/esm/ArcGisFeature/ArcGisFeatureFormat.d.ts.map +1 -1
  63. package/lib/esm/ArcGisFeature/ArcGisFeatureFormat.js +4 -1
  64. package/lib/esm/ArcGisFeature/ArcGisFeatureFormat.js.map +1 -1
  65. package/lib/esm/ArcGisFeature/ArcGisFeatureJSON.js.map +1 -1
  66. package/lib/esm/ArcGisFeature/ArcGisFeaturePBF.js.map +1 -1
  67. package/lib/esm/ArcGisFeature/ArcGisFeatureProvider.js.map +1 -1
  68. package/lib/esm/ArcGisFeature/ArcGisFeatureQuery.js.map +1 -1
  69. package/lib/esm/ArcGisFeature/ArcGisFeatureReader.js.map +1 -1
  70. package/lib/esm/ArcGisFeature/ArcGisFeatureRenderer.js.map +1 -1
  71. package/lib/esm/ArcGisFeature/ArcGisFeatureResponse.js.map +1 -1
  72. package/lib/esm/ArcGisFeature/ArcGisSymbologyRenderer.js.map +1 -1
  73. package/lib/esm/ArcGisFeature/esriPBuffer.gen.js.map +1 -1
  74. package/lib/esm/map-layers-formats.js.map +1 -1
  75. package/lib/esm/mapLayersFormats.js.map +1 -1
  76. package/lib/esm/test/ArcGisFeature/ArcGisFeatureFeatureFormats.test.js.map +1 -1
  77. package/lib/esm/test/ArcGisFeature/ArcGisFeatureJSON.test.js.map +1 -1
  78. package/lib/esm/test/ArcGisFeature/ArcGisFeaturePBF.test.js.map +1 -1
  79. package/lib/esm/test/ArcGisFeature/ArcGisFeatureProvider.test.js +6 -1
  80. package/lib/esm/test/ArcGisFeature/ArcGisFeatureProvider.test.js.map +1 -1
  81. package/lib/esm/test/ArcGisFeature/ArcGisFeatureQuery.test.js.map +1 -1
  82. package/lib/esm/test/ArcGisFeature/ArcGisFeatureRenderer.test.js.map +1 -1
  83. package/lib/esm/test/ArcGisFeature/ArcGisFeatureResponse.test.js.map +1 -1
  84. package/lib/esm/test/ArcGisFeature/ArcGisSymbologyRenderer.test.js.map +1 -1
  85. package/lib/esm/test/ArcGisFeature/Mocks.d.ts.map +1 -1
  86. package/lib/esm/test/ArcGisFeature/Mocks.js +1 -1
  87. package/lib/esm/test/ArcGisFeature/Mocks.js.map +1 -1
  88. package/lib/esm/test/ArcGisFeature/NewYorkDataset.js.map +1 -1
  89. package/lib/esm/test/ArcGisFeature/PhillyLandmarksDataset.js.map +1 -1
  90. package/lib/esm/tsconfig.tsbuildinfo +1 -1
  91. package/lib/test/junit_results.xml +43 -43
  92. package/map-layers-formats.build.log +2 -2
  93. package/package.json +12 -11
  94. package/src/ArcGisFeature/ArcGisFeatureFormat.ts +5 -1
  95. package/src/test/ArcGisFeature/ArcGisFeatureProvider.test.ts +7 -1
  96. package/src/test/ArcGisFeature/Mocks.ts +1 -1
  97. package/.rush/temp/package-deps_build.json +0 -36
  98. package/lib/cjs/test/coverage/.nyc_output/31917b70-9e82-44fb-ad11-c6999ceb6343.json +0 -1
  99. package/lib/cjs/test/coverage/.nyc_output/processinfo/31917b70-9e82-44fb-ad11-c6999ceb6343.json +0 -1
  100. package/lib/cjs/test/coverage/.nyc_output/processinfo/bf553111-5d31-41a3-ac48-d9a8278dee1a.json +0 -1
  101. /package/lib/cjs/test/coverage/.nyc_output/{bf553111-5d31-41a3-ac48-d9a8278dee1a.json → dac1e7eb-315e-4558-9250-262b6f23cf4a.json} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"ArcGisFeatureProvider.test.js","sourceRoot":"","sources":["../../../../src/test/ArcGisFeature/ArcGisFeatureProvider.test.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;;AAE/F,oDAA8H;AAC9H,6BAA6B;AAC7B,mDAAmD;AACnD,iFAAsF;AACtF,iEAAiE;AACjE,+BAA+B;AAC/B,wDAA8J;AAC9J,qDAAkD;AAClD,sDAAmF;AAEnF,qEAAkE;AAClE,qFAAkF;AAClF,wDAA0D;AAC1D,2EAAwE;AACxE,6EAA0E;AAE1E,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC3B,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;AAEzB,MAAM,uBAAuB,GAAG,EAAC,IAAI,EAAE,mBAAmB,EAAE,GAAG,EAAE,mBAAmB,EAAE,QAAQ,EAAE,iDAA2B,CAAC,QAAQ,EAAC,CAAC;AACtI,MAAM,iBAAiB,GAAG,kGAAkG,CAAC;AAE7H,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,MAAM,OAAO,GAAG,KAAK,CAAC,aAAa,EAAE,CAAC;IAEtC,SAAS,CAAC,KAAK,IAAI,EAAE;QACnB,OAAO,CAAC,OAAO,EAAE,CAAC;IACpB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;QAEjD,OAAO,CAAC,IAAI,CAAC,+BAAe,EAAE,gBAAgB,CAAC,CAAC,SAAS,CAAC,KAAK,UAAU,CAAC,CAAC,IAAY,EAAE,SAAiB,EAAE,SAAkB,EAAE,SAAkB,EAAE,YAAsB,EAAE,aAAuB;YACjM,OAAO,EAAC,mBAAmB,EAAE,KAAK,EAAE,OAAO,EAAC,+BAAc,CAAC,mBAAmB,EAAC,CAAC;QAClF,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,IAAI,CAAC,0CAAqB,CAAC,SAAS,EAAE,kBAAyB,CAAC,CAAC,SAAS,CAAC,KAAK,UAAU,CAAC,CAAC,QAAiB;YACnH,OAAO,+BAAc,CAAC,wBAAwB,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,mCAAqB,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC;QACzE,MAAM,QAAQ,GAAG,IAAI,0CAAqB,CAAC,QAAQ,CAAC,CAAC;QACrD,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;QAE5B,MAAM,CAAE,QAAgB,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACzD,MAAM,CAAE,QAAgB,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;QAE9D,OAAO,CAAC,IAAI,CAAC,+BAAe,EAAE,gBAAgB,CAAC,CAAC,SAAS,CAAC,KAAK,UAAU,CAAC,CAAC,IAAY,EAAE,SAAiB,EAAE,SAAkB,EAAE,SAAkB,EAAE,YAAsB,EAAE,aAAuB;YACjM,OAAO,SAAS,CAAC;QACnB,CAAC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,mCAAqB,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC;QACzE,MAAM,QAAQ,GAAG,IAAI,0CAAqB,CAAC,QAAQ,CAAC,CAAC;QAErD,MAAM,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,yBAAW,CAAC,CAAC;IAEtE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;QAE1E,OAAO,CAAC,IAAI,CAAC,+BAAe,EAAE,gBAAgB,CAAC,CAAC,SAAS,CAAC,KAAK,UAAU,CAAC,CAAC,IAAY,EAAE,SAAiB,EAAE,SAAkB,EAAE,SAAkB,EAAE,YAAsB,EAAE,aAAuB;YACjM,OAAO,EAAC,mBAAmB,EAAE,KAAK,EAAE,OAAO,EAAC,EAAC,KAAK,EAAE,EAAC,IAAI,EAAE,GAAG,EAAC,EAAC,EAAC,CAAC;QACpE,CAAC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,mCAAqB,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC;QACzE,MAAM,QAAQ,GAAG,IAAI,0CAAqB,CAAC,QAAQ,CAAC,CAAC;QACrD,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;QAC1E,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;QAE5B,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,6CAA6B,CAAC,WAAW,CAAC,CAAC;QAC7E,MAAM,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;QAE9D,OAAO,CAAC,IAAI,CAAC,+BAAe,EAAE,gBAAgB,CAAC,CAAC,SAAS,CAAC,KAAK,UAAU,CAAC,CAAC,IAAY,EAAE,SAAiB,EAAE,SAAkB,EAAE,SAAkB,EAAE,YAAsB,EAAE,aAAuB;YACjM,OAAO,EAAC,mBAAmB,EAAE,KAAK,EAAE,OAAO,EAAC,EAAC,YAAY,EAAE,MAAM,EAAC,EAAC,CAAC;QACtE,CAAC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,mCAAqB,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC;QACzE,MAAM,QAAQ,GAAG,IAAI,0CAAqB,CAAC,QAAQ,CAAC,CAAC;QACrD,MAAM,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,yBAAW,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0EAA0E,EAAE,KAAK,IAAI,EAAE;QAExF,OAAO,CAAC,IAAI,CAAC,+BAAe,EAAE,gBAAgB,CAAC,CAAC,SAAS,CAAC,KAAK,UAAU,CAAC,CAAC,IAAY,EAAE,SAAiB,EAAE,SAAkB,EAAE,SAAkB,EAAE,YAAsB,EAAE,aAAuB;YACjM,OAAO,EAAC,mBAAmB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAC,YAAY,EAAE,OAAO,EAAC,EAAC,CAAC;QACxE,CAAC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,mCAAqB,CAAC,QAAQ,CAAC;YAC9C,GAAG,uBAAuB;YAC1B,SAAS,EAAE,CAAC,EAAC,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAC,IAAI,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAC,IAAI,EAAC,CAAC;SAAC,CAC1F,CAAC;QACF,MAAM,QAAQ,GAAG,IAAI,0CAAqB,CAAC,QAAQ,CAAC,CAAC;QACpD,QAAgB,CAAC,OAAO,GAAG,MAAM,CAAC;QACnC,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC5B,MAAM,CAAE,QAAgB,CAAC,QAAQ,CAAE,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iFAAiF,EAAE,KAAK,IAAI,EAAE;QAE/F,OAAO,CAAC,IAAI,CAAC,+BAAe,EAAE,gBAAgB,CAAC,CAAC,SAAS,CAAC,KAAK,UAAU,CAAC,CAAC,IAAY,EAAE,SAAiB,EAAE,SAAkB,EAAE,SAAkB,EAAE,YAAsB,EAAE,aAAuB;YACjM,OAAO,EAAC,mBAAmB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAC,YAAY,EAAE,OAAO;oBACjE,MAAM,EAAE;wBACN;4BACE,EAAE,EAAG,CAAC;yBAEP;wBACD;4BACE,EAAE,EAAG,CAAC;yBACP;qBACF,EAAC;aACH,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,IAAI,CAAE,0CAAqB,CAAC,SAAiB,EAAE,kBAAkB,CAAC,CAAC,SAAS,CAAC,KAAK,WAAW,EAAW;YAC9G,IAAI,EAAE,KAAK,CAAC,EAAG;gBACb,OAAO,EAAC,iBAAiB,EAAC,IAAI,EAAC,CAAC;aACjC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,mCAAqB,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC;QACzE,MAAM,QAAQ,GAAG,IAAI,0CAAqB,CAAC,QAAQ,CAAC,CAAC;QACpD,QAAgB,CAAC,OAAO,GAAG,MAAM,CAAC;QACnC,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC5B,MAAM,CAAE,QAAgB,CAAC,QAAQ,CAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACjD,MAAM,CAAE,QAAgB,CAAC,cAAc,CAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAC,iBAAiB,EAAC,IAAI,EAAC,CAAC,CAAC;IAC7E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;QAE/D,OAAO,CAAC,IAAI,CAAC,+BAAe,EAAE,gBAAgB,CAAC,CAAC,SAAS,CAAC,KAAK,UAAU,CAAC,CAAC,IAAY,EAAE,SAAiB,EAAE,SAAkB,EAAE,SAAkB,EAAE,YAAsB,EAAE,aAAuB;YACjM,OAAO,EAAC,mBAAmB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAC,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAC,EAAC,CAAC;QACpF,CAAC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,mCAAqB,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC;QACzE,MAAM,QAAQ,GAAG,IAAI,0CAAqB,CAAC,QAAQ,CAAC,CAAC;QACrD,MAAM,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,yBAAW,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;QAE9D,MAAM,QAAQ,GAAG,mCAAqB,CAAC,QAAQ,CAAC;YAC9C,GAAG,uBAAuB;YAC1B,SAAS,EAAE,CAAC,EAAC,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAC,IAAI,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAC,IAAI,EAAC,CAAC;SAAC,CAC1F,CAAC;QAEF,OAAO,CAAC,IAAI,CAAC,+BAAe,EAAE,gBAAgB,CAAC,CAAC,SAAS,CAAC,KAAK,UAAU,CAAC,CAAC,IAAY,EAAE,SAAiB,EAAE,SAAkB,EAAE,SAAkB,EAAE,YAAsB,EAAE,aAAuB;YACjM,OAAO,EAAC,mBAAmB,EAAE,KAAK,EAAE,OAAO,EAAC,EAAC,YAAY,EAAE,OAAO,EAAC,EAAC,CAAC;QACvE,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAE,0CAAqB,CAAC,SAAiB,EAAE,kBAAkB,CAAC,CAAC,SAAS,CAAC,KAAK,WAAW,GAAY;YAC/G,OAAO,SAAS,CAAC;QACnB,CAAC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,IAAI,0CAAqB,CAAC,QAAQ,CAAC,CAAC;QACrD,MAAM,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,yBAAW,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;QAEtD,MAAM,QAAQ,GAAG,mCAAqB,CAAC,QAAQ,CAAC;YAC9C,GAAG,uBAAuB;YAC1B,SAAS,EAAE,CAAC,EAAC,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAC,IAAI,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAC,IAAI,EAAC,CAAC;SAAC,CAC1F,CAAC;QAEF,IAAI,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAE,0CAAqB,CAAC,SAAiB,EAAE,kBAAkB,CAAC,CAAC,SAAS,CAAC,KAAK,WAAW,GAAY;YAC1I,OAAO,EAAC,iBAAiB,EAAC,IAAI,EAAE,qBAAqB,EAAC,WAAW,EAAC,CAAC;QACrE,CAAC,CAAC,CAAC;QAEH,MAAM,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,+BAAe,EAAE,gBAAgB,CAAC,CAAC,SAAS,CAAC,KAAK,UAAU,CAAC,CAAC,IAAY,EAAE,SAAiB,EAAE,SAAkB,EAAE,SAAkB,EAAE,YAAsB,EAAE,aAAuB;YAC5N,OAAO,EAAC,mBAAmB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAC,YAAY,EAAE,OAAO,EAAC,EAAC,CAAC;QACxE,CAAC,CAAC,CAAC;QAEH,IAAI,QAAQ,GAAG,IAAI,0CAAqB,CAAC,QAAQ,CAAC,CAAC;QACnD,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC5B,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAE1C,iDAAiD;QACjD,kBAAkB,CAAC,OAAO,EAAE,CAAC;QAC7B,OAAO,CAAC,IAAI,CAAC,+BAAe,EAAE,gBAAgB,CAAC,CAAC,SAAS,CAAC,KAAK,UAAU,CAAC,CAAC,IAAY,EAAE,SAAiB,EAAE,SAAkB,EAAE,SAAkB,EAAE,YAAsB,EAAE,aAAuB;YACjM,OAAO,EAAC,mBAAmB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,YAAY,EAAE,OAAO,EAAC,EAAC,CAAC;QAC7F,CAAC,CAAC,CAAC;QACH,oBAAoB,CAAC,OAAO,EAAE,CAAC;QAC/B,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAE,0CAAqB,CAAC,SAAiB,EAAE,kBAAkB,CAAC,CAAC,SAAS,CAAC,KAAK,WAAW,GAAY;YACtI,OAAO,EAAC,iBAAiB,EAAC,IAAI,EAAE,+BAA+B,EAAC,IAAI,EAAE,qBAAqB,EAAC,WAAW,EAAC,CAAC;QAC3G,CAAC,CAAC,CAAC;QAEH,QAAQ,GAAG,IAAI,0CAAqB,CAAC,QAAQ,CAAC,CAAC;QAC/C,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC5B,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAEzC,oBAAoB,CAAC,OAAO,EAAE,CAAC;QAC/B,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAE,0CAAqB,CAAC,SAAiB,EAAE,kBAAkB,CAAC,CAAC,SAAS,CAAC,KAAK,WAAW,GAAY;YACtI,OAAO,EAAC,iBAAiB,EAAC,IAAI,EAAE,qBAAqB,EAAC,MAAM,EAAC,CAAC;QAChE,CAAC,CAAC,CAAC;QAEH,kBAAkB,CAAC,OAAO,EAAE,CAAC;QAC7B,OAAO,CAAC,IAAI,CAAC,+BAAe,EAAE,gBAAgB,CAAC,CAAC,SAAS,CAAC,KAAK,UAAU,CAAC,CAAC,IAAY,EAAE,SAAiB,EAAE,SAAkB,EAAE,SAAkB,EAAE,YAAsB,EAAE,aAAuB;YACjM,OAAO,EAAC,mBAAmB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,+BAA+B,EAAC,IAAI,EAAC,EAAC,CAAC;QACtI,CAAC,CAAC,CAAC;QAEH,QAAQ,GAAG,IAAI,0CAAqB,CAAC,QAAQ,CAAC,CAAC;QAC/C,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC5B,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAE1C,oBAAoB,CAAC,OAAO,EAAE,CAAC;QAC/B,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAE,0CAAqB,CAAC,SAAiB,EAAE,kBAAkB,CAAC,CAAC,SAAS,CAAC,KAAK,WAAW,GAAY;YACtI,OAAO,EAAC,iBAAiB,EAAC,IAAI,EAAE,qBAAqB,EAAC,MAAM,EAAC,CAAC;QAChE,CAAC,CAAC,CAAC;QAEH,QAAQ,GAAG,IAAI,0CAAqB,CAAC,QAAQ,CAAC,CAAC;QAC/C,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC5B,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAE1C,oBAAoB,CAAC,OAAO,EAAE,CAAC;QAC/B,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAE,0CAAqB,CAAC,SAAiB,EAAE,kBAAkB,CAAC,CAAC,SAAS,CAAC,KAAK,WAAW,GAAY;YACtI,OAAO,EAAC,iBAAiB,EAAC,IAAI,EAAE,qBAAqB,EAAC,EAAE,EAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;QAEH,QAAQ,GAAG,IAAI,0CAAqB,CAAC,QAAQ,CAAC,CAAC;QAC/C,MAAM,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,yBAAW,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;QAE5C,MAAM,QAAQ,GAAG,mCAAqB,CAAC,QAAQ,CAAC;YAC9C,GAAG,uBAAuB;YAC1B,SAAS,EAAE,CAAC,EAAC,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAC,IAAI,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAC,IAAI,EAAC,CAAC;SAAC,CAC1F,CAAC;QAEF,OAAO,CAAC,IAAI,CAAE,0CAAqB,CAAC,SAAiB,EAAE,kBAAkB,CAAC,CAAC,SAAS,CAAC,KAAK,WAAW,GAAY;YAC/G,OAAO;gBACL,iBAAiB,EAAC,IAAI;gBACtB,qBAAqB,EAAC,WAAW;gBACjC,QAAQ,EAAE,MAAM;gBAChB,QAAQ,EAAE,IAAI;aACf,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,IAAI,CAAC,+BAAe,EAAE,gBAAgB,CAAC,CAAC,SAAS,CAAC,KAAK,UAAU,CAAC,CAAC,IAAY,EAAE,SAAiB,EAAE,SAAkB,EAAE,SAAkB,EAAE,YAAsB,EAAE,aAAuB;YACjM,OAAO,EAAC,mBAAmB,EAAE,KAAK,EAAE,OAAO,EAAC,EAAC,YAAY,EAAE,OAAO,EAAC,EAAC,CAAC;QACvE,CAAC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,IAAI,0CAAqB,CAAC,QAAQ,CAAC,CAAC;QACrD,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;QAE5B,MAAM,CAAE,QAAgB,CAAC,gBAAgB,CAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACzD,MAAM,CAAE,QAAgB,CAAC,gBAAgB,CAAE,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;QAE1C,MAAM,QAAQ,GAAG,mCAAqB,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC;QACzE,MAAM,QAAQ,GAAG,IAAI,0CAAqB,CAAC,QAAQ,CAAC,CAAC;QACrD,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC;QAC/C,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAE5B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;QAClD,MAAM,QAAQ,GAAG,mCAAqB,CAAC,QAAQ,CAAC;YAC9C,GAAG,uBAAuB;YAC1B,SAAS,EAAE,CAAC,EAAC,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAC,IAAI,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAC,IAAI,EAAC,CAAC;SAAC,CAC1F,CAAC;QAEF,IAAI,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAE,0CAAqB,CAAC,SAAiB,EAAE,kBAAkB,CAAC,CAAC,SAAS,CAAC,KAAK,WAAW,GAAY;YAC1I,OAAO;gBACL,iBAAiB,EAAE,IAAI;gBACvB,qBAAqB,EAAC,WAAW;aAClC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,IAAI,CAAC,+BAAe,EAAE,gBAAgB,CAAC,CAAC,SAAS,CAAC,KAAK,UAAU,CAAC,CAAC,IAAY,EAAE,SAAiB,EAAE,SAAkB,EAAE,SAAkB,EAAE,YAAsB,EAAE,aAAuB;YACjM,OAAO,EAAC,mBAAmB,EAAE,KAAK,EAAE,OAAO,EAAC,EAAC,cAAc,EAAE,EAAE,EAAE,YAAY,EAAE,OAAO,EAAC,EAAC,CAAC;QAC3F,CAAC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,IAAI,0CAAqB,CAAC,QAAQ,CAAC,CAAC;QACrD,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;QAE5B,IAAI,GAAG,GAAG,QAAQ,CAAC,mBAAmB,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACrD,MAAM,MAAM,GAAG;YACb,IAAI,EAAE,CAAC,WAAW;YAClB,IAAI,EAAE,CAAC,WAAW;YAClB,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,WAAW;YACjB,gBAAgB,EAAE;gBAChB,IAAI,EAAE,MAAM;gBACZ,UAAU,EAAE,IAAI;aACjB;SACF,CAAC;QACF,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,oZAAoZ,CAAC,CAAC;QACjb,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC7D,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC7D,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC7D,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC7D,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACjE,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,gBAAgB,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAErE,sDAAsD;QACtD,oBAAoB,CAAC,OAAO,EAAE,CAAC;QAC/B,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAE,0CAAqB,CAAC,SAAiB,EAAE,kBAAkB,CAAC,CAAC,SAAS,CAAC,KAAK,WAAW,GAAY;YACtI,OAAO;gBACL,iBAAiB,EAAE,IAAI;gBACvB,qBAAqB,EAAC,WAAW;gBACjC,+BAA+B,EAAE,IAAI;aACtC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,IAAI,0CAAqB,CAAC,QAAQ,CAAC,CAAC;QACtD,MAAM,SAAS,CAAC,UAAU,EAAE,CAAC;QAC7B,GAAG,GAAG,SAAS,CAAC,mBAAmB,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAClD,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,svBAAsvB,CAAC,CAAC;QACnxB,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC7D,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC7D,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC7D,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC7D,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACvF,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,gBAAgB,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAEnG,oCAAoC;QACpC,MAAM,YAAY,GAAmB;YACnC,IAAI,EAAE,sBAAsB;YAC5B,IAAI,EAAE;gBACJ,IAAI,EAAE,CAAC,EAAE;gBACT,IAAI,EAAE,CAAC,EAAE;gBACT,IAAI,EAAE,EAAE;gBACR,IAAI,EAAE,EAAE;gBACR,gBAAgB,EAAE;oBAChB,IAAI,EAAE,MAAM;oBACZ,UAAU,EAAE,IAAI;iBACjB;aACF;SACF,CAAC;QACF,MAAM,SAAS,GAAG,IAAI,0CAAqB,CAAC,QAAQ,CAAC,CAAC;QACtD,MAAM,SAAS,CAAC,UAAU,EAAE,CAAC;QAC7B,GAAG,GAAG,SAAS,CAAC,mBAAmB,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;QAChE,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,osBAAosB,CAAC,CAAC;QACjuB,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAE,YAAY,CAAC,IAAqB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1F,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAE,YAAY,CAAC,IAAqB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1F,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAE,YAAY,CAAC,IAAqB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1F,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAE,YAAY,CAAC,IAAqB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1F,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAClG,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,gBAAgB,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAE9G,4CAA4C;QAC5C,GAAG,GAAG,SAAS,CAAC,mBAAmB,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;QAC/E,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,6tBAA6tB,CAAC,CAAC;QAC1vB,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAE,YAAY,CAAC,IAAqB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1F,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAE,YAAY,CAAC,IAAqB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1F,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAE,YAAY,CAAC,IAAqB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1F,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAE,YAAY,CAAC,IAAqB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1F,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAClG,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,gBAAgB,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAEhH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;QAExE,MAAM,QAAQ,GAAG,mCAAqB,CAAC,QAAQ,CAAC;YAC9C,GAAG,uBAAuB;YAC1B,SAAS,EAAE,CAAC,EAAC,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAC,IAAI,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAC,IAAI,EAAC,CAAC;SAAC,CAC1F,CAAC;QAEF,OAAO,CAAC,IAAI,CAAE,0CAAqB,CAAC,SAAiB,EAAE,kBAAkB,CAAC,CAAC,SAAS,CAAC,KAAK,WAAW,GAAY;YAC/G,OAAO;gBACL,iBAAiB,EAAC,IAAI;gBACtB,qBAAqB,EAAC,WAAW;gBACjC,QAAQ,EAAE,MAAM;gBAChB,QAAQ,EAAE,IAAI;aACf,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,IAAI,CAAC,+BAAe,EAAE,gBAAgB,CAAC,CAAC,SAAS,CAAC,KAAK,UAAU,CAAC,CAAC,IAAY,EAAE,SAAiB,EAAE,SAAkB,EAAE,SAAkB,EAAE,YAAsB,EAAE,aAAuB;YACjM,OAAO,EAAC,mBAAmB,EAAE,KAAK,EAAE,OAAO,EAAC,EAAC,cAAc,EAAE,EAAE,EAAE,YAAY,EAAE,OAAO,EAAC,EAAC,CAAC;QAC3F,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,0CAAqB,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,IAAY,EAAE,OAAe,EAAE,UAAkB,EAAE,OAA4B,EAAE,aAA8B,EAAE,UAAmB,EAAE,UAAmB,EAAE,eAAyB;YAC5Q,OAAO,SAAS,CAAC;QACnB,CAAC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,IAAI,0CAAqB,CAAC,QAAQ,CAAC,CAAC;QACrD,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC5B,MAAM,YAAY,GAA0B,EAAE,CAAC;QAC/C,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAM,EAAE,UAAU,CAAC,CAAC;QACpD,MAAM,QAAQ,CAAC,cAAc,CAAC,YAAY,EAAE,IAAI,sBAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,0BAAY,CAAC,WAAW,CAAC,EAAC,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAC,CAAC,EAAE,EAAC,CAAC,EAAG,SAA2C,CAAC,CAAC;QACxK,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACzC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IAExC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;QAErD,MAAM,QAAQ,GAAG,mCAAqB,CAAC,QAAQ,CAAC;YAC9C,GAAG,uBAAuB;YAC1B,SAAS,EAAE,CAAC,EAAC,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAC,IAAI,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAC,IAAI,EAAC,CAAC;SAAC,CAC1F,CAAC;QAEF,OAAO,CAAC,IAAI,CAAE,0CAAqB,CAAC,SAAiB,EAAE,kBAAkB,CAAC,CAAC,SAAS,CAAC,KAAK,WAAW,GAAY;YAC/G,OAAO;gBACL,iBAAiB,EAAC,IAAI;gBACtB,qBAAqB,EAAC,WAAW;gBACjC,+BAA+B,EAAC,IAAI;gBACpC,QAAQ,EAAE,MAAM;gBAChB,QAAQ,EAAE,IAAI;aACf,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,IAAI,CAAC,+BAAe,EAAE,gBAAgB,CAAC,CAAC,SAAS,CAAC,KAAK,UAAU,CAAC,CAAC,IAAY,EAAE,SAAiB,EAAE,SAAkB,EAAE,SAAkB,EAAE,YAAsB,EAAE,aAAuB;YACjM,OAAO,EAAC,mBAAmB,EAAE,KAAK,EAAE,OAAO,EAAC,EAAC,cAAc,EAAE,EAAE,EAAE,YAAY,EAAE,OAAO,EAAC,EAAC,CAAC;QAC3F,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAE,qCAAqB,CAAC,SAAiB,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,KAAK,UAAW,CAAC,CAAC,IAAa,EAAE,QAAkB;YAC3H,MAAM,IAAI,GAAG;gBACX,OAAO,EAAE,EAAE,cAAc,EAAG,KAAK,EAAC;gBAClC,WAAW,EAAE,KAAK,IAAI,EAAE;oBACtB,MAAM,SAAS,GAAG,iCAAmB,CAAC,YAAY,CAAC,+CAAsB,CAAC,iDAAiD,CAAC,CAAC;oBAC7H,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,yBAAU,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;gBACnG,CAAC;gBACD,MAAM,EAAE,GAAG;aACD,CAAC,CAAG,sEAAsE;YACtF,OAAQ,IAAkB,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,IAAI,0CAAqB,CAAC,QAAQ,CAAC,CAAC;QACrD,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC5B,MAAM,YAAY,GAA0B,EAAE,CAAC;QAC/C,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAM,EAAE,UAAU,CAAC,CAAC;QACpD,MAAM,QAAQ,CAAC,cAAc,CAAC,YAAY,EAAE,IAAI,sBAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,0BAAY,CAAC,WAAW,CAAC,EAAC,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAC,CAAC,EAAE,EAAC,CAAC,EAAG,SAA2C,CAAC,CAAC;QACxK,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACzC,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;IAE7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;QAE5D,MAAM,QAAQ,GAAG,mCAAqB,CAAC,QAAQ,CAAC;YAC9C,GAAG,uBAAuB;YAC1B,SAAS,EAAE,CAAC,EAAC,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAC,IAAI,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAC,IAAI,EAAC,CAAC;SAAC,CAC1F,CAAC;QACF,OAAO,CAAC,IAAI,CAAE,0CAAqB,CAAC,SAAiB,EAAE,kBAAkB,CAAC,CAAC,SAAS,CAAC,KAAK,WAAW,GAAY;YAC/G,OAAO;gBACL,iBAAiB,EAAC,IAAI;gBACtB,qBAAqB,EAAC,WAAW;gBACjC,QAAQ,EAAE,MAAM;gBAChB,QAAQ,EAAE,IAAI;aACf,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,+BAAe,EAAE,gBAAgB,CAAC,CAAC,SAAS,CAAC,KAAK,UAAU,CAAC,CAAC,IAAY,EAAE,SAAiB,EAAE,SAAkB,EAAE,SAAkB,EAAE,YAAsB,EAAE,aAAuB;YACjM,OAAO,EAAC,mBAAmB,EAAE,KAAK,EAAE,OAAO,EAAC,EAAC,YAAY,EAAE,OAAO,EAAC,EAAC,CAAC;QACvE,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,IAAI,CAAE,6CAAqB,CAAC,SAAiB,EAAE,iBAAiB,CAAC,CAAC,SAAS,CAAC,KAAK,UAAW,CAAC;YACnG,OAAO,EAAC,mBAAmB,EAAE,IAAI,EAAE,IAAI,EAAC,SAAS,EAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,IAAI,0CAAqB,CAAC,QAAQ,CAAC,CAAC;QACrD,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC5B,MAAM,YAAY,GAA0B,EAAE,CAAC;QAC/C,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAM,EAAE,UAAU,CAAC,CAAC;QACpD,MAAM,QAAQ,CAAC,cAAc,CAAC,YAAY,EAAE,IAAI,sBAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,0BAAY,CAAC,WAAW,CAAC,EAAC,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAC,CAAC,EAAE,EAAC,CAAC,EAAG,SAA2C,CAAC,CAAC;QACxK,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACzC,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IAE5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;QAEnE,MAAM,QAAQ,GAAG,mCAAqB,CAAC,QAAQ,CAAC;YAC9C,GAAG,uBAAuB;YAC1B,SAAS,EAAE,CAAC,EAAC,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAC,IAAI,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAC,IAAI,EAAC,CAAC;SAAC,CAC1F,CAAC;QACF,OAAO,CAAC,IAAI,CAAE,0CAAqB,CAAC,SAAiB,EAAE,kBAAkB,CAAC,CAAC,SAAS,CAAC,KAAK,WAAW,GAAY;YAC/G,OAAO;gBACL,iBAAiB,EAAC,IAAI;gBACtB,qBAAqB,EAAC,WAAW;gBACjC,QAAQ,EAAE,MAAM;gBAChB,QAAQ,EAAE,IAAI;aACf,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,+BAAe,EAAE,gBAAgB,CAAC,CAAC,SAAS,CAAC,KAAK,UAAU,CAAC,CAAC,IAAY,EAAE,SAAiB,EAAE,SAAkB,EAAE,SAAkB,EAAE,YAAsB,EAAE,aAAuB;YACjM,OAAO,EAAC,mBAAmB,EAAE,KAAK,EAAE,OAAO,EAAC,EAAC,YAAY,EAAE,OAAO,EAAC,EAAC,CAAC;QACvE,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,IAAI,CAAE,6CAAqB,CAAC,SAAiB,EAAE,iBAAiB,CAAC,CAAC,SAAS,CAAC,KAAK,UAAW,CAAC;YACnG,MAAM,IAAI,KAAK,EAAE,CAAC;QACpB,CAAC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,IAAI,0CAAqB,CAAC,QAAQ,CAAC,CAAC;QACrD,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC5B,MAAM,YAAY,GAA0B,EAAE,CAAC;QAC/C,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAM,EAAE,UAAU,CAAC,CAAC;QACpD,MAAM,QAAQ,CAAC,cAAc,CAAC,YAAY,EAAE,IAAI,sBAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,0BAAY,CAAC,WAAW,CAAC,EAAC,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAC,CAAC,EAAE,EAAC,CAAC,EAAG,SAA2C,CAAC,CAAC;QACxK,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACzC,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IAE5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;QAEzC,MAAM,QAAQ,GAAG,mCAAqB,CAAC,QAAQ,CAAC;YAC9C,GAAG,uBAAuB;YAC1B,SAAS,EAAE,CAAC,EAAC,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAC,IAAI,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAC,IAAI,EAAC,CAAC;SAAC,CAC1F,CAAC;QACF,OAAO,CAAC,IAAI,CAAE,0CAAqB,CAAC,SAAiB,EAAE,kBAAkB,CAAC,CAAC,SAAS,CAAC,KAAK,WAAW,GAAY;YAC/G,OAAO;gBACL,iBAAiB,EAAC,IAAI;gBACtB,qBAAqB,EAAC,WAAW;gBACjC,QAAQ,EAAE,MAAM;gBAChB,QAAQ,EAAE,IAAI;aACf,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,+BAAe,EAAE,gBAAgB,CAAC,CAAC,SAAS,CAAC,KAAK,UAAU,CAAC,CAAC,IAAY,EAAE,SAAiB,EAAE,SAAkB,EAAE,SAAkB,EAAE,YAAsB,EAAE,aAAuB;YACjM,OAAO,EAAC,mBAAmB,EAAE,KAAK,EAAE,OAAO,EAAC,EAAC,YAAY,EAAE,OAAO,EAAC,EAAC,CAAC;QACvE,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,IAAI,CAAE,6CAAqB,CAAC,SAAiB,EAAE,iBAAiB,CAAC,CAAC,SAAS,CAAC,KAAK,UAAW,CAAC;YACnG,OAAO,EAAC,IAAI,EAAE;oBACZ,QAAQ,EAAE,GAAG,EAAE,CAAC,SAAS;iBAC1B,EAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,IAAI,0CAAqB,CAAC,QAAQ,CAAC,CAAC;QACrD,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC3B,QAAgB,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC3C,MAAM,YAAY,GAA0B,EAAE,CAAC;QAC/C,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAM,EAAE,SAAS,CAAC,CAAC;QAClD,MAAM,QAAQ,CAAC,cAAc,CAAC,YAAY,EAAE,IAAI,sBAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,0BAAY,CAAC,WAAW,CAAC,EAAC,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAC,CAAC,EAAE,EAAC,CAAC,EAAG,SAA2C,CAAC,CAAC;QACxK,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACzC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAE5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;QAC/D,MAAM,QAAQ,GAAG,mCAAqB,CAAC,QAAQ,CAAC;YAC9C,GAAG,uBAAuB;YAC1B,SAAS,EAAE,CAAC,EAAC,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAC,IAAI,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAC,IAAI,EAAC,CAAC;SAAC,CAC1F,CAAC;QACF,MAAM,SAAS,GAAG,GAAG,CAAC;QACtB,MAAM,UAAU,GAAG,EAAE,CAAC;QAEtB,MAAM,QAAQ,GAAG,IAAI,0CAAqB,CAAC,QAAQ,CAAC,CAAC;QACrD,MAAM,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,0CAAqB,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,SAAS,CAAC,UAAU,IAAY,EAAE,OAAe,EAAE,UAAkB;YACpK,OAAO,EAAE,IAAI,EAAC,CAAC,EAAE,KAAK,EAAC,SAAS,EAAE,MAAM,EAAC,CAAC,EAAE,GAAG,EAAC,SAAS,EAAE,CAAC;QAC9D,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC;YACrC,OAAO,UAAU,CAAC,CAAE,oCAAoC;QAC1D,CAAC,CAAC,CAAC;QACH,IAAI,SAAS,GAAK,QAAgB,CAAC,gCAAgC,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAA2B,CAAC;QACrG,IAAI,UAAU,GAAG,uBAAO,CAAC,UAAU,CAAC,EAAC,CAAC,EAAE,SAAS,GAAC,GAAG,EAAE,CAAC,EAAC,SAAS,GAAC,GAAG,EAAE,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;QAC9E,IAAI,gBAAgB,GAAG,SAAS,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC;QAE9D,+CAA+C;QAC/C,MAAM,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC;QAC1C,MAAM,CAAC,gBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,GAAC,GAAG,CAAC,CAAC;QACtD,MAAM,CAAC,gBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,GAAC,GAAG,CAAC,CAAC;QACtD,MAAM,CAAC,gBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAEzC,gCAAgC;QAChC,UAAU,GAAG,uBAAO,CAAC,UAAU,CAAC,EAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,EAAE,EAAE,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;QACnD,gBAAgB,GAAG,SAAS,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC;QAC1D,MAAM,CAAC,gBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACzC,MAAM,CAAC,gBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACzC,MAAM,CAAC,gBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAEzC,wDAAwD;QACxD,qBAAqB,CAAC,OAAO,EAAE,CAAC;QAChC,OAAO,CAAC,IAAI,CAAC,0CAAqB,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,SAAS,CAAC,UAAU,IAAY,EAAE,OAAe,EAAE,UAAkB;YACtI,OAAO,EAAE,IAAI,EAAC,SAAS,EAAE,KAAK,EAAC,SAAS,GAAC,CAAC,EAAE,MAAM,EAAC,SAAS,EAAE,GAAG,EAAC,SAAS,GAAC,CAAC,EAAE,CAAC;QAClF,CAAC,CAAC,CAAC;QACH,UAAU,GAAG,uBAAO,CAAC,UAAU,CAAC,EAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAC,SAAS,EAAE,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;QAClE,SAAS,GAAK,QAAgB,CAAC,gCAAgC,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAA2B,CAAC;QACjG,gBAAgB,GAAG,SAAS,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC;QAC1D,MAAM,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC;QAC1C,MAAM,CAAC,gBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACzC,MAAM,CAAC,gBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC1C,MAAM,CAAC,gBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAE3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;QAChD,MAAM,QAAQ,GAAG,mCAAqB,CAAC,QAAQ,CAAC;YAC9C,GAAG,uBAAuB;YAC1B,SAAS,EAAE,CAAC,EAAC,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAC,IAAI,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAC,IAAI,EAAC,CAAC;SAAC,CAC1F,CAAC;QACF,OAAO,CAAC,IAAI,CAAE,0CAAqB,CAAC,SAAiB,EAAE,kBAAkB,CAAC,CAAC,SAAS,CAAC,KAAK,WAAW,GAAY;YAC/G,OAAO;gBACL,iBAAiB,EAAC,IAAI;gBACtB,qBAAqB,EAAC,KAAK;gBAC3B,+BAA+B,EAAC,IAAI;aACrC,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,+BAAe,EAAE,gBAAgB,CAAC,CAAC,SAAS,CAAC,KAAK,UAAU,CAAC,CAAC,IAAY,EAAE,SAAiB,EAAE,SAAkB,EAAE,SAAkB,EAAE,YAAsB,EAAE,aAAuB;YACjM,OAAO,EAAC,mBAAmB,EAAE,KAAK,EAAE,OAAO,EAAC,EAAC,cAAc,EAAE,EAAE,EAAE,YAAY,EAAE,OAAO,EAAC,EAAC,CAAC;QAC3F,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,SAAS,CAAE,SAAS,CAAC,CAAC,UAAe,EAAE,QAAc;YAC3G,OAAO,EAAsB,CAAC;QAChC,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,SAAS,CAAE,SAAS,CAAC,CAAC,KAAc,EAAE,QAAc;YACzG,OAAO,yBAAyB,iBAAiB,EAAE,CAAC;QACtD,CAAC,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAE,0CAAqB,CAAC,SAAiB,EAAE,WAAW,CAAC,CAAC,SAAS,CAAC,KAAK,UAAW,CAAC;YAClH,OAAO,IAAI,6CAAqB,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,EAAc,CAAC,CAAC,CAAC;QAC3E,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,IAAI,CAAE,6CAAqB,CAAC,SAAiB,EAAE,iBAAiB,CAAC,CAAC,SAAS,CAAC,KAAK,UAAW,CAAC;YACnG,OAAO;gBACL,mBAAmB,EAAE,KAAK;gBAC1B,IAAI,EAAE,EAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,SAAS,EAAC;aAClC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,uBAAuB;QACvB,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,mCAAgB,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;QAClF,MAAM,iBAAiB,GAAG,OAAO,CAAC,GAAG,CAAC,0CAAqB,CAAC,SAAgB,EAAE,kCAAkC,CAAC,CAAC;QAClH,MAAM,QAAQ,GAAG,IAAI,0CAAqB,CAAC,QAAQ,CAAC,CAAC;QACrD,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC;QAChD,MAAM,CAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC;QACnC,MAAM,CAAE,QAAQ,EAAE,IAAI,YAAY,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QACzD,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAA,uCAAwB,EAAC,iBAAiB,CAAC,CAAC,CAAC;QAC5E,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,+BAAiB,CAAC,GAAG,CAAC,CAAC;QAC1D,MAAM,CAAE,YAAY,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAC5C,MAAM,CAAE,gBAAgB,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAChD,MAAM,CAAE,iBAAiB,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,uFAAuF;IAE5I,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;QACjD,MAAM,QAAQ,GAAG,mCAAqB,CAAC,QAAQ,CAAC;YAC9C,GAAG,uBAAuB;YAC1B,SAAS,EAAE,CAAC,EAAC,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAC,IAAI,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAC,IAAI,EAAC,CAAC;SAAC,CAC1F,CAAC;QACF,OAAO,CAAC,IAAI,CAAE,0CAAqB,CAAC,SAAiB,EAAE,kBAAkB,CAAC,CAAC,SAAS,CAAC,KAAK,WAAW,GAAY;YAC/G,OAAO;gBACL,iBAAiB,EAAC,IAAI;gBACtB,qBAAqB,EAAC,MAAM;aAC7B,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,+BAAe,EAAE,gBAAgB,CAAC,CAAC,SAAS,CAAC,KAAK,UAAU,CAAC,CAAC,IAAY,EAAE,SAAiB,EAAE,SAAkB,EAAE,SAAkB,EAAE,YAAsB,EAAE,aAAuB;YACjM,OAAO,EAAC,mBAAmB,EAAE,KAAK,EAAE,OAAO,EAAC,EAAC,YAAY,EAAE,OAAO,EAAC,EAAC,CAAC;QACvE,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,SAAS,CAAE,SAAS,CAAC,CAAC,UAAe,EAAE,QAAc;YAC3G,OAAO,EAAsB,CAAC;QAChC,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,SAAS,CAAE,SAAS,CAAC,CAAC,KAAc,EAAE,QAAc;YACzG,OAAO,yBAAyB,iBAAiB,EAAE,CAAC;QACtD,CAAC,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAE,0CAAqB,CAAC,SAAiB,EAAE,WAAW,CAAC,CAAC,SAAS,CAAC,KAAK,UAAW,CAAC;YAClH,OAAO,IAAI,6CAAqB,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,EAAc,CAAC,CAAC,CAAC;QAC5E,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,IAAI,CAAE,6CAAqB,CAAC,SAAiB,EAAE,iBAAiB,CAAC,CAAC,SAAS,CAAC,KAAK,UAAW,CAAC;YACnG,OAAO;gBACL,mBAAmB,EAAE,KAAK;gBAC1B,IAAI,EAAE,EAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,SAAS,EAAC;aAClC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,qCAAiB,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;QACnF,MAAM,iBAAiB,GAAG,OAAO,CAAC,GAAG,CAAC,0CAAqB,CAAC,SAAgB,EAAE,kCAAkC,CAAC,CAAC;QAClH,MAAM,QAAQ,GAAG,IAAI,0CAAqB,CAAC,QAAQ,CAAC,CAAC;QACrD,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC;QAChD,MAAM,CAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC;QACnC,MAAM,CAAE,QAAQ,EAAE,IAAI,YAAY,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QACzD,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAA,uCAAwB,EAAC,iBAAiB,CAAC,CAAC,CAAC;QAC5E,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,+BAAiB,CAAC,GAAG,CAAC,CAAC;QAC1D,MAAM,CAAE,YAAY,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAC5C,MAAM,CAAE,gBAAgB,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAChD,MAAM,CAAE,iBAAiB,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,yFAAyF;IAC7I,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0EAA0E,EAAE,KAAK,IAAI,EAAE;QACxF,MAAM,QAAQ,GAAG,mCAAqB,CAAC,QAAQ,CAAC;YAC9C,GAAG,uBAAuB;YAC1B,SAAS,EAAE,CAAC,EAAC,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAC,IAAI,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAC,IAAI,EAAC,CAAC;SAAC,CAC1F,CAAC;QACF,OAAO,CAAC,IAAI,CAAE,0CAAqB,CAAC,SAAiB,EAAE,kBAAkB,CAAC,CAAC,SAAS,CAAC,KAAK,WAAW,GAAY;YAC/G,OAAO;gBACL,iBAAiB,EAAC,IAAI;gBACtB,qBAAqB,EAAC,MAAM;aAC7B,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,+BAAe,EAAE,gBAAgB,CAAC,CAAC,SAAS,CAAC,KAAK,UAAU,CAAC,CAAC,IAAY,EAAE,SAAiB,EAAE,SAAkB,EAAE,SAAkB,EAAE,YAAsB,EAAE,aAAuB;YACjM,OAAO,EAAC,mBAAmB,EAAE,KAAK,EAAE,OAAO,EAAC,EAAC,YAAY,EAAE,OAAO,EAAC,EAAC,CAAC;QACvE,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,SAAS,CAAE,SAAS,CAAC,CAAC,UAAe,EAAE,QAAc;YAC3G,OAAO,EAAsB,CAAC;QAChC,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,SAAS,CAAE,SAAS,CAAC,CAAC,KAAc,EAAE,QAAc;YACzG,OAAO,yBAAyB,iBAAiB,EAAE,CAAC;QACtD,CAAC,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,GAAG,CAAC;QACvB,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAAE,0CAAqB,CAAC,SAAiB,EAAE,WAAW,CAAC,CAAC,SAAS,CAAC,KAAK,UAAW,CAAC;YACnH,MAAM,QAAQ,GAAiB;gBAC7B,IAAI,EAAG,CAAC;gBACR,IAAI,EAAG,CAAC;gBACR,IAAI,EAAG,UAAU;gBACjB,IAAI,EAAG,UAAU;gBACjB,gBAAgB,EAAG;oBACjB,IAAI,EAAG,MAAM;oBACb,UAAU,EAAG,IAAI;iBAClB;aAAC,CAAC;YACL,OAAO,IAAI,6CAAqB,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,EAAc,CAAC,EAAE,QAAQ,CAAC,CAAC;QACtF,CAAC,CAAC,CAAC;QAEH,IAAI,SAAS,GAAG,IAAI,CAAC;QACrB,OAAO,CAAC,IAAI,CAAE,6CAAqB,CAAC,SAAiB,EAAE,iBAAiB,CAAC,CAAC,SAAS,CAAC,KAAK,UAAW,CAAC;YAEnG,MAAM,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;YAClC,SAAS,GAAG,KAAK,CAAC;YAClB,OAAO;gBACL,mBAAmB,EAAE,MAAM;gBAC3B,IAAI,EAAE,EAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,SAAS,EAAC;aAClC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,qCAAiB,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;QACnF,MAAM,QAAQ,GAAG,IAAI,0CAAqB,CAAC,QAAQ,CAAC,CAAC;QACrD,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC5B,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC;QAE/B,0BAA0B;QAC1B,wEAAwE;QACxE,oGAAoG;QACpG,MAAM,CAAE,aAAa,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACtD,MAAM,CAAE,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAE;YACpD,IAAI,EAAG,CAAC,EAAE,IAAI,EAAG,CAAC,EAAE,IAAI,EAAG,UAAU,GAAC,GAAG,EAAE,IAAI,EAAG,UAAU,GAAC,GAAG;YAChE,gBAAgB,EAAG,EAAE,IAAI,EAAG,MAAM,EAAE,UAAU,EAAG,IAAI;aACpD;SAAC,CAAC,CAAC;QACN,MAAM,CAAE,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAE;YACpD,IAAI,EAAG,CAAC,EAAE,IAAI,EAAG,UAAU,GAAC,GAAG,EAAE,IAAI,EAAG,UAAU,GAAC,GAAG,EAAE,IAAI,EAAG,UAAU;YACzE,gBAAgB,EAAG,EAAE,IAAI,EAAG,MAAM,EAAE,UAAU,EAAG,IAAI;aACpD;SAAC,CAAC,CAAC;QACN,MAAM,CAAE,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAE;YACpD,IAAI,EAAG,UAAU,GAAC,GAAG,EAAE,IAAI,EAAG,CAAC,EAAE,IAAI,EAAG,UAAU,EAAE,IAAI,EAAG,UAAU,GAAC,GAAG;YACzE,gBAAgB,EAAG,EAAE,IAAI,EAAG,MAAM,EAAE,UAAU,EAAG,IAAI;aACpD;SAAC,CAAC,CAAC;QACN,MAAM,CAAE,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAE;YACpD,IAAI,EAAG,UAAU,GAAC,GAAG,EAAE,IAAI,EAAG,UAAU,GAAC,GAAG,EAAE,IAAI,EAAG,UAAU,EAAE,IAAI,EAAG,UAAU;YAClF,gBAAgB,EAAG,EAAE,IAAI,EAAG,MAAM,EAAE,UAAU,EAAG,IAAI;aACpD;SAAC,CAAC,CAAC;QACN,MAAM,CAAE,gBAAgB,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;QAExE,MAAM,QAAQ,GAAG,mCAAqB,CAAC,QAAQ,CAAC;YAC9C,GAAG,uBAAuB;YAC1B,SAAS,EAAE,CAAC,EAAC,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAC,IAAI,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAC,IAAI,EAAC,CAAC;SAAC,CAC1F,CAAC;QAEF,MAAM,QAAQ,GAAG,IAAI,0CAAqB,CAAC,QAAQ,CAAC,CAAC;QACrD,oFAAoF;QACpF,MAAM,QAAQ,GAAG,MAAO,QAAgB,CAAC,SAAS,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC;QAC1D,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;QAE/D,MAAM,QAAQ,GAAG,mCAAqB,CAAC,QAAQ,CAAC;YAC9C,GAAG,uBAAuB;YAC1B,SAAS,EAAE,CAAC,EAAC,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAC,IAAI,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAC,IAAI,EAAC,CAAC;SAAC,CAC1F,CAAC;QAEF,OAAO,CAAC,IAAI,CAAE,0CAAqB,CAAC,SAAiB,EAAE,kBAAkB,CAAC,CAAC,SAAS,CAAC,KAAK,WAAW,GAAY;YAC/G,OAAO;gBACL,iBAAiB,EAAC,IAAI;gBACtB,qBAAqB,EAAC,MAAM;aAC7B,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,+BAAe,EAAE,gBAAgB,CAAC,CAAC,SAAS,CAAC,KAAK,UAAU,CAAC,CAAC,IAAY,EAAE,SAAiB,EAAE,SAAkB,EAAE,SAAkB,EAAE,YAAsB,EAAE,aAAuB;YACjM,OAAO,EAAC,mBAAmB,EAAE,KAAK,EAAE,OAAO,EAAC,EAAC,YAAY,EAAE,OAAO,EAAC,EAAC,CAAC;QACvE,CAAC,CAAC,CAAC;QACH,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAE,qCAAqB,CAAC,SAAiB,EAAE,OAAO,CAAC,CAAC;QAElF,OAAO,CAAC,IAAI,CAAC,0CAAqB,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,IAAY,EAAE,OAAe,EAAE,UAAkB,EAAE,OAA4B,EAAE,aAA8B,EAAE,UAAmB,EAAE,UAAmB,EAAE,eAAyB;YAC5Q,OAAO,EAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,IAAI,0CAAqB,CAAC,QAAQ,CAAC,CAAC;QACrD,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,MAAO,QAAgB,CAAC,SAAS,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC;QAC1D,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC;QAClC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QACxC,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC5C,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;IAEvE,CAAC,CAAC,CAAC;AAEL,CAAC,CAAC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\nimport { Base64EncodedString, Cartographic, ImageMapLayerSettings, ImageSourceFormat, ServerError } from \"@itwin/core-common\";\r\nimport * as chai from \"chai\";\r\nimport * as chaiAsPromised from \"chai-as-promised\";\r\nimport { ArcGisFeatureMapLayerFormat } from \"../../ArcGisFeature/ArcGisFeatureFormat\";\r\nimport { ArcGisFeatureProvider } from \"../../map-layers-formats\";\r\nimport * as sinon from \"sinon\";\r\nimport { ArcGISImageryProvider, ArcGisUtilities, ImageryMapTileTree, MapLayerFeatureInfo, MapLayerImageryProviderStatus, QuadId } from \"@itwin/core-frontend\";\r\nimport { NewYorkDataset } from \"./NewYorkDataset\";\r\nimport { base64StringToUint8Array, ByteStream, Logger } from \"@itwin/core-bentley\";\r\nimport { ArcGisExtent, ArcGisFeatureFormat, ArcGisGeometry } from \"../../ArcGisFeature/ArcGisFeatureQuery\";\r\nimport { PhillyLandmarksDataset } from \"./PhillyLandmarksDataset\";\r\nimport { ArcGisFeatureResponse } from \"../../ArcGisFeature/ArcGisFeatureResponse\";\r\nimport { Point3d, Transform } from \"@itwin/core-geometry\";\r\nimport { ArcGisFeaturePBF } from \"../../ArcGisFeature/ArcGisFeaturePBF\";\r\nimport { ArcGisFeatureJSON } from \"../../ArcGisFeature/ArcGisFeatureJSON\";\r\n\r\nconst expect = chai.expect;\r\nchai.use(chaiAsPromised);\r\n\r\nconst esriFeatureSampleSource = {name: \"dummyFeatureLayer\", url: \"https://dummy.com\", formatId: ArcGisFeatureMapLayerFormat.formatId};\r\nconst pngTransparent1x1 = \"iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPhfDwAChwGA60e6kgAAAABJRU5ErkJggg==\";\r\n\r\ndescribe(\"ArcGisFeatureProvider\", () => {\r\n const sandbox = sinon.createSandbox();\r\n\r\n afterEach(async () => {\r\n sandbox.restore();\r\n });\r\n\r\n it(\"should initialize with valid data\", async () => {\r\n\r\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\r\n return {accessTokenRequired: false, content:NewYorkDataset.serviceCapabilities};\r\n });\r\n\r\n sandbox.stub(ArcGisFeatureProvider.prototype, \"getLayerMetadata\" as any).callsFake(async function _(_layerId: unknown) {\r\n return NewYorkDataset.streetsLayerCapabilities;\r\n });\r\n\r\n const settings = ImageMapLayerSettings.fromJSON(esriFeatureSampleSource);\r\n const provider = new ArcGisFeatureProvider(settings);\r\n await provider.initialize();\r\n\r\n expect((provider as any)._minDepthFromLod).to.equals(11);\r\n expect((provider as any)._maxDepthFromLod).to.equals(22);\r\n });\r\n\r\n it(\"should not initialize with no service metadata\", async () => {\r\n\r\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\r\n return undefined;\r\n });\r\n\r\n const settings = ImageMapLayerSettings.fromJSON(esriFeatureSampleSource);\r\n const provider = new ArcGisFeatureProvider(settings);\r\n\r\n await expect(provider.initialize()).to.be.rejectedWith(ServerError);\r\n\r\n });\r\n\r\n it(\"should update status when invalid token error from service\", async () => {\r\n\r\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\r\n return {accessTokenRequired: false, content:{error: {code: 499}}};\r\n });\r\n\r\n const settings = ImageMapLayerSettings.fromJSON(esriFeatureSampleSource);\r\n const provider = new ArcGisFeatureProvider(settings);\r\n const raiseEventSpy = sandbox.spy(provider.onStatusChanged, \"raiseEvent\");\r\n await provider.initialize();\r\n\r\n expect(provider.status).to.equals(MapLayerImageryProviderStatus.RequireAuth);\r\n expect(raiseEventSpy.calledOnceWith(provider)).to.be.true;\r\n });\r\n\r\n it(\"should throw query capability not supported\", async () => {\r\n\r\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\r\n return {accessTokenRequired: false, content:{capabilities: \"Test\"}};\r\n });\r\n\r\n const settings = ImageMapLayerSettings.fromJSON(esriFeatureSampleSource);\r\n const provider = new ArcGisFeatureProvider(settings);\r\n await expect(provider.initialize()).to.be.rejectedWith(ServerError);\r\n });\r\n\r\n it(\"should pick the first visible sub-layer when multiple visible sub-layers\", async () => {\r\n\r\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\r\n return {accessTokenRequired: false, content: {capabilities: \"Query\"}};\r\n });\r\n\r\n const settings = ImageMapLayerSettings.fromJSON({\r\n ...esriFeatureSampleSource,\r\n subLayers: [{id: 0, name: \"layer1\", visible:true}, {id:2, name: \"layer2\", visible:true}]}\r\n );\r\n const provider = new ArcGisFeatureProvider(settings);\r\n (provider as any)._format = \"JSON\";\r\n await provider.initialize();\r\n expect((provider as any)._layerId ).to.equals(settings.subLayers[0].id);\r\n });\r\n\r\n it(\"should pick sub-layers from service metadata if none provided on layer settings\", async () => {\r\n\r\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\r\n return {accessTokenRequired: false, content: {capabilities: \"Query\",\r\n layers: [\r\n {\r\n id : 0,\r\n\r\n },\r\n {\r\n id : 1,\r\n },\r\n ]},\r\n };\r\n });\r\n\r\n sandbox.stub((ArcGisFeatureProvider.prototype as any), \"getLayerMetadata\").callsFake(async function (id: unknown) {\r\n if (id === 1 ) {\r\n return {defaultVisibility:true};\r\n }\r\n return undefined;\r\n });\r\n\r\n const settings = ImageMapLayerSettings.fromJSON(esriFeatureSampleSource);\r\n const provider = new ArcGisFeatureProvider(settings);\r\n (provider as any)._format = \"JSON\";\r\n await provider.initialize();\r\n expect((provider as any)._layerId ).to.equals(1);\r\n expect((provider as any)._layerMetadata ).to.eql({defaultVisibility:true});\r\n });\r\n\r\n it(\"should throw error if no layers in capabilities\", async () => {\r\n\r\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\r\n return {accessTokenRequired: false, content: {capabilities: \"Query\", layers: []}};\r\n });\r\n\r\n const settings = ImageMapLayerSettings.fromJSON(esriFeatureSampleSource);\r\n const provider = new ArcGisFeatureProvider(settings);\r\n await expect(provider.initialize()).to.be.rejectedWith(ServerError);\r\n });\r\n\r\n it(\"should throw if no layer metadata from service\", async () => {\r\n\r\n const settings = ImageMapLayerSettings.fromJSON({\r\n ...esriFeatureSampleSource,\r\n subLayers: [{id: 0, name: \"layer1\", visible:true}, {id:2, name: \"layer2\", visible:true}]}\r\n );\r\n\r\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\r\n return {accessTokenRequired: false, content:{capabilities: \"Query\"}};\r\n });\r\n sandbox.stub((ArcGisFeatureProvider.prototype as any), \"getLayerMetadata\").callsFake(async function (_id: unknown) {\r\n return undefined;\r\n });\r\n\r\n const provider = new ArcGisFeatureProvider(settings);\r\n await expect(provider.initialize()).to.be.rejectedWith(ServerError);\r\n });\r\n\r\n it(\"should read supported supported format\", async () => {\r\n\r\n const settings = ImageMapLayerSettings.fromJSON({\r\n ...esriFeatureSampleSource,\r\n subLayers: [{id: 0, name: \"layer1\", visible:true}, {id:2, name: \"layer2\", visible:true}]}\r\n );\r\n\r\n let getLayerMetadataStub = sandbox.stub((ArcGisFeatureProvider.prototype as any), \"getLayerMetadata\").callsFake(async function (_id: unknown) {\r\n return {defaultVisibility:true, supportedQueryFormats:\"PBF, JSON\"};\r\n });\r\n\r\n const getServiceJsonStub = sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\r\n return {accessTokenRequired: false, content: {capabilities: \"Query\"}};\r\n });\r\n\r\n let provider = new ArcGisFeatureProvider(settings);\r\n await provider.initialize();\r\n expect(provider.format).to.equals(\"JSON\");\r\n\r\n // PBF requires 'supportsCoordinatesQuantization'\r\n getServiceJsonStub.restore();\r\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\r\n return {accessTokenRequired: false, content: { currentVersion: 11, capabilities: \"Query\"}};\r\n });\r\n getLayerMetadataStub.restore();\r\n getLayerMetadataStub = sandbox.stub((ArcGisFeatureProvider.prototype as any), \"getLayerMetadata\").callsFake(async function (_id: unknown) {\r\n return {defaultVisibility:true, supportsCoordinatesQuantization:true, supportedQueryFormats:\"PBF, JSON\"};\r\n });\r\n\r\n provider = new ArcGisFeatureProvider(settings);\r\n await provider.initialize();\r\n expect(provider.format).to.equals(\"PBF\");\r\n\r\n getLayerMetadataStub.restore();\r\n getLayerMetadataStub = sandbox.stub((ArcGisFeatureProvider.prototype as any), \"getLayerMetadata\").callsFake(async function (_id: unknown) {\r\n return {defaultVisibility:true, supportedQueryFormats:\"JSON\"};\r\n });\r\n\r\n getServiceJsonStub.restore();\r\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\r\n return {accessTokenRequired: false, content: { currentVersion: 10.91, capabilities: \"Query\", supportsCoordinatesQuantization:true}};\r\n });\r\n\r\n provider = new ArcGisFeatureProvider(settings);\r\n await provider.initialize();\r\n expect(provider.format).to.equals(\"JSON\");\r\n\r\n getLayerMetadataStub.restore();\r\n getLayerMetadataStub = sandbox.stub((ArcGisFeatureProvider.prototype as any), \"getLayerMetadata\").callsFake(async function (_id: unknown) {\r\n return {defaultVisibility:true, supportedQueryFormats:\"JSON\"};\r\n });\r\n\r\n provider = new ArcGisFeatureProvider(settings);\r\n await provider.initialize();\r\n expect(provider.format).to.equals(\"JSON\");\r\n\r\n getLayerMetadataStub.restore();\r\n getLayerMetadataStub = sandbox.stub((ArcGisFeatureProvider.prototype as any), \"getLayerMetadata\").callsFake(async function (_id: unknown) {\r\n return {defaultVisibility:true, supportedQueryFormats:\"\"};\r\n });\r\n\r\n provider = new ArcGisFeatureProvider(settings);\r\n await expect(provider.initialize()).to.be.rejectedWith(ServerError);\r\n });\r\n\r\n it(\"should compute minLod/maxLod\", async () => {\r\n\r\n const settings = ImageMapLayerSettings.fromJSON({\r\n ...esriFeatureSampleSource,\r\n subLayers: [{id: 0, name: \"layer1\", visible:true}, {id:2, name: \"layer2\", visible:true}]}\r\n );\r\n\r\n sandbox.stub((ArcGisFeatureProvider.prototype as any), \"getLayerMetadata\").callsFake(async function (_id: unknown) {\r\n return {\r\n defaultVisibility:true,\r\n supportedQueryFormats:\"PBF, JSON\",\r\n minScale: 600000,\r\n maxScale: 5000,\r\n };\r\n });\r\n\r\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\r\n return {accessTokenRequired: false, content:{capabilities: \"Query\"}};\r\n });\r\n\r\n const provider = new ArcGisFeatureProvider(settings);\r\n await provider.initialize();\r\n\r\n expect((provider as any)._minDepthFromLod ).to.equals(9);\r\n expect((provider as any)._maxDepthFromLod ).to.equals(15);\r\n });\r\n\r\n it(\"should construct empty url\", async () => {\r\n\r\n const settings = ImageMapLayerSettings.fromJSON(esriFeatureSampleSource);\r\n const provider = new ArcGisFeatureProvider(settings);\r\n const url = await provider.constructUrl(0,0,0);\r\n expect(url).to.equals(\"\");\r\n\r\n });\r\n\r\n it(\"should construct feature query url\", async () => {\r\n const settings = ImageMapLayerSettings.fromJSON({\r\n ...esriFeatureSampleSource,\r\n subLayers: [{id: 0, name: \"layer1\", visible:true}, {id:2, name: \"layer2\", visible:true}]}\r\n );\r\n\r\n let getLayerMetadataStub = sandbox.stub((ArcGisFeatureProvider.prototype as any), \"getLayerMetadata\").callsFake(async function (_id: unknown) {\r\n return {\r\n defaultVisibility: true,\r\n supportedQueryFormats:\"PBF, JSON\",\r\n };\r\n });\r\n\r\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\r\n return {accessTokenRequired: false, content:{currentVersion: 11, capabilities: \"Query\"}};\r\n });\r\n\r\n const provider = new ArcGisFeatureProvider(settings);\r\n await provider.initialize();\r\n\r\n let url = provider.constructFeatureUrl(0,0,0, \"PBF\");\r\n const extent = {\r\n xmin: -20037508.34,\r\n ymin: -20037508.33,\r\n xmax: 20037508.34,\r\n ymax: 20037508.34,\r\n spatialReference: {\r\n wkid: 102100,\r\n latestWkid: 3857,\r\n },\r\n };\r\n expect(url?.url).to.equals(`https://dummy.com/0/query?f=PBF&resultType=tile&maxRecordCountFactor=3&returnExceededLimitFeatures=false&outSR=102100&geometryType=esriGeometryEnvelope&geometry=%7B%22xmin%22%3A-20037508.34%2C%22ymin%22%3A-20037508.339999996%2C%22xmax%22%3A20037508.34%2C%22ymax%22%3A20037508.340000004%2C%22spatialReference%22%3A%7B%22wkid%22%3A102100%2C%22latestWkid%22%3A3857%7D%7D&units=esriSRUnit_Meter&inSR=102100`);\r\n expect(url?.envelope?.xmin).to.be.closeTo(extent.xmin, 0.01);\r\n expect(url?.envelope?.ymin).to.be.closeTo(extent.ymin, 0.01);\r\n expect(url?.envelope?.xmax).to.be.closeTo(extent.xmax, 0.01);\r\n expect(url?.envelope?.ymax).to.be.closeTo(extent.ymax, 0.01);\r\n expect(url?.envelope?.spatialReference.wkid).to.be.equal(102100);\r\n expect(url?.envelope?.spatialReference.latestWkid).to.be.equal(3857);\r\n\r\n // Now turn ON 'supportsCoordinatesQuantization' to ON\r\n getLayerMetadataStub.restore();\r\n getLayerMetadataStub = sandbox.stub((ArcGisFeatureProvider.prototype as any), \"getLayerMetadata\").callsFake(async function (_id: unknown) {\r\n return {\r\n defaultVisibility: true,\r\n supportedQueryFormats:\"PBF, JSON\",\r\n supportsCoordinatesQuantization: true,\r\n };\r\n });\r\n\r\n const provider2 = new ArcGisFeatureProvider(settings);\r\n await provider2.initialize();\r\n url = provider2.constructFeatureUrl(0,0,0, \"PBF\");\r\n expect(url?.url).to.equals(`https://dummy.com/0/query?f=PBF&resultType=tile&maxRecordCountFactor=3&returnExceededLimitFeatures=false&outSR=102100&geometryType=esriGeometryEnvelope&geometry=%7B%22xmin%22%3A-20037508.34%2C%22ymin%22%3A-20037508.339999996%2C%22xmax%22%3A20037508.34%2C%22ymax%22%3A20037508.340000004%2C%22spatialReference%22%3A%7B%22wkid%22%3A102100%2C%22latestWkid%22%3A3857%7D%7D&units=esriSRUnit_Meter&inSR=102100&quantizationParameters=%7B%22mode%22%3A%22view%22%2C%22originPosition%22%3A%22upperLeft%22%2C%22tolerance%22%3A78271.516953125%2C%22extent%22%3A%7B%22xmin%22%3A-20037508.34%2C%22ymin%22%3A-20037508.339999996%2C%22xmax%22%3A20037508.34%2C%22ymax%22%3A20037508.340000004%2C%22spatialReference%22%3A%7B%22wkid%22%3A102100%2C%22latestWkid%22%3A3857%7D%7D%7D`);\r\n expect(url?.envelope?.xmin).to.be.closeTo(extent.xmin, 0.01);\r\n expect(url?.envelope?.ymin).to.be.closeTo(extent.ymin, 0.01);\r\n expect(url?.envelope?.xmax).to.be.closeTo(extent.xmax, 0.01);\r\n expect(url?.envelope?.ymax).to.be.closeTo(extent.ymax, 0.01);\r\n expect(url?.envelope?.spatialReference.wkid).to.be.equal(extent.spatialReference.wkid);\r\n expect(url?.envelope?.spatialReference.latestWkid).to.be.equal(extent.spatialReference.latestWkid);\r\n\r\n // Test passing an override geometry\r\n const overrideGeom: ArcGisGeometry = {\r\n type: \"esriGeometryEnvelope\",\r\n geom: {\r\n xmin: -50,\r\n ymin: -50,\r\n xmax: 50,\r\n ymax: 50,\r\n spatialReference: {\r\n wkid: 102100,\r\n latestWkid: 3857,\r\n },\r\n },\r\n };\r\n const provider3 = new ArcGisFeatureProvider(settings);\r\n await provider3.initialize();\r\n url = provider3.constructFeatureUrl(0,0,0, \"PBF\", overrideGeom);\r\n expect(url?.url).to.equals(`https://dummy.com/0/query?f=PBF&resultType=tile&maxRecordCountFactor=3&returnExceededLimitFeatures=false&outSR=102100&geometryType=esriGeometryEnvelope&geometry=%7B%22xmin%22%3A-50%2C%22ymin%22%3A-50%2C%22xmax%22%3A50%2C%22ymax%22%3A50%2C%22spatialReference%22%3A%7B%22wkid%22%3A102100%2C%22latestWkid%22%3A3857%7D%7D&units=esriSRUnit_Meter&inSR=102100&quantizationParameters=%7B%22mode%22%3A%22view%22%2C%22originPosition%22%3A%22upperLeft%22%2C%22tolerance%22%3A78271.516953125%2C%22extent%22%3A%7B%22xmin%22%3A-20037508.34%2C%22ymin%22%3A-20037508.339999996%2C%22xmax%22%3A20037508.34%2C%22ymax%22%3A20037508.340000004%2C%22spatialReference%22%3A%7B%22wkid%22%3A102100%2C%22latestWkid%22%3A3857%7D%7D%7D`);\r\n expect(url?.envelope?.xmin).to.be.closeTo((overrideGeom.geom as ArcGisExtent).xmin, 0.01);\r\n expect(url?.envelope?.ymin).to.be.closeTo((overrideGeom.geom as ArcGisExtent).ymin, 0.01);\r\n expect(url?.envelope?.xmax).to.be.closeTo((overrideGeom.geom as ArcGisExtent).xmax, 0.01);\r\n expect(url?.envelope?.ymax).to.be.closeTo((overrideGeom.geom as ArcGisExtent).ymax, 0.01);\r\n expect(url?.envelope?.spatialReference.wkid).to.be.equal(overrideGeom.geom.spatialReference.wkid);\r\n expect(url?.envelope?.spatialReference.latestWkid).to.be.equal(overrideGeom.geom.spatialReference.latestWkid);\r\n\r\n // Now test with a different tolerance value\r\n url = provider3.constructFeatureUrl(0,0,0, \"PBF\", overrideGeom, undefined, 10);\r\n expect(url?.url).to.equals(`https://dummy.com/0/query?f=PBF&resultType=tile&maxRecordCountFactor=3&returnExceededLimitFeatures=false&outSR=102100&geometryType=esriGeometryEnvelope&geometry=%7B%22xmin%22%3A-50%2C%22ymin%22%3A-50%2C%22xmax%22%3A50%2C%22ymax%22%3A50%2C%22spatialReference%22%3A%7B%22wkid%22%3A102100%2C%22latestWkid%22%3A3857%7D%7D&units=esriSRUnit_Meter&inSR=102100&quantizationParameters=%7B%22mode%22%3A%22view%22%2C%22originPosition%22%3A%22upperLeft%22%2C%22tolerance%22%3A78271.516953125%2C%22extent%22%3A%7B%22xmin%22%3A-20037508.34%2C%22ymin%22%3A-20037508.339999996%2C%22xmax%22%3A20037508.34%2C%22ymax%22%3A20037508.340000004%2C%22spatialReference%22%3A%7B%22wkid%22%3A102100%2C%22latestWkid%22%3A3857%7D%7D%7D&distance=782715.16953125`);\r\n expect(url?.envelope?.xmin).to.be.closeTo((overrideGeom.geom as ArcGisExtent).xmin, 0.01);\r\n expect(url?.envelope?.ymin).to.be.closeTo((overrideGeom.geom as ArcGisExtent).ymin, 0.01);\r\n expect(url?.envelope?.xmax).to.be.closeTo((overrideGeom.geom as ArcGisExtent).xmax, 0.01);\r\n expect(url?.envelope?.ymax).to.be.closeTo((overrideGeom.geom as ArcGisExtent).ymax, 0.01);\r\n expect(url?.envelope?.spatialReference.wkid).to.be.equal(overrideGeom.geom.spatialReference.wkid);\r\n expect(url?.envelope?.spatialReference.latestWkid).to.be.equal(overrideGeom.geom.spatialReference.latestWkid);\r\n\r\n });\r\n\r\n it(\"should log error when getFeatureInfo cannot be performed\", async () => {\r\n\r\n const settings = ImageMapLayerSettings.fromJSON({\r\n ...esriFeatureSampleSource,\r\n subLayers: [{id: 0, name: \"layer1\", visible:true}, {id:2, name: \"layer2\", visible:true}]}\r\n );\r\n\r\n sandbox.stub((ArcGisFeatureProvider.prototype as any), \"getLayerMetadata\").callsFake(async function (_id: unknown) {\r\n return {\r\n defaultVisibility:true,\r\n supportedQueryFormats:\"PBF, JSON\",\r\n minScale: 600000,\r\n maxScale: 5000,\r\n };\r\n });\r\n\r\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\r\n return {accessTokenRequired: false, content:{currentVersion: 11, capabilities: \"Query\"}};\r\n });\r\n sandbox.stub(ArcGisFeatureProvider.prototype, \"constructFeatureUrl\").callsFake(function _(_row: number, _column: number, _zoomLevel: number, _format: ArcGisFeatureFormat, _geomOverride?: ArcGisGeometry, _outFields?: string, _tolerance?: number, _returnGeometry?: boolean) {\r\n return undefined;\r\n });\r\n\r\n const provider = new ArcGisFeatureProvider(settings);\r\n await provider.initialize();\r\n const featureInfos: MapLayerFeatureInfo[] = [];\r\n const logErrorSpy = sandbox.spy(Logger, \"logError\");\r\n await provider.getFeatureInfo(featureInfos, new QuadId(0, 0, 0), Cartographic.fromDegrees({latitude: 46, longitude:-71}), (undefined as unknown) as ImageryMapTileTree);\r\n expect(featureInfos.length).to.equals(0);\r\n expect(logErrorSpy.called).to.be.true;\r\n\r\n });\r\n\r\n it(\"should process data in getFeatureInfo\", async () => {\r\n\r\n const settings = ImageMapLayerSettings.fromJSON({\r\n ...esriFeatureSampleSource,\r\n subLayers: [{id: 0, name: \"layer1\", visible:true}, {id:2, name: \"layer2\", visible:true}]}\r\n );\r\n\r\n sandbox.stub((ArcGisFeatureProvider.prototype as any), \"getLayerMetadata\").callsFake(async function (_id: unknown) {\r\n return {\r\n defaultVisibility:true,\r\n supportedQueryFormats:\"PBF, JSON\",\r\n supportsCoordinatesQuantization:true,\r\n minScale: 600000,\r\n maxScale: 5000,\r\n };\r\n });\r\n\r\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\r\n return {accessTokenRequired: false, content:{currentVersion: 11, capabilities: \"Query\"}};\r\n });\r\n sandbox.stub((ArcGISImageryProvider.prototype as any), \"fetch\").callsFake(async function _(_url: unknown, _options?: unknown) {\r\n const test = {\r\n headers: { \"content-type\" : \"pbf\"},\r\n arrayBuffer: async () => {\r\n const byteArray = Base64EncodedString.toUint8Array(PhillyLandmarksDataset.phillyTransportationGetFeatureInfoQueryEncodedPbf);\r\n return Promise.resolve(byteArray ? ByteStream.fromUint8Array(byteArray).arrayBuffer : undefined);\r\n },\r\n status: 200,\r\n } as unknown; // By using unknown type, I can define parts of Response I really need\r\n return (test as Response );\r\n });\r\n\r\n const provider = new ArcGisFeatureProvider(settings);\r\n await provider.initialize();\r\n const featureInfos: MapLayerFeatureInfo[] = [];\r\n const logErrorSpy = sandbox.spy(Logger, \"logError\");\r\n await provider.getFeatureInfo(featureInfos, new QuadId(0, 0, 0), Cartographic.fromDegrees({latitude: 46, longitude:-71}), (undefined as unknown) as ImageryMapTileTree);\r\n expect(featureInfos.length).to.equals(1);\r\n expect(logErrorSpy.calledOnce).to.be.false;\r\n\r\n });\r\n\r\n it(\"should log error when exceed transfert limit\", async () => {\r\n\r\n const settings = ImageMapLayerSettings.fromJSON({\r\n ...esriFeatureSampleSource,\r\n subLayers: [{id: 0, name: \"layer1\", visible:true}, {id:2, name: \"layer2\", visible:true}]}\r\n );\r\n sandbox.stub((ArcGisFeatureProvider.prototype as any), \"getLayerMetadata\").callsFake(async function (_id: unknown) {\r\n return {\r\n defaultVisibility:true,\r\n supportedQueryFormats:\"PBF, JSON\",\r\n minScale: 600000,\r\n maxScale: 5000,\r\n };\r\n });\r\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\r\n return {accessTokenRequired: false, content:{capabilities: \"Query\"}};\r\n });\r\n\r\n sandbox.stub((ArcGisFeatureResponse.prototype as any), \"getResponseData\").callsFake(async function _() {\r\n return {exceedTransferLimit: true, data:undefined};\r\n });\r\n\r\n const provider = new ArcGisFeatureProvider(settings);\r\n await provider.initialize();\r\n const featureInfos: MapLayerFeatureInfo[] = [];\r\n const logErrorSpy = sandbox.spy(Logger, \"logError\");\r\n await provider.getFeatureInfo(featureInfos, new QuadId(0, 0, 0), Cartographic.fromDegrees({latitude: 46, longitude:-71}), (undefined as unknown) as ImageryMapTileTree);\r\n expect(featureInfos.length).to.equals(0);\r\n expect(logErrorSpy.calledOnce).to.be.true;\r\n\r\n });\r\n\r\n it(\"should log error when exceed exception thrown limit\", async () => {\r\n\r\n const settings = ImageMapLayerSettings.fromJSON({\r\n ...esriFeatureSampleSource,\r\n subLayers: [{id: 0, name: \"layer1\", visible:true}, {id:2, name: \"layer2\", visible:true}]}\r\n );\r\n sandbox.stub((ArcGisFeatureProvider.prototype as any), \"getLayerMetadata\").callsFake(async function (_id: unknown) {\r\n return {\r\n defaultVisibility:true,\r\n supportedQueryFormats:\"PBF, JSON\",\r\n minScale: 600000,\r\n maxScale: 5000,\r\n };\r\n });\r\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\r\n return {accessTokenRequired: false, content:{capabilities: \"Query\"}};\r\n });\r\n\r\n sandbox.stub((ArcGisFeatureResponse.prototype as any), \"getResponseData\").callsFake(async function _() {\r\n throw new Error();\r\n });\r\n\r\n const provider = new ArcGisFeatureProvider(settings);\r\n await provider.initialize();\r\n const featureInfos: MapLayerFeatureInfo[] = [];\r\n const logErrorSpy = sandbox.spy(Logger, \"logError\");\r\n await provider.getFeatureInfo(featureInfos, new QuadId(0, 0, 0), Cartographic.fromDegrees({latitude: 46, longitude:-71}), (undefined as unknown) as ImageryMapTileTree);\r\n expect(featureInfos.length).to.equals(0);\r\n expect(logErrorSpy.calledOnce).to.be.true;\r\n\r\n });\r\n\r\n it(\"should debug Feature Geom\", async () => {\r\n\r\n const settings = ImageMapLayerSettings.fromJSON({\r\n ...esriFeatureSampleSource,\r\n subLayers: [{id: 0, name: \"layer1\", visible:true}, {id:2, name: \"layer2\", visible:true}]}\r\n );\r\n sandbox.stub((ArcGisFeatureProvider.prototype as any), \"getLayerMetadata\").callsFake(async function (_id: unknown) {\r\n return {\r\n defaultVisibility:true,\r\n supportedQueryFormats:\"PBF, JSON\",\r\n minScale: 600000,\r\n maxScale: 5000,\r\n };\r\n });\r\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\r\n return {accessTokenRequired: false, content:{capabilities: \"Query\"}};\r\n });\r\n\r\n sandbox.stub((ArcGisFeatureResponse.prototype as any), \"getResponseData\").callsFake(async function _() {\r\n return {data: {\r\n toObject: () => undefined,\r\n }};\r\n });\r\n\r\n const provider = new ArcGisFeatureProvider(settings);\r\n await provider.initialize();\r\n (provider as any)._debugFeatureGeom = true;\r\n const featureInfos: MapLayerFeatureInfo[] = [];\r\n const logInfoSpy = sandbox.spy(Logger, \"logInfo\");\r\n await provider.getFeatureInfo(featureInfos, new QuadId(0, 0, 0), Cartographic.fromDegrees({latitude: 46, longitude:-71}), (undefined as unknown) as ImageryMapTileTree);\r\n expect(featureInfos.length).to.equals(0);\r\n expect(logInfoSpy.callCount).to.equals(2);\r\n\r\n });\r\n\r\n it(\"should compute computeTileWorld2CanvasTransform\", async () => {\r\n const settings = ImageMapLayerSettings.fromJSON({\r\n ...esriFeatureSampleSource,\r\n subLayers: [{id: 0, name: \"layer1\", visible:true}, {id:2, name: \"layer2\", visible:true}]}\r\n );\r\n const worldSize = 100;\r\n const canvasSize = 10;\r\n\r\n const provider = new ArcGisFeatureProvider(settings);\r\n const getEPSG3857ExtentStub = sandbox.stub(ArcGisFeatureProvider.prototype, \"getEPSG3857Extent\").callsFake(function (_row: number, _column: number, _zoomLevel: number) {\r\n return { left:0, right:worldSize, bottom:0, top:worldSize };\r\n });\r\n\r\n sandbox.stub(provider, \"tileSize\").get(function () {\r\n return canvasSize; // return a size of 10 to simplicity\r\n });\r\n let transform = ((provider as any).computeTileWorld2CanvasTransform(0,0,0) as Transform | undefined);\r\n let worldPoint = Point3d.createFrom({x: worldSize*0.5, y:worldSize*0.5, z:0});\r\n let transformedPoint = transform?.multiplyPoint3d(worldPoint);\r\n\r\n // Make sure center point remains in the center\r\n expect(transformedPoint).to.not.undefined;\r\n expect(transformedPoint!.x).to.equals(canvasSize*0.5);\r\n expect(transformedPoint!.y).to.equals(canvasSize*0.5);\r\n expect(transformedPoint!.z).to.equals(0);\r\n\r\n // Check that y-axis get flipped\r\n worldPoint = Point3d.createFrom({x: 0, y:10, z:0});\r\n transformedPoint = transform?.multiplyPoint3d(worldPoint);\r\n expect(transformedPoint!.x).to.equals(0);\r\n expect(transformedPoint!.y).to.equals(9);\r\n expect(transformedPoint!.z).to.equals(0);\r\n\r\n // Now check translation has been applied (origin shift)\r\n getEPSG3857ExtentStub.restore();\r\n sandbox.stub(ArcGisFeatureProvider.prototype, \"getEPSG3857Extent\").callsFake(function (_row: number, _column: number, _zoomLevel: number) {\r\n return { left:worldSize, right:worldSize*2, bottom:worldSize, top:worldSize*2 };\r\n });\r\n worldPoint = Point3d.createFrom({x: worldSize, y:worldSize, z:0});\r\n transform = ((provider as any).computeTileWorld2CanvasTransform(0,0,0) as Transform | undefined);\r\n transformedPoint = transform?.multiplyPoint3d(worldPoint);\r\n expect(transformedPoint).to.not.undefined;\r\n expect(transformedPoint!.x).to.equals(0);\r\n expect(transformedPoint!.y).to.equals(10);\r\n expect(transformedPoint!.z).to.equals(0);\r\n\r\n });\r\n\r\n it(\"should loadTile from PBF request\", async () => {\r\n const settings = ImageMapLayerSettings.fromJSON({\r\n ...esriFeatureSampleSource,\r\n subLayers: [{id: 0, name: \"layer1\", visible:true}, {id:2, name: \"layer2\", visible:true}]}\r\n );\r\n sandbox.stub((ArcGisFeatureProvider.prototype as any), \"getLayerMetadata\").callsFake(async function (_id: unknown) {\r\n return {\r\n defaultVisibility:true,\r\n supportedQueryFormats:\"PBF\",\r\n supportsCoordinatesQuantization:true,\r\n };\r\n });\r\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\r\n return {accessTokenRequired: false, content:{currentVersion: 11, capabilities: \"Query\"}};\r\n });\r\n sandbox.stub(HTMLCanvasElement.prototype, \"getContext\").callsFake( function _(_contextId: any, _options?: any) {\r\n return {} as RenderingContext;\r\n });\r\n\r\n sandbox.stub(HTMLCanvasElement.prototype, \"toDataURL\").callsFake( function _(_type?: string, _quality?: any) {\r\n return `data:image/png;base64,${pngTransparent1x1}`;\r\n });\r\n\r\n const providerStub = sandbox.stub((ArcGisFeatureProvider.prototype as any), \"fetchTile\").callsFake(async function _() {\r\n return new ArcGisFeatureResponse(\"PBF\", Promise.resolve({} as Response));\r\n });\r\n\r\n sandbox.stub((ArcGisFeatureResponse.prototype as any), \"getResponseData\").callsFake(async function _() {\r\n return {\r\n exceedTransferLimit: false,\r\n data: {toObject: () => undefined},\r\n };\r\n });\r\n\r\n // toDataURL string;\r\n const readAndRenderSpy = sandbox.spy(ArcGisFeaturePBF.prototype, \"readAndRender\");\r\n const computeTransfoSpy = sandbox.spy(ArcGisFeatureProvider.prototype as any, \"computeTileWorld2CanvasTransform\");\r\n const provider = new ArcGisFeatureProvider(settings);\r\n await provider.initialize();\r\n const tileData = await provider.loadTile(0,0,0);\r\n expect (tileData).to.not.undefined;\r\n expect (tileData?.data instanceof Uint8Array).to.be.true;\r\n expect(tileData?.data).to.eqls(base64StringToUint8Array(pngTransparent1x1));\r\n expect(tileData?.format).to.equals(ImageSourceFormat.Png);\r\n expect (providerStub.calledOnce).to.be.true;\r\n expect (readAndRenderSpy.calledOnce).to.be.true;\r\n expect (computeTransfoSpy.calledOnce).to.be.false; // Should not be called since we have supportsCoordinatesQuantization in layer metadata\r\n\r\n });\r\n\r\n it(\"should loadTile from JSON request\", async () => {\r\n const settings = ImageMapLayerSettings.fromJSON({\r\n ...esriFeatureSampleSource,\r\n subLayers: [{id: 0, name: \"layer1\", visible:true}, {id:2, name: \"layer2\", visible:true}]}\r\n );\r\n sandbox.stub((ArcGisFeatureProvider.prototype as any), \"getLayerMetadata\").callsFake(async function (_id: unknown) {\r\n return {\r\n defaultVisibility:true,\r\n supportedQueryFormats:\"JSON\",\r\n };\r\n });\r\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\r\n return {accessTokenRequired: false, content:{capabilities: \"Query\"}};\r\n });\r\n sandbox.stub(HTMLCanvasElement.prototype, \"getContext\").callsFake( function _(_contextId: any, _options?: any) {\r\n return {} as RenderingContext;\r\n });\r\n\r\n sandbox.stub(HTMLCanvasElement.prototype, \"toDataURL\").callsFake( function _(_type?: string, _quality?: any) {\r\n return `data:image/png;base64,${pngTransparent1x1}`;\r\n });\r\n\r\n const providerStub = sandbox.stub((ArcGisFeatureProvider.prototype as any), \"fetchTile\").callsFake(async function _() {\r\n return new ArcGisFeatureResponse(\"JSON\", Promise.resolve({} as Response));\r\n });\r\n\r\n sandbox.stub((ArcGisFeatureResponse.prototype as any), \"getResponseData\").callsFake(async function _() {\r\n return {\r\n exceedTransferLimit: false,\r\n data: {toObject: () => undefined},\r\n };\r\n });\r\n\r\n const readAndRenderSpy = sandbox.spy(ArcGisFeatureJSON.prototype, \"readAndRender\");\r\n const computeTransfoSpy = sandbox.spy(ArcGisFeatureProvider.prototype as any, \"computeTileWorld2CanvasTransform\");\r\n const provider = new ArcGisFeatureProvider(settings);\r\n await provider.initialize();\r\n const tileData = await provider.loadTile(0,0,0);\r\n expect (tileData).to.not.undefined;\r\n expect (tileData?.data instanceof Uint8Array).to.be.true;\r\n expect(tileData?.data).to.eqls(base64StringToUint8Array(pngTransparent1x1));\r\n expect(tileData?.format).to.equals(ImageSourceFormat.Png);\r\n expect (providerStub.calledOnce).to.be.true;\r\n expect (readAndRenderSpy.calledOnce).to.be.true;\r\n expect (computeTransfoSpy.calledOnce).to.be.true; // Should be called since we dont have _supportsCoordinatesQuantization in layer metadata\r\n });\r\n\r\n it(\"should make sub request if loadtile request return 'exceedTransferLimit'\", async () => {\r\n const settings = ImageMapLayerSettings.fromJSON({\r\n ...esriFeatureSampleSource,\r\n subLayers: [{id: 0, name: \"layer1\", visible:true}, {id:2, name: \"layer2\", visible:true}]}\r\n );\r\n sandbox.stub((ArcGisFeatureProvider.prototype as any), \"getLayerMetadata\").callsFake(async function (_id: unknown) {\r\n return {\r\n defaultVisibility:true,\r\n supportedQueryFormats:\"JSON\",\r\n };\r\n });\r\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\r\n return {accessTokenRequired: false, content:{capabilities: \"Query\"}};\r\n });\r\n sandbox.stub(HTMLCanvasElement.prototype, \"getContext\").callsFake( function _(_contextId: any, _options?: any) {\r\n return {} as RenderingContext;\r\n });\r\n\r\n sandbox.stub(HTMLCanvasElement.prototype, \"toDataURL\").callsFake( function _(_type?: string, _quality?: any) {\r\n return `data:image/png;base64,${pngTransparent1x1}`;\r\n });\r\n\r\n const extentSize = 100;\r\n const fetchTileStub = sandbox.stub((ArcGisFeatureProvider.prototype as any), \"fetchTile\").callsFake(async function _() {\r\n const envelope: ArcGisExtent = {\r\n xmin : 0,\r\n ymin : 0,\r\n xmax : extentSize,\r\n ymax : extentSize,\r\n spatialReference : {\r\n wkid : 102100,\r\n latestWkid : 3857,\r\n }};\r\n return new ArcGisFeatureResponse(\"JSON\", Promise.resolve({} as Response), envelope);\r\n });\r\n\r\n let firstCall = true;\r\n sandbox.stub((ArcGisFeatureResponse.prototype as any), \"getResponseData\").callsFake(async function _() {\r\n\r\n const exceed = firstCall === true;\r\n firstCall = false;\r\n return {\r\n exceedTransferLimit: exceed,\r\n data: {toObject: () => undefined},\r\n };\r\n });\r\n\r\n const readAndRenderSpy = sandbox.spy(ArcGisFeatureJSON.prototype, \"readAndRender\");\r\n const provider = new ArcGisFeatureProvider(settings);\r\n await provider.initialize();\r\n await provider.loadTile(0,0,0);\r\n\r\n // We should have 5 calls:\r\n // Call #1 : initial call for 0,0,0 and it returns 'exceedTransferLimit'\r\n // Calls #2-5: Four calls which represent a call for each sub-envelope (initial extent divided by 4)\r\n expect (fetchTileStub.getCalls().length).to.equals(5);\r\n expect (fetchTileStub.getCalls()[1].args[3]).to.eqls( {\r\n xmin : 0, ymin : 0, xmax : extentSize*0.5, ymax : extentSize*0.5,\r\n spatialReference : { wkid : 102100, latestWkid : 3857,\r\n }});\r\n expect (fetchTileStub.getCalls()[2].args[3]).to.eqls( {\r\n xmin : 0, ymin : extentSize*0.5, xmax : extentSize*0.5, ymax : extentSize,\r\n spatialReference : { wkid : 102100, latestWkid : 3857,\r\n }});\r\n expect (fetchTileStub.getCalls()[3].args[3]).to.eqls( {\r\n xmin : extentSize*0.5, ymin : 0, xmax : extentSize, ymax : extentSize*0.5,\r\n spatialReference : { wkid : 102100, latestWkid : 3857,\r\n }});\r\n expect (fetchTileStub.getCalls()[4].args[3]).to.eqls( {\r\n xmin : extentSize*0.5, ymin : extentSize*0.5, xmax : extentSize, ymax : extentSize,\r\n spatialReference : { wkid : 102100, latestWkid : 3857,\r\n }});\r\n expect (readAndRenderSpy.getCalls().length).to.equals(4);\r\n });\r\n\r\n it(\"fetchTile should return undefined when to format defined\", async () => {\r\n\r\n const settings = ImageMapLayerSettings.fromJSON({\r\n ...esriFeatureSampleSource,\r\n subLayers: [{id: 0, name: \"layer1\", visible:true}, {id:2, name: \"layer2\", visible:true}]}\r\n );\r\n\r\n const provider = new ArcGisFeatureProvider(settings);\r\n // make a first request with init, should return undefined because of missing format\r\n const tileData = await (provider as any).fetchTile(0,0,0);\r\n expect(tileData).to.be.undefined;\r\n });\r\n\r\n it(\"fetchTile should call fetch with the proper URL\", async () => {\r\n\r\n const settings = ImageMapLayerSettings.fromJSON({\r\n ...esriFeatureSampleSource,\r\n subLayers: [{id: 0, name: \"layer1\", visible:true}, {id:2, name: \"layer2\", visible:true}]}\r\n );\r\n\r\n sandbox.stub((ArcGisFeatureProvider.prototype as any), \"getLayerMetadata\").callsFake(async function (_id: unknown) {\r\n return {\r\n defaultVisibility:true,\r\n supportedQueryFormats:\"JSON\",\r\n };\r\n });\r\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\r\n return {accessTokenRequired: false, content:{capabilities: \"Query\"}};\r\n });\r\n const fetchStub = sandbox.stub((ArcGISImageryProvider.prototype as any), \"fetch\");\r\n\r\n sandbox.stub(ArcGisFeatureProvider.prototype, \"constructFeatureUrl\").callsFake(function _(_row: number, _column: number, _zoomLevel: number, _format: ArcGisFeatureFormat, _geomOverride?: ArcGisGeometry, _outFields?: string, _tolerance?: number, _returnGeometry?: boolean) {\r\n return {url: settings.url};\r\n });\r\n\r\n const provider = new ArcGisFeatureProvider(settings);\r\n await provider.initialize();\r\n const response = await (provider as any).fetchTile(0,0,0);\r\n expect(response).to.not.undefined;\r\n expect(fetchStub.calledOnce).to.be.true;\r\n const test1 = fetchStub.getCall(0).firstArg;\r\n expect(test1.toString()).to.equals(new URL(settings.url).toString());\r\n\r\n });\r\n\r\n});\r\n"]}
1
+ {"version":3,"file":"ArcGisFeatureProvider.test.js","sourceRoot":"","sources":["../../../../src/test/ArcGisFeature/ArcGisFeatureProvider.test.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\nimport { Base64EncodedString, Cartographic, ImageMapLayerSettings, ImageSourceFormat, ServerError } from \"@itwin/core-common\";\nimport * as chai from \"chai\";\nimport * as chaiAsPromised from \"chai-as-promised\";\nimport { ArcGisFeatureMapLayerFormat } from \"../../ArcGisFeature/ArcGisFeatureFormat\";\nimport { ArcGisFeatureProvider } from \"../../map-layers-formats\";\nimport * as sinon from \"sinon\";\nimport { ArcGISImageryProvider, ArcGisUtilities, ImageryMapTileTree, MapLayerFeatureInfo, MapLayerImageryProviderStatus, QuadId } from \"@itwin/core-frontend\";\nimport { NewYorkDataset } from \"./NewYorkDataset\";\nimport { base64StringToUint8Array, ByteStream, Logger } from \"@itwin/core-bentley\";\nimport { ArcGisExtent, ArcGisFeatureFormat, ArcGisGeometry } from \"../../ArcGisFeature/ArcGisFeatureQuery\";\nimport { PhillyLandmarksDataset } from \"./PhillyLandmarksDataset\";\nimport { ArcGisFeatureResponse } from \"../../ArcGisFeature/ArcGisFeatureResponse\";\nimport { Point3d, Transform } from \"@itwin/core-geometry\";\nimport { ArcGisFeaturePBF } from \"../../ArcGisFeature/ArcGisFeaturePBF\";\nimport { ArcGisFeatureJSON } from \"../../ArcGisFeature/ArcGisFeatureJSON\";\n\nconst expect = chai.expect;\nchai.use(chaiAsPromised);\n\nconst esriFeatureSampleSource = {name: \"dummyFeatureLayer\", url: \"https://dummy.com\", formatId: ArcGisFeatureMapLayerFormat.formatId};\nconst pngTransparent1x1 = \"iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPhfDwAChwGA60e6kgAAAABJRU5ErkJggg==\";\n\ndescribe(\"ArcGisFeatureProvider\", () => {\n const sandbox = sinon.createSandbox();\n let fetchStub: any;\n\n beforeEach(async () => {\n // Make sure no call to fetch is made, other it creates leaks\n fetchStub = sandbox.stub((ArcGISImageryProvider.prototype as any), \"fetch\");\n });\n\n afterEach(async () => {\n sandbox.restore();\n });\n\n it(\"should initialize with valid data\", async () => {\n\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\n return {accessTokenRequired: false, content:NewYorkDataset.serviceCapabilities};\n });\n\n sandbox.stub(ArcGisFeatureProvider.prototype, \"getLayerMetadata\" as any).callsFake(async function _(_layerId: unknown) {\n return NewYorkDataset.streetsLayerCapabilities;\n });\n\n const settings = ImageMapLayerSettings.fromJSON(esriFeatureSampleSource);\n const provider = new ArcGisFeatureProvider(settings);\n await provider.initialize();\n\n expect((provider as any)._minDepthFromLod).to.equals(11);\n expect((provider as any)._maxDepthFromLod).to.equals(22);\n });\n\n it(\"should not initialize with no service metadata\", async () => {\n\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\n return undefined;\n });\n\n const settings = ImageMapLayerSettings.fromJSON(esriFeatureSampleSource);\n const provider = new ArcGisFeatureProvider(settings);\n\n await expect(provider.initialize()).to.be.rejectedWith(ServerError);\n\n });\n\n it(\"should update status when invalid token error from service\", async () => {\n\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\n return {accessTokenRequired: false, content:{error: {code: 499}}};\n });\n\n const settings = ImageMapLayerSettings.fromJSON(esriFeatureSampleSource);\n const provider = new ArcGisFeatureProvider(settings);\n const raiseEventSpy = sandbox.spy(provider.onStatusChanged, \"raiseEvent\");\n await provider.initialize();\n\n expect(provider.status).to.equals(MapLayerImageryProviderStatus.RequireAuth);\n expect(raiseEventSpy.calledOnceWith(provider)).to.be.true;\n });\n\n it(\"should throw query capability not supported\", async () => {\n\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\n return {accessTokenRequired: false, content:{capabilities: \"Test\"}};\n });\n\n const settings = ImageMapLayerSettings.fromJSON(esriFeatureSampleSource);\n const provider = new ArcGisFeatureProvider(settings);\n await expect(provider.initialize()).to.be.rejectedWith(ServerError);\n });\n\n it(\"should pick the first visible sub-layer when multiple visible sub-layers\", async () => {\n\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\n return {accessTokenRequired: false, content: {capabilities: \"Query\"}};\n });\n\n const settings = ImageMapLayerSettings.fromJSON({\n ...esriFeatureSampleSource,\n subLayers: [{id: 0, name: \"layer1\", visible:true}, {id:2, name: \"layer2\", visible:true}]}\n );\n const provider = new ArcGisFeatureProvider(settings);\n (provider as any)._format = \"JSON\";\n await provider.initialize();\n expect((provider as any)._layerId ).to.equals(settings.subLayers[0].id);\n });\n\n it(\"should pick sub-layers from service metadata if none provided on layer settings\", async () => {\n\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\n return {accessTokenRequired: false, content: {capabilities: \"Query\",\n layers: [\n {\n id : 0,\n\n },\n {\n id : 1,\n },\n ]},\n };\n });\n\n sandbox.stub((ArcGisFeatureProvider.prototype as any), \"getLayerMetadata\").callsFake(async function (id: unknown) {\n if (id === 1 ) {\n return {defaultVisibility:true};\n }\n return undefined;\n });\n\n const settings = ImageMapLayerSettings.fromJSON(esriFeatureSampleSource);\n const provider = new ArcGisFeatureProvider(settings);\n (provider as any)._format = \"JSON\";\n await provider.initialize();\n expect((provider as any)._layerId ).to.equals(1);\n expect((provider as any)._layerMetadata ).to.eql({defaultVisibility:true});\n });\n\n it(\"should throw error if no layers in capabilities\", async () => {\n\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\n return {accessTokenRequired: false, content: {capabilities: \"Query\", layers: []}};\n });\n\n const settings = ImageMapLayerSettings.fromJSON(esriFeatureSampleSource);\n const provider = new ArcGisFeatureProvider(settings);\n await expect(provider.initialize()).to.be.rejectedWith(ServerError);\n });\n\n it(\"should throw if no layer metadata from service\", async () => {\n\n const settings = ImageMapLayerSettings.fromJSON({\n ...esriFeatureSampleSource,\n subLayers: [{id: 0, name: \"layer1\", visible:true}, {id:2, name: \"layer2\", visible:true}]}\n );\n\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\n return {accessTokenRequired: false, content:{capabilities: \"Query\"}};\n });\n sandbox.stub((ArcGisFeatureProvider.prototype as any), \"getLayerMetadata\").callsFake(async function (_id: unknown) {\n return undefined;\n });\n\n const provider = new ArcGisFeatureProvider(settings);\n await expect(provider.initialize()).to.be.rejectedWith(ServerError);\n });\n\n it(\"should read supported supported format\", async () => {\n\n const settings = ImageMapLayerSettings.fromJSON({\n ...esriFeatureSampleSource,\n subLayers: [{id: 0, name: \"layer1\", visible:true}, {id:2, name: \"layer2\", visible:true}]}\n );\n\n let getLayerMetadataStub = sandbox.stub((ArcGisFeatureProvider.prototype as any), \"getLayerMetadata\").callsFake(async function (_id: unknown) {\n return {defaultVisibility:true, supportedQueryFormats:\"PBF, JSON\"};\n });\n\n const getServiceJsonStub = sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\n return {accessTokenRequired: false, content: {capabilities: \"Query\"}};\n });\n\n let provider = new ArcGisFeatureProvider(settings);\n await provider.initialize();\n expect(provider.format).to.equals(\"JSON\");\n\n // PBF requires 'supportsCoordinatesQuantization'\n getServiceJsonStub.restore();\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\n return {accessTokenRequired: false, content: { currentVersion: 11, capabilities: \"Query\"}};\n });\n getLayerMetadataStub.restore();\n getLayerMetadataStub = sandbox.stub((ArcGisFeatureProvider.prototype as any), \"getLayerMetadata\").callsFake(async function (_id: unknown) {\n return {defaultVisibility:true, supportsCoordinatesQuantization:true, supportedQueryFormats:\"PBF, JSON\"};\n });\n\n provider = new ArcGisFeatureProvider(settings);\n await provider.initialize();\n expect(provider.format).to.equals(\"PBF\");\n\n getLayerMetadataStub.restore();\n getLayerMetadataStub = sandbox.stub((ArcGisFeatureProvider.prototype as any), \"getLayerMetadata\").callsFake(async function (_id: unknown) {\n return {defaultVisibility:true, supportedQueryFormats:\"JSON\"};\n });\n\n getServiceJsonStub.restore();\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\n return {accessTokenRequired: false, content: { currentVersion: 10.91, capabilities: \"Query\", supportsCoordinatesQuantization:true}};\n });\n\n provider = new ArcGisFeatureProvider(settings);\n await provider.initialize();\n expect(provider.format).to.equals(\"JSON\");\n\n getLayerMetadataStub.restore();\n getLayerMetadataStub = sandbox.stub((ArcGisFeatureProvider.prototype as any), \"getLayerMetadata\").callsFake(async function (_id: unknown) {\n return {defaultVisibility:true, supportedQueryFormats:\"JSON\"};\n });\n\n provider = new ArcGisFeatureProvider(settings);\n await provider.initialize();\n expect(provider.format).to.equals(\"JSON\");\n\n getLayerMetadataStub.restore();\n getLayerMetadataStub = sandbox.stub((ArcGisFeatureProvider.prototype as any), \"getLayerMetadata\").callsFake(async function (_id: unknown) {\n return {defaultVisibility:true, supportedQueryFormats:\"\"};\n });\n\n provider = new ArcGisFeatureProvider(settings);\n await expect(provider.initialize()).to.be.rejectedWith(ServerError);\n });\n\n it(\"should compute minLod/maxLod\", async () => {\n\n const settings = ImageMapLayerSettings.fromJSON({\n ...esriFeatureSampleSource,\n subLayers: [{id: 0, name: \"layer1\", visible:true}, {id:2, name: \"layer2\", visible:true}]}\n );\n\n sandbox.stub((ArcGisFeatureProvider.prototype as any), \"getLayerMetadata\").callsFake(async function (_id: unknown) {\n return {\n defaultVisibility:true,\n supportedQueryFormats:\"PBF, JSON\",\n minScale: 600000,\n maxScale: 5000,\n };\n });\n\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\n return {accessTokenRequired: false, content:{capabilities: \"Query\"}};\n });\n\n const provider = new ArcGisFeatureProvider(settings);\n await provider.initialize();\n\n expect((provider as any)._minDepthFromLod ).to.equals(9);\n expect((provider as any)._maxDepthFromLod ).to.equals(15);\n });\n\n it(\"should construct empty url\", async () => {\n\n const settings = ImageMapLayerSettings.fromJSON(esriFeatureSampleSource);\n const provider = new ArcGisFeatureProvider(settings);\n const url = await provider.constructUrl(0,0,0);\n expect(url).to.equals(\"\");\n\n });\n\n it(\"should construct feature query url\", async () => {\n const settings = ImageMapLayerSettings.fromJSON({\n ...esriFeatureSampleSource,\n subLayers: [{id: 0, name: \"layer1\", visible:true}, {id:2, name: \"layer2\", visible:true}]}\n );\n\n let getLayerMetadataStub = sandbox.stub((ArcGisFeatureProvider.prototype as any), \"getLayerMetadata\").callsFake(async function (_id: unknown) {\n return {\n defaultVisibility: true,\n supportedQueryFormats:\"PBF, JSON\",\n };\n });\n\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\n return {accessTokenRequired: false, content:{currentVersion: 11, capabilities: \"Query\"}};\n });\n\n const provider = new ArcGisFeatureProvider(settings);\n await provider.initialize();\n\n let url = provider.constructFeatureUrl(0,0,0, \"PBF\");\n const extent = {\n xmin: -20037508.34,\n ymin: -20037508.33,\n xmax: 20037508.34,\n ymax: 20037508.34,\n spatialReference: {\n wkid: 102100,\n latestWkid: 3857,\n },\n };\n expect(url?.url).to.equals(`https://dummy.com/0/query?f=PBF&resultType=tile&maxRecordCountFactor=3&returnExceededLimitFeatures=false&outSR=102100&geometryType=esriGeometryEnvelope&geometry=%7B%22xmin%22%3A-20037508.34%2C%22ymin%22%3A-20037508.339999996%2C%22xmax%22%3A20037508.34%2C%22ymax%22%3A20037508.340000004%2C%22spatialReference%22%3A%7B%22wkid%22%3A102100%2C%22latestWkid%22%3A3857%7D%7D&units=esriSRUnit_Meter&inSR=102100`);\n expect(url?.envelope?.xmin).to.be.closeTo(extent.xmin, 0.01);\n expect(url?.envelope?.ymin).to.be.closeTo(extent.ymin, 0.01);\n expect(url?.envelope?.xmax).to.be.closeTo(extent.xmax, 0.01);\n expect(url?.envelope?.ymax).to.be.closeTo(extent.ymax, 0.01);\n expect(url?.envelope?.spatialReference.wkid).to.be.equal(102100);\n expect(url?.envelope?.spatialReference.latestWkid).to.be.equal(3857);\n\n // Now turn ON 'supportsCoordinatesQuantization' to ON\n getLayerMetadataStub.restore();\n getLayerMetadataStub = sandbox.stub((ArcGisFeatureProvider.prototype as any), \"getLayerMetadata\").callsFake(async function (_id: unknown) {\n return {\n defaultVisibility: true,\n supportedQueryFormats:\"PBF, JSON\",\n supportsCoordinatesQuantization: true,\n };\n });\n\n const provider2 = new ArcGisFeatureProvider(settings);\n await provider2.initialize();\n url = provider2.constructFeatureUrl(0,0,0, \"PBF\");\n expect(url?.url).to.equals(`https://dummy.com/0/query?f=PBF&resultType=tile&maxRecordCountFactor=3&returnExceededLimitFeatures=false&outSR=102100&geometryType=esriGeometryEnvelope&geometry=%7B%22xmin%22%3A-20037508.34%2C%22ymin%22%3A-20037508.339999996%2C%22xmax%22%3A20037508.34%2C%22ymax%22%3A20037508.340000004%2C%22spatialReference%22%3A%7B%22wkid%22%3A102100%2C%22latestWkid%22%3A3857%7D%7D&units=esriSRUnit_Meter&inSR=102100&quantizationParameters=%7B%22mode%22%3A%22view%22%2C%22originPosition%22%3A%22upperLeft%22%2C%22tolerance%22%3A78271.516953125%2C%22extent%22%3A%7B%22xmin%22%3A-20037508.34%2C%22ymin%22%3A-20037508.339999996%2C%22xmax%22%3A20037508.34%2C%22ymax%22%3A20037508.340000004%2C%22spatialReference%22%3A%7B%22wkid%22%3A102100%2C%22latestWkid%22%3A3857%7D%7D%7D`);\n expect(url?.envelope?.xmin).to.be.closeTo(extent.xmin, 0.01);\n expect(url?.envelope?.ymin).to.be.closeTo(extent.ymin, 0.01);\n expect(url?.envelope?.xmax).to.be.closeTo(extent.xmax, 0.01);\n expect(url?.envelope?.ymax).to.be.closeTo(extent.ymax, 0.01);\n expect(url?.envelope?.spatialReference.wkid).to.be.equal(extent.spatialReference.wkid);\n expect(url?.envelope?.spatialReference.latestWkid).to.be.equal(extent.spatialReference.latestWkid);\n\n // Test passing an override geometry\n const overrideGeom: ArcGisGeometry = {\n type: \"esriGeometryEnvelope\",\n geom: {\n xmin: -50,\n ymin: -50,\n xmax: 50,\n ymax: 50,\n spatialReference: {\n wkid: 102100,\n latestWkid: 3857,\n },\n },\n };\n const provider3 = new ArcGisFeatureProvider(settings);\n await provider3.initialize();\n url = provider3.constructFeatureUrl(0,0,0, \"PBF\", overrideGeom);\n expect(url?.url).to.equals(`https://dummy.com/0/query?f=PBF&resultType=tile&maxRecordCountFactor=3&returnExceededLimitFeatures=false&outSR=102100&geometryType=esriGeometryEnvelope&geometry=%7B%22xmin%22%3A-50%2C%22ymin%22%3A-50%2C%22xmax%22%3A50%2C%22ymax%22%3A50%2C%22spatialReference%22%3A%7B%22wkid%22%3A102100%2C%22latestWkid%22%3A3857%7D%7D&units=esriSRUnit_Meter&inSR=102100&quantizationParameters=%7B%22mode%22%3A%22view%22%2C%22originPosition%22%3A%22upperLeft%22%2C%22tolerance%22%3A78271.516953125%2C%22extent%22%3A%7B%22xmin%22%3A-20037508.34%2C%22ymin%22%3A-20037508.339999996%2C%22xmax%22%3A20037508.34%2C%22ymax%22%3A20037508.340000004%2C%22spatialReference%22%3A%7B%22wkid%22%3A102100%2C%22latestWkid%22%3A3857%7D%7D%7D`);\n expect(url?.envelope?.xmin).to.be.closeTo((overrideGeom.geom as ArcGisExtent).xmin, 0.01);\n expect(url?.envelope?.ymin).to.be.closeTo((overrideGeom.geom as ArcGisExtent).ymin, 0.01);\n expect(url?.envelope?.xmax).to.be.closeTo((overrideGeom.geom as ArcGisExtent).xmax, 0.01);\n expect(url?.envelope?.ymax).to.be.closeTo((overrideGeom.geom as ArcGisExtent).ymax, 0.01);\n expect(url?.envelope?.spatialReference.wkid).to.be.equal(overrideGeom.geom.spatialReference.wkid);\n expect(url?.envelope?.spatialReference.latestWkid).to.be.equal(overrideGeom.geom.spatialReference.latestWkid);\n\n // Now test with a different tolerance value\n url = provider3.constructFeatureUrl(0,0,0, \"PBF\", overrideGeom, undefined, 10);\n expect(url?.url).to.equals(`https://dummy.com/0/query?f=PBF&resultType=tile&maxRecordCountFactor=3&returnExceededLimitFeatures=false&outSR=102100&geometryType=esriGeometryEnvelope&geometry=%7B%22xmin%22%3A-50%2C%22ymin%22%3A-50%2C%22xmax%22%3A50%2C%22ymax%22%3A50%2C%22spatialReference%22%3A%7B%22wkid%22%3A102100%2C%22latestWkid%22%3A3857%7D%7D&units=esriSRUnit_Meter&inSR=102100&quantizationParameters=%7B%22mode%22%3A%22view%22%2C%22originPosition%22%3A%22upperLeft%22%2C%22tolerance%22%3A78271.516953125%2C%22extent%22%3A%7B%22xmin%22%3A-20037508.34%2C%22ymin%22%3A-20037508.339999996%2C%22xmax%22%3A20037508.34%2C%22ymax%22%3A20037508.340000004%2C%22spatialReference%22%3A%7B%22wkid%22%3A102100%2C%22latestWkid%22%3A3857%7D%7D%7D&distance=782715.16953125`);\n expect(url?.envelope?.xmin).to.be.closeTo((overrideGeom.geom as ArcGisExtent).xmin, 0.01);\n expect(url?.envelope?.ymin).to.be.closeTo((overrideGeom.geom as ArcGisExtent).ymin, 0.01);\n expect(url?.envelope?.xmax).to.be.closeTo((overrideGeom.geom as ArcGisExtent).xmax, 0.01);\n expect(url?.envelope?.ymax).to.be.closeTo((overrideGeom.geom as ArcGisExtent).ymax, 0.01);\n expect(url?.envelope?.spatialReference.wkid).to.be.equal(overrideGeom.geom.spatialReference.wkid);\n expect(url?.envelope?.spatialReference.latestWkid).to.be.equal(overrideGeom.geom.spatialReference.latestWkid);\n\n });\n\n it(\"should log error when getFeatureInfo cannot be performed\", async () => {\n\n const settings = ImageMapLayerSettings.fromJSON({\n ...esriFeatureSampleSource,\n subLayers: [{id: 0, name: \"layer1\", visible:true}, {id:2, name: \"layer2\", visible:true}]}\n );\n\n sandbox.stub((ArcGisFeatureProvider.prototype as any), \"getLayerMetadata\").callsFake(async function (_id: unknown) {\n return {\n defaultVisibility:true,\n supportedQueryFormats:\"PBF, JSON\",\n minScale: 600000,\n maxScale: 5000,\n };\n });\n\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\n return {accessTokenRequired: false, content:{currentVersion: 11, capabilities: \"Query\"}};\n });\n sandbox.stub(ArcGisFeatureProvider.prototype, \"constructFeatureUrl\").callsFake(function _(_row: number, _column: number, _zoomLevel: number, _format: ArcGisFeatureFormat, _geomOverride?: ArcGisGeometry, _outFields?: string, _tolerance?: number, _returnGeometry?: boolean) {\n return undefined;\n });\n\n const provider = new ArcGisFeatureProvider(settings);\n await provider.initialize();\n const featureInfos: MapLayerFeatureInfo[] = [];\n const logErrorSpy = sandbox.spy(Logger, \"logError\");\n await provider.getFeatureInfo(featureInfos, new QuadId(0, 0, 0), Cartographic.fromDegrees({latitude: 46, longitude:-71}), (undefined as unknown) as ImageryMapTileTree);\n expect(featureInfos.length).to.equals(0);\n expect(logErrorSpy.called).to.be.true;\n\n });\n\n it(\"should process data in getFeatureInfo\", async () => {\n\n const settings = ImageMapLayerSettings.fromJSON({\n ...esriFeatureSampleSource,\n subLayers: [{id: 0, name: \"layer1\", visible:true}, {id:2, name: \"layer2\", visible:true}]}\n );\n\n sandbox.stub((ArcGisFeatureProvider.prototype as any), \"getLayerMetadata\").callsFake(async function (_id: unknown) {\n return {\n defaultVisibility:true,\n supportedQueryFormats:\"PBF, JSON\",\n supportsCoordinatesQuantization:true,\n minScale: 600000,\n maxScale: 5000,\n };\n });\n\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\n return {accessTokenRequired: false, content:{currentVersion: 11, capabilities: \"Query\"}};\n });\n fetchStub.restore(); // fetch is always stubbed by default, restore and provide our own stub\n sandbox.stub((ArcGISImageryProvider.prototype as any), \"fetch\").callsFake(async function _(_url: unknown, _options?: unknown) {\n const test = {\n headers: { \"content-type\" : \"pbf\"},\n arrayBuffer: async () => {\n const byteArray = Base64EncodedString.toUint8Array(PhillyLandmarksDataset.phillyTransportationGetFeatureInfoQueryEncodedPbf);\n return Promise.resolve(byteArray ? ByteStream.fromUint8Array(byteArray).arrayBuffer : undefined);\n },\n status: 200,\n } as unknown; // By using unknown type, I can define parts of Response I really need\n return (test as Response );\n });\n\n const provider = new ArcGisFeatureProvider(settings);\n await provider.initialize();\n const featureInfos: MapLayerFeatureInfo[] = [];\n const logErrorSpy = sandbox.spy(Logger, \"logError\");\n await provider.getFeatureInfo(featureInfos, new QuadId(0, 0, 0), Cartographic.fromDegrees({latitude: 46, longitude:-71}), (undefined as unknown) as ImageryMapTileTree);\n expect(featureInfos.length).to.equals(1);\n expect(logErrorSpy.calledOnce).to.be.false;\n\n });\n\n it(\"should log error when exceed transfert limit\", async () => {\n\n const settings = ImageMapLayerSettings.fromJSON({\n ...esriFeatureSampleSource,\n subLayers: [{id: 0, name: \"layer1\", visible:true}, {id:2, name: \"layer2\", visible:true}]}\n );\n sandbox.stub((ArcGisFeatureProvider.prototype as any), \"getLayerMetadata\").callsFake(async function (_id: unknown) {\n return {\n defaultVisibility:true,\n supportedQueryFormats:\"PBF, JSON\",\n minScale: 600000,\n maxScale: 5000,\n };\n });\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\n return {accessTokenRequired: false, content:{capabilities: \"Query\"}};\n });\n\n sandbox.stub((ArcGisFeatureResponse.prototype as any), \"getResponseData\").callsFake(async function _() {\n return {exceedTransferLimit: true, data:undefined};\n });\n\n const provider = new ArcGisFeatureProvider(settings);\n await provider.initialize();\n const featureInfos: MapLayerFeatureInfo[] = [];\n const logErrorSpy = sandbox.spy(Logger, \"logError\");\n await provider.getFeatureInfo(featureInfos, new QuadId(0, 0, 0), Cartographic.fromDegrees({latitude: 46, longitude:-71}), (undefined as unknown) as ImageryMapTileTree);\n expect(featureInfos.length).to.equals(0);\n expect(logErrorSpy.calledOnce).to.be.true;\n\n });\n\n it(\"should log error when exceed exception thrown limit\", async () => {\n\n const settings = ImageMapLayerSettings.fromJSON({\n ...esriFeatureSampleSource,\n subLayers: [{id: 0, name: \"layer1\", visible:true}, {id:2, name: \"layer2\", visible:true}]}\n );\n sandbox.stub((ArcGisFeatureProvider.prototype as any), \"getLayerMetadata\").callsFake(async function (_id: unknown) {\n return {\n defaultVisibility:true,\n supportedQueryFormats:\"PBF, JSON\",\n minScale: 600000,\n maxScale: 5000,\n };\n });\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\n return {accessTokenRequired: false, content:{capabilities: \"Query\"}};\n });\n\n sandbox.stub((ArcGisFeatureResponse.prototype as any), \"getResponseData\").callsFake(async function _() {\n throw new Error();\n });\n\n const provider = new ArcGisFeatureProvider(settings);\n await provider.initialize();\n const featureInfos: MapLayerFeatureInfo[] = [];\n const logErrorSpy = sandbox.spy(Logger, \"logError\");\n await provider.getFeatureInfo(featureInfos, new QuadId(0, 0, 0), Cartographic.fromDegrees({latitude: 46, longitude:-71}), (undefined as unknown) as ImageryMapTileTree);\n expect(featureInfos.length).to.equals(0);\n expect(logErrorSpy.calledOnce).to.be.true;\n\n });\n\n it(\"should debug Feature Geom\", async () => {\n\n const settings = ImageMapLayerSettings.fromJSON({\n ...esriFeatureSampleSource,\n subLayers: [{id: 0, name: \"layer1\", visible:true}, {id:2, name: \"layer2\", visible:true}]}\n );\n sandbox.stub((ArcGisFeatureProvider.prototype as any), \"getLayerMetadata\").callsFake(async function (_id: unknown) {\n return {\n defaultVisibility:true,\n supportedQueryFormats:\"PBF, JSON\",\n minScale: 600000,\n maxScale: 5000,\n };\n });\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\n return {accessTokenRequired: false, content:{capabilities: \"Query\"}};\n });\n\n sandbox.stub((ArcGisFeatureResponse.prototype as any), \"getResponseData\").callsFake(async function _() {\n return {data: {\n toObject: () => undefined,\n }};\n });\n\n const provider = new ArcGisFeatureProvider(settings);\n await provider.initialize();\n (provider as any)._debugFeatureGeom = true;\n const featureInfos: MapLayerFeatureInfo[] = [];\n const logInfoSpy = sandbox.spy(Logger, \"logInfo\");\n await provider.getFeatureInfo(featureInfos, new QuadId(0, 0, 0), Cartographic.fromDegrees({latitude: 46, longitude:-71}), (undefined as unknown) as ImageryMapTileTree);\n expect(featureInfos.length).to.equals(0);\n expect(logInfoSpy.callCount).to.equals(2);\n\n });\n\n it(\"should compute computeTileWorld2CanvasTransform\", async () => {\n const settings = ImageMapLayerSettings.fromJSON({\n ...esriFeatureSampleSource,\n subLayers: [{id: 0, name: \"layer1\", visible:true}, {id:2, name: \"layer2\", visible:true}]}\n );\n const worldSize = 100;\n const canvasSize = 10;\n\n const provider = new ArcGisFeatureProvider(settings);\n const getEPSG3857ExtentStub = sandbox.stub(ArcGisFeatureProvider.prototype, \"getEPSG3857Extent\").callsFake(function (_row: number, _column: number, _zoomLevel: number) {\n return { left:0, right:worldSize, bottom:0, top:worldSize };\n });\n\n sandbox.stub(provider, \"tileSize\").get(function () {\n return canvasSize; // return a size of 10 to simplicity\n });\n let transform = ((provider as any).computeTileWorld2CanvasTransform(0,0,0) as Transform | undefined);\n let worldPoint = Point3d.createFrom({x: worldSize*0.5, y:worldSize*0.5, z:0});\n let transformedPoint = transform?.multiplyPoint3d(worldPoint);\n\n // Make sure center point remains in the center\n expect(transformedPoint).to.not.undefined;\n expect(transformedPoint!.x).to.equals(canvasSize*0.5);\n expect(transformedPoint!.y).to.equals(canvasSize*0.5);\n expect(transformedPoint!.z).to.equals(0);\n\n // Check that y-axis get flipped\n worldPoint = Point3d.createFrom({x: 0, y:10, z:0});\n transformedPoint = transform?.multiplyPoint3d(worldPoint);\n expect(transformedPoint!.x).to.equals(0);\n expect(transformedPoint!.y).to.equals(9);\n expect(transformedPoint!.z).to.equals(0);\n\n // Now check translation has been applied (origin shift)\n getEPSG3857ExtentStub.restore();\n sandbox.stub(ArcGisFeatureProvider.prototype, \"getEPSG3857Extent\").callsFake(function (_row: number, _column: number, _zoomLevel: number) {\n return { left:worldSize, right:worldSize*2, bottom:worldSize, top:worldSize*2 };\n });\n worldPoint = Point3d.createFrom({x: worldSize, y:worldSize, z:0});\n transform = ((provider as any).computeTileWorld2CanvasTransform(0,0,0) as Transform | undefined);\n transformedPoint = transform?.multiplyPoint3d(worldPoint);\n expect(transformedPoint).to.not.undefined;\n expect(transformedPoint!.x).to.equals(0);\n expect(transformedPoint!.y).to.equals(10);\n expect(transformedPoint!.z).to.equals(0);\n\n });\n\n it(\"should loadTile from PBF request\", async () => {\n const settings = ImageMapLayerSettings.fromJSON({\n ...esriFeatureSampleSource,\n subLayers: [{id: 0, name: \"layer1\", visible:true}, {id:2, name: \"layer2\", visible:true}]}\n );\n sandbox.stub((ArcGisFeatureProvider.prototype as any), \"getLayerMetadata\").callsFake(async function (_id: unknown) {\n return {\n defaultVisibility:true,\n supportedQueryFormats:\"PBF\",\n supportsCoordinatesQuantization:true,\n };\n });\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\n return {accessTokenRequired: false, content:{currentVersion: 11, capabilities: \"Query\"}};\n });\n sandbox.stub(HTMLCanvasElement.prototype, \"getContext\").callsFake( function _(_contextId: any, _options?: any) {\n return {} as RenderingContext;\n });\n\n sandbox.stub(HTMLCanvasElement.prototype, \"toDataURL\").callsFake( function _(_type?: string, _quality?: any) {\n return `data:image/png;base64,${pngTransparent1x1}`;\n });\n\n const providerStub = sandbox.stub((ArcGisFeatureProvider.prototype as any), \"fetchTile\").callsFake(async function _() {\n return new ArcGisFeatureResponse(\"PBF\", Promise.resolve({} as Response));\n });\n\n sandbox.stub((ArcGisFeatureResponse.prototype as any), \"getResponseData\").callsFake(async function _() {\n return {\n exceedTransferLimit: false,\n data: {toObject: () => undefined},\n };\n });\n\n // toDataURL string;\n const readAndRenderSpy = sandbox.spy(ArcGisFeaturePBF.prototype, \"readAndRender\");\n const computeTransfoSpy = sandbox.spy(ArcGisFeatureProvider.prototype as any, \"computeTileWorld2CanvasTransform\");\n const provider = new ArcGisFeatureProvider(settings);\n await provider.initialize();\n const tileData = await provider.loadTile(0,0,0);\n expect (tileData).to.not.undefined;\n expect (tileData?.data instanceof Uint8Array).to.be.true;\n expect(tileData?.data).to.eqls(base64StringToUint8Array(pngTransparent1x1));\n expect(tileData?.format).to.equals(ImageSourceFormat.Png);\n expect (providerStub.calledOnce).to.be.true;\n expect (readAndRenderSpy.calledOnce).to.be.true;\n expect (computeTransfoSpy.calledOnce).to.be.false; // Should not be called since we have supportsCoordinatesQuantization in layer metadata\n\n });\n\n it(\"should loadTile from JSON request\", async () => {\n const settings = ImageMapLayerSettings.fromJSON({\n ...esriFeatureSampleSource,\n subLayers: [{id: 0, name: \"layer1\", visible:true}, {id:2, name: \"layer2\", visible:true}]}\n );\n sandbox.stub((ArcGisFeatureProvider.prototype as any), \"getLayerMetadata\").callsFake(async function (_id: unknown) {\n return {\n defaultVisibility:true,\n supportedQueryFormats:\"JSON\",\n };\n });\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\n return {accessTokenRequired: false, content:{capabilities: \"Query\"}};\n });\n sandbox.stub(HTMLCanvasElement.prototype, \"getContext\").callsFake( function _(_contextId: any, _options?: any) {\n return {} as RenderingContext;\n });\n\n sandbox.stub(HTMLCanvasElement.prototype, \"toDataURL\").callsFake( function _(_type?: string, _quality?: any) {\n return `data:image/png;base64,${pngTransparent1x1}`;\n });\n\n const providerStub = sandbox.stub((ArcGisFeatureProvider.prototype as any), \"fetchTile\").callsFake(async function _() {\n return new ArcGisFeatureResponse(\"JSON\", Promise.resolve({} as Response));\n });\n\n sandbox.stub((ArcGisFeatureResponse.prototype as any), \"getResponseData\").callsFake(async function _() {\n return {\n exceedTransferLimit: false,\n data: {toObject: () => undefined},\n };\n });\n\n const readAndRenderSpy = sandbox.spy(ArcGisFeatureJSON.prototype, \"readAndRender\");\n const computeTransfoSpy = sandbox.spy(ArcGisFeatureProvider.prototype as any, \"computeTileWorld2CanvasTransform\");\n const provider = new ArcGisFeatureProvider(settings);\n await provider.initialize();\n const tileData = await provider.loadTile(0,0,0);\n expect (tileData).to.not.undefined;\n expect (tileData?.data instanceof Uint8Array).to.be.true;\n expect(tileData?.data).to.eqls(base64StringToUint8Array(pngTransparent1x1));\n expect(tileData?.format).to.equals(ImageSourceFormat.Png);\n expect (providerStub.calledOnce).to.be.true;\n expect (readAndRenderSpy.calledOnce).to.be.true;\n expect (computeTransfoSpy.calledOnce).to.be.true; // Should be called since we dont have _supportsCoordinatesQuantization in layer metadata\n });\n\n it(\"should make sub request if loadtile request return 'exceedTransferLimit'\", async () => {\n const settings = ImageMapLayerSettings.fromJSON({\n ...esriFeatureSampleSource,\n subLayers: [{id: 0, name: \"layer1\", visible:true}, {id:2, name: \"layer2\", visible:true}]}\n );\n sandbox.stub((ArcGisFeatureProvider.prototype as any), \"getLayerMetadata\").callsFake(async function (_id: unknown) {\n return {\n defaultVisibility:true,\n supportedQueryFormats:\"JSON\",\n };\n });\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\n return {accessTokenRequired: false, content:{capabilities: \"Query\"}};\n });\n sandbox.stub(HTMLCanvasElement.prototype, \"getContext\").callsFake( function _(_contextId: any, _options?: any) {\n return {} as RenderingContext;\n });\n\n sandbox.stub(HTMLCanvasElement.prototype, \"toDataURL\").callsFake( function _(_type?: string, _quality?: any) {\n return `data:image/png;base64,${pngTransparent1x1}`;\n });\n\n const extentSize = 100;\n const fetchTileStub = sandbox.stub((ArcGisFeatureProvider.prototype as any), \"fetchTile\").callsFake(async function _() {\n const envelope: ArcGisExtent = {\n xmin : 0,\n ymin : 0,\n xmax : extentSize,\n ymax : extentSize,\n spatialReference : {\n wkid : 102100,\n latestWkid : 3857,\n }};\n return new ArcGisFeatureResponse(\"JSON\", Promise.resolve({} as Response), envelope);\n });\n\n let firstCall = true;\n sandbox.stub((ArcGisFeatureResponse.prototype as any), \"getResponseData\").callsFake(async function _() {\n\n const exceed = firstCall === true;\n firstCall = false;\n return {\n exceedTransferLimit: exceed,\n data: {toObject: () => undefined},\n };\n });\n\n const readAndRenderSpy = sandbox.spy(ArcGisFeatureJSON.prototype, \"readAndRender\");\n const provider = new ArcGisFeatureProvider(settings);\n await provider.initialize();\n await provider.loadTile(0,0,0);\n\n // We should have 5 calls:\n // Call #1 : initial call for 0,0,0 and it returns 'exceedTransferLimit'\n // Calls #2-5: Four calls which represent a call for each sub-envelope (initial extent divided by 4)\n expect (fetchTileStub.getCalls().length).to.equals(5);\n expect (fetchTileStub.getCalls()[1].args[3]).to.eqls( {\n xmin : 0, ymin : 0, xmax : extentSize*0.5, ymax : extentSize*0.5,\n spatialReference : { wkid : 102100, latestWkid : 3857,\n }});\n expect (fetchTileStub.getCalls()[2].args[3]).to.eqls( {\n xmin : 0, ymin : extentSize*0.5, xmax : extentSize*0.5, ymax : extentSize,\n spatialReference : { wkid : 102100, latestWkid : 3857,\n }});\n expect (fetchTileStub.getCalls()[3].args[3]).to.eqls( {\n xmin : extentSize*0.5, ymin : 0, xmax : extentSize, ymax : extentSize*0.5,\n spatialReference : { wkid : 102100, latestWkid : 3857,\n }});\n expect (fetchTileStub.getCalls()[4].args[3]).to.eqls( {\n xmin : extentSize*0.5, ymin : extentSize*0.5, xmax : extentSize, ymax : extentSize,\n spatialReference : { wkid : 102100, latestWkid : 3857,\n }});\n expect (readAndRenderSpy.getCalls().length).to.equals(4);\n });\n\n it(\"fetchTile should return undefined when to format defined\", async () => {\n\n const settings = ImageMapLayerSettings.fromJSON({\n ...esriFeatureSampleSource,\n subLayers: [{id: 0, name: \"layer1\", visible:true}, {id:2, name: \"layer2\", visible:true}]}\n );\n\n const provider = new ArcGisFeatureProvider(settings);\n // make a first request with init, should return undefined because of missing format\n const tileData = await (provider as any).fetchTile(0,0,0);\n expect(tileData).to.be.undefined;\n });\n\n it(\"fetchTile should call fetch with the proper URL\", async () => {\n\n const settings = ImageMapLayerSettings.fromJSON({\n ...esriFeatureSampleSource,\n subLayers: [{id: 0, name: \"layer1\", visible:true}, {id:2, name: \"layer2\", visible:true}]}\n );\n\n sandbox.stub((ArcGisFeatureProvider.prototype as any), \"getLayerMetadata\").callsFake(async function (_id: unknown) {\n return {\n defaultVisibility:true,\n supportedQueryFormats:\"JSON\",\n };\n });\n sandbox.stub(ArcGisUtilities, \"getServiceJson\").callsFake(async function _(_url: string, _formatId: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _requireToken?: boolean) {\n return {accessTokenRequired: false, content:{capabilities: \"Query\"}};\n });\n\n sandbox.stub(ArcGisFeatureProvider.prototype, \"constructFeatureUrl\").callsFake(function _(_row: number, _column: number, _zoomLevel: number, _format: ArcGisFeatureFormat, _geomOverride?: ArcGisGeometry, _outFields?: string, _tolerance?: number, _returnGeometry?: boolean) {\n return {url: settings.url};\n });\n\n const provider = new ArcGisFeatureProvider(settings);\n await provider.initialize();\n const response = await (provider as any).fetchTile(0,0,0);\n expect(response).to.not.undefined;\n expect(fetchStub.calledOnce).to.be.true;\n const test1 = fetchStub.getCall(0).firstArg;\n expect(test1.toString()).to.equals(new URL(settings.url).toString());\n\n });\n\n});\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ArcGisFeatureQuery.test.js","sourceRoot":"","sources":["../../../../src/test/ArcGisFeature/ArcGisFeatureQuery.test.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\nimport { expect } from \"chai\";\r\nimport * as sinon from \"sinon\";\r\nimport { ArcGisExtent, ArcGisFeatureQuery } from \"../../ArcGisFeature/ArcGisFeatureQuery\";\r\n\r\ndescribe(\"ArcGisFeatureQuery\", () => {\r\n\r\n const sandbox = sinon.createSandbox();\r\n\r\n beforeEach(async () => {\r\n });\r\n\r\n afterEach(async () => {\r\n sandbox.restore();\r\n });\r\n\r\n it(\"should not apply different switches if not needed\", async () => {\r\n\r\n const query = new ArcGisFeatureQuery(\"https://test.com/rest/\",0, \"JSON\", 3857);\r\n const queryUrl = query.toString();\r\n expect(queryUrl).to.not.contains(\"resultRecordCount\");\r\n expect(queryUrl).to.not.contains(\"resultOffset\");\r\n expect(queryUrl).to.not.contains(\"returnGeometry\");\r\n expect(queryUrl).to.not.contains(\"resultType\");\r\n expect(queryUrl).to.not.contains(\"maxRecordCountFactor\");\r\n expect(queryUrl).to.not.contains(\"returnExceededLimitFeatures\");\r\n expect(queryUrl).to.not.contains(\"geometryType\");\r\n expect(queryUrl).to.not.contains(\"geometry\");\r\n expect(queryUrl).to.not.contains(\"inSR\");\r\n expect(queryUrl).to.not.contains(\"inSR\");\r\n expect(queryUrl).to.contains(\"where=1%3D1\");\r\n });\r\n\r\n it(\"should not apply different switches if not needed\", async () => {\r\n\r\n const extentSize = 100;\r\n const fakeEnvelope: ArcGisExtent = {\r\n xmin : 0,\r\n ymin : 0,\r\n xmax : extentSize,\r\n ymax : extentSize,\r\n spatialReference : {\r\n wkid : 102100,\r\n latestWkid : 3857,\r\n }};\r\n const query = new ArcGisFeatureQuery(\"https://test.com/rest/\",0, \"JSON\", 3857,\r\n {\r\n resultRecordCount: 10,\r\n resultOffset: 11,\r\n returnGeometry: true,\r\n geometry: {type:\"esriGeometryEnvelope\", geom:fakeEnvelope},\r\n geometryType: \"esriGeometryEnvelope\",\r\n spatialRel: \"esriSpatialRelIntersects\",\r\n resultType: \"tile\",\r\n maxRecordCountFactor: 1000,\r\n returnExceededLimitFeatures: false,\r\n quantizationParameters: {\r\n mode: \"view\",\r\n originPosition: \"upperLeft\",\r\n tolerance: 10,\r\n extent: fakeEnvelope,\r\n },\r\n outFields: \"test\",\r\n distance: 100,\r\n });\r\n const queryUrl = query.toString();\r\n expect(queryUrl).to.contains(\"resultRecordCount=10\");\r\n expect(queryUrl).to.contains(\"resultOffset=11\");\r\n expect(queryUrl).to.contains(\"returnGeometry=true\");\r\n expect(queryUrl).to.contains(`resultType=tile`);\r\n expect(queryUrl).to.contains(\"maxRecordCountFactor=1000\");\r\n expect(queryUrl).to.contains(\"returnExceededLimitFeatures=false\");\r\n expect(queryUrl).to.contains(\"geometryType=esriGeometryEnvelope\");\r\n expect(queryUrl).to.contains(`geometry=%7B%22xmin%22%3A0%2C%22ymin%22%3A0%2C%22xmax%22%3A100%2C%22ymax%22%3A100%2C%22spatialReference%22%3A%7B%22wkid%22%3A102100%2C%22latestWkid%22%3A3857%7D%7D`);\r\n expect(queryUrl).to.contains(\"inSR=102100\");\r\n expect(queryUrl).to.contains(\"outFields=test\");\r\n expect(queryUrl).to.contains(\"distance=100\");\r\n expect(queryUrl).to.contains(\"units=esriSRUnit_Meter\");\r\n\r\n });\r\n\r\n it(\"should not include geometry only when applicable\", async () => {\r\n\r\n const extentSize = 100;\r\n const fakeEnvelope: ArcGisExtent = {\r\n xmin : 0,\r\n ymin : 0,\r\n xmax : extentSize,\r\n ymax : extentSize,\r\n spatialReference : {\r\n wkid : 102100,\r\n latestWkid : 3857,\r\n }};\r\n const query = new ArcGisFeatureQuery(\"https://test.com/rest/\",0, \"JSON\", 3857,\r\n {\r\n spatialRel: \"esriSpatialRelIntersects\",\r\n });\r\n\r\n let queryUrl = query.toString();\r\n expect(queryUrl).to.not.contains(\"geometryType=\");\r\n expect(queryUrl).to.not.contains(`geometry=`);\r\n expect(queryUrl).to.not.contains(\"inSR=\");\r\n\r\n query.spatialRel = undefined;\r\n query.geometry = {type:\"esriGeometryEnvelope\", geom:fakeEnvelope};\r\n queryUrl = query.toString();\r\n expect(queryUrl).to.contains(\"geometryType=esriGeometryEnvelope\");\r\n expect(queryUrl).to.contains(`geometry=%7B%22xmin%22%3A0%2C%22ymin%22%3A0%2C%22xmax%22%3A100%2C%22ymax%22%3A100%2C%22spatialReference%22%3A%7B%22wkid%22%3A102100%2C%22latestWkid%22%3A3857%7D%7D`);\r\n expect(queryUrl).to.contains(\"inSR=102100\");\r\n\r\n });\r\n\r\n});\r\n"]}
1
+ {"version":3,"file":"ArcGisFeatureQuery.test.js","sourceRoot":"","sources":["../../../../src/test/ArcGisFeature/ArcGisFeatureQuery.test.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\nimport { expect } from \"chai\";\nimport * as sinon from \"sinon\";\nimport { ArcGisExtent, ArcGisFeatureQuery } from \"../../ArcGisFeature/ArcGisFeatureQuery\";\n\ndescribe(\"ArcGisFeatureQuery\", () => {\n\n const sandbox = sinon.createSandbox();\n\n beforeEach(async () => {\n });\n\n afterEach(async () => {\n sandbox.restore();\n });\n\n it(\"should not apply different switches if not needed\", async () => {\n\n const query = new ArcGisFeatureQuery(\"https://test.com/rest/\",0, \"JSON\", 3857);\n const queryUrl = query.toString();\n expect(queryUrl).to.not.contains(\"resultRecordCount\");\n expect(queryUrl).to.not.contains(\"resultOffset\");\n expect(queryUrl).to.not.contains(\"returnGeometry\");\n expect(queryUrl).to.not.contains(\"resultType\");\n expect(queryUrl).to.not.contains(\"maxRecordCountFactor\");\n expect(queryUrl).to.not.contains(\"returnExceededLimitFeatures\");\n expect(queryUrl).to.not.contains(\"geometryType\");\n expect(queryUrl).to.not.contains(\"geometry\");\n expect(queryUrl).to.not.contains(\"inSR\");\n expect(queryUrl).to.not.contains(\"inSR\");\n expect(queryUrl).to.contains(\"where=1%3D1\");\n });\n\n it(\"should not apply different switches if not needed\", async () => {\n\n const extentSize = 100;\n const fakeEnvelope: ArcGisExtent = {\n xmin : 0,\n ymin : 0,\n xmax : extentSize,\n ymax : extentSize,\n spatialReference : {\n wkid : 102100,\n latestWkid : 3857,\n }};\n const query = new ArcGisFeatureQuery(\"https://test.com/rest/\",0, \"JSON\", 3857,\n {\n resultRecordCount: 10,\n resultOffset: 11,\n returnGeometry: true,\n geometry: {type:\"esriGeometryEnvelope\", geom:fakeEnvelope},\n geometryType: \"esriGeometryEnvelope\",\n spatialRel: \"esriSpatialRelIntersects\",\n resultType: \"tile\",\n maxRecordCountFactor: 1000,\n returnExceededLimitFeatures: false,\n quantizationParameters: {\n mode: \"view\",\n originPosition: \"upperLeft\",\n tolerance: 10,\n extent: fakeEnvelope,\n },\n outFields: \"test\",\n distance: 100,\n });\n const queryUrl = query.toString();\n expect(queryUrl).to.contains(\"resultRecordCount=10\");\n expect(queryUrl).to.contains(\"resultOffset=11\");\n expect(queryUrl).to.contains(\"returnGeometry=true\");\n expect(queryUrl).to.contains(`resultType=tile`);\n expect(queryUrl).to.contains(\"maxRecordCountFactor=1000\");\n expect(queryUrl).to.contains(\"returnExceededLimitFeatures=false\");\n expect(queryUrl).to.contains(\"geometryType=esriGeometryEnvelope\");\n expect(queryUrl).to.contains(`geometry=%7B%22xmin%22%3A0%2C%22ymin%22%3A0%2C%22xmax%22%3A100%2C%22ymax%22%3A100%2C%22spatialReference%22%3A%7B%22wkid%22%3A102100%2C%22latestWkid%22%3A3857%7D%7D`);\n expect(queryUrl).to.contains(\"inSR=102100\");\n expect(queryUrl).to.contains(\"outFields=test\");\n expect(queryUrl).to.contains(\"distance=100\");\n expect(queryUrl).to.contains(\"units=esriSRUnit_Meter\");\n\n });\n\n it(\"should not include geometry only when applicable\", async () => {\n\n const extentSize = 100;\n const fakeEnvelope: ArcGisExtent = {\n xmin : 0,\n ymin : 0,\n xmax : extentSize,\n ymax : extentSize,\n spatialReference : {\n wkid : 102100,\n latestWkid : 3857,\n }};\n const query = new ArcGisFeatureQuery(\"https://test.com/rest/\",0, \"JSON\", 3857,\n {\n spatialRel: \"esriSpatialRelIntersects\",\n });\n\n let queryUrl = query.toString();\n expect(queryUrl).to.not.contains(\"geometryType=\");\n expect(queryUrl).to.not.contains(`geometry=`);\n expect(queryUrl).to.not.contains(\"inSR=\");\n\n query.spatialRel = undefined;\n query.geometry = {type:\"esriGeometryEnvelope\", geom:fakeEnvelope};\n queryUrl = query.toString();\n expect(queryUrl).to.contains(\"geometryType=esriGeometryEnvelope\");\n expect(queryUrl).to.contains(`geometry=%7B%22xmin%22%3A0%2C%22ymin%22%3A0%2C%22xmax%22%3A100%2C%22ymax%22%3A100%2C%22spatialReference%22%3A%7B%22wkid%22%3A102100%2C%22latestWkid%22%3A3857%7D%7D`);\n expect(queryUrl).to.contains(\"inSR=102100\");\n\n });\n\n});\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ArcGisFeatureRenderer.test.js","sourceRoot":"","sources":["../../../../src/test/ArcGisFeature/ArcGisFeatureRenderer.test.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\nimport { expect } from \"chai\";\r\nimport * as sinon from \"sinon\";\r\nimport { fakeContext } from \"./Mocks\";\r\nimport { ArcGisSymbologyRenderer } from \"../../ArcGisFeature/ArcGisSymbologyRenderer\";\r\nimport { PhillyLandmarksDataset } from \"./PhillyLandmarksDataset\";\r\nimport { ArcGisFeatureRenderer } from \"../../ArcGisFeature/ArcGisFeatureRenderer\";\r\nimport { Point3d, Transform } from \"@itwin/core-geometry\";\r\n\r\ndescribe(\"ArcGisFeatureRenderer\", () => {\r\n\r\n const sandbox = sinon.createSandbox();\r\n\r\n let beginPathSpy: sinon.SinonSpy<[], void>;\r\n let moveToSpy: sinon.SinonSpy<[x: number, y: number], void>;\r\n let lineToSpy: sinon.SinonSpy<[x: number, y: number], void>;\r\n let strokeSpy: sinon.SinonSpy<[path: Path2D], void>;\r\n let fillSpy: sinon.SinonSpy<[path: Path2D, fillRule?: CanvasFillRule | undefined], void>;\r\n let closePathSpy: sinon.SinonSpy<[], void>;\r\n\r\n beforeEach(async () => {\r\n beginPathSpy = sandbox.spy(fakeContext, \"beginPath\");\r\n moveToSpy = sandbox.spy(fakeContext, \"moveTo\");\r\n lineToSpy = sandbox.spy(fakeContext, \"lineTo\");\r\n strokeSpy = sandbox.spy(fakeContext, \"stroke\");\r\n fillSpy = sandbox.spy(fakeContext, \"fill\");\r\n closePathSpy = sandbox.spy(fakeContext, \"closePath\");\r\n });\r\n\r\n afterEach(async () => {\r\n sandbox.restore();\r\n });\r\n\r\n it(\"should render simple path, stride = 2\", async () => {\r\n\r\n const symbolRenderer = new ArcGisSymbologyRenderer(\"esriGeometryLine\", PhillyLandmarksDataset.phillySimpleLineDrawingInfo.drawingInfo.renderer);\r\n const renderer = new ArcGisFeatureRenderer(fakeContext, symbolRenderer);\r\n const coords = [1,2,3,4];\r\n const applyFillStyleSpy = sandbox.spy(symbolRenderer, \"applyFillStyle\");\r\n const applyStrokeStyleSpy = sandbox.spy(symbolRenderer, \"applyStrokeStyle\");\r\n\r\n renderer.renderPath([2], coords, false, 2, true);\r\n\r\n expect(beginPathSpy.calledOnce).to.be.true;\r\n expect(moveToSpy.calledOnce).to.be.true;\r\n expect(moveToSpy.getCalls()[0].args[0]).to.equals(coords[0]);\r\n expect(moveToSpy.getCalls()[0].args[1]).to.equals(coords[1]);\r\n\r\n expect(lineToSpy.calledOnce).to.be.true;\r\n\r\n // IMPORTANT: Only first coord is absolute, following coords are expressed relative to previous coord.\r\n expect(lineToSpy.getCalls()[0].args[0]).to.equals(coords[0] + coords[2]);\r\n expect(lineToSpy.getCalls()[0].args[1]).to.equals(coords[1] + coords[3]);\r\n\r\n expect(strokeSpy.calledOnce).to.be.true;\r\n expect(fillSpy.called).to.be.false;\r\n expect(closePathSpy.called).to.be.false;\r\n expect(applyFillStyleSpy.calledOnce).to.be.false;\r\n expect(applyStrokeStyleSpy.calledOnce).to.be.true;\r\n });\r\n\r\n it(\"should render simple filled path\", async () => {\r\n\r\n const symbolRenderer = new ArcGisSymbologyRenderer(\"esriGeometryLine\", PhillyLandmarksDataset.phillySimpleLineDrawingInfo.drawingInfo.renderer);\r\n const renderer = new ArcGisFeatureRenderer(fakeContext, symbolRenderer);\r\n const coords = [1,2,3,4];\r\n\r\n const applyFillStyleSpy = sandbox.spy(symbolRenderer, \"applyFillStyle\");\r\n const applyStrokeStyleSpy = sandbox.spy(symbolRenderer, \"applyStrokeStyle\");\r\n renderer.renderPath([2], coords, true, 2, true);\r\n\r\n expect(beginPathSpy.calledOnce).to.be.true;\r\n expect(moveToSpy.calledOnce).to.be.true;\r\n expect(moveToSpy.getCalls()[0].args[0]).to.equals(coords[0]);\r\n expect(moveToSpy.getCalls()[0].args[1]).to.equals(coords[1]);\r\n\r\n expect(lineToSpy.calledOnce).to.be.true;\r\n\r\n // IMPORTANT: Only first coord is absolute, following coords are expressed relative to previous coord.\r\n expect(lineToSpy.getCalls()[0].args[0]).to.equals(coords[0] + coords[2]);\r\n expect(lineToSpy.getCalls()[0].args[1]).to.equals(coords[1] + coords[3]);\r\n\r\n expect(strokeSpy.calledOnce).to.be.true;\r\n expect(fillSpy.calledOnce).to.be.true;\r\n expect(closePathSpy.calledOnce).to.be.true;\r\n\r\n expect(applyFillStyleSpy.calledOnce).to.be.true;\r\n expect(applyStrokeStyleSpy.calledOnce).to.be.true;\r\n\r\n });\r\n\r\n it(\"should render simple Path, stride = 3\", async () => {\r\n\r\n const symbolRenderer = new ArcGisSymbologyRenderer(\"esriGeometryLine\", PhillyLandmarksDataset.phillySimpleLineDrawingInfo.drawingInfo.renderer);\r\n const renderer = new ArcGisFeatureRenderer(fakeContext, symbolRenderer);\r\n const coords = [1,2,3,4,5,6];\r\n\r\n renderer.renderPath([2], coords, false, 3, true);\r\n\r\n expect(beginPathSpy.calledOnce).to.be.true;\r\n expect(moveToSpy.calledOnce).to.be.true;\r\n expect(moveToSpy.getCalls()[0].args[0]).to.equals(coords[0]);\r\n expect(moveToSpy.getCalls()[0].args[1]).to.equals(coords[1]);\r\n\r\n expect(lineToSpy.calledOnce).to.be.true;\r\n\r\n expect(lineToSpy.getCalls()[0].args[0]).to.equals(coords[0] + coords[3]);\r\n expect(lineToSpy.getCalls()[0].args[1]).to.equals(coords[1] + coords[4]);\r\n\r\n expect(strokeSpy.calledOnce).to.be.true;\r\n expect(fillSpy.called).to.be.false;\r\n expect(closePathSpy.called).to.be.false;\r\n\r\n });\r\n\r\n it(\"should render multiple Paths, stride = 2\", async () => {\r\n\r\n const symbolRenderer = new ArcGisSymbologyRenderer(\"esriGeometryLine\", PhillyLandmarksDataset.phillySimpleLineDrawingInfo.drawingInfo.renderer);\r\n const renderer = new ArcGisFeatureRenderer(fakeContext, symbolRenderer);\r\n const coords = [1,2,3,4];\r\n const applyFillStyleSpy = sandbox.spy(symbolRenderer, \"applyFillStyle\");\r\n const applyStrokeStyleSpy = sandbox.spy(symbolRenderer, \"applyStrokeStyle\");\r\n\r\n renderer.renderPath([2], coords, false, 2, true);\r\n\r\n expect(beginPathSpy.calledOnce).to.be.true;\r\n expect(moveToSpy.calledOnce).to.be.true;\r\n expect(moveToSpy.getCalls()[0].args[0]).to.equals(coords[0]);\r\n expect(moveToSpy.getCalls()[0].args[1]).to.equals(coords[1]);\r\n\r\n expect(lineToSpy.calledOnce).to.be.true;\r\n\r\n // IMPORTANT: Only first coord is absolute, following coords are expressed relative to previous coord.\r\n expect(lineToSpy.getCalls()[0].args[0]).to.equals(coords[0] + coords[2]);\r\n expect(lineToSpy.getCalls()[0].args[1]).to.equals(coords[1] + coords[3]);\r\n\r\n expect(strokeSpy.calledOnce).to.be.true;\r\n expect(fillSpy.called).to.be.false;\r\n expect(closePathSpy.called).to.be.false;\r\n expect(applyFillStyleSpy.calledOnce).to.be.false;\r\n expect(applyStrokeStyleSpy.calledOnce).to.be.true;\r\n });\r\n\r\n it(\"should not render invalid with stride value\", async () => {\r\n\r\n const symbolRenderer = new ArcGisSymbologyRenderer(\"esriGeometryLine\", PhillyLandmarksDataset.phillySimpleLineDrawingInfo.drawingInfo.renderer);\r\n const renderer = new ArcGisFeatureRenderer(fakeContext, symbolRenderer);\r\n const coords = [1,2,3,4];\r\n\r\n renderer.renderPath([2], coords, false, 1, true);\r\n renderer.renderPath([2], coords, false, 4, true);\r\n renderer.renderPoint([2], coords, 1, true);\r\n renderer.renderPoint([2], coords, 4, true);\r\n\r\n expect(lineToSpy.calledOnce).to.be.false;\r\n expect(strokeSpy.calledOnce).to.be.false;\r\n expect(fillSpy.called).to.be.false;\r\n expect(closePathSpy.called).to.be.false;\r\n });\r\n\r\n it(\"should render Path and apply transform, relativeCoords OFF\", async () => {\r\n\r\n const symbolRenderer = new ArcGisSymbologyRenderer(\"esriGeometryLine\", PhillyLandmarksDataset.phillySimpleLineDrawingInfo.drawingInfo.renderer);\r\n\r\n const fakeOffset = 10;\r\n const renderer = new ArcGisFeatureRenderer(fakeContext, symbolRenderer, Transform.createTranslation(Point3d.create(fakeOffset,fakeOffset)));\r\n const coords = [1,2,3,4];\r\n\r\n renderer.renderPath([2], coords, false, 2, false);\r\n\r\n expect(beginPathSpy.calledOnce).to.be.true;\r\n expect(moveToSpy.calledOnce).to.be.true;\r\n expect(moveToSpy.getCalls()[0].args[0]).to.equals(coords[0]+fakeOffset);\r\n expect(moveToSpy.getCalls()[0].args[1]).to.equals(coords[1]+fakeOffset);\r\n\r\n expect(lineToSpy.calledOnce).to.be.true;\r\n\r\n // IMPORTANT: Only first coord is absolute, following coords are expressed relative to previous coord.\r\n expect(lineToSpy.getCalls()[0].args[0]).to.equals(coords[2] + fakeOffset);\r\n expect(lineToSpy.getCalls()[0].args[1]).to.equals(coords[3] + fakeOffset);\r\n\r\n });\r\n\r\n it(\"should render single Point, no transform, relativeCoords OFF\", async () => {\r\n\r\n const symbolRenderer = new ArcGisSymbologyRenderer(\"esriGeometryPoint\", PhillyLandmarksDataset.phillySimplePointDrawingInfo.drawingInfo.renderer);\r\n\r\n const renderer = new ArcGisFeatureRenderer(fakeContext, symbolRenderer);\r\n\r\n const drawPointStub = sandbox.stub(ArcGisSymbologyRenderer.prototype, \"drawPoint\");\r\n const coords = [1,2];\r\n renderer.renderPoint([], coords, 2, false);\r\n\r\n expect(drawPointStub.calledOnce).to.be.true;\r\n expect(drawPointStub.getCalls()[0].args[1]).to.equals(coords[0]);\r\n expect(drawPointStub.getCalls()[0].args[2]).to.equals(coords[1]);\r\n\r\n });\r\n\r\n it(\"should render single Point and apply transform, relativeCoords OFF\", async () => {\r\n\r\n const symbolRenderer = new ArcGisSymbologyRenderer(\"esriGeometryPoint\", PhillyLandmarksDataset.phillySimplePointDrawingInfo.drawingInfo.renderer);\r\n\r\n const fakeOffset = 10;\r\n const renderer = new ArcGisFeatureRenderer(fakeContext, symbolRenderer, Transform.createTranslation(Point3d.create(fakeOffset,fakeOffset)));\r\n\r\n const drawPointStub = sandbox.stub(ArcGisSymbologyRenderer.prototype, \"drawPoint\");\r\n const coords = [1,2];\r\n renderer.renderPoint([], coords, 2, false);\r\n\r\n expect(drawPointStub.calledOnce).to.be.true;\r\n expect(drawPointStub.getCalls()[0].args[1]).to.equals(coords[0]+fakeOffset);\r\n expect(drawPointStub.getCalls()[0].args[2]).to.equals(coords[1]+fakeOffset);\r\n\r\n });\r\n\r\n it(\"should render multi Point, transform, relativeCoords OFF\", async () => {\r\n\r\n const symbolRenderer = new ArcGisSymbologyRenderer(\"esriGeometryPoint\", PhillyLandmarksDataset.phillySimplePointDrawingInfo.drawingInfo.renderer);\r\n\r\n const renderer = new ArcGisFeatureRenderer(fakeContext, symbolRenderer);\r\n\r\n const drawPointStub = sandbox.stub(ArcGisSymbologyRenderer.prototype, \"drawPoint\");\r\n const coords = [1,2,3,4];\r\n renderer.renderPoint([2], coords, 2, false);\r\n\r\n expect(drawPointStub.getCalls().length).to.equals(2);\r\n expect(drawPointStub.getCalls()[0].args[1]).to.equals(coords[0]);\r\n expect(drawPointStub.getCalls()[0].args[2]).to.equals(coords[1]);\r\n expect(drawPointStub.getCalls()[1].args[1]).to.equals(coords[2]);\r\n expect(drawPointStub.getCalls()[1].args[2]).to.equals(coords[3]);\r\n });\r\n\r\n it(\"should render multi Point and apply transform, relativeCoords OFF\", async () => {\r\n\r\n const symbolRenderer = new ArcGisSymbologyRenderer(\"esriGeometryPoint\", PhillyLandmarksDataset.phillySimplePointDrawingInfo.drawingInfo.renderer);\r\n\r\n const fakeOffset = 10;\r\n const renderer = new ArcGisFeatureRenderer(fakeContext, symbolRenderer, Transform.createTranslation(Point3d.create(fakeOffset,fakeOffset)));\r\n\r\n const drawPointStub = sandbox.stub(ArcGisSymbologyRenderer.prototype, \"drawPoint\");\r\n const coords = [1,2,3,4];\r\n renderer.renderPoint([2], coords, 2, false);\r\n\r\n expect(drawPointStub.getCalls().length).to.equals(2);\r\n expect(drawPointStub.getCalls()[0].args[1]).to.equals(coords[0]+fakeOffset);\r\n expect(drawPointStub.getCalls()[0].args[2]).to.equals(coords[1]+fakeOffset);\r\n expect(drawPointStub.getCalls()[1].args[1]).to.equals(coords[2]+fakeOffset);\r\n expect(drawPointStub.getCalls()[1].args[2]).to.equals(coords[3]+fakeOffset);\r\n });\r\n\r\n it(\"should render multi Point and apply transform, relativeCoords ON\", async () => {\r\n\r\n const symbolRenderer = new ArcGisSymbologyRenderer(\"esriGeometryPoint\", PhillyLandmarksDataset.phillySimplePointDrawingInfo.drawingInfo.renderer);\r\n\r\n const fakeOffset = 10;\r\n const renderer = new ArcGisFeatureRenderer(fakeContext, symbolRenderer, Transform.createTranslation(Point3d.create(fakeOffset,fakeOffset)));\r\n\r\n const drawPointStub = sandbox.stub(ArcGisSymbologyRenderer.prototype, \"drawPoint\");\r\n const coords = [1,2,3,4];\r\n renderer.renderPoint([2], coords, 2, true);\r\n\r\n expect(drawPointStub.getCalls().length).to.equals(2);\r\n expect(drawPointStub.getCalls()[0].args[1]).to.equals(coords[0]+fakeOffset);\r\n expect(drawPointStub.getCalls()[0].args[2]).to.equals(coords[1]+fakeOffset);\r\n expect(drawPointStub.getCalls()[1].args[1]).to.equals(coords[0]+coords[2]+fakeOffset);\r\n expect(drawPointStub.getCalls()[1].args[2]).to.equals(coords[1]+coords[3]+fakeOffset);\r\n });\r\n\r\n it(\"should render and apply transform, relativeCoords ON\", async () => {\r\n\r\n const symbolRenderer = new ArcGisSymbologyRenderer(\"esriGeometryLine\", PhillyLandmarksDataset.phillySimpleLineDrawingInfo.drawingInfo.renderer);\r\n\r\n const fakeOffset = 10;\r\n const renderer = new ArcGisFeatureRenderer(fakeContext, symbolRenderer, Transform.createTranslation(Point3d.create(fakeOffset,fakeOffset)));\r\n const coords = [1,2,3,4];\r\n\r\n renderer.renderPath([2], coords, false, 2, true);\r\n\r\n expect(beginPathSpy.calledOnce).to.be.true;\r\n expect(moveToSpy.calledOnce).to.be.true;\r\n expect(moveToSpy.getCalls()[0].args[0]).to.equals(coords[0]+fakeOffset);\r\n expect(moveToSpy.getCalls()[0].args[1]).to.equals(coords[1]+fakeOffset);\r\n\r\n expect(lineToSpy.calledOnce).to.be.true;\r\n\r\n // IMPORTANT: Only first coord is absolute, following coords are expressed relative to previous coord.\r\n expect(lineToSpy.getCalls()[0].args[0]).to.equals(coords[0] + coords[2] + fakeOffset);\r\n expect(lineToSpy.getCalls()[0].args[1]).to.equals(coords[1] + coords[3] + fakeOffset);\r\n });\r\n\r\n});\r\n"]}
1
+ {"version":3,"file":"ArcGisFeatureRenderer.test.js","sourceRoot":"","sources":["../../../../src/test/ArcGisFeature/ArcGisFeatureRenderer.test.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\nimport { expect } from \"chai\";\nimport * as sinon from \"sinon\";\nimport { fakeContext } from \"./Mocks\";\nimport { ArcGisSymbologyRenderer } from \"../../ArcGisFeature/ArcGisSymbologyRenderer\";\nimport { PhillyLandmarksDataset } from \"./PhillyLandmarksDataset\";\nimport { ArcGisFeatureRenderer } from \"../../ArcGisFeature/ArcGisFeatureRenderer\";\nimport { Point3d, Transform } from \"@itwin/core-geometry\";\n\ndescribe(\"ArcGisFeatureRenderer\", () => {\n\n const sandbox = sinon.createSandbox();\n\n let beginPathSpy: sinon.SinonSpy<[], void>;\n let moveToSpy: sinon.SinonSpy<[x: number, y: number], void>;\n let lineToSpy: sinon.SinonSpy<[x: number, y: number], void>;\n let strokeSpy: sinon.SinonSpy<[path: Path2D], void>;\n let fillSpy: sinon.SinonSpy<[path: Path2D, fillRule?: CanvasFillRule | undefined], void>;\n let closePathSpy: sinon.SinonSpy<[], void>;\n\n beforeEach(async () => {\n beginPathSpy = sandbox.spy(fakeContext, \"beginPath\");\n moveToSpy = sandbox.spy(fakeContext, \"moveTo\");\n lineToSpy = sandbox.spy(fakeContext, \"lineTo\");\n strokeSpy = sandbox.spy(fakeContext, \"stroke\");\n fillSpy = sandbox.spy(fakeContext, \"fill\");\n closePathSpy = sandbox.spy(fakeContext, \"closePath\");\n });\n\n afterEach(async () => {\n sandbox.restore();\n });\n\n it(\"should render simple path, stride = 2\", async () => {\n\n const symbolRenderer = new ArcGisSymbologyRenderer(\"esriGeometryLine\", PhillyLandmarksDataset.phillySimpleLineDrawingInfo.drawingInfo.renderer);\n const renderer = new ArcGisFeatureRenderer(fakeContext, symbolRenderer);\n const coords = [1,2,3,4];\n const applyFillStyleSpy = sandbox.spy(symbolRenderer, \"applyFillStyle\");\n const applyStrokeStyleSpy = sandbox.spy(symbolRenderer, \"applyStrokeStyle\");\n\n renderer.renderPath([2], coords, false, 2, true);\n\n expect(beginPathSpy.calledOnce).to.be.true;\n expect(moveToSpy.calledOnce).to.be.true;\n expect(moveToSpy.getCalls()[0].args[0]).to.equals(coords[0]);\n expect(moveToSpy.getCalls()[0].args[1]).to.equals(coords[1]);\n\n expect(lineToSpy.calledOnce).to.be.true;\n\n // IMPORTANT: Only first coord is absolute, following coords are expressed relative to previous coord.\n expect(lineToSpy.getCalls()[0].args[0]).to.equals(coords[0] + coords[2]);\n expect(lineToSpy.getCalls()[0].args[1]).to.equals(coords[1] + coords[3]);\n\n expect(strokeSpy.calledOnce).to.be.true;\n expect(fillSpy.called).to.be.false;\n expect(closePathSpy.called).to.be.false;\n expect(applyFillStyleSpy.calledOnce).to.be.false;\n expect(applyStrokeStyleSpy.calledOnce).to.be.true;\n });\n\n it(\"should render simple filled path\", async () => {\n\n const symbolRenderer = new ArcGisSymbologyRenderer(\"esriGeometryLine\", PhillyLandmarksDataset.phillySimpleLineDrawingInfo.drawingInfo.renderer);\n const renderer = new ArcGisFeatureRenderer(fakeContext, symbolRenderer);\n const coords = [1,2,3,4];\n\n const applyFillStyleSpy = sandbox.spy(symbolRenderer, \"applyFillStyle\");\n const applyStrokeStyleSpy = sandbox.spy(symbolRenderer, \"applyStrokeStyle\");\n renderer.renderPath([2], coords, true, 2, true);\n\n expect(beginPathSpy.calledOnce).to.be.true;\n expect(moveToSpy.calledOnce).to.be.true;\n expect(moveToSpy.getCalls()[0].args[0]).to.equals(coords[0]);\n expect(moveToSpy.getCalls()[0].args[1]).to.equals(coords[1]);\n\n expect(lineToSpy.calledOnce).to.be.true;\n\n // IMPORTANT: Only first coord is absolute, following coords are expressed relative to previous coord.\n expect(lineToSpy.getCalls()[0].args[0]).to.equals(coords[0] + coords[2]);\n expect(lineToSpy.getCalls()[0].args[1]).to.equals(coords[1] + coords[3]);\n\n expect(strokeSpy.calledOnce).to.be.true;\n expect(fillSpy.calledOnce).to.be.true;\n expect(closePathSpy.calledOnce).to.be.true;\n\n expect(applyFillStyleSpy.calledOnce).to.be.true;\n expect(applyStrokeStyleSpy.calledOnce).to.be.true;\n\n });\n\n it(\"should render simple Path, stride = 3\", async () => {\n\n const symbolRenderer = new ArcGisSymbologyRenderer(\"esriGeometryLine\", PhillyLandmarksDataset.phillySimpleLineDrawingInfo.drawingInfo.renderer);\n const renderer = new ArcGisFeatureRenderer(fakeContext, symbolRenderer);\n const coords = [1,2,3,4,5,6];\n\n renderer.renderPath([2], coords, false, 3, true);\n\n expect(beginPathSpy.calledOnce).to.be.true;\n expect(moveToSpy.calledOnce).to.be.true;\n expect(moveToSpy.getCalls()[0].args[0]).to.equals(coords[0]);\n expect(moveToSpy.getCalls()[0].args[1]).to.equals(coords[1]);\n\n expect(lineToSpy.calledOnce).to.be.true;\n\n expect(lineToSpy.getCalls()[0].args[0]).to.equals(coords[0] + coords[3]);\n expect(lineToSpy.getCalls()[0].args[1]).to.equals(coords[1] + coords[4]);\n\n expect(strokeSpy.calledOnce).to.be.true;\n expect(fillSpy.called).to.be.false;\n expect(closePathSpy.called).to.be.false;\n\n });\n\n it(\"should render multiple Paths, stride = 2\", async () => {\n\n const symbolRenderer = new ArcGisSymbologyRenderer(\"esriGeometryLine\", PhillyLandmarksDataset.phillySimpleLineDrawingInfo.drawingInfo.renderer);\n const renderer = new ArcGisFeatureRenderer(fakeContext, symbolRenderer);\n const coords = [1,2,3,4];\n const applyFillStyleSpy = sandbox.spy(symbolRenderer, \"applyFillStyle\");\n const applyStrokeStyleSpy = sandbox.spy(symbolRenderer, \"applyStrokeStyle\");\n\n renderer.renderPath([2], coords, false, 2, true);\n\n expect(beginPathSpy.calledOnce).to.be.true;\n expect(moveToSpy.calledOnce).to.be.true;\n expect(moveToSpy.getCalls()[0].args[0]).to.equals(coords[0]);\n expect(moveToSpy.getCalls()[0].args[1]).to.equals(coords[1]);\n\n expect(lineToSpy.calledOnce).to.be.true;\n\n // IMPORTANT: Only first coord is absolute, following coords are expressed relative to previous coord.\n expect(lineToSpy.getCalls()[0].args[0]).to.equals(coords[0] + coords[2]);\n expect(lineToSpy.getCalls()[0].args[1]).to.equals(coords[1] + coords[3]);\n\n expect(strokeSpy.calledOnce).to.be.true;\n expect(fillSpy.called).to.be.false;\n expect(closePathSpy.called).to.be.false;\n expect(applyFillStyleSpy.calledOnce).to.be.false;\n expect(applyStrokeStyleSpy.calledOnce).to.be.true;\n });\n\n it(\"should not render invalid with stride value\", async () => {\n\n const symbolRenderer = new ArcGisSymbologyRenderer(\"esriGeometryLine\", PhillyLandmarksDataset.phillySimpleLineDrawingInfo.drawingInfo.renderer);\n const renderer = new ArcGisFeatureRenderer(fakeContext, symbolRenderer);\n const coords = [1,2,3,4];\n\n renderer.renderPath([2], coords, false, 1, true);\n renderer.renderPath([2], coords, false, 4, true);\n renderer.renderPoint([2], coords, 1, true);\n renderer.renderPoint([2], coords, 4, true);\n\n expect(lineToSpy.calledOnce).to.be.false;\n expect(strokeSpy.calledOnce).to.be.false;\n expect(fillSpy.called).to.be.false;\n expect(closePathSpy.called).to.be.false;\n });\n\n it(\"should render Path and apply transform, relativeCoords OFF\", async () => {\n\n const symbolRenderer = new ArcGisSymbologyRenderer(\"esriGeometryLine\", PhillyLandmarksDataset.phillySimpleLineDrawingInfo.drawingInfo.renderer);\n\n const fakeOffset = 10;\n const renderer = new ArcGisFeatureRenderer(fakeContext, symbolRenderer, Transform.createTranslation(Point3d.create(fakeOffset,fakeOffset)));\n const coords = [1,2,3,4];\n\n renderer.renderPath([2], coords, false, 2, false);\n\n expect(beginPathSpy.calledOnce).to.be.true;\n expect(moveToSpy.calledOnce).to.be.true;\n expect(moveToSpy.getCalls()[0].args[0]).to.equals(coords[0]+fakeOffset);\n expect(moveToSpy.getCalls()[0].args[1]).to.equals(coords[1]+fakeOffset);\n\n expect(lineToSpy.calledOnce).to.be.true;\n\n // IMPORTANT: Only first coord is absolute, following coords are expressed relative to previous coord.\n expect(lineToSpy.getCalls()[0].args[0]).to.equals(coords[2] + fakeOffset);\n expect(lineToSpy.getCalls()[0].args[1]).to.equals(coords[3] + fakeOffset);\n\n });\n\n it(\"should render single Point, no transform, relativeCoords OFF\", async () => {\n\n const symbolRenderer = new ArcGisSymbologyRenderer(\"esriGeometryPoint\", PhillyLandmarksDataset.phillySimplePointDrawingInfo.drawingInfo.renderer);\n\n const renderer = new ArcGisFeatureRenderer(fakeContext, symbolRenderer);\n\n const drawPointStub = sandbox.stub(ArcGisSymbologyRenderer.prototype, \"drawPoint\");\n const coords = [1,2];\n renderer.renderPoint([], coords, 2, false);\n\n expect(drawPointStub.calledOnce).to.be.true;\n expect(drawPointStub.getCalls()[0].args[1]).to.equals(coords[0]);\n expect(drawPointStub.getCalls()[0].args[2]).to.equals(coords[1]);\n\n });\n\n it(\"should render single Point and apply transform, relativeCoords OFF\", async () => {\n\n const symbolRenderer = new ArcGisSymbologyRenderer(\"esriGeometryPoint\", PhillyLandmarksDataset.phillySimplePointDrawingInfo.drawingInfo.renderer);\n\n const fakeOffset = 10;\n const renderer = new ArcGisFeatureRenderer(fakeContext, symbolRenderer, Transform.createTranslation(Point3d.create(fakeOffset,fakeOffset)));\n\n const drawPointStub = sandbox.stub(ArcGisSymbologyRenderer.prototype, \"drawPoint\");\n const coords = [1,2];\n renderer.renderPoint([], coords, 2, false);\n\n expect(drawPointStub.calledOnce).to.be.true;\n expect(drawPointStub.getCalls()[0].args[1]).to.equals(coords[0]+fakeOffset);\n expect(drawPointStub.getCalls()[0].args[2]).to.equals(coords[1]+fakeOffset);\n\n });\n\n it(\"should render multi Point, transform, relativeCoords OFF\", async () => {\n\n const symbolRenderer = new ArcGisSymbologyRenderer(\"esriGeometryPoint\", PhillyLandmarksDataset.phillySimplePointDrawingInfo.drawingInfo.renderer);\n\n const renderer = new ArcGisFeatureRenderer(fakeContext, symbolRenderer);\n\n const drawPointStub = sandbox.stub(ArcGisSymbologyRenderer.prototype, \"drawPoint\");\n const coords = [1,2,3,4];\n renderer.renderPoint([2], coords, 2, false);\n\n expect(drawPointStub.getCalls().length).to.equals(2);\n expect(drawPointStub.getCalls()[0].args[1]).to.equals(coords[0]);\n expect(drawPointStub.getCalls()[0].args[2]).to.equals(coords[1]);\n expect(drawPointStub.getCalls()[1].args[1]).to.equals(coords[2]);\n expect(drawPointStub.getCalls()[1].args[2]).to.equals(coords[3]);\n });\n\n it(\"should render multi Point and apply transform, relativeCoords OFF\", async () => {\n\n const symbolRenderer = new ArcGisSymbologyRenderer(\"esriGeometryPoint\", PhillyLandmarksDataset.phillySimplePointDrawingInfo.drawingInfo.renderer);\n\n const fakeOffset = 10;\n const renderer = new ArcGisFeatureRenderer(fakeContext, symbolRenderer, Transform.createTranslation(Point3d.create(fakeOffset,fakeOffset)));\n\n const drawPointStub = sandbox.stub(ArcGisSymbologyRenderer.prototype, \"drawPoint\");\n const coords = [1,2,3,4];\n renderer.renderPoint([2], coords, 2, false);\n\n expect(drawPointStub.getCalls().length).to.equals(2);\n expect(drawPointStub.getCalls()[0].args[1]).to.equals(coords[0]+fakeOffset);\n expect(drawPointStub.getCalls()[0].args[2]).to.equals(coords[1]+fakeOffset);\n expect(drawPointStub.getCalls()[1].args[1]).to.equals(coords[2]+fakeOffset);\n expect(drawPointStub.getCalls()[1].args[2]).to.equals(coords[3]+fakeOffset);\n });\n\n it(\"should render multi Point and apply transform, relativeCoords ON\", async () => {\n\n const symbolRenderer = new ArcGisSymbologyRenderer(\"esriGeometryPoint\", PhillyLandmarksDataset.phillySimplePointDrawingInfo.drawingInfo.renderer);\n\n const fakeOffset = 10;\n const renderer = new ArcGisFeatureRenderer(fakeContext, symbolRenderer, Transform.createTranslation(Point3d.create(fakeOffset,fakeOffset)));\n\n const drawPointStub = sandbox.stub(ArcGisSymbologyRenderer.prototype, \"drawPoint\");\n const coords = [1,2,3,4];\n renderer.renderPoint([2], coords, 2, true);\n\n expect(drawPointStub.getCalls().length).to.equals(2);\n expect(drawPointStub.getCalls()[0].args[1]).to.equals(coords[0]+fakeOffset);\n expect(drawPointStub.getCalls()[0].args[2]).to.equals(coords[1]+fakeOffset);\n expect(drawPointStub.getCalls()[1].args[1]).to.equals(coords[0]+coords[2]+fakeOffset);\n expect(drawPointStub.getCalls()[1].args[2]).to.equals(coords[1]+coords[3]+fakeOffset);\n });\n\n it(\"should render and apply transform, relativeCoords ON\", async () => {\n\n const symbolRenderer = new ArcGisSymbologyRenderer(\"esriGeometryLine\", PhillyLandmarksDataset.phillySimpleLineDrawingInfo.drawingInfo.renderer);\n\n const fakeOffset = 10;\n const renderer = new ArcGisFeatureRenderer(fakeContext, symbolRenderer, Transform.createTranslation(Point3d.create(fakeOffset,fakeOffset)));\n const coords = [1,2,3,4];\n\n renderer.renderPath([2], coords, false, 2, true);\n\n expect(beginPathSpy.calledOnce).to.be.true;\n expect(moveToSpy.calledOnce).to.be.true;\n expect(moveToSpy.getCalls()[0].args[0]).to.equals(coords[0]+fakeOffset);\n expect(moveToSpy.getCalls()[0].args[1]).to.equals(coords[1]+fakeOffset);\n\n expect(lineToSpy.calledOnce).to.be.true;\n\n // IMPORTANT: Only first coord is absolute, following coords are expressed relative to previous coord.\n expect(lineToSpy.getCalls()[0].args[0]).to.equals(coords[0] + coords[2] + fakeOffset);\n expect(lineToSpy.getCalls()[0].args[1]).to.equals(coords[1] + coords[3] + fakeOffset);\n });\n\n});\n"]}