three-nebula 10.0.2 → 11.0.0

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 (170) hide show
  1. package/.claude/rules/no-coauthor.md +4 -0
  2. package/CHANGELOG.md +23 -0
  3. package/build/cjs/behaviour/Alpha.js +2 -2
  4. package/build/cjs/behaviour/Attraction.js +2 -2
  5. package/build/cjs/behaviour/Behaviour.js +1 -1
  6. package/build/cjs/behaviour/Collision.js +2 -2
  7. package/build/cjs/behaviour/Color.js +2 -2
  8. package/build/cjs/behaviour/CrossZone.js +8 -4
  9. package/build/cjs/behaviour/Force.js +2 -2
  10. package/build/cjs/behaviour/Gravity.js +2 -2
  11. package/build/cjs/behaviour/RandomDrift.js +2 -2
  12. package/build/cjs/behaviour/Repulsion.js +2 -2
  13. package/build/cjs/behaviour/Rotate.js +5 -5
  14. package/build/cjs/behaviour/Scale.js +2 -2
  15. package/build/cjs/behaviour/Spring.js +2 -2
  16. package/build/cjs/constants/index.js +1 -1
  17. package/build/cjs/core/Particle.js +1 -1
  18. package/build/cjs/core/Pool.js +1 -1
  19. package/build/cjs/core/System.js +8 -4
  20. package/build/cjs/core/constants.js +2 -2
  21. package/build/cjs/core/fromJSON.js +6 -2
  22. package/build/cjs/core/fromJSONAsync.js +8 -4
  23. package/build/cjs/core/three/Euler.js +1 -1
  24. package/build/cjs/core/three/Math.js +1 -1
  25. package/build/cjs/core/three/Matrix4.js +1 -1
  26. package/build/cjs/core/three/Quaternion.js +1 -1
  27. package/build/cjs/core/three/Vector3.js +1 -1
  28. package/build/cjs/debug/Debug.js +1 -1
  29. package/build/cjs/debug/log.js +1 -1
  30. package/build/cjs/ease/index.js +1 -1
  31. package/build/cjs/emitter/Emitter.js +17 -6
  32. package/build/cjs/emitter/FollowEmitter.js +2 -2
  33. package/build/cjs/events/EventDispatcher.js +3 -3
  34. package/build/cjs/initializer/Body.js +2 -2
  35. package/build/cjs/initializer/BodySprite.js +3 -3
  36. package/build/cjs/initializer/Initializer.js +1 -1
  37. package/build/cjs/initializer/InitializerUtil.js +1 -1
  38. package/build/cjs/initializer/Life.js +2 -2
  39. package/build/cjs/initializer/Mass.js +2 -2
  40. package/build/cjs/initializer/Position.js +8 -4
  41. package/build/cjs/initializer/Radius.js +2 -2
  42. package/build/cjs/initializer/Rate.js +2 -2
  43. package/build/cjs/initializer/Rotation.js +95 -0
  44. package/build/cjs/initializer/Texture.js +3 -3
  45. package/build/cjs/initializer/Velocity/PolarVelocity.js +2 -2
  46. package/build/cjs/initializer/Velocity/RadialVelocity.js +2 -2
  47. package/build/cjs/initializer/Velocity/VectorVelocity.js +2 -2
  48. package/build/cjs/initializer/Velocity/Velocity.js +2 -2
  49. package/build/cjs/initializer/constants.js +1 -1
  50. package/build/cjs/initializer/index.js +9 -1
  51. package/build/cjs/initializer/types.js +4 -2
  52. package/build/cjs/math/ArraySpan.js +2 -2
  53. package/build/cjs/math/Box.js +1 -1
  54. package/build/cjs/math/ColorSpan.js +2 -2
  55. package/build/cjs/math/MathUtils.js +1 -1
  56. package/build/cjs/math/Polar3D.js +1 -1
  57. package/build/cjs/math/Span.js +1 -1
  58. package/build/cjs/math/Vector3D.js +1 -1
  59. package/build/cjs/math/constants.js +1 -1
  60. package/build/cjs/math/index.js +5 -1
  61. package/build/cjs/math/integration.js +1 -1
  62. package/build/cjs/renderer/BaseRenderer.js +1 -1
  63. package/build/cjs/renderer/CustomRenderer.js +1 -1
  64. package/build/cjs/renderer/GPURenderer/Desktop/index.js +25 -4
  65. package/build/cjs/renderer/GPURenderer/Desktop/shaders/fragmentShader.js +2 -2
  66. package/build/cjs/renderer/GPURenderer/Desktop/shaders/vertexShader.js +2 -2
  67. package/build/cjs/renderer/GPURenderer/Mobile/index.js +25 -4
  68. package/build/cjs/renderer/GPURenderer/Mobile/shaders/fragmentShader.js +2 -2
  69. package/build/cjs/renderer/GPURenderer/Mobile/shaders/vertexShader.js +2 -2
  70. package/build/cjs/renderer/GPURenderer/common/ParticleBuffer/constants.js +9 -4
  71. package/build/cjs/renderer/GPURenderer/common/ParticleBuffer/index.js +1 -1
  72. package/build/cjs/renderer/GPURenderer/common/TextureAtlas/index.js +1 -1
  73. package/build/cjs/renderer/GPURenderer/common/stores/Target.js +3 -1
  74. package/build/cjs/renderer/GPURenderer/common/stores/UniqueList.js +1 -1
  75. package/build/cjs/renderer/GPURenderer/index.js +2 -2
  76. package/build/cjs/renderer/MeshRenderer.js +9 -9
  77. package/build/cjs/renderer/SpriteRenderer.js +7 -2
  78. package/build/cjs/utils/index.js +1 -1
  79. package/build/cjs/utils/uid.js +3 -5
  80. package/build/cjs/zone/BoxZone.js +2 -2
  81. package/build/cjs/zone/LineZone.js +2 -2
  82. package/build/cjs/zone/MeshZone.js +2 -2
  83. package/build/cjs/zone/PointZone.js +6 -4
  84. package/build/cjs/zone/ScreenZone.js +2 -2
  85. package/build/cjs/zone/SphereZone.js +6 -4
  86. package/build/cjs/zone/Zone.js +1 -1
  87. package/build/esm/behaviour/Alpha.js +1 -1
  88. package/build/esm/behaviour/Attraction.js +1 -1
  89. package/build/esm/behaviour/Behaviour.js +1 -1
  90. package/build/esm/behaviour/Collision.js +1 -1
  91. package/build/esm/behaviour/Color.js +1 -1
  92. package/build/esm/behaviour/CrossZone.js +1 -1
  93. package/build/esm/behaviour/Force.js +1 -1
  94. package/build/esm/behaviour/Gravity.js +1 -1
  95. package/build/esm/behaviour/RandomDrift.js +1 -1
  96. package/build/esm/behaviour/Repulsion.js +1 -1
  97. package/build/esm/behaviour/Rotate.js +4 -4
  98. package/build/esm/behaviour/Scale.js +1 -1
  99. package/build/esm/behaviour/Spring.js +1 -1
  100. package/build/esm/constants/index.js +1 -1
  101. package/build/esm/core/Particle.js +1 -1
  102. package/build/esm/core/Pool.js +1 -1
  103. package/build/esm/core/System.js +2 -2
  104. package/build/esm/core/constants.js +3 -3
  105. package/build/esm/core/fromJSON.js +1 -1
  106. package/build/esm/core/fromJSONAsync.js +2 -2
  107. package/build/esm/core/three/Euler.js +1 -1
  108. package/build/esm/core/three/Math.js +1 -1
  109. package/build/esm/core/three/Matrix4.js +1 -1
  110. package/build/esm/core/three/Quaternion.js +1 -1
  111. package/build/esm/core/three/Vector3.js +1 -1
  112. package/build/esm/debug/Debug.js +1 -1
  113. package/build/esm/debug/log.js +1 -1
  114. package/build/esm/ease/index.js +1 -1
  115. package/build/esm/emitter/Emitter.js +11 -4
  116. package/build/esm/emitter/FollowEmitter.js +1 -1
  117. package/build/esm/events/EventDispatcher.js +3 -3
  118. package/build/esm/initializer/Body.js +1 -1
  119. package/build/esm/initializer/BodySprite.js +2 -2
  120. package/build/esm/initializer/Initializer.js +1 -1
  121. package/build/esm/initializer/InitializerUtil.js +1 -1
  122. package/build/esm/initializer/Life.js +1 -1
  123. package/build/esm/initializer/Mass.js +1 -1
  124. package/build/esm/initializer/Position.js +3 -2
  125. package/build/esm/initializer/Radius.js +1 -1
  126. package/build/esm/initializer/Rate.js +1 -1
  127. package/build/esm/initializer/Rotation.js +54 -0
  128. package/build/esm/initializer/Texture.js +2 -2
  129. package/build/esm/initializer/Velocity/PolarVelocity.js +1 -1
  130. package/build/esm/initializer/Velocity/RadialVelocity.js +1 -1
  131. package/build/esm/initializer/Velocity/VectorVelocity.js +1 -1
  132. package/build/esm/initializer/Velocity/Velocity.js +1 -1
  133. package/build/esm/initializer/constants.js +1 -1
  134. package/build/esm/initializer/index.js +2 -1
  135. package/build/esm/initializer/types.js +2 -1
  136. package/build/esm/math/ArraySpan.js +1 -1
  137. package/build/esm/math/Box.js +1 -1
  138. package/build/esm/math/ColorSpan.js +1 -1
  139. package/build/esm/math/MathUtils.js +1 -1
  140. package/build/esm/math/Polar3D.js +1 -1
  141. package/build/esm/math/Span.js +1 -1
  142. package/build/esm/math/constants.js +1 -1
  143. package/build/esm/math/integration.js +1 -1
  144. package/build/esm/renderer/BaseRenderer.js +1 -1
  145. package/build/esm/renderer/GPURenderer/Desktop/index.js +29 -3
  146. package/build/esm/renderer/GPURenderer/Desktop/shaders/fragmentShader.js +8 -1
  147. package/build/esm/renderer/GPURenderer/Desktop/shaders/vertexShader.js +4 -1
  148. package/build/esm/renderer/GPURenderer/Mobile/index.js +29 -3
  149. package/build/esm/renderer/GPURenderer/Mobile/shaders/fragmentShader.js +8 -1
  150. package/build/esm/renderer/GPURenderer/Mobile/shaders/vertexShader.js +4 -1
  151. package/build/esm/renderer/GPURenderer/common/ParticleBuffer/constants.js +6 -3
  152. package/build/esm/renderer/GPURenderer/common/ParticleBuffer/index.js +1 -1
  153. package/build/esm/renderer/GPURenderer/common/TextureAtlas/index.js +1 -1
  154. package/build/esm/renderer/GPURenderer/common/stores/Target.js +3 -1
  155. package/build/esm/renderer/GPURenderer/common/stores/UniqueList.js +1 -1
  156. package/build/esm/renderer/GPURenderer/index.js +1 -1
  157. package/build/esm/renderer/MeshRenderer.js +7 -8
  158. package/build/esm/renderer/SpriteRenderer.js +5 -1
  159. package/build/esm/utils/index.js +1 -1
  160. package/build/esm/utils/uid.js +2 -2
  161. package/build/esm/zone/BoxZone.js +1 -1
  162. package/build/esm/zone/LineZone.js +1 -1
  163. package/build/esm/zone/MeshZone.js +1 -1
  164. package/build/esm/zone/PointZone.js +5 -3
  165. package/build/esm/zone/ScreenZone.js +1 -1
  166. package/build/esm/zone/SphereZone.js +5 -3
  167. package/build/esm/zone/Zone.js +1 -1
  168. package/build/three-nebula.js +1 -1
  169. package/build/three-nebula.js.map +1 -1
  170. package/package.json +31 -31
@@ -85,4 +85,4 @@ var createSpan = function createSpan(a, b, c) {
85
85
  };
86
86
 
87
87
  exports.createSpan = createSpan;
88
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tYXRoL1NwYW4uanMiXSwibmFtZXMiOlsiU3BhbiIsImEiLCJiIiwiY2VudGVyIiwiX2lzQXJyYXkiLCJ0eXBlIiwiVXRpbCIsImlzQXJyYXkiLCJpbml0VmFsdWUiLCJfY2VudGVyIiwiSU5UIiwibGVuZ3RoIiwiTWF0aCIsInJhbmRvbSIsIk1hdGhVdGlscyIsInJhbmRvbUFUb0IiLCJyYW5kb21GbG9hdGluZyIsImNyZWF0ZVNwYW4iLCJjIiwidW5kZWZpbmVkIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0lBRXFCQSxJO0FBQ25COzs7Ozs7Ozs7Ozs7OztBQWNBLGdCQUFZQyxDQUFaLEVBQWVDLENBQWYsRUFBa0JDLE1BQWxCLEVBQTBCO0FBQUE7QUFDeEIsU0FBS0MsUUFBTCxHQUFnQixLQUFoQjtBQUVBOzs7OztBQUlBLFNBQUtDLElBQUwsR0FBWUEscUJBQVo7O0FBRUEsUUFBSUMsaUJBQUtDLE9BQUwsQ0FBYU4sQ0FBYixDQUFKLEVBQXFCO0FBQ25CLFdBQUtHLFFBQUwsR0FBZ0IsSUFBaEI7QUFDQSxXQUFLSCxDQUFMLEdBQVNBLENBQVQ7QUFDRCxLQUhELE1BR087QUFDTCxXQUFLQSxDQUFMLEdBQVNLLGlCQUFLRSxTQUFMLENBQWVQLENBQWYsRUFBa0IsQ0FBbEIsQ0FBVDtBQUNBLFdBQUtDLENBQUwsR0FBU0ksaUJBQUtFLFNBQUwsQ0FBZU4sQ0FBZixFQUFrQixLQUFLRCxDQUF2QixDQUFUO0FBQ0EsV0FBS1EsT0FBTCxHQUFlSCxpQkFBS0UsU0FBTCxDQUFlTCxNQUFmLEVBQXVCLEtBQXZCLENBQWY7QUFDRDtBQUNGO0FBRUQ7Ozs7Ozs7Ozs7NkJBTVNPLEcsRUFBSztBQUNaLFVBQUksS0FBS04sUUFBVCxFQUFtQjtBQUNqQixlQUFPLEtBQUtILENBQUwsQ0FBUSxLQUFLQSxDQUFMLENBQU9VLE1BQVAsR0FBZ0JDLElBQUksQ0FBQ0MsTUFBTCxFQUFqQixJQUFtQyxDQUExQyxDQUFQO0FBQ0QsT0FGRCxNQUVPO0FBQ0wsWUFBSSxDQUFDLEtBQUtKLE9BQVYsRUFBbUIsT0FBT0ssc0JBQVVDLFVBQVYsQ0FBcUIsS0FBS2QsQ0FBMUIsRUFBNkIsS0FBS0MsQ0FBbEMsRUFBcUNRLEdBQXJDLENBQVAsQ0FBbkIsS0FDSyxPQUFPSSxzQkFBVUUsY0FBVixDQUF5QixLQUFLZixDQUE5QixFQUFpQyxLQUFLQyxDQUF0QyxFQUF5Q1EsR0FBekMsQ0FBUDtBQUNOO0FBQ0Y7Ozs7Ozs7QUFHSSxJQUFNTyxVQUFVLEdBQUcsU0FBYkEsVUFBYSxDQUFDaEIsQ0FBRCxFQUFJQyxDQUFKLEVBQU9nQixDQUFQLEVBQWE7QUFDckMsTUFBSWpCLENBQUMsWUFBWUQsSUFBakIsRUFBdUIsT0FBT0MsQ0FBUDs7QUFFdkIsTUFBSUMsQ0FBQyxLQUFLaUIsU0FBVixFQUFxQjtBQUNuQixXQUFPLElBQUluQixJQUFKLENBQVNDLENBQVQsQ0FBUDtBQUNELEdBRkQsTUFFTztBQUNMLFFBQUlpQixDQUFDLEtBQUtDLFNBQVYsRUFBcUIsT0FBTyxJQUFJbkIsSUFBSixDQUFTQyxDQUFULEVBQVlDLENBQVosQ0FBUCxDQUFyQixLQUNLLE9BQU8sSUFBSUYsSUFBSixDQUFTQyxDQUFULEVBQVlDLENBQVosRUFBZWdCLENBQWYsQ0FBUDtBQUNOO0FBQ0YsQ0FUTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBNYXRoVXRpbHMgZnJvbSAnLi9NYXRoVXRpbHMnO1xuaW1wb3J0IFV0aWwgZnJvbSAnLi4vdXRpbHMvVXRpbCc7XG5pbXBvcnQgeyBNQVRIX1RZUEVfU1BBTiBhcyB0eXBlIH0gZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNwYW4ge1xuICAvKipcbiAgICogU3BhbiBDbGFzcy4gR2V0IGEgcmFuZG9tIE51bWJlciBmcm9tIGEgdG8gYi4gT3IgZnJvbSBjLWEgdG8gYytiXG4gICAqIEBwYXJhbSB7TnVtYmVyfEFycmF5fSBhIC0gbWluIG51bWJlclxuICAgKiBAcGFyYW0ge051bWJlcn0gYiAtIG1heCBudW1iZXJcbiAgICogQHBhcmFtIHtOdW1iZXJ9IGNlbnRlciAtIHRoZSBjZW50ZXIncyB6IHZhbHVlXG4gICAqIEBleGFtcGxlXG4gICAqIHZhciBzcGFuID0gbmV3IFNwYW4oMCwzMCk7XG4gICAqIG9yXG4gICAqIHZhciBzcGFuID0gbmV3IFNwYW4oW1wiI2ZmZlwiLFwiI2ZmMFwiLFwiIzAwMFwiXSk7XG4gICAqIG9yXG4gICAqIHZhciBzcGFuID0gbmV3IFNwYW4oNSwxLFwiY2VudGVyXCIpO1xuICAgKiBAZXh0ZW5kcyB7Wm9uZX1cbiAgICogQGNvbnN0cnVjdG9yXG4gICAqL1xuICBjb25zdHJ1Y3RvcihhLCBiLCBjZW50ZXIpIHtcbiAgICB0aGlzLl9pc0FycmF5ID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzYyBUaGUgY2xhc3MgdHlwZS5cbiAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAqL1xuICAgIHRoaXMudHlwZSA9IHR5cGU7XG5cbiAgICBpZiAoVXRpbC5pc0FycmF5KGEpKSB7XG4gICAgICB0aGlzLl9pc0FycmF5ID0gdHJ1ZTtcbiAgICAgIHRoaXMuYSA9IGE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYSA9IFV0aWwuaW5pdFZhbHVlKGEsIDEpO1xuICAgICAgdGhpcy5iID0gVXRpbC5pbml0VmFsdWUoYiwgdGhpcy5hKTtcbiAgICAgIHRoaXMuX2NlbnRlciA9IFV0aWwuaW5pdFZhbHVlKGNlbnRlciwgZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTcGFuLmdldFZhbHVlIGZ1bmN0aW9uXG4gICAqIEBuYW1lIGdldCBhIHJhbmRvbSBOdW1iZXIgZnJvbSBhIHRvIGIuIE9yIGdldCBhIHJhbmRvbSBOdW1iZXIgZnJvbSBjLWEgdG8gYytiXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBJTlQgb3IgaW50XG4gICAqIEByZXR1cm4ge251bWJlcn0gYSByYW5kb20gTnVtYmVyXG4gICAqL1xuICBnZXRWYWx1ZShJTlQpIHtcbiAgICBpZiAodGhpcy5faXNBcnJheSkge1xuICAgICAgcmV0dXJuIHRoaXMuYVsodGhpcy5hLmxlbmd0aCAqIE1hdGgucmFuZG9tKCkpID4+IDBdO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIXRoaXMuX2NlbnRlcikgcmV0dXJuIE1hdGhVdGlscy5yYW5kb21BVG9CKHRoaXMuYSwgdGhpcy5iLCBJTlQpO1xuICAgICAgZWxzZSByZXR1cm4gTWF0aFV0aWxzLnJhbmRvbUZsb2F0aW5nKHRoaXMuYSwgdGhpcy5iLCBJTlQpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY29uc3QgY3JlYXRlU3BhbiA9IChhLCBiLCBjKSA9PiB7XG4gIGlmIChhIGluc3RhbmNlb2YgU3BhbikgcmV0dXJuIGE7XG5cbiAgaWYgKGIgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBuZXcgU3BhbihhKTtcbiAgfSBlbHNlIHtcbiAgICBpZiAoYyA9PT0gdW5kZWZpbmVkKSByZXR1cm4gbmV3IFNwYW4oYSwgYik7XG4gICAgZWxzZSByZXR1cm4gbmV3IFNwYW4oYSwgYiwgYyk7XG4gIH1cbn07XG4iXX0=
88
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tYXRoL1NwYW4uanMiXSwibmFtZXMiOlsiU3BhbiIsImEiLCJiIiwiY2VudGVyIiwiX2lzQXJyYXkiLCJ0eXBlIiwiVXRpbCIsImlzQXJyYXkiLCJpbml0VmFsdWUiLCJfY2VudGVyIiwiSU5UIiwibGVuZ3RoIiwiTWF0aCIsInJhbmRvbSIsIk1hdGhVdGlscyIsInJhbmRvbUFUb0IiLCJyYW5kb21GbG9hdGluZyIsImNyZWF0ZVNwYW4iLCJjIiwidW5kZWZpbmVkIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0lBRXFCQSxJO0FBQ25CO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDRSxnQkFBWUMsQ0FBWixFQUFlQyxDQUFmLEVBQWtCQyxNQUFsQixFQUEwQjtBQUFBO0FBQ3hCLFNBQUtDLFFBQUwsR0FBZ0IsS0FBaEI7QUFFQTtBQUNKO0FBQ0E7QUFDQTs7QUFDSSxTQUFLQyxJQUFMLEdBQVlBLHFCQUFaOztBQUVBLFFBQUlDLGlCQUFLQyxPQUFMLENBQWFOLENBQWIsQ0FBSixFQUFxQjtBQUNuQixXQUFLRyxRQUFMLEdBQWdCLElBQWhCO0FBQ0EsV0FBS0gsQ0FBTCxHQUFTQSxDQUFUO0FBQ0QsS0FIRCxNQUdPO0FBQ0wsV0FBS0EsQ0FBTCxHQUFTSyxpQkFBS0UsU0FBTCxDQUFlUCxDQUFmLEVBQWtCLENBQWxCLENBQVQ7QUFDQSxXQUFLQyxDQUFMLEdBQVNJLGlCQUFLRSxTQUFMLENBQWVOLENBQWYsRUFBa0IsS0FBS0QsQ0FBdkIsQ0FBVDtBQUNBLFdBQUtRLE9BQUwsR0FBZUgsaUJBQUtFLFNBQUwsQ0FBZUwsTUFBZixFQUF1QixLQUF2QixDQUFmO0FBQ0Q7QUFDRjtBQUVEO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7NkJBQ1dPLEcsRUFBSztBQUNaLFVBQUksS0FBS04sUUFBVCxFQUFtQjtBQUNqQixlQUFPLEtBQUtILENBQUwsQ0FBUSxLQUFLQSxDQUFMLENBQU9VLE1BQVAsR0FBZ0JDLElBQUksQ0FBQ0MsTUFBTCxFQUFqQixJQUFtQyxDQUExQyxDQUFQO0FBQ0QsT0FGRCxNQUVPO0FBQ0wsWUFBSSxDQUFDLEtBQUtKLE9BQVYsRUFBbUIsT0FBT0ssc0JBQVVDLFVBQVYsQ0FBcUIsS0FBS2QsQ0FBMUIsRUFBNkIsS0FBS0MsQ0FBbEMsRUFBcUNRLEdBQXJDLENBQVAsQ0FBbkIsS0FDSyxPQUFPSSxzQkFBVUUsY0FBVixDQUF5QixLQUFLZixDQUE5QixFQUFpQyxLQUFLQyxDQUF0QyxFQUF5Q1EsR0FBekMsQ0FBUDtBQUNOO0FBQ0Y7Ozs7Ozs7QUFHSSxJQUFNTyxVQUFVLEdBQUcsU0FBYkEsVUFBYSxDQUFDaEIsQ0FBRCxFQUFJQyxDQUFKLEVBQU9nQixDQUFQLEVBQWE7QUFDckMsTUFBSWpCLENBQUMsWUFBWUQsSUFBakIsRUFBdUIsT0FBT0MsQ0FBUDs7QUFFdkIsTUFBSUMsQ0FBQyxLQUFLaUIsU0FBVixFQUFxQjtBQUNuQixXQUFPLElBQUluQixJQUFKLENBQVNDLENBQVQsQ0FBUDtBQUNELEdBRkQsTUFFTztBQUNMLFFBQUlpQixDQUFDLEtBQUtDLFNBQVYsRUFBcUIsT0FBTyxJQUFJbkIsSUFBSixDQUFTQyxDQUFULEVBQVlDLENBQVosQ0FBUCxDQUFyQixLQUNLLE9BQU8sSUFBSUYsSUFBSixDQUFTQyxDQUFULEVBQVlDLENBQVosRUFBZWdCLENBQWYsQ0FBUDtBQUNOO0FBQ0YsQ0FUTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBNYXRoVXRpbHMgZnJvbSAnLi9NYXRoVXRpbHMnO1xuaW1wb3J0IFV0aWwgZnJvbSAnLi4vdXRpbHMvVXRpbCc7XG5pbXBvcnQgeyBNQVRIX1RZUEVfU1BBTiBhcyB0eXBlIH0gZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNwYW4ge1xuICAvKipcbiAgICogU3BhbiBDbGFzcy4gR2V0IGEgcmFuZG9tIE51bWJlciBmcm9tIGEgdG8gYi4gT3IgZnJvbSBjLWEgdG8gYytiXG4gICAqIEBwYXJhbSB7TnVtYmVyfEFycmF5fSBhIC0gbWluIG51bWJlclxuICAgKiBAcGFyYW0ge051bWJlcn0gYiAtIG1heCBudW1iZXJcbiAgICogQHBhcmFtIHtOdW1iZXJ9IGNlbnRlciAtIHRoZSBjZW50ZXIncyB6IHZhbHVlXG4gICAqIEBleGFtcGxlXG4gICAqIHZhciBzcGFuID0gbmV3IFNwYW4oMCwzMCk7XG4gICAqIG9yXG4gICAqIHZhciBzcGFuID0gbmV3IFNwYW4oW1wiI2ZmZlwiLFwiI2ZmMFwiLFwiIzAwMFwiXSk7XG4gICAqIG9yXG4gICAqIHZhciBzcGFuID0gbmV3IFNwYW4oNSwxLFwiY2VudGVyXCIpO1xuICAgKiBAZXh0ZW5kcyB7Wm9uZX1cbiAgICogQGNvbnN0cnVjdG9yXG4gICAqL1xuICBjb25zdHJ1Y3RvcihhLCBiLCBjZW50ZXIpIHtcbiAgICB0aGlzLl9pc0FycmF5ID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzYyBUaGUgY2xhc3MgdHlwZS5cbiAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAqL1xuICAgIHRoaXMudHlwZSA9IHR5cGU7XG5cbiAgICBpZiAoVXRpbC5pc0FycmF5KGEpKSB7XG4gICAgICB0aGlzLl9pc0FycmF5ID0gdHJ1ZTtcbiAgICAgIHRoaXMuYSA9IGE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYSA9IFV0aWwuaW5pdFZhbHVlKGEsIDEpO1xuICAgICAgdGhpcy5iID0gVXRpbC5pbml0VmFsdWUoYiwgdGhpcy5hKTtcbiAgICAgIHRoaXMuX2NlbnRlciA9IFV0aWwuaW5pdFZhbHVlKGNlbnRlciwgZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTcGFuLmdldFZhbHVlIGZ1bmN0aW9uXG4gICAqIEBuYW1lIGdldCBhIHJhbmRvbSBOdW1iZXIgZnJvbSBhIHRvIGIuIE9yIGdldCBhIHJhbmRvbSBOdW1iZXIgZnJvbSBjLWEgdG8gYytiXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBJTlQgb3IgaW50XG4gICAqIEByZXR1cm4ge251bWJlcn0gYSByYW5kb20gTnVtYmVyXG4gICAqL1xuICBnZXRWYWx1ZShJTlQpIHtcbiAgICBpZiAodGhpcy5faXNBcnJheSkge1xuICAgICAgcmV0dXJuIHRoaXMuYVsodGhpcy5hLmxlbmd0aCAqIE1hdGgucmFuZG9tKCkpID4+IDBdO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIXRoaXMuX2NlbnRlcikgcmV0dXJuIE1hdGhVdGlscy5yYW5kb21BVG9CKHRoaXMuYSwgdGhpcy5iLCBJTlQpO1xuICAgICAgZWxzZSByZXR1cm4gTWF0aFV0aWxzLnJhbmRvbUZsb2F0aW5nKHRoaXMuYSwgdGhpcy5iLCBJTlQpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY29uc3QgY3JlYXRlU3BhbiA9IChhLCBiLCBjKSA9PiB7XG4gIGlmIChhIGluc3RhbmNlb2YgU3BhbikgcmV0dXJuIGE7XG5cbiAgaWYgKGIgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBuZXcgU3BhbihhKTtcbiAgfSBlbHNlIHtcbiAgICBpZiAoYyA9PT0gdW5kZWZpbmVkKSByZXR1cm4gbmV3IFNwYW4oYSwgYik7XG4gICAgZWxzZSByZXR1cm4gbmV3IFNwYW4oYSwgYiwgYyk7XG4gIH1cbn07XG4iXX0=
@@ -21,7 +21,7 @@ var _three = require("../core/three/");
21
21
 
22
22
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
23
23
 
24
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
24
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
25
25
 
26
26
  var Vector3D = /*#__PURE__*/function (_Vector) {
27
27
  (0, _inherits2["default"])(Vector3D, _Vector);
@@ -32,4 +32,4 @@ var INTEGRATION_TYPE_RK4 = 'RUNGE_KUTTA_4';
32
32
  exports.INTEGRATION_TYPE_RK4 = INTEGRATION_TYPE_RK4;
33
33
  var INTEGRATION_TYPE_VERLET = 'VERLET';
34
34
  exports.INTEGRATION_TYPE_VERLET = INTEGRATION_TYPE_VERLET;
35
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tYXRoL2NvbnN0YW50cy5qcyJdLCJuYW1lcyI6WyJJTlRFR1JBVElPTl9UWVBFX0VVTEVSIiwiSU5URUdSQVRJT05fVFlQRV9SSzIiLCJJTlRFR1JBVElPTl9UWVBFX1JLNCIsIklOVEVHUkFUSU9OX1RZUEVfVkVSTEVUIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7Ozs7QUFJTyxJQUFNQSxzQkFBc0IsR0FBRyxPQUEvQjtBQUVQOzs7Ozs7QUFJTyxJQUFNQyxvQkFBb0IsR0FBRyxlQUE3QjtBQUVQOzs7Ozs7QUFJTyxJQUFNQyxvQkFBb0IsR0FBRyxlQUE3QjtBQUVQOzs7Ozs7QUFJTyxJQUFNQyx1QkFBdUIsR0FBRyxRQUFoQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9FdWxlcl9tZXRob2RcbiAqIEB0eXBlIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBjb25zdCBJTlRFR1JBVElPTl9UWVBFX0VVTEVSID0gJ0VVTEVSJztcblxuLyoqXG4gKiBAc2VlIGh0dHA6Ly93ZWIubWl0LmVkdS8xMC4wMDEvV2ViL0NvdXJzZV9Ob3Rlcy9EaWZmZXJlbnRpYWxfRXF1YXRpb25zX05vdGVzL25vZGU1Lmh0bWxcbiAqIEB0eXBlIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBjb25zdCBJTlRFR1JBVElPTl9UWVBFX1JLMiA9ICdSVU5HRV9LVVRUQV8yJztcblxuLyoqXG4gKiBAc2VlIGh0dHA6Ly93ZWIubWl0LmVkdS8xMC4wMDEvV2ViL0NvdXJzZV9Ob3Rlcy9EaWZmZXJlbnRpYWxfRXF1YXRpb25zX05vdGVzL25vZGU1Lmh0bWxcbiAqIEB0eXBlIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBjb25zdCBJTlRFR1JBVElPTl9UWVBFX1JLNCA9ICdSVU5HRV9LVVRUQV80JztcblxuLyoqXG4gKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1ZlcmxldF9pbnRlZ3JhdGlvblxuICogQHR5cGUge3N0cmluZ31cbiAqL1xuZXhwb3J0IGNvbnN0IElOVEVHUkFUSU9OX1RZUEVfVkVSTEVUID0gJ1ZFUkxFVCc7XG4iXX0=
35
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tYXRoL2NvbnN0YW50cy5qcyJdLCJuYW1lcyI6WyJJTlRFR1JBVElPTl9UWVBFX0VVTEVSIiwiSU5URUdSQVRJT05fVFlQRV9SSzIiLCJJTlRFR1JBVElPTl9UWVBFX1JLNCIsIklOVEVHUkFUSU9OX1RZUEVfVkVSTEVUIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDTyxJQUFNQSxzQkFBc0IsR0FBRyxPQUEvQjtBQUVQO0FBQ0E7QUFDQTtBQUNBOzs7QUFDTyxJQUFNQyxvQkFBb0IsR0FBRyxlQUE3QjtBQUVQO0FBQ0E7QUFDQTtBQUNBOzs7QUFDTyxJQUFNQyxvQkFBb0IsR0FBRyxlQUE3QjtBQUVQO0FBQ0E7QUFDQTtBQUNBOzs7QUFDTyxJQUFNQyx1QkFBdUIsR0FBRyxRQUFoQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9FdWxlcl9tZXRob2RcbiAqIEB0eXBlIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBjb25zdCBJTlRFR1JBVElPTl9UWVBFX0VVTEVSID0gJ0VVTEVSJztcblxuLyoqXG4gKiBAc2VlIGh0dHA6Ly93ZWIubWl0LmVkdS8xMC4wMDEvV2ViL0NvdXJzZV9Ob3Rlcy9EaWZmZXJlbnRpYWxfRXF1YXRpb25zX05vdGVzL25vZGU1Lmh0bWxcbiAqIEB0eXBlIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBjb25zdCBJTlRFR1JBVElPTl9UWVBFX1JLMiA9ICdSVU5HRV9LVVRUQV8yJztcblxuLyoqXG4gKiBAc2VlIGh0dHA6Ly93ZWIubWl0LmVkdS8xMC4wMDEvV2ViL0NvdXJzZV9Ob3Rlcy9EaWZmZXJlbnRpYWxfRXF1YXRpb25zX05vdGVzL25vZGU1Lmh0bWxcbiAqIEB0eXBlIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBjb25zdCBJTlRFR1JBVElPTl9UWVBFX1JLNCA9ICdSVU5HRV9LVVRUQV80JztcblxuLyoqXG4gKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1ZlcmxldF9pbnRlZ3JhdGlvblxuICogQHR5cGUge3N0cmluZ31cbiAqL1xuZXhwb3J0IGNvbnN0IElOVEVHUkFUSU9OX1RZUEVfVkVSTEVUID0gJ1ZFUkxFVCc7XG4iXX0=
@@ -2,7 +2,7 @@
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
4
 
5
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
6
 
7
7
  Object.defineProperty(exports, "__esModule", {
8
8
  value: true
@@ -115,4 +115,8 @@ var _Span = _interopRequireWildcard(require("./Span"));
115
115
  var _Vector3D = _interopRequireDefault(require("./Vector3D"));
116
116
 
117
117
  var _constants = require("./constants");
118
+
119
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
120
+
121
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
118
122
  //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tYXRoL2luZGV4LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IGRlZmF1bHQgYXMgQXJyYXlTcGFuLCBjcmVhdGVBcnJheVNwYW4gfSBmcm9tICcuL0FycmF5U3Bhbic7XG5leHBvcnQgeyBkZWZhdWx0IGFzIENvbG9yU3BhbiwgY3JlYXRlQ29sb3JTcGFuIH0gZnJvbSAnLi9Db2xvclNwYW4nO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBCb3ggfSBmcm9tICcuL0JveCc7XG5leHBvcnQgeyBpbnRlZ3JhdGUgfSBmcm9tICcuL2ludGVncmF0aW9uJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgTWF0aFV0aWxzIH0gZnJvbSAnLi9NYXRoVXRpbHMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBQb2xhcjNEIH0gZnJvbSAnLi9Qb2xhcjNEJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgU3BhbiwgY3JlYXRlU3BhbiB9IGZyb20gJy4vU3Bhbic7XG5leHBvcnQgeyBkZWZhdWx0IGFzIFZlY3RvcjNEIH0gZnJvbSAnLi9WZWN0b3IzRCc7XG5leHBvcnQge1xuICBJTlRFR1JBVElPTl9UWVBFX0VVTEVSLFxuICBJTlRFR1JBVElPTl9UWVBFX1JLMixcbiAgSU5URUdSQVRJT05fVFlQRV9SSzQsXG4gIElOVEVHUkFUSU9OX1RZUEVfVkVSTEVUXG59IGZyb20gJy4vY29uc3RhbnRzJztcbiJdfQ==
@@ -56,4 +56,4 @@ var integrate = function integrate(particle, time, damping) {
56
56
  };
57
57
 
58
58
  exports.integrate = integrate;
59
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tYXRoL2ludGVncmF0aW9uLmpzIl0sIm5hbWVzIjpbImV1bGVySW50ZWdyYXRpb24iLCJwYXJ0aWNsZSIsInRpbWUiLCJkYW1waW5nIiwic2xlZXAiLCJvbGQiLCJwb3NpdGlvbiIsImNvcHkiLCJ2ZWxvY2l0eSIsImFjY2VsZXJhdGlvbiIsInNjYWxhciIsIm1hc3MiLCJhZGQiLCJNYXRoIiwicG93IiwiREVGQVVMVF9TWVNURU1fREVMVEEiLCJjbGVhciIsImludGVncmF0ZSIsInR5cGUiLCJJTlRFR1JBVElPTl9UWVBFX0VVTEVSIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBQ0E7O0FBRUE7Ozs7Ozs7O0FBUUEsSUFBTUEsZ0JBQWdCLEdBQUcsU0FBbkJBLGdCQUFtQixDQUFDQyxRQUFELEVBQVdDLElBQVgsRUFBaUJDLE9BQWpCLEVBQTZCO0FBQ3BELE1BQUlGLFFBQVEsQ0FBQ0csS0FBYixFQUFvQjtBQUNsQjtBQUNEOztBQUVESCxFQUFBQSxRQUFRLENBQUNJLEdBQVQsQ0FBYUMsUUFBYixDQUFzQkMsSUFBdEIsQ0FBMkJOLFFBQVEsQ0FBQ0ssUUFBcEM7QUFDQUwsRUFBQUEsUUFBUSxDQUFDSSxHQUFULENBQWFHLFFBQWIsQ0FBc0JELElBQXRCLENBQTJCTixRQUFRLENBQUNPLFFBQXBDO0FBQ0FQLEVBQUFBLFFBQVEsQ0FBQ1EsWUFBVCxDQUFzQkMsTUFBdEIsQ0FBNkIsSUFBSVQsUUFBUSxDQUFDVSxJQUExQztBQUNBVixFQUFBQSxRQUFRLENBQUNPLFFBQVQsQ0FBa0JJLEdBQWxCLENBQXNCWCxRQUFRLENBQUNRLFlBQVQsQ0FBc0JDLE1BQXRCLENBQTZCUixJQUE3QixDQUF0QjtBQUNBRCxFQUFBQSxRQUFRLENBQUNLLFFBQVQsQ0FBa0JNLEdBQWxCLENBQXNCWCxRQUFRLENBQUNJLEdBQVQsQ0FBYUcsUUFBYixDQUFzQkUsTUFBdEIsQ0FBNkJSLElBQTdCLENBQXRCO0FBQ0FDLEVBQUFBLE9BQU8sSUFDTEYsUUFBUSxDQUFDTyxRQUFULENBQWtCRSxNQUFsQixDQUF5QkcsSUFBSSxDQUFDQyxHQUFMLENBQVNYLE9BQVQsRUFBa0JELElBQUksR0FBR2EsZ0NBQXpCLENBQXpCLENBREY7QUFFQWQsRUFBQUEsUUFBUSxDQUFDUSxZQUFULENBQXNCTyxLQUF0QjtBQUNELENBYkQ7QUFlQTs7Ozs7Ozs7Ozs7O0FBVU8sSUFBTUMsU0FBUyxHQUFHLFNBQVpBLFNBQVksQ0FDdkJoQixRQUR1QixFQUV2QkMsSUFGdUIsRUFHdkJDLE9BSHVCLEVBS3BCO0FBQUEsTUFESGUsSUFDRyx1RUFESUMsaUNBQ0o7O0FBQ0gsVUFBUUQsSUFBUjtBQUNFLFNBQUtDLGlDQUFMO0FBQ0VuQixNQUFBQSxnQkFBZ0IsQ0FBQ0MsUUFBRCxFQUFXQyxJQUFYLEVBQWlCQyxPQUFqQixDQUFoQjtBQUNBOztBQUNGO0FBQ0VILE1BQUFBLGdCQUFnQixDQUFDQyxRQUFELEVBQVdDLElBQVgsRUFBaUJDLE9BQWpCLENBQWhCO0FBTEo7QUFPRCxDQWJNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSU5URUdSQVRJT05fVFlQRV9FVUxFUiB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IERFRkFVTFRfU1lTVEVNX0RFTFRBIH0gZnJvbSAnLi4vY29yZS9jb25zdGFudHMnO1xuXG4vKipcbiAqIFBlcmZvcm1zIGV1bGVyIGludGVncmF0aW9uIG9uIHRoZSBwYXJ0aWNsZS5cbiAqXG4gKiBAcGFyYW0ge1BhcnRpY2xlfSBwYXJ0aWNsZSAtIFRoZSBwYXJ0aWNsZSB0byBpbnRlZ3JhdGVcbiAqIEBwYXJhbSB7bnVtYmVyfSB0aW1lIC0gVGhlIGZhY3RvciBvZiB0aW1lIHRvIHVzZVxuICogQHBhcmFtIHtudW1iZXJ9IGRhbXBpbmcgLSBUaGUgZGFtcGluZyB0byB1c2VcbiAqIEByZXR1cm4gdm9pZFxuICovXG5jb25zdCBldWxlckludGVncmF0aW9uID0gKHBhcnRpY2xlLCB0aW1lLCBkYW1waW5nKSA9PiB7XG4gIGlmIChwYXJ0aWNsZS5zbGVlcCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHBhcnRpY2xlLm9sZC5wb3NpdGlvbi5jb3B5KHBhcnRpY2xlLnBvc2l0aW9uKTtcbiAgcGFydGljbGUub2xkLnZlbG9jaXR5LmNvcHkocGFydGljbGUudmVsb2NpdHkpO1xuICBwYXJ0aWNsZS5hY2NlbGVyYXRpb24uc2NhbGFyKDEgLyBwYXJ0aWNsZS5tYXNzKTtcbiAgcGFydGljbGUudmVsb2NpdHkuYWRkKHBhcnRpY2xlLmFjY2VsZXJhdGlvbi5zY2FsYXIodGltZSkpO1xuICBwYXJ0aWNsZS5wb3NpdGlvbi5hZGQocGFydGljbGUub2xkLnZlbG9jaXR5LnNjYWxhcih0aW1lKSk7XG4gIGRhbXBpbmcgJiZcbiAgICBwYXJ0aWNsZS52ZWxvY2l0eS5zY2FsYXIoTWF0aC5wb3coZGFtcGluZywgdGltZSAvIERFRkFVTFRfU1lTVEVNX0RFTFRBKSk7XG4gIHBhcnRpY2xlLmFjY2VsZXJhdGlvbi5jbGVhcigpO1xufTtcblxuLyoqXG4gKiBQZXJmb3JtcyB0aGUgY2hvc2VuIGludGVncmF0aW9uIG9uIHRoZSBwYXJ0aWNsZS5cbiAqIERlZmF1bHRzIHRvIGV1bGVyIGludGVncmF0aW9uLlxuICpcbiAqIEBwYXJhbSB7UGFydGljbGV9IHBhcnRpY2xlIC0gVGhlIHBhcnRpY2xlIHRvIGludGVncmF0ZVxuICogQHBhcmFtIHtudW1iZXJ9IHRpbWUgLSBUaGUgZmFjdG9yIG9mIHRpbWUgdG8gdXNlXG4gKiBAcGFyYW0ge251bWJlcn0gZGFtcGluZyAtIFRoZSBkYW1waW5nIHRvIHVzZVxuICogQHBhcmFtIHtzdHJpbmd9IFt0eXBlPUlOVEVHUkFUSU9OX1RZUEVfRVVMRVJdIC0gVGhlIGFsZ29yaXRobSB0byB1c2VcbiAqIEByZXR1cm4gdm9pZFxuICovXG5leHBvcnQgY29uc3QgaW50ZWdyYXRlID0gKFxuICBwYXJ0aWNsZSxcbiAgdGltZSxcbiAgZGFtcGluZyxcbiAgdHlwZSA9IElOVEVHUkFUSU9OX1RZUEVfRVVMRVJcbikgPT4ge1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIElOVEVHUkFUSU9OX1RZUEVfRVVMRVI6XG4gICAgICBldWxlckludGVncmF0aW9uKHBhcnRpY2xlLCB0aW1lLCBkYW1waW5nKTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBldWxlckludGVncmF0aW9uKHBhcnRpY2xlLCB0aW1lLCBkYW1waW5nKTtcbiAgfVxufTtcbiJdfQ==
59
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tYXRoL2ludGVncmF0aW9uLmpzIl0sIm5hbWVzIjpbImV1bGVySW50ZWdyYXRpb24iLCJwYXJ0aWNsZSIsInRpbWUiLCJkYW1waW5nIiwic2xlZXAiLCJvbGQiLCJwb3NpdGlvbiIsImNvcHkiLCJ2ZWxvY2l0eSIsImFjY2VsZXJhdGlvbiIsInNjYWxhciIsIm1hc3MiLCJhZGQiLCJNYXRoIiwicG93IiwiREVGQVVMVF9TWVNURU1fREVMVEEiLCJjbGVhciIsImludGVncmF0ZSIsInR5cGUiLCJJTlRFR1JBVElPTl9UWVBFX0VVTEVSIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQU1BLGdCQUFnQixHQUFHLFNBQW5CQSxnQkFBbUIsQ0FBQ0MsUUFBRCxFQUFXQyxJQUFYLEVBQWlCQyxPQUFqQixFQUE2QjtBQUNwRCxNQUFJRixRQUFRLENBQUNHLEtBQWIsRUFBb0I7QUFDbEI7QUFDRDs7QUFFREgsRUFBQUEsUUFBUSxDQUFDSSxHQUFULENBQWFDLFFBQWIsQ0FBc0JDLElBQXRCLENBQTJCTixRQUFRLENBQUNLLFFBQXBDO0FBQ0FMLEVBQUFBLFFBQVEsQ0FBQ0ksR0FBVCxDQUFhRyxRQUFiLENBQXNCRCxJQUF0QixDQUEyQk4sUUFBUSxDQUFDTyxRQUFwQztBQUNBUCxFQUFBQSxRQUFRLENBQUNRLFlBQVQsQ0FBc0JDLE1BQXRCLENBQTZCLElBQUlULFFBQVEsQ0FBQ1UsSUFBMUM7QUFDQVYsRUFBQUEsUUFBUSxDQUFDTyxRQUFULENBQWtCSSxHQUFsQixDQUFzQlgsUUFBUSxDQUFDUSxZQUFULENBQXNCQyxNQUF0QixDQUE2QlIsSUFBN0IsQ0FBdEI7QUFDQUQsRUFBQUEsUUFBUSxDQUFDSyxRQUFULENBQWtCTSxHQUFsQixDQUFzQlgsUUFBUSxDQUFDSSxHQUFULENBQWFHLFFBQWIsQ0FBc0JFLE1BQXRCLENBQTZCUixJQUE3QixDQUF0QjtBQUNBQyxFQUFBQSxPQUFPLElBQ0xGLFFBQVEsQ0FBQ08sUUFBVCxDQUFrQkUsTUFBbEIsQ0FBeUJHLElBQUksQ0FBQ0MsR0FBTCxDQUFTWCxPQUFULEVBQWtCRCxJQUFJLEdBQUdhLGdDQUF6QixDQUF6QixDQURGO0FBRUFkLEVBQUFBLFFBQVEsQ0FBQ1EsWUFBVCxDQUFzQk8sS0FBdEI7QUFDRCxDQWJEO0FBZUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNPLElBQU1DLFNBQVMsR0FBRyxTQUFaQSxTQUFZLENBQ3ZCaEIsUUFEdUIsRUFFdkJDLElBRnVCLEVBR3ZCQyxPQUh1QixFQUtwQjtBQUFBLE1BREhlLElBQ0csdUVBRElDLGlDQUNKOztBQUNILFVBQVFELElBQVI7QUFDRSxTQUFLQyxpQ0FBTDtBQUNFbkIsTUFBQUEsZ0JBQWdCLENBQUNDLFFBQUQsRUFBV0MsSUFBWCxFQUFpQkMsT0FBakIsQ0FBaEI7QUFDQTs7QUFDRjtBQUNFSCxNQUFBQSxnQkFBZ0IsQ0FBQ0MsUUFBRCxFQUFXQyxJQUFYLEVBQWlCQyxPQUFqQixDQUFoQjtBQUxKO0FBT0QsQ0FiTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElOVEVHUkFUSU9OX1RZUEVfRVVMRVIgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBERUZBVUxUX1NZU1RFTV9ERUxUQSB9IGZyb20gJy4uL2NvcmUvY29uc3RhbnRzJztcblxuLyoqXG4gKiBQZXJmb3JtcyBldWxlciBpbnRlZ3JhdGlvbiBvbiB0aGUgcGFydGljbGUuXG4gKlxuICogQHBhcmFtIHtQYXJ0aWNsZX0gcGFydGljbGUgLSBUaGUgcGFydGljbGUgdG8gaW50ZWdyYXRlXG4gKiBAcGFyYW0ge251bWJlcn0gdGltZSAtIFRoZSBmYWN0b3Igb2YgdGltZSB0byB1c2VcbiAqIEBwYXJhbSB7bnVtYmVyfSBkYW1waW5nIC0gVGhlIGRhbXBpbmcgdG8gdXNlXG4gKiBAcmV0dXJuIHZvaWRcbiAqL1xuY29uc3QgZXVsZXJJbnRlZ3JhdGlvbiA9IChwYXJ0aWNsZSwgdGltZSwgZGFtcGluZykgPT4ge1xuICBpZiAocGFydGljbGUuc2xlZXApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBwYXJ0aWNsZS5vbGQucG9zaXRpb24uY29weShwYXJ0aWNsZS5wb3NpdGlvbik7XG4gIHBhcnRpY2xlLm9sZC52ZWxvY2l0eS5jb3B5KHBhcnRpY2xlLnZlbG9jaXR5KTtcbiAgcGFydGljbGUuYWNjZWxlcmF0aW9uLnNjYWxhcigxIC8gcGFydGljbGUubWFzcyk7XG4gIHBhcnRpY2xlLnZlbG9jaXR5LmFkZChwYXJ0aWNsZS5hY2NlbGVyYXRpb24uc2NhbGFyKHRpbWUpKTtcbiAgcGFydGljbGUucG9zaXRpb24uYWRkKHBhcnRpY2xlLm9sZC52ZWxvY2l0eS5zY2FsYXIodGltZSkpO1xuICBkYW1waW5nICYmXG4gICAgcGFydGljbGUudmVsb2NpdHkuc2NhbGFyKE1hdGgucG93KGRhbXBpbmcsIHRpbWUgLyBERUZBVUxUX1NZU1RFTV9ERUxUQSkpO1xuICBwYXJ0aWNsZS5hY2NlbGVyYXRpb24uY2xlYXIoKTtcbn07XG5cbi8qKlxuICogUGVyZm9ybXMgdGhlIGNob3NlbiBpbnRlZ3JhdGlvbiBvbiB0aGUgcGFydGljbGUuXG4gKiBEZWZhdWx0cyB0byBldWxlciBpbnRlZ3JhdGlvbi5cbiAqXG4gKiBAcGFyYW0ge1BhcnRpY2xlfSBwYXJ0aWNsZSAtIFRoZSBwYXJ0aWNsZSB0byBpbnRlZ3JhdGVcbiAqIEBwYXJhbSB7bnVtYmVyfSB0aW1lIC0gVGhlIGZhY3RvciBvZiB0aW1lIHRvIHVzZVxuICogQHBhcmFtIHtudW1iZXJ9IGRhbXBpbmcgLSBUaGUgZGFtcGluZyB0byB1c2VcbiAqIEBwYXJhbSB7c3RyaW5nfSBbdHlwZT1JTlRFR1JBVElPTl9UWVBFX0VVTEVSXSAtIFRoZSBhbGdvcml0aG0gdG8gdXNlXG4gKiBAcmV0dXJuIHZvaWRcbiAqL1xuZXhwb3J0IGNvbnN0IGludGVncmF0ZSA9IChcbiAgcGFydGljbGUsXG4gIHRpbWUsXG4gIGRhbXBpbmcsXG4gIHR5cGUgPSBJTlRFR1JBVElPTl9UWVBFX0VVTEVSXG4pID0+IHtcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBJTlRFR1JBVElPTl9UWVBFX0VVTEVSOlxuICAgICAgZXVsZXJJbnRlZ3JhdGlvbihwYXJ0aWNsZSwgdGltZSwgZGFtcGluZyk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgZXVsZXJJbnRlZ3JhdGlvbihwYXJ0aWNsZSwgdGltZSwgZGFtcGluZyk7XG4gIH1cbn07XG4iXX0=
@@ -105,4 +105,4 @@ var BaseRenderer = /*#__PURE__*/function () {
105
105
  }();
106
106
 
107
107
  exports["default"] = BaseRenderer;
108
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9yZW5kZXJlci9CYXNlUmVuZGVyZXIuanMiXSwibmFtZXMiOlsiQmFzZVJlbmRlcmVyIiwidHlwZSIsIlJFTkRFUkVSX1RZUEVfQkFTRSIsInN5c3RlbSIsInNlbGYiLCJldmVudERpc3BhdGNoZXIiLCJhZGRFdmVudExpc3RlbmVyIiwiU1lTVEVNX1VQREFURSIsIm9uU3lzdGVtVXBkYXRlIiwiY2FsbCIsIlBBUlRJQ0xFX0NSRUFURUQiLCJwYXJ0aWNsZSIsIm9uUGFydGljbGVDcmVhdGVkIiwiUEFSVElDTEVfVVBEQVRFIiwib25QYXJ0aWNsZVVwZGF0ZSIsIlBBUlRJQ0xFX0RFQUQiLCJvblBhcnRpY2xlRGVhZCIsImxvZ1JlbmRlcmVyVHlwZSIsIl9fREVWX18iLCJjb25zb2xlIiwibG9nIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQUE7O0FBT0E7O0FBQ0E7O0lBRXFCQSxZO0FBQ25CLDBCQUF1QztBQUFBLFFBQTNCQyxJQUEyQix1RUFBcEJDLHlCQUFvQjtBQUFBOztBQUNyQzs7OztBQUlBLFNBQUtELElBQUwsR0FBWUEsSUFBWjtBQUNEOzs7O3lCQUVJRSxNLEVBQVE7QUFDWCxVQUFJQyxJQUFJLEdBQUcsSUFBWDtBQUVBLFdBQUtELE1BQUwsR0FBY0EsTUFBZDtBQUVBLFdBQUtBLE1BQUwsQ0FBWUUsZUFBWixDQUE0QkMsZ0JBQTVCLENBQTZDQyx3QkFBN0MsRUFBNEQsVUFDMURKLE1BRDBELEVBRTFEO0FBQ0FDLFFBQUFBLElBQUksQ0FBQ0ksY0FBTCxDQUFvQkMsSUFBcEIsQ0FBeUJMLElBQXpCLEVBQStCRCxNQUEvQjtBQUNELE9BSkQ7QUFNQSxXQUFLQSxNQUFMLENBQVlFLGVBQVosQ0FBNEJDLGdCQUE1QixDQUE2Q0ksMkJBQTdDLEVBQStELFVBQzdEQyxRQUQ2RCxFQUU3RDtBQUNBUCxRQUFBQSxJQUFJLENBQUNRLGlCQUFMLENBQXVCSCxJQUF2QixDQUE0QkwsSUFBNUIsRUFBa0NPLFFBQWxDO0FBQ0QsT0FKRDtBQU1BLFdBQUtSLE1BQUwsQ0FBWUUsZUFBWixDQUE0QkMsZ0JBQTVCLENBQTZDTywwQkFBN0MsRUFBOEQsVUFDNURGLFFBRDRELEVBRTVEO0FBQ0FQLFFBQUFBLElBQUksQ0FBQ1UsZ0JBQUwsQ0FBc0JMLElBQXRCLENBQTJCTCxJQUEzQixFQUFpQ08sUUFBakM7QUFDRCxPQUpEO0FBTUEsV0FBS1IsTUFBTCxDQUFZRSxlQUFaLENBQTRCQyxnQkFBNUIsQ0FBNkNTLHdCQUE3QyxFQUE0RCxVQUMxREosUUFEMEQsRUFFMUQ7QUFDQVAsUUFBQUEsSUFBSSxDQUFDWSxjQUFMLENBQW9CUCxJQUFwQixDQUF5QkwsSUFBekIsRUFBK0JPLFFBQS9CO0FBQ0QsT0FKRDtBQU1BLFdBQUtNLGVBQUw7QUFDRDs7OzZCQUVRO0FBQ1AsV0FBS2QsTUFBTCxHQUFjLElBQWQ7QUFDRDtBQUVEOzs7Ozs7c0NBR2tCUSxRLEVBQVUsQ0FBRSxDLENBQUM7O0FBRS9COzs7Ozs7cUNBR2lCQSxRLEVBQVUsQ0FBRSxDLENBQUM7O0FBRTlCOzs7Ozs7bUNBR2VBLFEsRUFBVSxDQUFFLEMsQ0FBQzs7QUFFNUI7Ozs7OzttQ0FHZVIsTSxFQUFRLENBQUUsQyxDQUFDOztBQUUxQjs7Ozs7Ozs7c0NBS2tCO0FBQ2hCLFVBQUksQ0FBQ2UsbUJBQUwsRUFBYztBQUNaO0FBQ0Q7O0FBRURDLE1BQUFBLE9BQU8sQ0FBQ0MsR0FBUixXQUFlLEtBQUtuQixJQUFwQjtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgUEFSVElDTEVfQ1JFQVRFRCxcbiAgUEFSVElDTEVfREVBRCxcbiAgUEFSVElDTEVfVVBEQVRFLFxuICBTWVNURU1fVVBEQVRFLFxufSBmcm9tICcuLi9ldmVudHMvY29uc3RhbnRzJztcblxuaW1wb3J0IHsgUkVOREVSRVJfVFlQRV9CQVNFIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBfX0RFVl9fIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQmFzZVJlbmRlcmVyIHtcbiAgY29uc3RydWN0b3IodHlwZSA9IFJFTkRFUkVSX1RZUEVfQkFTRSkge1xuICAgIC8qKlxuICAgICAqIEBkZXNjIFRoZSBjbGFzcyB0eXBlLlxuICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICovXG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgfVxuXG4gIGluaXQoc3lzdGVtKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgdGhpcy5zeXN0ZW0gPSBzeXN0ZW07XG5cbiAgICB0aGlzLnN5c3RlbS5ldmVudERpc3BhdGNoZXIuYWRkRXZlbnRMaXN0ZW5lcihTWVNURU1fVVBEQVRFLCBmdW5jdGlvbihcbiAgICAgIHN5c3RlbVxuICAgICkge1xuICAgICAgc2VsZi5vblN5c3RlbVVwZGF0ZS5jYWxsKHNlbGYsIHN5c3RlbSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnN5c3RlbS5ldmVudERpc3BhdGNoZXIuYWRkRXZlbnRMaXN0ZW5lcihQQVJUSUNMRV9DUkVBVEVELCBmdW5jdGlvbihcbiAgICAgIHBhcnRpY2xlXG4gICAgKSB7XG4gICAgICBzZWxmLm9uUGFydGljbGVDcmVhdGVkLmNhbGwoc2VsZiwgcGFydGljbGUpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5zeXN0ZW0uZXZlbnREaXNwYXRjaGVyLmFkZEV2ZW50TGlzdGVuZXIoUEFSVElDTEVfVVBEQVRFLCBmdW5jdGlvbihcbiAgICAgIHBhcnRpY2xlXG4gICAgKSB7XG4gICAgICBzZWxmLm9uUGFydGljbGVVcGRhdGUuY2FsbChzZWxmLCBwYXJ0aWNsZSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnN5c3RlbS5ldmVudERpc3BhdGNoZXIuYWRkRXZlbnRMaXN0ZW5lcihQQVJUSUNMRV9ERUFELCBmdW5jdGlvbihcbiAgICAgIHBhcnRpY2xlXG4gICAgKSB7XG4gICAgICBzZWxmLm9uUGFydGljbGVEZWFkLmNhbGwoc2VsZiwgcGFydGljbGUpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5sb2dSZW5kZXJlclR5cGUoKTtcbiAgfVxuXG4gIHJlbW92ZSgpIHtcbiAgICB0aGlzLnN5c3RlbSA9IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogQGFic3RyYWN0XG4gICAqL1xuICBvblBhcnRpY2xlQ3JlYXRlZChwYXJ0aWNsZSkge30gLy8gZXNsaW50LWRpc2FibGUtbGluZVxuXG4gIC8qKlxuICAgKiBAYWJzdHJhY3RcbiAgICovXG4gIG9uUGFydGljbGVVcGRhdGUocGFydGljbGUpIHt9IC8vIGVzbGludC1kaXNhYmxlLWxpbmVcblxuICAvKipcbiAgICogQGFic3RyYWN0XG4gICAqL1xuICBvblBhcnRpY2xlRGVhZChwYXJ0aWNsZSkge30gLy8gZXNsaW50LWRpc2FibGUtbGluZVxuXG4gIC8qKlxuICAgKiBAYWJzdHJhY3RcbiAgICovXG4gIG9uU3lzdGVtVXBkYXRlKHN5c3RlbSkge30gLy8gZXNsaW50LWRpc2FibGUtbGluZVxuXG4gIC8qKlxuICAgKiBMb2dzIHRoZSByZW5kZXJlciB0eXBlIGJlaW5nIHVzZWQgd2hlbiBpbiBkZXZlbG9wbWVudCBtb2RlLlxuICAgKlxuICAgKiBAcmV0dXJuIHZvaWRcbiAgICovXG4gIGxvZ1JlbmRlcmVyVHlwZSgpIHtcbiAgICBpZiAoIV9fREVWX18pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zb2xlLmxvZyhgJHt0aGlzLnR5cGV9YCk7XG4gIH1cbn1cbiJdfQ==
108
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9yZW5kZXJlci9CYXNlUmVuZGVyZXIuanMiXSwibmFtZXMiOlsiQmFzZVJlbmRlcmVyIiwidHlwZSIsIlJFTkRFUkVSX1RZUEVfQkFTRSIsInN5c3RlbSIsInNlbGYiLCJldmVudERpc3BhdGNoZXIiLCJhZGRFdmVudExpc3RlbmVyIiwiU1lTVEVNX1VQREFURSIsIm9uU3lzdGVtVXBkYXRlIiwiY2FsbCIsIlBBUlRJQ0xFX0NSRUFURUQiLCJwYXJ0aWNsZSIsIm9uUGFydGljbGVDcmVhdGVkIiwiUEFSVElDTEVfVVBEQVRFIiwib25QYXJ0aWNsZVVwZGF0ZSIsIlBBUlRJQ0xFX0RFQUQiLCJvblBhcnRpY2xlRGVhZCIsImxvZ1JlbmRlcmVyVHlwZSIsIl9fREVWX18iLCJjb25zb2xlIiwibG9nIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQUE7O0FBT0E7O0FBQ0E7O0lBRXFCQSxZO0FBQ25CLDBCQUF1QztBQUFBLFFBQTNCQyxJQUEyQix1RUFBcEJDLHlCQUFvQjtBQUFBOztBQUNyQztBQUNKO0FBQ0E7QUFDQTtBQUNJLFNBQUtELElBQUwsR0FBWUEsSUFBWjtBQUNEOzs7O3lCQUVJRSxNLEVBQVE7QUFDWCxVQUFJQyxJQUFJLEdBQUcsSUFBWDtBQUVBLFdBQUtELE1BQUwsR0FBY0EsTUFBZDtBQUVBLFdBQUtBLE1BQUwsQ0FBWUUsZUFBWixDQUE0QkMsZ0JBQTVCLENBQTZDQyx3QkFBN0MsRUFBNEQsVUFDMURKLE1BRDBELEVBRTFEO0FBQ0FDLFFBQUFBLElBQUksQ0FBQ0ksY0FBTCxDQUFvQkMsSUFBcEIsQ0FBeUJMLElBQXpCLEVBQStCRCxNQUEvQjtBQUNELE9BSkQ7QUFNQSxXQUFLQSxNQUFMLENBQVlFLGVBQVosQ0FBNEJDLGdCQUE1QixDQUE2Q0ksMkJBQTdDLEVBQStELFVBQzdEQyxRQUQ2RCxFQUU3RDtBQUNBUCxRQUFBQSxJQUFJLENBQUNRLGlCQUFMLENBQXVCSCxJQUF2QixDQUE0QkwsSUFBNUIsRUFBa0NPLFFBQWxDO0FBQ0QsT0FKRDtBQU1BLFdBQUtSLE1BQUwsQ0FBWUUsZUFBWixDQUE0QkMsZ0JBQTVCLENBQTZDTywwQkFBN0MsRUFBOEQsVUFDNURGLFFBRDRELEVBRTVEO0FBQ0FQLFFBQUFBLElBQUksQ0FBQ1UsZ0JBQUwsQ0FBc0JMLElBQXRCLENBQTJCTCxJQUEzQixFQUFpQ08sUUFBakM7QUFDRCxPQUpEO0FBTUEsV0FBS1IsTUFBTCxDQUFZRSxlQUFaLENBQTRCQyxnQkFBNUIsQ0FBNkNTLHdCQUE3QyxFQUE0RCxVQUMxREosUUFEMEQsRUFFMUQ7QUFDQVAsUUFBQUEsSUFBSSxDQUFDWSxjQUFMLENBQW9CUCxJQUFwQixDQUF5QkwsSUFBekIsRUFBK0JPLFFBQS9CO0FBQ0QsT0FKRDtBQU1BLFdBQUtNLGVBQUw7QUFDRDs7OzZCQUVRO0FBQ1AsV0FBS2QsTUFBTCxHQUFjLElBQWQ7QUFDRDtBQUVEO0FBQ0Y7QUFDQTs7OztzQ0FDb0JRLFEsRUFBVSxDQUFFLEMsQ0FBQzs7QUFFL0I7QUFDRjtBQUNBOzs7O3FDQUNtQkEsUSxFQUFVLENBQUUsQyxDQUFDOztBQUU5QjtBQUNGO0FBQ0E7Ozs7bUNBQ2lCQSxRLEVBQVUsQ0FBRSxDLENBQUM7O0FBRTVCO0FBQ0Y7QUFDQTs7OzttQ0FDaUJSLE0sRUFBUSxDQUFFLEMsQ0FBQzs7QUFFMUI7QUFDRjtBQUNBO0FBQ0E7QUFDQTs7OztzQ0FDb0I7QUFDaEIsVUFBSSxDQUFDZSxtQkFBTCxFQUFjO0FBQ1o7QUFDRDs7QUFFREMsTUFBQUEsT0FBTyxDQUFDQyxHQUFSLFdBQWUsS0FBS25CLElBQXBCO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBQQVJUSUNMRV9DUkVBVEVELFxuICBQQVJUSUNMRV9ERUFELFxuICBQQVJUSUNMRV9VUERBVEUsXG4gIFNZU1RFTV9VUERBVEUsXG59IGZyb20gJy4uL2V2ZW50cy9jb25zdGFudHMnO1xuXG5pbXBvcnQgeyBSRU5ERVJFUl9UWVBFX0JBU0UgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IF9fREVWX18gfSBmcm9tICcuLi9jb25zdGFudHMnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCYXNlUmVuZGVyZXIge1xuICBjb25zdHJ1Y3Rvcih0eXBlID0gUkVOREVSRVJfVFlQRV9CQVNFKSB7XG4gICAgLyoqXG4gICAgICogQGRlc2MgVGhlIGNsYXNzIHR5cGUuXG4gICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgKi9cbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICB9XG5cbiAgaW5pdChzeXN0ZW0pIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICB0aGlzLnN5c3RlbSA9IHN5c3RlbTtcblxuICAgIHRoaXMuc3lzdGVtLmV2ZW50RGlzcGF0Y2hlci5hZGRFdmVudExpc3RlbmVyKFNZU1RFTV9VUERBVEUsIGZ1bmN0aW9uKFxuICAgICAgc3lzdGVtXG4gICAgKSB7XG4gICAgICBzZWxmLm9uU3lzdGVtVXBkYXRlLmNhbGwoc2VsZiwgc3lzdGVtKTtcbiAgICB9KTtcblxuICAgIHRoaXMuc3lzdGVtLmV2ZW50RGlzcGF0Y2hlci5hZGRFdmVudExpc3RlbmVyKFBBUlRJQ0xFX0NSRUFURUQsIGZ1bmN0aW9uKFxuICAgICAgcGFydGljbGVcbiAgICApIHtcbiAgICAgIHNlbGYub25QYXJ0aWNsZUNyZWF0ZWQuY2FsbChzZWxmLCBwYXJ0aWNsZSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnN5c3RlbS5ldmVudERpc3BhdGNoZXIuYWRkRXZlbnRMaXN0ZW5lcihQQVJUSUNMRV9VUERBVEUsIGZ1bmN0aW9uKFxuICAgICAgcGFydGljbGVcbiAgICApIHtcbiAgICAgIHNlbGYub25QYXJ0aWNsZVVwZGF0ZS5jYWxsKHNlbGYsIHBhcnRpY2xlKTtcbiAgICB9KTtcblxuICAgIHRoaXMuc3lzdGVtLmV2ZW50RGlzcGF0Y2hlci5hZGRFdmVudExpc3RlbmVyKFBBUlRJQ0xFX0RFQUQsIGZ1bmN0aW9uKFxuICAgICAgcGFydGljbGVcbiAgICApIHtcbiAgICAgIHNlbGYub25QYXJ0aWNsZURlYWQuY2FsbChzZWxmLCBwYXJ0aWNsZSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmxvZ1JlbmRlcmVyVHlwZSgpO1xuICB9XG5cbiAgcmVtb3ZlKCkge1xuICAgIHRoaXMuc3lzdGVtID0gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAYWJzdHJhY3RcbiAgICovXG4gIG9uUGFydGljbGVDcmVhdGVkKHBhcnRpY2xlKSB7fSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG5cbiAgLyoqXG4gICAqIEBhYnN0cmFjdFxuICAgKi9cbiAgb25QYXJ0aWNsZVVwZGF0ZShwYXJ0aWNsZSkge30gLy8gZXNsaW50LWRpc2FibGUtbGluZVxuXG4gIC8qKlxuICAgKiBAYWJzdHJhY3RcbiAgICovXG4gIG9uUGFydGljbGVEZWFkKHBhcnRpY2xlKSB7fSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG5cbiAgLyoqXG4gICAqIEBhYnN0cmFjdFxuICAgKi9cbiAgb25TeXN0ZW1VcGRhdGUoc3lzdGVtKSB7fSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG5cbiAgLyoqXG4gICAqIExvZ3MgdGhlIHJlbmRlcmVyIHR5cGUgYmVpbmcgdXNlZCB3aGVuIGluIGRldmVsb3BtZW50IG1vZGUuXG4gICAqXG4gICAqIEByZXR1cm4gdm9pZFxuICAgKi9cbiAgbG9nUmVuZGVyZXJUeXBlKCkge1xuICAgIGlmICghX19ERVZfXykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnNvbGUubG9nKGAke3RoaXMudHlwZX1gKTtcbiAgfVxufVxuIl19
@@ -25,7 +25,7 @@ var _types = require("./types");
25
25
 
26
26
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
27
27
 
28
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
28
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
29
29
 
30
30
  var CustomRenderer = /*#__PURE__*/function (_BaseRenderer) {
31
31
  (0, _inherits2["default"])(CustomRenderer, _BaseRenderer);
@@ -33,13 +33,13 @@ var _core = require("../../../core");
33
33
 
34
34
  var _types = require("../../types");
35
35
 
36
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
36
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
37
37
 
38
38
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
39
39
 
40
40
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
41
41
 
42
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
42
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
43
43
 
44
44
  var THREE;
45
45
  /**
@@ -177,6 +177,7 @@ var DesktopGPURenderer = /*#__PURE__*/function (_BaseRenderer) {
177
177
  key: "updateTarget",
178
178
  value: function updateTarget(particle) {
179
179
  var position = particle.position,
180
+ rotation = particle.rotation,
180
181
  scale = particle.scale,
181
182
  radius = particle.radius,
182
183
  color = particle.color,
@@ -187,6 +188,7 @@ var DesktopGPURenderer = /*#__PURE__*/function (_BaseRenderer) {
187
188
  g = color.g,
188
189
  b = color.b;
189
190
  particle.target.position.copy(position);
191
+ particle.target.rotation.copy(rotation);
190
192
  particle.target.size = scale * radius;
191
193
  particle.target.color.setRGB(r, g, b);
192
194
  particle.target.alpha = alpha;
@@ -210,7 +212,7 @@ var DesktopGPURenderer = /*#__PURE__*/function (_BaseRenderer) {
210
212
  }, {
211
213
  key: "mapParticleTargetPropsToPoint",
212
214
  value: function mapParticleTargetPropsToPoint(particle) {
213
- this.updatePointPosition(particle).updatePointSize(particle).updatePointColor(particle).updatePointAlpha(particle).updatePointTextureIndex(particle);
215
+ this.updatePointPosition(particle).updatePointSize(particle).updatePointRotation(particle).updatePointColor(particle).updatePointAlpha(particle).updatePointTextureIndex(particle);
214
216
  return this;
215
217
  }
216
218
  /**
@@ -253,6 +255,25 @@ var DesktopGPURenderer = /*#__PURE__*/function (_BaseRenderer) {
253
255
  buffer.array[target.index * stride + offset + 0] = target.size;
254
256
  return this;
255
257
  }
258
+ /**
259
+ * Updates the point's rotation.
260
+ *
261
+ * @param {Particle} particle - The particle containing the target rotation.
262
+ * @return {DesktopGPURenderer}
263
+ */
264
+
265
+ }, {
266
+ key: "updatePointRotation",
267
+ value: function updatePointRotation(particle) {
268
+ var attribute = 'rotation';
269
+ var geometry = this.geometry,
270
+ stride = this.stride,
271
+ buffer = this.buffer;
272
+ var target = particle.target;
273
+ var offset = geometry.attributes[attribute].offset;
274
+ buffer.array[target.index * stride + offset + 0] = target.rotation.z;
275
+ return this;
276
+ }
256
277
  /**
257
278
  * Updates the point's color attribute according with the particle's target color.
258
279
  *
@@ -347,4 +368,4 @@ var DesktopGPURenderer = /*#__PURE__*/function (_BaseRenderer) {
347
368
  }(_BaseRenderer2["default"]);
348
369
 
349
370
  exports["default"] = DesktopGPURenderer;
350
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9yZW5kZXJlci9HUFVSZW5kZXJlci9EZXNrdG9wL2luZGV4LmpzIl0sIm5hbWVzIjpbIlRIUkVFIiwiRGVza3RvcEdQVVJlbmRlcmVyIiwiY29udGFpbmVyIiwidGhyZWUiLCJvcHRpb25zIiwiREVGQVVMVF9SRU5ERVJFUl9PUFRJT05TIiwiUkVOREVSRVJfVFlQRV9HUFVfREVTS1RPUCIsInByb3BzIiwiY2FtZXJhIiwibWF4UGFydGljbGVzIiwiYmFzZUNvbG9yIiwiYmxlbmRpbmciLCJkZXB0aFRlc3QiLCJkZXB0aFdyaXRlIiwidHJhbnNwYXJlbnQiLCJzaG91bGREZWJ1Z1RleHR1cmVBdGxhcyIsInBhcnRpY2xlQnVmZmVyIiwiUGFydGljbGVCdWZmZXIiLCJtYXRlcmlhbCIsIlNoYWRlck1hdGVyaWFsIiwidW5pZm9ybXMiLCJ2YWx1ZSIsIkNvbG9yIiwidVRleHR1cmUiLCJhdGxhc0luZGV4IiwidmVydGV4U2hhZGVyIiwiZnJhZ21lbnRTaGFkZXIiLCJ0YXJnZXRQb29sIiwiUG9vbCIsInVuaXF1ZUxpc3QiLCJVbmlxdWVMaXN0IiwiYnVmZmVyIiwic3RyaWRlIiwiZ2VvbWV0cnkiLCJwb2ludHMiLCJQb2ludHMiLCJmcnVzdHVtQ3VsbGVkIiwiYWRkIiwic3lzdGVtIiwibmVlZHNVcGRhdGUiLCJ0ZXh0dXJlQXRsYXMiLCJ1cGRhdGUiLCJwYXJ0aWNsZSIsInRhcmdldCIsImdldCIsIlRhcmdldCIsImlkIiwidXBkYXRlVGFyZ2V0IiwibWFwUGFydGljbGVUYXJnZXRQcm9wc1RvUG9pbnQiLCJyZXNldCIsInBvc2l0aW9uIiwic2NhbGUiLCJyYWRpdXMiLCJjb2xvciIsImFscGhhIiwiYm9keSIsInIiLCJnIiwiYiIsImNvcHkiLCJzaXplIiwic2V0UkdCIiwiaW5kZXgiLCJmaW5kIiwiU3ByaXRlIiwibWFwIiwidGV4dHVyZSIsInRleHR1cmVJbmRleCIsImdldFRleHR1cmVJRCIsInVwZGF0ZVBvaW50UG9zaXRpb24iLCJ1cGRhdGVQb2ludFNpemUiLCJ1cGRhdGVQb2ludENvbG9yIiwidXBkYXRlUG9pbnRBbHBoYSIsInVwZGF0ZVBvaW50VGV4dHVyZUluZGV4IiwiYXR0cmlidXRlIiwib2Zmc2V0IiwiYXR0cmlidXRlcyIsImFycmF5IiwieCIsInkiLCJ6IiwiZGVidWciLCJ1bmRlZmluZWQiLCJUZXh0dXJlQXRsYXMiLCJhZGRUZXh0dXJlIiwicmVtb3ZlIiwiZGVzdHJveSIsIkJhc2VSZW5kZXJlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7OztBQUVBLElBQUlBLEtBQUo7QUFFQTs7Ozs7OztJQU1xQkMsa0I7Ozs7O0FBQ25CLDhCQUFZQyxTQUFaLEVBQXVCQyxLQUF2QixFQUFrRTtBQUFBOztBQUFBLFFBQXBDQyxPQUFvQyx1RUFBMUJDLG1DQUEwQjtBQUFBO0FBQ2hFLDhCQUFNQyxnQ0FBTjtBQUVBTixJQUFBQSxLQUFLLEdBQUcsTUFBS0csS0FBTCxHQUFhQSxLQUFyQjs7QUFDQSxRQUFNSSxLQUFLLG1DQUFRRixtQ0FBUixHQUFxQ0QsT0FBckMsQ0FBWDs7QUFKZ0UsUUFNOURJLE1BTjhELEdBYzVERCxLQWQ0RCxDQU05REMsTUFOOEQ7QUFBQSxRQU85REMsWUFQOEQsR0FjNURGLEtBZDRELENBTzlERSxZQVA4RDtBQUFBLFFBUTlEQyxTQVI4RCxHQWM1REgsS0FkNEQsQ0FROURHLFNBUjhEO0FBQUEsUUFTOURDLFFBVDhELEdBYzVESixLQWQ0RCxDQVM5REksUUFUOEQ7QUFBQSxRQVU5REMsU0FWOEQsR0FjNURMLEtBZDRELENBVTlESyxTQVY4RDtBQUFBLFFBVzlEQyxVQVg4RCxHQWM1RE4sS0FkNEQsQ0FXOURNLFVBWDhEO0FBQUEsUUFZOURDLFdBWjhELEdBYzVEUCxLQWQ0RCxDQVk5RE8sV0FaOEQ7QUFBQSxRQWE5REMsdUJBYjhELEdBYzVEUixLQWQ0RCxDQWE5RFEsdUJBYjhEO0FBZWhFLFFBQU1DLGNBQWMsR0FBRyxJQUFJQyxzQkFBSixDQUFtQlIsWUFBbkIsRUFBaUNULEtBQWpDLENBQXZCO0FBQ0EsUUFBTWtCLFFBQVEsR0FBRyxJQUFJbEIsS0FBSyxDQUFDbUIsY0FBVixDQUF5QjtBQUN4Q0MsTUFBQUEsUUFBUSxFQUFFO0FBQ1JWLFFBQUFBLFNBQVMsRUFBRTtBQUFFVyxVQUFBQSxLQUFLLEVBQUUsSUFBSXJCLEtBQUssQ0FBQ3NCLEtBQVYsQ0FBZ0JaLFNBQWhCO0FBQVQsU0FESDtBQUVSYSxRQUFBQSxRQUFRLEVBQUU7QUFBRUYsVUFBQUEsS0FBSyxFQUFFO0FBQVQsU0FGRjtBQUdSRyxRQUFBQSxVQUFVLEVBQUU7QUFBRUgsVUFBQUEsS0FBSyxFQUFFO0FBQVQ7QUFISixPQUQ4QjtBQU14Q0ksTUFBQUEsWUFBWSxFQUFFLDRCQU4wQjtBQU94Q0MsTUFBQUEsY0FBYyxFQUFFLDhCQVB3QjtBQVF4Q2YsTUFBQUEsUUFBUSxFQUFFWCxLQUFLLENBQUNXLFFBQUQsQ0FSeUI7QUFTeENDLE1BQUFBLFNBQVMsRUFBVEEsU0FUd0M7QUFVeENDLE1BQUFBLFVBQVUsRUFBVkEsVUFWd0M7QUFXeENDLE1BQUFBLFdBQVcsRUFBWEE7QUFYd0MsS0FBekIsQ0FBakI7QUFjQSxVQUFLWixTQUFMLEdBQWlCQSxTQUFqQjtBQUNBLFVBQUtNLE1BQUwsR0FBY0EsTUFBZDtBQUNBLFVBQUttQixVQUFMLEdBQWtCLElBQUlDLFVBQUosRUFBbEI7QUFDQSxVQUFLQyxVQUFMLEdBQWtCLElBQUlDLGtCQUFKLENBQWVyQixZQUFmLENBQWxCO0FBQ0EsVUFBS08sY0FBTCxHQUFzQkEsY0FBdEI7QUFDQSxVQUFLZSxNQUFMLEdBQWNmLGNBQWMsQ0FBQ2UsTUFBN0I7QUFDQSxVQUFLQyxNQUFMLEdBQWNoQixjQUFjLENBQUNnQixNQUE3QjtBQUNBLFVBQUtDLFFBQUwsR0FBZ0JqQixjQUFjLENBQUNpQixRQUEvQjtBQUNBLFVBQUtmLFFBQUwsR0FBZ0JBLFFBQWhCO0FBQ0EsVUFBS2dCLE1BQUwsR0FBYyxJQUFJbEMsS0FBSyxDQUFDbUMsTUFBVixDQUFpQixNQUFLRixRQUF0QixFQUFnQyxNQUFLZixRQUFyQyxDQUFkO0FBQ0EsVUFBS2dCLE1BQUwsQ0FBWUUsYUFBWixHQUE0QixLQUE1QjtBQUNBLFVBQUtyQix1QkFBTCxHQUErQkEsdUJBQS9COztBQUVBLFVBQUtiLFNBQUwsQ0FBZW1DLEdBQWYsQ0FBbUIsTUFBS0gsTUFBeEI7O0FBM0NnRTtBQTRDakU7Ozs7bUNBRWNJLE0sRUFBUTtBQUNyQiwrSEFBcUJBLE1BQXJCO0FBRUEsV0FBS1AsTUFBTCxDQUFZUSxXQUFaLEdBQTBCLElBQTFCO0FBRUEsV0FBS0MsWUFBTCxJQUFxQixLQUFLQSxZQUFMLENBQWtCQyxNQUFsQixFQUFyQjtBQUNEO0FBRUQ7Ozs7Ozs7OztzQ0FNa0JDLFEsRUFBVTtBQUMxQixVQUFJLENBQUNBLFFBQVEsQ0FBQ0MsTUFBZCxFQUFzQjtBQUNwQkQsUUFBQUEsUUFBUSxDQUFDQyxNQUFULEdBQWtCLEtBQUtoQixVQUFMLENBQWdCaUIsR0FBaEIsQ0FBb0JDLGNBQXBCLEVBQTRCN0MsS0FBNUIsQ0FBbEI7QUFDQSxhQUFLNkIsVUFBTCxDQUFnQlEsR0FBaEIsQ0FBb0JLLFFBQVEsQ0FBQ0ksRUFBN0I7QUFDRDs7QUFFRCxXQUFLQyxZQUFMLENBQWtCTCxRQUFsQixFQUE0Qk0sNkJBQTVCLENBQTBETixRQUExRDtBQUNEO0FBRUQ7Ozs7Ozs7O3FDQUtpQkEsUSxFQUFVO0FBQ3pCLFVBQUksQ0FBQ0EsUUFBUSxDQUFDQyxNQUFkLEVBQXNCO0FBQ3BCO0FBQ0Q7O0FBRUQsV0FBS0ksWUFBTCxDQUFrQkwsUUFBbEIsRUFBNEJNLDZCQUE1QixDQUEwRE4sUUFBMUQ7QUFDRDtBQUVEOzs7Ozs7OzttQ0FLZUEsUSxFQUFVO0FBQ3ZCLFVBQUksQ0FBQ0EsUUFBUSxDQUFDQyxNQUFkLEVBQXNCO0FBQ3BCO0FBQ0Q7O0FBRURELE1BQUFBLFFBQVEsQ0FBQ0MsTUFBVCxDQUFnQk0sS0FBaEI7QUFDQSxXQUFLRCw2QkFBTCxDQUFtQ04sUUFBbkM7QUFFQUEsTUFBQUEsUUFBUSxDQUFDQyxNQUFULEdBQWtCLElBQWxCO0FBQ0Q7QUFFRDs7Ozs7Ozs7O2lDQU1hRCxRLEVBQVU7QUFBQSxVQUNiUSxRQURhLEdBQ3VDUixRQUR2QyxDQUNiUSxRQURhO0FBQUEsVUFDSEMsS0FERyxHQUN1Q1QsUUFEdkMsQ0FDSFMsS0FERztBQUFBLFVBQ0lDLE1BREosR0FDdUNWLFFBRHZDLENBQ0lVLE1BREo7QUFBQSxVQUNZQyxLQURaLEdBQ3VDWCxRQUR2QyxDQUNZVyxLQURaO0FBQUEsVUFDbUJDLEtBRG5CLEdBQ3VDWixRQUR2QyxDQUNtQlksS0FEbkI7QUFBQSxVQUMwQkMsSUFEMUIsR0FDdUNiLFFBRHZDLENBQzBCYSxJQUQxQjtBQUFBLFVBQ2dDVCxFQURoQyxHQUN1Q0osUUFEdkMsQ0FDZ0NJLEVBRGhDO0FBQUEsVUFFYlUsQ0FGYSxHQUVESCxLQUZDLENBRWJHLENBRmE7QUFBQSxVQUVWQyxDQUZVLEdBRURKLEtBRkMsQ0FFVkksQ0FGVTtBQUFBLFVBRVBDLENBRk8sR0FFREwsS0FGQyxDQUVQSyxDQUZPO0FBSXJCaEIsTUFBQUEsUUFBUSxDQUFDQyxNQUFULENBQWdCTyxRQUFoQixDQUF5QlMsSUFBekIsQ0FBOEJULFFBQTlCO0FBQ0FSLE1BQUFBLFFBQVEsQ0FBQ0MsTUFBVCxDQUFnQmlCLElBQWhCLEdBQXVCVCxLQUFLLEdBQUdDLE1BQS9CO0FBQ0FWLE1BQUFBLFFBQVEsQ0FBQ0MsTUFBVCxDQUFnQlUsS0FBaEIsQ0FBc0JRLE1BQXRCLENBQTZCTCxDQUE3QixFQUFnQ0MsQ0FBaEMsRUFBbUNDLENBQW5DO0FBQ0FoQixNQUFBQSxRQUFRLENBQUNDLE1BQVQsQ0FBZ0JXLEtBQWhCLEdBQXdCQSxLQUF4QjtBQUNBWixNQUFBQSxRQUFRLENBQUNDLE1BQVQsQ0FBZ0JtQixLQUFoQixHQUF3QixLQUFLakMsVUFBTCxDQUFnQmtDLElBQWhCLENBQXFCakIsRUFBckIsQ0FBeEI7O0FBRUEsVUFBSVMsSUFBSSxJQUFJQSxJQUFJLFlBQVl2RCxLQUFLLENBQUNnRSxNQUFsQyxFQUEwQztBQUFBLFlBQ2hDQyxHQURnQyxHQUN4QlYsSUFBSSxDQUFDckMsUUFEbUIsQ0FDaEMrQyxHQURnQztBQUd4Q3ZCLFFBQUFBLFFBQVEsQ0FBQ0MsTUFBVCxDQUFnQnVCLE9BQWhCLEdBQTBCRCxHQUExQjtBQUNBdkIsUUFBQUEsUUFBUSxDQUFDQyxNQUFULENBQWdCd0IsWUFBaEIsR0FBK0IsS0FBS0MsWUFBTCxDQUM3QkgsR0FENkIsRUFFN0IsS0FBS2xELHVCQUZ3QixDQUEvQjtBQUlEOztBQUVELGFBQU8sSUFBUDtBQUNEO0FBRUQ7Ozs7Ozs7OztrREFNOEIyQixRLEVBQVU7QUFDdEMsV0FBSzJCLG1CQUFMLENBQXlCM0IsUUFBekIsRUFDRzRCLGVBREgsQ0FDbUI1QixRQURuQixFQUVHNkIsZ0JBRkgsQ0FFb0I3QixRQUZwQixFQUdHOEIsZ0JBSEgsQ0FHb0I5QixRQUhwQixFQUlHK0IsdUJBSkgsQ0FJMkIvQixRQUozQjtBQU1BLGFBQU8sSUFBUDtBQUNEO0FBRUQ7Ozs7Ozs7Ozt3Q0FNb0JBLFEsRUFBVTtBQUM1QixVQUFNZ0MsU0FBUyxHQUFHLFVBQWxCO0FBRDRCLFVBRXBCekMsUUFGb0IsR0FFUyxJQUZULENBRXBCQSxRQUZvQjtBQUFBLFVBRVZELE1BRlUsR0FFUyxJQUZULENBRVZBLE1BRlU7QUFBQSxVQUVGRCxNQUZFLEdBRVMsSUFGVCxDQUVGQSxNQUZFO0FBQUEsVUFHcEJZLE1BSG9CLEdBR1RELFFBSFMsQ0FHcEJDLE1BSG9CO0FBQUEsVUFJcEJnQyxNQUpvQixHQUlUMUMsUUFBUSxDQUFDMkMsVUFBVCxDQUFvQkYsU0FBcEIsQ0FKUyxDQUlwQkMsTUFKb0I7QUFNNUI1QyxNQUFBQSxNQUFNLENBQUM4QyxLQUFQLENBQWFsQyxNQUFNLENBQUNtQixLQUFQLEdBQWU5QixNQUFmLEdBQXdCMkMsTUFBeEIsR0FBaUMsQ0FBOUMsSUFBbURoQyxNQUFNLENBQUNPLFFBQVAsQ0FBZ0I0QixDQUFuRTtBQUNBL0MsTUFBQUEsTUFBTSxDQUFDOEMsS0FBUCxDQUFhbEMsTUFBTSxDQUFDbUIsS0FBUCxHQUFlOUIsTUFBZixHQUF3QjJDLE1BQXhCLEdBQWlDLENBQTlDLElBQW1EaEMsTUFBTSxDQUFDTyxRQUFQLENBQWdCNkIsQ0FBbkU7QUFDQWhELE1BQUFBLE1BQU0sQ0FBQzhDLEtBQVAsQ0FBYWxDLE1BQU0sQ0FBQ21CLEtBQVAsR0FBZTlCLE1BQWYsR0FBd0IyQyxNQUF4QixHQUFpQyxDQUE5QyxJQUFtRGhDLE1BQU0sQ0FBQ08sUUFBUCxDQUFnQjhCLENBQW5FO0FBRUEsYUFBTyxJQUFQO0FBQ0Q7QUFFRDs7Ozs7Ozs7O29DQU1nQnRDLFEsRUFBVTtBQUN4QixVQUFNZ0MsU0FBUyxHQUFHLE1BQWxCO0FBRHdCLFVBRWhCekMsUUFGZ0IsR0FFYSxJQUZiLENBRWhCQSxRQUZnQjtBQUFBLFVBRU5ELE1BRk0sR0FFYSxJQUZiLENBRU5BLE1BRk07QUFBQSxVQUVFRCxNQUZGLEdBRWEsSUFGYixDQUVFQSxNQUZGO0FBQUEsVUFHaEJZLE1BSGdCLEdBR0xELFFBSEssQ0FHaEJDLE1BSGdCO0FBQUEsVUFJaEJnQyxNQUpnQixHQUlMMUMsUUFBUSxDQUFDMkMsVUFBVCxDQUFvQkYsU0FBcEIsQ0FKSyxDQUloQkMsTUFKZ0I7QUFNeEI1QyxNQUFBQSxNQUFNLENBQUM4QyxLQUFQLENBQWFsQyxNQUFNLENBQUNtQixLQUFQLEdBQWU5QixNQUFmLEdBQXdCMkMsTUFBeEIsR0FBaUMsQ0FBOUMsSUFBbURoQyxNQUFNLENBQUNpQixJQUExRDtBQUVBLGFBQU8sSUFBUDtBQUNEO0FBRUQ7Ozs7Ozs7OztxQ0FNaUJsQixRLEVBQVU7QUFDekIsVUFBTWdDLFNBQVMsR0FBRyxPQUFsQjtBQUR5QixVQUVqQnpDLFFBRmlCLEdBRVksSUFGWixDQUVqQkEsUUFGaUI7QUFBQSxVQUVQRCxNQUZPLEdBRVksSUFGWixDQUVQQSxNQUZPO0FBQUEsVUFFQ0QsTUFGRCxHQUVZLElBRlosQ0FFQ0EsTUFGRDtBQUFBLFVBR2pCWSxNQUhpQixHQUdORCxRQUhNLENBR2pCQyxNQUhpQjtBQUFBLFVBSWpCZ0MsTUFKaUIsR0FJTjFDLFFBQVEsQ0FBQzJDLFVBQVQsQ0FBb0JGLFNBQXBCLENBSk0sQ0FJakJDLE1BSmlCO0FBTXpCNUMsTUFBQUEsTUFBTSxDQUFDOEMsS0FBUCxDQUFhbEMsTUFBTSxDQUFDbUIsS0FBUCxHQUFlOUIsTUFBZixHQUF3QjJDLE1BQXhCLEdBQWlDLENBQTlDLElBQW1EaEMsTUFBTSxDQUFDVSxLQUFQLENBQWFHLENBQWhFO0FBQ0F6QixNQUFBQSxNQUFNLENBQUM4QyxLQUFQLENBQWFsQyxNQUFNLENBQUNtQixLQUFQLEdBQWU5QixNQUFmLEdBQXdCMkMsTUFBeEIsR0FBaUMsQ0FBOUMsSUFBbURoQyxNQUFNLENBQUNVLEtBQVAsQ0FBYUksQ0FBaEU7QUFDQTFCLE1BQUFBLE1BQU0sQ0FBQzhDLEtBQVAsQ0FBYWxDLE1BQU0sQ0FBQ21CLEtBQVAsR0FBZTlCLE1BQWYsR0FBd0IyQyxNQUF4QixHQUFpQyxDQUE5QyxJQUFtRGhDLE1BQU0sQ0FBQ1UsS0FBUCxDQUFhSyxDQUFoRTtBQUVBLGFBQU8sSUFBUDtBQUNEO0FBRUQ7Ozs7Ozs7OztxQ0FNaUJoQixRLEVBQVU7QUFDekIsVUFBTWdDLFNBQVMsR0FBRyxPQUFsQjtBQUR5QixVQUVqQnpDLFFBRmlCLEdBRVksSUFGWixDQUVqQkEsUUFGaUI7QUFBQSxVQUVQRCxNQUZPLEdBRVksSUFGWixDQUVQQSxNQUZPO0FBQUEsVUFFQ0QsTUFGRCxHQUVZLElBRlosQ0FFQ0EsTUFGRDtBQUFBLFVBR2pCWSxNQUhpQixHQUdORCxRQUhNLENBR2pCQyxNQUhpQjtBQUFBLFVBSWpCZ0MsTUFKaUIsR0FJTjFDLFFBQVEsQ0FBQzJDLFVBQVQsQ0FBb0JGLFNBQXBCLENBSk0sQ0FJakJDLE1BSmlCO0FBTXpCNUMsTUFBQUEsTUFBTSxDQUFDOEMsS0FBUCxDQUFhbEMsTUFBTSxDQUFDbUIsS0FBUCxHQUFlOUIsTUFBZixHQUF3QjJDLE1BQXhCLEdBQWlDLENBQTlDLElBQW1EaEMsTUFBTSxDQUFDVyxLQUExRDtBQUVBLGFBQU8sSUFBUDtBQUNEO0FBRUQ7Ozs7Ozs7Ozs0Q0FNd0JaLFEsRUFBVTtBQUNoQyxVQUFNZ0MsU0FBUyxHQUFHLE9BQWxCO0FBRGdDLFVBRXhCekMsUUFGd0IsR0FFSyxJQUZMLENBRXhCQSxRQUZ3QjtBQUFBLFVBRWRELE1BRmMsR0FFSyxJQUZMLENBRWRBLE1BRmM7QUFBQSxVQUVORCxNQUZNLEdBRUssSUFGTCxDQUVOQSxNQUZNO0FBQUEsVUFHeEJZLE1BSHdCLEdBR2JELFFBSGEsQ0FHeEJDLE1BSHdCO0FBQUEsVUFJeEJnQyxNQUp3QixHQUliMUMsUUFBUSxDQUFDMkMsVUFBVCxDQUFvQkYsU0FBcEIsQ0FKYSxDQUl4QkMsTUFKd0I7QUFNaEM1QyxNQUFBQSxNQUFNLENBQUM4QyxLQUFQLENBQWFsQyxNQUFNLENBQUNtQixLQUFQLEdBQWU5QixNQUFmLEdBQXdCMkMsTUFBeEIsR0FBaUMsQ0FBOUMsSUFBbURoQyxNQUFNLENBQUN3QixZQUExRDtBQUVBLGFBQU8sSUFBUDtBQUNEOzs7aUNBRVlELE8sRUFBU2UsSyxFQUFPO0FBQzNCLFVBQUlmLE9BQU8sQ0FBQ0MsWUFBUixLQUF5QmUsU0FBN0IsRUFBd0M7QUFDdEMsWUFBSSxDQUFDLEtBQUsxQyxZQUFWLEVBQXdCO0FBQ3RCLGVBQUtBLFlBQUwsR0FBb0IsSUFBSTJDLG9CQUFKLENBQWlCLElBQWpCLEVBQXVCRixLQUF2QixDQUFwQjtBQUNEOztBQUVELGFBQUt6QyxZQUFMLENBQWtCNEMsVUFBbEIsQ0FBNkJsQixPQUE3QjtBQUNEOztBQUVELGFBQU9BLE9BQU8sQ0FBQ0MsWUFBZjtBQUNEO0FBRUQ7Ozs7Ozs7OzhCQUtVO0FBQUEsVUFDQWpFLFNBREEsR0FDZ0QsSUFEaEQsQ0FDQUEsU0FEQTtBQUFBLFVBQ1dnQyxNQURYLEdBQ2dELElBRGhELENBQ1dBLE1BRFg7QUFBQSxVQUNtQk0sWUFEbkIsR0FDZ0QsSUFEaEQsQ0FDbUJBLFlBRG5CO0FBQUEsVUFDaUNYLFVBRGpDLEdBQ2dELElBRGhELENBQ2lDQSxVQURqQztBQUdSM0IsTUFBQUEsU0FBUyxDQUFDbUYsTUFBVixDQUFpQm5ELE1BQWpCO0FBQ0FMLE1BQUFBLFVBQVUsQ0FBQ3lELE9BQVg7QUFDQTlDLE1BQUFBLFlBQVksSUFBSUEsWUFBWSxDQUFDOEMsT0FBYixFQUFoQjtBQUNEOzs7RUFoUTZDQyx5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBhcnRpY2xlQnVmZmVyLCBUYXJnZXQsIFRleHR1cmVBdGxhcywgVW5pcXVlTGlzdCB9IGZyb20gJy4uL2NvbW1vbic7XG5pbXBvcnQgeyBmcmFnbWVudFNoYWRlciwgdmVydGV4U2hhZGVyIH0gZnJvbSAnLi9zaGFkZXJzJztcblxuaW1wb3J0IEJhc2VSZW5kZXJlciBmcm9tICcuLi8uLi9CYXNlUmVuZGVyZXInO1xuaW1wb3J0IHsgREVGQVVMVF9SRU5ERVJFUl9PUFRJT05TIH0gZnJvbSAnLi4vY29tbW9uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBQb29sIH0gZnJvbSAnLi4vLi4vLi4vY29yZSc7XG5pbXBvcnQgeyBSRU5ERVJFUl9UWVBFX0dQVV9ERVNLVE9QIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG5sZXQgVEhSRUU7XG5cbi8qKlxuICogR1BVUmVuZGVyZXIgZm9yIGRldmljZXMgdGhhdCBzdXBwb3J0IGZsb2F0aW5nIHBvaW50IHRleHR1cmVzLlxuICpcbiAqIEBhdXRob3IgdGhyYXggPG1hbnRocmF4QGdtYWlsLmNvbT5cbiAqIEBhdXRob3Igcm9oYW4tZGVzaHBhbmRlIDxyb2hhbkBjcmVhdGl2ZWxpZmVmb3JtLmNvbT5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGVza3RvcEdQVVJlbmRlcmVyIGV4dGVuZHMgQmFzZVJlbmRlcmVyIHtcbiAgY29uc3RydWN0b3IoY29udGFpbmVyLCB0aHJlZSwgb3B0aW9ucyA9IERFRkFVTFRfUkVOREVSRVJfT1BUSU9OUykge1xuICAgIHN1cGVyKFJFTkRFUkVSX1RZUEVfR1BVX0RFU0tUT1ApO1xuXG4gICAgVEhSRUUgPSB0aGlzLnRocmVlID0gdGhyZWU7XG4gICAgY29uc3QgcHJvcHMgPSB7IC4uLkRFRkFVTFRfUkVOREVSRVJfT1BUSU9OUywgLi4ub3B0aW9ucyB9O1xuICAgIGNvbnN0IHtcbiAgICAgIGNhbWVyYSxcbiAgICAgIG1heFBhcnRpY2xlcyxcbiAgICAgIGJhc2VDb2xvcixcbiAgICAgIGJsZW5kaW5nLFxuICAgICAgZGVwdGhUZXN0LFxuICAgICAgZGVwdGhXcml0ZSxcbiAgICAgIHRyYW5zcGFyZW50LFxuICAgICAgc2hvdWxkRGVidWdUZXh0dXJlQXRsYXMsXG4gICAgfSA9IHByb3BzO1xuICAgIGNvbnN0IHBhcnRpY2xlQnVmZmVyID0gbmV3IFBhcnRpY2xlQnVmZmVyKG1heFBhcnRpY2xlcywgVEhSRUUpO1xuICAgIGNvbnN0IG1hdGVyaWFsID0gbmV3IFRIUkVFLlNoYWRlck1hdGVyaWFsKHtcbiAgICAgIHVuaWZvcm1zOiB7XG4gICAgICAgIGJhc2VDb2xvcjogeyB2YWx1ZTogbmV3IFRIUkVFLkNvbG9yKGJhc2VDb2xvcikgfSxcbiAgICAgICAgdVRleHR1cmU6IHsgdmFsdWU6IG51bGwgfSxcbiAgICAgICAgYXRsYXNJbmRleDogeyB2YWx1ZTogbnVsbCB9LFxuICAgICAgfSxcbiAgICAgIHZlcnRleFNoYWRlcjogdmVydGV4U2hhZGVyKCksXG4gICAgICBmcmFnbWVudFNoYWRlcjogZnJhZ21lbnRTaGFkZXIoKSxcbiAgICAgIGJsZW5kaW5nOiBUSFJFRVtibGVuZGluZ10sXG4gICAgICBkZXB0aFRlc3QsXG4gICAgICBkZXB0aFdyaXRlLFxuICAgICAgdHJhbnNwYXJlbnQsXG4gICAgfSk7XG5cbiAgICB0aGlzLmNvbnRhaW5lciA9IGNvbnRhaW5lcjtcbiAgICB0aGlzLmNhbWVyYSA9IGNhbWVyYTtcbiAgICB0aGlzLnRhcmdldFBvb2wgPSBuZXcgUG9vbCgpO1xuICAgIHRoaXMudW5pcXVlTGlzdCA9IG5ldyBVbmlxdWVMaXN0KG1heFBhcnRpY2xlcyk7XG4gICAgdGhpcy5wYXJ0aWNsZUJ1ZmZlciA9IHBhcnRpY2xlQnVmZmVyO1xuICAgIHRoaXMuYnVmZmVyID0gcGFydGljbGVCdWZmZXIuYnVmZmVyO1xuICAgIHRoaXMuc3RyaWRlID0gcGFydGljbGVCdWZmZXIuc3RyaWRlO1xuICAgIHRoaXMuZ2VvbWV0cnkgPSBwYXJ0aWNsZUJ1ZmZlci5nZW9tZXRyeTtcbiAgICB0aGlzLm1hdGVyaWFsID0gbWF0ZXJpYWw7XG4gICAgdGhpcy5wb2ludHMgPSBuZXcgVEhSRUUuUG9pbnRzKHRoaXMuZ2VvbWV0cnksIHRoaXMubWF0ZXJpYWwpO1xuICAgIHRoaXMucG9pbnRzLmZydXN0dW1DdWxsZWQgPSBmYWxzZTtcbiAgICB0aGlzLnNob3VsZERlYnVnVGV4dHVyZUF0bGFzID0gc2hvdWxkRGVidWdUZXh0dXJlQXRsYXM7XG5cbiAgICB0aGlzLmNvbnRhaW5lci5hZGQodGhpcy5wb2ludHMpO1xuICB9XG5cbiAgb25TeXN0ZW1VcGRhdGUoc3lzdGVtKSB7XG4gICAgc3VwZXIub25TeXN0ZW1VcGRhdGUoc3lzdGVtKTtcblxuICAgIHRoaXMuYnVmZmVyLm5lZWRzVXBkYXRlID0gdHJ1ZTtcblxuICAgIHRoaXMudGV4dHVyZUF0bGFzICYmIHRoaXMudGV4dHVyZUF0bGFzLnVwZGF0ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFBvb2xzIHRoZSBwYXJ0aWNsZSB0YXJnZXQgaWYgaXQgZG9lcyBub3QgZXhpc3QuXG4gICAqIFVwZGF0ZXMgdGhlIHRhcmdldCBhbmQgbWFwcyBwYXJ0aWNsZSBwcm9wZXJ0aWVzIHRvIHRoZSBwb2ludC5cbiAgICpcbiAgICogQHBhcmFtIHtQYXJ0aWNsZX1cbiAgICovXG4gIG9uUGFydGljbGVDcmVhdGVkKHBhcnRpY2xlKSB7XG4gICAgaWYgKCFwYXJ0aWNsZS50YXJnZXQpIHtcbiAgICAgIHBhcnRpY2xlLnRhcmdldCA9IHRoaXMudGFyZ2V0UG9vbC5nZXQoVGFyZ2V0LCBUSFJFRSk7XG4gICAgICB0aGlzLnVuaXF1ZUxpc3QuYWRkKHBhcnRpY2xlLmlkKTtcbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZVRhcmdldChwYXJ0aWNsZSkubWFwUGFydGljbGVUYXJnZXRQcm9wc1RvUG9pbnQocGFydGljbGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hcHMgcGFydGljbGUgcHJvcGVydGllcyB0byB0aGUgcG9pbnQgaWYgdGhlIHBhcnRpY2xlIGhhcyBhIHRhcmdldC5cbiAgICpcbiAgICogQHBhcmFtIHtQYXJ0aWNsZX1cbiAgICovXG4gIG9uUGFydGljbGVVcGRhdGUocGFydGljbGUpIHtcbiAgICBpZiAoIXBhcnRpY2xlLnRhcmdldCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMudXBkYXRlVGFyZ2V0KHBhcnRpY2xlKS5tYXBQYXJ0aWNsZVRhcmdldFByb3BzVG9Qb2ludChwYXJ0aWNsZSk7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXRzIGFuZCBjbGVhcnMgdGhlIHBhcnRpY2xlIHRhcmdldC5cbiAgICpcbiAgICogQHBhcmFtIHtQYXJ0aWNsZX1cbiAgICovXG4gIG9uUGFydGljbGVEZWFkKHBhcnRpY2xlKSB7XG4gICAgaWYgKCFwYXJ0aWNsZS50YXJnZXQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBwYXJ0aWNsZS50YXJnZXQucmVzZXQoKTtcbiAgICB0aGlzLm1hcFBhcnRpY2xlVGFyZ2V0UHJvcHNUb1BvaW50KHBhcnRpY2xlKTtcblxuICAgIHBhcnRpY2xlLnRhcmdldCA9IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogTWFwcyBhbGwgbXV0YWJsZSBwcm9wZXJ0aWVzIGZyb20gdGhlIHBhcnRpY2xlIHRvIHRoZSB0YXJnZXQuXG4gICAqXG4gICAqIEBwYXJhbSB7UGFydGljbGV9XG4gICAqIEByZXR1cm4ge0Rlc2t0b3BHUFVSZW5kZXJlcn1cbiAgICovXG4gIHVwZGF0ZVRhcmdldChwYXJ0aWNsZSkge1xuICAgIGNvbnN0IHsgcG9zaXRpb24sIHNjYWxlLCByYWRpdXMsIGNvbG9yLCBhbHBoYSwgYm9keSwgaWQgfSA9IHBhcnRpY2xlO1xuICAgIGNvbnN0IHsgciwgZywgYiB9ID0gY29sb3I7XG5cbiAgICBwYXJ0aWNsZS50YXJnZXQucG9zaXRpb24uY29weShwb3NpdGlvbik7XG4gICAgcGFydGljbGUudGFyZ2V0LnNpemUgPSBzY2FsZSAqIHJhZGl1cztcbiAgICBwYXJ0aWNsZS50YXJnZXQuY29sb3Iuc2V0UkdCKHIsIGcsIGIpO1xuICAgIHBhcnRpY2xlLnRhcmdldC5hbHBoYSA9IGFscGhhO1xuICAgIHBhcnRpY2xlLnRhcmdldC5pbmRleCA9IHRoaXMudW5pcXVlTGlzdC5maW5kKGlkKTtcblxuICAgIGlmIChib2R5ICYmIGJvZHkgaW5zdGFuY2VvZiBUSFJFRS5TcHJpdGUpIHtcbiAgICAgIGNvbnN0IHsgbWFwIH0gPSBib2R5Lm1hdGVyaWFsO1xuXG4gICAgICBwYXJ0aWNsZS50YXJnZXQudGV4dHVyZSA9IG1hcDtcbiAgICAgIHBhcnRpY2xlLnRhcmdldC50ZXh0dXJlSW5kZXggPSB0aGlzLmdldFRleHR1cmVJRChcbiAgICAgICAgbWFwLFxuICAgICAgICB0aGlzLnNob3VsZERlYnVnVGV4dHVyZUF0bGFzXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEVudHJ5IHBvaW50IGZvciBtYXBwaW5nIHBhcnRpY2xlIHByb3BlcnRpZXMgdG8gYnVmZmVyIGdlb21ldHJ5IHBvaW50cy5cbiAgICpcbiAgICogQHBhcmFtIHtQYXJ0aWNsZX0gcGFydGljbGUgLSBUaGUgcGFydGljbGUgY29udGFpbmluZyB0aGUgcHJvcGVydGllcyB0byBtYXBcbiAgICogQHJldHVybiB7RGVza3RvcEdQVVJlbmRlcmVyfVxuICAgKi9cbiAgbWFwUGFydGljbGVUYXJnZXRQcm9wc1RvUG9pbnQocGFydGljbGUpIHtcbiAgICB0aGlzLnVwZGF0ZVBvaW50UG9zaXRpb24ocGFydGljbGUpXG4gICAgICAudXBkYXRlUG9pbnRTaXplKHBhcnRpY2xlKVxuICAgICAgLnVwZGF0ZVBvaW50Q29sb3IocGFydGljbGUpXG4gICAgICAudXBkYXRlUG9pbnRBbHBoYShwYXJ0aWNsZSlcbiAgICAgIC51cGRhdGVQb2ludFRleHR1cmVJbmRleChwYXJ0aWNsZSk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSBwb2ludCdzIHBvc2l0aW9uIGFjY29yZGluZyB0byB0aGUgcGFydGljbGUncyB0YXJnZXQgcG9zaXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSB7UGFydGljbGV9IHBhcnRpY2xlIC0gVGhlIHBhcnRpY2xlIGNvbnRhaW5pbmcgdGhlIHRhcmdldCBwb3NpdGlvbi5cbiAgICogQHJldHVybiB7RGVza3RvcEdQVVJlbmRlcmVyfVxuICAgKi9cbiAgdXBkYXRlUG9pbnRQb3NpdGlvbihwYXJ0aWNsZSkge1xuICAgIGNvbnN0IGF0dHJpYnV0ZSA9ICdwb3NpdGlvbic7XG4gICAgY29uc3QgeyBnZW9tZXRyeSwgc3RyaWRlLCBidWZmZXIgfSA9IHRoaXM7XG4gICAgY29uc3QgeyB0YXJnZXQgfSA9IHBhcnRpY2xlO1xuICAgIGNvbnN0IHsgb2Zmc2V0IH0gPSBnZW9tZXRyeS5hdHRyaWJ1dGVzW2F0dHJpYnV0ZV07XG5cbiAgICBidWZmZXIuYXJyYXlbdGFyZ2V0LmluZGV4ICogc3RyaWRlICsgb2Zmc2V0ICsgMF0gPSB0YXJnZXQucG9zaXRpb24ueDtcbiAgICBidWZmZXIuYXJyYXlbdGFyZ2V0LmluZGV4ICogc3RyaWRlICsgb2Zmc2V0ICsgMV0gPSB0YXJnZXQucG9zaXRpb24ueTtcbiAgICBidWZmZXIuYXJyYXlbdGFyZ2V0LmluZGV4ICogc3RyaWRlICsgb2Zmc2V0ICsgMl0gPSB0YXJnZXQucG9zaXRpb24uejtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIHBvaW50J3Mgc2l6ZSByZWxhdGl2ZSB0byB0aGUgcGFydGljbGUncyB0YXJnZXQgc2NhbGUgYW5kIHJhZGl1cy5cbiAgICpcbiAgICogQHBhcmFtIHtQYXJ0aWNsZX0gcGFydGljbGUgLSBUaGUgcGFydGljbGUgY29udGFpbmluZyB0aGUgdGFyZ2V0IHNjYWxlLlxuICAgKiBAcmV0dXJuIHtEZXNrdG9wR1BVUmVuZGVyZXJ9XG4gICAqL1xuICB1cGRhdGVQb2ludFNpemUocGFydGljbGUpIHtcbiAgICBjb25zdCBhdHRyaWJ1dGUgPSAnc2l6ZSc7XG4gICAgY29uc3QgeyBnZW9tZXRyeSwgc3RyaWRlLCBidWZmZXIgfSA9IHRoaXM7XG4gICAgY29uc3QgeyB0YXJnZXQgfSA9IHBhcnRpY2xlO1xuICAgIGNvbnN0IHsgb2Zmc2V0IH0gPSBnZW9tZXRyeS5hdHRyaWJ1dGVzW2F0dHJpYnV0ZV07XG5cbiAgICBidWZmZXIuYXJyYXlbdGFyZ2V0LmluZGV4ICogc3RyaWRlICsgb2Zmc2V0ICsgMF0gPSB0YXJnZXQuc2l6ZTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIHBvaW50J3MgY29sb3IgYXR0cmlidXRlIGFjY29yZGluZyB3aXRoIHRoZSBwYXJ0aWNsZSdzIHRhcmdldCBjb2xvci5cbiAgICpcbiAgICogQHBhcmFtIHtQYXJ0aWNsZX0gcGFydGljbGUgLSBUaGUgcGFydGljbGUgY29udGFpbmluZyB0aGUgdGFyZ2V0IGNvbG9yIGFuZCBhbHBoYS5cbiAgICogQHJldHVybiB7RGVza3RvcEdQVVJlbmRlcmVyfVxuICAgKi9cbiAgdXBkYXRlUG9pbnRDb2xvcihwYXJ0aWNsZSkge1xuICAgIGNvbnN0IGF0dHJpYnV0ZSA9ICdjb2xvcic7XG4gICAgY29uc3QgeyBnZW9tZXRyeSwgc3RyaWRlLCBidWZmZXIgfSA9IHRoaXM7XG4gICAgY29uc3QgeyB0YXJnZXQgfSA9IHBhcnRpY2xlO1xuICAgIGNvbnN0IHsgb2Zmc2V0IH0gPSBnZW9tZXRyeS5hdHRyaWJ1dGVzW2F0dHJpYnV0ZV07XG5cbiAgICBidWZmZXIuYXJyYXlbdGFyZ2V0LmluZGV4ICogc3RyaWRlICsgb2Zmc2V0ICsgMF0gPSB0YXJnZXQuY29sb3IucjtcbiAgICBidWZmZXIuYXJyYXlbdGFyZ2V0LmluZGV4ICogc3RyaWRlICsgb2Zmc2V0ICsgMV0gPSB0YXJnZXQuY29sb3IuZztcbiAgICBidWZmZXIuYXJyYXlbdGFyZ2V0LmluZGV4ICogc3RyaWRlICsgb2Zmc2V0ICsgMl0gPSB0YXJnZXQuY29sb3IuYjtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIHBvaW50IGFscGhhIGF0dHJpYnV0ZSB3aXRoIHRoZSBwYXJ0aWNsZSdzIHRhcmdldCBhbHBoYS5cbiAgICpcbiAgICogQHBhcmFtIHtQYXJ0aWNsZX0gcGFydGljbGUgLSBUaGUgcGFydGljbGUgY29udGFpbmluZyB0aGUgdGFyZ2V0IGFscGhhLlxuICAgKiBAcmV0dXJuIHtEZXNrdG9wR1BVUmVuZGVyZXJ9XG4gICAqL1xuICB1cGRhdGVQb2ludEFscGhhKHBhcnRpY2xlKSB7XG4gICAgY29uc3QgYXR0cmlidXRlID0gJ2FscGhhJztcbiAgICBjb25zdCB7IGdlb21ldHJ5LCBzdHJpZGUsIGJ1ZmZlciB9ID0gdGhpcztcbiAgICBjb25zdCB7IHRhcmdldCB9ID0gcGFydGljbGU7XG4gICAgY29uc3QgeyBvZmZzZXQgfSA9IGdlb21ldHJ5LmF0dHJpYnV0ZXNbYXR0cmlidXRlXTtcblxuICAgIGJ1ZmZlci5hcnJheVt0YXJnZXQuaW5kZXggKiBzdHJpZGUgKyBvZmZzZXQgKyAwXSA9IHRhcmdldC5hbHBoYTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIHBvaW50IHRleHR1cmUgYXR0cmlidXRlIHdpdGggdGhlIHBhcnRpY2xlJ3MgdGFyZ2V0IHRleHR1cmUuXG4gICAqXG4gICAqIEBwYXJhbSB7UGFydGljbGV9IHBhcnRpY2xlIC0gVGhlIHBhcnRpY2xlIGNvbnRhaW5pbmcgdGhlIHRhcmdldCB0ZXh0dXJlLlxuICAgKiBAcmV0dXJuIHtEZXNrdG9wR1BVUmVuZGVyZXJ9XG4gICAqL1xuICB1cGRhdGVQb2ludFRleHR1cmVJbmRleChwYXJ0aWNsZSkge1xuICAgIGNvbnN0IGF0dHJpYnV0ZSA9ICd0ZXhJRCc7XG4gICAgY29uc3QgeyBnZW9tZXRyeSwgc3RyaWRlLCBidWZmZXIgfSA9IHRoaXM7XG4gICAgY29uc3QgeyB0YXJnZXQgfSA9IHBhcnRpY2xlO1xuICAgIGNvbnN0IHsgb2Zmc2V0IH0gPSBnZW9tZXRyeS5hdHRyaWJ1dGVzW2F0dHJpYnV0ZV07XG5cbiAgICBidWZmZXIuYXJyYXlbdGFyZ2V0LmluZGV4ICogc3RyaWRlICsgb2Zmc2V0ICsgMF0gPSB0YXJnZXQudGV4dHVyZUluZGV4O1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBnZXRUZXh0dXJlSUQodGV4dHVyZSwgZGVidWcpIHtcbiAgICBpZiAodGV4dHVyZS50ZXh0dXJlSW5kZXggPT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKCF0aGlzLnRleHR1cmVBdGxhcykge1xuICAgICAgICB0aGlzLnRleHR1cmVBdGxhcyA9IG5ldyBUZXh0dXJlQXRsYXModGhpcywgZGVidWcpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnRleHR1cmVBdGxhcy5hZGRUZXh0dXJlKHRleHR1cmUpO1xuICAgIH1cblxuICAgIHJldHVybiB0ZXh0dXJlLnRleHR1cmVJbmRleDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUZWFycyBkb3duIHRoZSBHUFVSZW5kZXJlci5cbiAgICpcbiAgICogQHJldHVybiB2b2lkXG4gICAqL1xuICBkZXN0cm95KCkge1xuICAgIGNvbnN0IHsgY29udGFpbmVyLCBwb2ludHMsIHRleHR1cmVBdGxhcywgdW5pcXVlTGlzdCB9ID0gdGhpcztcblxuICAgIGNvbnRhaW5lci5yZW1vdmUocG9pbnRzKTtcbiAgICB1bmlxdWVMaXN0LmRlc3Ryb3koKTtcbiAgICB0ZXh0dXJlQXRsYXMgJiYgdGV4dHVyZUF0bGFzLmRlc3Ryb3koKTtcbiAgfVxufVxuIl19
371
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9yZW5kZXJlci9HUFVSZW5kZXJlci9EZXNrdG9wL2luZGV4LmpzIl0sIm5hbWVzIjpbIlRIUkVFIiwiRGVza3RvcEdQVVJlbmRlcmVyIiwiY29udGFpbmVyIiwidGhyZWUiLCJvcHRpb25zIiwiREVGQVVMVF9SRU5ERVJFUl9PUFRJT05TIiwiUkVOREVSRVJfVFlQRV9HUFVfREVTS1RPUCIsInByb3BzIiwiY2FtZXJhIiwibWF4UGFydGljbGVzIiwiYmFzZUNvbG9yIiwiYmxlbmRpbmciLCJkZXB0aFRlc3QiLCJkZXB0aFdyaXRlIiwidHJhbnNwYXJlbnQiLCJzaG91bGREZWJ1Z1RleHR1cmVBdGxhcyIsInBhcnRpY2xlQnVmZmVyIiwiUGFydGljbGVCdWZmZXIiLCJtYXRlcmlhbCIsIlNoYWRlck1hdGVyaWFsIiwidW5pZm9ybXMiLCJ2YWx1ZSIsIkNvbG9yIiwidVRleHR1cmUiLCJhdGxhc0luZGV4IiwidmVydGV4U2hhZGVyIiwiZnJhZ21lbnRTaGFkZXIiLCJ0YXJnZXRQb29sIiwiUG9vbCIsInVuaXF1ZUxpc3QiLCJVbmlxdWVMaXN0IiwiYnVmZmVyIiwic3RyaWRlIiwiZ2VvbWV0cnkiLCJwb2ludHMiLCJQb2ludHMiLCJmcnVzdHVtQ3VsbGVkIiwiYWRkIiwic3lzdGVtIiwibmVlZHNVcGRhdGUiLCJ0ZXh0dXJlQXRsYXMiLCJ1cGRhdGUiLCJwYXJ0aWNsZSIsInRhcmdldCIsImdldCIsIlRhcmdldCIsImlkIiwidXBkYXRlVGFyZ2V0IiwibWFwUGFydGljbGVUYXJnZXRQcm9wc1RvUG9pbnQiLCJyZXNldCIsInBvc2l0aW9uIiwicm90YXRpb24iLCJzY2FsZSIsInJhZGl1cyIsImNvbG9yIiwiYWxwaGEiLCJib2R5IiwiciIsImciLCJiIiwiY29weSIsInNpemUiLCJzZXRSR0IiLCJpbmRleCIsImZpbmQiLCJTcHJpdGUiLCJtYXAiLCJ0ZXh0dXJlIiwidGV4dHVyZUluZGV4IiwiZ2V0VGV4dHVyZUlEIiwidXBkYXRlUG9pbnRQb3NpdGlvbiIsInVwZGF0ZVBvaW50U2l6ZSIsInVwZGF0ZVBvaW50Um90YXRpb24iLCJ1cGRhdGVQb2ludENvbG9yIiwidXBkYXRlUG9pbnRBbHBoYSIsInVwZGF0ZVBvaW50VGV4dHVyZUluZGV4IiwiYXR0cmlidXRlIiwib2Zmc2V0IiwiYXR0cmlidXRlcyIsImFycmF5IiwieCIsInkiLCJ6IiwiZGVidWciLCJ1bmRlZmluZWQiLCJUZXh0dXJlQXRsYXMiLCJhZGRUZXh0dXJlIiwicmVtb3ZlIiwiZGVzdHJveSIsIkJhc2VSZW5kZXJlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7OztBQUVBLElBQUlBLEtBQUo7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0lBQ3FCQyxrQjs7Ozs7QUFDbkIsOEJBQVlDLFNBQVosRUFBdUJDLEtBQXZCLEVBQWtFO0FBQUE7O0FBQUEsUUFBcENDLE9BQW9DLHVFQUExQkMsbUNBQTBCO0FBQUE7QUFDaEUsOEJBQU1DLGdDQUFOO0FBRUFOLElBQUFBLEtBQUssR0FBRyxNQUFLRyxLQUFMLEdBQWFBLEtBQXJCOztBQUNBLFFBQU1JLEtBQUssbUNBQVFGLG1DQUFSLEdBQXFDRCxPQUFyQyxDQUFYOztBQUpnRSxRQU05REksTUFOOEQsR0FjNURELEtBZDRELENBTTlEQyxNQU44RDtBQUFBLFFBTzlEQyxZQVA4RCxHQWM1REYsS0FkNEQsQ0FPOURFLFlBUDhEO0FBQUEsUUFROURDLFNBUjhELEdBYzVESCxLQWQ0RCxDQVE5REcsU0FSOEQ7QUFBQSxRQVM5REMsUUFUOEQsR0FjNURKLEtBZDRELENBUzlESSxRQVQ4RDtBQUFBLFFBVTlEQyxTQVY4RCxHQWM1REwsS0FkNEQsQ0FVOURLLFNBVjhEO0FBQUEsUUFXOURDLFVBWDhELEdBYzVETixLQWQ0RCxDQVc5RE0sVUFYOEQ7QUFBQSxRQVk5REMsV0FaOEQsR0FjNURQLEtBZDRELENBWTlETyxXQVo4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QUMyRCxPQUFYO0FBQ0FoRCxNQUFBQSxZQUFZLElBQUlBLFlBQVksQ0FBQ2dELE9BQWIsRUFBaEI7QUFDRDs7O0VBblI2Q0MseUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQYXJ0aWNsZUJ1ZmZlciwgVGFyZ2V0LCBUZXh0dXJlQXRsYXMsIFVuaXF1ZUxpc3QgfSBmcm9tICcuLi9jb21tb24nO1xuaW1wb3J0IHsgZnJhZ21lbnRTaGFkZXIsIHZlcnRleFNoYWRlciB9IGZyb20gJy4vc2hhZGVycyc7XG5cbmltcG9ydCBCYXNlUmVuZGVyZXIgZnJvbSAnLi4vLi4vQmFzZVJlbmRlcmVyJztcbmltcG9ydCB7IERFRkFVTFRfUkVOREVSRVJfT1BUSU9OUyB9IGZyb20gJy4uL2NvbW1vbi9jb25zdGFudHMnO1xuaW1wb3J0IHsgUG9vbCB9IGZyb20gJy4uLy4uLy4uL2NvcmUnO1xuaW1wb3J0IHsgUkVOREVSRVJfVFlQRV9HUFVfREVTS1RPUCB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxubGV0IFRIUkVFO1xuXG4vKipcbiAqIEdQVVJlbmRlcmVyIGZvciBkZXZpY2VzIHRoYXQgc3VwcG9ydCBmbG9hdGluZyBwb2ludCB0ZXh0dXJlcy5cbiAqXG4gKiBAYXV0aG9yIHRocmF4IDxtYW50aHJheEBnbWFpbC5jb20+XG4gKiBAYXV0aG9yIHJvaGFuLWRlc2hwYW5kZSA8cm9oYW5AY3JlYXRpdmVsaWZlZm9ybS5jb20+XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERlc2t0b3BHUFVSZW5kZXJlciBleHRlbmRzIEJhc2VSZW5kZXJlciB7XG4gIGNvbnN0cnVjdG9yKGNvbnRhaW5lciwgdGhyZWUsIG9wdGlvbnMgPSBERUZBVUxUX1JFTkRFUkVSX09QVElPTlMpIHtcbiAgICBzdXBlcihSRU5ERVJFUl9UWVBFX0dQVV9ERVNLVE9QKTtcblxuICAgIFRIUkVFID0gdGhpcy50aHJlZSA9IHRocmVlO1xuICAgIGNvbnN0IHByb3BzID0geyAuLi5ERUZBVUxUX1JFTkRFUkVSX09QVElPTlMsIC4uLm9wdGlvbnMgfTtcbiAgICBjb25zdCB7XG4gICAgICBjYW1lcmEsXG4gICAgICBtYXhQYXJ0aWNsZXMsXG4gICAgICBiYXNlQ29sb3IsXG4gICAgICBibGVuZGluZyxcbiAgICAgIGRlcHRoVGVzdCxcbiAgICAgIGRlcHRoV3JpdGUsXG4gICAgICB0cmFuc3BhcmVudCxcbiAgICAgIHNob3VsZERlYnVnVGV4dHVyZUF0bGFzLFxuICAgIH0gPSBwcm9wcztcbiAgICBjb25zdCBwYXJ0aWNsZUJ1ZmZlciA9IG5ldyBQYXJ0aWNsZUJ1ZmZlcihtYXhQYXJ0aWNsZXMsIFRIUkVFKTtcbiAgICBjb25zdCBtYXRlcmlhbCA9IG5ldyBUSFJFRS5TaGFkZXJNYXRlcmlhbCh7XG4gICAgICB1bmlmb3Jtczoge1xuICAgICAgICBiYXNlQ29sb3I6IHsgdmFsdWU6IG5ldyBUSFJFRS5Db2xvcihiYXNlQ29sb3IpIH0sXG4gICAgICAgIHVUZXh0dXJlOiB7IHZhbHVlOiBudWxsIH0sXG4gICAgICAgIGF0bGFzSW5kZXg6IHsgdmFsdWU6IG51bGwgfSxcbiAgICAgIH0sXG4gICAgICB2ZXJ0ZXhTaGFkZXI6IHZlcnRleFNoYWRlcigpLFxuICAgICAgZnJhZ21lbnRTaGFkZXI6IGZyYWdtZW50U2hhZGVyKCksXG4gICAgICBibGVuZGluZzogVEhSRUVbYmxlbmRpbmddLFxuICAgICAgZGVwdGhUZXN0LFxuICAgICAgZGVwdGhXcml0ZSxcbiAgICAgIHRyYW5zcGFyZW50LFxuICAgIH0pO1xuXG4gICAgdGhpcy5jb250YWluZXIgPSBjb250YWluZXI7XG4gICAgdGhpcy5jYW1lcmEgPSBjYW1lcmE7XG4gICAgdGhpcy50YXJnZXRQb29sID0gbmV3IFBvb2woKTtcbiAgICB0aGlzLnVuaXF1ZUxpc3QgPSBuZXcgVW5pcXVlTGlzdChtYXhQYXJ0aWNsZXMpO1xuICAgIHRoaXMucGFydGljbGVCdWZmZXIgPSBwYXJ0aWNsZUJ1ZmZlcjtcbiAgICB0aGlzLmJ1ZmZlciA9IHBhcnRpY2xlQnVmZmVyLmJ1ZmZlcjtcbiAgICB0aGlzLnN0cmlkZSA9IHBhcnRpY2xlQnVmZmVyLnN0cmlkZTtcbiAgICB0aGlzLmdlb21ldHJ5ID0gcGFydGljbGVCdWZmZXIuZ2VvbWV0cnk7XG4gICAgdGhpcy5tYXRlcmlhbCA9IG1hdGVyaWFsO1xuICAgIHRoaXMucG9pbnRzID0gbmV3IFRIUkVFLlBvaW50cyh0aGlzLmdlb21ldHJ5LCB0aGlzLm1hdGVyaWFsKTtcbiAgICB0aGlzLnBvaW50cy5mcnVzdHVtQ3VsbGVkID0gZmFsc2U7XG4gICAgdGhpcy5zaG91bGREZWJ1Z1RleHR1cmVBdGxhcyA9IHNob3VsZERlYnVnVGV4dHVyZUF0bGFzO1xuXG4gICAgdGhpcy5jb250YWluZXIuYWRkKHRoaXMucG9pbnRzKTtcbiAgfVxuXG4gIG9uU3lzdGVtVXBkYXRlKHN5c3RlbSkge1xuICAgIHN1cGVyLm9uU3lzdGVtVXBkYXRlKHN5c3RlbSk7XG5cbiAgICB0aGlzLmJ1ZmZlci5uZWVkc1VwZGF0ZSA9IHRydWU7XG5cbiAgICB0aGlzLnRleHR1cmVBdGxhcyAmJiB0aGlzLnRleHR1cmVBdGxhcy51cGRhdGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQb29scyB0aGUgcGFydGljbGUgdGFyZ2V0IGlmIGl0IGRvZXMgbm90IGV4aXN0LlxuICAgKiBVcGRhdGVzIHRoZSB0YXJnZXQgYW5kIG1hcHMgcGFydGljbGUgcHJvcGVydGllcyB0byB0aGUgcG9pbnQuXG4gICAqXG4gICAqIEBwYXJhbSB7UGFydGljbGV9XG4gICAqL1xuICBvblBhcnRpY2xlQ3JlYXRlZChwYXJ0aWNsZSkge1xuICAgIGlmICghcGFydGljbGUudGFyZ2V0KSB7XG4gICAgICBwYXJ0aWNsZS50YXJnZXQgPSB0aGlzLnRhcmdldFBvb2wuZ2V0KFRhcmdldCwgVEhSRUUpO1xuICAgICAgdGhpcy51bmlxdWVMaXN0LmFkZChwYXJ0aWNsZS5pZCk7XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVUYXJnZXQocGFydGljbGUpLm1hcFBhcnRpY2xlVGFyZ2V0UHJvcHNUb1BvaW50KHBhcnRpY2xlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYXBzIHBhcnRpY2xlIHByb3BlcnRpZXMgdG8gdGhlIHBvaW50IGlmIHRoZSBwYXJ0aWNsZSBoYXMgYSB0YXJnZXQuXG4gICAqXG4gICAqIEBwYXJhbSB7UGFydGljbGV9XG4gICAqL1xuICBvblBhcnRpY2xlVXBkYXRlKHBhcnRpY2xlKSB7XG4gICAgaWYgKCFwYXJ0aWNsZS50YXJnZXQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZVRhcmdldChwYXJ0aWNsZSkubWFwUGFydGljbGVUYXJnZXRQcm9wc1RvUG9pbnQocGFydGljbGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0cyBhbmQgY2xlYXJzIHRoZSBwYXJ0aWNsZSB0YXJnZXQuXG4gICAqXG4gICAqIEBwYXJhbSB7UGFydGljbGV9XG4gICAqL1xuICBvblBhcnRpY2xlRGVhZChwYXJ0aWNsZSkge1xuICAgIGlmICghcGFydGljbGUudGFyZ2V0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcGFydGljbGUudGFyZ2V0LnJlc2V0KCk7XG4gICAgdGhpcy5tYXBQYXJ0aWNsZVRhcmdldFByb3BzVG9Qb2ludChwYXJ0aWNsZSk7XG5cbiAgICBwYXJ0aWNsZS50YXJnZXQgPSBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hcHMgYWxsIG11dGFibGUgcHJvcGVydGllcyBmcm9tIHRoZSBwYXJ0aWNsZSB0byB0aGUgdGFyZ2V0LlxuICAgKlxuICAgKiBAcGFyYW0ge1BhcnRpY2xlfVxuICAgKiBAcmV0dXJuIHtEZXNrdG9wR1BVUmVuZGVyZXJ9XG4gICAqL1xuICB1cGRhdGVUYXJnZXQocGFydGljbGUpIHtcbiAgICBjb25zdCB7IHBvc2l0aW9uLCByb3RhdGlvbiwgc2NhbGUsIHJhZGl1cywgY29sb3IsIGFscGhhLCBib2R5LCBpZCB9ID0gcGFydGljbGU7XG4gICAgY29uc3QgeyByLCBnLCBiIH0gPSBjb2xvcjtcblxuICAgIHBhcnRpY2xlLnRhcmdldC5wb3NpdGlvbi5jb3B5KHBvc2l0aW9uKTtcbiAgICBwYXJ0aWNsZS50YXJnZXQucm90YXRpb24uY29weShyb3RhdGlvbik7XG4gICAgcGFydGljbGUudGFyZ2V0LnNpemUgPSBzY2FsZSAqIHJhZGl1cztcbiAgICBwYXJ0aWNsZS50YXJnZXQuY29sb3Iuc2V0UkdCKHIsIGcsIGIpO1xuICAgIHBhcnRpY2xlLnRhcmdldC5hbHBoYSA9IGFscGhhO1xuICAgIHBhcnRpY2xlLnRhcmdldC5pbmRleCA9IHRoaXMudW5pcXVlTGlzdC5maW5kKGlkKTtcblxuICAgIGlmIChib2R5ICYmIGJvZHkgaW5zdGFuY2VvZiBUSFJFRS5TcHJpdGUpIHtcbiAgICAgIGNvbnN0IHsgbWFwIH0gPSBib2R5Lm1hdGVyaWFsO1xuXG4gICAgICBwYXJ0aWNsZS50YXJnZXQudGV4dHVyZSA9IG1hcDtcbiAgICAgIHBhcnRpY2xlLnRhcmdldC50ZXh0dXJlSW5kZXggPSB0aGlzLmdldFRleHR1cmVJRChcbiAgICAgICAgbWFwLFxuICAgICAgICB0aGlzLnNob3VsZERlYnVnVGV4dHVyZUF0bGFzXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEVudHJ5IHBvaW50IGZvciBtYXBwaW5nIHBhcnRpY2xlIHByb3BlcnRpZXMgdG8gYnVmZmVyIGdlb21ldHJ5IHBvaW50cy5cbiAgICpcbiAgICogQHBhcmFtIHtQYXJ0aWNsZX0gcGFydGljbGUgLSBUaGUgcGFydGljbGUgY29udGFpbmluZyB0aGUgcHJvcGVydGllcyB0byBtYXBcbiAgICogQHJldHVybiB7RGVza3RvcEdQVVJlbmRlcmVyfVxuICAgKi9cbiAgbWFwUGFydGljbGVUYXJnZXRQcm9wc1RvUG9pbnQocGFydGljbGUpIHtcbiAgICB0aGlzLnVwZGF0ZVBvaW50UG9zaXRpb24ocGFydGljbGUpXG4gICAgICAudXBkYXRlUG9pbnRTaXplKHBhcnRpY2xlKVxuICAgICAgLnVwZGF0ZVBvaW50Um90YXRpb24ocGFydGljbGUpXG4gICAgICAudXBkYXRlUG9pbnRDb2xvcihwYXJ0aWNsZSlcbiAgICAgIC51cGRhdGVQb2ludEFscGhhKHBhcnRpY2xlKVxuICAgICAgLnVwZGF0ZVBvaW50VGV4dHVyZUluZGV4KHBhcnRpY2xlKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIHBvaW50J3MgcG9zaXRpb24gYWNjb3JkaW5nIHRvIHRoZSBwYXJ0aWNsZSdzIHRhcmdldCBwb3NpdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHtQYXJ0aWNsZX0gcGFydGljbGUgLSBUaGUgcGFydGljbGUgY29udGFpbmluZyB0aGUgdGFyZ2V0IHBvc2l0aW9uLlxuICAgKiBAcmV0dXJuIHtEZXNrdG9wR1BVUmVuZGVyZXJ9XG4gICAqL1xuICB1cGRhdGVQb2ludFBvc2l0aW9uKHBhcnRpY2xlKSB7XG4gICAgY29uc3QgYXR0cmlidXRlID0gJ3Bvc2l0aW9uJztcbiAgICBjb25zdCB7IGdlb21ldHJ5LCBzdHJpZGUsIGJ1ZmZlciB9ID0gdGhpcztcbiAgICBjb25zdCB7IHRhcmdldCB9ID0gcGFydGljbGU7XG4gICAgY29uc3QgeyBvZmZzZXQgfSA9IGdlb21ldHJ5LmF0dHJpYnV0ZXNbYXR0cmlidXRlXTtcblxuICAgIGJ1ZmZlci5hcnJheVt0YXJnZXQuaW5kZXggKiBzdHJpZGUgKyBvZmZzZXQgKyAwXSA9IHRhcmdldC5wb3NpdGlvbi54O1xuICAgIGJ1ZmZlci5hcnJheVt0YXJnZXQuaW5kZXggKiBzdHJpZGUgKyBvZmZzZXQgKyAxXSA9IHRhcmdldC5wb3NpdGlvbi55O1xuICAgIGJ1ZmZlci5hcnJheVt0YXJnZXQuaW5kZXggKiBzdHJpZGUgKyBvZmZzZXQgKyAyXSA9IHRhcmdldC5wb3NpdGlvbi56O1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgcG9pbnQncyBzaXplIHJlbGF0aXZlIHRvIHRoZSBwYXJ0aWNsZSdzIHRhcmdldCBzY2FsZSBhbmQgcmFkaXVzLlxuICAgKlxuICAgKiBAcGFyYW0ge1BhcnRpY2xlfSBwYXJ0aWNsZSAtIFRoZSBwYXJ0aWNsZSBjb250YWluaW5nIHRoZSB0YXJnZXQgc2NhbGUuXG4gICAqIEByZXR1cm4ge0Rlc2t0b3BHUFVSZW5kZXJlcn1cbiAgICovXG4gIHVwZGF0ZVBvaW50U2l6ZShwYXJ0aWNsZSkge1xuICAgIGNvbnN0IGF0dHJpYnV0ZSA9ICdzaXplJztcbiAgICBjb25zdCB7IGdlb21ldHJ5LCBzdHJpZGUsIGJ1ZmZlciB9ID0gdGhpcztcbiAgICBjb25zdCB7IHRhcmdldCB9ID0gcGFydGljbGU7XG4gICAgY29uc3QgeyBvZmZzZXQgfSA9IGdlb21ldHJ5LmF0dHJpYnV0ZXNbYXR0cmlidXRlXTtcblxuICAgIGJ1ZmZlci5hcnJheVt0YXJnZXQuaW5kZXggKiBzdHJpZGUgKyBvZmZzZXQgKyAwXSA9IHRhcmdldC5zaXplO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgcG9pbnQncyByb3RhdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHtQYXJ0aWNsZX0gcGFydGljbGUgLSBUaGUgcGFydGljbGUgY29udGFpbmluZyB0aGUgdGFyZ2V0IHJvdGF0aW9uLlxuICAgKiBAcmV0dXJuIHtEZXNrdG9wR1BVUmVuZGVyZXJ9XG4gICAqL1xuICB1cGRhdGVQb2ludFJvdGF0aW9uKHBhcnRpY2xlKSB7XG4gICAgY29uc3QgYXR0cmlidXRlID0gJ3JvdGF0aW9uJztcbiAgICBjb25zdCB7IGdlb21ldHJ5LCBzdHJpZGUsIGJ1ZmZlciB9ID0gdGhpcztcbiAgICBjb25zdCB7IHRhcmdldCB9ID0gcGFydGljbGU7XG4gICAgY29uc3QgeyBvZmZzZXQgfSA9IGdlb21ldHJ5LmF0dHJpYnV0ZXNbYXR0cmlidXRlXTtcblxuICAgIGJ1ZmZlci5hcnJheVt0YXJnZXQuaW5kZXggKiBzdHJpZGUgKyBvZmZzZXQgKyAwXSA9IHRhcmdldC5yb3RhdGlvbi56O1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgcG9pbnQncyBjb2xvciBhdHRyaWJ1dGUgYWNjb3JkaW5nIHdpdGggdGhlIHBhcnRpY2xlJ3MgdGFyZ2V0IGNvbG9yLlxuICAgKlxuICAgKiBAcGFyYW0ge1BhcnRpY2xlfSBwYXJ0aWNsZSAtIFRoZSBwYXJ0aWNsZSBjb250YWluaW5nIHRoZSB0YXJnZXQgY29sb3IgYW5kIGFscGhhLlxuICAgKiBAcmV0dXJuIHtEZXNrdG9wR1BVUmVuZGVyZXJ9XG4gICAqL1xuICB1cGRhdGVQb2ludENvbG9yKHBhcnRpY2xlKSB7XG4gICAgY29uc3QgYXR0cmlidXRlID0gJ2NvbG9yJztcbiAgICBjb25zdCB7IGdlb21ldHJ5LCBzdHJpZGUsIGJ1ZmZlciB9ID0gdGhpcztcbiAgICBjb25zdCB7IHRhcmdldCB9ID0gcGFydGljbGU7XG4gICAgY29uc3QgeyBvZmZzZXQgfSA9IGdlb21ldHJ5LmF0dHJpYnV0ZXNbYXR0cmlidXRlXTtcblxuICAgIGJ1ZmZlci5hcnJheVt0YXJnZXQuaW5kZXggKiBzdHJpZGUgKyBvZmZzZXQgKyAwXSA9IHRhcmdldC5jb2xvci5yO1xuICAgIGJ1ZmZlci5hcnJheVt0YXJnZXQuaW5kZXggKiBzdHJpZGUgKyBvZmZzZXQgKyAxXSA9IHRhcmdldC5jb2xvci5nO1xuICAgIGJ1ZmZlci5hcnJheVt0YXJnZXQuaW5kZXggKiBzdHJpZGUgKyBvZmZzZXQgKyAyXSA9IHRhcmdldC5jb2xvci5iO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgcG9pbnQgYWxwaGEgYXR0cmlidXRlIHdpdGggdGhlIHBhcnRpY2xlJ3MgdGFyZ2V0IGFscGhhLlxuICAgKlxuICAgKiBAcGFyYW0ge1BhcnRpY2xlfSBwYXJ0aWNsZSAtIFRoZSBwYXJ0aWNsZSBjb250YWluaW5nIHRoZSB0YXJnZXQgYWxwaGEuXG4gICAqIEByZXR1cm4ge0Rlc2t0b3BHUFVSZW5kZXJlcn1cbiAgICovXG4gIHVwZGF0ZVBvaW50QWxwaGEocGFydGljbGUpIHtcbiAgICBjb25zdCBhdHRyaWJ1dGUgPSAnYWxwaGEnO1xuICAgIGNvbnN0IHsgZ2VvbWV0cnksIHN0cmlkZSwgYnVmZmVyIH0gPSB0aGlzO1xuICAgIGNvbnN0IHsgdGFyZ2V0IH0gPSBwYXJ0aWNsZTtcbiAgICBjb25zdCB7IG9mZnNldCB9ID0gZ2VvbWV0cnkuYXR0cmlidXRlc1thdHRyaWJ1dGVdO1xuXG4gICAgYnVmZmVyLmFycmF5W3RhcmdldC5pbmRleCAqIHN0cmlkZSArIG9mZnNldCArIDBdID0gdGFyZ2V0LmFscGhhO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgcG9pbnQgdGV4dHVyZSBhdHRyaWJ1dGUgd2l0aCB0aGUgcGFydGljbGUncyB0YXJnZXQgdGV4dHVyZS5cbiAgICpcbiAgICogQHBhcmFtIHtQYXJ0aWNsZX0gcGFydGljbGUgLSBUaGUgcGFydGljbGUgY29udGFpbmluZyB0aGUgdGFyZ2V0IHRleHR1cmUuXG4gICAqIEByZXR1cm4ge0Rlc2t0b3BHUFVSZW5kZXJlcn1cbiAgICovXG4gIHVwZGF0ZVBvaW50VGV4dHVyZUluZGV4KHBhcnRpY2xlKSB7XG4gICAgY29uc3QgYXR0cmlidXRlID0gJ3RleElEJztcbiAgICBjb25zdCB7IGdlb21ldHJ5LCBzdHJpZGUsIGJ1ZmZlciB9ID0gdGhpcztcbiAgICBjb25zdCB7IHRhcmdldCB9ID0gcGFydGljbGU7XG4gICAgY29uc3QgeyBvZmZzZXQgfSA9IGdlb21ldHJ5LmF0dHJpYnV0ZXNbYXR0cmlidXRlXTtcblxuICAgIGJ1ZmZlci5hcnJheVt0YXJnZXQuaW5kZXggKiBzdHJpZGUgKyBvZmZzZXQgKyAwXSA9IHRhcmdldC50ZXh0dXJlSW5kZXg7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGdldFRleHR1cmVJRCh0ZXh0dXJlLCBkZWJ1Zykge1xuICAgIGlmICh0ZXh0dXJlLnRleHR1cmVJbmRleCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAoIXRoaXMudGV4dHVyZUF0bGFzKSB7XG4gICAgICAgIHRoaXMudGV4dHVyZUF0bGFzID0gbmV3IFRleHR1cmVBdGxhcyh0aGlzLCBkZWJ1Zyk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMudGV4dHVyZUF0bGFzLmFkZFRleHR1cmUodGV4dHVyZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRleHR1cmUudGV4dHVyZUluZGV4O1xuICB9XG5cbiAgLyoqXG4gICAqIFRlYXJzIGRvd24gdGhlIEdQVVJlbmRlcmVyLlxuICAgKlxuICAgKiBAcmV0dXJuIHZvaWRcbiAgICovXG4gIGRlc3Ryb3koKSB7XG4gICAgY29uc3QgeyBjb250YWluZXIsIHBvaW50cywgdGV4dHVyZUF0bGFzLCB1bmlxdWVMaXN0IH0gPSB0aGlzO1xuXG4gICAgY29udGFpbmVyLnJlbW92ZShwb2ludHMpO1xuICAgIHVuaXF1ZUxpc3QuZGVzdHJveSgpO1xuICAgIHRleHR1cmVBdGxhcyAmJiB0ZXh0dXJlQXRsYXMuZGVzdHJveSgpO1xuICB9XG59XG4iXX0=
@@ -6,8 +6,8 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.fragmentShader = void 0;
7
7
 
8
8
  var fragmentShader = function fragmentShader() {
9
- return "\n uniform vec3 baseColor;\n uniform sampler2D uTexture;\n uniform sampler2D atlasIndex;\n\n varying vec3 targetColor;\n varying float targetAlpha;\n varying vec4 tileRect;\n varying float tileID;\n\n void main() {\n gl_FragColor = vec4(baseColor * targetColor, targetAlpha);\n\n vec2 uv = gl_PointCoord;\n uv = mix(tileRect.xy, tileRect.zw, gl_PointCoord);\n\n gl_FragColor = gl_FragColor * texture2D(uTexture, uv);\n\n }\n";
9
+ return "\n uniform vec3 baseColor;\n uniform sampler2D uTexture;\n uniform sampler2D atlasIndex;\n\n varying float vRotation;\n varying vec3 targetColor;\n varying float targetAlpha;\n varying vec4 tileRect;\n varying float tileID;\n\n void main() {\n gl_FragColor = vec4(baseColor * targetColor, targetAlpha);\n\n vec2 uv = gl_PointCoord;\n uv = mix(tileRect.xy, tileRect.zw, gl_PointCoord);\n\n float mid = 0.5;\n uv = vec2(\n cos(vRotation) * (uv.x - mid) - sin(vRotation) * (uv.y - mid) + mid,\n cos(vRotation) * (uv.y - mid) + sin(vRotation) * (uv.x - mid) + mid\n );\n\n gl_FragColor = gl_FragColor * texture2D(uTexture, uv);\n\n }\n";
10
10
  };
11
11
 
12
12
  exports.fragmentShader = fragmentShader;
13
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9yZW5kZXJlci9HUFVSZW5kZXJlci9EZXNrdG9wL3NoYWRlcnMvZnJhZ21lbnRTaGFkZXIuanMiXSwibmFtZXMiOlsiZnJhZ21lbnRTaGFkZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBTyxJQUFNQSxjQUFjLEdBQUcsU0FBakJBLGNBQWlCLEdBQU07QUFDbEM7QUFvQkQsQ0FyQk0iLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgZnJhZ21lbnRTaGFkZXIgPSAoKSA9PiB7XG4gIHJldHVybiBgXG4gICAgdW5pZm9ybSB2ZWMzIGJhc2VDb2xvcjtcbiAgICB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZTtcbiAgICB1bmlmb3JtIHNhbXBsZXIyRCBhdGxhc0luZGV4O1xuXG4gICAgdmFyeWluZyB2ZWMzIHRhcmdldENvbG9yO1xuICAgIHZhcnlpbmcgZmxvYXQgdGFyZ2V0QWxwaGE7XG4gICAgdmFyeWluZyB2ZWM0IHRpbGVSZWN0O1xuICAgIHZhcnlpbmcgZmxvYXQgdGlsZUlEO1xuXG4gICAgdm9pZCBtYWluKCkge1xuICAgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNChiYXNlQ29sb3IgKiB0YXJnZXRDb2xvciwgdGFyZ2V0QWxwaGEpO1xuXG4gICAgICB2ZWMyIHV2ID0gZ2xfUG9pbnRDb29yZDtcbiAgICAgIHV2ID0gbWl4KHRpbGVSZWN0Lnh5LCB0aWxlUmVjdC56dywgZ2xfUG9pbnRDb29yZCk7XG5cbiAgICAgIGdsX0ZyYWdDb2xvciA9IGdsX0ZyYWdDb2xvciAqIHRleHR1cmUyRCh1VGV4dHVyZSwgdXYpO1xuXG4gICAgfVxuYDtcbn07XG4iXX0=
13
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9yZW5kZXJlci9HUFVSZW5kZXJlci9EZXNrdG9wL3NoYWRlcnMvZnJhZ21lbnRTaGFkZXIuanMiXSwibmFtZXMiOlsiZnJhZ21lbnRTaGFkZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBTyxJQUFNQSxjQUFjLEdBQUcsU0FBakJBLGNBQWlCLEdBQU07QUFDbEM7QUEyQkQsQ0E1Qk0iLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgZnJhZ21lbnRTaGFkZXIgPSAoKSA9PiB7XG4gIHJldHVybiBgXG4gICAgdW5pZm9ybSB2ZWMzIGJhc2VDb2xvcjtcbiAgICB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZTtcbiAgICB1bmlmb3JtIHNhbXBsZXIyRCBhdGxhc0luZGV4O1xuXG4gICAgdmFyeWluZyBmbG9hdCB2Um90YXRpb247XG4gICAgdmFyeWluZyB2ZWMzIHRhcmdldENvbG9yO1xuICAgIHZhcnlpbmcgZmxvYXQgdGFyZ2V0QWxwaGE7XG4gICAgdmFyeWluZyB2ZWM0IHRpbGVSZWN0O1xuICAgIHZhcnlpbmcgZmxvYXQgdGlsZUlEO1xuXG4gICAgdm9pZCBtYWluKCkge1xuICAgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNChiYXNlQ29sb3IgKiB0YXJnZXRDb2xvciwgdGFyZ2V0QWxwaGEpO1xuXG4gICAgICB2ZWMyIHV2ID0gZ2xfUG9pbnRDb29yZDtcbiAgICAgIHV2ID0gbWl4KHRpbGVSZWN0Lnh5LCB0aWxlUmVjdC56dywgZ2xfUG9pbnRDb29yZCk7XG5cbiAgICAgIGZsb2F0IG1pZCA9IDAuNTtcbiAgICAgIHV2ID0gdmVjMihcbiAgICAgICAgY29zKHZSb3RhdGlvbikgKiAodXYueCAtIG1pZCkgLSBzaW4odlJvdGF0aW9uKSAqICh1di55IC0gbWlkKSArIG1pZCxcbiAgICAgICAgY29zKHZSb3RhdGlvbikgKiAodXYueSAtIG1pZCkgKyBzaW4odlJvdGF0aW9uKSAqICh1di54IC0gbWlkKSArIG1pZFxuICAgICAgKTtcblxuICAgICAgZ2xfRnJhZ0NvbG9yID0gZ2xfRnJhZ0NvbG9yICogdGV4dHVyZTJEKHVUZXh0dXJlLCB1dik7XG5cbiAgICB9XG5gO1xufTtcbiJdfQ==
@@ -10,8 +10,8 @@ var _constants = require("../../common/TextureAtlas/constants");
10
10
  var _constants2 = require("../../common/shaders/constants");
11
11
 
12
12
  var vertexShader = function vertexShader() {
13
- return "\n uniform sampler2D uTexture;\n //atlasIndex is a 256x1 float texture of tile rectangles as r=minx g=miny b=maxx a=maxy\n uniform sampler2D atlasIndex;\n\n attribute float size;\n attribute vec3 color;\n attribute float alpha;\n attribute float texID;\n\n varying vec3 targetColor;\n varying float targetAlpha;\n varying vec4 tileRect;\n varying float tileID;\n\n void main() {\n vec4 mvPosition = modelViewMatrix * vec4(position, 1.0);\n targetColor = color;\n targetAlpha = alpha;\n\n tileID = texID;\n //get the tile rectangle from the atlasIndex texture..\n tileRect = texture2D(atlasIndex, vec2((tileID + 0.5) / ".concat(_constants.DATA_TEXTURE_SIZE, ".0, 0.5));\n\n gl_PointSize = ((size * ").concat(_constants2.SIZE_ATTENUATION_FACTOR, ") / -mvPosition.z);\n gl_Position = projectionMatrix * mvPosition;\n }\n");
13
+ return "\n uniform sampler2D uTexture;\n //atlasIndex is a 256x1 float texture of tile rectangles as r=minx g=miny b=maxx a=maxy\n uniform sampler2D atlasIndex;\n\n attribute float size;\n attribute vec3 color;\n attribute float alpha;\n attribute float texID;\n attribute float rotation;\n\n varying float vRotation;\n varying vec3 targetColor;\n varying float targetAlpha;\n varying vec4 tileRect;\n varying float tileID;\n\n void main() {\n vec4 mvPosition = modelViewMatrix * vec4(position, 1.0);\n targetColor = color;\n targetAlpha = alpha;\n vRotation = rotation;\n\n tileID = texID;\n //get the tile rectangle from the atlasIndex texture..\n tileRect = texture2D(atlasIndex, vec2((tileID + 0.5) / ".concat(_constants.DATA_TEXTURE_SIZE, ".0, 0.5));\n\n gl_PointSize = ((size * ").concat(_constants2.SIZE_ATTENUATION_FACTOR, ") / -mvPosition.z);\n gl_Position = projectionMatrix * mvPosition;\n }\n");
14
14
  };
15
15
 
16
16
  exports.vertexShader = vertexShader;
17
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9yZW5kZXJlci9HUFVSZW5kZXJlci9EZXNrdG9wL3NoYWRlcnMvdmVydGV4U2hhZGVyLmpzIl0sIm5hbWVzIjpbInZlcnRleFNoYWRlciIsIkRBVEFfVEVYVFVSRV9TSVpFIiwiU0laRV9BVFRFTlVBVElPTl9GQUNUT1IiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFFTyxJQUFNQSxZQUFZLEdBQUcsU0FBZkEsWUFBZSxHQUFNO0FBQ2hDLCtyQkFzQjZEQyw0QkF0QjdELHlEQXdCOEJDLG1DQXhCOUI7QUE0QkQsQ0E3Qk0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEQVRBX1RFWFRVUkVfU0laRSB9IGZyb20gJy4uLy4uL2NvbW1vbi9UZXh0dXJlQXRsYXMvY29uc3RhbnRzJztcbmltcG9ydCB7IFNJWkVfQVRURU5VQVRJT05fRkFDVE9SIH0gZnJvbSAnLi4vLi4vY29tbW9uL3NoYWRlcnMvY29uc3RhbnRzJztcblxuZXhwb3J0IGNvbnN0IHZlcnRleFNoYWRlciA9ICgpID0+IHtcbiAgcmV0dXJuIGBcbiAgICB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZTtcbiAgICAvL2F0bGFzSW5kZXggaXMgYSAyNTZ4MSBmbG9hdCB0ZXh0dXJlIG9mIHRpbGUgcmVjdGFuZ2xlcyBhcyByPW1pbnggZz1taW55IGI9bWF4eCBhPW1heHlcbiAgICB1bmlmb3JtIHNhbXBsZXIyRCBhdGxhc0luZGV4O1xuXG4gICAgYXR0cmlidXRlIGZsb2F0IHNpemU7XG4gICAgYXR0cmlidXRlIHZlYzMgY29sb3I7XG4gICAgYXR0cmlidXRlIGZsb2F0IGFscGhhO1xuICAgIGF0dHJpYnV0ZSBmbG9hdCB0ZXhJRDtcblxuICAgIHZhcnlpbmcgdmVjMyB0YXJnZXRDb2xvcjtcbiAgICB2YXJ5aW5nIGZsb2F0IHRhcmdldEFscGhhO1xuICAgIHZhcnlpbmcgdmVjNCB0aWxlUmVjdDtcbiAgICB2YXJ5aW5nIGZsb2F0IHRpbGVJRDtcblxuICAgIHZvaWQgbWFpbigpIHtcbiAgICAgIHZlYzQgbXZQb3NpdGlvbiA9IG1vZGVsVmlld01hdHJpeCAqIHZlYzQocG9zaXRpb24sIDEuMCk7XG4gICAgICB0YXJnZXRDb2xvciA9IGNvbG9yO1xuICAgICAgdGFyZ2V0QWxwaGEgPSBhbHBoYTtcblxuICAgICAgdGlsZUlEID0gdGV4SUQ7XG4gICAgICAvL2dldCB0aGUgdGlsZSByZWN0YW5nbGUgZnJvbSB0aGUgYXRsYXNJbmRleCB0ZXh0dXJlLi5cbiAgICAgIHRpbGVSZWN0ID0gdGV4dHVyZTJEKGF0bGFzSW5kZXgsIHZlYzIoKHRpbGVJRCArIDAuNSkgLyAke0RBVEFfVEVYVFVSRV9TSVpFfS4wLCAwLjUpKTtcblxuICAgICAgZ2xfUG9pbnRTaXplID0gKChzaXplICogJHtTSVpFX0FUVEVOVUFUSU9OX0ZBQ1RPUn0pIC8gLW12UG9zaXRpb24ueik7XG4gICAgICBnbF9Qb3NpdGlvbiA9IHByb2plY3Rpb25NYXRyaXggKiBtdlBvc2l0aW9uO1xuICAgIH1cbmA7XG59O1xuIl19
17
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9yZW5kZXJlci9HUFVSZW5kZXJlci9EZXNrdG9wL3NoYWRlcnMvdmVydGV4U2hhZGVyLmpzIl0sIm5hbWVzIjpbInZlcnRleFNoYWRlciIsIkRBVEFfVEVYVFVSRV9TSVpFIiwiU0laRV9BVFRFTlVBVElPTl9GQUNUT1IiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFFTyxJQUFNQSxZQUFZLEdBQUcsU0FBZkEsWUFBZSxHQUFNO0FBQ2hDLHl4QkF5QjZEQyw0QkF6QjdELHlEQTJCOEJDLG1DQTNCOUI7QUErQkQsQ0FoQ00iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEQVRBX1RFWFRVUkVfU0laRSB9IGZyb20gJy4uLy4uL2NvbW1vbi9UZXh0dXJlQXRsYXMvY29uc3RhbnRzJztcbmltcG9ydCB7IFNJWkVfQVRURU5VQVRJT05fRkFDVE9SIH0gZnJvbSAnLi4vLi4vY29tbW9uL3NoYWRlcnMvY29uc3RhbnRzJztcblxuZXhwb3J0IGNvbnN0IHZlcnRleFNoYWRlciA9ICgpID0+IHtcbiAgcmV0dXJuIGBcbiAgICB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZTtcbiAgICAvL2F0bGFzSW5kZXggaXMgYSAyNTZ4MSBmbG9hdCB0ZXh0dXJlIG9mIHRpbGUgcmVjdGFuZ2xlcyBhcyByPW1pbnggZz1taW55IGI9bWF4eCBhPW1heHlcbiAgICB1bmlmb3JtIHNhbXBsZXIyRCBhdGxhc0luZGV4O1xuXG4gICAgYXR0cmlidXRlIGZsb2F0IHNpemU7XG4gICAgYXR0cmlidXRlIHZlYzMgY29sb3I7XG4gICAgYXR0cmlidXRlIGZsb2F0IGFscGhhO1xuICAgIGF0dHJpYnV0ZSBmbG9hdCB0ZXhJRDtcbiAgICBhdHRyaWJ1dGUgZmxvYXQgcm90YXRpb247XG5cbiAgICB2YXJ5aW5nIGZsb2F0IHZSb3RhdGlvbjtcbiAgICB2YXJ5aW5nIHZlYzMgdGFyZ2V0Q29sb3I7XG4gICAgdmFyeWluZyBmbG9hdCB0YXJnZXRBbHBoYTtcbiAgICB2YXJ5aW5nIHZlYzQgdGlsZVJlY3Q7XG4gICAgdmFyeWluZyBmbG9hdCB0aWxlSUQ7XG5cbiAgICB2b2lkIG1haW4oKSB7XG4gICAgICB2ZWM0IG12UG9zaXRpb24gPSBtb2RlbFZpZXdNYXRyaXggKiB2ZWM0KHBvc2l0aW9uLCAxLjApO1xuICAgICAgdGFyZ2V0Q29sb3IgPSBjb2xvcjtcbiAgICAgIHRhcmdldEFscGhhID0gYWxwaGE7XG4gICAgICB2Um90YXRpb24gPSByb3RhdGlvbjtcblxuICAgICAgdGlsZUlEID0gdGV4SUQ7XG4gICAgICAvL2dldCB0aGUgdGlsZSByZWN0YW5nbGUgZnJvbSB0aGUgYXRsYXNJbmRleCB0ZXh0dXJlLi5cbiAgICAgIHRpbGVSZWN0ID0gdGV4dHVyZTJEKGF0bGFzSW5kZXgsIHZlYzIoKHRpbGVJRCArIDAuNSkgLyAke0RBVEFfVEVYVFVSRV9TSVpFfS4wLCAwLjUpKTtcblxuICAgICAgZ2xfUG9pbnRTaXplID0gKChzaXplICogJHtTSVpFX0FUVEVOVUFUSU9OX0ZBQ1RPUn0pIC8gLW12UG9zaXRpb24ueik7XG4gICAgICBnbF9Qb3NpdGlvbiA9IHByb2plY3Rpb25NYXRyaXggKiBtdlBvc2l0aW9uO1xuICAgIH1cbmA7XG59O1xuIl19
@@ -33,13 +33,13 @@ var _core = require("../../../core");
33
33
 
34
34
  var _types = require("../../types");
35
35
 
36
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
36
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
37
37
 
38
38
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
39
39
 
40
40
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
41
41
 
42
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
42
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
43
43
 
44
44
  var THREE;
45
45
  /**
@@ -182,6 +182,7 @@ var MobileGPURenderer = /*#__PURE__*/function (_BaseRenderer) {
182
182
  key: "updateTarget",
183
183
  value: function updateTarget(particle) {
184
184
  var position = particle.position,
185
+ rotation = particle.rotation,
185
186
  scale = particle.scale,
186
187
  radius = particle.radius,
187
188
  color = particle.color,
@@ -192,6 +193,7 @@ var MobileGPURenderer = /*#__PURE__*/function (_BaseRenderer) {
192
193
  g = color.g,
193
194
  b = color.b;
194
195
  particle.target.position.copy(position);
196
+ particle.target.rotation.copy(rotation);
195
197
  particle.target.size = scale * radius;
196
198
  particle.target.color.setRGB(r, g, b);
197
199
  particle.target.alpha = alpha;
@@ -215,7 +217,7 @@ var MobileGPURenderer = /*#__PURE__*/function (_BaseRenderer) {
215
217
  }, {
216
218
  key: "mapParticleTargetPropsToPoint",
217
219
  value: function mapParticleTargetPropsToPoint(particle) {
218
- this.updatePointPosition(particle).updatePointSize(particle).updatePointColor(particle).updatePointAlpha(particle).updatePointTextureIndex(particle);
220
+ this.updatePointPosition(particle).updatePointSize(particle).updatePointRotation(particle).updatePointColor(particle).updatePointAlpha(particle).updatePointTextureIndex(particle);
219
221
  return this;
220
222
  }
221
223
  /**
@@ -258,6 +260,25 @@ var MobileGPURenderer = /*#__PURE__*/function (_BaseRenderer) {
258
260
  buffer.array[target.index * stride + offset + 0] = target.size;
259
261
  return this;
260
262
  }
263
+ /**
264
+ * Updates the point's rotation.
265
+ *
266
+ * @param {Particle} particle - The particle containing the target rotation.
267
+ * @return {GPURenderer}
268
+ */
269
+
270
+ }, {
271
+ key: "updatePointRotation",
272
+ value: function updatePointRotation(particle) {
273
+ var attribute = 'rotation';
274
+ var geometry = this.geometry,
275
+ stride = this.stride,
276
+ buffer = this.buffer;
277
+ var target = particle.target;
278
+ var offset = geometry.attributes[attribute].offset;
279
+ buffer.array[target.index * stride + offset + 0] = target.rotation.z;
280
+ return this;
281
+ }
261
282
  /**
262
283
  * Updates the point's color attribute according with the particle's target color.
263
284
  *
@@ -361,4 +382,4 @@ var MobileGPURenderer = /*#__PURE__*/function (_BaseRenderer) {
361
382
  }(_BaseRenderer2["default"]);
362
383
 
363
384
  exports["default"] = MobileGPURenderer;
364
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9yZW5kZXJlci9HUFVSZW5kZXJlci9Nb2JpbGUvaW5kZXguanMiXSwibmFtZXMiOlsiVEhSRUUiLCJNb2JpbGVHUFVSZW5kZXJlciIsImNvbnRhaW5lciIsInRocmVlIiwib3B0aW9ucyIsIkRFRkFVTFRfUkVOREVSRVJfT1BUSU9OUyIsIlJFTkRFUkVSX1RZUEVfR1BVX01PQklMRSIsInByb3BzIiwiY2FtZXJhIiwibWF4UGFydGljbGVzIiwiYmFzZUNvbG9yIiwiYmxlbmRpbmciLCJkZXB0aFRlc3QiLCJkZXB0aFdyaXRlIiwidHJhbnNwYXJlbnQiLCJzaG91bGREZWJ1Z1RleHR1cmVBdGxhcyIsInBhcnRpY2xlQnVmZmVyIiwiUGFydGljbGVCdWZmZXIiLCJtYXRlcmlhbCIsIlNoYWRlck1hdGVyaWFsIiwidW5pZm9ybXMiLCJ2YWx1ZSIsIkNvbG9yIiwidVRleHR1cmUiLCJGRmF0bGFzSW5kZXgiLCJhdGxhc0RpbSIsIlZlY3RvcjIiLCJ2ZXJ0ZXhTaGFkZXIiLCJmcmFnbWVudFNoYWRlciIsInRhcmdldFBvb2wiLCJQb29sIiwidW5pcXVlTGlzdCIsIlVuaXF1ZUxpc3QiLCJidWZmZXIiLCJzdHJpZGUiLCJnZW9tZXRyeSIsInBvaW50cyIsIlBvaW50cyIsImZydXN0dW1DdWxsZWQiLCJhZGQiLCJzeXN0ZW0iLCJuZWVkc1VwZGF0ZSIsInRleHR1cmVBdGxhcyIsInVwZGF0ZSIsInNldCIsImF0bGFzVGV4dHVyZSIsImltYWdlIiwid2lkdGgiLCJoZWlnaHQiLCJwYXJ0aWNsZSIsInRhcmdldCIsImdldCIsIlRhcmdldCIsImlkIiwidXBkYXRlVGFyZ2V0IiwibWFwUGFydGljbGVUYXJnZXRQcm9wc1RvUG9pbnQiLCJyZXNldCIsInBvc2l0aW9uIiwic2NhbGUiLCJyYWRpdXMiLCJjb2xvciIsImFscGhhIiwiYm9keSIsInIiLCJnIiwiYiIsImNvcHkiLCJzaXplIiwic2V0UkdCIiwiaW5kZXgiLCJmaW5kIiwiU3ByaXRlIiwibWFwIiwidGV4dHVyZSIsInRleHR1cmVJbmRleCIsImdldFRleHR1cmVJRCIsInVwZGF0ZVBvaW50UG9zaXRpb24iLCJ1cGRhdGVQb2ludFNpemUiLCJ1cGRhdGVQb2ludENvbG9yIiwidXBkYXRlUG9pbnRBbHBoYSIsInVwZGF0ZVBvaW50VGV4dHVyZUluZGV4IiwiYXR0cmlidXRlIiwib2Zmc2V0IiwiYXR0cmlidXRlcyIsImFycmF5IiwieCIsInkiLCJ6IiwidGkiLCJ0YSIsImlkYSIsImluZGV4RGF0YSIsIm54IiwibnkiLCJweCIsInB5IiwiZGVidWciLCJ1bmRlZmluZWQiLCJUZXh0dXJlQXRsYXMiLCJhZGRUZXh0dXJlIiwicmVtb3ZlIiwiZGVzdHJveSIsIkJhc2VSZW5kZXJlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7OztBQUVBLElBQUlBLEtBQUo7QUFFQTs7Ozs7OztJQU1xQkMsaUI7Ozs7O0FBQ25CLDZCQUFZQyxTQUFaLEVBQXVCQyxLQUF2QixFQUFrRTtBQUFBOztBQUFBLFFBQXBDQyxPQUFvQyx1RUFBMUJDLG1DQUEwQjtBQUFBO0FBQ2hFLDhCQUFNQywrQkFBTjtBQUVBTixJQUFBQSxLQUFLLEdBQUcsTUFBS0csS0FBTCxHQUFhQSxLQUFyQjs7QUFDQSxRQUFNSSxLQUFLLG1DQUFRRixtQ0FBUixHQUFxQ0QsT0FBckMsQ0FBWDs7QUFKZ0UsUUFNOURJLE1BTjhELEdBYzVERCxLQWQ0RCxDQU05REMsTUFOOEQ7QUFBQSxRQU85REMsWUFQOEQsR0FjNURGLEtBZDRELENBTzlERSxZQVA4RDtBQUFBLFFBUTlEQyxTQVI4RCxHQWM1REgsS0FkNEQsQ0FROURHLFNBUjhEO0FBQUEsUUFTOURDLFFBVDhELEdBYzVESixLQWQ0RCxDQVM5REksUUFUOEQ7QUFBQSxRQVU5REMsU0FWOEQsR0FjNURMLEtBZDRELENBVTlESyxTQVY4RDtBQUFBLFFBVzlEQyxVQVg4RCxHQWM1RE4s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QUFBLFVBQ1drQyxNQURYLEdBQ2dELElBRGhELENBQ1dBLE1BRFg7QUFBQSxVQUNtQk0sWUFEbkIsR0FDZ0QsSUFEaEQsQ0FDbUJBLFlBRG5CO0FBQUEsVUFDaUNYLFVBRGpDLEdBQ2dELElBRGhELENBQ2lDQSxVQURqQztBQUdSN0IsTUFBQUEsU0FBUyxDQUFDa0csTUFBVixDQUFpQmhFLE1BQWpCO0FBQ0FMLE1BQUFBLFVBQVUsQ0FBQ3NFLE9BQVg7QUFDQTNELE1BQUFBLFlBQVksSUFBSUEsWUFBWSxDQUFDMkQsT0FBYixFQUFoQjtBQUNEOzs7RUFsUjRDQyx5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBhcnRpY2xlQnVmZmVyLCBUYXJnZXQsIFRleHR1cmVBdGxhcywgVW5pcXVlTGlzdCB9IGZyb20gJy4uL2NvbW1vbic7XG5pbXBvcnQgeyBmcmFnbWVudFNoYWRlciwgdmVydGV4U2hhZGVyIH0gZnJvbSAnLi9zaGFkZXJzJztcblxuaW1wb3J0IEJhc2VSZW5kZXJlciBmcm9tICcuLi8uLi9CYXNlUmVuZGVyZXInO1xuaW1wb3J0IHsgREVGQVVMVF9SRU5ERVJFUl9PUFRJT05TIH0gZnJvbSAnLi4vY29tbW9uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBQb29sIH0gZnJvbSAnLi4vLi4vLi4vY29yZSc7XG5pbXBvcnQgeyBSRU5ERVJFUl9UWVBFX0dQVV9NT0JJTEUgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5cbmxldCBUSFJFRTtcblxuLyoqXG4gKiBHUFVSZW5kZXJlciBmb3IgbW9iaWxlIGRldmljZXMgdGhhdCBkbyBub3Qgc3VwcG9ydCBmbG9hdGluZyBwb2ludCB0ZXh0dXJlcy5cbiAqXG4gKiBAYXV0aG9yIHRocmF4IDxtYW50aHJheEBnbWFpbC5jb20+XG4gKiBAYXV0aG9yIHJvaGFuLWRlc2hwYW5kZSA8cm9oYW5AY3JlYXRpdmVsaWZlZm9ybS5jb20+XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1vYmlsZUdQVVJlbmRlcmVyIGV4dGVuZHMgQmFzZVJlbmRlcmVyIHtcbiAgY29uc3RydWN0b3IoY29udGFpbmVyLCB0aHJlZSwgb3B0aW9ucyA9IERFRkFVTFRfUkVOREVSRVJfT1BUSU9OUykge1xuICAgIHN1cGVyKFJFTkRFUkVSX1RZUEVfR1BVX01PQklMRSk7XG5cbiAgICBUSFJFRSA9IHRoaXMudGhyZWUgPSB0aHJlZTtcbiAgICBjb25zdCBwcm9wcyA9IHsgLi4uREVGQVVMVF9SRU5ERVJFUl9PUFRJT05TLCAuLi5vcHRpb25zIH07XG4gICAgY29uc3Qge1xuICAgICAgY2FtZXJhLFxuICAgICAgbWF4UGFydGljbGVzLFxuICAgICAgYmFzZUNvbG9yLFxuICAgICAgYmxlbmRpbmcsXG4gICAgICBkZXB0aFRlc3QsXG4gICAgICBkZXB0aFdyaXRlLFxuICAgICAgdHJhbnNwYXJlbnQsXG4gICAgICBzaG91bGREZWJ1Z1RleHR1cmVBdGxhcyxcbiAgICB9ID0gcHJvcHM7XG4gICAgY29uc3QgcGFydGljbGVCdWZmZXIgPSBuZXcgUGFydGljbGVCdWZmZXIobWF4UGFydGljbGVzLCBUSFJFRSk7XG4gICAgY29uc3QgbWF0ZXJpYWwgPSBuZXcgVEhSRUUuU2hhZGVyTWF0ZXJpYWwoe1xuICAgICAgdW5pZm9ybXM6IHtcbiAgICAgICAgYmFzZUNvbG9yOiB7IHZhbHVlOiBuZXcgVEhSRUUuQ29sb3IoYmFzZUNvbG9yKSB9LFxuICAgICAgICB1VGV4dHVyZTogeyB2YWx1ZTogbnVsbCB9LFxuICAgICAgICBGRmF0bGFzSW5kZXg6IHsgdmFsdWU6IG51bGwgfSxcbiAgICAgICAgYXRsYXNEaW06IHsgdmFsdWU6IG5ldyBUSFJFRS5WZWN0b3IyKCkgfSxcbiAgICAgIH0sXG4gICAgICB2ZXJ0ZXhTaGFkZXI6IHZlcnRleFNoYWRlcigpLFxuICAgICAgZnJhZ21lbnRTaGFkZXI6IGZyYWdtZW50U2hhZGVyKCksXG4gICAgICBibGVuZGluZzogVEhSRUVbYmxlbmRpbmddLFxuICAgICAgZGVwdGhUZXN0LFxuICAgICAgZGVwdGhXcml0ZSxcbiAgICAgIHRyYW5zcGFyZW50LFxuICAgIH0pO1xuXG4gICAgdGhpcy5jYW1lcmEgPSBjYW1lcmE7XG4gICAgdGhpcy50YXJnZXRQb29sID0gbmV3IFBvb2woKTtcbiAgICB0aGlzLnVuaXF1ZUxpc3QgPSBuZXcgVW5pcXVlTGlzdChtYXhQYXJ0aWNsZXMpO1xuICAgIHRoaXMucGFydGljbGVCdWZmZXIgPSBwYXJ0aWNsZUJ1ZmZlcjtcbiAgICB0aGlzLmJ1ZmZlciA9IHBhcnRpY2xlQnVmZmVyLmJ1ZmZlcjtcbiAgICB0aGlzLnN0cmlkZSA9IHBhcnRpY2xlQnVmZmVyLnN0cmlkZTtcbiAgICB0aGlzLmdlb21ldHJ5ID0gcGFydGljbGVCdWZmZXIuZ2VvbWV0cnk7XG4gICAgdGhpcy5tYXRlcmlhbCA9IG1hdGVyaWFsO1xuICAgIHRoaXMucG9pbnRzID0gbmV3IFRIUkVFLlBvaW50cyh0aGlzLmdlb21ldHJ5LCB0aGlzLm1hdGVyaWFsKTtcbiAgICB0aGlzLnBvaW50cy5mcnVzdHVtQ3VsbGVkID0gZmFsc2U7XG4gICAgdGhpcy5zaG91bGREZWJ1Z1RleHR1cmVBdGxhcyA9IHNob3VsZERlYnVnVGV4dHVyZUF0bGFzO1xuXG4gICAgY29udGFpbmVyLmFkZCh0aGlzLnBvaW50cyk7XG4gIH1cblxuICBvblN5c3RlbVVwZGF0ZShzeXN0ZW0pIHtcbiAgICBzdXBlci5vblN5c3RlbVVwZGF0ZShzeXN0ZW0pO1xuXG4gICAgdGhpcy5idWZmZXIubmVlZHNVcGRhdGUgPSB0cnVlO1xuXG4gICAgY29uc3QgeyB0ZXh0dXJlQXRsYXMgfSA9IHRoaXM7XG5cbiAgICBpZiAodGV4dHVyZUF0bGFzKSB7XG4gICAgICB0ZXh0dXJlQXRsYXMudXBkYXRlKCk7XG4gICAgICB0aGlzLm1hdGVyaWFsLnVuaWZvcm1zLmF0bGFzRGltLnZhbHVlLnNldChcbiAgICAgICAgdGV4dHVyZUF0bGFzLmF0bGFzVGV4dHVyZS5pbWFnZS53aWR0aCxcbiAgICAgICAgdGV4dHVyZUF0bGFzLmF0bGFzVGV4dHVyZS5pbWFnZS5oZWlnaHRcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFBvb2xzIHRoZSBwYXJ0aWNsZSB0YXJnZXQgaWYgaXQgZG9lcyBub3QgZXhpc3QuXG4gICAqIFVwZGF0ZXMgdGhlIHRhcmdldCBhbmQgbWFwcyBwYXJ0aWNsZSBwcm9wZXJ0aWVzIHRvIHRoZSBwb2ludC5cbiAgICpcbiAgICogQHBhcmFtIHtQYXJ0aWNsZX1cbiAgICovXG4gIG9uUGFydGljbGVDcmVhdGVkKHBhcnRpY2xlKSB7XG4gICAgaWYgKCFwYXJ0aWNsZS50YXJnZXQpIHtcbiAgICAgIHBhcnRpY2xlLnRhcmdldCA9IHRoaXMudGFyZ2V0UG9vbC5nZXQoVGFyZ2V0LCBUSFJFRSk7XG4gICAgICB0aGlzLnVuaXF1ZUxpc3QuYWRkKHBhcnRpY2xlLmlkKTtcbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZVRhcmdldChwYXJ0aWNsZSkubWFwUGFydGljbGVUYXJnZXRQcm9wc1RvUG9pbnQocGFydGljbGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hcHMgcGFydGljbGUgcHJvcGVydGllcyB0byB0aGUgcG9pbnQgaWYgdGhlIHBhcnRpY2xlIGhhcyBhIHRhcmdldC5cbiAgICpcbiAgICogQHBhcmFtIHtQYXJ0aWNsZX1cbiAgICovXG4gIG9uUGFydGljbGVVcGRhdGUocGFydGljbGUpIHtcbiAgICBpZiAoIXBhcnRpY2xlLnRhcmdldCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMudXBkYXRlVGFyZ2V0KHBhcnRpY2xlKS5tYXBQYXJ0aWNsZVRhcmdldFByb3BzVG9Qb2ludChwYXJ0aWNsZSk7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXRzIGFuZCBjbGVhcnMgdGhlIHBhcnRpY2xlIHRhcmdldC5cbiAgICpcbiAgICogQHBhcmFtIHtQYXJ0aWNsZX1cbiAgICovXG4gIG9uUGFydGljbGVEZWFkKHBhcnRpY2xlKSB7XG4gICAgaWYgKCFwYXJ0aWNsZS50YXJnZXQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBwYXJ0aWNsZS50YXJnZXQucmVzZXQoKTtcbiAgICB0aGlzLm1hcFBhcnRpY2xlVGFyZ2V0UHJvcHNUb1BvaW50KHBhcnRpY2xlKTtcblxuICAgIHBhcnRpY2xlLnRhcmdldCA9IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogTWFwcyBhbGwgbXV0YWJsZSBwcm9wZXJ0aWVzIGZyb20gdGhlIHBhcnRpY2xlIHRvIHRoZSB0YXJnZXQuXG4gICAqXG4gICAqIEBwYXJhbSB7UGFydGljbGV9XG4gICAqIEByZXR1cm4ge0dQVVJlbmRlcmVyfVxuICAgKi9cbiAgdXBkYXRlVGFyZ2V0KHBhcnRpY2xlKSB7XG4gICAgY29uc3QgeyBwb3NpdGlvbiwgc2NhbGUsIHJhZGl1cywgY29sb3IsIGFscGhhLCBib2R5LCBpZCB9ID0gcGFydGljbGU7XG4gICAgY29uc3QgeyByLCBnLCBiIH0gPSBjb2xvcjtcblxuICAgIHBhcnRpY2xlLnRhcmdldC5wb3NpdGlvbi5jb3B5KHBvc2l0aW9uKTtcbiAgICBwYXJ0aWNsZS50YXJnZXQuc2l6ZSA9IHNjYWxlICogcmFkaXVzO1xuICAgIHBhcnRpY2xlLnRhcmdldC5jb2xvci5zZXRSR0IociwgZywgYik7XG4gICAgcGFydGljbGUudGFyZ2V0LmFscGhhID0gYWxwaGE7XG4gICAgcGFydGljbGUudGFyZ2V0LmluZGV4ID0gdGhpcy51bmlxdWVMaXN0LmZpbmQoaWQpO1xuXG4gICAgaWYgKGJvZHkgJiYgYm9keSBpbnN0YW5jZW9mIFRIUkVFLlNwcml0ZSkge1xuICAgICAgY29uc3QgeyBtYXAgfSA9IGJvZHkubWF0ZXJpYWw7XG5cbiAgICAgIHBhcnRpY2xlLnRhcmdldC50ZXh0dXJlID0gbWFwO1xuICAgICAgcGFydGljbGUudGFyZ2V0LnRleHR1cmVJbmRleCA9IHRoaXMuZ2V0VGV4dHVyZUlEKFxuICAgICAgICBtYXAsXG4gICAgICAgIHRoaXMuc2hvdWxkRGVidWdUZXh0dXJlQXRsYXNcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogRW50cnkgcG9pbnQgZm9yIG1hcHBpbmcgcGFydGljbGUgcHJvcGVydGllcyB0byBidWZmZXIgZ2VvbWV0cnkgcG9pbnRzLlxuICAgKlxuICAgKiBAcGFyYW0ge1BhcnRpY2xlfSBwYXJ0aWNsZSAtIFRoZSBwYXJ0aWNsZSBjb250YWluaW5nIHRoZSBwcm9wZXJ0aWVzIHRvIG1hcFxuICAgKiBAcmV0dXJuIHtHUFVSZW5kZXJlcn1cbiAgICovXG4gIG1hcFBhcnRpY2xlVGFyZ2V0UHJvcHNUb1BvaW50KHBhcnRpY2xlKSB7XG4gICAgdGhpcy51cGRhdGVQb2ludFBvc2l0aW9uKHBhcnRpY2xlKVxuICAgICAgLnVwZGF0ZVBvaW50U2l6ZShwYXJ0aWNsZSlcbiAgICAgIC51cGRhdGVQb2ludENvbG9yKHBhcnRpY2xlKVxuICAgICAgLnVwZGF0ZVBvaW50QWxwaGEocGFydGljbGUpXG4gICAgICAudXBkYXRlUG9pbnRUZXh0dXJlSW5kZXgocGFydGljbGUpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgcG9pbnQncyBwb3NpdGlvbiBhY2NvcmRpbmcgdG8gdGhlIHBhcnRpY2xlJ3MgdGFyZ2V0IHBvc2l0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge1BhcnRpY2xlfSBwYXJ0aWNsZSAtIFRoZSBwYXJ0aWNsZSBjb250YWluaW5nIHRoZSB0YXJnZXQgcG9zaXRpb24uXG4gICAqIEByZXR1cm4ge0dQVVJlbmRlcmVyfVxuICAgKi9cbiAgdXBkYXRlUG9pbnRQb3NpdGlvbihwYXJ0aWNsZSkge1xuICAgIGNvbnN0IGF0dHJpYnV0ZSA9ICdwb3NpdGlvbic7XG4gICAgY29uc3QgeyBnZW9tZXRyeSwgc3RyaWRlLCBidWZmZXIgfSA9IHRoaXM7XG4gICAgY29uc3QgeyB0YXJnZXQgfSA9IHBhcnRpY2xlO1xuICAgIGNvbnN0IHsgb2Zmc2V0IH0gPSBnZW9tZXRyeS5hdHRyaWJ1dGVzW2F0dHJpYnV0ZV07XG5cbiAgICBidWZmZXIuYXJyYXlbdGFyZ2V0LmluZGV4ICogc3RyaWRlICsgb2Zmc2V0ICsgMF0gPSB0YXJnZXQucG9zaXRpb24ueDtcbiAgICBidWZmZXIuYXJyYXlbdGFyZ2V0LmluZGV4ICogc3RyaWRlICsgb2Zmc2V0ICsgMV0gPSB0YXJnZXQucG9zaXRpb24ueTtcbiAgICBidWZmZXIuYXJyYXlbdGFyZ2V0LmluZGV4ICogc3RyaWRlICsgb2Zmc2V0ICsgMl0gPSB0YXJnZXQucG9zaXRpb24uejtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIHBvaW50J3Mgc2l6ZSByZWxhdGl2ZSB0byB0aGUgcGFydGljbGUncyB0YXJnZXQgc2NhbGUgYW5kIHJhZGl1cy5cbiAgICpcbiAgICogQHBhcmFtIHtQYXJ0aWNsZX0gcGFydGljbGUgLSBUaGUgcGFydGljbGUgY29udGFpbmluZyB0aGUgdGFyZ2V0IHNjYWxlLlxuICAgKiBAcmV0dXJuIHtHUFVSZW5kZXJlcn1cbiAgICovXG4gIHVwZGF0ZVBvaW50U2l6ZShwYXJ0aWNsZSkge1xuICAgIGNvbnN0IGF0dHJpYnV0ZSA9ICdzaXplJztcbiAgICBjb25zdCB7IGdlb21ldHJ5LCBzdHJpZGUsIGJ1ZmZlciB9ID0gdGhpcztcbiAgICBjb25zdCB7IHRhcmdldCB9ID0gcGFydGljbGU7XG4gICAgY29uc3QgeyBvZmZzZXQgfSA9IGdlb21ldHJ5LmF0dHJpYnV0ZXNbYXR0cmlidXRlXTtcblxuICAgIGJ1ZmZlci5hcnJheVt0YXJnZXQuaW5kZXggKiBzdHJpZGUgKyBvZmZzZXQgKyAwXSA9IHRhcmdldC5zaXplO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgcG9pbnQncyBjb2xvciBhdHRyaWJ1dGUgYWNjb3JkaW5nIHdpdGggdGhlIHBhcnRpY2xlJ3MgdGFyZ2V0IGNvbG9yLlxuICAgKlxuICAgKiBAcGFyYW0ge1BhcnRpY2xlfSBwYXJ0aWNsZSAtIFRoZSBwYXJ0aWNsZSBjb250YWluaW5nIHRoZSB0YXJnZXQgY29sb3IgYW5kIGFscGhhLlxuICAgKiBAcmV0dXJuIHtHUFVSZW5kZXJlcn1cbiAgICovXG4gIHVwZGF0ZVBvaW50Q29sb3IocGFydGljbGUpIHtcbiAgICBjb25zdCBhdHRyaWJ1dGUgPSAnY29sb3InO1xuICAgIGNvbnN0IHsgZ2VvbWV0cnksIHN0cmlkZSwgYnVmZmVyIH0gPSB0aGlzO1xuICAgIGNvbnN0IHsgdGFyZ2V0IH0gPSBwYXJ0aWNsZTtcbiAgICBjb25zdCB7IG9mZnNldCB9ID0gZ2VvbWV0cnkuYXR0cmlidXRlc1thdHRyaWJ1dGVdO1xuXG4gICAgYnVmZmVyLmFycmF5W3RhcmdldC5pbmRleCAqIHN0cmlkZSArIG9mZnNldCArIDBdID0gdGFyZ2V0LmNvbG9yLnI7XG4gICAgYnVmZmVyLmFycmF5W3RhcmdldC5pbmRleCAqIHN0cmlkZSArIG9mZnNldCArIDFdID0gdGFyZ2V0LmNvbG9yLmc7XG4gICAgYnVmZmVyLmFycmF5W3RhcmdldC5pbmRleCAqIHN0cmlkZSArIG9mZnNldCArIDJdID0gdGFyZ2V0LmNvbG9yLmI7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSBwb2ludCBhbHBoYSBhdHRyaWJ1dGUgd2l0aCB0aGUgcGFydGljbGUncyB0YXJnZXQgYWxwaGEuXG4gICAqXG4gICAqIEBwYXJhbSB7UGFydGljbGV9IHBhcnRpY2xlIC0gVGhlIHBhcnRpY2xlIGNvbnRhaW5pbmcgdGhlIHRhcmdldCBhbHBoYS5cbiAgICogQHJldHVybiB7R1BVUmVuZGVyZXJ9XG4gICAqL1xuICB1cGRhdGVQb2ludEFscGhhKHBhcnRpY2xlKSB7XG4gICAgY29uc3QgYXR0cmlidXRlID0gJ2FscGhhJztcbiAgICBjb25zdCB7IGdlb21ldHJ5LCBzdHJpZGUsIGJ1ZmZlciB9ID0gdGhpcztcbiAgICBjb25zdCB7IHRhcmdldCB9ID0gcGFydGljbGU7XG4gICAgY29uc3QgeyBvZmZzZXQgfSA9IGdlb21ldHJ5LmF0dHJpYnV0ZXNbYXR0cmlidXRlXTtcblxuICAgIGJ1ZmZlci5hcnJheVt0YXJnZXQuaW5kZXggKiBzdHJpZGUgKyBvZmZzZXQgKyAwXSA9IHRhcmdldC5hbHBoYTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIHBvaW50IHRleHR1cmUgYXR0cmlidXRlIHdpdGggdGhlIHBhcnRpY2xlJ3MgdGFyZ2V0IHRleHR1cmUuXG4gICAqXG4gICAqIEBwYXJhbSB7UGFydGljbGV9IHBhcnRpY2xlIC0gVGhlIHBhcnRpY2xlIGNvbnRhaW5pbmcgdGhlIHRhcmdldCB0ZXh0dXJlLlxuICAgKiBAcmV0dXJuIHtHUFVSZW5kZXJlcn1cbiAgICovXG4gIHVwZGF0ZVBvaW50VGV4dHVyZUluZGV4KHBhcnRpY2xlKSB7XG4gICAgY29uc3QgYXR0cmlidXRlID0gJ3RleElEJztcbiAgICBjb25zdCB7IGdlb21ldHJ5LCBzdHJpZGUsIGJ1ZmZlciB9ID0gdGhpcztcbiAgICBjb25zdCB7IHRhcmdldCB9ID0gcGFydGljbGU7XG4gICAgY29uc3QgeyBvZmZzZXQgfSA9IGdlb21ldHJ5LmF0dHJpYnV0ZXNbYXR0cmlidXRlXTtcbiAgICBjb25zdCBpZCA9IHRhcmdldC5pbmRleCAqIHN0cmlkZSArIG9mZnNldCArIDA7XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICBpZiAoZmFsc2UpIHtcbiAgICAgIGJ1ZmZlci5hcnJheVtpZF0gPSB0YXJnZXQudGV4dHVyZUluZGV4O1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgdGkgPSB0YXJnZXQudGV4dHVyZUluZGV4ICogNDtcbiAgICAgIGNvbnN0IHRhID0gdGhpcy50ZXh0dXJlQXRsYXM7XG4gICAgICBjb25zdCBpZGEgPSB0YS5pbmRleERhdGE7XG4gICAgICBjb25zdCBueCA9IGlkYVt0aSsrXTtcbiAgICAgIGNvbnN0IG55ID0gaWRhW3RpKytdO1xuICAgICAgY29uc3QgcHggPSBpZGFbdGkrK107XG4gICAgICBjb25zdCBweSA9IGlkYVt0aSsrXTtcblxuICAgICAgYnVmZmVyLmFycmF5W2lkXSA9ICgobnggKiB0YS5hdGxhc1RleHR1cmUuaW1hZ2Uud2lkdGgpIHwgMCkgKyBweDtcbiAgICAgIGJ1ZmZlci5hcnJheVtpZCArIDFdID0gKChueSAqIHRhLmF0bGFzVGV4dHVyZS5pbWFnZS5oZWlnaHQpIHwgMCkgKyBweTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGdldFRleHR1cmVJRCh0ZXh0dXJlLCBkZWJ1Zykge1xuICAgIGlmICh0ZXh0dXJlLnRleHR1cmVJbmRleCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAoIXRoaXMudGV4dHVyZUF0bGFzKSB7XG4gICAgICAgIHRoaXMudGV4dHVyZUF0bGFzID0gbmV3IFRleHR1cmVBdGxhcyh0aGlzLCBkZWJ1Zyk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMudGV4dHVyZUF0bGFzLmFkZFRleHR1cmUodGV4dHVyZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRleHR1cmUudGV4dHVyZUluZGV4O1xuICB9XG5cbiAgZGVzdHJveSgpIHtcbiAgICBjb25zdCB7IGNvbnRhaW5lciwgcG9pbnRzLCB0ZXh0dXJlQXRsYXMsIHVuaXF1ZUxpc3QgfSA9IHRoaXM7XG5cbiAgICBjb250YWluZXIucmVtb3ZlKHBvaW50cyk7XG4gICAgdW5pcXVlTGlzdC5kZXN0cm95KCk7XG4gICAgdGV4dHVyZUF0bGFzICYmIHRleHR1cmVBdGxhcy5kZXN0cm95KCk7XG4gIH1cbn1cbiJdfQ==
385
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9yZW5kZXJlci9HUFVSZW5kZXJlci9Nb2JpbGUvaW5kZXguanMiXSwibmFtZXMiOlsiVEhSRUUiLCJNb2JpbGVHUFVSZW5kZXJlciIsImNvbnRhaW5lciIsInRocmVlIiwib3B0aW9ucyIsIkRFRkFVTFRfUkVOREVSRVJfT1BUSU9OUyIsIlJFTkRFUkVSX1RZUEVfR1BVX01PQklMRSIsInByb3BzIiwiY2FtZXJhIiwibWF4UGFydGljbGVzIiwiYmFzZUNvbG9yIiwiYmxlbmRpbmciLCJkZXB0aFRlc3QiLCJkZXB0aFdyaXRlIiwidHJhbnNwYXJlbnQiLCJzaG91bGREZWJ1Z1RleHR1cmVBdGxhcyIsInBhcnRpY2xlQnVmZmVyIiwiUGFydGljbGVCdWZmZXIiLCJtYXRlcmlhbCIsIlNoYWRlck1hdGVyaWFsIiwidW5pZm9ybXMiLCJ2YWx1ZSIsIkNvbG9yIiwidVRleHR1cmUiLCJGRmF0bGFzSW5kZXgiLCJhdGxhc0RpbSIsIlZlY3RvcjIiLCJ2ZXJ0ZXhTaGFkZXIiLCJmcmFnbWVudFNoYWRlciIsInRhcmdldFBvb2wiLCJQb29sIiwidW5pcXVlTGlzdCIsIlVuaXF1ZUxpc3QiLCJidWZmZXIiLCJzdHJpZGUiLCJnZW9tZXRyeSIsInBvaW50cyIsIlBvaW50cyIsImZydXN0dW1DdWxsZWQiLCJhZGQiLCJzeXN0ZW0iLCJuZWVkc1VwZGF0ZSIsInRleHR1cmVBdGxhcyIsInVwZGF0ZSIsInNldCIsImF0bGFzVGV4dHVyZSIsImltYWdlIiwid2lkdGgiLCJoZWlnaHQiLCJwYXJ0aWNsZSIsInRhcmdldCIsImdldCIsIlRhcmdldCIsImlkIiwidXBkYXRlVGFyZ2V0IiwibWFwUGFydGljbGVUYXJnZXRQcm9wc1RvUG9pbnQiLCJyZXNldCIsInBvc2l0aW9uIiwicm90YXRpb24iLCJzY2FsZSIsInJhZGl1cyIsImNvbG9yIiwiYWxwaGEiLCJib2R5IiwiciIsImciLCJiIiwiY29weSIsInNpemUiLCJzZXRSR0IiLCJpbmRleCIsImZpbmQiLCJTcHJpdGUiLCJtYXAiLCJ0ZXh0dXJlIiwidGV4dHVyZUluZGV4IiwiZ2V0VGV4dHVyZUlEIiwidXBkYXRlUG9pbnRQb3NpdGlvbiIsInVwZGF0ZVBvaW50U2l6ZSIsInVwZGF0ZVBvaW50Um90YXRpb24iLCJ1cGRhdGVQb2ludENvbG9yIiwidXBkYXRlUG9pbnRBbHBoYSIsInVwZGF0ZVBvaW50VGV4dHVyZUluZGV4IiwiYXR0cmlidXRlIiwib2Zmc2V0IiwiYXR0cmlidXRlcyIsImFycmF5IiwieCIsInkiLCJ6IiwidGkiLCJ0YSIsImlkYSIsImluZGV4RGF0YSIsIm54IiwibnkiLCJweCIsInB5IiwiZGVidWciLCJ1bmRlZmluZWQiLCJUZXh0dXJlQXRsYXMiLCJhZGRUZXh0dXJlIiwicmVtb3ZlIiwiZGVzdHJveSIsIkJhc2VSZW5kZXJlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7OztBQUVBLElBQUlBLEtBQUo7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0lBQ3FCQyxpQjs7Ozs7QUFDbkIsNkJBQVlDLFNBQVosRUFBdUJDLEtBQXZCLEVBQWtFO0FBQUE7O0FBQUEsUUFBcENDLE9BQW9DLHVFQUExQkMsbUNBQTBCO0FBQUE7QUFDaEUsOEJBQU1DLCtCQUFOO0FBRUFOLElBQUFBLEtBQUssR0FBRyxNQUFLRyxLQUFMLEdBQWFBLEtBQXJCOztBQUNBLFFBQU1JLEtBQUssbUNBQVFGLG1DQUFSLEdBQXFDRCxPQUFyQyxDQUFYOztBQUpnRSxRQU05REksTUFOOEQsR0FjNURELEtBZDRELENBTTlEQyxNQU44RDtBQUFBLFFBTzlEQyxZQVA4RCxHQWM1REYsS0FkNEQsQ0FPOURFLFlBUDhEO0FBQUEsUUFROURDLFNBUjhELEdBYzVESCxLQWQ0RCxDQVE5REcsU0FSOEQ7QUFBQSxRQVM5REMsUUFUOEQsR0FjNURKLEtBZDRELENBUzlESSxRQVQ4RDtBQUFBLFFBVTlEQyxTQVY4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QURuQixHQUNnRCxJQURoRCxDQUNtQkEsWUFEbkI7QUFBQSxVQUNpQ1gsVUFEakMsR0FDZ0QsSUFEaEQsQ0FDaUNBLFVBRGpDO0FBR1I3QixNQUFBQSxTQUFTLENBQUNvRyxNQUFWLENBQWlCbEUsTUFBakI7QUFDQUwsTUFBQUEsVUFBVSxDQUFDd0UsT0FBWDtBQUNBN0QsTUFBQUEsWUFBWSxJQUFJQSxZQUFZLENBQUM2RCxPQUFiLEVBQWhCO0FBQ0Q7OztFQXJTNENDLHlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGFydGljbGVCdWZmZXIsIFRhcmdldCwgVGV4dHVyZUF0bGFzLCBVbmlxdWVMaXN0IH0gZnJvbSAnLi4vY29tbW9uJztcbmltcG9ydCB7IGZyYWdtZW50U2hhZGVyLCB2ZXJ0ZXhTaGFkZXIgfSBmcm9tICcuL3NoYWRlcnMnO1xuXG5pbXBvcnQgQmFzZVJlbmRlcmVyIGZyb20gJy4uLy4uL0Jhc2VSZW5kZXJlcic7XG5pbXBvcnQgeyBERUZBVUxUX1JFTkRFUkVSX09QVElPTlMgfSBmcm9tICcuLi9jb21tb24vY29uc3RhbnRzJztcbmltcG9ydCB7IFBvb2wgfSBmcm9tICcuLi8uLi8uLi9jb3JlJztcbmltcG9ydCB7IFJFTkRFUkVSX1RZUEVfR1BVX01PQklMRSB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxubGV0IFRIUkVFO1xuXG4vKipcbiAqIEdQVVJlbmRlcmVyIGZvciBtb2JpbGUgZGV2aWNlcyB0aGF0IGRvIG5vdCBzdXBwb3J0IGZsb2F0aW5nIHBvaW50IHRleHR1cmVzLlxuICpcbiAqIEBhdXRob3IgdGhyYXggPG1hbnRocmF4QGdtYWlsLmNvbT5cbiAqIEBhdXRob3Igcm9oYW4tZGVzaHBhbmRlIDxyb2hhbkBjcmVhdGl2ZWxpZmVmb3JtLmNvbT5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTW9iaWxlR1BVUmVuZGVyZXIgZXh0ZW5kcyBCYXNlUmVuZGVyZXIge1xuICBjb25zdHJ1Y3Rvcihjb250YWluZXIsIHRocmVlLCBvcHRpb25zID0gREVGQVVMVF9SRU5ERVJFUl9PUFRJT05TKSB7XG4gICAgc3VwZXIoUkVOREVSRVJfVFlQRV9HUFVfTU9CSUxFKTtcblxuICAgIFRIUkVFID0gdGhpcy50aHJlZSA9IHRocmVlO1xuICAgIGNvbnN0IHByb3BzID0geyAuLi5ERUZBVUxUX1JFTkRFUkVSX09QVElPTlMsIC4uLm9wdGlvbnMgfTtcbiAgICBjb25zdCB7XG4gICAgICBjYW1lcmEsXG4gICAgICBtYXhQYXJ0aWNsZXMsXG4gICAgICBiYXNlQ29sb3IsXG4gICAgICBibGVuZGluZyxcbiAgICAgIGRlcHRoVGVzdCxcbiAgICAgIGRlcHRoV3JpdGUsXG4gICAgICB0cmFuc3BhcmVudCxcbiAgICAgIHNob3VsZERlYnVnVGV4dHVyZUF0bGFzLFxuICAgIH0gPSBwcm9wcztcbiAgICBjb25zdCBwYXJ0aWNsZUJ1ZmZlciA9IG5ldyBQYXJ0aWNsZUJ1ZmZlcihtYXhQYXJ0aWNsZXMsIFRIUkVFKTtcbiAgICBjb25zdCBtYXRlcmlhbCA9IG5ldyBUSFJFRS5TaGFkZXJNYXRlcmlhbCh7XG4gICAgICB1bmlmb3Jtczoge1xuICAgICAgICBiYXNlQ29sb3I6IHsgdmFsdWU6IG5ldyBUSFJFRS5Db2xvcihiYXNlQ29sb3IpIH0sXG4gICAgICAgIHVUZXh0dXJlOiB7IHZhbHVlOiBudWxsIH0sXG4gICAgICAgIEZGYXRsYXNJbmRleDogeyB2YWx1ZTogbnVsbCB9LFxuICAgICAgICBhdGxhc0RpbTogeyB2YWx1ZTogbmV3IFRIUkVFLlZlY3RvcjIoKSB9LFxuICAgICAgfSxcbiAgICAgIHZlcnRleFNoYWRlcjogdmVydGV4U2hhZGVyKCksXG4gICAgICBmcmFnbWVudFNoYWRlcjogZnJhZ21lbnRTaGFkZXIoKSxcbiAgICAgIGJsZW5kaW5nOiBUSFJFRVtibGVuZGluZ10sXG4gICAgICBkZXB0aFRlc3QsXG4gICAgICBkZXB0aFdyaXRlLFxuICAgICAgdHJhbnNwYXJlbnQsXG4gICAgfSk7XG5cbiAgICB0aGlzLmNhbWVyYSA9IGNhbWVyYTtcbiAgICB0aGlzLnRhcmdldFBvb2wgPSBuZXcgUG9vbCgpO1xuICAgIHRoaXMudW5pcXVlTGlzdCA9IG5ldyBVbmlxdWVMaXN0KG1heFBhcnRpY2xlcyk7XG4gICAgdGhpcy5wYXJ0aWNsZUJ1ZmZlciA9IHBhcnRpY2xlQnVmZmVyO1xuICAgIHRoaXMuYnVmZmVyID0gcGFydGljbGVCdWZmZXIuYnVmZmVyO1xuICAgIHRoaXMuc3RyaWRlID0gcGFydGljbGVCdWZmZXIuc3RyaWRlO1xuICAgIHRoaXMuZ2VvbWV0cnkgPSBwYXJ0aWNsZUJ1ZmZlci5nZW9tZXRyeTtcbiAgICB0aGlzLm1hdGVyaWFsID0gbWF0ZXJpYWw7XG4gICAgdGhpcy5wb2ludHMgPSBuZXcgVEhSRUUuUG9pbnRzKHRoaXMuZ2VvbWV0cnksIHRoaXMubWF0ZXJpYWwpO1xuICAgIHRoaXMucG9pbnRzLmZydXN0dW1DdWxsZWQgPSBmYWxzZTtcbiAgICB0aGlzLnNob3VsZERlYnVnVGV4dHVyZUF0bGFzID0gc2hvdWxkRGVidWdUZXh0dXJlQXRsYXM7XG5cbiAgICBjb250YWluZXIuYWRkKHRoaXMucG9pbnRzKTtcbiAgfVxuXG4gIG9uU3lzdGVtVXBkYXRlKHN5c3RlbSkge1xuICAgIHN1cGVyLm9uU3lzdGVtVXBkYXRlKHN5c3RlbSk7XG5cbiAgICB0aGlzLmJ1ZmZlci5uZWVkc1VwZGF0ZSA9IHRydWU7XG5cbiAgICBjb25zdCB7IHRleHR1cmVBdGxhcyB9ID0gdGhpcztcblxuICAgIGlmICh0ZXh0dXJlQXRsYXMpIHtcbiAgICAgIHRleHR1cmVBdGxhcy51cGRhdGUoKTtcbiAgICAgIHRoaXMubWF0ZXJpYWwudW5pZm9ybXMuYXRsYXNEaW0udmFsdWUuc2V0KFxuICAgICAgICB0ZXh0dXJlQXRsYXMuYXRsYXNUZXh0dXJlLmltYWdlLndpZHRoLFxuICAgICAgICB0ZXh0dXJlQXRsYXMuYXRsYXNUZXh0dXJlLmltYWdlLmhlaWdodFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUG9vbHMgdGhlIHBhcnRpY2xlIHRhcmdldCBpZiBpdCBkb2VzIG5vdCBleGlzdC5cbiAgICogVXBkYXRlcyB0aGUgdGFyZ2V0IGFuZCBtYXBzIHBhcnRpY2xlIHByb3BlcnRpZXMgdG8gdGhlIHBvaW50LlxuICAgKlxuICAgKiBAcGFyYW0ge1BhcnRpY2xlfVxuICAgKi9cbiAgb25QYXJ0aWNsZUNyZWF0ZWQocGFydGljbGUpIHtcbiAgICBpZiAoIXBhcnRpY2xlLnRhcmdldCkge1xuICAgICAgcGFydGljbGUudGFyZ2V0ID0gdGhpcy50YXJnZXRQb29sLmdldChUYXJnZXQsIFRIUkVFKTtcbiAgICAgIHRoaXMudW5pcXVlTGlzdC5hZGQocGFydGljbGUuaWQpO1xuICAgIH1cblxuICAgIHRoaXMudXBkYXRlVGFyZ2V0KHBhcnRpY2xlKS5tYXBQYXJ0aWNsZVRhcmdldFByb3BzVG9Qb2ludChwYXJ0aWNsZSk7XG4gIH1cblxuICAvKipcbiAgICogTWFwcyBwYXJ0aWNsZSBwcm9wZXJ0aWVzIHRvIHRoZSBwb2ludCBpZiB0aGUgcGFydGljbGUgaGFzIGEgdGFyZ2V0LlxuICAgKlxuICAgKiBAcGFyYW0ge1BhcnRpY2xlfVxuICAgKi9cbiAgb25QYXJ0aWNsZVVwZGF0ZShwYXJ0aWNsZSkge1xuICAgIGlmICghcGFydGljbGUudGFyZ2V0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVUYXJnZXQocGFydGljbGUpLm1hcFBhcnRpY2xlVGFyZ2V0UHJvcHNUb1BvaW50KHBhcnRpY2xlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldHMgYW5kIGNsZWFycyB0aGUgcGFydGljbGUgdGFyZ2V0LlxuICAgKlxuICAgKiBAcGFyYW0ge1BhcnRpY2xlfVxuICAgKi9cbiAgb25QYXJ0aWNsZURlYWQocGFydGljbGUpIHtcbiAgICBpZiAoIXBhcnRpY2xlLnRhcmdldCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHBhcnRpY2xlLnRhcmdldC5yZXNldCgpO1xuICAgIHRoaXMubWFwUGFydGljbGVUYXJnZXRQcm9wc1RvUG9pbnQocGFydGljbGUpO1xuXG4gICAgcGFydGljbGUudGFyZ2V0ID0gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYXBzIGFsbCBtdXRhYmxlIHByb3BlcnRpZXMgZnJvbSB0aGUgcGFydGljbGUgdG8gdGhlIHRhcmdldC5cbiAgICpcbiAgICogQHBhcmFtIHtQYXJ0aWNsZX1cbiAgICogQHJldHVybiB7R1BVUmVuZGVyZXJ9XG4gICAqL1xuICB1cGRhdGVUYXJnZXQocGFydGljbGUpIHtcbiAgICBjb25zdCB7IHBvc2l0aW9uLCByb3RhdGlvbiwgc2NhbGUsIHJhZGl1cywgY29sb3IsIGFscGhhLCBib2R5LCBpZCB9ID0gcGFydGljbGU7XG4gICAgY29uc3QgeyByLCBnLCBiIH0gPSBjb2xvcjtcblxuICAgIHBhcnRpY2xlLnRhcmdldC5wb3NpdGlvbi5jb3B5KHBvc2l0aW9uKTtcbiAgICBwYXJ0aWNsZS50YXJnZXQucm90YXRpb24uY29weShyb3RhdGlvbik7XG4gICAgcGFydGljbGUudGFyZ2V0LnNpemUgPSBzY2FsZSAqIHJhZGl1cztcbiAgICBwYXJ0aWNsZS50YXJnZXQuY29sb3Iuc2V0UkdCKHIsIGcsIGIpO1xuICAgIHBhcnRpY2xlLnRhcmdldC5hbHBoYSA9IGFscGhhO1xuICAgIHBhcnRpY2xlLnRhcmdldC5pbmRleCA9IHRoaXMudW5pcXVlTGlzdC5maW5kKGlkKTtcblxuICAgIGlmIChib2R5ICYmIGJvZHkgaW5zdGFuY2VvZiBUSFJFRS5TcHJpdGUpIHtcbiAgICAgIGNvbnN0IHsgbWFwIH0gPSBib2R5Lm1hdGVyaWFsO1xuXG4gICAgICBwYXJ0aWNsZS50YXJnZXQudGV4dHVyZSA9IG1hcDtcbiAgICAgIHBhcnRpY2xlLnRhcmdldC50ZXh0dXJlSW5kZXggPSB0aGlzLmdldFRleHR1cmVJRChcbiAgICAgICAgbWFwLFxuICAgICAgICB0aGlzLnNob3VsZERlYnVnVGV4dHVyZUF0bGFzXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEVudHJ5IHBvaW50IGZvciBtYXBwaW5nIHBhcnRpY2xlIHByb3BlcnRpZXMgdG8gYnVmZmVyIGdlb21ldHJ5IHBvaW50cy5cbiAgICpcbiAgICogQHBhcmFtIHtQYXJ0aWNsZX0gcGFydGljbGUgLSBUaGUgcGFydGljbGUgY29udGFpbmluZyB0aGUgcHJvcGVydGllcyB0byBtYXBcbiAgICogQHJldHVybiB7R1BVUmVuZGVyZXJ9XG4gICAqL1xuICBtYXBQYXJ0aWNsZVRhcmdldFByb3BzVG9Qb2ludChwYXJ0aWNsZSkge1xuICAgIHRoaXMudXBkYXRlUG9pbnRQb3NpdGlvbihwYXJ0aWNsZSlcbiAgICAgIC51cGRhdGVQb2ludFNpemUocGFydGljbGUpXG4gICAgICAudXBkYXRlUG9pbnRSb3RhdGlvbihwYXJ0aWNsZSlcbiAgICAgIC51cGRhdGVQb2ludENvbG9yKHBhcnRpY2xlKVxuICAgICAgLnVwZGF0ZVBvaW50QWxwaGEocGFydGljbGUpXG4gICAgICAudXBkYXRlUG9pbnRUZXh0dXJlSW5kZXgocGFydGljbGUpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgcG9pbnQncyBwb3NpdGlvbiBhY2NvcmRpbmcgdG8gdGhlIHBhcnRpY2xlJ3MgdGFyZ2V0IHBvc2l0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge1BhcnRpY2xlfSBwYXJ0aWNsZSAtIFRoZSBwYXJ0aWNsZSBjb250YWluaW5nIHRoZSB0YXJnZXQgcG9zaXRpb24uXG4gICAqIEByZXR1cm4ge0dQVVJlbmRlcmVyfVxuICAgKi9cbiAgdXBkYXRlUG9pbnRQb3NpdGlvbihwYXJ0aWNsZSkge1xuICAgIGNvbnN0IGF0dHJpYnV0ZSA9ICdwb3NpdGlvbic7XG4gICAgY29uc3QgeyBnZW9tZXRyeSwgc3RyaWRlLCBidWZmZXIgfSA9IHRoaXM7XG4gICAgY29uc3QgeyB0YXJnZXQgfSA9IHBhcnRpY2xlO1xuICAgIGNvbnN0IHsgb2Zmc2V0IH0gPSBnZW9tZXRyeS5hdHRyaWJ1dGVzW2F0dHJpYnV0ZV07XG5cbiAgICBidWZmZXIuYXJyYXlbdGFyZ2V0LmluZGV4ICogc3RyaWRlICsgb2Zmc2V0ICsgMF0gPSB0YXJnZXQucG9zaXRpb24ueDtcbiAgICBidWZmZXIuYXJyYXlbdGFyZ2V0LmluZGV4ICogc3RyaWRlICsgb2Zmc2V0ICsgMV0gPSB0YXJnZXQucG9zaXRpb24ueTtcbiAgICBidWZmZXIuYXJyYXlbdGFyZ2V0LmluZGV4ICogc3RyaWRlICsgb2Zmc2V0ICsgMl0gPSB0YXJnZXQucG9zaXRpb24uejtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIHBvaW50J3Mgc2l6ZSByZWxhdGl2ZSB0byB0aGUgcGFydGljbGUncyB0YXJnZXQgc2NhbGUgYW5kIHJhZGl1cy5cbiAgICpcbiAgICogQHBhcmFtIHtQYXJ0aWNsZX0gcGFydGljbGUgLSBUaGUgcGFydGljbGUgY29udGFpbmluZyB0aGUgdGFyZ2V0IHNjYWxlLlxuICAgKiBAcmV0dXJuIHtHUFVSZW5kZXJlcn1cbiAgICovXG4gIHVwZGF0ZVBvaW50U2l6ZShwYXJ0aWNsZSkge1xuICAgIGNvbnN0IGF0dHJpYnV0ZSA9ICdzaXplJztcbiAgICBjb25zdCB7IGdlb21ldHJ5LCBzdHJpZGUsIGJ1ZmZlciB9ID0gdGhpcztcbiAgICBjb25zdCB7IHRhcmdldCB9ID0gcGFydGljbGU7XG4gICAgY29uc3QgeyBvZmZzZXQgfSA9IGdlb21ldHJ5LmF0dHJpYnV0ZXNbYXR0cmlidXRlXTtcblxuICAgIGJ1ZmZlci5hcnJheVt0YXJnZXQuaW5kZXggKiBzdHJpZGUgKyBvZmZzZXQgKyAwXSA9IHRhcmdldC5zaXplO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgcG9pbnQncyByb3RhdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHtQYXJ0aWNsZX0gcGFydGljbGUgLSBUaGUgcGFydGljbGUgY29udGFpbmluZyB0aGUgdGFyZ2V0IHJvdGF0aW9uLlxuICAgKiBAcmV0dXJuIHtHUFVSZW5kZXJlcn1cbiAgICovXG4gIHVwZGF0ZVBvaW50Um90YXRpb24ocGFydGljbGUpIHtcbiAgICBjb25zdCBhdHRyaWJ1dGUgPSAncm90YXRpb24nO1xuICAgIGNvbnN0IHsgZ2VvbWV0cnksIHN0cmlkZSwgYnVmZmVyIH0gPSB0aGlzO1xuICAgIGNvbnN0IHsgdGFyZ2V0IH0gPSBwYXJ0aWNsZTtcbiAgICBjb25zdCB7IG9mZnNldCB9ID0gZ2VvbWV0cnkuYXR0cmlidXRlc1thdHRyaWJ1dGVdO1xuXG4gICAgYnVmZmVyLmFycmF5W3RhcmdldC5pbmRleCAqIHN0cmlkZSArIG9mZnNldCArIDBdID0gdGFyZ2V0LnJvdGF0aW9uLno7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSBwb2ludCdzIGNvbG9yIGF0dHJpYnV0ZSBhY2NvcmRpbmcgd2l0aCB0aGUgcGFydGljbGUncyB0YXJnZXQgY29sb3IuXG4gICAqXG4gICAqIEBwYXJhbSB7UGFydGljbGV9IHBhcnRpY2xlIC0gVGhlIHBhcnRpY2xlIGNvbnRhaW5pbmcgdGhlIHRhcmdldCBjb2xvciBhbmQgYWxwaGEuXG4gICAqIEByZXR1cm4ge0dQVVJlbmRlcmVyfVxuICAgKi9cbiAgdXBkYXRlUG9pbnRDb2xvcihwYXJ0aWNsZSkge1xuICAgIGNvbnN0IGF0dHJpYnV0ZSA9ICdjb2xvcic7XG4gICAgY29uc3QgeyBnZW9tZXRyeSwgc3RyaWRlLCBidWZmZXIgfSA9IHRoaXM7XG4gICAgY29uc3QgeyB0YXJnZXQgfSA9IHBhcnRpY2xlO1xuICAgIGNvbnN0IHsgb2Zmc2V0IH0gPSBnZW9tZXRyeS5hdHRyaWJ1dGVzW2F0dHJpYnV0ZV07XG5cbiAgICBidWZmZXIuYXJyYXlbdGFyZ2V0LmluZGV4ICogc3RyaWRlICsgb2Zmc2V0ICsgMF0gPSB0YXJnZXQuY29sb3IucjtcbiAgICBidWZmZXIuYXJyYXlbdGFyZ2V0LmluZGV4ICogc3RyaWRlICsgb2Zmc2V0ICsgMV0gPSB0YXJnZXQuY29sb3IuZztcbiAgICBidWZmZXIuYXJyYXlbdGFyZ2V0LmluZGV4ICogc3RyaWRlICsgb2Zmc2V0ICsgMl0gPSB0YXJnZXQuY29sb3IuYjtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIHBvaW50IGFscGhhIGF0dHJpYnV0ZSB3aXRoIHRoZSBwYXJ0aWNsZSdzIHRhcmdldCBhbHBoYS5cbiAgICpcbiAgICogQHBhcmFtIHtQYXJ0aWNsZX0gcGFydGljbGUgLSBUaGUgcGFydGljbGUgY29udGFpbmluZyB0aGUgdGFyZ2V0IGFscGhhLlxuICAgKiBAcmV0dXJuIHtHUFVSZW5kZXJlcn1cbiAgICovXG4gIHVwZGF0ZVBvaW50QWxwaGEocGFydGljbGUpIHtcbiAgICBjb25zdCBhdHRyaWJ1dGUgPSAnYWxwaGEnO1xuICAgIGNvbnN0IHsgZ2VvbWV0cnksIHN0cmlkZSwgYnVmZmVyIH0gPSB0aGlzO1xuICAgIGNvbnN0IHsgdGFyZ2V0IH0gPSBwYXJ0aWNsZTtcbiAgICBjb25zdCB7IG9mZnNldCB9ID0gZ2VvbWV0cnkuYXR0cmlidXRlc1thdHRyaWJ1dGVdO1xuXG4gICAgYnVmZmVyLmFycmF5W3RhcmdldC5pbmRleCAqIHN0cmlkZSArIG9mZnNldCArIDBdID0gdGFyZ2V0LmFscGhhO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgcG9pbnQgdGV4dHVyZSBhdHRyaWJ1dGUgd2l0aCB0aGUgcGFydGljbGUncyB0YXJnZXQgdGV4dHVyZS5cbiAgICpcbiAgICogQHBhcmFtIHtQYXJ0aWNsZX0gcGFydGljbGUgLSBUaGUgcGFydGljbGUgY29udGFpbmluZyB0aGUgdGFyZ2V0IHRleHR1cmUuXG4gICAqIEByZXR1cm4ge0dQVVJlbmRlcmVyfVxuICAgKi9cbiAgdXBkYXRlUG9pbnRUZXh0dXJlSW5kZXgocGFydGljbGUpIHtcbiAgICBjb25zdCBhdHRyaWJ1dGUgPSAndGV4SUQnO1xuICAgIGNvbnN0IHsgZ2VvbWV0cnksIHN0cmlkZSwgYnVmZmVyIH0gPSB0aGlzO1xuICAgIGNvbnN0IHsgdGFyZ2V0IH0gPSBwYXJ0aWNsZTtcbiAgICBjb25zdCB7IG9mZnNldCB9ID0gZ2VvbWV0cnkuYXR0cmlidXRlc1thdHRyaWJ1dGVdO1xuICAgIGNvbnN0IGlkID0gdGFyZ2V0LmluZGV4ICogc3RyaWRlICsgb2Zmc2V0ICsgMDtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgIGlmIChmYWxzZSkge1xuICAgICAgYnVmZmVyLmFycmF5W2lkXSA9IHRhcmdldC50ZXh0dXJlSW5kZXg7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCB0aSA9IHRhcmdldC50ZXh0dXJlSW5kZXggKiA0O1xuICAgICAgY29uc3QgdGEgPSB0aGlzLnRleHR1cmVBdGxhcztcbiAgICAgIGNvbnN0IGlkYSA9IHRhLmluZGV4RGF0YTtcbiAgICAgIGNvbnN0IG54ID0gaWRhW3RpKytdO1xuICAgICAgY29uc3QgbnkgPSBpZGFbdGkrK107XG4gICAgICBjb25zdCBweCA9IGlkYVt0aSsrXTtcbiAgICAgIGNvbnN0IHB5ID0gaWRhW3RpKytdO1xuXG4gICAgICBidWZmZXIuYXJyYXlbaWRdID0gKChueCAqIHRhLmF0bGFzVGV4dHVyZS5pbWFnZS53aWR0aCkgfCAwKSArIHB4O1xuICAgICAgYnVmZmVyLmFycmF5W2lkICsgMV0gPSAoKG55ICogdGEuYXRsYXNUZXh0dXJlLmltYWdlLmhlaWdodCkgfCAwKSArIHB5O1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZ2V0VGV4dHVyZUlEKHRleHR1cmUsIGRlYnVnKSB7XG4gICAgaWYgKHRleHR1cmUudGV4dHVyZUluZGV4ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmICghdGhpcy50ZXh0dXJlQXRsYXMpIHtcbiAgICAgICAgdGhpcy50ZXh0dXJlQXRsYXMgPSBuZXcgVGV4dHVyZUF0bGFzKHRoaXMsIGRlYnVnKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy50ZXh0dXJlQXRsYXMuYWRkVGV4dHVyZSh0ZXh0dXJlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGV4dHVyZS50ZXh0dXJlSW5kZXg7XG4gIH1cblxuICBkZXN0cm95KCkge1xuICAgIGNvbnN0IHsgY29udGFpbmVyLCBwb2ludHMsIHRleHR1cmVBdGxhcywgdW5pcXVlTGlzdCB9ID0gdGhpcztcblxuICAgIGNvbnRhaW5lci5yZW1vdmUocG9pbnRzKTtcbiAgICB1bmlxdWVMaXN0LmRlc3Ryb3koKTtcbiAgICB0ZXh0dXJlQXRsYXMgJiYgdGV4dHVyZUF0bGFzLmRlc3Ryb3koKTtcbiAgfVxufVxuIl19
@@ -6,8 +6,8 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.fragmentShader = void 0;
7
7
 
8
8
  var fragmentShader = function fragmentShader() {
9
- return "\n uniform vec3 baseColor;\n uniform sampler2D uTexture;\n\n varying vec3 targetColor;\n varying float targetAlpha;\n varying vec4 tileRect;\n\n void main() {\n gl_FragColor = vec4(baseColor * targetColor, targetAlpha);\n\n vec2 uv = gl_PointCoord;\n uv = mix(tileRect.xy, tileRect.zw, gl_PointCoord);\n\n gl_FragColor = gl_FragColor * texture2D(uTexture, uv);\n }\n";
9
+ return "\n uniform vec3 baseColor;\n uniform sampler2D uTexture;\n\n varying float vRotation;\n varying vec3 targetColor;\n varying float targetAlpha;\n varying vec4 tileRect;\n\n void main() {\n gl_FragColor = vec4(baseColor * targetColor, targetAlpha);\n\n vec2 uv = gl_PointCoord;\n uv = mix(tileRect.xy, tileRect.zw, gl_PointCoord);\n\n float mid = 0.5;\n uv = vec2(\n cos(vRotation) * (uv.x - mid) - sin(vRotation) * (uv.y - mid) + mid,\n cos(vRotation) * (uv.y - mid) + sin(vRotation) * (uv.x - mid) + mid\n );\n \n gl_FragColor = gl_FragColor * texture2D(uTexture, uv);\n }\n";
10
10
  };
11
11
 
12
12
  exports.fragmentShader = fragmentShader;
13
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9yZW5kZXJlci9HUFVSZW5kZXJlci9Nb2JpbGUvc2hhZGVycy9mcmFnbWVudFNoYWRlci5qcyJdLCJuYW1lcyI6WyJmcmFnbWVudFNoYWRlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFPLElBQU1BLGNBQWMsR0FBRyxTQUFqQkEsY0FBaUIsR0FBTTtBQUNsQztBQWlCRCxDQWxCTSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBmcmFnbWVudFNoYWRlciA9ICgpID0+IHtcbiAgcmV0dXJuIGBcbiAgICB1bmlmb3JtIHZlYzMgYmFzZUNvbG9yO1xuICAgIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlO1xuXG4gICAgdmFyeWluZyB2ZWMzIHRhcmdldENvbG9yO1xuICAgIHZhcnlpbmcgZmxvYXQgdGFyZ2V0QWxwaGE7XG4gICAgdmFyeWluZyB2ZWM0IHRpbGVSZWN0O1xuXG4gICAgdm9pZCBtYWluKCkge1xuICAgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNChiYXNlQ29sb3IgKiB0YXJnZXRDb2xvciwgdGFyZ2V0QWxwaGEpO1xuXG4gICAgICB2ZWMyIHV2ID0gZ2xfUG9pbnRDb29yZDtcbiAgICAgIHV2ID0gbWl4KHRpbGVSZWN0Lnh5LCB0aWxlUmVjdC56dywgZ2xfUG9pbnRDb29yZCk7XG5cbiAgICAgIGdsX0ZyYWdDb2xvciA9IGdsX0ZyYWdDb2xvciAqIHRleHR1cmUyRCh1VGV4dHVyZSwgdXYpO1xuICAgIH1cbmA7XG59O1xuIl19
13
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9yZW5kZXJlci9HUFVSZW5kZXJlci9Nb2JpbGUvc2hhZGVycy9mcmFnbWVudFNoYWRlci5qcyJdLCJuYW1lcyI6WyJmcmFnbWVudFNoYWRlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFPLElBQU1BLGNBQWMsR0FBRyxTQUFqQkEsY0FBaUIsR0FBTTtBQUNsQztBQXdCRCxDQXpCTSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBmcmFnbWVudFNoYWRlciA9ICgpID0+IHtcbiAgcmV0dXJuIGBcbiAgICB1bmlmb3JtIHZlYzMgYmFzZUNvbG9yO1xuICAgIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlO1xuXG4gICAgdmFyeWluZyBmbG9hdCB2Um90YXRpb247XG4gICAgdmFyeWluZyB2ZWMzIHRhcmdldENvbG9yO1xuICAgIHZhcnlpbmcgZmxvYXQgdGFyZ2V0QWxwaGE7XG4gICAgdmFyeWluZyB2ZWM0IHRpbGVSZWN0O1xuXG4gICAgdm9pZCBtYWluKCkge1xuICAgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNChiYXNlQ29sb3IgKiB0YXJnZXRDb2xvciwgdGFyZ2V0QWxwaGEpO1xuXG4gICAgICB2ZWMyIHV2ID0gZ2xfUG9pbnRDb29yZDtcbiAgICAgIHV2ID0gbWl4KHRpbGVSZWN0Lnh5LCB0aWxlUmVjdC56dywgZ2xfUG9pbnRDb29yZCk7XG5cbiAgICAgIGZsb2F0IG1pZCA9IDAuNTtcbiAgICAgIHV2ID0gdmVjMihcbiAgICAgICAgY29zKHZSb3RhdGlvbikgKiAodXYueCAtIG1pZCkgLSBzaW4odlJvdGF0aW9uKSAqICh1di55IC0gbWlkKSArIG1pZCxcbiAgICAgICAgY29zKHZSb3RhdGlvbikgKiAodXYueSAtIG1pZCkgKyBzaW4odlJvdGF0aW9uKSAqICh1di54IC0gbWlkKSArIG1pZFxuICAgICAgKTtcbiAgICAgIFxuICAgICAgZ2xfRnJhZ0NvbG9yID0gZ2xfRnJhZ0NvbG9yICogdGV4dHVyZTJEKHVUZXh0dXJlLCB1dik7XG4gICAgfVxuYDtcbn07XG4iXX0=
@@ -8,8 +8,8 @@ exports.vertexShader = void 0;
8
8
  var _constants = require("../../common/shaders/constants");
9
9
 
10
10
  var vertexShader = function vertexShader() {
11
- return "\n uniform sampler2D uTexture;\n uniform vec2 atlasDim;\n\n attribute float size;\n attribute vec3 color;\n attribute float alpha;\n attribute vec2 texID;\n\n varying vec3 targetColor;\n varying float targetAlpha;\n varying vec4 tileRect;\n\n void main() {\n vec4 mvPosition = modelViewMatrix * vec4(position, 1.0);\n targetColor = color;\n targetAlpha = alpha;\n\n vec2 tmin = floor(texID) / atlasDim;\n vec2 tmax = fract(texID);\n tileRect = vec4(tmin,tmax);\n\n gl_PointSize = ((size * ".concat(_constants.SIZE_ATTENUATION_FACTOR, ") / -mvPosition.z);\n gl_Position = projectionMatrix * mvPosition;\n }\n");
11
+ return "\n uniform sampler2D uTexture;\n uniform vec2 atlasDim;\n\n attribute float size;\n attribute vec3 color;\n attribute float alpha;\n attribute vec2 texID;\n attribute float rotation;\n\n varying float vRotation;\n varying vec3 targetColor;\n varying float targetAlpha;\n varying vec4 tileRect;\n\n void main() {\n vec4 mvPosition = modelViewMatrix * vec4(position, 1.0);\n targetColor = color;\n targetAlpha = alpha;\n vRotation = rotation;\n\n vec2 tmin = floor(texID) / atlasDim;\n vec2 tmax = fract(texID);\n tileRect = vec4(tmin,tmax);\n\n gl_PointSize = ((size * ".concat(_constants.SIZE_ATTENUATION_FACTOR, ") / -mvPosition.z);\n gl_Position = projectionMatrix * mvPosition;\n }\n");
12
12
  };
13
13
 
14
14
  exports.vertexShader = vertexShader;
15
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9yZW5kZXJlci9HUFVSZW5kZXJlci9Nb2JpbGUvc2hhZGVycy92ZXJ0ZXhTaGFkZXIuanMiXSwibmFtZXMiOlsidmVydGV4U2hhZGVyIiwiU0laRV9BVFRFTlVBVElPTl9GQUNUT1IiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFFTyxJQUFNQSxZQUFZLEdBQUcsU0FBZkEsWUFBZSxHQUFNO0FBQ2hDLDZqQkFzQjhCQyxrQ0F0QjlCO0FBMEJELENBM0JNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU0laRV9BVFRFTlVBVElPTl9GQUNUT1IgfSBmcm9tICcuLi8uLi9jb21tb24vc2hhZGVycy9jb25zdGFudHMnO1xuXG5leHBvcnQgY29uc3QgdmVydGV4U2hhZGVyID0gKCkgPT4ge1xuICByZXR1cm4gYFxuICAgIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlO1xuICAgIHVuaWZvcm0gdmVjMiBhdGxhc0RpbTtcblxuICAgIGF0dHJpYnV0ZSBmbG9hdCBzaXplO1xuICAgIGF0dHJpYnV0ZSB2ZWMzIGNvbG9yO1xuICAgIGF0dHJpYnV0ZSBmbG9hdCBhbHBoYTtcbiAgICBhdHRyaWJ1dGUgdmVjMiB0ZXhJRDtcblxuICAgIHZhcnlpbmcgdmVjMyB0YXJnZXRDb2xvcjtcbiAgICB2YXJ5aW5nIGZsb2F0IHRhcmdldEFscGhhO1xuICAgIHZhcnlpbmcgdmVjNCB0aWxlUmVjdDtcblxuICAgIHZvaWQgbWFpbigpIHtcbiAgICAgIHZlYzQgbXZQb3NpdGlvbiA9IG1vZGVsVmlld01hdHJpeCAqIHZlYzQocG9zaXRpb24sIDEuMCk7XG4gICAgICB0YXJnZXRDb2xvciA9IGNvbG9yO1xuICAgICAgdGFyZ2V0QWxwaGEgPSBhbHBoYTtcblxuICAgICAgdmVjMiB0bWluID0gZmxvb3IodGV4SUQpIC8gYXRsYXNEaW07XG4gICAgICB2ZWMyIHRtYXggPSBmcmFjdCh0ZXhJRCk7XG4gICAgICB0aWxlUmVjdCA9IHZlYzQodG1pbix0bWF4KTtcblxuICAgICAgZ2xfUG9pbnRTaXplID0gKChzaXplICogJHtTSVpFX0FUVEVOVUFUSU9OX0ZBQ1RPUn0pIC8gLW12UG9zaXRpb24ueik7XG4gICAgICBnbF9Qb3NpdGlvbiA9IHByb2plY3Rpb25NYXRyaXggKiBtdlBvc2l0aW9uO1xuICAgIH1cbmA7XG59O1xuIl19
15
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9yZW5kZXJlci9HUFVSZW5kZXJlci9Nb2JpbGUvc2hhZGVycy92ZXJ0ZXhTaGFkZXIuanMiXSwibmFtZXMiOlsidmVydGV4U2hhZGVyIiwiU0laRV9BVFRFTlVBVElPTl9GQUNUT1IiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFFTyxJQUFNQSxZQUFZLEdBQUcsU0FBZkEsWUFBZSxHQUFNO0FBQ2hDLHVwQkF5QjhCQyxrQ0F6QjlCO0FBNkJELENBOUJNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU0laRV9BVFRFTlVBVElPTl9GQUNUT1IgfSBmcm9tICcuLi8uLi9jb21tb24vc2hhZGVycy9jb25zdGFudHMnO1xuXG5leHBvcnQgY29uc3QgdmVydGV4U2hhZGVyID0gKCkgPT4ge1xuICByZXR1cm4gYFxuICAgIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlO1xuICAgIHVuaWZvcm0gdmVjMiBhdGxhc0RpbTtcblxuICAgIGF0dHJpYnV0ZSBmbG9hdCBzaXplO1xuICAgIGF0dHJpYnV0ZSB2ZWMzIGNvbG9yO1xuICAgIGF0dHJpYnV0ZSBmbG9hdCBhbHBoYTtcbiAgICBhdHRyaWJ1dGUgdmVjMiB0ZXhJRDtcbiAgICBhdHRyaWJ1dGUgZmxvYXQgcm90YXRpb247XG5cbiAgICB2YXJ5aW5nIGZsb2F0IHZSb3RhdGlvbjtcbiAgICB2YXJ5aW5nIHZlYzMgdGFyZ2V0Q29sb3I7XG4gICAgdmFyeWluZyBmbG9hdCB0YXJnZXRBbHBoYTtcbiAgICB2YXJ5aW5nIHZlYzQgdGlsZVJlY3Q7XG5cbiAgICB2b2lkIG1haW4oKSB7XG4gICAgICB2ZWM0IG12UG9zaXRpb24gPSBtb2RlbFZpZXdNYXRyaXggKiB2ZWM0KHBvc2l0aW9uLCAxLjApO1xuICAgICAgdGFyZ2V0Q29sb3IgPSBjb2xvcjtcbiAgICAgIHRhcmdldEFscGhhID0gYWxwaGE7XG4gICAgICB2Um90YXRpb24gPSByb3RhdGlvbjtcblxuICAgICAgdmVjMiB0bWluID0gZmxvb3IodGV4SUQpIC8gYXRsYXNEaW07XG4gICAgICB2ZWMyIHRtYXggPSBmcmFjdCh0ZXhJRCk7XG4gICAgICB0aWxlUmVjdCA9IHZlYzQodG1pbix0bWF4KTtcblxuICAgICAgZ2xfUG9pbnRTaXplID0gKChzaXplICogJHtTSVpFX0FUVEVOVUFUSU9OX0ZBQ1RPUn0pIC8gLW12UG9zaXRpb24ueik7XG4gICAgICBnbF9Qb3NpdGlvbiA9IHByb2plY3Rpb25NYXRyaXggKiBtdlBvc2l0aW9uO1xuICAgIH1cbmA7XG59O1xuIl19