rails_modular_admin 0.3.1 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (1416) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/list.txt +23 -0
  3. data/app/assets/javascripts/rails_modular_admin/vendor.js +60351 -60351
  4. data/app/assets/javascripts/rails_modular_admin.js +1 -0
  5. data/app/assets/node_modules/animate.css/LICENSE +21 -0
  6. data/app/assets/node_modules/animate.css/README.md +233 -0
  7. data/app/assets/node_modules/animate.css/animate-config.json +120 -0
  8. data/app/assets/node_modules/animate.css/animate.css +3494 -0
  9. data/app/assets/node_modules/animate.css/animate.min.css +11 -0
  10. data/app/assets/node_modules/animate.css/bower.json +5 -0
  11. data/app/assets/node_modules/animate.css/gulpfile.js +107 -0
  12. data/app/assets/node_modules/animate.css/package.json +54 -0
  13. data/app/assets/node_modules/animate.css/source/_base.css +8 -0
  14. data/app/assets/node_modules/animate.css/source/attention_seekers/bounce.css +30 -0
  15. data/app/assets/node_modules/animate.css/source/attention_seekers/flash.css +16 -0
  16. data/app/assets/node_modules/animate.css/source/attention_seekers/headShake.css +30 -0
  17. data/app/assets/node_modules/animate.css/source/attention_seekers/jello.css +40 -0
  18. data/app/assets/node_modules/animate.css/source/attention_seekers/pulse.css +19 -0
  19. data/app/assets/node_modules/animate.css/source/attention_seekers/rubberBand.css +33 -0
  20. data/app/assets/node_modules/animate.css/source/attention_seekers/shake.css +25 -0
  21. data/app/assets/node_modules/animate.css/source/attention_seekers/swing.css +26 -0
  22. data/app/assets/node_modules/animate.css/source/attention_seekers/tada.css +31 -0
  23. data/app/assets/node_modules/animate.css/source/attention_seekers/wobble.css +35 -0
  24. data/app/assets/node_modules/animate.css/source/bouncing_entrances/bounceIn.css +42 -0
  25. data/app/assets/node_modules/animate.css/source/bouncing_entrances/bounceInDown.css +35 -0
  26. data/app/assets/node_modules/animate.css/source/bouncing_entrances/bounceInLeft.css +35 -0
  27. data/app/assets/node_modules/animate.css/source/bouncing_entrances/bounceInRight.css +35 -0
  28. data/app/assets/node_modules/animate.css/source/bouncing_entrances/bounceInUp.css +35 -0
  29. data/app/assets/node_modules/animate.css/source/bouncing_exits/bounceOut.css +21 -0
  30. data/app/assets/node_modules/animate.css/source/bouncing_exits/bounceOutDown.css +20 -0
  31. data/app/assets/node_modules/animate.css/source/bouncing_exits/bounceOutLeft.css +15 -0
  32. data/app/assets/node_modules/animate.css/source/bouncing_exits/bounceOutRight.css +15 -0
  33. data/app/assets/node_modules/animate.css/source/bouncing_exits/bounceOutUp.css +20 -0
  34. data/app/assets/node_modules/animate.css/source/fading_entrances/fadeIn.css +13 -0
  35. data/app/assets/node_modules/animate.css/source/fading_entrances/fadeInDown.css +15 -0
  36. data/app/assets/node_modules/animate.css/source/fading_entrances/fadeInDownBig.css +15 -0
  37. data/app/assets/node_modules/animate.css/source/fading_entrances/fadeInLeft.css +15 -0
  38. data/app/assets/node_modules/animate.css/source/fading_entrances/fadeInLeftBig.css +15 -0
  39. data/app/assets/node_modules/animate.css/source/fading_entrances/fadeInRight.css +15 -0
  40. data/app/assets/node_modules/animate.css/source/fading_entrances/fadeInRightBig.css +15 -0
  41. data/app/assets/node_modules/animate.css/source/fading_entrances/fadeInUp.css +15 -0
  42. data/app/assets/node_modules/animate.css/source/fading_entrances/fadeInUpBig.css +15 -0
  43. data/app/assets/node_modules/animate.css/source/fading_exits/fadeOut.css +13 -0
  44. data/app/assets/node_modules/animate.css/source/fading_exits/fadeOutDown.css +14 -0
  45. data/app/assets/node_modules/animate.css/source/fading_exits/fadeOutDownBig.css +14 -0
  46. data/app/assets/node_modules/animate.css/source/fading_exits/fadeOutLeft.css +14 -0
  47. data/app/assets/node_modules/animate.css/source/fading_exits/fadeOutLeftBig.css +14 -0
  48. data/app/assets/node_modules/animate.css/source/fading_exits/fadeOutRight.css +14 -0
  49. data/app/assets/node_modules/animate.css/source/fading_exits/fadeOutRightBig.css +14 -0
  50. data/app/assets/node_modules/animate.css/source/fading_exits/fadeOutUp.css +14 -0
  51. data/app/assets/node_modules/animate.css/source/fading_exits/fadeOutUpBig.css +14 -0
  52. data/app/assets/node_modules/animate.css/source/flippers/flip.css +31 -0
  53. data/app/assets/node_modules/animate.css/source/flippers/flipInX.css +30 -0
  54. data/app/assets/node_modules/animate.css/source/flippers/flipInY.css +30 -0
  55. data/app/assets/node_modules/animate.css/source/flippers/flipOutX.css +21 -0
  56. data/app/assets/node_modules/animate.css/source/flippers/flipOutY.css +21 -0
  57. data/app/assets/node_modules/animate.css/source/lightspeed/lightSpeedIn.css +26 -0
  58. data/app/assets/node_modules/animate.css/source/lightspeed/lightSpeedOut.css +15 -0
  59. data/app/assets/node_modules/animate.css/source/rotating_entrances/rotateIn.css +17 -0
  60. data/app/assets/node_modules/animate.css/source/rotating_entrances/rotateInDownLeft.css +17 -0
  61. data/app/assets/node_modules/animate.css/source/rotating_entrances/rotateInDownRight.css +17 -0
  62. data/app/assets/node_modules/animate.css/source/rotating_entrances/rotateInUpLeft.css +17 -0
  63. data/app/assets/node_modules/animate.css/source/rotating_entrances/rotateInUpRight.css +17 -0
  64. data/app/assets/node_modules/animate.css/source/rotating_exits/rotateOut.css +16 -0
  65. data/app/assets/node_modules/animate.css/source/rotating_exits/rotateOutDownLeft.css +16 -0
  66. data/app/assets/node_modules/animate.css/source/rotating_exits/rotateOutDownRight.css +16 -0
  67. data/app/assets/node_modules/animate.css/source/rotating_exits/rotateOutUpLeft.css +16 -0
  68. data/app/assets/node_modules/animate.css/source/rotating_exits/rotateOutUpRight.css +16 -0
  69. data/app/assets/node_modules/animate.css/source/sliding_entrances/slideInDown.css +14 -0
  70. data/app/assets/node_modules/animate.css/source/sliding_entrances/slideInLeft.css +14 -0
  71. data/app/assets/node_modules/animate.css/source/sliding_entrances/slideInRight.css +14 -0
  72. data/app/assets/node_modules/animate.css/source/sliding_entrances/slideInUp.css +14 -0
  73. data/app/assets/node_modules/animate.css/source/sliding_exits/slideOutDown.css +14 -0
  74. data/app/assets/node_modules/animate.css/source/sliding_exits/slideOutLeft.css +14 -0
  75. data/app/assets/node_modules/animate.css/source/sliding_exits/slideOutRight.css +14 -0
  76. data/app/assets/node_modules/animate.css/source/sliding_exits/slideOutUp.css +14 -0
  77. data/app/assets/node_modules/animate.css/source/specials/hinge.css +31 -0
  78. data/app/assets/node_modules/animate.css/source/specials/jackInTheBox.css +24 -0
  79. data/app/assets/node_modules/animate.css/source/specials/rollIn.css +17 -0
  80. data/app/assets/node_modules/animate.css/source/specials/rollOut.css +16 -0
  81. data/app/assets/node_modules/animate.css/source/zooming_entrances/zoomIn.css +14 -0
  82. data/app/assets/node_modules/animate.css/source/zooming_entrances/zoomInDown.css +17 -0
  83. data/app/assets/node_modules/animate.css/source/zooming_entrances/zoomInLeft.css +17 -0
  84. data/app/assets/node_modules/animate.css/source/zooming_entrances/zoomInRight.css +17 -0
  85. data/app/assets/node_modules/animate.css/source/zooming_entrances/zoomInUp.css +17 -0
  86. data/app/assets/node_modules/animate.css/source/zooming_exits/zoomOut.css +18 -0
  87. data/app/assets/node_modules/animate.css/source/zooming_exits/zoomOutDown.css +18 -0
  88. data/app/assets/node_modules/animate.css/source/zooming_exits/zoomOutLeft.css +16 -0
  89. data/app/assets/node_modules/animate.css/source/zooming_exits/zoomOutRight.css +16 -0
  90. data/app/assets/node_modules/animate.css/source/zooming_exits/zoomOutUp.css +18 -0
  91. data/app/assets/node_modules/bootstrap/LICENSE +22 -0
  92. data/app/assets/node_modules/bootstrap/README.md +171 -0
  93. data/app/assets/node_modules/bootstrap/dist/css/bootstrap-grid.css +1912 -0
  94. data/app/assets/node_modules/bootstrap/dist/css/bootstrap-grid.css.map +1 -0
  95. data/app/assets/node_modules/bootstrap/dist/css/bootstrap-grid.min.css +7 -0
  96. data/app/assets/node_modules/bootstrap/dist/css/bootstrap-grid.min.css.map +1 -0
  97. data/app/assets/node_modules/bootstrap/dist/css/bootstrap-reboot.css +330 -0
  98. data/app/assets/node_modules/bootstrap/dist/css/bootstrap-reboot.css.map +1 -0
  99. data/app/assets/node_modules/bootstrap/dist/css/bootstrap-reboot.min.css +8 -0
  100. data/app/assets/node_modules/bootstrap/dist/css/bootstrap-reboot.min.css.map +1 -0
  101. data/app/assets/node_modules/bootstrap/dist/css/bootstrap.css +8981 -0
  102. data/app/assets/node_modules/bootstrap/dist/css/bootstrap.css.map +1 -0
  103. data/app/assets/node_modules/bootstrap/dist/css/bootstrap.min.css +7 -0
  104. data/app/assets/node_modules/bootstrap/dist/css/bootstrap.min.css.map +1 -0
  105. data/app/assets/node_modules/bootstrap/dist/js/bootstrap.bundle.js +6444 -0
  106. data/app/assets/node_modules/bootstrap/dist/js/bootstrap.bundle.js.map +1 -0
  107. data/app/assets/node_modules/bootstrap/dist/js/bootstrap.bundle.min.js +7 -0
  108. data/app/assets/node_modules/bootstrap/dist/js/bootstrap.bundle.min.js.map +1 -0
  109. data/app/assets/node_modules/bootstrap/dist/js/bootstrap.js +3927 -0
  110. data/app/assets/node_modules/bootstrap/dist/js/bootstrap.js.map +1 -0
  111. data/app/assets/node_modules/bootstrap/dist/js/bootstrap.min.js +7 -0
  112. data/app/assets/node_modules/bootstrap/dist/js/bootstrap.min.js.map +1 -0
  113. data/app/assets/node_modules/bootstrap/js/dist/alert.js +178 -0
  114. data/app/assets/node_modules/bootstrap/js/dist/alert.js.map +1 -0
  115. data/app/assets/node_modules/bootstrap/js/dist/button.js +167 -0
  116. data/app/assets/node_modules/bootstrap/js/dist/button.js.map +1 -0
  117. data/app/assets/node_modules/bootstrap/js/dist/carousel.js +508 -0
  118. data/app/assets/node_modules/bootstrap/js/dist/carousel.js.map +1 -0
  119. data/app/assets/node_modules/bootstrap/js/dist/collapse.js +367 -0
  120. data/app/assets/node_modules/bootstrap/js/dist/collapse.js.map +1 -0
  121. data/app/assets/node_modules/bootstrap/js/dist/dropdown.js +489 -0
  122. data/app/assets/node_modules/bootstrap/js/dist/dropdown.js.map +1 -0
  123. data/app/assets/node_modules/bootstrap/js/dist/index.js +23 -0
  124. data/app/assets/node_modules/bootstrap/js/dist/index.js.map +1 -0
  125. data/app/assets/node_modules/bootstrap/js/dist/modal.js +585 -0
  126. data/app/assets/node_modules/bootstrap/js/dist/modal.js.map +1 -0
  127. data/app/assets/node_modules/bootstrap/js/dist/popover.js +206 -0
  128. data/app/assets/node_modules/bootstrap/js/dist/popover.js.map +1 -0
  129. data/app/assets/node_modules/bootstrap/js/dist/scrollspy.js +319 -0
  130. data/app/assets/node_modules/bootstrap/js/dist/scrollspy.js.map +1 -0
  131. data/app/assets/node_modules/bootstrap/js/dist/tab.js +251 -0
  132. data/app/assets/node_modules/bootstrap/js/dist/tab.js.map +1 -0
  133. data/app/assets/node_modules/bootstrap/js/dist/tooltip.js +674 -0
  134. data/app/assets/node_modules/bootstrap/js/dist/tooltip.js.map +1 -0
  135. data/app/assets/node_modules/bootstrap/js/dist/util.js +132 -0
  136. data/app/assets/node_modules/bootstrap/js/dist/util.js.map +1 -0
  137. data/app/assets/node_modules/bootstrap/js/src/alert.js +183 -0
  138. data/app/assets/node_modules/bootstrap/js/src/button.js +175 -0
  139. data/app/assets/node_modules/bootstrap/js/src/carousel.js +517 -0
  140. data/app/assets/node_modules/bootstrap/js/src/collapse.js +394 -0
  141. data/app/assets/node_modules/bootstrap/js/src/dropdown.js +487 -0
  142. data/app/assets/node_modules/bootstrap/js/src/index.js +50 -0
  143. data/app/assets/node_modules/bootstrap/js/src/modal.js +579 -0
  144. data/app/assets/node_modules/bootstrap/js/src/popover.js +188 -0
  145. data/app/assets/node_modules/bootstrap/js/src/scrollspy.js +329 -0
  146. data/app/assets/node_modules/bootstrap/js/src/tab.js +263 -0
  147. data/app/assets/node_modules/bootstrap/js/src/tooltip.js +723 -0
  148. data/app/assets/node_modules/bootstrap/js/src/util.js +153 -0
  149. data/app/assets/node_modules/bootstrap/package.json +218 -0
  150. data/app/assets/node_modules/bootstrap/scss/_alert.scss +51 -0
  151. data/app/assets/node_modules/bootstrap/scss/_badge.scss +47 -0
  152. data/app/assets/node_modules/bootstrap/scss/_breadcrumb.scss +41 -0
  153. data/app/assets/node_modules/bootstrap/scss/_button-group.scss +172 -0
  154. data/app/assets/node_modules/bootstrap/scss/_buttons.scss +144 -0
  155. data/app/assets/node_modules/bootstrap/scss/_card.scss +301 -0
  156. data/app/assets/node_modules/bootstrap/scss/_carousel.scss +236 -0
  157. data/app/assets/node_modules/bootstrap/scss/_close.scss +34 -0
  158. data/app/assets/node_modules/bootstrap/scss/_code.scss +48 -0
  159. data/app/assets/node_modules/bootstrap/scss/_custom-forms.scss +421 -0
  160. data/app/assets/node_modules/bootstrap/scss/_dropdown.scss +166 -0
  161. data/app/assets/node_modules/bootstrap/scss/_forms.scss +335 -0
  162. data/app/assets/node_modules/bootstrap/scss/_functions.scss +86 -0
  163. data/app/assets/node_modules/bootstrap/scss/_grid.scss +52 -0
  164. data/app/assets/node_modules/bootstrap/scss/_images.scss +42 -0
  165. data/app/assets/node_modules/bootstrap/scss/_input-group.scss +158 -0
  166. data/app/assets/node_modules/bootstrap/scss/_jumbotron.scss +16 -0
  167. data/app/assets/node_modules/bootstrap/scss/_list-group.scss +115 -0
  168. data/app/assets/node_modules/bootstrap/scss/_media.scss +8 -0
  169. data/app/assets/node_modules/bootstrap/scss/_mixins.scss +41 -0
  170. data/app/assets/node_modules/bootstrap/scss/_modal.scss +168 -0
  171. data/app/assets/node_modules/bootstrap/scss/_nav.scss +118 -0
  172. data/app/assets/node_modules/bootstrap/scss/_navbar.scss +299 -0
  173. data/app/assets/node_modules/bootstrap/scss/_pagination.scss +78 -0
  174. data/app/assets/node_modules/bootstrap/scss/_popover.scss +183 -0
  175. data/app/assets/node_modules/bootstrap/scss/_print.scss +141 -0
  176. data/app/assets/node_modules/bootstrap/scss/_progress.scss +34 -0
  177. data/app/assets/node_modules/bootstrap/scss/_reboot.scss +480 -0
  178. data/app/assets/node_modules/bootstrap/scss/_root.scss +19 -0
  179. data/app/assets/node_modules/bootstrap/scss/_tables.scss +188 -0
  180. data/app/assets/node_modules/bootstrap/scss/_tooltip.scss +115 -0
  181. data/app/assets/node_modules/bootstrap/scss/_transitions.scss +22 -0
  182. data/app/assets/node_modules/bootstrap/scss/_type.scss +125 -0
  183. data/app/assets/node_modules/bootstrap/scss/_utilities.scss +15 -0
  184. data/app/assets/node_modules/bootstrap/scss/_variables.scss +929 -0
  185. data/app/assets/node_modules/bootstrap/scss/bootstrap-grid.scss +32 -0
  186. data/app/assets/node_modules/bootstrap/scss/bootstrap-reboot.scss +12 -0
  187. data/app/assets/node_modules/bootstrap/scss/bootstrap.scss +42 -0
  188. data/app/assets/node_modules/bootstrap/scss/mixins/_alert.scss +13 -0
  189. data/app/assets/node_modules/bootstrap/scss/mixins/_background-variant.scss +21 -0
  190. data/app/assets/node_modules/bootstrap/scss/mixins/_badge.scss +12 -0
  191. data/app/assets/node_modules/bootstrap/scss/mixins/_border-radius.scss +35 -0
  192. data/app/assets/node_modules/bootstrap/scss/mixins/_box-shadow.scss +5 -0
  193. data/app/assets/node_modules/bootstrap/scss/mixins/_breakpoints.scss +123 -0
  194. data/app/assets/node_modules/bootstrap/scss/mixins/_buttons.scss +109 -0
  195. data/app/assets/node_modules/bootstrap/scss/mixins/_caret.scss +66 -0
  196. data/app/assets/node_modules/bootstrap/scss/mixins/_clearfix.scss +7 -0
  197. data/app/assets/node_modules/bootstrap/scss/mixins/_float.scss +11 -0
  198. data/app/assets/node_modules/bootstrap/scss/mixins/_forms.scss +147 -0
  199. data/app/assets/node_modules/bootstrap/scss/mixins/_gradients.scss +45 -0
  200. data/app/assets/node_modules/bootstrap/scss/mixins/_grid-framework.scss +67 -0
  201. data/app/assets/node_modules/bootstrap/scss/mixins/_grid.scss +52 -0
  202. data/app/assets/node_modules/bootstrap/scss/mixins/_hover.scss +37 -0
  203. data/app/assets/node_modules/bootstrap/scss/mixins/_image.scss +36 -0
  204. data/app/assets/node_modules/bootstrap/scss/mixins/_list-group.scss +21 -0
  205. data/app/assets/node_modules/bootstrap/scss/mixins/_lists.scss +7 -0
  206. data/app/assets/node_modules/bootstrap/scss/mixins/_nav-divider.scss +10 -0
  207. data/app/assets/node_modules/bootstrap/scss/mixins/_pagination.scss +22 -0
  208. data/app/assets/node_modules/bootstrap/scss/mixins/_reset-text.scss +17 -0
  209. data/app/assets/node_modules/bootstrap/scss/mixins/_resize.scss +6 -0
  210. data/app/assets/node_modules/bootstrap/scss/mixins/_screen-reader.scss +33 -0
  211. data/app/assets/node_modules/bootstrap/scss/mixins/_size.scss +6 -0
  212. data/app/assets/node_modules/bootstrap/scss/mixins/_table-row.scss +30 -0
  213. data/app/assets/node_modules/bootstrap/scss/mixins/_text-emphasis.scss +14 -0
  214. data/app/assets/node_modules/bootstrap/scss/mixins/_text-hide.scss +13 -0
  215. data/app/assets/node_modules/bootstrap/scss/mixins/_text-truncate.scss +8 -0
  216. data/app/assets/node_modules/bootstrap/scss/mixins/_transition.scss +13 -0
  217. data/app/assets/node_modules/bootstrap/scss/mixins/_visibility.scss +7 -0
  218. data/app/assets/node_modules/bootstrap/scss/utilities/_align.scss +8 -0
  219. data/app/assets/node_modules/bootstrap/scss/utilities/_background.scss +19 -0
  220. data/app/assets/node_modules/bootstrap/scss/utilities/_borders.scss +59 -0
  221. data/app/assets/node_modules/bootstrap/scss/utilities/_clearfix.scss +3 -0
  222. data/app/assets/node_modules/bootstrap/scss/utilities/_display.scss +38 -0
  223. data/app/assets/node_modules/bootstrap/scss/utilities/_embed.scss +52 -0
  224. data/app/assets/node_modules/bootstrap/scss/utilities/_flex.scss +51 -0
  225. data/app/assets/node_modules/bootstrap/scss/utilities/_float.scss +9 -0
  226. data/app/assets/node_modules/bootstrap/scss/utilities/_position.scss +37 -0
  227. data/app/assets/node_modules/bootstrap/scss/utilities/_screenreaders.scss +11 -0
  228. data/app/assets/node_modules/bootstrap/scss/utilities/_shadows.scss +6 -0
  229. data/app/assets/node_modules/bootstrap/scss/utilities/_sizing.scss +12 -0
  230. data/app/assets/node_modules/bootstrap/scss/utilities/_spacing.scss +51 -0
  231. data/app/assets/node_modules/bootstrap/scss/utilities/_text.scss +58 -0
  232. data/app/assets/node_modules/bootstrap/scss/utilities/_visibility.scss +11 -0
  233. data/app/assets/node_modules/clone/LICENSE +18 -0
  234. data/app/assets/node_modules/clone/README.md +178 -0
  235. data/app/assets/node_modules/clone/clone.iml +10 -0
  236. data/app/assets/node_modules/clone/clone.js +251 -0
  237. data/app/assets/node_modules/clone/package.json +56 -0
  238. data/app/assets/node_modules/deep-equal/LICENSE +18 -0
  239. data/app/assets/node_modules/deep-equal/example/cmp.js +11 -0
  240. data/app/assets/node_modules/deep-equal/index.js +94 -0
  241. data/app/assets/node_modules/deep-equal/lib/is_arguments.js +20 -0
  242. data/app/assets/node_modules/deep-equal/lib/keys.js +9 -0
  243. data/app/assets/node_modules/deep-equal/package.json +58 -0
  244. data/app/assets/node_modules/deep-equal/readme.markdown +61 -0
  245. data/app/assets/node_modules/deep-equal/test/cmp.js +95 -0
  246. data/app/assets/node_modules/dropzone/CONTRIBUTING.md +6 -0
  247. data/app/assets/node_modules/dropzone/LICENSE +12 -0
  248. data/app/assets/node_modules/dropzone/README.md +36 -0
  249. data/app/assets/node_modules/dropzone/bower.json +16 -0
  250. data/app/assets/node_modules/dropzone/component.json +10 -0
  251. data/app/assets/node_modules/dropzone/composer.json +18 -0
  252. data/app/assets/node_modules/dropzone/dist/basic.css +39 -0
  253. data/app/assets/node_modules/dropzone/dist/dropzone-amd-module.js +3541 -0
  254. data/app/assets/node_modules/dropzone/dist/dropzone.css +388 -0
  255. data/app/assets/node_modules/dropzone/dist/dropzone.js +3526 -0
  256. data/app/assets/node_modules/dropzone/dist/min/basic.min.css +1 -0
  257. data/app/assets/node_modules/dropzone/dist/min/dropzone-amd-module.min.js +2 -0
  258. data/app/assets/node_modules/dropzone/dist/min/dropzone.min.css +1 -0
  259. data/app/assets/node_modules/dropzone/dist/min/dropzone.min.js +2 -0
  260. data/app/assets/node_modules/dropzone/dist/readme.md +10 -0
  261. data/app/assets/node_modules/dropzone/index.js +1 -0
  262. data/app/assets/node_modules/dropzone/package.json +40 -0
  263. data/app/assets/node_modules/eve-raphael/LICENSE +202 -0
  264. data/app/assets/node_modules/eve-raphael/README.md +5 -0
  265. data/app/assets/node_modules/eve-raphael/bower.json +17 -0
  266. data/app/assets/node_modules/eve-raphael/component.json +13 -0
  267. data/app/assets/node_modules/eve-raphael/e.html +66 -0
  268. data/app/assets/node_modules/eve-raphael/eve.js +426 -0
  269. data/app/assets/node_modules/eve-raphael/package.json +15 -0
  270. data/app/assets/node_modules/eventemitter3/LICENSE +21 -0
  271. data/app/assets/node_modules/eventemitter3/README.md +105 -0
  272. data/app/assets/node_modules/eventemitter3/index.d.ts +50 -0
  273. data/app/assets/node_modules/eventemitter3/index.js +311 -0
  274. data/app/assets/node_modules/eventemitter3/package.json +51 -0
  275. data/app/assets/node_modules/eventemitter3/umd/eventemitter3.min.js +1 -0
  276. data/app/assets/node_modules/extend/CHANGELOG.md +77 -0
  277. data/app/assets/node_modules/extend/LICENSE +23 -0
  278. data/app/assets/node_modules/extend/README.md +81 -0
  279. data/app/assets/node_modules/extend/component.json +32 -0
  280. data/app/assets/node_modules/extend/index.js +86 -0
  281. data/app/assets/node_modules/extend/package.json +43 -0
  282. data/app/assets/node_modules/fast-diff/README.md +24 -0
  283. data/app/assets/node_modules/fast-diff/diff.js +738 -0
  284. data/app/assets/node_modules/fast-diff/package.json +24 -0
  285. data/app/assets/node_modules/fast-diff/test.js +91 -0
  286. data/app/assets/node_modules/jquery/AUTHORS.txt +313 -0
  287. data/app/assets/node_modules/jquery/LICENSE.txt +36 -0
  288. data/app/assets/node_modules/jquery/README.md +67 -0
  289. data/app/assets/node_modules/jquery/bower.json +14 -0
  290. data/app/assets/node_modules/jquery/dist/core.js +399 -0
  291. data/app/assets/node_modules/jquery/dist/jquery.js +10364 -0
  292. data/app/assets/node_modules/jquery/dist/jquery.min.js +2 -0
  293. data/app/assets/node_modules/jquery/dist/jquery.min.map +1 -0
  294. data/app/assets/node_modules/jquery/dist/jquery.slim.js +8269 -0
  295. data/app/assets/node_modules/jquery/dist/jquery.slim.min.js +2 -0
  296. data/app/assets/node_modules/jquery/dist/jquery.slim.min.map +1 -0
  297. data/app/assets/node_modules/jquery/external/sizzle/LICENSE.txt +36 -0
  298. data/app/assets/node_modules/jquery/external/sizzle/dist/sizzle.js +2272 -0
  299. data/app/assets/node_modules/jquery/external/sizzle/dist/sizzle.min.js +3 -0
  300. data/app/assets/node_modules/jquery/external/sizzle/dist/sizzle.min.map +1 -0
  301. data/app/assets/node_modules/jquery/package.json +108 -0
  302. data/app/assets/node_modules/jquery/src/ajax/jsonp.js +103 -0
  303. data/app/assets/node_modules/jquery/src/ajax/load.js +77 -0
  304. data/app/assets/node_modules/jquery/src/ajax/parseXML.js +30 -0
  305. data/app/assets/node_modules/jquery/src/ajax/script.js +77 -0
  306. data/app/assets/node_modules/jquery/src/ajax/var/location.js +5 -0
  307. data/app/assets/node_modules/jquery/src/ajax/var/nonce.js +5 -0
  308. data/app/assets/node_modules/jquery/src/ajax/var/rquery.js +5 -0
  309. data/app/assets/node_modules/jquery/src/ajax/xhr.js +170 -0
  310. data/app/assets/node_modules/jquery/src/ajax.js +856 -0
  311. data/app/assets/node_modules/jquery/src/attributes/attr.js +141 -0
  312. data/app/assets/node_modules/jquery/src/attributes/classes.js +186 -0
  313. data/app/assets/node_modules/jquery/src/attributes/prop.js +143 -0
  314. data/app/assets/node_modules/jquery/src/attributes/support.js +33 -0
  315. data/app/assets/node_modules/jquery/src/attributes/val.js +191 -0
  316. data/app/assets/node_modules/jquery/src/attributes.js +13 -0
  317. data/app/assets/node_modules/jquery/src/callbacks.js +236 -0
  318. data/app/assets/node_modules/jquery/src/core/DOMEval.js +30 -0
  319. data/app/assets/node_modules/jquery/src/core/access.js +72 -0
  320. data/app/assets/node_modules/jquery/src/core/camelCase.js +23 -0
  321. data/app/assets/node_modules/jquery/src/core/init.js +129 -0
  322. data/app/assets/node_modules/jquery/src/core/nodeName.js +13 -0
  323. data/app/assets/node_modules/jquery/src/core/parseHTML.js +65 -0
  324. data/app/assets/node_modules/jquery/src/core/ready-no-deferred.js +97 -0
  325. data/app/assets/node_modules/jquery/src/core/ready.js +86 -0
  326. data/app/assets/node_modules/jquery/src/core/readyException.js +13 -0
  327. data/app/assets/node_modules/jquery/src/core/stripAndCollapse.js +14 -0
  328. data/app/assets/node_modules/jquery/src/core/support.js +20 -0
  329. data/app/assets/node_modules/jquery/src/core/toType.js +20 -0
  330. data/app/assets/node_modules/jquery/src/core/var/rsingleTag.js +6 -0
  331. data/app/assets/node_modules/jquery/src/core.js +399 -0
  332. data/app/assets/node_modules/jquery/src/css/addGetHookIf.js +26 -0
  333. data/app/assets/node_modules/jquery/src/css/adjustCSS.js +73 -0
  334. data/app/assets/node_modules/jquery/src/css/curCSS.js +65 -0
  335. data/app/assets/node_modules/jquery/src/css/hiddenVisibleSelectors.js +15 -0
  336. data/app/assets/node_modules/jquery/src/css/showHide.js +105 -0
  337. data/app/assets/node_modules/jquery/src/css/support.js +102 -0
  338. data/app/assets/node_modules/jquery/src/css/var/cssExpand.js +5 -0
  339. data/app/assets/node_modules/jquery/src/css/var/getStyles.js +17 -0
  340. data/app/assets/node_modules/jquery/src/css/var/isHiddenWithinTree.js +34 -0
  341. data/app/assets/node_modules/jquery/src/css/var/rboxStyle.js +7 -0
  342. data/app/assets/node_modules/jquery/src/css/var/rnumnonpx.js +7 -0
  343. data/app/assets/node_modules/jquery/src/css/var/swap.js +26 -0
  344. data/app/assets/node_modules/jquery/src/css.js +481 -0
  345. data/app/assets/node_modules/jquery/src/data/Data.js +162 -0
  346. data/app/assets/node_modules/jquery/src/data/var/acceptData.js +19 -0
  347. data/app/assets/node_modules/jquery/src/data/var/dataPriv.js +7 -0
  348. data/app/assets/node_modules/jquery/src/data/var/dataUser.js +7 -0
  349. data/app/assets/node_modules/jquery/src/data.js +180 -0
  350. data/app/assets/node_modules/jquery/src/deferred/exceptionHook.js +21 -0
  351. data/app/assets/node_modules/jquery/src/deferred.js +399 -0
  352. data/app/assets/node_modules/jquery/src/deprecated.js +98 -0
  353. data/app/assets/node_modules/jquery/src/dimensions.js +57 -0
  354. data/app/assets/node_modules/jquery/src/effects/Tween.js +123 -0
  355. data/app/assets/node_modules/jquery/src/effects/animatedSelector.js +15 -0
  356. data/app/assets/node_modules/jquery/src/effects.js +702 -0
  357. data/app/assets/node_modules/jquery/src/event/ajax.js +22 -0
  358. data/app/assets/node_modules/jquery/src/event/alias.js +29 -0
  359. data/app/assets/node_modules/jquery/src/event/focusin.js +55 -0
  360. data/app/assets/node_modules/jquery/src/event/support.js +11 -0
  361. data/app/assets/node_modules/jquery/src/event/trigger.js +199 -0
  362. data/app/assets/node_modules/jquery/src/event.js +748 -0
  363. data/app/assets/node_modules/jquery/src/exports/amd.js +26 -0
  364. data/app/assets/node_modules/jquery/src/exports/global.js +34 -0
  365. data/app/assets/node_modules/jquery/src/jquery.js +40 -0
  366. data/app/assets/node_modules/jquery/src/manipulation/_evalUrl.js +23 -0
  367. data/app/assets/node_modules/jquery/src/manipulation/buildFragment.js +105 -0
  368. data/app/assets/node_modules/jquery/src/manipulation/getAll.js +32 -0
  369. data/app/assets/node_modules/jquery/src/manipulation/setGlobalEval.js +22 -0
  370. data/app/assets/node_modules/jquery/src/manipulation/support.js +35 -0
  371. data/app/assets/node_modules/jquery/src/manipulation/var/rcheckableType.js +5 -0
  372. data/app/assets/node_modules/jquery/src/manipulation/var/rscriptType.js +5 -0
  373. data/app/assets/node_modules/jquery/src/manipulation/var/rtagName.js +5 -0
  374. data/app/assets/node_modules/jquery/src/manipulation/wrapMap.js +29 -0
  375. data/app/assets/node_modules/jquery/src/manipulation.js +486 -0
  376. data/app/assets/node_modules/jquery/src/offset.js +233 -0
  377. data/app/assets/node_modules/jquery/src/queue/delay.js +24 -0
  378. data/app/assets/node_modules/jquery/src/queue.js +145 -0
  379. data/app/assets/node_modules/jquery/src/selector-native.js +237 -0
  380. data/app/assets/node_modules/jquery/src/selector-sizzle.js +19 -0
  381. data/app/assets/node_modules/jquery/src/selector.js +3 -0
  382. data/app/assets/node_modules/jquery/src/serialize.js +132 -0
  383. data/app/assets/node_modules/jquery/src/traversing/findFilter.js +97 -0
  384. data/app/assets/node_modules/jquery/src/traversing/var/dir.js +22 -0
  385. data/app/assets/node_modules/jquery/src/traversing/var/rneedsContext.js +8 -0
  386. data/app/assets/node_modules/jquery/src/traversing/var/siblings.js +17 -0
  387. data/app/assets/node_modules/jquery/src/traversing.js +191 -0
  388. data/app/assets/node_modules/jquery/src/var/ObjectFunctionString.js +7 -0
  389. data/app/assets/node_modules/jquery/src/var/arr.js +5 -0
  390. data/app/assets/node_modules/jquery/src/var/class2type.js +6 -0
  391. data/app/assets/node_modules/jquery/src/var/concat.js +7 -0
  392. data/app/assets/node_modules/jquery/src/var/document.js +5 -0
  393. data/app/assets/node_modules/jquery/src/var/documentElement.js +7 -0
  394. data/app/assets/node_modules/jquery/src/var/fnToString.js +7 -0
  395. data/app/assets/node_modules/jquery/src/var/getProto.js +5 -0
  396. data/app/assets/node_modules/jquery/src/var/hasOwn.js +7 -0
  397. data/app/assets/node_modules/jquery/src/var/indexOf.js +7 -0
  398. data/app/assets/node_modules/jquery/src/var/isFunction.js +13 -0
  399. data/app/assets/node_modules/jquery/src/var/isWindow.js +8 -0
  400. data/app/assets/node_modules/jquery/src/var/pnum.js +5 -0
  401. data/app/assets/node_modules/jquery/src/var/push.js +7 -0
  402. data/app/assets/node_modules/jquery/src/var/rcssNum.js +9 -0
  403. data/app/assets/node_modules/jquery/src/var/rnothtmlwhite.js +8 -0
  404. data/app/assets/node_modules/jquery/src/var/slice.js +7 -0
  405. data/app/assets/node_modules/jquery/src/var/support.js +6 -0
  406. data/app/assets/node_modules/jquery/src/var/toString.js +7 -0
  407. data/app/assets/node_modules/jquery/src/wrap.js +78 -0
  408. data/app/assets/node_modules/jquery-flot/API.md +1498 -0
  409. data/app/assets/node_modules/jquery-flot/CONTRIBUTING.md +98 -0
  410. data/app/assets/node_modules/jquery-flot/FAQ.md +75 -0
  411. data/app/assets/node_modules/jquery-flot/LICENSE.txt +22 -0
  412. data/app/assets/node_modules/jquery-flot/Makefile +12 -0
  413. data/app/assets/node_modules/jquery-flot/NEWS.md +1026 -0
  414. data/app/assets/node_modules/jquery-flot/PLUGINS.md +143 -0
  415. data/app/assets/node_modules/jquery-flot/README.md +110 -0
  416. data/app/assets/node_modules/jquery-flot/component.json +8 -0
  417. data/app/assets/node_modules/jquery-flot/examples/ajax/data-eu-gdp-growth-1.json +4 -0
  418. data/app/assets/node_modules/jquery-flot/examples/ajax/data-eu-gdp-growth-2.json +4 -0
  419. data/app/assets/node_modules/jquery-flot/examples/ajax/data-eu-gdp-growth-3.json +4 -0
  420. data/app/assets/node_modules/jquery-flot/examples/ajax/data-eu-gdp-growth-4.json +4 -0
  421. data/app/assets/node_modules/jquery-flot/examples/ajax/data-eu-gdp-growth-5.json +4 -0
  422. data/app/assets/node_modules/jquery-flot/examples/ajax/data-eu-gdp-growth.json +4 -0
  423. data/app/assets/node_modules/jquery-flot/examples/ajax/data-japan-gdp-growth.json +4 -0
  424. data/app/assets/node_modules/jquery-flot/examples/ajax/data-usa-gdp-growth.json +4 -0
  425. data/app/assets/node_modules/jquery-flot/examples/ajax/index.html +173 -0
  426. data/app/assets/node_modules/jquery-flot/examples/annotating/index.html +87 -0
  427. data/app/assets/node_modules/jquery-flot/examples/axes-interacting/index.html +97 -0
  428. data/app/assets/node_modules/jquery-flot/examples/axes-multiple/index.html +77 -0
  429. data/app/assets/node_modules/jquery-flot/examples/axes-time/index.html +137 -0
  430. data/app/assets/node_modules/jquery-flot/examples/axes-time-zones/date.js +893 -0
  431. data/app/assets/node_modules/jquery-flot/examples/axes-time-zones/index.html +114 -0
  432. data/app/assets/node_modules/jquery-flot/examples/axes-time-zones/tz/africa +1181 -0
  433. data/app/assets/node_modules/jquery-flot/examples/axes-time-zones/tz/antarctica +413 -0
  434. data/app/assets/node_modules/jquery-flot/examples/axes-time-zones/tz/asia +2717 -0
  435. data/app/assets/node_modules/jquery-flot/examples/axes-time-zones/tz/australasia +1719 -0
  436. data/app/assets/node_modules/jquery-flot/examples/axes-time-zones/tz/backward +117 -0
  437. data/app/assets/node_modules/jquery-flot/examples/axes-time-zones/tz/etcetera +81 -0
  438. data/app/assets/node_modules/jquery-flot/examples/axes-time-zones/tz/europe +2856 -0
  439. data/app/assets/node_modules/jquery-flot/examples/axes-time-zones/tz/factory +10 -0
  440. data/app/assets/node_modules/jquery-flot/examples/axes-time-zones/tz/iso3166.tab +276 -0
  441. data/app/assets/node_modules/jquery-flot/examples/axes-time-zones/tz/leapseconds +100 -0
  442. data/app/assets/node_modules/jquery-flot/examples/axes-time-zones/tz/northamerica +3235 -0
  443. data/app/assets/node_modules/jquery-flot/examples/axes-time-zones/tz/pacificnew +28 -0
  444. data/app/assets/node_modules/jquery-flot/examples/axes-time-zones/tz/solar87 +390 -0
  445. data/app/assets/node_modules/jquery-flot/examples/axes-time-zones/tz/solar88 +390 -0
  446. data/app/assets/node_modules/jquery-flot/examples/axes-time-zones/tz/solar89 +395 -0
  447. data/app/assets/node_modules/jquery-flot/examples/axes-time-zones/tz/southamerica +1711 -0
  448. data/app/assets/node_modules/jquery-flot/examples/axes-time-zones/tz/systemv +38 -0
  449. data/app/assets/node_modules/jquery-flot/examples/axes-time-zones/tz/yearistype.sh +38 -0
  450. data/app/assets/node_modules/jquery-flot/examples/axes-time-zones/tz/zone.tab +441 -0
  451. data/app/assets/node_modules/jquery-flot/examples/background.png +0 -0
  452. data/app/assets/node_modules/jquery-flot/examples/basic-options/index.html +91 -0
  453. data/app/assets/node_modules/jquery-flot/examples/basic-usage/index.html +57 -0
  454. data/app/assets/node_modules/jquery-flot/examples/canvas/index.html +75 -0
  455. data/app/assets/node_modules/jquery-flot/examples/categories/index.html +64 -0
  456. data/app/assets/node_modules/jquery-flot/examples/examples.css +97 -0
  457. data/app/assets/node_modules/jquery-flot/examples/image/hs-2004-27-a-large-web.jpg +0 -0
  458. data/app/assets/node_modules/jquery-flot/examples/image/index.html +69 -0
  459. data/app/assets/node_modules/jquery-flot/examples/index.html +80 -0
  460. data/app/assets/node_modules/jquery-flot/examples/interacting/index.html +118 -0
  461. data/app/assets/node_modules/jquery-flot/examples/navigate/arrow-down.gif +0 -0
  462. data/app/assets/node_modules/jquery-flot/examples/navigate/arrow-left.gif +0 -0
  463. data/app/assets/node_modules/jquery-flot/examples/navigate/arrow-right.gif +0 -0
  464. data/app/assets/node_modules/jquery-flot/examples/navigate/arrow-up.gif +0 -0
  465. data/app/assets/node_modules/jquery-flot/examples/navigate/index.html +153 -0
  466. data/app/assets/node_modules/jquery-flot/examples/percentiles/index.html +79 -0
  467. data/app/assets/node_modules/jquery-flot/examples/realtime/index.html +122 -0
  468. data/app/assets/node_modules/jquery-flot/examples/resize/index.html +76 -0
  469. data/app/assets/node_modules/jquery-flot/examples/selection/index.html +152 -0
  470. data/app/assets/node_modules/jquery-flot/examples/series-errorbars/index.html +150 -0
  471. data/app/assets/node_modules/jquery-flot/examples/series-pie/index.html +818 -0
  472. data/app/assets/node_modules/jquery-flot/examples/series-toggle/index.html +121 -0
  473. data/app/assets/node_modules/jquery-flot/examples/series-types/index.html +90 -0
  474. data/app/assets/node_modules/jquery-flot/examples/shared/jquery-ui/jquery-ui.min.css +6 -0
  475. data/app/assets/node_modules/jquery-flot/examples/stacking/index.html +107 -0
  476. data/app/assets/node_modules/jquery-flot/examples/symbols/index.html +76 -0
  477. data/app/assets/node_modules/jquery-flot/examples/threshold/index.html +76 -0
  478. data/app/assets/node_modules/jquery-flot/examples/tracking/index.html +135 -0
  479. data/app/assets/node_modules/jquery-flot/examples/visitors/index.html +147 -0
  480. data/app/assets/node_modules/jquery-flot/examples/zooming/index.html +144 -0
  481. data/app/assets/node_modules/jquery-flot/excanvas.js +1428 -0
  482. data/app/assets/node_modules/jquery-flot/excanvas.min.js +1 -0
  483. data/app/assets/node_modules/jquery-flot/flot.jquery.json +27 -0
  484. data/app/assets/node_modules/jquery-flot/jquery.colorhelpers.js +180 -0
  485. data/app/assets/node_modules/jquery-flot/jquery.flot.canvas.js +345 -0
  486. data/app/assets/node_modules/jquery-flot/jquery.flot.categories.js +190 -0
  487. data/app/assets/node_modules/jquery-flot/jquery.flot.crosshair.js +176 -0
  488. data/app/assets/node_modules/jquery-flot/jquery.flot.errorbars.js +353 -0
  489. data/app/assets/node_modules/jquery-flot/jquery.flot.fillbetween.js +226 -0
  490. data/app/assets/node_modules/jquery-flot/jquery.flot.image.js +241 -0
  491. data/app/assets/node_modules/jquery-flot/jquery.flot.js +3168 -0
  492. data/app/assets/node_modules/jquery-flot/jquery.flot.navigate.js +346 -0
  493. data/app/assets/node_modules/jquery-flot/jquery.flot.pie.js +820 -0
  494. data/app/assets/node_modules/jquery-flot/jquery.flot.resize.js +59 -0
  495. data/app/assets/node_modules/jquery-flot/jquery.flot.selection.js +360 -0
  496. data/app/assets/node_modules/jquery-flot/jquery.flot.stack.js +188 -0
  497. data/app/assets/node_modules/jquery-flot/jquery.flot.symbol.js +71 -0
  498. data/app/assets/node_modules/jquery-flot/jquery.flot.threshold.js +142 -0
  499. data/app/assets/node_modules/jquery-flot/jquery.flot.time.js +432 -0
  500. data/app/assets/node_modules/jquery-flot/jquery.js +9472 -0
  501. data/app/assets/node_modules/jquery-flot/package.json +11 -0
  502. data/app/assets/node_modules/jquery-sparkline/Changelog.txt +324 -0
  503. data/app/assets/node_modules/jquery-sparkline/README.md +19 -0
  504. data/app/assets/node_modules/jquery-sparkline/build.js +13 -0
  505. data/app/assets/node_modules/jquery-sparkline/jquery.sparkline.js +3068 -0
  506. data/app/assets/node_modules/jquery-sparkline/jquery.sparkline.min.js +2 -0
  507. data/app/assets/node_modules/jquery-sparkline/package.json +32 -0
  508. data/app/assets/node_modules/jquery-sparkline/src/base.js +415 -0
  509. data/app/assets/node_modules/jquery-sparkline/src/chart-bar.js +256 -0
  510. data/app/assets/node_modules/jquery-sparkline/src/chart-box.js +186 -0
  511. data/app/assets/node_modules/jquery-sparkline/src/chart-bullet.js +131 -0
  512. data/app/assets/node_modules/jquery-sparkline/src/chart-discrete.js +66 -0
  513. data/app/assets/node_modules/jquery-sparkline/src/chart-line.js +350 -0
  514. data/app/assets/node_modules/jquery-sparkline/src/chart-pie.js +117 -0
  515. data/app/assets/node_modules/jquery-sparkline/src/chart-tristate.js +98 -0
  516. data/app/assets/node_modules/jquery-sparkline/src/defaults.js +156 -0
  517. data/app/assets/node_modules/jquery-sparkline/src/footer.js +1 -0
  518. data/app/assets/node_modules/jquery-sparkline/src/header.js +222 -0
  519. data/app/assets/node_modules/jquery-sparkline/src/interact.js +247 -0
  520. data/app/assets/node_modules/jquery-sparkline/src/rangemap.js +39 -0
  521. data/app/assets/node_modules/jquery-sparkline/src/simpledraw.js +55 -0
  522. data/app/assets/node_modules/jquery-sparkline/src/utils.js +224 -0
  523. data/app/assets/node_modules/jquery-sparkline/src/vcanvas-base.js +147 -0
  524. data/app/assets/node_modules/jquery-sparkline/src/vcanvas-canvas.js +193 -0
  525. data/app/assets/node_modules/jquery-sparkline/src/vcanvas-vml.js +165 -0
  526. data/app/assets/node_modules/jquery-touchswipe/LICENSE +24 -0
  527. data/app/assets/node_modules/jquery-touchswipe/README.md +81 -0
  528. data/app/assets/node_modules/jquery-touchswipe/bower.json +8 -0
  529. data/app/assets/node_modules/jquery-touchswipe/demos/Any_finger_swipe.html +49 -0
  530. data/app/assets/node_modules/jquery-touchswipe/demos/Basic_swipe.html +48 -0
  531. data/app/assets/node_modules/jquery-touchswipe/demos/Enable_and_destroy.html +95 -0
  532. data/app/assets/node_modules/jquery-touchswipe/demos/Excluded_children.html +82 -0
  533. data/app/assets/node_modules/jquery-touchswipe/demos/Finger_swipe.html +61 -0
  534. data/app/assets/node_modules/jquery-touchswipe/demos/Handlers_and_events.html +128 -0
  535. data/app/assets/node_modules/jquery-touchswipe/demos/Hold.html +61 -0
  536. data/app/assets/node_modules/jquery-touchswipe/demos/Image_gallery_example.html +148 -0
  537. data/app/assets/node_modules/jquery-touchswipe/demos/Options.html +90 -0
  538. data/app/assets/node_modules/jquery-touchswipe/demos/Page_scrolling.html +109 -0
  539. data/app/assets/node_modules/jquery-touchswipe/demos/Page_zoom.html +50 -0
  540. data/app/assets/node_modules/jquery-touchswipe/demos/Pinch.html +57 -0
  541. data/app/assets/node_modules/jquery-touchswipe/demos/Pinch_and_Swipe.html +81 -0
  542. data/app/assets/node_modules/jquery-touchswipe/demos/Pinch_status.html +51 -0
  543. data/app/assets/node_modules/jquery-touchswipe/demos/Single_swipe.html +51 -0
  544. data/app/assets/node_modules/jquery-touchswipe/demos/Stop_propegation.html +57 -0
  545. data/app/assets/node_modules/jquery-touchswipe/demos/Swipe_status.html +82 -0
  546. data/app/assets/node_modules/jquery-touchswipe/demos/Tap_vs_swipe.html +114 -0
  547. data/app/assets/node_modules/jquery-touchswipe/demos/Thresholds.html +109 -0
  548. data/app/assets/node_modules/jquery-touchswipe/demos/Trigger_handlers.html +158 -0
  549. data/app/assets/node_modules/jquery-touchswipe/demos/css/main.css +110 -0
  550. data/app/assets/node_modules/jquery-touchswipe/demos/index.html +74 -0
  551. data/app/assets/node_modules/jquery-touchswipe/demos/js/jquery.ui.ipad.js +223 -0
  552. data/app/assets/node_modules/jquery-touchswipe/demos/js/main.js +240 -0
  553. data/app/assets/node_modules/jquery-touchswipe/demos/tutorials.json +22 -0
  554. data/app/assets/node_modules/jquery-touchswipe/docs/$.fn.html +188 -0
  555. data/app/assets/node_modules/jquery-touchswipe/docs/$.fn.swipe.defaults.html +1174 -0
  556. data/app/assets/node_modules/jquery-touchswipe/docs/$.fn.swipe.directions.html +311 -0
  557. data/app/assets/node_modules/jquery-touchswipe/docs/$.fn.swipe.fingers.html +319 -0
  558. data/app/assets/node_modules/jquery-touchswipe/docs/$.fn.swipe.html +4205 -0
  559. data/app/assets/node_modules/jquery-touchswipe/docs/$.fn.swipe.pageScroll.html +272 -0
  560. data/app/assets/node_modules/jquery-touchswipe/docs/$.fn.swipe.phases.html +265 -0
  561. data/app/assets/node_modules/jquery-touchswipe/docs/$.html +186 -0
  562. data/app/assets/node_modules/jquery-touchswipe/docs/css/main.css +110 -0
  563. data/app/assets/node_modules/jquery-touchswipe/docs/index.html +101 -0
  564. data/app/assets/node_modules/jquery-touchswipe/docs/jquery.touchSwipe.js.html +2168 -0
  565. data/app/assets/node_modules/jquery-touchswipe/docs/js/jquery.ui.ipad.js +223 -0
  566. data/app/assets/node_modules/jquery-touchswipe/docs/js/main.js +85 -0
  567. data/app/assets/node_modules/jquery-touchswipe/docs/scripts/linenumber.js +25 -0
  568. data/app/assets/node_modules/jquery-touchswipe/docs/scripts/prettify/Apache-License-2.0.txt +202 -0
  569. data/app/assets/node_modules/jquery-touchswipe/docs/scripts/prettify/lang-css.js +2 -0
  570. data/app/assets/node_modules/jquery-touchswipe/docs/scripts/prettify/prettify.js +28 -0
  571. data/app/assets/node_modules/jquery-touchswipe/docs/styles/jsdoc.css +625 -0
  572. data/app/assets/node_modules/jquery-touchswipe/docs/styles/prettify.css +79 -0
  573. data/app/assets/node_modules/jquery-touchswipe/docs/tutorial-Any_finger_swipe.html +108 -0
  574. data/app/assets/node_modules/jquery-touchswipe/docs/tutorial-Basic_swipe.html +107 -0
  575. data/app/assets/node_modules/jquery-touchswipe/docs/tutorial-Enable_and_destroy.html +154 -0
  576. data/app/assets/node_modules/jquery-touchswipe/docs/tutorial-Excluded_children.html +141 -0
  577. data/app/assets/node_modules/jquery-touchswipe/docs/tutorial-Finger_swipe.html +120 -0
  578. data/app/assets/node_modules/jquery-touchswipe/docs/tutorial-Handlers_and_events.html +187 -0
  579. data/app/assets/node_modules/jquery-touchswipe/docs/tutorial-Hold.html +120 -0
  580. data/app/assets/node_modules/jquery-touchswipe/docs/tutorial-Image_gallery_example.html +207 -0
  581. data/app/assets/node_modules/jquery-touchswipe/docs/tutorial-Options.html +149 -0
  582. data/app/assets/node_modules/jquery-touchswipe/docs/tutorial-Page_scrolling.html +168 -0
  583. data/app/assets/node_modules/jquery-touchswipe/docs/tutorial-Page_zoom.html +109 -0
  584. data/app/assets/node_modules/jquery-touchswipe/docs/tutorial-Pinch.html +116 -0
  585. data/app/assets/node_modules/jquery-touchswipe/docs/tutorial-Pinch_and_Swipe.html +140 -0
  586. data/app/assets/node_modules/jquery-touchswipe/docs/tutorial-Pinch_status.html +110 -0
  587. data/app/assets/node_modules/jquery-touchswipe/docs/tutorial-Single_swipe.html +110 -0
  588. data/app/assets/node_modules/jquery-touchswipe/docs/tutorial-Stop_propegation.html +116 -0
  589. data/app/assets/node_modules/jquery-touchswipe/docs/tutorial-Swipe_status.html +141 -0
  590. data/app/assets/node_modules/jquery-touchswipe/docs/tutorial-Tap_vs_swipe.html +173 -0
  591. data/app/assets/node_modules/jquery-touchswipe/docs/tutorial-Thresholds.html +168 -0
  592. data/app/assets/node_modules/jquery-touchswipe/docs/tutorial-Trigger_handlers.html +217 -0
  593. data/app/assets/node_modules/jquery-touchswipe/docs/tutorial-index_.html +133 -0
  594. data/app/assets/node_modules/jquery-touchswipe/jquery.touchSwipe.js +2109 -0
  595. data/app/assets/node_modules/jquery-touchswipe/jquery.touchSwipe.min.js +14 -0
  596. data/app/assets/node_modules/jquery-touchswipe/package.json +47 -0
  597. data/app/assets/node_modules/jquery-validation/LICENSE.md +22 -0
  598. data/app/assets/node_modules/jquery-validation/README.md +76 -0
  599. data/app/assets/node_modules/jquery-validation/changelog.md +639 -0
  600. data/app/assets/node_modules/jquery-validation/dist/additional-methods.js +1158 -0
  601. data/app/assets/node_modules/jquery-validation/dist/jquery.validate.js +1601 -0
  602. data/app/assets/node_modules/jquery-validation/dist/jquery.validate.min.js +4 -0
  603. data/app/assets/node_modules/jquery-validation/dist/localization/messages_ar.js +35 -0
  604. data/app/assets/node_modules/jquery-validation/dist/localization/messages_az.js +35 -0
  605. data/app/assets/node_modules/jquery-validation/dist/localization/messages_bg.js +35 -0
  606. data/app/assets/node_modules/jquery-validation/dist/localization/messages_bn_BD.js +35 -0
  607. data/app/assets/node_modules/jquery-validation/dist/localization/messages_ca.js +35 -0
  608. data/app/assets/node_modules/jquery-validation/dist/localization/messages_cs.js +35 -0
  609. data/app/assets/node_modules/jquery-validation/dist/localization/messages_da.js +32 -0
  610. data/app/assets/node_modules/jquery-validation/dist/localization/messages_de.js +32 -0
  611. data/app/assets/node_modules/jquery-validation/dist/localization/messages_el.js +35 -0
  612. data/app/assets/node_modules/jquery-validation/dist/localization/messages_es.js +38 -0
  613. data/app/assets/node_modules/jquery-validation/dist/localization/messages_es_AR.js +39 -0
  614. data/app/assets/node_modules/jquery-validation/dist/localization/messages_es_PE.js +39 -0
  615. data/app/assets/node_modules/jquery-validation/dist/localization/messages_et.js +33 -0
  616. data/app/assets/node_modules/jquery-validation/dist/localization/messages_eu.js +35 -0
  617. data/app/assets/node_modules/jquery-validation/dist/localization/messages_fa.js +38 -0
  618. data/app/assets/node_modules/jquery-validation/dist/localization/messages_fi.js +33 -0
  619. data/app/assets/node_modules/jquery-validation/dist/localization/messages_fr.js +63 -0
  620. data/app/assets/node_modules/jquery-validation/dist/localization/messages_ge.js +35 -0
  621. data/app/assets/node_modules/jquery-validation/dist/localization/messages_gl.js +40 -0
  622. data/app/assets/node_modules/jquery-validation/dist/localization/messages_he.js +35 -0
  623. data/app/assets/node_modules/jquery-validation/dist/localization/messages_hr.js +35 -0
  624. data/app/assets/node_modules/jquery-validation/dist/localization/messages_hu.js +35 -0
  625. data/app/assets/node_modules/jquery-validation/dist/localization/messages_hy_AM.js +35 -0
  626. data/app/assets/node_modules/jquery-validation/dist/localization/messages_id.js +34 -0
  627. data/app/assets/node_modules/jquery-validation/dist/localization/messages_is.js +33 -0
  628. data/app/assets/node_modules/jquery-validation/dist/localization/messages_it.js +39 -0
  629. data/app/assets/node_modules/jquery-validation/dist/localization/messages_ja.js +36 -0
  630. data/app/assets/node_modules/jquery-validation/dist/localization/messages_ka.js +35 -0
  631. data/app/assets/node_modules/jquery-validation/dist/localization/messages_kk.js +35 -0
  632. data/app/assets/node_modules/jquery-validation/dist/localization/messages_ko.js +35 -0
  633. data/app/assets/node_modules/jquery-validation/dist/localization/messages_lt.js +35 -0
  634. data/app/assets/node_modules/jquery-validation/dist/localization/messages_lv.js +35 -0
  635. data/app/assets/node_modules/jquery-validation/dist/localization/messages_mk.js +35 -0
  636. data/app/assets/node_modules/jquery-validation/dist/localization/messages_my.js +35 -0
  637. data/app/assets/node_modules/jquery-validation/dist/localization/messages_nl.js +46 -0
  638. data/app/assets/node_modules/jquery-validation/dist/localization/messages_no.js +36 -0
  639. data/app/assets/node_modules/jquery-validation/dist/localization/messages_pl.js +37 -0
  640. data/app/assets/node_modules/jquery-validation/dist/localization/messages_pt_BR.js +88 -0
  641. data/app/assets/node_modules/jquery-validation/dist/localization/messages_pt_PT.js +39 -0
  642. data/app/assets/node_modules/jquery-validation/dist/localization/messages_ro.js +35 -0
  643. data/app/assets/node_modules/jquery-validation/dist/localization/messages_ru.js +35 -0
  644. data/app/assets/node_modules/jquery-validation/dist/localization/messages_sd.js +35 -0
  645. data/app/assets/node_modules/jquery-validation/dist/localization/messages_si.js +35 -0
  646. data/app/assets/node_modules/jquery-validation/dist/localization/messages_sk.js +32 -0
  647. data/app/assets/node_modules/jquery-validation/dist/localization/messages_sl.js +35 -0
  648. data/app/assets/node_modules/jquery-validation/dist/localization/messages_sr.js +35 -0
  649. data/app/assets/node_modules/jquery-validation/dist/localization/messages_sr_lat.js +35 -0
  650. data/app/assets/node_modules/jquery-validation/dist/localization/messages_sv.js +33 -0
  651. data/app/assets/node_modules/jquery-validation/dist/localization/messages_th.js +35 -0
  652. data/app/assets/node_modules/jquery-validation/dist/localization/messages_tj.js +35 -0
  653. data/app/assets/node_modules/jquery-validation/dist/localization/messages_tr.js +36 -0
  654. data/app/assets/node_modules/jquery-validation/dist/localization/messages_uk.js +35 -0
  655. data/app/assets/node_modules/jquery-validation/dist/localization/messages_ur.js +35 -0
  656. data/app/assets/node_modules/jquery-validation/dist/localization/messages_vi.js +35 -0
  657. data/app/assets/node_modules/jquery-validation/dist/localization/messages_zh.js +35 -0
  658. data/app/assets/node_modules/jquery-validation/dist/localization/messages_zh_TW.js +36 -0
  659. data/app/assets/node_modules/jquery-validation/dist/localization/methods_de.js +24 -0
  660. data/app/assets/node_modules/jquery-validation/dist/localization/methods_es_CL.js +24 -0
  661. data/app/assets/node_modules/jquery-validation/dist/localization/methods_fi.js +24 -0
  662. data/app/assets/node_modules/jquery-validation/dist/localization/methods_nl.js +24 -0
  663. data/app/assets/node_modules/jquery-validation/dist/localization/methods_pt.js +21 -0
  664. data/app/assets/node_modules/jquery-validation/package.json +61 -0
  665. data/app/assets/node_modules/jquery.browser/Gruntfile.js +62 -0
  666. data/app/assets/node_modules/jquery.browser/MIT-LICENSE.txt +21 -0
  667. data/app/assets/node_modules/jquery.browser/README.md +117 -0
  668. data/app/assets/node_modules/jquery.browser/bower.json +13 -0
  669. data/app/assets/node_modules/jquery.browser/browser.jquery.json +37 -0
  670. data/app/assets/node_modules/jquery.browser/dist/jquery.browser.js +193 -0
  671. data/app/assets/node_modules/jquery.browser/dist/jquery.browser.min.js +14 -0
  672. data/app/assets/node_modules/jquery.browser/package.json +30 -0
  673. data/app/assets/node_modules/jquery.browser/test/casperserver.js +257 -0
  674. data/app/assets/node_modules/jquery.browser/test/index.html +13 -0
  675. data/app/assets/node_modules/jquery.browser/test/src/jquery-1.10.2.min.js +6 -0
  676. data/app/assets/node_modules/jquery.browser/test/src/require/test.js +21 -0
  677. data/app/assets/node_modules/jquery.browser/test/test.js +962 -0
  678. data/app/assets/node_modules/jquery.flot.tooltip/CONTRIBUTING.md +9 -0
  679. data/app/assets/node_modules/jquery.flot.tooltip/Gruntfile.js +72 -0
  680. data/app/assets/node_modules/jquery.flot.tooltip/README.md +267 -0
  681. data/app/assets/node_modules/jquery.flot.tooltip/bower.json +13 -0
  682. data/app/assets/node_modules/jquery.flot.tooltip/examples/basic.html +45 -0
  683. data/app/assets/node_modules/jquery.flot.tooltip/examples/curved-lines.html +59 -0
  684. data/app/assets/node_modules/jquery.flot.tooltip/examples/custom-label-text.html +114 -0
  685. data/app/assets/node_modules/jquery.flot.tooltip/examples/custom_ticks.html +78 -0
  686. data/app/assets/node_modules/jquery.flot.tooltip/examples/dollar_in_tickformatter.html +68 -0
  687. data/app/assets/node_modules/jquery.flot.tooltip/examples/index.html +36 -0
  688. data/app/assets/node_modules/jquery.flot.tooltip/examples/js/curvedLines.js +483 -0
  689. data/app/assets/node_modules/jquery.flot.tooltip/examples/js/excanvas.min.js +1 -0
  690. data/app/assets/node_modules/jquery.flot.tooltip/examples/js/jquery.flot.js +3168 -0
  691. data/app/assets/node_modules/jquery.flot.tooltip/examples/js/jquery.flot.pie.js +820 -0
  692. data/app/assets/node_modules/jquery.flot.tooltip/examples/js/jquery.flot.stack.js +184 -0
  693. data/app/assets/node_modules/jquery.flot.tooltip/examples/js/jquery.flot.threshold.js +142 -0
  694. data/app/assets/node_modules/jquery.flot.tooltip/examples/js/jquery.flot.time.js +432 -0
  695. data/app/assets/node_modules/jquery.flot.tooltip/examples/many_series.html +78 -0
  696. data/app/assets/node_modules/jquery.flot.tooltip/examples/multiple-axes.html +78 -0
  697. data/app/assets/node_modules/jquery.flot.tooltip/examples/pie.html +87 -0
  698. data/app/assets/node_modules/jquery.flot.tooltip/examples/real_data.html +133 -0
  699. data/app/assets/node_modules/jquery.flot.tooltip/examples/stacking.html +97 -0
  700. data/app/assets/node_modules/jquery.flot.tooltip/examples/threshold.html +97 -0
  701. data/app/assets/node_modules/jquery.flot.tooltip/examples/time_bars.html +77 -0
  702. data/app/assets/node_modules/jquery.flot.tooltip/examples/two_chars.html +63 -0
  703. data/app/assets/node_modules/jquery.flot.tooltip/js/jquery.flot.tooltip.js +606 -0
  704. data/app/assets/node_modules/jquery.flot.tooltip/js/jquery.flot.tooltip.min.js +12 -0
  705. data/app/assets/node_modules/jquery.flot.tooltip/js/jquery.flot.tooltip.source.js +595 -0
  706. data/app/assets/node_modules/jquery.flot.tooltip/package.json +37 -0
  707. data/app/assets/node_modules/jqvmap/CHANGELOG.md +118 -0
  708. data/app/assets/node_modules/jqvmap/CONTRIBUTING.md +118 -0
  709. data/app/assets/node_modules/jqvmap/LICENSE +43 -0
  710. data/app/assets/node_modules/jqvmap/README.md +495 -0
  711. data/app/assets/node_modules/jqvmap/REGIONS.md +405 -0
  712. data/app/assets/node_modules/jqvmap/bower.json +32 -0
  713. data/app/assets/node_modules/jqvmap/create/README.md +207 -0
  714. data/app/assets/node_modules/jqvmap/create/config/continent.json +64 -0
  715. data/app/assets/node_modules/jqvmap/create/config/new-york.json +16 -0
  716. data/app/assets/node_modules/jqvmap/create/config/syria.json +16 -0
  717. data/app/assets/node_modules/jqvmap/create/jqvmap.py +573 -0
  718. data/app/assets/node_modules/jqvmap/dist/jquery.vmap.js +1281 -0
  719. data/app/assets/node_modules/jqvmap/dist/jquery.vmap.min.js +10 -0
  720. data/app/assets/node_modules/jqvmap/dist/jqvmap.css +50 -0
  721. data/app/assets/node_modules/jqvmap/dist/jqvmap.min.css +1 -0
  722. data/app/assets/node_modules/jqvmap/dist/maps/continents/jquery.vmap.africa.js +2 -0
  723. data/app/assets/node_modules/jqvmap/dist/maps/continents/jquery.vmap.asia.js +2 -0
  724. data/app/assets/node_modules/jqvmap/dist/maps/continents/jquery.vmap.australia.js +2 -0
  725. data/app/assets/node_modules/jqvmap/dist/maps/continents/jquery.vmap.europe.js +2 -0
  726. data/app/assets/node_modules/jqvmap/dist/maps/continents/jquery.vmap.north-america.js +2 -0
  727. data/app/assets/node_modules/jqvmap/dist/maps/continents/jquery.vmap.south-america.js +2 -0
  728. data/app/assets/node_modules/jqvmap/dist/maps/jquery.vmap.algeria.js +2 -0
  729. data/app/assets/node_modules/jqvmap/dist/maps/jquery.vmap.argentina.js +1 -0
  730. data/app/assets/node_modules/jqvmap/dist/maps/jquery.vmap.brazil.js +2 -0
  731. data/app/assets/node_modules/jqvmap/dist/maps/jquery.vmap.canada.js +2 -0
  732. data/app/assets/node_modules/jqvmap/dist/maps/jquery.vmap.europe.js +2 -0
  733. data/app/assets/node_modules/jqvmap/dist/maps/jquery.vmap.france.js +1 -0
  734. data/app/assets/node_modules/jqvmap/dist/maps/jquery.vmap.germany.js +2 -0
  735. data/app/assets/node_modules/jqvmap/dist/maps/jquery.vmap.greece.js +1 -0
  736. data/app/assets/node_modules/jqvmap/dist/maps/jquery.vmap.iran.js +6 -0
  737. data/app/assets/node_modules/jqvmap/dist/maps/jquery.vmap.iraq.js +1 -0
  738. data/app/assets/node_modules/jqvmap/dist/maps/jquery.vmap.russia.js +2 -0
  739. data/app/assets/node_modules/jqvmap/dist/maps/jquery.vmap.tunisia.js +2 -0
  740. data/app/assets/node_modules/jqvmap/dist/maps/jquery.vmap.turkey.js +11 -0
  741. data/app/assets/node_modules/jqvmap/dist/maps/jquery.vmap.usa.js +2 -0
  742. data/app/assets/node_modules/jqvmap/dist/maps/jquery.vmap.world.js +2 -0
  743. data/app/assets/node_modules/jqvmap/examples/algeria.html +27 -0
  744. data/app/assets/node_modules/jqvmap/examples/argentina.html +33 -0
  745. data/app/assets/node_modules/jqvmap/examples/brazil.html +33 -0
  746. data/app/assets/node_modules/jqvmap/examples/continents.html +172 -0
  747. data/app/assets/node_modules/jqvmap/examples/europe.html +27 -0
  748. data/app/assets/node_modules/jqvmap/examples/france.html +27 -0
  749. data/app/assets/node_modules/jqvmap/examples/germany.html +33 -0
  750. data/app/assets/node_modules/jqvmap/examples/greece.html +33 -0
  751. data/app/assets/node_modules/jqvmap/examples/images/background.png +0 -0
  752. data/app/assets/node_modules/jqvmap/examples/images/flag.png +0 -0
  753. data/app/assets/node_modules/jqvmap/examples/images/globe.png +0 -0
  754. data/app/assets/node_modules/jqvmap/examples/images/marker/black.png +0 -0
  755. data/app/assets/node_modules/jqvmap/examples/images/marker/blue.png +0 -0
  756. data/app/assets/node_modules/jqvmap/examples/images/marker/green.png +0 -0
  757. data/app/assets/node_modules/jqvmap/examples/images/marker/grey.png +0 -0
  758. data/app/assets/node_modules/jqvmap/examples/images/marker/orange.png +0 -0
  759. data/app/assets/node_modules/jqvmap/examples/images/marker/purple.png +0 -0
  760. data/app/assets/node_modules/jqvmap/examples/images/marker/red.png +0 -0
  761. data/app/assets/node_modules/jqvmap/examples/images/marker/white.png +0 -0
  762. data/app/assets/node_modules/jqvmap/examples/images/marker/yellow.png +0 -0
  763. data/app/assets/node_modules/jqvmap/examples/images/thumb.jpg +0 -0
  764. data/app/assets/node_modules/jqvmap/examples/images/tip.png +0 -0
  765. data/app/assets/node_modules/jqvmap/examples/inactive_regions.html +62 -0
  766. data/app/assets/node_modules/jqvmap/examples/iran.html +44 -0
  767. data/app/assets/node_modules/jqvmap/examples/iraq.html +44 -0
  768. data/app/assets/node_modules/jqvmap/examples/js/jquery.vmap.sampledata.js +1 -0
  769. data/app/assets/node_modules/jqvmap/examples/labels.html +146 -0
  770. data/app/assets/node_modules/jqvmap/examples/mobile.html +59 -0
  771. data/app/assets/node_modules/jqvmap/examples/multi.html +29 -0
  772. data/app/assets/node_modules/jqvmap/examples/pins.html +236 -0
  773. data/app/assets/node_modules/jqvmap/examples/pins_custom.html +127 -0
  774. data/app/assets/node_modules/jqvmap/examples/responsive.html +45 -0
  775. data/app/assets/node_modules/jqvmap/examples/russia.html +33 -0
  776. data/app/assets/node_modules/jqvmap/examples/touch_detect.html +46 -0
  777. data/app/assets/node_modules/jqvmap/examples/tunisia.html +33 -0
  778. data/app/assets/node_modules/jqvmap/examples/turkey.html +26 -0
  779. data/app/assets/node_modules/jqvmap/examples/usa.html +37 -0
  780. data/app/assets/node_modules/jqvmap/examples/world.html +35 -0
  781. data/app/assets/node_modules/jqvmap/grunt/bump.js +22 -0
  782. data/app/assets/node_modules/jqvmap/grunt/changelog.js +14 -0
  783. data/app/assets/node_modules/jqvmap/grunt/clean.js +5 -0
  784. data/app/assets/node_modules/jqvmap/grunt/concat.js +23 -0
  785. data/app/assets/node_modules/jqvmap/grunt/index.js +2 -0
  786. data/app/assets/node_modules/jqvmap/grunt/qunit.js +3 -0
  787. data/app/assets/node_modules/jqvmap/grunt/shell.js +6 -0
  788. data/app/assets/node_modules/jqvmap/grunt/uglify.js +19 -0
  789. data/app/assets/node_modules/jqvmap/gruntfile.js +21 -0
  790. data/app/assets/node_modules/jqvmap/node_modules/jquery/AUTHORS.txt +217 -0
  791. data/app/assets/node_modules/jqvmap/node_modules/jquery/CONTRIBUTING.md +214 -0
  792. data/app/assets/node_modules/jqvmap/node_modules/jquery/MIT-LICENSE.txt +21 -0
  793. data/app/assets/node_modules/jqvmap/node_modules/jquery/README.md +368 -0
  794. data/app/assets/node_modules/jqvmap/node_modules/jquery/bower.json +28 -0
  795. data/app/assets/node_modules/jqvmap/node_modules/jquery/dist/jquery.js +10351 -0
  796. data/app/assets/node_modules/jqvmap/node_modules/jquery/dist/jquery.min.js +6 -0
  797. data/app/assets/node_modules/jqvmap/node_modules/jquery/dist/jquery.min.map +1 -0
  798. data/app/assets/node_modules/jqvmap/node_modules/jquery/package.json +54 -0
  799. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/ajax/jsonp.js +89 -0
  800. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/ajax/load.js +75 -0
  801. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/ajax/parseJSON.js +51 -0
  802. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/ajax/parseXML.js +31 -0
  803. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/ajax/script.js +93 -0
  804. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/ajax/var/nonce.js +5 -0
  805. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/ajax/var/rquery.js +3 -0
  806. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/ajax/xhr.js +197 -0
  807. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/ajax.js +801 -0
  808. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/attributes/attr.js +271 -0
  809. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/attributes/classes.js +157 -0
  810. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/attributes/prop.js +134 -0
  811. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/attributes/support.js +62 -0
  812. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/attributes/val.js +178 -0
  813. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/attributes.js +11 -0
  814. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/callbacks.js +205 -0
  815. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/core/access.js +60 -0
  816. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/core/init.js +132 -0
  817. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/core/parseHTML.js +39 -0
  818. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/core/ready.js +152 -0
  819. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/core/var/rsingleTag.js +4 -0
  820. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/core.js +540 -0
  821. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/css/addGetHookIf.js +32 -0
  822. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/css/curCSS.js +124 -0
  823. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/css/defaultDisplay.js +69 -0
  824. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/css/hiddenVisibleSelectors.js +20 -0
  825. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/css/support.js +151 -0
  826. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/css/swap.js +28 -0
  827. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/css/var/cssExpand.js +3 -0
  828. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/css/var/isHidden.js +13 -0
  829. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/css/var/rmargin.js +3 -0
  830. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/css/var/rnumnonpx.js +5 -0
  831. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/css.js +504 -0
  832. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/data/accepts.js +21 -0
  833. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/data/support.js +25 -0
  834. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/data.js +335 -0
  835. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/deferred.js +150 -0
  836. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/deprecated.js +13 -0
  837. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/dimensions.js +50 -0
  838. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/effects/Tween.js +114 -0
  839. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/effects/animatedSelector.js +13 -0
  840. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/effects/support.js +55 -0
  841. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/effects.js +656 -0
  842. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/event/ajax.js +13 -0
  843. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/event/alias.js +39 -0
  844. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/event/support.js +26 -0
  845. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/event.js +1037 -0
  846. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/exports/amd.js +24 -0
  847. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/exports/global.js +32 -0
  848. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/intro.js +44 -0
  849. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/jquery.js +38 -0
  850. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/manipulation/_evalUrl.js +18 -0
  851. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/manipulation/support.js +76 -0
  852. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/manipulation/var/rcheckableType.js +3 -0
  853. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/manipulation.js +744 -0
  854. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/offset.js +211 -0
  855. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/outro.js +1 -0
  856. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/queue/delay.js +22 -0
  857. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/queue.js +142 -0
  858. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/selector-sizzle.js +14 -0
  859. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/selector.js +1 -0
  860. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/serialize.js +110 -0
  861. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/sizzle/dist/sizzle.js +2067 -0
  862. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/sizzle/dist/sizzle.min.js +3 -0
  863. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/sizzle/dist/sizzle.min.map +1 -0
  864. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/sizzle/test/data/empty.js +0 -0
  865. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/sizzle/test/data/mixed_sort.html +22 -0
  866. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/sizzle/test/data/testinit.js +136 -0
  867. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/sizzle/test/index.html +242 -0
  868. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/sizzle/test/jquery.js +9597 -0
  869. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/sizzle/test/unit/extending.js +95 -0
  870. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/sizzle/test/unit/selector.js +1149 -0
  871. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/sizzle/test/unit/utilities.js +169 -0
  872. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/support.js +58 -0
  873. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/traversing/findFilter.js +100 -0
  874. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/traversing/var/rneedsContext.js +6 -0
  875. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/traversing.js +200 -0
  876. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/var/class2type.js +4 -0
  877. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/var/concat.js +5 -0
  878. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/var/deletedIds.js +3 -0
  879. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/var/hasOwn.js +5 -0
  880. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/var/indexOf.js +5 -0
  881. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/var/pnum.js +3 -0
  882. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/var/push.js +5 -0
  883. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/var/rnotwhite.js +3 -0
  884. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/var/slice.js +5 -0
  885. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/var/strundefined.js +3 -0
  886. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/var/support.js +4 -0
  887. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/var/toString.js +5 -0
  888. data/app/assets/node_modules/jqvmap/node_modules/jquery/src/wrap.js +76 -0
  889. data/app/assets/node_modules/jqvmap/package.json +45 -0
  890. data/app/assets/node_modules/jqvmap/src/Base.js +80 -0
  891. data/app/assets/node_modules/jqvmap/src/ColorScale/arrayToRgb.js +9 -0
  892. data/app/assets/node_modules/jqvmap/src/ColorScale/getColor.js +41 -0
  893. data/app/assets/node_modules/jqvmap/src/ColorScale/rgbToArray.js +4 -0
  894. data/app/assets/node_modules/jqvmap/src/ColorScale/setColors.js +6 -0
  895. data/app/assets/node_modules/jqvmap/src/ColorScale/setMax.js +8 -0
  896. data/app/assets/node_modules/jqvmap/src/ColorScale/setMin.js +9 -0
  897. data/app/assets/node_modules/jqvmap/src/ColorScale/setNormalizeFunction.js +13 -0
  898. data/app/assets/node_modules/jqvmap/src/ColorScale/vectorAdd.js +7 -0
  899. data/app/assets/node_modules/jqvmap/src/ColorScale/vectorLength.js +7 -0
  900. data/app/assets/node_modules/jqvmap/src/ColorScale/vectorMult.js +7 -0
  901. data/app/assets/node_modules/jqvmap/src/ColorScale/vectorSubtract.js +7 -0
  902. data/app/assets/node_modules/jqvmap/src/ColorScale/vectorToNum.js +7 -0
  903. data/app/assets/node_modules/jqvmap/src/ColorScale.js +18 -0
  904. data/app/assets/node_modules/jqvmap/src/JQVMap/applyTransform.js +31 -0
  905. data/app/assets/node_modules/jqvmap/src/JQVMap/bindZoomButtons.js +9 -0
  906. data/app/assets/node_modules/jqvmap/src/JQVMap/deselect.js +18 -0
  907. data/app/assets/node_modules/jqvmap/src/JQVMap/getCountryId.js +3 -0
  908. data/app/assets/node_modules/jqvmap/src/JQVMap/getPin.js +4 -0
  909. data/app/assets/node_modules/jqvmap/src/JQVMap/getPinId.js +3 -0
  910. data/app/assets/node_modules/jqvmap/src/JQVMap/getPins.js +11 -0
  911. data/app/assets/node_modules/jqvmap/src/JQVMap/highlight.js +12 -0
  912. data/app/assets/node_modules/jqvmap/src/JQVMap/isSelected.js +3 -0
  913. data/app/assets/node_modules/jqvmap/src/JQVMap/makeDraggable.js +159 -0
  914. data/app/assets/node_modules/jqvmap/src/JQVMap/placePins.js +46 -0
  915. data/app/assets/node_modules/jqvmap/src/JQVMap/positionPins.js +19 -0
  916. data/app/assets/node_modules/jqvmap/src/JQVMap/removePin.js +4 -0
  917. data/app/assets/node_modules/jqvmap/src/JQVMap/removePins.js +3 -0
  918. data/app/assets/node_modules/jqvmap/src/JQVMap/reset.js +9 -0
  919. data/app/assets/node_modules/jqvmap/src/JQVMap/resize.js +13 -0
  920. data/app/assets/node_modules/jqvmap/src/JQVMap/select.js +18 -0
  921. data/app/assets/node_modules/jqvmap/src/JQVMap/selectIndex.js +9 -0
  922. data/app/assets/node_modules/jqvmap/src/JQVMap/setBackgroundColor.js +3 -0
  923. data/app/assets/node_modules/jqvmap/src/JQVMap/setColors.js +15 -0
  924. data/app/assets/node_modules/jqvmap/src/JQVMap/setNormalizeFunction.js +7 -0
  925. data/app/assets/node_modules/jqvmap/src/JQVMap/setScale.js +4 -0
  926. data/app/assets/node_modules/jqvmap/src/JQVMap/setScaleColors.js +7 -0
  927. data/app/assets/node_modules/jqvmap/src/JQVMap/setValues.js +36 -0
  928. data/app/assets/node_modules/jqvmap/src/JQVMap/unhighlight.js +8 -0
  929. data/app/assets/node_modules/jqvmap/src/JQVMap/zoomIn.js +17 -0
  930. data/app/assets/node_modules/jqvmap/src/JQVMap/zoomOut.js +17 -0
  931. data/app/assets/node_modules/jqvmap/src/JQVMap.js +243 -0
  932. data/app/assets/node_modules/jqvmap/src/VectorCanvas/applyTransformParams.js +8 -0
  933. data/app/assets/node_modules/jqvmap/src/VectorCanvas/createGroup.js +19 -0
  934. data/app/assets/node_modules/jqvmap/src/VectorCanvas/createPath.js +75 -0
  935. data/app/assets/node_modules/jqvmap/src/VectorCanvas/pathSvgToVml.js +103 -0
  936. data/app/assets/node_modules/jqvmap/src/VectorCanvas/setSize.js +24 -0
  937. data/app/assets/node_modules/jqvmap/src/VectorCanvas.js +42 -0
  938. data/app/assets/node_modules/jqvmap/tests/index.html +32 -0
  939. data/app/assets/node_modules/jqvmap/tests/qunit/qunit.css +291 -0
  940. data/app/assets/node_modules/jqvmap/tests/qunit/qunit.js +3828 -0
  941. data/app/assets/node_modules/jqvmap/tests/tests.js +422 -0
  942. data/app/assets/node_modules/metismenu/LICENSE +20 -0
  943. data/app/assets/node_modules/metismenu/README.md +361 -0
  944. data/app/assets/node_modules/metismenu/changelog.md +22 -0
  945. data/app/assets/node_modules/metismenu/dist/cjs/index.js +327 -0
  946. data/app/assets/node_modules/metismenu/dist/metisMenu.css +132 -0
  947. data/app/assets/node_modules/metismenu/dist/metisMenu.css.map +1 -0
  948. data/app/assets/node_modules/metismenu/dist/metisMenu.js +332 -0
  949. data/app/assets/node_modules/metismenu/dist/metisMenu.js.map +1 -0
  950. data/app/assets/node_modules/metismenu/dist/metisMenu.min.css +9 -0
  951. data/app/assets/node_modules/metismenu/dist/metisMenu.min.css.map +1 -0
  952. data/app/assets/node_modules/metismenu/dist/metisMenu.min.js +10 -0
  953. data/app/assets/node_modules/metismenu/dist/metisMenu.min.js.map +1 -0
  954. data/app/assets/node_modules/metismenu/dist/modules/index.js +323 -0
  955. data/app/assets/node_modules/metismenu/package.json +122 -0
  956. data/app/assets/node_modules/metismenu/src/index.js +260 -0
  957. data/app/assets/node_modules/metismenu/src/metisMenu.css +116 -0
  958. data/app/assets/node_modules/metismenu/src/util.js +61 -0
  959. data/app/assets/node_modules/metismenu/types/metismenu.d.ts +25 -0
  960. data/app/assets/node_modules/morris.js/Gruntfile.js +90 -0
  961. data/app/assets/node_modules/morris.js/README.md +234 -0
  962. data/app/assets/node_modules/morris.js/bower.json +20 -0
  963. data/app/assets/node_modules/morris.js/bower.travis.json +20 -0
  964. data/app/assets/node_modules/morris.js/examples/_template.html +18 -0
  965. data/app/assets/node_modules/morris.js/examples/area-as-line.html +31 -0
  966. data/app/assets/node_modules/morris.js/examples/area.html +34 -0
  967. data/app/assets/node_modules/morris.js/examples/bar-colors.html +44 -0
  968. data/app/assets/node_modules/morris.js/examples/bar-no-axes.html +31 -0
  969. data/app/assets/node_modules/morris.js/examples/bar.html +32 -0
  970. data/app/assets/node_modules/morris.js/examples/days.html +37 -0
  971. data/app/assets/node_modules/morris.js/examples/decimal-custom-hover.html +37 -0
  972. data/app/assets/node_modules/morris.js/examples/diagonal-xlabels-bar.html +38 -0
  973. data/app/assets/node_modules/morris.js/examples/diagonal-xlabels.html +38 -0
  974. data/app/assets/node_modules/morris.js/examples/donut-colors.html +38 -0
  975. data/app/assets/node_modules/morris.js/examples/donut-formatter.html +27 -0
  976. data/app/assets/node_modules/morris.js/examples/donut.html +29 -0
  977. data/app/assets/node_modules/morris.js/examples/dst.html +30 -0
  978. data/app/assets/node_modules/morris.js/examples/events.html +57 -0
  979. data/app/assets/node_modules/morris.js/examples/goals.html +33 -0
  980. data/app/assets/node_modules/morris.js/examples/lib/example.css +13 -0
  981. data/app/assets/node_modules/morris.js/examples/lib/example.js +4 -0
  982. data/app/assets/node_modules/morris.js/examples/months-no-smooth.html +38 -0
  983. data/app/assets/node_modules/morris.js/examples/negative.html +36 -0
  984. data/app/assets/node_modules/morris.js/examples/no-grid.html +38 -0
  985. data/app/assets/node_modules/morris.js/examples/non-continuous.html +42 -0
  986. data/app/assets/node_modules/morris.js/examples/non-date.html +37 -0
  987. data/app/assets/node_modules/morris.js/examples/quarters.html +54 -0
  988. data/app/assets/node_modules/morris.js/examples/resize.html +42 -0
  989. data/app/assets/node_modules/morris.js/examples/stacked_bars.html +31 -0
  990. data/app/assets/node_modules/morris.js/examples/timestamps.html +38 -0
  991. data/app/assets/node_modules/morris.js/examples/updating.html +49 -0
  992. data/app/assets/node_modules/morris.js/examples/weeks.html +53 -0
  993. data/app/assets/node_modules/morris.js/examples/years.html +37 -0
  994. data/app/assets/node_modules/morris.js/less/morris.core.less +27 -0
  995. data/app/assets/node_modules/morris.js/lib/morris.area.coffee +66 -0
  996. data/app/assets/node_modules/morris.js/lib/morris.bar.coffee +208 -0
  997. data/app/assets/node_modules/morris.js/lib/morris.coffee +43 -0
  998. data/app/assets/node_modules/morris.js/lib/morris.donut.coffee +213 -0
  999. data/app/assets/node_modules/morris.js/lib/morris.grid.coffee +499 -0
  1000. data/app/assets/node_modules/morris.js/lib/morris.hover.coffee +44 -0
  1001. data/app/assets/node_modules/morris.js/lib/morris.line.coffee +405 -0
  1002. data/app/assets/node_modules/morris.js/morris.css +2 -0
  1003. data/app/assets/node_modules/morris.js/morris.js +1892 -0
  1004. data/app/assets/node_modules/morris.js/morris.min.js +7 -0
  1005. data/app/assets/node_modules/morris.js/package.json +36 -0
  1006. data/app/assets/node_modules/morris.js/spec/lib/area/area_spec.coffee +60 -0
  1007. data/app/assets/node_modules/morris.js/spec/lib/bar/bar_spec.coffee +127 -0
  1008. data/app/assets/node_modules/morris.js/spec/lib/bar/colours.coffee +36 -0
  1009. data/app/assets/node_modules/morris.js/spec/lib/commas_spec.coffee +38 -0
  1010. data/app/assets/node_modules/morris.js/spec/lib/donut/donut_spec.coffee +76 -0
  1011. data/app/assets/node_modules/morris.js/spec/lib/grid/auto_grid_lines_spec.coffee +25 -0
  1012. data/app/assets/node_modules/morris.js/spec/lib/grid/set_data_spec.coffee +208 -0
  1013. data/app/assets/node_modules/morris.js/spec/lib/grid/y_label_format_spec.coffee +15 -0
  1014. data/app/assets/node_modules/morris.js/spec/lib/hover_spec.coffee +64 -0
  1015. data/app/assets/node_modules/morris.js/spec/lib/label_series_spec.coffee +186 -0
  1016. data/app/assets/node_modules/morris.js/spec/lib/line/line_spec.coffee +211 -0
  1017. data/app/assets/node_modules/morris.js/spec/lib/pad_spec.coffee +17 -0
  1018. data/app/assets/node_modules/morris.js/spec/lib/parse_time_spec.coffee +35 -0
  1019. data/app/assets/node_modules/morris.js/spec/specs.html +34 -0
  1020. data/app/assets/node_modules/morris.js/spec/support/placeholder.coffee +6 -0
  1021. data/app/assets/node_modules/morris.js/spec/viz/examples.js +56 -0
  1022. data/app/assets/node_modules/morris.js/spec/viz/exemplary/area0.png +0 -0
  1023. data/app/assets/node_modules/morris.js/spec/viz/exemplary/bar0.png +0 -0
  1024. data/app/assets/node_modules/morris.js/spec/viz/exemplary/line0.png +0 -0
  1025. data/app/assets/node_modules/morris.js/spec/viz/exemplary/stacked_bar0.png +0 -0
  1026. data/app/assets/node_modules/morris.js/spec/viz/run.sh +32 -0
  1027. data/app/assets/node_modules/morris.js/spec/viz/test.html +34 -0
  1028. data/app/assets/node_modules/morris.js/spec/viz/visual_specs.js +66 -0
  1029. data/app/assets/node_modules/nprogress/History.md +110 -0
  1030. data/app/assets/node_modules/nprogress/License.md +19 -0
  1031. data/app/assets/node_modules/nprogress/Notes.md +25 -0
  1032. data/app/assets/node_modules/nprogress/Readme.md +197 -0
  1033. data/app/assets/node_modules/nprogress/bower.json +27 -0
  1034. data/app/assets/node_modules/nprogress/component.json +19 -0
  1035. data/app/assets/node_modules/nprogress/nprogress.css +74 -0
  1036. data/app/assets/node_modules/nprogress/nprogress.js +476 -0
  1037. data/app/assets/node_modules/nprogress/package.json +47 -0
  1038. data/app/assets/node_modules/nprogress/test/component.html +26 -0
  1039. data/app/assets/node_modules/nprogress/test/test.js +175 -0
  1040. data/app/assets/node_modules/parchment/LICENSE +29 -0
  1041. data/app/assets/node_modules/parchment/README.md +274 -0
  1042. data/app/assets/node_modules/parchment/dist/parchment.js +1749 -0
  1043. data/app/assets/node_modules/parchment/dist/parchment.js.map +1 -0
  1044. data/app/assets/node_modules/parchment/dist/src/attributor/attributor.d.ts +17 -0
  1045. data/app/assets/node_modules/parchment/dist/src/attributor/class.d.ts +8 -0
  1046. data/app/assets/node_modules/parchment/dist/src/attributor/store.d.ts +15 -0
  1047. data/app/assets/node_modules/parchment/dist/src/attributor/style.d.ts +8 -0
  1048. data/app/assets/node_modules/parchment/dist/src/blot/abstract/blot.d.ts +63 -0
  1049. data/app/assets/node_modules/parchment/dist/src/blot/abstract/container.d.ts +40 -0
  1050. data/app/assets/node_modules/parchment/dist/src/blot/abstract/format.d.ts +18 -0
  1051. data/app/assets/node_modules/parchment/dist/src/blot/abstract/leaf.d.ts +11 -0
  1052. data/app/assets/node_modules/parchment/dist/src/blot/abstract/parent.d.ts +41 -0
  1053. data/app/assets/node_modules/parchment/dist/src/blot/abstract/shadow.d.ts +38 -0
  1054. data/app/assets/node_modules/parchment/dist/src/blot/block.d.ts +15 -0
  1055. data/app/assets/node_modules/parchment/dist/src/blot/embed.d.ts +11 -0
  1056. data/app/assets/node_modules/parchment/dist/src/blot/inline.d.ts +14 -0
  1057. data/app/assets/node_modules/parchment/dist/src/blot/scroll.d.ts +24 -0
  1058. data/app/assets/node_modules/parchment/dist/src/blot/text.d.ts +26 -0
  1059. data/app/assets/node_modules/parchment/dist/src/collection/linked-list.d.ts +19 -0
  1060. data/app/assets/node_modules/parchment/dist/src/collection/linked-node.d.ts +6 -0
  1061. data/app/assets/node_modules/parchment/dist/src/parchment.d.ts +35 -0
  1062. data/app/assets/node_modules/parchment/dist/src/registry.d.ts +31 -0
  1063. data/app/assets/node_modules/parchment/package.json +44 -0
  1064. data/app/assets/node_modules/parchment/src/attributor/attributor.ts +61 -0
  1065. data/app/assets/node_modules/parchment/src/attributor/class.ts +44 -0
  1066. data/app/assets/node_modules/parchment/src/attributor/store.ts +73 -0
  1067. data/app/assets/node_modules/parchment/src/attributor/style.ts +44 -0
  1068. data/app/assets/node_modules/parchment/src/blot/abstract/blot.ts +58 -0
  1069. data/app/assets/node_modules/parchment/src/blot/abstract/container.ts +268 -0
  1070. data/app/assets/node_modules/parchment/src/blot/abstract/format.ts +71 -0
  1071. data/app/assets/node_modules/parchment/src/blot/abstract/leaf.ts +33 -0
  1072. data/app/assets/node_modules/parchment/src/blot/abstract/shadow.ts +174 -0
  1073. data/app/assets/node_modules/parchment/src/blot/block.ts +53 -0
  1074. data/app/assets/node_modules/parchment/src/blot/embed.ts +29 -0
  1075. data/app/assets/node_modules/parchment/src/blot/inline.ts +64 -0
  1076. data/app/assets/node_modules/parchment/src/blot/scroll.ts +166 -0
  1077. data/app/assets/node_modules/parchment/src/blot/text.ts +93 -0
  1078. data/app/assets/node_modules/parchment/src/collection/linked-list.ts +143 -0
  1079. data/app/assets/node_modules/parchment/src/collection/linked-node.ts +8 -0
  1080. data/app/assets/node_modules/parchment/src/parchment.ts +46 -0
  1081. data/app/assets/node_modules/parchment/src/registry.ts +133 -0
  1082. data/app/assets/node_modules/parchment/tsconfig.json +9 -0
  1083. data/app/assets/node_modules/popper.js/README.md +219 -0
  1084. data/app/assets/node_modules/popper.js/dist/esm/popper-utils.js +1093 -0
  1085. data/app/assets/node_modules/popper.js/dist/esm/popper-utils.js.map +1 -0
  1086. data/app/assets/node_modules/popper.js/dist/esm/popper-utils.min.js +5 -0
  1087. data/app/assets/node_modules/popper.js/dist/esm/popper-utils.min.js.map +1 -0
  1088. data/app/assets/node_modules/popper.js/dist/esm/popper.js +2520 -0
  1089. data/app/assets/node_modules/popper.js/dist/esm/popper.js.map +1 -0
  1090. data/app/assets/node_modules/popper.js/dist/esm/popper.min.js +5 -0
  1091. data/app/assets/node_modules/popper.js/dist/esm/popper.min.js.map +1 -0
  1092. data/app/assets/node_modules/popper.js/dist/popper-utils.js +1042 -0
  1093. data/app/assets/node_modules/popper.js/dist/popper-utils.js.map +1 -0
  1094. data/app/assets/node_modules/popper.js/dist/popper-utils.min.js +5 -0
  1095. data/app/assets/node_modules/popper.js/dist/popper-utils.min.js.map +1 -0
  1096. data/app/assets/node_modules/popper.js/dist/popper.js +2372 -0
  1097. data/app/assets/node_modules/popper.js/dist/popper.js.map +1 -0
  1098. data/app/assets/node_modules/popper.js/dist/popper.min.js +5 -0
  1099. data/app/assets/node_modules/popper.js/dist/popper.min.js.map +1 -0
  1100. data/app/assets/node_modules/popper.js/dist/umd/popper-utils.js +1131 -0
  1101. data/app/assets/node_modules/popper.js/dist/umd/popper-utils.js.map +1 -0
  1102. data/app/assets/node_modules/popper.js/dist/umd/popper-utils.min.js +5 -0
  1103. data/app/assets/node_modules/popper.js/dist/umd/popper-utils.min.js.map +1 -0
  1104. data/app/assets/node_modules/popper.js/dist/umd/popper.js +2528 -0
  1105. data/app/assets/node_modules/popper.js/dist/umd/popper.js.map +1 -0
  1106. data/app/assets/node_modules/popper.js/dist/umd/popper.min.js +5 -0
  1107. data/app/assets/node_modules/popper.js/dist/umd/popper.min.js.map +1 -0
  1108. data/app/assets/node_modules/popper.js/index.d.ts +159 -0
  1109. data/app/assets/node_modules/popper.js/package.json +54 -0
  1110. data/app/assets/node_modules/quill/CHANGELOG.md +734 -0
  1111. data/app/assets/node_modules/quill/LICENSE +30 -0
  1112. data/app/assets/node_modules/quill/README.md +109 -0
  1113. data/app/assets/node_modules/quill/assets/base.styl +304 -0
  1114. data/app/assets/node_modules/quill/assets/bubble/toolbar.styl +14 -0
  1115. data/app/assets/node_modules/quill/assets/bubble/tooltip.styl +49 -0
  1116. data/app/assets/node_modules/quill/assets/bubble.styl +45 -0
  1117. data/app/assets/node_modules/quill/assets/core.styl +183 -0
  1118. data/app/assets/node_modules/quill/assets/favicon.png +0 -0
  1119. data/app/assets/node_modules/quill/assets/icons/align-center.svg +5 -0
  1120. data/app/assets/node_modules/quill/assets/icons/align-justify.svg +5 -0
  1121. data/app/assets/node_modules/quill/assets/icons/align-left.svg +5 -0
  1122. data/app/assets/node_modules/quill/assets/icons/align-right.svg +5 -0
  1123. data/app/assets/node_modules/quill/assets/icons/attachment.svg +3 -0
  1124. data/app/assets/node_modules/quill/assets/icons/audio.svg +5 -0
  1125. data/app/assets/node_modules/quill/assets/icons/authorship.svg +5 -0
  1126. data/app/assets/node_modules/quill/assets/icons/background.svg +52 -0
  1127. data/app/assets/node_modules/quill/assets/icons/blockquote.svg +6 -0
  1128. data/app/assets/node_modules/quill/assets/icons/bold.svg +4 -0
  1129. data/app/assets/node_modules/quill/assets/icons/clean.svg +7 -0
  1130. data/app/assets/node_modules/quill/assets/icons/code.svg +5 -0
  1131. data/app/assets/node_modules/quill/assets/icons/color.svg +5 -0
  1132. data/app/assets/node_modules/quill/assets/icons/comment.svg +3 -0
  1133. data/app/assets/node_modules/quill/assets/icons/direction-ltr.svg +7 -0
  1134. data/app/assets/node_modules/quill/assets/icons/direction-rtl.svg +7 -0
  1135. data/app/assets/node_modules/quill/assets/icons/dropdown.svg +4 -0
  1136. data/app/assets/node_modules/quill/assets/icons/embed.svg +3 -0
  1137. data/app/assets/node_modules/quill/assets/icons/emoji.svg +6 -0
  1138. data/app/assets/node_modules/quill/assets/icons/float-center.svg +5 -0
  1139. data/app/assets/node_modules/quill/assets/icons/float-full.svg +5 -0
  1140. data/app/assets/node_modules/quill/assets/icons/float-left.svg +7 -0
  1141. data/app/assets/node_modules/quill/assets/icons/float-right.svg +7 -0
  1142. data/app/assets/node_modules/quill/assets/icons/font.svg +5 -0
  1143. data/app/assets/node_modules/quill/assets/icons/formula.svg +5 -0
  1144. data/app/assets/node_modules/quill/assets/icons/hashtag.svg +6 -0
  1145. data/app/assets/node_modules/quill/assets/icons/header-2.svg +3 -0
  1146. data/app/assets/node_modules/quill/assets/icons/header-3.svg +3 -0
  1147. data/app/assets/node_modules/quill/assets/icons/header-4.svg +3 -0
  1148. data/app/assets/node_modules/quill/assets/icons/header-5.svg +3 -0
  1149. data/app/assets/node_modules/quill/assets/icons/header-6.svg +3 -0
  1150. data/app/assets/node_modules/quill/assets/icons/header.svg +3 -0
  1151. data/app/assets/node_modules/quill/assets/icons/horizontal-rule.svg +4 -0
  1152. data/app/assets/node_modules/quill/assets/icons/image.svg +5 -0
  1153. data/app/assets/node_modules/quill/assets/icons/indent.svg +6 -0
  1154. data/app/assets/node_modules/quill/assets/icons/italic.svg +5 -0
  1155. data/app/assets/node_modules/quill/assets/icons/link.svg +5 -0
  1156. data/app/assets/node_modules/quill/assets/icons/list-bullet.svg +8 -0
  1157. data/app/assets/node_modules/quill/assets/icons/list-check.svg +8 -0
  1158. data/app/assets/node_modules/quill/assets/icons/list-ordered.svg +9 -0
  1159. data/app/assets/node_modules/quill/assets/icons/map.svg +5 -0
  1160. data/app/assets/node_modules/quill/assets/icons/mention.svg +4 -0
  1161. data/app/assets/node_modules/quill/assets/icons/more.svg +3 -0
  1162. data/app/assets/node_modules/quill/assets/icons/outdent.svg +6 -0
  1163. data/app/assets/node_modules/quill/assets/icons/redo.svg +4 -0
  1164. data/app/assets/node_modules/quill/assets/icons/size-decrease.svg +5 -0
  1165. data/app/assets/node_modules/quill/assets/icons/size-increase.svg +6 -0
  1166. data/app/assets/node_modules/quill/assets/icons/size.svg +6 -0
  1167. data/app/assets/node_modules/quill/assets/icons/spacing.svg +9 -0
  1168. data/app/assets/node_modules/quill/assets/icons/speech.svg +6 -0
  1169. data/app/assets/node_modules/quill/assets/icons/strike.svg +5 -0
  1170. data/app/assets/node_modules/quill/assets/icons/subscript.svg +4 -0
  1171. data/app/assets/node_modules/quill/assets/icons/superscript.svg +4 -0
  1172. data/app/assets/node_modules/quill/assets/icons/table-border-all.svg +5 -0
  1173. data/app/assets/node_modules/quill/assets/icons/table-border-bottom.svg +28 -0
  1174. data/app/assets/node_modules/quill/assets/icons/table-border-left.svg +28 -0
  1175. data/app/assets/node_modules/quill/assets/icons/table-border-none.svg +25 -0
  1176. data/app/assets/node_modules/quill/assets/icons/table-border-outside.svg +35 -0
  1177. data/app/assets/node_modules/quill/assets/icons/table-border-right.svg +28 -0
  1178. data/app/assets/node_modules/quill/assets/icons/table-border-top.svg +28 -0
  1179. data/app/assets/node_modules/quill/assets/icons/table-delete-cells.svg +13 -0
  1180. data/app/assets/node_modules/quill/assets/icons/table-delete-columns.svg +8 -0
  1181. data/app/assets/node_modules/quill/assets/icons/table-delete-rows.svg +9 -0
  1182. data/app/assets/node_modules/quill/assets/icons/table-insert-cells.svg +13 -0
  1183. data/app/assets/node_modules/quill/assets/icons/table-insert-columns.svg +8 -0
  1184. data/app/assets/node_modules/quill/assets/icons/table-insert-rows.svg +9 -0
  1185. data/app/assets/node_modules/quill/assets/icons/table-merge-cells.svg +4 -0
  1186. data/app/assets/node_modules/quill/assets/icons/table-unmerge-cells.svg +7 -0
  1187. data/app/assets/node_modules/quill/assets/icons/table.svg +11 -0
  1188. data/app/assets/node_modules/quill/assets/icons/underline.svg +4 -0
  1189. data/app/assets/node_modules/quill/assets/icons/undo.svg +4 -0
  1190. data/app/assets/node_modules/quill/assets/icons/video.svg +14 -0
  1191. data/app/assets/node_modules/quill/assets/snow/toolbar.styl +26 -0
  1192. data/app/assets/node_modules/quill/assets/snow/tooltip.styl +53 -0
  1193. data/app/assets/node_modules/quill/assets/snow.styl +18 -0
  1194. data/app/assets/node_modules/quill/blots/block.js +174 -0
  1195. data/app/assets/node_modules/quill/blots/break.js +29 -0
  1196. data/app/assets/node_modules/quill/blots/container.js +9 -0
  1197. data/app/assets/node_modules/quill/blots/cursor.js +116 -0
  1198. data/app/assets/node_modules/quill/blots/embed.js +79 -0
  1199. data/app/assets/node_modules/quill/blots/inline.js +50 -0
  1200. data/app/assets/node_modules/quill/blots/scroll.js +173 -0
  1201. data/app/assets/node_modules/quill/blots/text.js +5 -0
  1202. data/app/assets/node_modules/quill/core/editor.js +267 -0
  1203. data/app/assets/node_modules/quill/core/emitter.js +63 -0
  1204. data/app/assets/node_modules/quill/core/logger.js +22 -0
  1205. data/app/assets/node_modules/quill/core/module.js +10 -0
  1206. data/app/assets/node_modules/quill/core/polyfill.js +63 -0
  1207. data/app/assets/node_modules/quill/core/quill.js +506 -0
  1208. data/app/assets/node_modules/quill/core/selection.js +355 -0
  1209. data/app/assets/node_modules/quill/core/theme.js +30 -0
  1210. data/app/assets/node_modules/quill/core.js +36 -0
  1211. data/app/assets/node_modules/quill/dist/quill.bubble.css +952 -0
  1212. data/app/assets/node_modules/quill/dist/quill.core.css +397 -0
  1213. data/app/assets/node_modules/quill/dist/quill.core.js +8522 -0
  1214. data/app/assets/node_modules/quill/dist/quill.js +11489 -0
  1215. data/app/assets/node_modules/quill/dist/quill.min.js +8 -0
  1216. data/app/assets/node_modules/quill/dist/quill.min.js.map +1 -0
  1217. data/app/assets/node_modules/quill/dist/quill.snow.css +945 -0
  1218. data/app/assets/node_modules/quill/formats/align.js +12 -0
  1219. data/app/assets/node_modules/quill/formats/background.js +11 -0
  1220. data/app/assets/node_modules/quill/formats/blockquote.js +9 -0
  1221. data/app/assets/node_modules/quill/formats/bold.js +22 -0
  1222. data/app/assets/node_modules/quill/formats/code.js +118 -0
  1223. data/app/assets/node_modules/quill/formats/color.js +21 -0
  1224. data/app/assets/node_modules/quill/formats/direction.js +12 -0
  1225. data/app/assets/node_modules/quill/formats/font.js +18 -0
  1226. data/app/assets/node_modules/quill/formats/header.js +13 -0
  1227. data/app/assets/node_modules/quill/formats/image.js +57 -0
  1228. data/app/assets/node_modules/quill/formats/indent.js +31 -0
  1229. data/app/assets/node_modules/quill/formats/italic.js +7 -0
  1230. data/app/assets/node_modules/quill/formats/link.js +41 -0
  1231. data/app/assets/node_modules/quill/formats/list.js +130 -0
  1232. data/app/assets/node_modules/quill/formats/script.js +23 -0
  1233. data/app/assets/node_modules/quill/formats/size.js +12 -0
  1234. data/app/assets/node_modules/quill/formats/strike.js +7 -0
  1235. data/app/assets/node_modules/quill/formats/underline.js +7 -0
  1236. data/app/assets/node_modules/quill/formats/video.js +53 -0
  1237. data/app/assets/node_modules/quill/modules/clipboard.js +358 -0
  1238. data/app/assets/node_modules/quill/modules/formula.js +42 -0
  1239. data/app/assets/node_modules/quill/modules/history.js +120 -0
  1240. data/app/assets/node_modules/quill/modules/keyboard.js +494 -0
  1241. data/app/assets/node_modules/quill/modules/syntax.js +81 -0
  1242. data/app/assets/node_modules/quill/modules/toolbar.js +261 -0
  1243. data/app/assets/node_modules/quill/package.json +99 -0
  1244. data/app/assets/node_modules/quill/quill.js +104 -0
  1245. data/app/assets/node_modules/quill/themes/base.js +264 -0
  1246. data/app/assets/node_modules/quill/themes/bubble.js +111 -0
  1247. data/app/assets/node_modules/quill/themes/snow.js +120 -0
  1248. data/app/assets/node_modules/quill/ui/color-picker.js +35 -0
  1249. data/app/assets/node_modules/quill/ui/icon-picker.js +23 -0
  1250. data/app/assets/node_modules/quill/ui/icons.js +49 -0
  1251. data/app/assets/node_modules/quill/ui/picker.js +186 -0
  1252. data/app/assets/node_modules/quill/ui/tooltip.js +53 -0
  1253. data/app/assets/node_modules/quill-delta/CHANGELOG.md +48 -0
  1254. data/app/assets/node_modules/quill-delta/LICENSE +21 -0
  1255. data/app/assets/node_modules/quill-delta/README.md +639 -0
  1256. data/app/assets/node_modules/quill-delta/lib/delta.js +325 -0
  1257. data/app/assets/node_modules/quill-delta/lib/op.js +139 -0
  1258. data/app/assets/node_modules/quill-delta/package.json +40 -0
  1259. data/app/assets/node_modules/raphael/CONTRIBUTING.md +22 -0
  1260. data/app/assets/node_modules/raphael/Gruntfile.js +72 -0
  1261. data/app/assets/node_modules/raphael/README.md +75 -0
  1262. data/app/assets/node_modules/raphael/bower.json +31 -0
  1263. data/app/assets/node_modules/raphael/dev/banner.txt +8 -0
  1264. data/app/assets/node_modules/raphael/dev/raphael.amd.js +5 -0
  1265. data/app/assets/node_modules/raphael/dev/raphael.core.js +5405 -0
  1266. data/app/assets/node_modules/raphael/dev/raphael.svg.js +1424 -0
  1267. data/app/assets/node_modules/raphael/dev/raphael.vml.js +999 -0
  1268. data/app/assets/node_modules/raphael/dev/raphaelTest.html +39 -0
  1269. data/app/assets/node_modules/raphael/dev/test/index.html +31 -0
  1270. data/app/assets/node_modules/raphael/dev/test/svg/dom.js +317 -0
  1271. data/app/assets/node_modules/raphael/dev/test/vml/dom.js +5 -0
  1272. data/app/assets/node_modules/raphael/history.md +155 -0
  1273. data/app/assets/node_modules/raphael/license.txt +21 -0
  1274. data/app/assets/node_modules/raphael/package.json +47 -0
  1275. data/app/assets/node_modules/raphael/raphael.js +8353 -0
  1276. data/app/assets/node_modules/raphael/raphael.min.js +3 -0
  1277. data/app/assets/node_modules/raphael/raphael.no-deps.js +7927 -0
  1278. data/app/assets/node_modules/raphael/raphael.no-deps.min.js +3 -0
  1279. data/app/assets/node_modules/raphael/webpack.config.js +64 -0
  1280. data/app/assets/node_modules/raphael/yarn.lock +2012 -0
  1281. data/app/assets/node_modules/responsive-toolkit/CHANGELOG.md +70 -0
  1282. data/app/assets/node_modules/responsive-toolkit/LICENSE +21 -0
  1283. data/app/assets/node_modules/responsive-toolkit/README.md +155 -0
  1284. data/app/assets/node_modules/responsive-toolkit/bower.json +22 -0
  1285. data/app/assets/node_modules/responsive-toolkit/demos/bootstrap/index.html +53 -0
  1286. data/app/assets/node_modules/responsive-toolkit/demos/bootstrap/main.js +42 -0
  1287. data/app/assets/node_modules/responsive-toolkit/demos/bootstrap/style.css +109 -0
  1288. data/app/assets/node_modules/responsive-toolkit/demos/custom/index.html +23 -0
  1289. data/app/assets/node_modules/responsive-toolkit/demos/custom/main.js +36 -0
  1290. data/app/assets/node_modules/responsive-toolkit/demos/custom/style.css +19 -0
  1291. data/app/assets/node_modules/responsive-toolkit/demos/foundation/index.html +25 -0
  1292. data/app/assets/node_modules/responsive-toolkit/demos/foundation/main.js +28 -0
  1293. data/app/assets/node_modules/responsive-toolkit/demos/foundation/style.css +3 -0
  1294. data/app/assets/node_modules/responsive-toolkit/dist/bootstrap-toolkit-1.5.0.js +49 -0
  1295. data/app/assets/node_modules/responsive-toolkit/dist/bootstrap-toolkit-1.5.0.min.js +8 -0
  1296. data/app/assets/node_modules/responsive-toolkit/dist/bootstrap-toolkit.js +238 -0
  1297. data/app/assets/node_modules/responsive-toolkit/dist/bootstrap-toolkit.min.js +8 -0
  1298. data/app/assets/node_modules/responsive-toolkit/gulpfile.js +38 -0
  1299. data/app/assets/node_modules/responsive-toolkit/package.json +28 -0
  1300. data/app/assets/node_modules/responsive-toolkit/src/bootstrap-toolkit.js +238 -0
  1301. data/app/assets/node_modules/sortablejs/README.md +636 -0
  1302. data/app/assets/node_modules/sortablejs/Sortable.js +1540 -0
  1303. data/app/assets/node_modules/sortablejs/Sortable.min.js +2 -0
  1304. data/app/assets/node_modules/sortablejs/package.json +48 -0
  1305. data/app/assets/node_modules/tether/CHANGELOG.md +13 -0
  1306. data/app/assets/node_modules/tether/CONTRIBUTING.md +59 -0
  1307. data/app/assets/node_modules/tether/LICENSE +8 -0
  1308. data/app/assets/node_modules/tether/README.md +116 -0
  1309. data/app/assets/node_modules/tether/bower.json +26 -0
  1310. data/app/assets/node_modules/tether/component.json +22 -0
  1311. data/app/assets/node_modules/tether/dist/css/tether-theme-arrows-dark.css +150 -0
  1312. data/app/assets/node_modules/tether/dist/css/tether-theme-arrows-dark.min.css +1 -0
  1313. data/app/assets/node_modules/tether/dist/css/tether-theme-arrows.css +153 -0
  1314. data/app/assets/node_modules/tether/dist/css/tether-theme-arrows.min.css +1 -0
  1315. data/app/assets/node_modules/tether/dist/css/tether-theme-basic.css +21 -0
  1316. data/app/assets/node_modules/tether/dist/css/tether-theme-basic.min.css +1 -0
  1317. data/app/assets/node_modules/tether/dist/css/tether.css +8 -0
  1318. data/app/assets/node_modules/tether/dist/css/tether.min.css +1 -0
  1319. data/app/assets/node_modules/tether/dist/js/tether.js +1813 -0
  1320. data/app/assets/node_modules/tether/dist/js/tether.min.js +1 -0
  1321. data/app/assets/node_modules/tether/docs/1-Overview/1-why_you_should_use_tether.md +43 -0
  1322. data/app/assets/node_modules/tether/docs/1-Overview/2-repositioning.md +46 -0
  1323. data/app/assets/node_modules/tether/docs/1-Overview/3-why_we_dont_support_IE_8.md +47 -0
  1324. data/app/assets/node_modules/tether/docs/2-Examples/1-list_of_examples.md +27 -0
  1325. data/app/assets/node_modules/tether/docs/2-Examples/2-projects_using_tether.md +45 -0
  1326. data/app/assets/node_modules/tether/docs/3-Advanced/1-embedding_tether.md +9 -0
  1327. data/app/assets/node_modules/tether/docs/3-Advanced/2-extending_tether.md +54 -0
  1328. data/app/assets/node_modules/tether/docs/coffee/intro.coffee +113 -0
  1329. data/app/assets/node_modules/tether/docs/css/intro.css +218 -0
  1330. data/app/assets/node_modules/tether/docs/intro.md +591 -0
  1331. data/app/assets/node_modules/tether/docs/js/intro.js +117 -0
  1332. data/app/assets/node_modules/tether/docs/js/markAttachment.js +51 -0
  1333. data/app/assets/node_modules/tether/docs/sass/intro.sass +233 -0
  1334. data/app/assets/node_modules/tether/docs/welcome/browser-demo.html +76 -0
  1335. data/app/assets/node_modules/tether/docs/welcome/coffee/welcome.coffee +212 -0
  1336. data/app/assets/node_modules/tether/docs/welcome/css/browser-demo.css +86 -0
  1337. data/app/assets/node_modules/tether/docs/welcome/css/prism.css +2 -0
  1338. data/app/assets/node_modules/tether/docs/welcome/css/welcome.css +247 -0
  1339. data/app/assets/node_modules/tether/docs/welcome/index.html +226 -0
  1340. data/app/assets/node_modules/tether/docs/welcome/js/drop.js +239 -0
  1341. data/app/assets/node_modules/tether/docs/welcome/js/jquery.js +9597 -0
  1342. data/app/assets/node_modules/tether/docs/welcome/js/log.js +134 -0
  1343. data/app/assets/node_modules/tether/docs/welcome/js/tether-v0.1.3.js +2 -0
  1344. data/app/assets/node_modules/tether/docs/welcome/js/welcome.js +193 -0
  1345. data/app/assets/node_modules/tether/docs/welcome/sass/_inline-block.sass +6 -0
  1346. data/app/assets/node_modules/tether/docs/welcome/sass/browser-demo.sass +93 -0
  1347. data/app/assets/node_modules/tether/docs/welcome/sass/welcome.sass +285 -0
  1348. data/app/assets/node_modules/tether/examples/chosen/chosen-sprite.png +0 -0
  1349. data/app/assets/node_modules/tether/examples/chosen/chosen-sprite@2x.png +0 -0
  1350. data/app/assets/node_modules/tether/examples/chosen/chosen.css +430 -0
  1351. data/app/assets/node_modules/tether/examples/chosen/chosen.js +1166 -0
  1352. data/app/assets/node_modules/tether/examples/chosen/index.html +110 -0
  1353. data/app/assets/node_modules/tether/examples/common/css/style.css +48 -0
  1354. data/app/assets/node_modules/tether/examples/content-visible/index.html +64 -0
  1355. data/app/assets/node_modules/tether/examples/dolls/dolls.css +18 -0
  1356. data/app/assets/node_modules/tether/examples/dolls/dolls.js +83 -0
  1357. data/app/assets/node_modules/tether/examples/dolls/index.html +7 -0
  1358. data/app/assets/node_modules/tether/examples/element-scroll/index.html +499 -0
  1359. data/app/assets/node_modules/tether/examples/enable-disable/index.html +37 -0
  1360. data/app/assets/node_modules/tether/examples/facebook/facebook.css +86 -0
  1361. data/app/assets/node_modules/tether/examples/facebook/index.html +209 -0
  1362. data/app/assets/node_modules/tether/examples/out-of-bounds/index.html +38 -0
  1363. data/app/assets/node_modules/tether/examples/pin/index.html +30 -0
  1364. data/app/assets/node_modules/tether/examples/resources/css/base.css +10 -0
  1365. data/app/assets/node_modules/tether/examples/resources/js/jquery.js +9597 -0
  1366. data/app/assets/node_modules/tether/examples/resources/js/log.js +134 -0
  1367. data/app/assets/node_modules/tether/examples/scroll/index.html +922 -0
  1368. data/app/assets/node_modules/tether/examples/simple/index.html +30 -0
  1369. data/app/assets/node_modules/tether/examples/testbed/index.html +36 -0
  1370. data/app/assets/node_modules/tether/examples/tooltip/index.html +86 -0
  1371. data/app/assets/node_modules/tether/examples/viewport/colors.css +145 -0
  1372. data/app/assets/node_modules/tether/examples/viewport/index.html +70 -0
  1373. data/app/assets/node_modules/tether/gulpfile.js +97 -0
  1374. data/app/assets/node_modules/tether/package.json +40 -0
  1375. data/app/assets/node_modules/tether/src/css/helpers/_tether-theme-arrows.sass +192 -0
  1376. data/app/assets/node_modules/tether/src/css/helpers/_tether-theme-basic.sass +14 -0
  1377. data/app/assets/node_modules/tether/src/css/helpers/_tether.sass +12 -0
  1378. data/app/assets/node_modules/tether/src/css/mixins/_inline-block.sass +6 -0
  1379. data/app/assets/node_modules/tether/src/css/mixins/_pie-clearfix.sass +7 -0
  1380. data/app/assets/node_modules/tether/src/css/tether-theme-arrows-dark.sass +12 -0
  1381. data/app/assets/node_modules/tether/src/css/tether-theme-arrows.sass +12 -0
  1382. data/app/assets/node_modules/tether/src/css/tether-theme-basic.sass +10 -0
  1383. data/app/assets/node_modules/tether/src/css/tether.sass +5 -0
  1384. data/app/assets/node_modules/tether/src/js/abutment.js +61 -0
  1385. data/app/assets/node_modules/tether/src/js/constraint.js +366 -0
  1386. data/app/assets/node_modules/tether/src/js/markAttachment.js +46 -0
  1387. data/app/assets/node_modules/tether/src/js/shift.js +32 -0
  1388. data/app/assets/node_modules/tether/src/js/tether.js +811 -0
  1389. data/app/assets/node_modules/tether/src/js/utils.js +370 -0
  1390. data/app/assets/node_modules/tinycolor2/Gruntfile.js +59 -0
  1391. data/app/assets/node_modules/tinycolor2/LICENSE +20 -0
  1392. data/app/assets/node_modules/tinycolor2/README.md +469 -0
  1393. data/app/assets/node_modules/tinycolor2/bower.json +9 -0
  1394. data/app/assets/node_modules/tinycolor2/demo/demo.css +23 -0
  1395. data/app/assets/node_modules/tinycolor2/demo/jquery-1.9.1.js +9597 -0
  1396. data/app/assets/node_modules/tinycolor2/dist/tinycolor-min.js +4 -0
  1397. data/app/assets/node_modules/tinycolor2/docs/docco.css +192 -0
  1398. data/app/assets/node_modules/tinycolor2/docs/tinycolor.html +1023 -0
  1399. data/app/assets/node_modules/tinycolor2/index.html +207 -0
  1400. data/app/assets/node_modules/tinycolor2/package.json +31 -0
  1401. data/app/assets/node_modules/tinycolor2/test/index.html +19 -0
  1402. data/app/assets/node_modules/tinycolor2/test/qunit.css +244 -0
  1403. data/app/assets/node_modules/tinycolor2/test/qunit.js +2152 -0
  1404. data/app/assets/node_modules/tinycolor2/test/test.js +791 -0
  1405. data/app/assets/node_modules/tinycolor2/tinycolor.js +1195 -0
  1406. data/app/assets/stylesheets/rails_modular_admin/application.scss +2 -3
  1407. data/app/assets/stylesheets/rails_modular_admin.scss +0 -1
  1408. data/config/initializers/assets.rb +4 -29
  1409. data/lib/rails_modular_admin/engine.rb +30 -2
  1410. data/lib/rails_modular_admin/version.rb +1 -1
  1411. metadata +1419 -8
  1412. data/app/controllers/rails_modular_admin/application_controller.rb +0 -5
  1413. data/app/helpers/rails_modular_admin/application_helper.rb +0 -4
  1414. data/app/jobs/rails_modular_admin/application_job.rb +0 -4
  1415. data/app/mailers/rails_modular_admin/application_mailer.rb +0 -6
  1416. data/app/models/rails_modular_admin/application_record.rb +0 -5
@@ -0,0 +1,2152 @@
1
+ /**
2
+ * QUnit v1.11.0 - A JavaScript Unit Testing Framework
3
+ *
4
+ * http://qunitjs.com
5
+ *
6
+ * Copyright 2012 jQuery Foundation and other contributors
7
+ * Released under the MIT license.
8
+ * http://jquery.org/license
9
+ */
10
+
11
+ (function( window ) {
12
+
13
+ var QUnit,
14
+ assert,
15
+ config,
16
+ onErrorFnPrev,
17
+ testId = 0,
18
+ fileName = (sourceFromStacktrace( 0 ) || "" ).replace(/(:\d+)+\)?/, "").replace(/.+\//, ""),
19
+ toString = Object.prototype.toString,
20
+ hasOwn = Object.prototype.hasOwnProperty,
21
+ // Keep a local reference to Date (GH-283)
22
+ Date = window.Date,
23
+ defined = {
24
+ setTimeout: typeof window.setTimeout !== "undefined",
25
+ sessionStorage: (function() {
26
+ var x = "qunit-test-string";
27
+ try {
28
+ sessionStorage.setItem( x, x );
29
+ sessionStorage.removeItem( x );
30
+ return true;
31
+ } catch( e ) {
32
+ return false;
33
+ }
34
+ }())
35
+ },
36
+ /**
37
+ * Provides a normalized error string, correcting an issue
38
+ * with IE 7 (and prior) where Error.prototype.toString is
39
+ * not properly implemented
40
+ *
41
+ * Based on http://es5.github.com/#x15.11.4.4
42
+ *
43
+ * @param {String|Error} error
44
+ * @return {String} error message
45
+ */
46
+ errorString = function( error ) {
47
+ var name, message,
48
+ errorString = error.toString();
49
+ if ( errorString.substring( 0, 7 ) === "[object" ) {
50
+ name = error.name ? error.name.toString() : "Error";
51
+ message = error.message ? error.message.toString() : "";
52
+ if ( name && message ) {
53
+ return name + ": " + message;
54
+ } else if ( name ) {
55
+ return name;
56
+ } else if ( message ) {
57
+ return message;
58
+ } else {
59
+ return "Error";
60
+ }
61
+ } else {
62
+ return errorString;
63
+ }
64
+ },
65
+ /**
66
+ * Makes a clone of an object using only Array or Object as base,
67
+ * and copies over the own enumerable properties.
68
+ *
69
+ * @param {Object} obj
70
+ * @return {Object} New object with only the own properties (recursively).
71
+ */
72
+ objectValues = function( obj ) {
73
+ // Grunt 0.3.x uses an older version of jshint that still has jshint/jshint#392.
74
+ /*jshint newcap: false */
75
+ var key, val,
76
+ vals = QUnit.is( "array", obj ) ? [] : {};
77
+ for ( key in obj ) {
78
+ if ( hasOwn.call( obj, key ) ) {
79
+ val = obj[key];
80
+ vals[key] = val === Object(val) ? objectValues(val) : val;
81
+ }
82
+ }
83
+ return vals;
84
+ };
85
+
86
+ function Test( settings ) {
87
+ extend( this, settings );
88
+ this.assertions = [];
89
+ this.testNumber = ++Test.count;
90
+ }
91
+
92
+ Test.count = 0;
93
+
94
+ Test.prototype = {
95
+ init: function() {
96
+ var a, b, li,
97
+ tests = id( "qunit-tests" );
98
+
99
+ if ( tests ) {
100
+ b = document.createElement( "strong" );
101
+ b.innerHTML = this.nameHtml;
102
+
103
+ // `a` initialized at top of scope
104
+ a = document.createElement( "a" );
105
+ a.innerHTML = "Rerun";
106
+ a.href = QUnit.url({ testNumber: this.testNumber });
107
+
108
+ li = document.createElement( "li" );
109
+ li.appendChild( b );
110
+ li.appendChild( a );
111
+ li.className = "running";
112
+ li.id = this.id = "qunit-test-output" + testId++;
113
+
114
+ tests.appendChild( li );
115
+ }
116
+ },
117
+ setup: function() {
118
+ if ( this.module !== config.previousModule ) {
119
+ if ( config.previousModule ) {
120
+ runLoggingCallbacks( "moduleDone", QUnit, {
121
+ name: config.previousModule,
122
+ failed: config.moduleStats.bad,
123
+ passed: config.moduleStats.all - config.moduleStats.bad,
124
+ total: config.moduleStats.all
125
+ });
126
+ }
127
+ config.previousModule = this.module;
128
+ config.moduleStats = { all: 0, bad: 0 };
129
+ runLoggingCallbacks( "moduleStart", QUnit, {
130
+ name: this.module
131
+ });
132
+ } else if ( config.autorun ) {
133
+ runLoggingCallbacks( "moduleStart", QUnit, {
134
+ name: this.module
135
+ });
136
+ }
137
+
138
+ config.current = this;
139
+
140
+ this.testEnvironment = extend({
141
+ setup: function() {},
142
+ teardown: function() {}
143
+ }, this.moduleTestEnvironment );
144
+
145
+ this.started = +new Date();
146
+ runLoggingCallbacks( "testStart", QUnit, {
147
+ name: this.testName,
148
+ module: this.module
149
+ });
150
+
151
+ // allow utility functions to access the current test environment
152
+ // TODO why??
153
+ QUnit.current_testEnvironment = this.testEnvironment;
154
+
155
+ if ( !config.pollution ) {
156
+ saveGlobal();
157
+ }
158
+ if ( config.notrycatch ) {
159
+ this.testEnvironment.setup.call( this.testEnvironment );
160
+ return;
161
+ }
162
+ try {
163
+ this.testEnvironment.setup.call( this.testEnvironment );
164
+ } catch( e ) {
165
+ QUnit.pushFailure( "Setup failed on " + this.testName + ": " + ( e.message || e ), extractStacktrace( e, 1 ) );
166
+ }
167
+ },
168
+ run: function() {
169
+ config.current = this;
170
+
171
+ var running = id( "qunit-testresult" );
172
+
173
+ if ( running ) {
174
+ running.innerHTML = "Running: <br/>" + this.nameHtml;
175
+ }
176
+
177
+ if ( this.async ) {
178
+ QUnit.stop();
179
+ }
180
+
181
+ this.callbackStarted = +new Date();
182
+
183
+ if ( config.notrycatch ) {
184
+ this.callback.call( this.testEnvironment, QUnit.assert );
185
+ this.callbackRuntime = +new Date() - this.callbackStarted;
186
+ return;
187
+ }
188
+
189
+ try {
190
+ this.callback.call( this.testEnvironment, QUnit.assert );
191
+ this.callbackRuntime = +new Date() - this.callbackStarted;
192
+ } catch( e ) {
193
+ this.callbackRuntime = +new Date() - this.callbackStarted;
194
+
195
+ QUnit.pushFailure( "Died on test #" + (this.assertions.length + 1) + " " + this.stack + ": " + ( e.message || e ), extractStacktrace( e, 0 ) );
196
+ // else next test will carry the responsibility
197
+ saveGlobal();
198
+
199
+ // Restart the tests if they're blocking
200
+ if ( config.blocking ) {
201
+ QUnit.start();
202
+ }
203
+ }
204
+ },
205
+ teardown: function() {
206
+ config.current = this;
207
+ if ( config.notrycatch ) {
208
+ if ( typeof this.callbackRuntime === "undefined" ) {
209
+ this.callbackRuntime = +new Date() - this.callbackStarted;
210
+ }
211
+ this.testEnvironment.teardown.call( this.testEnvironment );
212
+ return;
213
+ } else {
214
+ try {
215
+ this.testEnvironment.teardown.call( this.testEnvironment );
216
+ } catch( e ) {
217
+ QUnit.pushFailure( "Teardown failed on " + this.testName + ": " + ( e.message || e ), extractStacktrace( e, 1 ) );
218
+ }
219
+ }
220
+ checkPollution();
221
+ },
222
+ finish: function() {
223
+ config.current = this;
224
+ if ( config.requireExpects && this.expected === null ) {
225
+ QUnit.pushFailure( "Expected number of assertions to be defined, but expect() was not called.", this.stack );
226
+ } else if ( this.expected !== null && this.expected !== this.assertions.length ) {
227
+ QUnit.pushFailure( "Expected " + this.expected + " assertions, but " + this.assertions.length + " were run", this.stack );
228
+ } else if ( this.expected === null && !this.assertions.length ) {
229
+ QUnit.pushFailure( "Expected at least one assertion, but none were run - call expect(0) to accept zero assertions.", this.stack );
230
+ }
231
+
232
+ var i, assertion, a, b, time, li, ol,
233
+ test = this,
234
+ good = 0,
235
+ bad = 0,
236
+ tests = id( "qunit-tests" );
237
+
238
+ this.runtime = +new Date() - this.started;
239
+ config.stats.all += this.assertions.length;
240
+ config.moduleStats.all += this.assertions.length;
241
+
242
+ if ( tests ) {
243
+ ol = document.createElement( "ol" );
244
+ ol.className = "qunit-assert-list";
245
+
246
+ for ( i = 0; i < this.assertions.length; i++ ) {
247
+ assertion = this.assertions[i];
248
+
249
+ li = document.createElement( "li" );
250
+ li.className = assertion.result ? "pass" : "fail";
251
+ li.innerHTML = assertion.message || ( assertion.result ? "okay" : "failed" );
252
+ ol.appendChild( li );
253
+
254
+ if ( assertion.result ) {
255
+ good++;
256
+ } else {
257
+ bad++;
258
+ config.stats.bad++;
259
+ config.moduleStats.bad++;
260
+ }
261
+ }
262
+
263
+ // store result when possible
264
+ if ( QUnit.config.reorder && defined.sessionStorage ) {
265
+ if ( bad ) {
266
+ sessionStorage.setItem( "qunit-test-" + this.module + "-" + this.testName, bad );
267
+ } else {
268
+ sessionStorage.removeItem( "qunit-test-" + this.module + "-" + this.testName );
269
+ }
270
+ }
271
+
272
+ if ( bad === 0 ) {
273
+ addClass( ol, "qunit-collapsed" );
274
+ }
275
+
276
+ // `b` initialized at top of scope
277
+ b = document.createElement( "strong" );
278
+ b.innerHTML = this.nameHtml + " <b class='counts'>(<b class='failed'>" + bad + "</b>, <b class='passed'>" + good + "</b>, " + this.assertions.length + ")</b>";
279
+
280
+ addEvent(b, "click", function() {
281
+ var next = b.parentNode.lastChild,
282
+ collapsed = hasClass( next, "qunit-collapsed" );
283
+ ( collapsed ? removeClass : addClass )( next, "qunit-collapsed" );
284
+ });
285
+
286
+ addEvent(b, "dblclick", function( e ) {
287
+ var target = e && e.target ? e.target : window.event.srcElement;
288
+ if ( target.nodeName.toLowerCase() === "span" || target.nodeName.toLowerCase() === "b" ) {
289
+ target = target.parentNode;
290
+ }
291
+ if ( window.location && target.nodeName.toLowerCase() === "strong" ) {
292
+ window.location = QUnit.url({ testNumber: test.testNumber });
293
+ }
294
+ });
295
+
296
+ // `time` initialized at top of scope
297
+ time = document.createElement( "span" );
298
+ time.className = "runtime";
299
+ time.innerHTML = this.runtime + " ms";
300
+
301
+ // `li` initialized at top of scope
302
+ li = id( this.id );
303
+ li.className = bad ? "fail" : "pass";
304
+ li.removeChild( li.firstChild );
305
+ a = li.firstChild;
306
+ li.appendChild( b );
307
+ li.appendChild( a );
308
+ li.appendChild( time );
309
+ li.appendChild( ol );
310
+
311
+ } else {
312
+ for ( i = 0; i < this.assertions.length; i++ ) {
313
+ if ( !this.assertions[i].result ) {
314
+ bad++;
315
+ config.stats.bad++;
316
+ config.moduleStats.bad++;
317
+ }
318
+ }
319
+ }
320
+
321
+ runLoggingCallbacks( "testDone", QUnit, {
322
+ name: this.testName,
323
+ module: this.module,
324
+ failed: bad,
325
+ passed: this.assertions.length - bad,
326
+ total: this.assertions.length,
327
+ duration: this.runtime
328
+ });
329
+
330
+ QUnit.reset();
331
+
332
+ config.current = undefined;
333
+ },
334
+
335
+ queue: function() {
336
+ var bad,
337
+ test = this;
338
+
339
+ synchronize(function() {
340
+ test.init();
341
+ });
342
+ function run() {
343
+ // each of these can by async
344
+ synchronize(function() {
345
+ test.setup();
346
+ });
347
+ synchronize(function() {
348
+ test.run();
349
+ });
350
+ synchronize(function() {
351
+ test.teardown();
352
+ });
353
+ synchronize(function() {
354
+ test.finish();
355
+ });
356
+ }
357
+
358
+ // `bad` initialized at top of scope
359
+ // defer when previous test run passed, if storage is available
360
+ bad = QUnit.config.reorder && defined.sessionStorage &&
361
+ +sessionStorage.getItem( "qunit-test-" + this.module + "-" + this.testName );
362
+
363
+ if ( bad ) {
364
+ run();
365
+ } else {
366
+ synchronize( run, true );
367
+ }
368
+ }
369
+ };
370
+
371
+ // Root QUnit object.
372
+ // `QUnit` initialized at top of scope
373
+ QUnit = {
374
+
375
+ // call on start of module test to prepend name to all tests
376
+ module: function( name, testEnvironment ) {
377
+ config.currentModule = name;
378
+ config.currentModuleTestEnvironment = testEnvironment;
379
+ config.modules[name] = true;
380
+ },
381
+
382
+ asyncTest: function( testName, expected, callback ) {
383
+ if ( arguments.length === 2 ) {
384
+ callback = expected;
385
+ expected = null;
386
+ }
387
+
388
+ QUnit.test( testName, expected, callback, true );
389
+ },
390
+
391
+ test: function( testName, expected, callback, async ) {
392
+ var test,
393
+ nameHtml = "<span class='test-name'>" + escapeText( testName ) + "</span>";
394
+
395
+ if ( arguments.length === 2 ) {
396
+ callback = expected;
397
+ expected = null;
398
+ }
399
+
400
+ if ( config.currentModule ) {
401
+ nameHtml = "<span class='module-name'>" + escapeText( config.currentModule ) + "</span>: " + nameHtml;
402
+ }
403
+
404
+ test = new Test({
405
+ nameHtml: nameHtml,
406
+ testName: testName,
407
+ expected: expected,
408
+ async: async,
409
+ callback: callback,
410
+ module: config.currentModule,
411
+ moduleTestEnvironment: config.currentModuleTestEnvironment,
412
+ stack: sourceFromStacktrace( 2 )
413
+ });
414
+
415
+ if ( !validTest( test ) ) {
416
+ return;
417
+ }
418
+
419
+ test.queue();
420
+ },
421
+
422
+ // Specify the number of expected assertions to gurantee that failed test (no assertions are run at all) don't slip through.
423
+ expect: function( asserts ) {
424
+ if (arguments.length === 1) {
425
+ config.current.expected = asserts;
426
+ } else {
427
+ return config.current.expected;
428
+ }
429
+ },
430
+
431
+ start: function( count ) {
432
+ // QUnit hasn't been initialized yet.
433
+ // Note: RequireJS (et al) may delay onLoad
434
+ if ( config.semaphore === undefined ) {
435
+ QUnit.begin(function() {
436
+ // This is triggered at the top of QUnit.load, push start() to the event loop, to allow QUnit.load to finish first
437
+ setTimeout(function() {
438
+ QUnit.start( count );
439
+ });
440
+ });
441
+ return;
442
+ }
443
+
444
+ config.semaphore -= count || 1;
445
+ // don't start until equal number of stop-calls
446
+ if ( config.semaphore > 0 ) {
447
+ return;
448
+ }
449
+ // ignore if start is called more often then stop
450
+ if ( config.semaphore < 0 ) {
451
+ config.semaphore = 0;
452
+ QUnit.pushFailure( "Called start() while already started (QUnit.config.semaphore was 0 already)", null, sourceFromStacktrace(2) );
453
+ return;
454
+ }
455
+ // A slight delay, to avoid any current callbacks
456
+ if ( defined.setTimeout ) {
457
+ window.setTimeout(function() {
458
+ if ( config.semaphore > 0 ) {
459
+ return;
460
+ }
461
+ if ( config.timeout ) {
462
+ clearTimeout( config.timeout );
463
+ }
464
+
465
+ config.blocking = false;
466
+ process( true );
467
+ }, 13);
468
+ } else {
469
+ config.blocking = false;
470
+ process( true );
471
+ }
472
+ },
473
+
474
+ stop: function( count ) {
475
+ config.semaphore += count || 1;
476
+ config.blocking = true;
477
+
478
+ if ( config.testTimeout && defined.setTimeout ) {
479
+ clearTimeout( config.timeout );
480
+ config.timeout = window.setTimeout(function() {
481
+ QUnit.ok( false, "Test timed out" );
482
+ config.semaphore = 1;
483
+ QUnit.start();
484
+ }, config.testTimeout );
485
+ }
486
+ }
487
+ };
488
+
489
+ // `assert` initialized at top of scope
490
+ // Asssert helpers
491
+ // All of these must either call QUnit.push() or manually do:
492
+ // - runLoggingCallbacks( "log", .. );
493
+ // - config.current.assertions.push({ .. });
494
+ // We attach it to the QUnit object *after* we expose the public API,
495
+ // otherwise `assert` will become a global variable in browsers (#341).
496
+ assert = {
497
+ /**
498
+ * Asserts rough true-ish result.
499
+ * @name ok
500
+ * @function
501
+ * @example ok( "asdfasdf".length > 5, "There must be at least 5 chars" );
502
+ */
503
+ ok: function( result, msg ) {
504
+ if ( !config.current ) {
505
+ throw new Error( "ok() assertion outside test context, was " + sourceFromStacktrace(2) );
506
+ }
507
+ result = !!result;
508
+
509
+ var source,
510
+ details = {
511
+ module: config.current.module,
512
+ name: config.current.testName,
513
+ result: result,
514
+ message: msg
515
+ };
516
+
517
+ msg = escapeText( msg || (result ? "okay" : "failed" ) );
518
+ msg = "<span class='test-message'>" + msg + "</span>";
519
+
520
+ if ( !result ) {
521
+ source = sourceFromStacktrace( 2 );
522
+ if ( source ) {
523
+ details.source = source;
524
+ msg += "<table><tr class='test-source'><th>Source: </th><td><pre>" + escapeText( source ) + "</pre></td></tr></table>";
525
+ }
526
+ }
527
+ runLoggingCallbacks( "log", QUnit, details );
528
+ config.current.assertions.push({
529
+ result: result,
530
+ message: msg
531
+ });
532
+ },
533
+
534
+ /**
535
+ * Assert that the first two arguments are equal, with an optional message.
536
+ * Prints out both actual and expected values.
537
+ * @name equal
538
+ * @function
539
+ * @example equal( format( "Received {0} bytes.", 2), "Received 2 bytes.", "format() replaces {0} with next argument" );
540
+ */
541
+ equal: function( actual, expected, message ) {
542
+ /*jshint eqeqeq:false */
543
+ QUnit.push( expected == actual, actual, expected, message );
544
+ },
545
+
546
+ /**
547
+ * @name notEqual
548
+ * @function
549
+ */
550
+ notEqual: function( actual, expected, message ) {
551
+ /*jshint eqeqeq:false */
552
+ QUnit.push( expected != actual, actual, expected, message );
553
+ },
554
+
555
+ /**
556
+ * @name propEqual
557
+ * @function
558
+ */
559
+ propEqual: function( actual, expected, message ) {
560
+ actual = objectValues(actual);
561
+ expected = objectValues(expected);
562
+ QUnit.push( QUnit.equiv(actual, expected), actual, expected, message );
563
+ },
564
+
565
+ /**
566
+ * @name notPropEqual
567
+ * @function
568
+ */
569
+ notPropEqual: function( actual, expected, message ) {
570
+ actual = objectValues(actual);
571
+ expected = objectValues(expected);
572
+ QUnit.push( !QUnit.equiv(actual, expected), actual, expected, message );
573
+ },
574
+
575
+ /**
576
+ * @name deepEqual
577
+ * @function
578
+ */
579
+ deepEqual: function( actual, expected, message ) {
580
+ QUnit.push( QUnit.equiv(actual, expected), actual, expected, message );
581
+ },
582
+
583
+ /**
584
+ * @name notDeepEqual
585
+ * @function
586
+ */
587
+ notDeepEqual: function( actual, expected, message ) {
588
+ QUnit.push( !QUnit.equiv(actual, expected), actual, expected, message );
589
+ },
590
+
591
+ /**
592
+ * @name strictEqual
593
+ * @function
594
+ */
595
+ strictEqual: function( actual, expected, message ) {
596
+ QUnit.push( expected === actual, actual, expected, message );
597
+ },
598
+
599
+ /**
600
+ * @name notStrictEqual
601
+ * @function
602
+ */
603
+ notStrictEqual: function( actual, expected, message ) {
604
+ QUnit.push( expected !== actual, actual, expected, message );
605
+ },
606
+
607
+ "throws": function( block, expected, message ) {
608
+ var actual,
609
+ expectedOutput = expected,
610
+ ok = false;
611
+
612
+ // 'expected' is optional
613
+ if ( typeof expected === "string" ) {
614
+ message = expected;
615
+ expected = null;
616
+ }
617
+
618
+ config.current.ignoreGlobalErrors = true;
619
+ try {
620
+ block.call( config.current.testEnvironment );
621
+ } catch (e) {
622
+ actual = e;
623
+ }
624
+ config.current.ignoreGlobalErrors = false;
625
+
626
+ if ( actual ) {
627
+ // we don't want to validate thrown error
628
+ if ( !expected ) {
629
+ ok = true;
630
+ expectedOutput = null;
631
+ // expected is a regexp
632
+ } else if ( QUnit.objectType( expected ) === "regexp" ) {
633
+ ok = expected.test( errorString( actual ) );
634
+ // expected is a constructor
635
+ } else if ( actual instanceof expected ) {
636
+ ok = true;
637
+ // expected is a validation function which returns true is validation passed
638
+ } else if ( expected.call( {}, actual ) === true ) {
639
+ expectedOutput = null;
640
+ ok = true;
641
+ }
642
+
643
+ QUnit.push( ok, actual, expectedOutput, message );
644
+ } else {
645
+ QUnit.pushFailure( message, null, 'No exception was thrown.' );
646
+ }
647
+ }
648
+ };
649
+
650
+ /**
651
+ * @deprecate since 1.8.0
652
+ * Kept assertion helpers in root for backwards compatibility.
653
+ */
654
+ extend( QUnit, assert );
655
+
656
+ /**
657
+ * @deprecated since 1.9.0
658
+ * Kept root "raises()" for backwards compatibility.
659
+ * (Note that we don't introduce assert.raises).
660
+ */
661
+ QUnit.raises = assert[ "throws" ];
662
+
663
+ /**
664
+ * @deprecated since 1.0.0, replaced with error pushes since 1.3.0
665
+ * Kept to avoid TypeErrors for undefined methods.
666
+ */
667
+ QUnit.equals = function() {
668
+ QUnit.push( false, false, false, "QUnit.equals has been deprecated since 2009 (e88049a0), use QUnit.equal instead" );
669
+ };
670
+ QUnit.same = function() {
671
+ QUnit.push( false, false, false, "QUnit.same has been deprecated since 2009 (e88049a0), use QUnit.deepEqual instead" );
672
+ };
673
+
674
+ // We want access to the constructor's prototype
675
+ (function() {
676
+ function F() {}
677
+ F.prototype = QUnit;
678
+ QUnit = new F();
679
+ // Make F QUnit's constructor so that we can add to the prototype later
680
+ QUnit.constructor = F;
681
+ }());
682
+
683
+ /**
684
+ * Config object: Maintain internal state
685
+ * Later exposed as QUnit.config
686
+ * `config` initialized at top of scope
687
+ */
688
+ config = {
689
+ // The queue of tests to run
690
+ queue: [],
691
+
692
+ // block until document ready
693
+ blocking: true,
694
+
695
+ // when enabled, show only failing tests
696
+ // gets persisted through sessionStorage and can be changed in UI via checkbox
697
+ hidepassed: false,
698
+
699
+ // by default, run previously failed tests first
700
+ // very useful in combination with "Hide passed tests" checked
701
+ reorder: true,
702
+
703
+ // by default, modify document.title when suite is done
704
+ altertitle: true,
705
+
706
+ // when enabled, all tests must call expect()
707
+ requireExpects: false,
708
+
709
+ // add checkboxes that are persisted in the query-string
710
+ // when enabled, the id is set to `true` as a `QUnit.config` property
711
+ urlConfig: [
712
+ {
713
+ id: "noglobals",
714
+ label: "Check for Globals",
715
+ tooltip: "Enabling this will test if any test introduces new properties on the `window` object. Stored as query-strings."
716
+ },
717
+ {
718
+ id: "notrycatch",
719
+ label: "No try-catch",
720
+ tooltip: "Enabling this will run tests outside of a try-catch block. Makes debugging exceptions in IE reasonable. Stored as query-strings."
721
+ }
722
+ ],
723
+
724
+ // Set of all modules.
725
+ modules: {},
726
+
727
+ // logging callback queues
728
+ begin: [],
729
+ done: [],
730
+ log: [],
731
+ testStart: [],
732
+ testDone: [],
733
+ moduleStart: [],
734
+ moduleDone: []
735
+ };
736
+
737
+ // Export global variables, unless an 'exports' object exists,
738
+ // in that case we assume we're in CommonJS (dealt with on the bottom of the script)
739
+ if ( typeof exports === "undefined" ) {
740
+ extend( window, QUnit );
741
+
742
+ // Expose QUnit object
743
+ window.QUnit = QUnit;
744
+ }
745
+
746
+ // Initialize more QUnit.config and QUnit.urlParams
747
+ (function() {
748
+ var i,
749
+ location = window.location || { search: "", protocol: "file:" },
750
+ params = location.search.slice( 1 ).split( "&" ),
751
+ length = params.length,
752
+ urlParams = {},
753
+ current;
754
+
755
+ if ( params[ 0 ] ) {
756
+ for ( i = 0; i < length; i++ ) {
757
+ current = params[ i ].split( "=" );
758
+ current[ 0 ] = decodeURIComponent( current[ 0 ] );
759
+ // allow just a key to turn on a flag, e.g., test.html?noglobals
760
+ current[ 1 ] = current[ 1 ] ? decodeURIComponent( current[ 1 ] ) : true;
761
+ urlParams[ current[ 0 ] ] = current[ 1 ];
762
+ }
763
+ }
764
+
765
+ QUnit.urlParams = urlParams;
766
+
767
+ // String search anywhere in moduleName+testName
768
+ config.filter = urlParams.filter;
769
+
770
+ // Exact match of the module name
771
+ config.module = urlParams.module;
772
+
773
+ config.testNumber = parseInt( urlParams.testNumber, 10 ) || null;
774
+
775
+ // Figure out if we're running the tests from a server or not
776
+ QUnit.isLocal = location.protocol === "file:";
777
+ }());
778
+
779
+ // Extend QUnit object,
780
+ // these after set here because they should not be exposed as global functions
781
+ extend( QUnit, {
782
+ assert: assert,
783
+
784
+ config: config,
785
+
786
+ // Initialize the configuration options
787
+ init: function() {
788
+ extend( config, {
789
+ stats: { all: 0, bad: 0 },
790
+ moduleStats: { all: 0, bad: 0 },
791
+ started: +new Date(),
792
+ updateRate: 1000,
793
+ blocking: false,
794
+ autostart: true,
795
+ autorun: false,
796
+ filter: "",
797
+ queue: [],
798
+ semaphore: 1
799
+ });
800
+
801
+ var tests, banner, result,
802
+ qunit = id( "qunit" );
803
+
804
+ if ( qunit ) {
805
+ qunit.innerHTML =
806
+ "<h1 id='qunit-header'>" + escapeText( document.title ) + "</h1>" +
807
+ "<h2 id='qunit-banner'></h2>" +
808
+ "<div id='qunit-testrunner-toolbar'></div>" +
809
+ "<h2 id='qunit-userAgent'></h2>" +
810
+ "<ol id='qunit-tests'></ol>";
811
+ }
812
+
813
+ tests = id( "qunit-tests" );
814
+ banner = id( "qunit-banner" );
815
+ result = id( "qunit-testresult" );
816
+
817
+ if ( tests ) {
818
+ tests.innerHTML = "";
819
+ }
820
+
821
+ if ( banner ) {
822
+ banner.className = "";
823
+ }
824
+
825
+ if ( result ) {
826
+ result.parentNode.removeChild( result );
827
+ }
828
+
829
+ if ( tests ) {
830
+ result = document.createElement( "p" );
831
+ result.id = "qunit-testresult";
832
+ result.className = "result";
833
+ tests.parentNode.insertBefore( result, tests );
834
+ result.innerHTML = "Running...<br/>&nbsp;";
835
+ }
836
+ },
837
+
838
+ // Resets the test setup. Useful for tests that modify the DOM.
839
+ reset: function() {
840
+ var fixture = id( "qunit-fixture" );
841
+ if ( fixture ) {
842
+ fixture.innerHTML = config.fixture;
843
+ }
844
+ },
845
+
846
+ // Trigger an event on an element.
847
+ // @example triggerEvent( document.body, "click" );
848
+ triggerEvent: function( elem, type, event ) {
849
+ if ( document.createEvent ) {
850
+ event = document.createEvent( "MouseEvents" );
851
+ event.initMouseEvent(type, true, true, elem.ownerDocument.defaultView,
852
+ 0, 0, 0, 0, 0, false, false, false, false, 0, null);
853
+
854
+ elem.dispatchEvent( event );
855
+ } else if ( elem.fireEvent ) {
856
+ elem.fireEvent( "on" + type );
857
+ }
858
+ },
859
+
860
+ // Safe object type checking
861
+ is: function( type, obj ) {
862
+ return QUnit.objectType( obj ) === type;
863
+ },
864
+
865
+ objectType: function( obj ) {
866
+ if ( typeof obj === "undefined" ) {
867
+ return "undefined";
868
+ // consider: typeof null === object
869
+ }
870
+ if ( obj === null ) {
871
+ return "null";
872
+ }
873
+
874
+ var match = toString.call( obj ).match(/^\[object\s(.*)\]$/),
875
+ type = match && match[1] || "";
876
+
877
+ switch ( type ) {
878
+ case "Number":
879
+ if ( isNaN(obj) ) {
880
+ return "nan";
881
+ }
882
+ return "number";
883
+ case "String":
884
+ case "Boolean":
885
+ case "Array":
886
+ case "Date":
887
+ case "RegExp":
888
+ case "Function":
889
+ return type.toLowerCase();
890
+ }
891
+ if ( typeof obj === "object" ) {
892
+ return "object";
893
+ }
894
+ return undefined;
895
+ },
896
+
897
+ push: function( result, actual, expected, message ) {
898
+ if ( !config.current ) {
899
+ throw new Error( "assertion outside test context, was " + sourceFromStacktrace() );
900
+ }
901
+
902
+ var output, source,
903
+ details = {
904
+ module: config.current.module,
905
+ name: config.current.testName,
906
+ result: result,
907
+ message: message,
908
+ actual: actual,
909
+ expected: expected
910
+ };
911
+
912
+ message = escapeText( message ) || ( result ? "okay" : "failed" );
913
+ message = "<span class='test-message'>" + message + "</span>";
914
+ output = message;
915
+
916
+ if ( !result ) {
917
+ expected = escapeText( QUnit.jsDump.parse(expected) );
918
+ actual = escapeText( QUnit.jsDump.parse(actual) );
919
+ output += "<table><tr class='test-expected'><th>Expected: </th><td><pre>" + expected + "</pre></td></tr>";
920
+
921
+ if ( actual !== expected ) {
922
+ output += "<tr class='test-actual'><th>Result: </th><td><pre>" + actual + "</pre></td></tr>";
923
+ output += "<tr class='test-diff'><th>Diff: </th><td><pre>" + QUnit.diff( expected, actual ) + "</pre></td></tr>";
924
+ }
925
+
926
+ source = sourceFromStacktrace();
927
+
928
+ if ( source ) {
929
+ details.source = source;
930
+ output += "<tr class='test-source'><th>Source: </th><td><pre>" + escapeText( source ) + "</pre></td></tr>";
931
+ }
932
+
933
+ output += "</table>";
934
+ }
935
+
936
+ runLoggingCallbacks( "log", QUnit, details );
937
+
938
+ config.current.assertions.push({
939
+ result: !!result,
940
+ message: output
941
+ });
942
+ },
943
+
944
+ pushFailure: function( message, source, actual ) {
945
+ if ( !config.current ) {
946
+ throw new Error( "pushFailure() assertion outside test context, was " + sourceFromStacktrace(2) );
947
+ }
948
+
949
+ var output,
950
+ details = {
951
+ module: config.current.module,
952
+ name: config.current.testName,
953
+ result: false,
954
+ message: message
955
+ };
956
+
957
+ message = escapeText( message ) || "error";
958
+ message = "<span class='test-message'>" + message + "</span>";
959
+ output = message;
960
+
961
+ output += "<table>";
962
+
963
+ if ( actual ) {
964
+ output += "<tr class='test-actual'><th>Result: </th><td><pre>" + escapeText( actual ) + "</pre></td></tr>";
965
+ }
966
+
967
+ if ( source ) {
968
+ details.source = source;
969
+ output += "<tr class='test-source'><th>Source: </th><td><pre>" + escapeText( source ) + "</pre></td></tr>";
970
+ }
971
+
972
+ output += "</table>";
973
+
974
+ runLoggingCallbacks( "log", QUnit, details );
975
+
976
+ config.current.assertions.push({
977
+ result: false,
978
+ message: output
979
+ });
980
+ },
981
+
982
+ url: function( params ) {
983
+ params = extend( extend( {}, QUnit.urlParams ), params );
984
+ var key,
985
+ querystring = "?";
986
+
987
+ for ( key in params ) {
988
+ if ( !hasOwn.call( params, key ) ) {
989
+ continue;
990
+ }
991
+ querystring += encodeURIComponent( key ) + "=" +
992
+ encodeURIComponent( params[ key ] ) + "&";
993
+ }
994
+ return window.location.protocol + "//" + window.location.host +
995
+ window.location.pathname + querystring.slice( 0, -1 );
996
+ },
997
+
998
+ extend: extend,
999
+ id: id,
1000
+ addEvent: addEvent
1001
+ // load, equiv, jsDump, diff: Attached later
1002
+ });
1003
+
1004
+ /**
1005
+ * @deprecated: Created for backwards compatibility with test runner that set the hook function
1006
+ * into QUnit.{hook}, instead of invoking it and passing the hook function.
1007
+ * QUnit.constructor is set to the empty F() above so that we can add to it's prototype here.
1008
+ * Doing this allows us to tell if the following methods have been overwritten on the actual
1009
+ * QUnit object.
1010
+ */
1011
+ extend( QUnit.constructor.prototype, {
1012
+
1013
+ // Logging callbacks; all receive a single argument with the listed properties
1014
+ // run test/logs.html for any related changes
1015
+ begin: registerLoggingCallback( "begin" ),
1016
+
1017
+ // done: { failed, passed, total, runtime }
1018
+ done: registerLoggingCallback( "done" ),
1019
+
1020
+ // log: { result, actual, expected, message }
1021
+ log: registerLoggingCallback( "log" ),
1022
+
1023
+ // testStart: { name }
1024
+ testStart: registerLoggingCallback( "testStart" ),
1025
+
1026
+ // testDone: { name, failed, passed, total, duration }
1027
+ testDone: registerLoggingCallback( "testDone" ),
1028
+
1029
+ // moduleStart: { name }
1030
+ moduleStart: registerLoggingCallback( "moduleStart" ),
1031
+
1032
+ // moduleDone: { name, failed, passed, total }
1033
+ moduleDone: registerLoggingCallback( "moduleDone" )
1034
+ });
1035
+
1036
+ if ( typeof document === "undefined" || document.readyState === "complete" ) {
1037
+ config.autorun = true;
1038
+ }
1039
+
1040
+ QUnit.load = function() {
1041
+ runLoggingCallbacks( "begin", QUnit, {} );
1042
+
1043
+ // Initialize the config, saving the execution queue
1044
+ var banner, filter, i, label, len, main, ol, toolbar, userAgent, val,
1045
+ urlConfigCheckboxesContainer, urlConfigCheckboxes, moduleFilter,
1046
+ numModules = 0,
1047
+ moduleFilterHtml = "",
1048
+ urlConfigHtml = "",
1049
+ oldconfig = extend( {}, config );
1050
+
1051
+ QUnit.init();
1052
+ extend(config, oldconfig);
1053
+
1054
+ config.blocking = false;
1055
+
1056
+ len = config.urlConfig.length;
1057
+
1058
+ for ( i = 0; i < len; i++ ) {
1059
+ val = config.urlConfig[i];
1060
+ if ( typeof val === "string" ) {
1061
+ val = {
1062
+ id: val,
1063
+ label: val,
1064
+ tooltip: "[no tooltip available]"
1065
+ };
1066
+ }
1067
+ config[ val.id ] = QUnit.urlParams[ val.id ];
1068
+ urlConfigHtml += "<input id='qunit-urlconfig-" + escapeText( val.id ) +
1069
+ "' name='" + escapeText( val.id ) +
1070
+ "' type='checkbox'" + ( config[ val.id ] ? " checked='checked'" : "" ) +
1071
+ " title='" + escapeText( val.tooltip ) +
1072
+ "'><label for='qunit-urlconfig-" + escapeText( val.id ) +
1073
+ "' title='" + escapeText( val.tooltip ) + "'>" + val.label + "</label>";
1074
+ }
1075
+
1076
+ moduleFilterHtml += "<label for='qunit-modulefilter'>Module: </label><select id='qunit-modulefilter' name='modulefilter'><option value='' " +
1077
+ ( config.module === undefined ? "selected='selected'" : "" ) +
1078
+ ">< All Modules ></option>";
1079
+
1080
+ for ( i in config.modules ) {
1081
+ if ( config.modules.hasOwnProperty( i ) ) {
1082
+ numModules += 1;
1083
+ moduleFilterHtml += "<option value='" + escapeText( encodeURIComponent(i) ) + "' " +
1084
+ ( config.module === i ? "selected='selected'" : "" ) +
1085
+ ">" + escapeText(i) + "</option>";
1086
+ }
1087
+ }
1088
+ moduleFilterHtml += "</select>";
1089
+
1090
+ // `userAgent` initialized at top of scope
1091
+ userAgent = id( "qunit-userAgent" );
1092
+ if ( userAgent ) {
1093
+ userAgent.innerHTML = navigator.userAgent;
1094
+ }
1095
+
1096
+ // `banner` initialized at top of scope
1097
+ banner = id( "qunit-header" );
1098
+ if ( banner ) {
1099
+ banner.innerHTML = "<a href='" + QUnit.url({ filter: undefined, module: undefined, testNumber: undefined }) + "'>" + banner.innerHTML + "</a> ";
1100
+ }
1101
+
1102
+ // `toolbar` initialized at top of scope
1103
+ toolbar = id( "qunit-testrunner-toolbar" );
1104
+ if ( toolbar ) {
1105
+ // `filter` initialized at top of scope
1106
+ filter = document.createElement( "input" );
1107
+ filter.type = "checkbox";
1108
+ filter.id = "qunit-filter-pass";
1109
+
1110
+ addEvent( filter, "click", function() {
1111
+ var tmp,
1112
+ ol = document.getElementById( "qunit-tests" );
1113
+
1114
+ if ( filter.checked ) {
1115
+ ol.className = ol.className + " hidepass";
1116
+ } else {
1117
+ tmp = " " + ol.className.replace( /[\n\t\r]/g, " " ) + " ";
1118
+ ol.className = tmp.replace( / hidepass /, " " );
1119
+ }
1120
+ if ( defined.sessionStorage ) {
1121
+ if (filter.checked) {
1122
+ sessionStorage.setItem( "qunit-filter-passed-tests", "true" );
1123
+ } else {
1124
+ sessionStorage.removeItem( "qunit-filter-passed-tests" );
1125
+ }
1126
+ }
1127
+ });
1128
+
1129
+ if ( config.hidepassed || defined.sessionStorage && sessionStorage.getItem( "qunit-filter-passed-tests" ) ) {
1130
+ filter.checked = true;
1131
+ // `ol` initialized at top of scope
1132
+ ol = document.getElementById( "qunit-tests" );
1133
+ ol.className = ol.className + " hidepass";
1134
+ }
1135
+ toolbar.appendChild( filter );
1136
+
1137
+ // `label` initialized at top of scope
1138
+ label = document.createElement( "label" );
1139
+ label.setAttribute( "for", "qunit-filter-pass" );
1140
+ label.setAttribute( "title", "Only show tests and assertons that fail. Stored in sessionStorage." );
1141
+ label.innerHTML = "Hide passed tests";
1142
+ toolbar.appendChild( label );
1143
+
1144
+ urlConfigCheckboxesContainer = document.createElement("span");
1145
+ urlConfigCheckboxesContainer.innerHTML = urlConfigHtml;
1146
+ urlConfigCheckboxes = urlConfigCheckboxesContainer.getElementsByTagName("input");
1147
+ // For oldIE support:
1148
+ // * Add handlers to the individual elements instead of the container
1149
+ // * Use "click" instead of "change"
1150
+ // * Fallback from event.target to event.srcElement
1151
+ addEvents( urlConfigCheckboxes, "click", function( event ) {
1152
+ var params = {},
1153
+ target = event.target || event.srcElement;
1154
+ params[ target.name ] = target.checked ? true : undefined;
1155
+ window.location = QUnit.url( params );
1156
+ });
1157
+ toolbar.appendChild( urlConfigCheckboxesContainer );
1158
+
1159
+ if (numModules > 1) {
1160
+ moduleFilter = document.createElement( 'span' );
1161
+ moduleFilter.setAttribute( 'id', 'qunit-modulefilter-container' );
1162
+ moduleFilter.innerHTML = moduleFilterHtml;
1163
+ addEvent( moduleFilter.lastChild, "change", function() {
1164
+ var selectBox = moduleFilter.getElementsByTagName("select")[0],
1165
+ selectedModule = decodeURIComponent(selectBox.options[selectBox.selectedIndex].value);
1166
+
1167
+ window.location = QUnit.url( { module: ( selectedModule === "" ) ? undefined : selectedModule } );
1168
+ });
1169
+ toolbar.appendChild(moduleFilter);
1170
+ }
1171
+ }
1172
+
1173
+ // `main` initialized at top of scope
1174
+ main = id( "qunit-fixture" );
1175
+ if ( main ) {
1176
+ config.fixture = main.innerHTML;
1177
+ }
1178
+
1179
+ if ( config.autostart ) {
1180
+ QUnit.start();
1181
+ }
1182
+ };
1183
+
1184
+ addEvent( window, "load", QUnit.load );
1185
+
1186
+ // `onErrorFnPrev` initialized at top of scope
1187
+ // Preserve other handlers
1188
+ onErrorFnPrev = window.onerror;
1189
+
1190
+ // Cover uncaught exceptions
1191
+ // Returning true will surpress the default browser handler,
1192
+ // returning false will let it run.
1193
+ window.onerror = function ( error, filePath, linerNr ) {
1194
+ var ret = false;
1195
+ if ( onErrorFnPrev ) {
1196
+ ret = onErrorFnPrev( error, filePath, linerNr );
1197
+ }
1198
+
1199
+ // Treat return value as window.onerror itself does,
1200
+ // Only do our handling if not surpressed.
1201
+ if ( ret !== true ) {
1202
+ if ( QUnit.config.current ) {
1203
+ if ( QUnit.config.current.ignoreGlobalErrors ) {
1204
+ return true;
1205
+ }
1206
+ QUnit.pushFailure( error, filePath + ":" + linerNr );
1207
+ } else {
1208
+ QUnit.test( "global failure", extend( function() {
1209
+ QUnit.pushFailure( error, filePath + ":" + linerNr );
1210
+ }, { validTest: validTest } ) );
1211
+ }
1212
+ return false;
1213
+ }
1214
+
1215
+ return ret;
1216
+ };
1217
+
1218
+ function done() {
1219
+ config.autorun = true;
1220
+
1221
+ // Log the last module results
1222
+ if ( config.currentModule ) {
1223
+ runLoggingCallbacks( "moduleDone", QUnit, {
1224
+ name: config.currentModule,
1225
+ failed: config.moduleStats.bad,
1226
+ passed: config.moduleStats.all - config.moduleStats.bad,
1227
+ total: config.moduleStats.all
1228
+ });
1229
+ }
1230
+
1231
+ var i, key,
1232
+ banner = id( "qunit-banner" ),
1233
+ tests = id( "qunit-tests" ),
1234
+ runtime = +new Date() - config.started,
1235
+ passed = config.stats.all - config.stats.bad,
1236
+ html = [
1237
+ "Tests completed in ",
1238
+ runtime,
1239
+ " milliseconds.<br/>",
1240
+ "<span class='passed'>",
1241
+ passed,
1242
+ "</span> assertions of <span class='total'>",
1243
+ config.stats.all,
1244
+ "</span> passed, <span class='failed'>",
1245
+ config.stats.bad,
1246
+ "</span> failed."
1247
+ ].join( "" );
1248
+
1249
+ if ( banner ) {
1250
+ banner.className = ( config.stats.bad ? "qunit-fail" : "qunit-pass" );
1251
+ }
1252
+
1253
+ if ( tests ) {
1254
+ id( "qunit-testresult" ).innerHTML = html;
1255
+ }
1256
+
1257
+ if ( config.altertitle && typeof document !== "undefined" && document.title ) {
1258
+ // show ✖ for good, ✔ for bad suite result in title
1259
+ // use escape sequences in case file gets loaded with non-utf-8-charset
1260
+ document.title = [
1261
+ ( config.stats.bad ? "\u2716" : "\u2714" ),
1262
+ document.title.replace( /^[\u2714\u2716] /i, "" )
1263
+ ].join( " " );
1264
+ }
1265
+
1266
+ // clear own sessionStorage items if all tests passed
1267
+ if ( config.reorder && defined.sessionStorage && config.stats.bad === 0 ) {
1268
+ // `key` & `i` initialized at top of scope
1269
+ for ( i = 0; i < sessionStorage.length; i++ ) {
1270
+ key = sessionStorage.key( i++ );
1271
+ if ( key.indexOf( "qunit-test-" ) === 0 ) {
1272
+ sessionStorage.removeItem( key );
1273
+ }
1274
+ }
1275
+ }
1276
+
1277
+ // scroll back to top to show results
1278
+ if ( window.scrollTo ) {
1279
+ window.scrollTo(0, 0);
1280
+ }
1281
+
1282
+ runLoggingCallbacks( "done", QUnit, {
1283
+ failed: config.stats.bad,
1284
+ passed: passed,
1285
+ total: config.stats.all,
1286
+ runtime: runtime
1287
+ });
1288
+ }
1289
+
1290
+ /** @return Boolean: true if this test should be ran */
1291
+ function validTest( test ) {
1292
+ var include,
1293
+ filter = config.filter && config.filter.toLowerCase(),
1294
+ module = config.module && config.module.toLowerCase(),
1295
+ fullName = (test.module + ": " + test.testName).toLowerCase();
1296
+
1297
+ // Internally-generated tests are always valid
1298
+ if ( test.callback && test.callback.validTest === validTest ) {
1299
+ delete test.callback.validTest;
1300
+ return true;
1301
+ }
1302
+
1303
+ if ( config.testNumber ) {
1304
+ return test.testNumber === config.testNumber;
1305
+ }
1306
+
1307
+ if ( module && ( !test.module || test.module.toLowerCase() !== module ) ) {
1308
+ return false;
1309
+ }
1310
+
1311
+ if ( !filter ) {
1312
+ return true;
1313
+ }
1314
+
1315
+ include = filter.charAt( 0 ) !== "!";
1316
+ if ( !include ) {
1317
+ filter = filter.slice( 1 );
1318
+ }
1319
+
1320
+ // If the filter matches, we need to honour include
1321
+ if ( fullName.indexOf( filter ) !== -1 ) {
1322
+ return include;
1323
+ }
1324
+
1325
+ // Otherwise, do the opposite
1326
+ return !include;
1327
+ }
1328
+
1329
+ // so far supports only Firefox, Chrome and Opera (buggy), Safari (for real exceptions)
1330
+ // Later Safari and IE10 are supposed to support error.stack as well
1331
+ // See also https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error/Stack
1332
+ function extractStacktrace( e, offset ) {
1333
+ offset = offset === undefined ? 3 : offset;
1334
+
1335
+ var stack, include, i;
1336
+
1337
+ if ( e.stacktrace ) {
1338
+ // Opera
1339
+ return e.stacktrace.split( "\n" )[ offset + 3 ];
1340
+ } else if ( e.stack ) {
1341
+ // Firefox, Chrome
1342
+ stack = e.stack.split( "\n" );
1343
+ if (/^error$/i.test( stack[0] ) ) {
1344
+ stack.shift();
1345
+ }
1346
+ if ( fileName ) {
1347
+ include = [];
1348
+ for ( i = offset; i < stack.length; i++ ) {
1349
+ if ( stack[ i ].indexOf( fileName ) !== -1 ) {
1350
+ break;
1351
+ }
1352
+ include.push( stack[ i ] );
1353
+ }
1354
+ if ( include.length ) {
1355
+ return include.join( "\n" );
1356
+ }
1357
+ }
1358
+ return stack[ offset ];
1359
+ } else if ( e.sourceURL ) {
1360
+ // Safari, PhantomJS
1361
+ // hopefully one day Safari provides actual stacktraces
1362
+ // exclude useless self-reference for generated Error objects
1363
+ if ( /qunit.js$/.test( e.sourceURL ) ) {
1364
+ return;
1365
+ }
1366
+ // for actual exceptions, this is useful
1367
+ return e.sourceURL + ":" + e.line;
1368
+ }
1369
+ }
1370
+ function sourceFromStacktrace( offset ) {
1371
+ try {
1372
+ throw new Error();
1373
+ } catch ( e ) {
1374
+ return extractStacktrace( e, offset );
1375
+ }
1376
+ }
1377
+
1378
+ /**
1379
+ * Escape text for attribute or text content.
1380
+ */
1381
+ function escapeText( s ) {
1382
+ if ( !s ) {
1383
+ return "";
1384
+ }
1385
+ s = s + "";
1386
+ // Both single quotes and double quotes (for attributes)
1387
+ return s.replace( /['"<>&]/g, function( s ) {
1388
+ switch( s ) {
1389
+ case '\'':
1390
+ return '&#039;';
1391
+ case '"':
1392
+ return '&quot;';
1393
+ case '<':
1394
+ return '&lt;';
1395
+ case '>':
1396
+ return '&gt;';
1397
+ case '&':
1398
+ return '&amp;';
1399
+ }
1400
+ });
1401
+ }
1402
+
1403
+ function synchronize( callback, last ) {
1404
+ config.queue.push( callback );
1405
+
1406
+ if ( config.autorun && !config.blocking ) {
1407
+ process( last );
1408
+ }
1409
+ }
1410
+
1411
+ function process( last ) {
1412
+ function next() {
1413
+ process( last );
1414
+ }
1415
+ var start = new Date().getTime();
1416
+ config.depth = config.depth ? config.depth + 1 : 1;
1417
+
1418
+ while ( config.queue.length && !config.blocking ) {
1419
+ if ( !defined.setTimeout || config.updateRate <= 0 || ( ( new Date().getTime() - start ) < config.updateRate ) ) {
1420
+ config.queue.shift()();
1421
+ } else {
1422
+ window.setTimeout( next, 13 );
1423
+ break;
1424
+ }
1425
+ }
1426
+ config.depth--;
1427
+ if ( last && !config.blocking && !config.queue.length && config.depth === 0 ) {
1428
+ done();
1429
+ }
1430
+ }
1431
+
1432
+ function saveGlobal() {
1433
+ config.pollution = [];
1434
+
1435
+ if ( config.noglobals ) {
1436
+ for ( var key in window ) {
1437
+ // in Opera sometimes DOM element ids show up here, ignore them
1438
+ if ( !hasOwn.call( window, key ) || /^qunit-test-output/.test( key ) ) {
1439
+ continue;
1440
+ }
1441
+ config.pollution.push( key );
1442
+ }
1443
+ }
1444
+ }
1445
+
1446
+ function checkPollution() {
1447
+ var newGlobals,
1448
+ deletedGlobals,
1449
+ old = config.pollution;
1450
+
1451
+ saveGlobal();
1452
+
1453
+ newGlobals = diff( config.pollution, old );
1454
+ if ( newGlobals.length > 0 ) {
1455
+ QUnit.pushFailure( "Introduced global variable(s): " + newGlobals.join(", ") );
1456
+ }
1457
+
1458
+ deletedGlobals = diff( old, config.pollution );
1459
+ if ( deletedGlobals.length > 0 ) {
1460
+ QUnit.pushFailure( "Deleted global variable(s): " + deletedGlobals.join(", ") );
1461
+ }
1462
+ }
1463
+
1464
+ // returns a new Array with the elements that are in a but not in b
1465
+ function diff( a, b ) {
1466
+ var i, j,
1467
+ result = a.slice();
1468
+
1469
+ for ( i = 0; i < result.length; i++ ) {
1470
+ for ( j = 0; j < b.length; j++ ) {
1471
+ if ( result[i] === b[j] ) {
1472
+ result.splice( i, 1 );
1473
+ i--;
1474
+ break;
1475
+ }
1476
+ }
1477
+ }
1478
+ return result;
1479
+ }
1480
+
1481
+ function extend( a, b ) {
1482
+ for ( var prop in b ) {
1483
+ if ( b[ prop ] === undefined ) {
1484
+ delete a[ prop ];
1485
+
1486
+ // Avoid "Member not found" error in IE8 caused by setting window.constructor
1487
+ } else if ( prop !== "constructor" || a !== window ) {
1488
+ a[ prop ] = b[ prop ];
1489
+ }
1490
+ }
1491
+
1492
+ return a;
1493
+ }
1494
+
1495
+ /**
1496
+ * @param {HTMLElement} elem
1497
+ * @param {string} type
1498
+ * @param {Function} fn
1499
+ */
1500
+ function addEvent( elem, type, fn ) {
1501
+ // Standards-based browsers
1502
+ if ( elem.addEventListener ) {
1503
+ elem.addEventListener( type, fn, false );
1504
+ // IE
1505
+ } else {
1506
+ elem.attachEvent( "on" + type, fn );
1507
+ }
1508
+ }
1509
+
1510
+ /**
1511
+ * @param {Array|NodeList} elems
1512
+ * @param {string} type
1513
+ * @param {Function} fn
1514
+ */
1515
+ function addEvents( elems, type, fn ) {
1516
+ var i = elems.length;
1517
+ while ( i-- ) {
1518
+ addEvent( elems[i], type, fn );
1519
+ }
1520
+ }
1521
+
1522
+ function hasClass( elem, name ) {
1523
+ return (" " + elem.className + " ").indexOf(" " + name + " ") > -1;
1524
+ }
1525
+
1526
+ function addClass( elem, name ) {
1527
+ if ( !hasClass( elem, name ) ) {
1528
+ elem.className += (elem.className ? " " : "") + name;
1529
+ }
1530
+ }
1531
+
1532
+ function removeClass( elem, name ) {
1533
+ var set = " " + elem.className + " ";
1534
+ // Class name may appear multiple times
1535
+ while ( set.indexOf(" " + name + " ") > -1 ) {
1536
+ set = set.replace(" " + name + " " , " ");
1537
+ }
1538
+ // If possible, trim it for prettiness, but not neccecarily
1539
+ elem.className = window.jQuery ? jQuery.trim( set ) : ( set.trim ? set.trim() : set );
1540
+ }
1541
+
1542
+ function id( name ) {
1543
+ return !!( typeof document !== "undefined" && document && document.getElementById ) &&
1544
+ document.getElementById( name );
1545
+ }
1546
+
1547
+ function registerLoggingCallback( key ) {
1548
+ return function( callback ) {
1549
+ config[key].push( callback );
1550
+ };
1551
+ }
1552
+
1553
+ // Supports deprecated method of completely overwriting logging callbacks
1554
+ function runLoggingCallbacks( key, scope, args ) {
1555
+ var i, callbacks;
1556
+ if ( QUnit.hasOwnProperty( key ) ) {
1557
+ QUnit[ key ].call(scope, args );
1558
+ } else {
1559
+ callbacks = config[ key ];
1560
+ for ( i = 0; i < callbacks.length; i++ ) {
1561
+ callbacks[ i ].call( scope, args );
1562
+ }
1563
+ }
1564
+ }
1565
+
1566
+ // Test for equality any JavaScript type.
1567
+ // Author: Philippe Rathé <prathe@gmail.com>
1568
+ QUnit.equiv = (function() {
1569
+
1570
+ // Call the o related callback with the given arguments.
1571
+ function bindCallbacks( o, callbacks, args ) {
1572
+ var prop = QUnit.objectType( o );
1573
+ if ( prop ) {
1574
+ if ( QUnit.objectType( callbacks[ prop ] ) === "function" ) {
1575
+ return callbacks[ prop ].apply( callbacks, args );
1576
+ } else {
1577
+ return callbacks[ prop ]; // or undefined
1578
+ }
1579
+ }
1580
+ }
1581
+
1582
+ // the real equiv function
1583
+ var innerEquiv,
1584
+ // stack to decide between skip/abort functions
1585
+ callers = [],
1586
+ // stack to avoiding loops from circular referencing
1587
+ parents = [],
1588
+
1589
+ getProto = Object.getPrototypeOf || function ( obj ) {
1590
+ return obj.__proto__;
1591
+ },
1592
+ callbacks = (function () {
1593
+
1594
+ // for string, boolean, number and null
1595
+ function useStrictEquality( b, a ) {
1596
+ /*jshint eqeqeq:false */
1597
+ if ( b instanceof a.constructor || a instanceof b.constructor ) {
1598
+ // to catch short annotaion VS 'new' annotation of a
1599
+ // declaration
1600
+ // e.g. var i = 1;
1601
+ // var j = new Number(1);
1602
+ return a == b;
1603
+ } else {
1604
+ return a === b;
1605
+ }
1606
+ }
1607
+
1608
+ return {
1609
+ "string": useStrictEquality,
1610
+ "boolean": useStrictEquality,
1611
+ "number": useStrictEquality,
1612
+ "null": useStrictEquality,
1613
+ "undefined": useStrictEquality,
1614
+
1615
+ "nan": function( b ) {
1616
+ return isNaN( b );
1617
+ },
1618
+
1619
+ "date": function( b, a ) {
1620
+ return QUnit.objectType( b ) === "date" && a.valueOf() === b.valueOf();
1621
+ },
1622
+
1623
+ "regexp": function( b, a ) {
1624
+ return QUnit.objectType( b ) === "regexp" &&
1625
+ // the regex itself
1626
+ a.source === b.source &&
1627
+ // and its modifers
1628
+ a.global === b.global &&
1629
+ // (gmi) ...
1630
+ a.ignoreCase === b.ignoreCase &&
1631
+ a.multiline === b.multiline &&
1632
+ a.sticky === b.sticky;
1633
+ },
1634
+
1635
+ // - skip when the property is a method of an instance (OOP)
1636
+ // - abort otherwise,
1637
+ // initial === would have catch identical references anyway
1638
+ "function": function() {
1639
+ var caller = callers[callers.length - 1];
1640
+ return caller !== Object && typeof caller !== "undefined";
1641
+ },
1642
+
1643
+ "array": function( b, a ) {
1644
+ var i, j, len, loop;
1645
+
1646
+ // b could be an object literal here
1647
+ if ( QUnit.objectType( b ) !== "array" ) {
1648
+ return false;
1649
+ }
1650
+
1651
+ len = a.length;
1652
+ if ( len !== b.length ) {
1653
+ // safe and faster
1654
+ return false;
1655
+ }
1656
+
1657
+ // track reference to avoid circular references
1658
+ parents.push( a );
1659
+ for ( i = 0; i < len; i++ ) {
1660
+ loop = false;
1661
+ for ( j = 0; j < parents.length; j++ ) {
1662
+ if ( parents[j] === a[i] ) {
1663
+ loop = true;// dont rewalk array
1664
+ }
1665
+ }
1666
+ if ( !loop && !innerEquiv(a[i], b[i]) ) {
1667
+ parents.pop();
1668
+ return false;
1669
+ }
1670
+ }
1671
+ parents.pop();
1672
+ return true;
1673
+ },
1674
+
1675
+ "object": function( b, a ) {
1676
+ var i, j, loop,
1677
+ // Default to true
1678
+ eq = true,
1679
+ aProperties = [],
1680
+ bProperties = [];
1681
+
1682
+ // comparing constructors is more strict than using
1683
+ // instanceof
1684
+ if ( a.constructor !== b.constructor ) {
1685
+ // Allow objects with no prototype to be equivalent to
1686
+ // objects with Object as their constructor.
1687
+ if ( !(( getProto(a) === null && getProto(b) === Object.prototype ) ||
1688
+ ( getProto(b) === null && getProto(a) === Object.prototype ) ) ) {
1689
+ return false;
1690
+ }
1691
+ }
1692
+
1693
+ // stack constructor before traversing properties
1694
+ callers.push( a.constructor );
1695
+ // track reference to avoid circular references
1696
+ parents.push( a );
1697
+
1698
+ for ( i in a ) { // be strict: don't ensures hasOwnProperty
1699
+ // and go deep
1700
+ loop = false;
1701
+ for ( j = 0; j < parents.length; j++ ) {
1702
+ if ( parents[j] === a[i] ) {
1703
+ // don't go down the same path twice
1704
+ loop = true;
1705
+ }
1706
+ }
1707
+ aProperties.push(i); // collect a's properties
1708
+
1709
+ if (!loop && !innerEquiv( a[i], b[i] ) ) {
1710
+ eq = false;
1711
+ break;
1712
+ }
1713
+ }
1714
+
1715
+ callers.pop(); // unstack, we are done
1716
+ parents.pop();
1717
+
1718
+ for ( i in b ) {
1719
+ bProperties.push( i ); // collect b's properties
1720
+ }
1721
+
1722
+ // Ensures identical properties name
1723
+ return eq && innerEquiv( aProperties.sort(), bProperties.sort() );
1724
+ }
1725
+ };
1726
+ }());
1727
+
1728
+ innerEquiv = function() { // can take multiple arguments
1729
+ var args = [].slice.apply( arguments );
1730
+ if ( args.length < 2 ) {
1731
+ return true; // end transition
1732
+ }
1733
+
1734
+ return (function( a, b ) {
1735
+ if ( a === b ) {
1736
+ return true; // catch the most you can
1737
+ } else if ( a === null || b === null || typeof a === "undefined" ||
1738
+ typeof b === "undefined" ||
1739
+ QUnit.objectType(a) !== QUnit.objectType(b) ) {
1740
+ return false; // don't lose time with error prone cases
1741
+ } else {
1742
+ return bindCallbacks(a, callbacks, [ b, a ]);
1743
+ }
1744
+
1745
+ // apply transition with (1..n) arguments
1746
+ }( args[0], args[1] ) && arguments.callee.apply( this, args.splice(1, args.length - 1 )) );
1747
+ };
1748
+
1749
+ return innerEquiv;
1750
+ }());
1751
+
1752
+ /**
1753
+ * jsDump Copyright (c) 2008 Ariel Flesler - aflesler(at)gmail(dot)com |
1754
+ * http://flesler.blogspot.com Licensed under BSD
1755
+ * (http://www.opensource.org/licenses/bsd-license.php) Date: 5/15/2008
1756
+ *
1757
+ * @projectDescription Advanced and extensible data dumping for Javascript.
1758
+ * @version 1.0.0
1759
+ * @author Ariel Flesler
1760
+ * @link {http://flesler.blogspot.com/2008/05/jsdump-pretty-dump-of-any-javascript.html}
1761
+ */
1762
+ QUnit.jsDump = (function() {
1763
+ function quote( str ) {
1764
+ return '"' + str.toString().replace( /"/g, '\\"' ) + '"';
1765
+ }
1766
+ function literal( o ) {
1767
+ return o + "";
1768
+ }
1769
+ function join( pre, arr, post ) {
1770
+ var s = jsDump.separator(),
1771
+ base = jsDump.indent(),
1772
+ inner = jsDump.indent(1);
1773
+ if ( arr.join ) {
1774
+ arr = arr.join( "," + s + inner );
1775
+ }
1776
+ if ( !arr ) {
1777
+ return pre + post;
1778
+ }
1779
+ return [ pre, inner + arr, base + post ].join(s);
1780
+ }
1781
+ function array( arr, stack ) {
1782
+ var i = arr.length, ret = new Array(i);
1783
+ this.up();
1784
+ while ( i-- ) {
1785
+ ret[i] = this.parse( arr[i] , undefined , stack);
1786
+ }
1787
+ this.down();
1788
+ return join( "[", ret, "]" );
1789
+ }
1790
+
1791
+ var reName = /^function (\w+)/,
1792
+ jsDump = {
1793
+ // type is used mostly internally, you can fix a (custom)type in advance
1794
+ parse: function( obj, type, stack ) {
1795
+ stack = stack || [ ];
1796
+ var inStack, res,
1797
+ parser = this.parsers[ type || this.typeOf(obj) ];
1798
+
1799
+ type = typeof parser;
1800
+ inStack = inArray( obj, stack );
1801
+
1802
+ if ( inStack !== -1 ) {
1803
+ return "recursion(" + (inStack - stack.length) + ")";
1804
+ }
1805
+ if ( type === "function" ) {
1806
+ stack.push( obj );
1807
+ res = parser.call( this, obj, stack );
1808
+ stack.pop();
1809
+ return res;
1810
+ }
1811
+ return ( type === "string" ) ? parser : this.parsers.error;
1812
+ },
1813
+ typeOf: function( obj ) {
1814
+ var type;
1815
+ if ( obj === null ) {
1816
+ type = "null";
1817
+ } else if ( typeof obj === "undefined" ) {
1818
+ type = "undefined";
1819
+ } else if ( QUnit.is( "regexp", obj) ) {
1820
+ type = "regexp";
1821
+ } else if ( QUnit.is( "date", obj) ) {
1822
+ type = "date";
1823
+ } else if ( QUnit.is( "function", obj) ) {
1824
+ type = "function";
1825
+ } else if ( typeof obj.setInterval !== undefined && typeof obj.document !== "undefined" && typeof obj.nodeType === "undefined" ) {
1826
+ type = "window";
1827
+ } else if ( obj.nodeType === 9 ) {
1828
+ type = "document";
1829
+ } else if ( obj.nodeType ) {
1830
+ type = "node";
1831
+ } else if (
1832
+ // native arrays
1833
+ toString.call( obj ) === "[object Array]" ||
1834
+ // NodeList objects
1835
+ ( typeof obj.length === "number" && typeof obj.item !== "undefined" && ( obj.length ? obj.item(0) === obj[0] : ( obj.item( 0 ) === null && typeof obj[0] === "undefined" ) ) )
1836
+ ) {
1837
+ type = "array";
1838
+ } else if ( obj.constructor === Error.prototype.constructor ) {
1839
+ type = "error";
1840
+ } else {
1841
+ type = typeof obj;
1842
+ }
1843
+ return type;
1844
+ },
1845
+ separator: function() {
1846
+ return this.multiline ? this.HTML ? "<br />" : "\n" : this.HTML ? "&nbsp;" : " ";
1847
+ },
1848
+ // extra can be a number, shortcut for increasing-calling-decreasing
1849
+ indent: function( extra ) {
1850
+ if ( !this.multiline ) {
1851
+ return "";
1852
+ }
1853
+ var chr = this.indentChar;
1854
+ if ( this.HTML ) {
1855
+ chr = chr.replace( /\t/g, " " ).replace( / /g, "&nbsp;" );
1856
+ }
1857
+ return new Array( this._depth_ + (extra||0) ).join(chr);
1858
+ },
1859
+ up: function( a ) {
1860
+ this._depth_ += a || 1;
1861
+ },
1862
+ down: function( a ) {
1863
+ this._depth_ -= a || 1;
1864
+ },
1865
+ setParser: function( name, parser ) {
1866
+ this.parsers[name] = parser;
1867
+ },
1868
+ // The next 3 are exposed so you can use them
1869
+ quote: quote,
1870
+ literal: literal,
1871
+ join: join,
1872
+ //
1873
+ _depth_: 1,
1874
+ // This is the list of parsers, to modify them, use jsDump.setParser
1875
+ parsers: {
1876
+ window: "[Window]",
1877
+ document: "[Document]",
1878
+ error: function(error) {
1879
+ return "Error(\"" + error.message + "\")";
1880
+ },
1881
+ unknown: "[Unknown]",
1882
+ "null": "null",
1883
+ "undefined": "undefined",
1884
+ "function": function( fn ) {
1885
+ var ret = "function",
1886
+ // functions never have name in IE
1887
+ name = "name" in fn ? fn.name : (reName.exec(fn) || [])[1];
1888
+
1889
+ if ( name ) {
1890
+ ret += " " + name;
1891
+ }
1892
+ ret += "( ";
1893
+
1894
+ ret = [ ret, QUnit.jsDump.parse( fn, "functionArgs" ), "){" ].join( "" );
1895
+ return join( ret, QUnit.jsDump.parse(fn,"functionCode" ), "}" );
1896
+ },
1897
+ array: array,
1898
+ nodelist: array,
1899
+ "arguments": array,
1900
+ object: function( map, stack ) {
1901
+ var ret = [ ], keys, key, val, i;
1902
+ QUnit.jsDump.up();
1903
+ keys = [];
1904
+ for ( key in map ) {
1905
+ keys.push( key );
1906
+ }
1907
+ keys.sort();
1908
+ for ( i = 0; i < keys.length; i++ ) {
1909
+ key = keys[ i ];
1910
+ val = map[ key ];
1911
+ ret.push( QUnit.jsDump.parse( key, "key" ) + ": " + QUnit.jsDump.parse( val, undefined, stack ) );
1912
+ }
1913
+ QUnit.jsDump.down();
1914
+ return join( "{", ret, "}" );
1915
+ },
1916
+ node: function( node ) {
1917
+ var len, i, val,
1918
+ open = QUnit.jsDump.HTML ? "&lt;" : "<",
1919
+ close = QUnit.jsDump.HTML ? "&gt;" : ">",
1920
+ tag = node.nodeName.toLowerCase(),
1921
+ ret = open + tag,
1922
+ attrs = node.attributes;
1923
+
1924
+ if ( attrs ) {
1925
+ for ( i = 0, len = attrs.length; i < len; i++ ) {
1926
+ val = attrs[i].nodeValue;
1927
+ // IE6 includes all attributes in .attributes, even ones not explicitly set.
1928
+ // Those have values like undefined, null, 0, false, "" or "inherit".
1929
+ if ( val && val !== "inherit" ) {
1930
+ ret += " " + attrs[i].nodeName + "=" + QUnit.jsDump.parse( val, "attribute" );
1931
+ }
1932
+ }
1933
+ }
1934
+ ret += close;
1935
+
1936
+ // Show content of TextNode or CDATASection
1937
+ if ( node.nodeType === 3 || node.nodeType === 4 ) {
1938
+ ret += node.nodeValue;
1939
+ }
1940
+
1941
+ return ret + open + "/" + tag + close;
1942
+ },
1943
+ // function calls it internally, it's the arguments part of the function
1944
+ functionArgs: function( fn ) {
1945
+ var args,
1946
+ l = fn.length;
1947
+
1948
+ if ( !l ) {
1949
+ return "";
1950
+ }
1951
+
1952
+ args = new Array(l);
1953
+ while ( l-- ) {
1954
+ // 97 is 'a'
1955
+ args[l] = String.fromCharCode(97+l);
1956
+ }
1957
+ return " " + args.join( ", " ) + " ";
1958
+ },
1959
+ // object calls it internally, the key part of an item in a map
1960
+ key: quote,
1961
+ // function calls it internally, it's the content of the function
1962
+ functionCode: "[code]",
1963
+ // node calls it internally, it's an html attribute value
1964
+ attribute: quote,
1965
+ string: quote,
1966
+ date: quote,
1967
+ regexp: literal,
1968
+ number: literal,
1969
+ "boolean": literal
1970
+ },
1971
+ // if true, entities are escaped ( <, >, \t, space and \n )
1972
+ HTML: false,
1973
+ // indentation unit
1974
+ indentChar: " ",
1975
+ // if true, items in a collection, are separated by a \n, else just a space.
1976
+ multiline: true
1977
+ };
1978
+
1979
+ return jsDump;
1980
+ }());
1981
+
1982
+ // from jquery.js
1983
+ function inArray( elem, array ) {
1984
+ if ( array.indexOf ) {
1985
+ return array.indexOf( elem );
1986
+ }
1987
+
1988
+ for ( var i = 0, length = array.length; i < length; i++ ) {
1989
+ if ( array[ i ] === elem ) {
1990
+ return i;
1991
+ }
1992
+ }
1993
+
1994
+ return -1;
1995
+ }
1996
+
1997
+ /*
1998
+ * Javascript Diff Algorithm
1999
+ * By John Resig (http://ejohn.org/)
2000
+ * Modified by Chu Alan "sprite"
2001
+ *
2002
+ * Released under the MIT license.
2003
+ *
2004
+ * More Info:
2005
+ * http://ejohn.org/projects/javascript-diff-algorithm/
2006
+ *
2007
+ * Usage: QUnit.diff(expected, actual)
2008
+ *
2009
+ * QUnit.diff( "the quick brown fox jumped over", "the quick fox jumps over" ) == "the quick <del>brown </del> fox <del>jumped </del><ins>jumps </ins> over"
2010
+ */
2011
+ QUnit.diff = (function() {
2012
+ /*jshint eqeqeq:false, eqnull:true */
2013
+ function diff( o, n ) {
2014
+ var i,
2015
+ ns = {},
2016
+ os = {};
2017
+
2018
+ for ( i = 0; i < n.length; i++ ) {
2019
+ if ( !hasOwn.call( ns, n[i] ) ) {
2020
+ ns[ n[i] ] = {
2021
+ rows: [],
2022
+ o: null
2023
+ };
2024
+ }
2025
+ ns[ n[i] ].rows.push( i );
2026
+ }
2027
+
2028
+ for ( i = 0; i < o.length; i++ ) {
2029
+ if ( !hasOwn.call( os, o[i] ) ) {
2030
+ os[ o[i] ] = {
2031
+ rows: [],
2032
+ n: null
2033
+ };
2034
+ }
2035
+ os[ o[i] ].rows.push( i );
2036
+ }
2037
+
2038
+ for ( i in ns ) {
2039
+ if ( !hasOwn.call( ns, i ) ) {
2040
+ continue;
2041
+ }
2042
+ if ( ns[i].rows.length === 1 && hasOwn.call( os, i ) && os[i].rows.length === 1 ) {
2043
+ n[ ns[i].rows[0] ] = {
2044
+ text: n[ ns[i].rows[0] ],
2045
+ row: os[i].rows[0]
2046
+ };
2047
+ o[ os[i].rows[0] ] = {
2048
+ text: o[ os[i].rows[0] ],
2049
+ row: ns[i].rows[0]
2050
+ };
2051
+ }
2052
+ }
2053
+
2054
+ for ( i = 0; i < n.length - 1; i++ ) {
2055
+ if ( n[i].text != null && n[ i + 1 ].text == null && n[i].row + 1 < o.length && o[ n[i].row + 1 ].text == null &&
2056
+ n[ i + 1 ] == o[ n[i].row + 1 ] ) {
2057
+
2058
+ n[ i + 1 ] = {
2059
+ text: n[ i + 1 ],
2060
+ row: n[i].row + 1
2061
+ };
2062
+ o[ n[i].row + 1 ] = {
2063
+ text: o[ n[i].row + 1 ],
2064
+ row: i + 1
2065
+ };
2066
+ }
2067
+ }
2068
+
2069
+ for ( i = n.length - 1; i > 0; i-- ) {
2070
+ if ( n[i].text != null && n[ i - 1 ].text == null && n[i].row > 0 && o[ n[i].row - 1 ].text == null &&
2071
+ n[ i - 1 ] == o[ n[i].row - 1 ]) {
2072
+
2073
+ n[ i - 1 ] = {
2074
+ text: n[ i - 1 ],
2075
+ row: n[i].row - 1
2076
+ };
2077
+ o[ n[i].row - 1 ] = {
2078
+ text: o[ n[i].row - 1 ],
2079
+ row: i - 1
2080
+ };
2081
+ }
2082
+ }
2083
+
2084
+ return {
2085
+ o: o,
2086
+ n: n
2087
+ };
2088
+ }
2089
+
2090
+ return function( o, n ) {
2091
+ o = o.replace( /\s+$/, "" );
2092
+ n = n.replace( /\s+$/, "" );
2093
+
2094
+ var i, pre,
2095
+ str = "",
2096
+ out = diff( o === "" ? [] : o.split(/\s+/), n === "" ? [] : n.split(/\s+/) ),
2097
+ oSpace = o.match(/\s+/g),
2098
+ nSpace = n.match(/\s+/g);
2099
+
2100
+ if ( oSpace == null ) {
2101
+ oSpace = [ " " ];
2102
+ }
2103
+ else {
2104
+ oSpace.push( " " );
2105
+ }
2106
+
2107
+ if ( nSpace == null ) {
2108
+ nSpace = [ " " ];
2109
+ }
2110
+ else {
2111
+ nSpace.push( " " );
2112
+ }
2113
+
2114
+ if ( out.n.length === 0 ) {
2115
+ for ( i = 0; i < out.o.length; i++ ) {
2116
+ str += "<del>" + out.o[i] + oSpace[i] + "</del>";
2117
+ }
2118
+ }
2119
+ else {
2120
+ if ( out.n[0].text == null ) {
2121
+ for ( n = 0; n < out.o.length && out.o[n].text == null; n++ ) {
2122
+ str += "<del>" + out.o[n] + oSpace[n] + "</del>";
2123
+ }
2124
+ }
2125
+
2126
+ for ( i = 0; i < out.n.length; i++ ) {
2127
+ if (out.n[i].text == null) {
2128
+ str += "<ins>" + out.n[i] + nSpace[i] + "</ins>";
2129
+ }
2130
+ else {
2131
+ // `pre` initialized at top of scope
2132
+ pre = "";
2133
+
2134
+ for ( n = out.n[i].row + 1; n < out.o.length && out.o[n].text == null; n++ ) {
2135
+ pre += "<del>" + out.o[n] + oSpace[n] + "</del>";
2136
+ }
2137
+ str += " " + out.n[i].text + nSpace[i] + pre;
2138
+ }
2139
+ }
2140
+ }
2141
+
2142
+ return str;
2143
+ };
2144
+ }());
2145
+
2146
+ // for CommonJS enviroments, export everything
2147
+ if ( typeof exports !== "undefined" ) {
2148
+ extend( exports, QUnit );
2149
+ }
2150
+
2151
+ // get at whatever the global object is, like window in browsers
2152
+ }( (function() {return this;}.call()) ));