foreman_discovery 1.0.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (1366) hide show
  1. data/LICENSE +619 -0
  2. data/README.md +128 -0
  3. data/Rakefile +111 -0
  4. data/app/controllers/discovers_controller.rb +151 -0
  5. data/app/helpers/discovers_helper.rb +37 -0
  6. data/app/models/host/discovered.rb +97 -0
  7. data/app/models/host/managed_extensions.rb +32 -0
  8. data/app/models/setting/discovered.rb +28 -0
  9. data/app/overrides/add_build_flag.rb +4 -0
  10. data/app/views/discovers/_discovers_list.html.erb +54 -0
  11. data/app/views/discovers/_selected_hosts.html.erb +29 -0
  12. data/app/views/discovers/index.html.erb +2 -0
  13. data/app/views/discovers/multiple_destroy.html.erb +5 -0
  14. data/app/views/discovers/select_multiple_location.html.erb +10 -0
  15. data/app/views/discovers/select_multiple_organization.html.erb +10 -0
  16. data/app/views/discovers/show.html.erb +16 -0
  17. data/config/environment.rb +0 -0
  18. data/config/initializers/discovery_setup.rb +20 -0
  19. data/config/routes.rb +26 -0
  20. data/lib/discovery_home_helper_patch.rb +21 -0
  21. data/lib/foreman_discovery.rb +4 -0
  22. data/lib/foreman_discovery/engine.rb +32 -0
  23. data/lib/foreman_discovery/facts.rb +12 -0
  24. data/lib/foreman_discovery/version.rb +3 -0
  25. data/lib/tasks.rake +72 -0
  26. data/test/foreman_app/CHANGELOG +3969 -0
  27. data/test/foreman_app/Contributors +94 -0
  28. data/test/foreman_app/Gemfile +33 -0
  29. data/test/foreman_app/README.md +17 -0
  30. data/test/foreman_app/Rakefile +7 -0
  31. data/test/foreman_app/VERSION +1 -0
  32. data/test/foreman_app/app/assets/images/Archlinux.png +0 -0
  33. data/test/foreman_app/app/assets/images/Centos.png +0 -0
  34. data/test/foreman_app/app/assets/images/Darwin.png +0 -0
  35. data/test/foreman_app/app/assets/images/Debian.png +0 -0
  36. data/test/foreman_app/app/assets/images/Fedora.png +0 -0
  37. data/test/foreman_app/app/assets/images/Redhat.png +0 -0
  38. data/test/foreman_app/app/assets/images/SLC.png +0 -0
  39. data/test/foreman_app/app/assets/images/Scientific.png +0 -0
  40. data/test/foreman_app/app/assets/images/Solaris.png +0 -0
  41. data/test/foreman_app/app/assets/images/Suse.png +0 -0
  42. data/test/foreman_app/app/assets/images/Ubuntu.png +0 -0
  43. data/test/foreman_app/app/assets/images/Windows.png +0 -0
  44. data/test/foreman_app/app/assets/images/bullet_toggle_plus.png +0 -0
  45. data/test/foreman_app/app/assets/images/edit-hover.png +0 -0
  46. data/test/foreman_app/app/assets/images/edit.png +0 -0
  47. data/test/foreman_app/app/assets/images/false.png +0 -0
  48. data/test/foreman_app/app/assets/images/foreman.png +0 -0
  49. data/test/foreman_app/app/assets/images/foreman_background.png +0 -0
  50. data/test/foreman_app/app/assets/images/foreman_large.png +0 -0
  51. data/test/foreman_app/app/assets/images/foreman_white.png +0 -0
  52. data/test/foreman_app/app/assets/images/pie_chart_icon.png +0 -0
  53. data/test/foreman_app/app/assets/images/pie_overlay.png +0 -0
  54. data/test/foreman_app/app/assets/images/spinner.gif +0 -0
  55. data/test/foreman_app/app/assets/images/switch.png +0 -0
  56. data/test/foreman_app/app/assets/images/toggle_check.png +0 -0
  57. data/test/foreman_app/app/assets/images/true.png +0 -0
  58. data/test/foreman_app/app/assets/images/user.jpg +0 -0
  59. data/test/foreman_app/app/assets/javascripts/application.js +348 -0
  60. data/test/foreman_app/app/assets/javascripts/charts.js +317 -0
  61. data/test/foreman_app/app/assets/javascripts/compute_resource.js +120 -0
  62. data/test/foreman_app/app/assets/javascripts/config_template.js +153 -0
  63. data/test/foreman_app/app/assets/javascripts/host_checkbox.js +151 -0
  64. data/test/foreman_app/app/assets/javascripts/host_edit.js +591 -0
  65. data/test/foreman_app/app/assets/javascripts/lookup_keys.js +184 -0
  66. data/test/foreman_app/app/assets/javascripts/nfs_visibility.js +33 -0
  67. data/test/foreman_app/app/assets/javascripts/noVNC.js +47 -0
  68. data/test/foreman_app/app/assets/javascripts/reports.js +27 -0
  69. data/test/foreman_app/app/assets/javascripts/spice.js +53 -0
  70. data/test/foreman_app/app/assets/javascripts/taxonomy.js +18 -0
  71. data/test/foreman_app/app/assets/javascripts/topbar.js +39 -0
  72. data/test/foreman_app/app/assets/javascripts/trends.js +10 -0
  73. data/test/foreman_app/app/assets/stylesheets/application.scss +350 -0
  74. data/test/foreman_app/app/assets/stylesheets/bootstrap_and_overrides.scss +130 -0
  75. data/test/foreman_app/app/assets/stylesheets/charts.scss +138 -0
  76. data/test/foreman_app/app/assets/stylesheets/dashboard.scss +42 -0
  77. data/test/foreman_app/app/assets/stylesheets/login.scss +77 -0
  78. data/test/foreman_app/app/assets/stylesheets/topbar.scss +83 -0
  79. data/test/foreman_app/app/assets/stylesheets/wizard.scss +60 -0
  80. data/test/foreman_app/app/controllers/api/base_controller.rb +162 -0
  81. data/test/foreman_app/app/controllers/api/v1/architectures_controller.rb +53 -0
  82. data/test/foreman_app/app/controllers/api/v1/audits_controller.rb +26 -0
  83. data/test/foreman_app/app/controllers/api/v1/auth_source_ldaps_controller.rb +72 -0
  84. data/test/foreman_app/app/controllers/api/v1/base_controller.rb +12 -0
  85. data/test/foreman_app/app/controllers/api/v1/bookmarks_controller.rb +59 -0
  86. data/test/foreman_app/app/controllers/api/v1/common_parameters_controller.rb +53 -0
  87. data/test/foreman_app/app/controllers/api/v1/compute_resources_controller.rb +71 -0
  88. data/test/foreman_app/app/controllers/api/v1/config_templates_controller.rb +102 -0
  89. data/test/foreman_app/app/controllers/api/v1/dashboard_controller.rb +20 -0
  90. data/test/foreman_app/app/controllers/api/v1/domains_controller.rb +74 -0
  91. data/test/foreman_app/app/controllers/api/v1/environments_controller.rb +50 -0
  92. data/test/foreman_app/app/controllers/api/v1/fact_values_controller.rb +23 -0
  93. data/test/foreman_app/app/controllers/api/v1/home_controller.rb +25 -0
  94. data/test/foreman_app/app/controllers/api/v1/hostgroups_controller.rb +70 -0
  95. data/test/foreman_app/app/controllers/api/v1/hosts_controller.rb +113 -0
  96. data/test/foreman_app/app/controllers/api/v1/images_controller.rb +73 -0
  97. data/test/foreman_app/app/controllers/api/v1/lookup_keys_controller.rb +63 -0
  98. data/test/foreman_app/app/controllers/api/v1/media_controller.rb +75 -0
  99. data/test/foreman_app/app/controllers/api/v1/models_controller.rb +56 -0
  100. data/test/foreman_app/app/controllers/api/v1/operatingsystems_controller.rb +79 -0
  101. data/test/foreman_app/app/controllers/api/v1/ptables_controller.rb +55 -0
  102. data/test/foreman_app/app/controllers/api/v1/puppetclasses_controller.rb +56 -0
  103. data/test/foreman_app/app/controllers/api/v1/reports_controller.rb +43 -0
  104. data/test/foreman_app/app/controllers/api/v1/roles_controller.rb +49 -0
  105. data/test/foreman_app/app/controllers/api/v1/settings_controller.rb +35 -0
  106. data/test/foreman_app/app/controllers/api/v1/smart_proxies_controller.rb +69 -0
  107. data/test/foreman_app/app/controllers/api/v1/subnets_controller.rb +77 -0
  108. data/test/foreman_app/app/controllers/api/v1/template_kinds_controller.rb +14 -0
  109. data/test/foreman_app/app/controllers/api/v1/usergroups_controller.rb +51 -0
  110. data/test/foreman_app/app/controllers/api/v1/users_controller.rb +102 -0
  111. data/test/foreman_app/app/controllers/api/v2/base_controller.rb +12 -0
  112. data/test/foreman_app/app/controllers/api/v2/compute_resources_controller.rb +20 -0
  113. data/test/foreman_app/app/controllers/api/v2/config_templates_controller.rb +26 -0
  114. data/test/foreman_app/app/controllers/api/v2/domains_controller.rb +20 -0
  115. data/test/foreman_app/app/controllers/api/v2/environments_controller.rb +20 -0
  116. data/test/foreman_app/app/controllers/api/v2/host_classes_controller.rb +49 -0
  117. data/test/foreman_app/app/controllers/api/v2/hostgroup_classes_controller.rb +44 -0
  118. data/test/foreman_app/app/controllers/api/v2/hostgroups_controller.rb +20 -0
  119. data/test/foreman_app/app/controllers/api/v2/locations_controller.rb +9 -0
  120. data/test/foreman_app/app/controllers/api/v2/media_controller.rb +20 -0
  121. data/test/foreman_app/app/controllers/api/v2/organizations_controller.rb +9 -0
  122. data/test/foreman_app/app/controllers/api/v2/parameters_controller.rb +131 -0
  123. data/test/foreman_app/app/controllers/api/v2/puppetclasses_controller.rb +60 -0
  124. data/test/foreman_app/app/controllers/api/v2/smart_proxies_controller.rb +20 -0
  125. data/test/foreman_app/app/controllers/api/v2/subnets_controller.rb +20 -0
  126. data/test/foreman_app/app/controllers/api/v2/template_combinations_controller.rb +46 -0
  127. data/test/foreman_app/app/controllers/api/v2/users_controller.rb +20 -0
  128. data/test/foreman_app/app/controllers/application_controller.rb +349 -0
  129. data/test/foreman_app/app/controllers/architectures_controller.rb +51 -0
  130. data/test/foreman_app/app/controllers/audits_controller.rb +19 -0
  131. data/test/foreman_app/app/controllers/auth_source_ldaps_controller.rb +49 -0
  132. data/test/foreman_app/app/controllers/bookmarks_controller.rb +55 -0
  133. data/test/foreman_app/app/controllers/common_parameters_controller.rb +46 -0
  134. data/test/foreman_app/app/controllers/compute_resources_controller.rb +103 -0
  135. data/test/foreman_app/app/controllers/compute_resources_vms_controller.rb +78 -0
  136. data/test/foreman_app/app/controllers/concerns/api/taxonomy_scope.rb +15 -0
  137. data/test/foreman_app/app/controllers/concerns/api/v2/taxonomies_controller.rb +99 -0
  138. data/test/foreman_app/app/controllers/config_templates_controller.rb +105 -0
  139. data/test/foreman_app/app/controllers/dashboard_controller.rb +21 -0
  140. data/test/foreman_app/app/controllers/domains_controller.rb +55 -0
  141. data/test/foreman_app/app/controllers/environments_controller.rb +59 -0
  142. data/test/foreman_app/app/controllers/fact_values_controller.rb +60 -0
  143. data/test/foreman_app/app/controllers/facts_controller.rb +25 -0
  144. data/test/foreman_app/app/controllers/home_controller.rb +37 -0
  145. data/test/foreman_app/app/controllers/hostgroups_controller.rb +115 -0
  146. data/test/foreman_app/app/controllers/hosts_controller.rb +570 -0
  147. data/test/foreman_app/app/controllers/images_controller.rb +57 -0
  148. data/test/foreman_app/app/controllers/locations_controller.rb +4 -0
  149. data/test/foreman_app/app/controllers/lookup_keys_controller.rb +60 -0
  150. data/test/foreman_app/app/controllers/lookup_values_controller.rb +58 -0
  151. data/test/foreman_app/app/controllers/media_controller.rb +56 -0
  152. data/test/foreman_app/app/controllers/models_controller.rb +49 -0
  153. data/test/foreman_app/app/controllers/notices_controller.rb +9 -0
  154. data/test/foreman_app/app/controllers/operatingsystems_controller.rb +77 -0
  155. data/test/foreman_app/app/controllers/organizations_controller.rb +4 -0
  156. data/test/foreman_app/app/controllers/ptables_controller.rb +56 -0
  157. data/test/foreman_app/app/controllers/puppetclasses_controller.rb +85 -0
  158. data/test/foreman_app/app/controllers/reports_controller.rb +60 -0
  159. data/test/foreman_app/app/controllers/roles_controller.rb +78 -0
  160. data/test/foreman_app/app/controllers/settings_controller.rb +21 -0
  161. data/test/foreman_app/app/controllers/smart_proxies/autosign_controller.rb +47 -0
  162. data/test/foreman_app/app/controllers/smart_proxies/puppetca_controller.rb +59 -0
  163. data/test/foreman_app/app/controllers/smart_proxies_controller.rb +43 -0
  164. data/test/foreman_app/app/controllers/statistics_controller.rb +27 -0
  165. data/test/foreman_app/app/controllers/subnets_controller.rb +88 -0
  166. data/test/foreman_app/app/controllers/tasks_controller.rb +16 -0
  167. data/test/foreman_app/app/controllers/topbar_sweeper.rb +24 -0
  168. data/test/foreman_app/app/controllers/trends_controller.rb +56 -0
  169. data/test/foreman_app/app/controllers/unattended_controller.rb +257 -0
  170. data/test/foreman_app/app/controllers/usergroups_controller.rb +44 -0
  171. data/test/foreman_app/app/controllers/users_controller.rb +150 -0
  172. data/test/foreman_app/app/helpers/application_helper.rb +317 -0
  173. data/test/foreman_app/app/helpers/architecture_helper.rb +2 -0
  174. data/test/foreman_app/app/helpers/architectures_helper.rb +2 -0
  175. data/test/foreman_app/app/helpers/audits_helper.rb +138 -0
  176. data/test/foreman_app/app/helpers/auth_source_ldaps_helper.rb +8 -0
  177. data/test/foreman_app/app/helpers/auth_sources_helper.rb +2 -0
  178. data/test/foreman_app/app/helpers/bookmarks_helper.rb +2 -0
  179. data/test/foreman_app/app/helpers/common_parameters_helper.rb +22 -0
  180. data/test/foreman_app/app/helpers/compute_resources_helper.rb +28 -0
  181. data/test/foreman_app/app/helpers/compute_resources_vms_helper.rb +45 -0
  182. data/test/foreman_app/app/helpers/config_templates_helper.rb +10 -0
  183. data/test/foreman_app/app/helpers/dashboard_helper.rb +35 -0
  184. data/test/foreman_app/app/helpers/domains_helper.rb +3 -0
  185. data/test/foreman_app/app/helpers/environments_helper.rb +3 -0
  186. data/test/foreman_app/app/helpers/fact_values_helper.rb +8 -0
  187. data/test/foreman_app/app/helpers/home_helper.rb +116 -0
  188. data/test/foreman_app/app/helpers/hostgroups_helper.rb +14 -0
  189. data/test/foreman_app/app/helpers/hosts_and_hostgroups_helper.rb +99 -0
  190. data/test/foreman_app/app/helpers/hosts_helper.rb +267 -0
  191. data/test/foreman_app/app/helpers/images_helper.rb +11 -0
  192. data/test/foreman_app/app/helpers/layout_helper.rb +214 -0
  193. data/test/foreman_app/app/helpers/lookup_keys_helper.rb +108 -0
  194. data/test/foreman_app/app/helpers/media_helper.rb +2 -0
  195. data/test/foreman_app/app/helpers/medium_helper.rb +2 -0
  196. data/test/foreman_app/app/helpers/model_helper.rb +2 -0
  197. data/test/foreman_app/app/helpers/models_helper.rb +2 -0
  198. data/test/foreman_app/app/helpers/notices_helper.rb +3 -0
  199. data/test/foreman_app/app/helpers/operatingsystems_helper.rb +40 -0
  200. data/test/foreman_app/app/helpers/organization_helper.rb +2 -0
  201. data/test/foreman_app/app/helpers/ptables_helper.rb +2 -0
  202. data/test/foreman_app/app/helpers/puppetclasses_and_environments_helper.rb +39 -0
  203. data/test/foreman_app/app/helpers/puppetclasses_helper.rb +16 -0
  204. data/test/foreman_app/app/helpers/reports_helper.rb +48 -0
  205. data/test/foreman_app/app/helpers/settings_helper.rb +27 -0
  206. data/test/foreman_app/app/helpers/smart_proxies/autosign_helper.rb +6 -0
  207. data/test/foreman_app/app/helpers/smart_proxies/puppetca_helper.rb +20 -0
  208. data/test/foreman_app/app/helpers/smart_proxies_helper.rb +2 -0
  209. data/test/foreman_app/app/helpers/statistics_helper.rb +16 -0
  210. data/test/foreman_app/app/helpers/subnets_helper.rb +9 -0
  211. data/test/foreman_app/app/helpers/tasks_helper.rb +22 -0
  212. data/test/foreman_app/app/helpers/taxonomy_helper.rb +107 -0
  213. data/test/foreman_app/app/helpers/trends_helper.rb +46 -0
  214. data/test/foreman_app/app/helpers/unattended_helper.rb +16 -0
  215. data/test/foreman_app/app/helpers/usergroups_helper.rb +2 -0
  216. data/test/foreman_app/app/helpers/users_helper.rb +21 -0
  217. data/test/foreman_app/app/models/architecture.rb +23 -0
  218. data/test/foreman_app/app/models/archlinux.rb +27 -0
  219. data/test/foreman_app/app/models/auth_source.rb +70 -0
  220. data/test/foreman_app/app/models/auth_source_internal.rb +17 -0
  221. data/test/foreman_app/app/models/auth_source_ldap.rb +147 -0
  222. data/test/foreman_app/app/models/authorization.rb +51 -0
  223. data/test/foreman_app/app/models/bookmark.rb +30 -0
  224. data/test/foreman_app/app/models/classification.rb +126 -0
  225. data/test/foreman_app/app/models/common_parameter.rb +13 -0
  226. data/test/foreman_app/app/models/compute_resource.rb +232 -0
  227. data/test/foreman_app/app/models/config_template.rb +172 -0
  228. data/test/foreman_app/app/models/dashboard.rb +53 -0
  229. data/test/foreman_app/app/models/debian.rb +47 -0
  230. data/test/foreman_app/app/models/domain.rb +90 -0
  231. data/test/foreman_app/app/models/domain_parameter.rb +22 -0
  232. data/test/foreman_app/app/models/environment.rb +57 -0
  233. data/test/foreman_app/app/models/environment_class.rb +25 -0
  234. data/test/foreman_app/app/models/fact_name.rb +17 -0
  235. data/test/foreman_app/app/models/fact_trend.rb +57 -0
  236. data/test/foreman_app/app/models/fact_value.rb +83 -0
  237. data/test/foreman_app/app/models/facts_importer.rb +121 -0
  238. data/test/foreman_app/app/models/feature.rb +4 -0
  239. data/test/foreman_app/app/models/foreman_trend.rb +38 -0
  240. data/test/foreman_app/app/models/group_parameter.rb +22 -0
  241. data/test/foreman_app/app/models/host.rb +30 -0
  242. data/test/foreman_app/app/models/host/base.rb +141 -0
  243. data/test/foreman_app/app/models/host/hostmix.rb +13 -0
  244. data/test/foreman_app/app/models/host/managed.rb +854 -0
  245. data/test/foreman_app/app/models/host_class.rb +13 -0
  246. data/test/foreman_app/app/models/host_common.rb +95 -0
  247. data/test/foreman_app/app/models/host_mailer.rb +77 -0
  248. data/test/foreman_app/app/models/host_observer.rb +19 -0
  249. data/test/foreman_app/app/models/host_parameter.rb +20 -0
  250. data/test/foreman_app/app/models/host_template_helpers.rb +43 -0
  251. data/test/foreman_app/app/models/hostext/search.rb +128 -0
  252. data/test/foreman_app/app/models/hostgroup.rb +159 -0
  253. data/test/foreman_app/app/models/hostgroup_class.rb +15 -0
  254. data/test/foreman_app/app/models/image.rb +14 -0
  255. data/test/foreman_app/app/models/key_pair.rb +5 -0
  256. data/test/foreman_app/app/models/location.rb +25 -0
  257. data/test/foreman_app/app/models/log.rb +25 -0
  258. data/test/foreman_app/app/models/lookup_key.rb +261 -0
  259. data/test/foreman_app/app/models/lookup_value.rb +61 -0
  260. data/test/foreman_app/app/models/medium.rb +58 -0
  261. data/test/foreman_app/app/models/message.rb +19 -0
  262. data/test/foreman_app/app/models/model.rb +14 -0
  263. data/test/foreman_app/app/models/nic.rb +61 -0
  264. data/test/foreman_app/app/models/nic/bmc.rb +22 -0
  265. data/test/foreman_app/app/models/nic/bootable.rb +31 -0
  266. data/test/foreman_app/app/models/nic/interface.rb +23 -0
  267. data/test/foreman_app/app/models/nic/managed.rb +57 -0
  268. data/test/foreman_app/app/models/notice.rb +36 -0
  269. data/test/foreman_app/app/models/operatingsystem.rb +196 -0
  270. data/test/foreman_app/app/models/orchestration.rb +184 -0
  271. data/test/foreman_app/app/models/orchestration/compute.rb +157 -0
  272. data/test/foreman_app/app/models/orchestration/dhcp.rb +154 -0
  273. data/test/foreman_app/app/models/orchestration/dns.rb +130 -0
  274. data/test/foreman_app/app/models/orchestration/puppetca.rb +79 -0
  275. data/test/foreman_app/app/models/orchestration/ssh_provision.rb +115 -0
  276. data/test/foreman_app/app/models/orchestration/tftp.rb +133 -0
  277. data/test/foreman_app/app/models/organization.rb +24 -0
  278. data/test/foreman_app/app/models/os_default_template.rb +11 -0
  279. data/test/foreman_app/app/models/os_parameter.rb +16 -0
  280. data/test/foreman_app/app/models/parameter.rb +34 -0
  281. data/test/foreman_app/app/models/ptable.rb +25 -0
  282. data/test/foreman_app/app/models/puppet_class_importer.rb +269 -0
  283. data/test/foreman_app/app/models/puppetclass.rb +172 -0
  284. data/test/foreman_app/app/models/redhat.rb +61 -0
  285. data/test/foreman_app/app/models/report.rb +356 -0
  286. data/test/foreman_app/app/models/report_common.rb +52 -0
  287. data/test/foreman_app/app/models/role.rb +156 -0
  288. data/test/foreman_app/app/models/setting.rb +174 -0
  289. data/test/foreman_app/app/models/setting/auth.rb +29 -0
  290. data/test/foreman_app/app/models/setting/general.rb +27 -0
  291. data/test/foreman_app/app/models/setting/provisioning.rb +28 -0
  292. data/test/foreman_app/app/models/setting/puppet.rb +36 -0
  293. data/test/foreman_app/app/models/smart_proxies/puppet_ca.rb +66 -0
  294. data/test/foreman_app/app/models/smart_proxy.rb +96 -0
  295. data/test/foreman_app/app/models/solaris.rb +114 -0
  296. data/test/foreman_app/app/models/source.rb +18 -0
  297. data/test/foreman_app/app/models/subnet.rb +146 -0
  298. data/test/foreman_app/app/models/subnet_domain.rb +12 -0
  299. data/test/foreman_app/app/models/suse.rb +22 -0
  300. data/test/foreman_app/app/models/tax_host.rb +181 -0
  301. data/test/foreman_app/app/models/taxable_taxonomy.rb +14 -0
  302. data/test/foreman_app/app/models/taxonomix.rb +47 -0
  303. data/test/foreman_app/app/models/taxonomy.rb +135 -0
  304. data/test/foreman_app/app/models/template_combination.rb +12 -0
  305. data/test/foreman_app/app/models/template_kind.rb +6 -0
  306. data/test/foreman_app/app/models/token.rb +23 -0
  307. data/test/foreman_app/app/models/trend.rb +22 -0
  308. data/test/foreman_app/app/models/trend_counter.rb +7 -0
  309. data/test/foreman_app/app/models/trend_importer.rb +50 -0
  310. data/test/foreman_app/app/models/user.rb +251 -0
  311. data/test/foreman_app/app/models/user_fact.rb +26 -0
  312. data/test/foreman_app/app/models/user_hostgroup.rb +10 -0
  313. data/test/foreman_app/app/models/user_role.rb +32 -0
  314. data/test/foreman_app/app/models/usergroup.rb +61 -0
  315. data/test/foreman_app/app/models/usergroup_member.rb +5 -0
  316. data/test/foreman_app/app/models/windows.rb +20 -0
  317. data/test/foreman_app/app/views/api/v1/architectures/create.json.rabl +3 -0
  318. data/test/foreman_app/app/views/api/v1/architectures/index.json.rabl +3 -0
  319. data/test/foreman_app/app/views/api/v1/architectures/show.json.rabl +3 -0
  320. data/test/foreman_app/app/views/api/v1/audits/index.json.rabl +3 -0
  321. data/test/foreman_app/app/views/api/v1/audits/show.json.rabl +5 -0
  322. data/test/foreman_app/app/views/api/v1/auth_source_ldaps/index.json.rabl +3 -0
  323. data/test/foreman_app/app/views/api/v1/auth_source_ldaps/show.json.rabl +3 -0
  324. data/test/foreman_app/app/views/api/v1/bookmarks/create.json.rabl +2 -0
  325. data/test/foreman_app/app/views/api/v1/bookmarks/index.json.rabl +3 -0
  326. data/test/foreman_app/app/views/api/v1/bookmarks/show.json.rabl +2 -0
  327. data/test/foreman_app/app/views/api/v1/bookmarks/update.json.rabl +8 -0
  328. data/test/foreman_app/app/views/api/v1/common_parameters/create.json.rabl +3 -0
  329. data/test/foreman_app/app/views/api/v1/common_parameters/index.json.rabl +3 -0
  330. data/test/foreman_app/app/views/api/v1/common_parameters/show.json.rabl +3 -0
  331. data/test/foreman_app/app/views/api/v1/compute_resources/create.json.rabl +3 -0
  332. data/test/foreman_app/app/views/api/v1/compute_resources/ec2.json.rabl +1 -0
  333. data/test/foreman_app/app/views/api/v1/compute_resources/index.json.rabl +3 -0
  334. data/test/foreman_app/app/views/api/v1/compute_resources/libvirt.json.rabl +0 -0
  335. data/test/foreman_app/app/views/api/v1/compute_resources/openstack.json.rabl +1 -0
  336. data/test/foreman_app/app/views/api/v1/compute_resources/ovirt.json.rabl +1 -0
  337. data/test/foreman_app/app/views/api/v1/compute_resources/rackspace.json.rabl +1 -0
  338. data/test/foreman_app/app/views/api/v1/compute_resources/show.json.rabl +8 -0
  339. data/test/foreman_app/app/views/api/v1/compute_resources/vmware.json.rabl +1 -0
  340. data/test/foreman_app/app/views/api/v1/config_templates/create.json.rabl +3 -0
  341. data/test/foreman_app/app/views/api/v1/config_templates/index.json.rabl +3 -0
  342. data/test/foreman_app/app/views/api/v1/config_templates/show.json.rabl +11 -0
  343. data/test/foreman_app/app/views/api/v1/domains/index.json.rabl +3 -0
  344. data/test/foreman_app/app/views/api/v1/domains/show.json.rabl +2 -0
  345. data/test/foreman_app/app/views/api/v1/environments/create.json.rabl +3 -0
  346. data/test/foreman_app/app/views/api/v1/environments/index.json.rabl +3 -0
  347. data/test/foreman_app/app/views/api/v1/environments/show.json.rabl +5 -0
  348. data/test/foreman_app/app/views/api/v1/errors/access_denied.json.rabl +4 -0
  349. data/test/foreman_app/app/views/api/v1/errors/not_found.json.rabl +3 -0
  350. data/test/foreman_app/app/views/api/v1/errors/param_error.json.rabl +7 -0
  351. data/test/foreman_app/app/views/api/v1/errors/route_error.json.rabl +4 -0
  352. data/test/foreman_app/app/views/api/v1/errors/standard_error.json.rabl +5 -0
  353. data/test/foreman_app/app/views/api/v1/errors/unauthorized.json.rabl +3 -0
  354. data/test/foreman_app/app/views/api/v1/errors/unprocessable_entity.json.rabl +6 -0
  355. data/test/foreman_app/app/views/api/v1/home/index.json.rabl +24 -0
  356. data/test/foreman_app/app/views/api/v1/home/status.json.rabl +6 -0
  357. data/test/foreman_app/app/views/api/v1/hostgroups/create.json.rabl +3 -0
  358. data/test/foreman_app/app/views/api/v1/hostgroups/index.json.rabl +3 -0
  359. data/test/foreman_app/app/views/api/v1/hostgroups/show.json.rabl +3 -0
  360. data/test/foreman_app/app/views/api/v1/hosts/create.json.rabl +3 -0
  361. data/test/foreman_app/app/views/api/v1/hosts/index.json.rabl +3 -0
  362. data/test/foreman_app/app/views/api/v1/hosts/show.json.rabl +12 -0
  363. data/test/foreman_app/app/views/api/v1/images/index.json.rabl +3 -0
  364. data/test/foreman_app/app/views/api/v1/images/show.json.rabl +3 -0
  365. data/test/foreman_app/app/views/api/v1/lookup_keys/index.json.rabl +3 -0
  366. data/test/foreman_app/app/views/api/v1/lookup_keys/show.json.rabl +3 -0
  367. data/test/foreman_app/app/views/api/v1/media/index.json.rabl +3 -0
  368. data/test/foreman_app/app/views/api/v1/media/show.json.rabl +9 -0
  369. data/test/foreman_app/app/views/api/v1/models/index.rabl +4 -0
  370. data/test/foreman_app/app/views/api/v1/models/show.rabl +3 -0
  371. data/test/foreman_app/app/views/api/v1/operatingsystems/create.json.rabl +4 -0
  372. data/test/foreman_app/app/views/api/v1/operatingsystems/index.json.rabl +3 -0
  373. data/test/foreman_app/app/views/api/v1/operatingsystems/show.json.rabl +22 -0
  374. data/test/foreman_app/app/views/api/v1/operatingsystems/update.json.rabl +3 -0
  375. data/test/foreman_app/app/views/api/v1/ptables/index.json.rabl +3 -0
  376. data/test/foreman_app/app/views/api/v1/ptables/show.json.rabl +3 -0
  377. data/test/foreman_app/app/views/api/v1/reports/index.json.rabl +3 -0
  378. data/test/foreman_app/app/views/api/v1/reports/show.json.rabl +16 -0
  379. data/test/foreman_app/app/views/api/v1/roles/create.json.rabl +3 -0
  380. data/test/foreman_app/app/views/api/v1/roles/index.json.rabl +3 -0
  381. data/test/foreman_app/app/views/api/v1/roles/show.json.rabl +3 -0
  382. data/test/foreman_app/app/views/api/v1/settings/index.json.rabl +3 -0
  383. data/test/foreman_app/app/views/api/v1/settings/show.json.rabl +3 -0
  384. data/test/foreman_app/app/views/api/v1/smart_proxies/index.json.rabl +3 -0
  385. data/test/foreman_app/app/views/api/v1/smart_proxies/show.json.rabl +9 -0
  386. data/test/foreman_app/app/views/api/v1/subnets/create.json.rabl +3 -0
  387. data/test/foreman_app/app/views/api/v1/subnets/index.json.rabl +5 -0
  388. data/test/foreman_app/app/views/api/v1/subnets/show.json.rabl +17 -0
  389. data/test/foreman_app/app/views/api/v1/subnets/update.json.rabl +3 -0
  390. data/test/foreman_app/app/views/api/v1/template_kinds/index.json.rabl +3 -0
  391. data/test/foreman_app/app/views/api/v1/template_kinds/show.json.rabl +3 -0
  392. data/test/foreman_app/app/views/api/v1/usergroups/index.json.rabl +3 -0
  393. data/test/foreman_app/app/views/api/v1/usergroups/show.json.rabl +3 -0
  394. data/test/foreman_app/app/views/api/v1/users/create.json.rabl +3 -0
  395. data/test/foreman_app/app/views/api/v1/users/index.json.rabl +5 -0
  396. data/test/foreman_app/app/views/api/v1/users/show.json.rabl +13 -0
  397. data/test/foreman_app/app/views/api/v2/config_templates/create.json.rabl +3 -0
  398. data/test/foreman_app/app/views/api/v2/config_templates/index.json.rabl +3 -0
  399. data/test/foreman_app/app/views/api/v2/config_templates/show.json.rabl +33 -0
  400. data/test/foreman_app/app/views/api/v2/errors/access_denied.json.rabl +4 -0
  401. data/test/foreman_app/app/views/api/v2/errors/not_found.json.rabl +3 -0
  402. data/test/foreman_app/app/views/api/v2/errors/param_error.json.rabl +7 -0
  403. data/test/foreman_app/app/views/api/v2/errors/route_error.json.rabl +4 -0
  404. data/test/foreman_app/app/views/api/v2/errors/standard_error.json.rabl +5 -0
  405. data/test/foreman_app/app/views/api/v2/errors/unauthorized.json.rabl +3 -0
  406. data/test/foreman_app/app/views/api/v2/errors/unprocessable_entity.json.rabl +6 -0
  407. data/test/foreman_app/app/views/api/v2/parameters/create.json.rabl +3 -0
  408. data/test/foreman_app/app/views/api/v2/parameters/index.json.rabl +3 -0
  409. data/test/foreman_app/app/views/api/v2/parameters/show.json.rabl +3 -0
  410. data/test/foreman_app/app/views/api/v2/parameters/update.json.rabl +3 -0
  411. data/test/foreman_app/app/views/api/v2/puppetclasses/show.json.rabl +7 -0
  412. data/test/foreman_app/app/views/api/v2/taxonomies/index.json.rabl +3 -0
  413. data/test/foreman_app/app/views/api/v2/taxonomies/show.json.rabl +7 -0
  414. data/test/foreman_app/app/views/api/v2/taxonomies/update.json.rabl +3 -0
  415. data/test/foreman_app/app/views/api/v2/template_combinations/create.json.rabl +3 -0
  416. data/test/foreman_app/app/views/api/v2/template_combinations/index.json.rabl +3 -0
  417. data/test/foreman_app/app/views/api/v2/template_combinations/show.json.rabl +3 -0
  418. data/test/foreman_app/app/views/architectures/_form.html.erb +6 -0
  419. data/test/foreman_app/app/views/architectures/edit.html.erb +3 -0
  420. data/test/foreman_app/app/views/architectures/index.html.erb +21 -0
  421. data/test/foreman_app/app/views/architectures/new.html.erb +3 -0
  422. data/test/foreman_app/app/views/architectures/welcome.html.erb +14 -0
  423. data/test/foreman_app/app/views/audits/_list.erb +24 -0
  424. data/test/foreman_app/app/views/audits/index.html.erb +6 -0
  425. data/test/foreman_app/app/views/audits/show.html.erb +56 -0
  426. data/test/foreman_app/app/views/auth_source_ldaps/_form.html.erb +23 -0
  427. data/test/foreman_app/app/views/auth_source_ldaps/edit.html.erb +3 -0
  428. data/test/foreman_app/app/views/auth_source_ldaps/index.html.erb +22 -0
  429. data/test/foreman_app/app/views/auth_source_ldaps/new.html.erb +3 -0
  430. data/test/foreman_app/app/views/auth_source_ldaps/welcome.html.erb +8 -0
  431. data/test/foreman_app/app/views/bookmarks/_form.html.erb +8 -0
  432. data/test/foreman_app/app/views/bookmarks/_list.html.erb +7 -0
  433. data/test/foreman_app/app/views/bookmarks/edit.html.erb +3 -0
  434. data/test/foreman_app/app/views/bookmarks/index.html.erb +25 -0
  435. data/test/foreman_app/app/views/bookmarks/new.html.erb +3 -0
  436. data/test/foreman_app/app/views/bookmarks/welcome.html.erb +8 -0
  437. data/test/foreman_app/app/views/common/403.html.erb +9 -0
  438. data/test/foreman_app/app/views/common/404.html.erb +8 -0
  439. data/test/foreman_app/app/views/common/500.html.erb +19 -0
  440. data/test/foreman_app/app/views/common/_domain.html.erb +9 -0
  441. data/test/foreman_app/app/views/common/_domain_subnet.html.erb +10 -0
  442. data/test/foreman_app/app/views/common/_edit_habtm.erb +20 -0
  443. data/test/foreman_app/app/views/common/_notice.erb +20 -0
  444. data/test/foreman_app/app/views/common/_puppetclasses_or_envs_changed.html.erb +32 -0
  445. data/test/foreman_app/app/views/common/_searchbar.erb +37 -0
  446. data/test/foreman_app/app/views/common/_show_habtm.html.erb +1 -0
  447. data/test/foreman_app/app/views/common/os_selection/_architecture.html.erb +9 -0
  448. data/test/foreman_app/app/views/common/os_selection/_image_details.html.erb +7 -0
  449. data/test/foreman_app/app/views/common/os_selection/_initial.html.erb +15 -0
  450. data/test/foreman_app/app/views/common/os_selection/_operatingsystem.html.erb +15 -0
  451. data/test/foreman_app/app/views/common_parameters/_form.html.erb +6 -0
  452. data/test/foreman_app/app/views/common_parameters/_inherited_parameters.erb +23 -0
  453. data/test/foreman_app/app/views/common_parameters/_parameter.erb +14 -0
  454. data/test/foreman_app/app/views/common_parameters/_parameters.erb +6 -0
  455. data/test/foreman_app/app/views/common_parameters/_puppetclass_parameter.erb +16 -0
  456. data/test/foreman_app/app/views/common_parameters/_puppetclasses_parameters.erb +7 -0
  457. data/test/foreman_app/app/views/common_parameters/_show_parameter.html.erb +5 -0
  458. data/test/foreman_app/app/views/common_parameters/edit.html.erb +3 -0
  459. data/test/foreman_app/app/views/common_parameters/index.html.erb +22 -0
  460. data/test/foreman_app/app/views/common_parameters/new.html.erb +3 -0
  461. data/test/foreman_app/app/views/compute_resources/_form.html.erb +44 -0
  462. data/test/foreman_app/app/views/compute_resources/edit.html.erb +3 -0
  463. data/test/foreman_app/app/views/compute_resources/form/_ec2.html.erb +8 -0
  464. data/test/foreman_app/app/views/compute_resources/form/_libvirt.html.erb +9 -0
  465. data/test/foreman_app/app/views/compute_resources/form/_openstack.html.erb +9 -0
  466. data/test/foreman_app/app/views/compute_resources/form/_ovirt.html.erb +8 -0
  467. data/test/foreman_app/app/views/compute_resources/form/_rackspace.html.erb +8 -0
  468. data/test/foreman_app/app/views/compute_resources/form/_vmware.html.erb +8 -0
  469. data/test/foreman_app/app/views/compute_resources/index.html.erb +24 -0
  470. data/test/foreman_app/app/views/compute_resources/new.html.erb +3 -0
  471. data/test/foreman_app/app/views/compute_resources/show.html.erb +56 -0
  472. data/test/foreman_app/app/views/compute_resources_vms/form/_ec2.html.erb +10 -0
  473. data/test/foreman_app/app/views/compute_resources_vms/form/_libvirt.html.erb +33 -0
  474. data/test/foreman_app/app/views/compute_resources_vms/form/_openstack.html.erb +9 -0
  475. data/test/foreman_app/app/views/compute_resources_vms/form/_ovirt.html.erb +43 -0
  476. data/test/foreman_app/app/views/compute_resources_vms/form/_rackspace.html.erb +7 -0
  477. data/test/foreman_app/app/views/compute_resources_vms/form/_vmware.html.erb +37 -0
  478. data/test/foreman_app/app/views/compute_resources_vms/form/libvirt/_network.html.erb +9 -0
  479. data/test/foreman_app/app/views/compute_resources_vms/form/libvirt/_volume.html.erb +6 -0
  480. data/test/foreman_app/app/views/compute_resources_vms/form/ovirt/_network.html.erb +13 -0
  481. data/test/foreman_app/app/views/compute_resources_vms/form/ovirt/_volume.html.erb +18 -0
  482. data/test/foreman_app/app/views/compute_resources_vms/form/vmware/_network.html.erb +8 -0
  483. data/test/foreman_app/app/views/compute_resources_vms/form/vmware/_volume.html.erb +8 -0
  484. data/test/foreman_app/app/views/compute_resources_vms/index.html.erb +3 -0
  485. data/test/foreman_app/app/views/compute_resources_vms/index/_ec2.html.erb +25 -0
  486. data/test/foreman_app/app/views/compute_resources_vms/index/_libvirt.html.erb +23 -0
  487. data/test/foreman_app/app/views/compute_resources_vms/index/_openstack.html.erb +23 -0
  488. data/test/foreman_app/app/views/compute_resources_vms/index/_ovirt.html.erb +24 -0
  489. data/test/foreman_app/app/views/compute_resources_vms/index/_rackspace.html.erb +22 -0
  490. data/test/foreman_app/app/views/compute_resources_vms/index/_vmware.html.erb +27 -0
  491. data/test/foreman_app/app/views/compute_resources_vms/new.html.erb +9 -0
  492. data/test/foreman_app/app/views/compute_resources_vms/show.html.erb +8 -0
  493. data/test/foreman_app/app/views/compute_resources_vms/show/_ec2.html.erb +19 -0
  494. data/test/foreman_app/app/views/compute_resources_vms/show/_libvirt.html.erb +53 -0
  495. data/test/foreman_app/app/views/compute_resources_vms/show/_openstack.html.erb +19 -0
  496. data/test/foreman_app/app/views/compute_resources_vms/show/_ovirt.html.erb +47 -0
  497. data/test/foreman_app/app/views/compute_resources_vms/show/_rackspace.html.erb +19 -0
  498. data/test/foreman_app/app/views/compute_resources_vms/show/_vmware.html.erb +16 -0
  499. data/test/foreman_app/app/views/config_templates/_combination.html.erb +5 -0
  500. data/test/foreman_app/app/views/config_templates/_combinations.html.erb +6 -0
  501. data/test/foreman_app/app/views/config_templates/_diff.erb +14 -0
  502. data/test/foreman_app/app/views/config_templates/_form.html.erb +94 -0
  503. data/test/foreman_app/app/views/config_templates/edit.html.erb +3 -0
  504. data/test/foreman_app/app/views/config_templates/index.html.erb +31 -0
  505. data/test/foreman_app/app/views/config_templates/new.html.erb +3 -0
  506. data/test/foreman_app/app/views/dashboard/_status_table.html.erb +32 -0
  507. data/test/foreman_app/app/views/dashboard/index.html.erb +24 -0
  508. data/test/foreman_app/app/views/dashboard/welcome.html.erb +118 -0
  509. data/test/foreman_app/app/views/domains/_form.html.erb +43 -0
  510. data/test/foreman_app/app/views/domains/edit.html.erb +3 -0
  511. data/test/foreman_app/app/views/domains/index.html.erb +20 -0
  512. data/test/foreman_app/app/views/domains/new.html.erb +3 -0
  513. data/test/foreman_app/app/views/domains/welcome.html.erb +13 -0
  514. data/test/foreman_app/app/views/environments/_form.html.erb +38 -0
  515. data/test/foreman_app/app/views/environments/edit.html.erb +3 -0
  516. data/test/foreman_app/app/views/environments/index.html.erb +27 -0
  517. data/test/foreman_app/app/views/environments/new.html.erb +3 -0
  518. data/test/foreman_app/app/views/environments/welcome.html.erb +15 -0
  519. data/test/foreman_app/app/views/fact_values/index.html.erb +40 -0
  520. data/test/foreman_app/app/views/fact_values/welcome.html.erb +9 -0
  521. data/test/foreman_app/app/views/facts/show.html.erb +3 -0
  522. data/test/foreman_app/app/views/home/_location_dropdown.html.erb +17 -0
  523. data/test/foreman_app/app/views/home/_org_switcher.html.erb +11 -0
  524. data/test/foreman_app/app/views/home/_organization_dropdown.html.erb +17 -0
  525. data/test/foreman_app/app/views/home/_settings.html.erb +22 -0
  526. data/test/foreman_app/app/views/home/_topbar.html.erb +33 -0
  527. data/test/foreman_app/app/views/home/_user_dropdown.html.erb +10 -0
  528. data/test/foreman_app/app/views/host_mailer/_active_hosts.html.erb +30 -0
  529. data/test/foreman_app/app/views/host_mailer/_link_to_host.html.erb +5 -0
  530. data/test/foreman_app/app/views/host_mailer/_list.html.erb +13 -0
  531. data/test/foreman_app/app/views/host_mailer/_nonactive_hosts.html.erb +30 -0
  532. data/test/foreman_app/app/views/host_mailer/error_state.html.erb +10 -0
  533. data/test/foreman_app/app/views/host_mailer/summary.html.erb +17 -0
  534. data/test/foreman_app/app/views/hostgroups/_form.html.erb +69 -0
  535. data/test/foreman_app/app/views/hostgroups/edit.html.erb +3 -0
  536. data/test/foreman_app/app/views/hostgroups/index.html.erb +23 -0
  537. data/test/foreman_app/app/views/hostgroups/new.html.erb +3 -0
  538. data/test/foreman_app/app/views/hostgroups/welcome.html.erb +20 -0
  539. data/test/foreman_app/app/views/hosts/_assign_hosts.html.erb +42 -0
  540. data/test/foreman_app/app/views/hosts/_compute.html.erb +12 -0
  541. data/test/foreman_app/app/views/hosts/_conflicts.html.erb +28 -0
  542. data/test/foreman_app/app/views/hosts/_form.html.erb +109 -0
  543. data/test/foreman_app/app/views/hosts/_interfaces.html.erb +29 -0
  544. data/test/foreman_app/app/views/hosts/_list.html.erb +47 -0
  545. data/test/foreman_app/app/views/hosts/_metrics.html.erb +13 -0
  546. data/test/foreman_app/app/views/hosts/_operating_system.erb +41 -0
  547. data/test/foreman_app/app/views/hosts/_overview.html.erb +25 -0
  548. data/test/foreman_app/app/views/hosts/_progress.erb +8 -0
  549. data/test/foreman_app/app/views/hosts/_provisioning.html.erb +9 -0
  550. data/test/foreman_app/app/views/hosts/_selected_hosts.html.erb +31 -0
  551. data/test/foreman_app/app/views/hosts/_taxonomy_import_option.html.erb +2 -0
  552. data/test/foreman_app/app/views/hosts/_unattended.html.erb +34 -0
  553. data/test/foreman_app/app/views/hosts/assign_hosts.html.erb +5 -0
  554. data/test/foreman_app/app/views/hosts/console/log.html.erb +17 -0
  555. data/test/foreman_app/app/views/hosts/console/spice.html.erb +18 -0
  556. data/test/foreman_app/app/views/hosts/console/vnc.html.erb +21 -0
  557. data/test/foreman_app/app/views/hosts/edit.html.erb +7 -0
  558. data/test/foreman_app/app/views/hosts/index.html.erb +4 -0
  559. data/test/foreman_app/app/views/hosts/multiple_build.html.erb +6 -0
  560. data/test/foreman_app/app/views/hosts/multiple_destroy.html.erb +6 -0
  561. data/test/foreman_app/app/views/hosts/multiple_disable.html.erb +6 -0
  562. data/test/foreman_app/app/views/hosts/multiple_enable.html.erb +6 -0
  563. data/test/foreman_app/app/views/hosts/multiple_parameters.html.erb +12 -0
  564. data/test/foreman_app/app/views/hosts/multiple_puppetrun.html.erb +5 -0
  565. data/test/foreman_app/app/views/hosts/new.html.erb +3 -0
  566. data/test/foreman_app/app/views/hosts/query.html.erb +3 -0
  567. data/test/foreman_app/app/views/hosts/select_multiple_environment.html.erb +8 -0
  568. data/test/foreman_app/app/views/hosts/select_multiple_hostgroup.html.erb +6 -0
  569. data/test/foreman_app/app/views/hosts/select_multiple_location.html.erb +6 -0
  570. data/test/foreman_app/app/views/hosts/select_multiple_organization.html.erb +6 -0
  571. data/test/foreman_app/app/views/hosts/show.html.erb +55 -0
  572. data/test/foreman_app/app/views/hosts/storeconfig_klasses.html.erb +12 -0
  573. data/test/foreman_app/app/views/hosts/update_multiple_parameters.html.erb +18 -0
  574. data/test/foreman_app/app/views/hosts/welcome.html.erb +10 -0
  575. data/test/foreman_app/app/views/images/_form.html.erb +16 -0
  576. data/test/foreman_app/app/views/images/edit.html.erb +3 -0
  577. data/test/foreman_app/app/views/images/index.html.erb +26 -0
  578. data/test/foreman_app/app/views/images/new.html.erb +4 -0
  579. data/test/foreman_app/app/views/layouts/application.html.erb +69 -0
  580. data/test/foreman_app/app/views/locations/welcome.html.erb +9 -0
  581. data/test/foreman_app/app/views/lookup_keys/_fields.html.erb +42 -0
  582. data/test/foreman_app/app/views/lookup_keys/_value.html.erb +6 -0
  583. data/test/foreman_app/app/views/lookup_keys/edit.html.erb +7 -0
  584. data/test/foreman_app/app/views/lookup_keys/index.html.erb +22 -0
  585. data/test/foreman_app/app/views/media/_form.html.erb +53 -0
  586. data/test/foreman_app/app/views/media/edit.html.erb +3 -0
  587. data/test/foreman_app/app/views/media/index.html.erb +26 -0
  588. data/test/foreman_app/app/views/media/new.html.erb +3 -0
  589. data/test/foreman_app/app/views/media/welcome.html.erb +19 -0
  590. data/test/foreman_app/app/views/models/_form.html.erb +8 -0
  591. data/test/foreman_app/app/views/models/edit.html.erb +3 -0
  592. data/test/foreman_app/app/views/models/index.html.erb +26 -0
  593. data/test/foreman_app/app/views/models/new.html.erb +3 -0
  594. data/test/foreman_app/app/views/operatingsystems/_form.html.erb +38 -0
  595. data/test/foreman_app/app/views/operatingsystems/_template_defaults.html.erb +19 -0
  596. data/test/foreman_app/app/views/operatingsystems/_templates.html.erb +2 -0
  597. data/test/foreman_app/app/views/operatingsystems/edit.html.erb +3 -0
  598. data/test/foreman_app/app/views/operatingsystems/index.html.erb +22 -0
  599. data/test/foreman_app/app/views/operatingsystems/new.html.erb +3 -0
  600. data/test/foreman_app/app/views/organizations/welcome.html.erb +14 -0
  601. data/test/foreman_app/app/views/ptables/_form.html.erb +8 -0
  602. data/test/foreman_app/app/views/ptables/edit.html.erb +3 -0
  603. data/test/foreman_app/app/views/ptables/index.html.erb +23 -0
  604. data/test/foreman_app/app/views/ptables/new.html.erb +3 -0
  605. data/test/foreman_app/app/views/ptables/welcome.html.erb +52 -0
  606. data/test/foreman_app/app/views/puppetclasses/_class_parameters.html.erb +16 -0
  607. data/test/foreman_app/app/views/puppetclasses/_class_selection.html.erb +44 -0
  608. data/test/foreman_app/app/views/puppetclasses/_classes.html.erb +23 -0
  609. data/test/foreman_app/app/views/puppetclasses/_classes_parameters.html.erb +14 -0
  610. data/test/foreman_app/app/views/puppetclasses/_form.html.erb +90 -0
  611. data/test/foreman_app/app/views/puppetclasses/_selectedClasses.html.erb +4 -0
  612. data/test/foreman_app/app/views/puppetclasses/edit.html.erb +3 -0
  613. data/test/foreman_app/app/views/puppetclasses/index.html.erb +33 -0
  614. data/test/foreman_app/app/views/puppetclasses/new.html.erb +3 -0
  615. data/test/foreman_app/app/views/puppetclasses/no_route.html.erb +11 -0
  616. data/test/foreman_app/app/views/reports/_list.html.erb +34 -0
  617. data/test/foreman_app/app/views/reports/_metrics.html.erb +25 -0
  618. data/test/foreman_app/app/views/reports/_output.html.erb +13 -0
  619. data/test/foreman_app/app/views/reports/index.html.erb +3 -0
  620. data/test/foreman_app/app/views/reports/show.html.erb +37 -0
  621. data/test/foreman_app/app/views/reports/welcome.html.erb +11 -0
  622. data/test/foreman_app/app/views/roles/_form.html.erb +28 -0
  623. data/test/foreman_app/app/views/roles/edit.html.erb +3 -0
  624. data/test/foreman_app/app/views/roles/index.html.erb +28 -0
  625. data/test/foreman_app/app/views/roles/new.html.erb +3 -0
  626. data/test/foreman_app/app/views/roles/report.html.erb +52 -0
  627. data/test/foreman_app/app/views/settings/index.html.erb +29 -0
  628. data/test/foreman_app/app/views/smart_proxies/_form.html.erb +38 -0
  629. data/test/foreman_app/app/views/smart_proxies/autosign/_form.html.erb +9 -0
  630. data/test/foreman_app/app/views/smart_proxies/autosign/index.html.erb +21 -0
  631. data/test/foreman_app/app/views/smart_proxies/autosign/new.html.erb +3 -0
  632. data/test/foreman_app/app/views/smart_proxies/edit.html.erb +3 -0
  633. data/test/foreman_app/app/views/smart_proxies/index.html.erb +37 -0
  634. data/test/foreman_app/app/views/smart_proxies/new.html.erb +3 -0
  635. data/test/foreman_app/app/views/smart_proxies/puppetca/index.html.erb +36 -0
  636. data/test/foreman_app/app/views/statistics/index.html.erb +5 -0
  637. data/test/foreman_app/app/views/subnets/_fields.html.erb +17 -0
  638. data/test/foreman_app/app/views/subnets/_form.html.erb +34 -0
  639. data/test/foreman_app/app/views/subnets/edit.html.erb +3 -0
  640. data/test/foreman_app/app/views/subnets/import.html.erb +26 -0
  641. data/test/foreman_app/app/views/subnets/index.html.erb +28 -0
  642. data/test/foreman_app/app/views/subnets/new.html.erb +3 -0
  643. data/test/foreman_app/app/views/tasks/_list.html.erb +5 -0
  644. data/test/foreman_app/app/views/tasks/show.html.erb +1 -0
  645. data/test/foreman_app/app/views/taxonomies/_form.html.erb +111 -0
  646. data/test/foreman_app/app/views/taxonomies/_step1.html.erb +14 -0
  647. data/test/foreman_app/app/views/taxonomies/_step2.html.erb +18 -0
  648. data/test/foreman_app/app/views/taxonomies/clone.html.erb +3 -0
  649. data/test/foreman_app/app/views/taxonomies/edit.html.erb +4 -0
  650. data/test/foreman_app/app/views/taxonomies/index.html.erb +39 -0
  651. data/test/foreman_app/app/views/taxonomies/mismatches.html.erb +37 -0
  652. data/test/foreman_app/app/views/taxonomies/new.html.erb +3 -0
  653. data/test/foreman_app/app/views/taxonomies/step2.html.erb +3 -0
  654. data/test/foreman_app/app/views/trends/_fields.html.erb +7 -0
  655. data/test/foreman_app/app/views/trends/_form.html.erb +9 -0
  656. data/test/foreman_app/app/views/trends/_hosts.html.erb +13 -0
  657. data/test/foreman_app/app/views/trends/edit.html.erb +33 -0
  658. data/test/foreman_app/app/views/trends/index.html.erb +47 -0
  659. data/test/foreman_app/app/views/trends/new.html.erb +3 -0
  660. data/test/foreman_app/app/views/trends/show.html.erb +19 -0
  661. data/test/foreman_app/app/views/unattended/autowaik.xml.erb +2 -0
  662. data/test/foreman_app/app/views/unattended/autoyast.xml.erb +80 -0
  663. data/test/foreman_app/app/views/unattended/gpxe_kickstart_config.erb +5 -0
  664. data/test/foreman_app/app/views/unattended/grubby.erb +9 -0
  665. data/test/foreman_app/app/views/unattended/jumpstart.html.erb +10 -0
  666. data/test/foreman_app/app/views/unattended/jumpstart_finish.html.erb +51 -0
  667. data/test/foreman_app/app/views/unattended/kickstart.html.erb +71 -0
  668. data/test/foreman_app/app/views/unattended/preseed.html.erb +66 -0
  669. data/test/foreman_app/app/views/unattended/preseed_finish.html.erb +7 -0
  670. data/test/foreman_app/app/views/unattended/pxe_autowaik.erb +3 -0
  671. data/test/foreman_app/app/views/unattended/pxe_autoyast.erb +4 -0
  672. data/test/foreman_app/app/views/unattended/pxe_debian_config.erb +4 -0
  673. data/test/foreman_app/app/views/unattended/pxe_default.erb +23 -0
  674. data/test/foreman_app/app/views/unattended/pxe_jumpstart_config.erb +10 -0
  675. data/test/foreman_app/app/views/unattended/pxe_kickstart_config.erb +4 -0
  676. data/test/foreman_app/app/views/unattended/pxe_local.erb +11 -0
  677. data/test/foreman_app/app/views/unattended/snippets/_epel.erb +15 -0
  678. data/test/foreman_app/app/views/unattended/snippets/_http_proxy.erb +8 -0
  679. data/test/foreman_app/app/views/unattended/snippets/_puppet.conf.erb +15 -0
  680. data/test/foreman_app/app/views/unattended/snippets/_puppet.init.erb +8 -0
  681. data/test/foreman_app/app/views/unattended/snippets/_redhat_register.erb +67 -0
  682. data/test/foreman_app/app/views/unattended/snippets/_vmware.erb +62 -0
  683. data/test/foreman_app/app/views/usergroups/_form.html.erb +7 -0
  684. data/test/foreman_app/app/views/usergroups/edit.html.erb +3 -0
  685. data/test/foreman_app/app/views/usergroups/index.html.erb +24 -0
  686. data/test/foreman_app/app/views/usergroups/new.html.erb +3 -0
  687. data/test/foreman_app/app/views/users/_filters.html.erb +38 -0
  688. data/test/foreman_app/app/views/users/_form.html.erb +58 -0
  689. data/test/foreman_app/app/views/users/_user_fact.html.erb +14 -0
  690. data/test/foreman_app/app/views/users/edit.html.erb +3 -0
  691. data/test/foreman_app/app/views/users/index.html.erb +31 -0
  692. data/test/foreman_app/app/views/users/login.html.erb +22 -0
  693. data/test/foreman_app/app/views/users/new.html.erb +3 -0
  694. data/test/foreman_app/bundler.d/Gemfile.local.rb +2 -0
  695. data/test/foreman_app/bundler.d/assets.rb +12 -0
  696. data/test/foreman_app/bundler.d/console.rb +5 -0
  697. data/test/foreman_app/bundler.d/development.rb +17 -0
  698. data/test/foreman_app/bundler.d/fog.rb +3 -0
  699. data/test/foreman_app/bundler.d/i18n.rb +5 -0
  700. data/test/foreman_app/bundler.d/jsonp.rb +3 -0
  701. data/test/foreman_app/bundler.d/libvirt.rb +3 -0
  702. data/test/foreman_app/bundler.d/mysql.rb +3 -0
  703. data/test/foreman_app/bundler.d/mysql2.rb +3 -0
  704. data/test/foreman_app/bundler.d/openid.rb +3 -0
  705. data/test/foreman_app/bundler.d/ovirt.rb +3 -0
  706. data/test/foreman_app/bundler.d/postgresql.rb +3 -0
  707. data/test/foreman_app/bundler.d/sqlite.rb +3 -0
  708. data/test/foreman_app/bundler.d/test.rb +17 -0
  709. data/test/foreman_app/bundler.d/vmware.rb +3 -0
  710. data/test/foreman_app/config.ru +8 -0
  711. data/test/foreman_app/config/application.rb +114 -0
  712. data/test/foreman_app/config/boot.rb +6 -0
  713. data/test/foreman_app/config/database.yml +22 -0
  714. data/test/foreman_app/config/database.yml.example +22 -0
  715. data/test/foreman_app/config/email.yaml.example +9 -0
  716. data/test/foreman_app/config/environment.rb +5 -0
  717. data/test/foreman_app/config/environments/development.rb +38 -0
  718. data/test/foreman_app/config/environments/production.rb +112 -0
  719. data/test/foreman_app/config/environments/test.rb +42 -0
  720. data/test/foreman_app/config/ignored_environments.yml.sample +9 -0
  721. data/test/foreman_app/config/initializers/apipie.rb +71 -0
  722. data/test/foreman_app/config/initializers/backtrace_silencers.rb +7 -0
  723. data/test/foreman_app/config/initializers/email.rb +17 -0
  724. data/test/foreman_app/config/initializers/fast_gettext.rb +49 -0
  725. data/test/foreman_app/config/initializers/foreman.rb +24 -0
  726. data/test/foreman_app/config/initializers/hostable.rb +3 -0
  727. data/test/foreman_app/config/initializers/inflections.rb +10 -0
  728. data/test/foreman_app/config/initializers/local_secret_token.rb.example +10 -0
  729. data/test/foreman_app/config/initializers/mime_types.rb +6 -0
  730. data/test/foreman_app/config/initializers/puppet.rb +22 -0
  731. data/test/foreman_app/config/initializers/rack_openid.rb +8 -0
  732. data/test/foreman_app/config/initializers/secret_token.rb +15 -0
  733. data/test/foreman_app/config/initializers/session_store.rb +8 -0
  734. data/test/foreman_app/config/initializers/will_paginate.rb +27 -0
  735. data/test/foreman_app/config/initializers/wrap_parameters.rb +13 -0
  736. data/test/foreman_app/config/locales/README +24 -0
  737. data/test/foreman_app/config/locales/de.yml +203 -0
  738. data/test/foreman_app/config/locales/en.yml +205 -0
  739. data/test/foreman_app/config/locales/es.yml +199 -0
  740. data/test/foreman_app/config/locales/ja.yml +197 -0
  741. data/test/foreman_app/config/model.mappings.example +342 -0
  742. data/test/foreman_app/config/routes.rb +332 -0
  743. data/test/foreman_app/config/routes/api/apipiedoc.rb +4 -0
  744. data/test/foreman_app/config/routes/api/v1.rb +65 -0
  745. data/test/foreman_app/config/routes/api/v2.rb +208 -0
  746. data/test/foreman_app/config/settings.rb +13 -0
  747. data/test/foreman_app/config/settings.yaml +18 -0
  748. data/test/foreman_app/config/settings.yaml.example +17 -0
  749. data/test/foreman_app/db/migrate/20090714132448_create_hosts.rb +47 -0
  750. data/test/foreman_app/db/migrate/20090714132449_add_audits_table.rb +27 -0
  751. data/test/foreman_app/db/migrate/20090715143858_create_architectures.rb +19 -0
  752. data/test/foreman_app/db/migrate/20090717025820_create_media.rb +19 -0
  753. data/test/foreman_app/db/migrate/20090718060746_create_domains.rb +15 -0
  754. data/test/foreman_app/db/migrate/20090718064254_create_subnets.rb +18 -0
  755. data/test/foreman_app/db/migrate/20090720134126_create_operatingsystems.rb +16 -0
  756. data/test/foreman_app/db/migrate/20090722140138_create_models.rb +16 -0
  757. data/test/foreman_app/db/migrate/20090722141107_create_environments.rb +18 -0
  758. data/test/foreman_app/db/migrate/20090729132209_create_reports.rb +14 -0
  759. data/test/foreman_app/db/migrate/20090730152224_create_ptables.rb +24 -0
  760. data/test/foreman_app/db/migrate/20090802062223_create_puppetclasses.rb +26 -0
  761. data/test/foreman_app/db/migrate/20090804130144_create_parameters.rb +13 -0
  762. data/test/foreman_app/db/migrate/20090820130541_create_auth_sources.rb +25 -0
  763. data/test/foreman_app/db/migrate/20090905150131_create_hostgroups.rb +24 -0
  764. data/test/foreman_app/db/migrate/20090905155444_add_type_to_parameter.rb +9 -0
  765. data/test/foreman_app/db/migrate/20090907045751_add_domain_to_parameter.rb +10 -0
  766. data/test/foreman_app/db/migrate/20090915030726_change_report_field_type_to_text.rb +13 -0
  767. data/test/foreman_app/db/migrate/20090916053824_change_host_build_default_to_false.rb +11 -0
  768. data/test/foreman_app/db/migrate/20090920043521_add_index_to_host.rb +25 -0
  769. data/test/foreman_app/db/migrate/20090920064156_add_index_to_parameters.rb +15 -0
  770. data/test/foreman_app/db/migrate/20090920065522_add_index_to_reports.rb +9 -0
  771. data/test/foreman_app/db/migrate/20091012135004_create_users.rb +19 -0
  772. data/test/foreman_app/db/migrate/20091016031017_create_sessions.rb +16 -0
  773. data/test/foreman_app/db/migrate/20091022054108_add_status_to_report.rb +15 -0
  774. data/test/foreman_app/db/migrate/20091214045923_calc_existing_reports.rb +19 -0
  775. data/test/foreman_app/db/migrate/20091219132338_create_lookup_keys.rb +14 -0
  776. data/test/foreman_app/db/migrate/20091219132839_create_lookup_values.rb +17 -0
  777. data/test/foreman_app/db/migrate/20100115021803_change_mysql_reports_column.rb +14 -0
  778. data/test/foreman_app/db/migrate/20100310080727_add_family_to_os.rb +33 -0
  779. data/test/foreman_app/db/migrate/20100325142616_update_fact_names_and_values_to_bin.rb +15 -0
  780. data/test/foreman_app/db/migrate/20100414125652_add_releasename_to_os.rb +24 -0
  781. data/test/foreman_app/db/migrate/20100416124600_create_usergroups.rb +17 -0
  782. data/test/foreman_app/db/migrate/20100419151910_add_owner_to_hosts.rb +26 -0
  783. data/test/foreman_app/db/migrate/20100523114430_add_ubuntu_custom_lvm_ptable.rb +67 -0
  784. data/test/foreman_app/db/migrate/20100523141204_create_media_operatingsystems_and_migrate_data.rb +34 -0
  785. data/test/foreman_app/db/migrate/20100524080302_migrate_installation_medium_uri.rb +15 -0
  786. data/test/foreman_app/db/migrate/20100525094200_simplify_parameters.rb +62 -0
  787. data/test/foreman_app/db/migrate/20100601221000_update_os_minor.rb +13 -0
  788. data/test/foreman_app/db/migrate/20100616114400_change_family_in_os.rb +50 -0
  789. data/test/foreman_app/db/migrate/20100625155400_create_notices.rb +21 -0
  790. data/test/foreman_app/db/migrate/20100628123400_add_internal_auth.rb +33 -0
  791. data/test/foreman_app/db/migrate/20100629093200_create_roles.rb +23 -0
  792. data/test/foreman_app/db/migrate/20100701081235_add_user_domains_and_hostgroups.rb +20 -0
  793. data/test/foreman_app/db/migrate/20100822072954_create_user_facts.rb +18 -0
  794. data/test/foreman_app/db/migrate/20100823181036_add_enabled_to_hosts.rb +9 -0
  795. data/test/foreman_app/db/migrate/20100914092104_add_my_booleans_to_user.rb +13 -0
  796. data/test/foreman_app/db/migrate/20101018120548_create_messages.rb +18 -0
  797. data/test/foreman_app/db/migrate/20101018120603_create_sources.rb +18 -0
  798. data/test/foreman_app/db/migrate/20101018120621_create_logs.rb +22 -0
  799. data/test/foreman_app/db/migrate/20101019122857_add_metrics_to_report.rb +9 -0
  800. data/test/foreman_app/db/migrate/20101019183859_convert_reports.rb +38 -0
  801. data/test/foreman_app/db/migrate/20101103150254_add_owned_filter_to_user.rb +9 -0
  802. data/test/foreman_app/db/migrate/20101118130026_correct_media.rb +35 -0
  803. data/test/foreman_app/db/migrate/20101121080425_create_config_templates.rb +15 -0
  804. data/test/foreman_app/db/migrate/20101121135521_create_template_combinations.rb +15 -0
  805. data/test/foreman_app/db/migrate/20101122132041_create_operatingsystems_config_templates.rb +12 -0
  806. data/test/foreman_app/db/migrate/20101123152150_create_template_kinds.rb +18 -0
  807. data/test/foreman_app/db/migrate/20101123153303_create_os_default_templates.rb +15 -0
  808. data/test/foreman_app/db/migrate/20101125153351_add_default_templates.rb +59 -0
  809. data/test/foreman_app/db/migrate/20101130093613_add_sub_systems_to_subnet.rb +13 -0
  810. data/test/foreman_app/db/migrate/20101130100315_create_proxies.rb +13 -0
  811. data/test/foreman_app/db/migrate/20101202104444_add_proxy_to_domain.rb +11 -0
  812. data/test/foreman_app/db/migrate/20101213085232_add_grubby_template.rb +15 -0
  813. data/test/foreman_app/db/migrate/20110117162722_add_host_group_defaults.rb +21 -0
  814. data/test/foreman_app/db/migrate/20110128130239_add_default_pxe_menu_template.rb +15 -0
  815. data/test/foreman_app/db/migrate/20110213104226_create_proxy_features.rb +28 -0
  816. data/test/foreman_app/db/migrate/20110216101848_change_puppetmaster_column.rb +21 -0
  817. data/test/foreman_app/db/migrate/20110301154453_add_managed_to_hosts.rb +15 -0
  818. data/test/foreman_app/db/migrate/20110321070954_revert_face_names_and_values_to_text_records.rb +13 -0
  819. data/test/foreman_app/db/migrate/20110327123639_add_priority_to_parameter.rb +11 -0
  820. data/test/foreman_app/db/migrate/20110404150043_add_media_path_to_medium.rb +13 -0
  821. data/test/foreman_app/db/migrate/20110407091150_add_image_to_host.rb +15 -0
  822. data/test/foreman_app/db/migrate/20110412103238_remove_unused_fields_from_puppet_classes.rb +9 -0
  823. data/test/foreman_app/db/migrate/20110417102947_add_table_bookmarks.rb +31 -0
  824. data/test/foreman_app/db/migrate/20110420150600_add_solaris_templates.rb +42 -0
  825. data/test/foreman_app/db/migrate/20110613141800_add_solaris_disks.rb +16 -0
  826. data/test/foreman_app/db/migrate/20110616080444_add_look_up_key_id_to_puppet_class.rb +28 -0
  827. data/test/foreman_app/db/migrate/20110617190131_add_sparc_info_to_model.rb +11 -0
  828. data/test/foreman_app/db/migrate/20110619130336_add_ancestry_to_hostgroup.rb +11 -0
  829. data/test/foreman_app/db/migrate/20110628115422_create_settings.rb +18 -0
  830. data/test/foreman_app/db/migrate/20110712064120_update_audits_table.rb +16 -0
  831. data/test/foreman_app/db/migrate/20110712070522_create_host_class.rb +11 -0
  832. data/test/foreman_app/db/migrate/20110725142054_add_suse_templates.rb +46 -0
  833. data/test/foreman_app/db/migrate/20110801090318_add_vm_defaults_to_hostgroup.rb +9 -0
  834. data/test/foreman_app/db/migrate/20110803114134_add_subnet_and_domain_to_host_groups.rb +11 -0
  835. data/test/foreman_app/db/migrate/20111124095053_rename_changes_to_audited_changes.rb +9 -0
  836. data/test/foreman_app/db/migrate/20111124095054_add_remote_address_to_audits.rb +10 -0
  837. data/test/foreman_app/db/migrate/20111124095055_rename_parent_to_association.rb +11 -0
  838. data/test/foreman_app/db/migrate/20111205231500_add_gateway_and_dns_to_subnets.rb +13 -0
  839. data/test/foreman_app/db/migrate/20111227095806_ensure_all_hostnames_are_lowercase.rb +9 -0
  840. data/test/foreman_app/db/migrate/20120102071633_add_from_and_to_ranges_to_subnets.rb +13 -0
  841. data/test/foreman_app/db/migrate/20120110113051_create_subnet_domain.rb +21 -0
  842. data/test/foreman_app/db/migrate/20120122131037_create_compute_resources.rb +19 -0
  843. data/test/foreman_app/db/migrate/20120126113850_add_uuid_and_compute_id_to_host.rb +11 -0
  844. data/test/foreman_app/db/migrate/20120127141602_add_windows_templates.rb +47 -0
  845. data/test/foreman_app/db/migrate/20120311081257_create_nics.rb +52 -0
  846. data/test/foreman_app/db/migrate/20120313081913_add_puppet_master_proxy_to_host_and_host_group.rb +41 -0
  847. data/test/foreman_app/db/migrate/20120502105518_update_report_field_to_large_int.rb +9 -0
  848. data/test/foreman_app/db/migrate/20120506143325_create_images.rb +18 -0
  849. data/test/foreman_app/db/migrate/20120509131302_add_cert_name_to_host.rb +12 -0
  850. data/test/foreman_app/db/migrate/20120510113417_create_key_pairs.rb +15 -0
  851. data/test/foreman_app/db/migrate/20120521142924_add_dns_id_to_subnet.rb +9 -0
  852. data/test/foreman_app/db/migrate/20120523065531_add_image_id_to_host.rb +9 -0
  853. data/test/foreman_app/db/migrate/20120529113900_add_user_compute_resources.rb +14 -0
  854. data/test/foreman_app/db/migrate/20120529115814_add_compute_resources_boolean_to_user.rb +9 -0
  855. data/test/foreman_app/db/migrate/20120604114049_add_epel_snippets.rb +10 -0
  856. data/test/foreman_app/db/migrate/20120607074318_convert_params_to_text.rb +11 -0
  857. data/test/foreman_app/db/migrate/20120612070100_change_bookmark_column_to_text.rb +10 -0
  858. data/test/foreman_app/db/migrate/20120613082125_rename_association_to_associated.rb +25 -0
  859. data/test/foreman_app/db/migrate/20120620124658_fix_auditable_type.rb +9 -0
  860. data/test/foreman_app/db/migrate/20120620124659_fix_associated_type.rb +9 -0
  861. data/test/foreman_app/db/migrate/20120621135042_create_taxonomies.rb +14 -0
  862. data/test/foreman_app/db/migrate/20120623002052_add_ok_hosts_book_mark.rb +13 -0
  863. data/test/foreman_app/db/migrate/20120624081510_add_auditable_name_and_associated_name_to_audit.rb +29 -0
  864. data/test/foreman_app/db/migrate/20120624093958_add_os_family_to_media.rb +14 -0
  865. data/test/foreman_app/db/migrate/20120624094034_add_os_family_to_ptable.rb +17 -0
  866. data/test/foreman_app/db/migrate/20120705130038_add_attributes_to_compute_resources.rb +9 -0
  867. data/test/foreman_app/db/migrate/20120824142048_add_some_indexes.rb +23 -0
  868. data/test/foreman_app/db/migrate/20120905095532_create_environment_classes.rb +16 -0
  869. data/test/foreman_app/db/migrate/20120905131841_add_lookup_keys_override_and_required.rb +15 -0
  870. data/test/foreman_app/db/migrate/20120916080843_add_lookup_values_count_to_lookup_keys.rb +9 -0
  871. data/test/foreman_app/db/migrate/20120916080926_cache_lookup_values_count.rb +8 -0
  872. data/test/foreman_app/db/migrate/20120921000313_add_iam_role_to_images.rb +9 -0
  873. data/test/foreman_app/db/migrate/20120921105349_create_tokens.rb +15 -0
  874. data/test/foreman_app/db/migrate/20120927020752_add_bmc_feature_to_proxy.rb +8 -0
  875. data/test/foreman_app/db/migrate/20121003172526_add_taxonomy_ids_to_hosts.rb +11 -0
  876. data/test/foreman_app/db/migrate/20121011115320_change_domain_character_count.rb +9 -0
  877. data/test/foreman_app/db/migrate/20121012170851_create_trends.rb +25 -0
  878. data/test/foreman_app/db/migrate/20121012170936_create_trend_counters.rb +16 -0
  879. data/test/foreman_app/db/migrate/20121015113502_update_media_path_limit.rb +9 -0
  880. data/test/foreman_app/db/migrate/20121018152459_create_hostgroup_classes.rb +11 -0
  881. data/test/foreman_app/db/migrate/20121026160433_add_localboot_template.rb +15 -0
  882. data/test/foreman_app/db/migrate/20121029164911_rename_reply_adress_setting.rb +9 -0
  883. data/test/foreman_app/db/migrate/20121101141448_add_locations_organizations.rb +12 -0
  884. data/test/foreman_app/db/migrate/20121118120028_migrate_hypervisors_to_compute_resources.rb +20 -0
  885. data/test/foreman_app/db/migrate/20121118125341_create_taxable_taxonomies.rb +19 -0
  886. data/test/foreman_app/db/migrate/20121119102104_add_my_taxonomy_to_user.rb +11 -0
  887. data/test/foreman_app/db/migrate/20121218084123_change_smart_variable_length.rb +9 -0
  888. data/test/foreman_app/db/migrate/20121219040534_remove_replay_address_setting.rb +8 -0
  889. data/test/foreman_app/db/migrate/20130109155024_add_ignore_types_to_taxonomy.rb +9 -0
  890. data/test/foreman_app/db/migrate/20130121130826_add_digest_to_messages.rb +18 -0
  891. data/test/foreman_app/db/migrate/20130211160200_add_sti_to_hosts.rb +11 -0
  892. data/test/foreman_app/db/migrate/20130228145456_add_digest_to_sources.rb +22 -0
  893. data/test/foreman_app/db/migrate/20130329195742_remove_duplicate_snippets.rb +20 -0
  894. data/test/foreman_app/db/migrate/20130409081924_add_label_to_host_group.rb +18 -0
  895. data/test/foreman_app/db/migrate/20130417110127_add_sti_to_settings.rb +17 -0
  896. data/test/foreman_app/db/migrate/20130418134513_fix_sti_host_auditable_type.rb +9 -0
  897. data/test/foreman_app/db/migrate/20130419145808_add_id_to_user_hostgroup.rb +9 -0
  898. data/test/foreman_app/db/schema.rb +746 -0
  899. data/test/foreman_app/db/seeds.rb +9 -0
  900. data/test/foreman_app/db/test.sqlite3 +0 -0
  901. data/test/foreman_app/doc/README_FOR_APP +2 -0
  902. data/test/foreman_app/doc/apipie_examples.yml +4645 -0
  903. data/test/foreman_app/extras/changelog +39 -0
  904. data/test/foreman_app/extras/ci/migration.sh +64 -0
  905. data/test/foreman_app/extras/ci/setup.sh +19 -0
  906. data/test/foreman_app/extras/cli/foremancli +210 -0
  907. data/test/foreman_app/extras/dbmigrate +10 -0
  908. data/test/foreman_app/extras/foreman-release.spec +41 -0
  909. data/test/foreman_app/extras/foreman.repo +11 -0
  910. data/test/foreman_app/extras/git2nightly_snapshot +9 -0
  911. data/test/foreman_app/extras/git2release +22 -0
  912. data/test/foreman_app/extras/ignored_environments.yml.sample +10 -0
  913. data/test/foreman_app/extras/jumpstart/README +2 -0
  914. data/test/foreman_app/extras/jumpstart/admin +11 -0
  915. data/test/foreman_app/extras/jumpstart/curl +0 -0
  916. data/test/foreman_app/extras/jumpstart/curl-license +22 -0
  917. data/test/foreman_app/extras/jumpstart/curl.i386 +0 -0
  918. data/test/foreman_app/extras/jumpstart/curl.sparc +0 -0
  919. data/test/foreman_app/extras/jumpstart/dynamic_finish +18 -0
  920. data/test/foreman_app/extras/jumpstart/dynamic_profile +17 -0
  921. data/test/foreman_app/extras/jumpstart/nsswitch.conf +34 -0
  922. data/test/foreman_app/extras/jumpstart/rules +1 -0
  923. data/test/foreman_app/extras/jumpstart/rules.ok +2 -0
  924. data/test/foreman_app/extras/jumpstart/sysidcfg/sysidcfg_primary/sysidcfg +12 -0
  925. data/test/foreman_app/extras/noVNC/websockify.py +5 -0
  926. data/test/foreman_app/extras/noVNC/websockify/__init__.py +2 -0
  927. data/test/foreman_app/extras/noVNC/websockify/websocket.py +982 -0
  928. data/test/foreman_app/extras/noVNC/websockify/websocketproxy.py +393 -0
  929. data/test/foreman_app/extras/packaging/rpm/rel-eng/comps/comps-foreman-fedora18.xml +76 -0
  930. data/test/foreman_app/extras/packaging/rpm/rel-eng/comps/comps-foreman-rhel6.xml +115 -0
  931. data/test/foreman_app/extras/packaging/rpm/rel-eng/packages/foreman +1 -0
  932. data/test/foreman_app/extras/packaging/rpm/rel-eng/releasers.conf +59 -0
  933. data/test/foreman_app/extras/packaging/rpm/rel-eng/tito.props +3 -0
  934. data/test/foreman_app/extras/packaging/rpm/sources/0001-rubygem-actionmailer-fix-dep-versions.patch +19 -0
  935. data/test/foreman_app/extras/packaging/rpm/sources/foreman.cron.d +27 -0
  936. data/test/foreman_app/extras/packaging/rpm/sources/foreman.init +154 -0
  937. data/test/foreman_app/extras/packaging/rpm/sources/foreman.logrotate +10 -0
  938. data/test/foreman_app/extras/packaging/rpm/sources/foreman.repo +11 -0
  939. data/test/foreman_app/extras/packaging/rpm/sources/foreman.spec-devel.patch +55 -0
  940. data/test/foreman_app/extras/packaging/rpm/sources/foreman.sysconfig +21 -0
  941. data/test/foreman_app/extras/query/ssh_using_foreman +136 -0
  942. data/test/foreman_app/extras/rdoc/rdoc_prepare_script.rb +51 -0
  943. data/test/foreman_app/foreman.spec +621 -0
  944. data/test/foreman_app/lib/api/api_responder.rb +17 -0
  945. data/test/foreman_app/lib/api/authorization.rb +78 -0
  946. data/test/foreman_app/lib/api/version1.rb +7 -0
  947. data/test/foreman_app/lib/api/version2.rb +7 -0
  948. data/test/foreman_app/lib/api_constraints.rb +15 -0
  949. data/test/foreman_app/lib/audit_extensions.rb +63 -0
  950. data/test/foreman_app/lib/core_extensions.rb +100 -0
  951. data/test/foreman_app/lib/fog_extensions.rb +45 -0
  952. data/test/foreman_app/lib/fog_extensions/aws/flavor.rb +9 -0
  953. data/test/foreman_app/lib/fog_extensions/aws/server.rb +18 -0
  954. data/test/foreman_app/lib/fog_extensions/libvirt/server.rb +24 -0
  955. data/test/foreman_app/lib/fog_extensions/model.rb +27 -0
  956. data/test/foreman_app/lib/fog_extensions/openstack/flavor.rb +13 -0
  957. data/test/foreman_app/lib/fog_extensions/openstack/server.rb +40 -0
  958. data/test/foreman_app/lib/fog_extensions/ovirt/server.rb +15 -0
  959. data/test/foreman_app/lib/fog_extensions/ovirt/volume.rb +11 -0
  960. data/test/foreman_app/lib/fog_extensions/vsphere/folder.rb +14 -0
  961. data/test/foreman_app/lib/fog_extensions/vsphere/mini_server.rb +20 -0
  962. data/test/foreman_app/lib/fog_extensions/vsphere/mini_servers.rb +22 -0
  963. data/test/foreman_app/lib/fog_extensions/vsphere/server.rb +19 -0
  964. data/test/foreman_app/lib/foreman.rb +14 -0
  965. data/test/foreman_app/lib/foreman/access_control.rb +120 -0
  966. data/test/foreman_app/lib/foreman/access_permissions.rb +572 -0
  967. data/test/foreman_app/lib/foreman/controller.rb +2 -0
  968. data/test/foreman_app/lib/foreman/controller/auto_complete_search.rb +23 -0
  969. data/test/foreman_app/lib/foreman/controller/environments.rb +36 -0
  970. data/test/foreman_app/lib/foreman/controller/host_details.rb +69 -0
  971. data/test/foreman_app/lib/foreman/controller/smart_proxy_auth.rb +68 -0
  972. data/test/foreman_app/lib/foreman/controller/taxonomies_controller.rb +178 -0
  973. data/test/foreman_app/lib/foreman/controller/taxonomy_multiple.rb +56 -0
  974. data/test/foreman_app/lib/foreman/default_data/loader.rb +166 -0
  975. data/test/foreman_app/lib/foreman/exception.rb +37 -0
  976. data/test/foreman_app/lib/foreman/importer_puppetclass.rb +48 -0
  977. data/test/foreman_app/lib/foreman/model.rb +2 -0
  978. data/test/foreman_app/lib/foreman/model/ec2.rb +128 -0
  979. data/test/foreman_app/lib/foreman/model/libvirt.rb +150 -0
  980. data/test/foreman_app/lib/foreman/model/openstack.rb +130 -0
  981. data/test/foreman_app/lib/foreman/model/ovirt.rb +250 -0
  982. data/test/foreman_app/lib/foreman/model/rackspace.rb +108 -0
  983. data/test/foreman_app/lib/foreman/model/vmware.rb +181 -0
  984. data/test/foreman_app/lib/foreman/provision.rb +3 -0
  985. data/test/foreman_app/lib/foreman/provision/ssh.rb +102 -0
  986. data/test/foreman_app/lib/foreman/renderer.rb +68 -0
  987. data/test/foreman_app/lib/foreman/sti.rb +30 -0
  988. data/test/foreman_app/lib/foreman/thread_session.rb +163 -0
  989. data/test/foreman_app/lib/foreman/util.rb +25 -0
  990. data/test/foreman_app/lib/foreman/wrapped_exception.rb +23 -0
  991. data/test/foreman_app/lib/net.rb +50 -0
  992. data/test/foreman_app/lib/net/dhcp.rb +6 -0
  993. data/test/foreman_app/lib/net/dhcp/record.rb +56 -0
  994. data/test/foreman_app/lib/net/dhcp/sparc_record.rb +25 -0
  995. data/test/foreman_app/lib/net/dns.rb +78 -0
  996. data/test/foreman_app/lib/net/dns/a_record.rb +47 -0
  997. data/test/foreman_app/lib/net/dns/ptr_record.rb +52 -0
  998. data/test/foreman_app/lib/net/validations.rb +47 -0
  999. data/test/foreman_app/lib/orchestration/queue.rb +58 -0
  1000. data/test/foreman_app/lib/proxy_api.rb +6 -0
  1001. data/test/foreman_app/lib/proxy_api/bmc.rb +120 -0
  1002. data/test/foreman_app/lib/proxy_api/dhcp.rb +70 -0
  1003. data/test/foreman_app/lib/proxy_api/dns.rb +26 -0
  1004. data/test/foreman_app/lib/proxy_api/features.rb +12 -0
  1005. data/test/foreman_app/lib/proxy_api/puppet.rb +28 -0
  1006. data/test/foreman_app/lib/proxy_api/puppetca.rb +38 -0
  1007. data/test/foreman_app/lib/proxy_api/resource.rb +90 -0
  1008. data/test/foreman_app/lib/proxy_api/tftp.rb +54 -0
  1009. data/test/foreman_app/lib/puppet_setting.rb +69 -0
  1010. data/test/foreman_app/lib/regexp_extensions.rb +14 -0
  1011. data/test/foreman_app/lib/sso.rb +13 -0
  1012. data/test/foreman_app/lib/sso/apache.rb +16 -0
  1013. data/test/foreman_app/lib/sso/base.rb +27 -0
  1014. data/test/foreman_app/lib/sso/signo.rb +60 -0
  1015. data/test/foreman_app/lib/task.rb +39 -0
  1016. data/test/foreman_app/lib/tasks/convert.rake +127 -0
  1017. data/test/foreman_app/lib/tasks/exception.rake +32 -0
  1018. data/test/foreman_app/lib/tasks/gettext.rake +9 -0
  1019. data/test/foreman_app/lib/tasks/hosts.rake +67 -0
  1020. data/test/foreman_app/lib/tasks/jenkins.rake +19 -0
  1021. data/test/foreman_app/lib/tasks/load_default_data.rake +16 -0
  1022. data/test/foreman_app/lib/tasks/locale.rake +43 -0
  1023. data/test/foreman_app/lib/tasks/model.rake +83 -0
  1024. data/test/foreman_app/lib/tasks/patches.rake +19 -0
  1025. data/test/foreman_app/lib/tasks/pkg.rake +19 -0
  1026. data/test/foreman_app/lib/tasks/puppet.rake +178 -0
  1027. data/test/foreman_app/lib/tasks/reports.rake +82 -0
  1028. data/test/foreman_app/lib/tasks/reset_permissions.rake +20 -0
  1029. data/test/foreman_app/lib/tasks/security.rake +21 -0
  1030. data/test/foreman_app/lib/tasks/smartproxy.rake +58 -0
  1031. data/test/foreman_app/lib/tasks/test_api_dir.rake +10 -0
  1032. data/test/foreman_app/lib/tasks/test_lib_dir.rake +14 -0
  1033. data/test/foreman_app/lib/tasks/trends.rake +32 -0
  1034. data/test/foreman_app/lib/timed_cached_store.rb +55 -0
  1035. data/test/foreman_app/lib/ws_proxy.rb +78 -0
  1036. data/test/foreman_app/locale/Makefile +54 -0
  1037. data/test/foreman_app/locale/README +26 -0
  1038. data/test/foreman_app/locale/de/foreman.po +4477 -0
  1039. data/test/foreman_app/locale/en/foreman.po +4198 -0
  1040. data/test/foreman_app/locale/es/foreman.po +4494 -0
  1041. data/test/foreman_app/locale/foreman.pot +4198 -0
  1042. data/test/foreman_app/locale/ja/foreman.po +4215 -0
  1043. data/test/foreman_app/locale/model_attributes.rb +442 -0
  1044. data/test/foreman_app/log/test.log +36021 -0
  1045. data/test/foreman_app/public/404.html +26 -0
  1046. data/test/foreman_app/public/422.html +26 -0
  1047. data/test/foreman_app/public/500.html +26 -0
  1048. data/test/foreman_app/public/blank.html +33 -0
  1049. data/test/foreman_app/public/favicon.ico +0 -0
  1050. data/test/foreman_app/public/robots.txt +5 -0
  1051. data/test/foreman_app/script/foreman-config +147 -0
  1052. data/test/foreman_app/script/performance/benchmarker +3 -0
  1053. data/test/foreman_app/script/performance/profiler +3 -0
  1054. data/test/foreman_app/script/rails +6 -0
  1055. data/test/foreman_app/script/show-missing-rails-locales.sh +25 -0
  1056. data/test/foreman_app/script/update-rails-locales.sh +16 -0
  1057. data/test/foreman_app/test/fixtures/architectures.yml +10 -0
  1058. data/test/foreman_app/test/fixtures/audits.yml +18 -0
  1059. data/test/foreman_app/test/fixtures/auth_sources.yml +20 -0
  1060. data/test/foreman_app/test/fixtures/bookmarks.yml +13 -0
  1061. data/test/foreman_app/test/fixtures/brslc022.facts.yaml +68 -0
  1062. data/test/foreman_app/test/fixtures/compute_resources.yml +28 -0
  1063. data/test/foreman_app/test/fixtures/config_templates.yml +47 -0
  1064. data/test/foreman_app/test/fixtures/domains.yml +18 -0
  1065. data/test/foreman_app/test/fixtures/environment_classes.yml +15 -0
  1066. data/test/foreman_app/test/fixtures/environments.yml +10 -0
  1067. data/test/foreman_app/test/fixtures/fact_names.yml +5 -0
  1068. data/test/foreman_app/test/fixtures/fact_values.yml +11 -0
  1069. data/test/foreman_app/test/fixtures/features.yml +23 -0
  1070. data/test/foreman_app/test/fixtures/host_classes.yml +9 -0
  1071. data/test/foreman_app/test/fixtures/hostgroup_classes.yml +9 -0
  1072. data/test/foreman_app/test/fixtures/hostgroups.yml +24 -0
  1073. data/test/foreman_app/test/fixtures/hosts.yml +198 -0
  1074. data/test/foreman_app/test/fixtures/images.yml +16 -0
  1075. data/test/foreman_app/test/fixtures/key_pairs.yml +7 -0
  1076. data/test/foreman_app/test/fixtures/logs.yml +11 -0
  1077. data/test/foreman_app/test/fixtures/lookup_keys.yml +32 -0
  1078. data/test/foreman_app/test/fixtures/media.yml +25 -0
  1079. data/test/foreman_app/test/fixtures/messages.yml +7 -0
  1080. data/test/foreman_app/test/fixtures/models.yml +10 -0
  1081. data/test/foreman_app/test/fixtures/notices.yml +7 -0
  1082. data/test/foreman_app/test/fixtures/operatingsystems.yml +49 -0
  1083. data/test/foreman_app/test/fixtures/os_default_templates.yml +21 -0
  1084. data/test/foreman_app/test/fixtures/parameters.yml +30 -0
  1085. data/test/foreman_app/test/fixtures/ptables.yml +17 -0
  1086. data/test/foreman_app/test/fixtures/puppetclasses.yml +13 -0
  1087. data/test/foreman_app/test/fixtures/report-2.6.12-noops.yaml +627 -0
  1088. data/test/foreman_app/test/fixtures/report-2.6.5-errors.yaml +60 -0
  1089. data/test/foreman_app/test/fixtures/report-2.6.5.yaml +413 -0
  1090. data/test/foreman_app/test/fixtures/report-3.0.1.yaml +283 -0
  1091. data/test/foreman_app/test/fixtures/report-applied.yaml +86 -0
  1092. data/test/foreman_app/test/fixtures/report-empty.yaml +31 -0
  1093. data/test/foreman_app/test/fixtures/report-errors.yaml +66 -0
  1094. data/test/foreman_app/test/fixtures/report-skipped.yaml +86 -0
  1095. data/test/foreman_app/test/fixtures/reports.yml +13 -0
  1096. data/test/foreman_app/test/fixtures/roles.yml +198 -0
  1097. data/test/foreman_app/test/fixtures/sample_http_preseed_template +66 -0
  1098. data/test/foreman_app/test/fixtures/sample_tokenised_template +66 -0
  1099. data/test/foreman_app/test/fixtures/settings.yml +176 -0
  1100. data/test/foreman_app/test/fixtures/smart_proxies.yml +23 -0
  1101. data/test/foreman_app/test/fixtures/sources.yml +7 -0
  1102. data/test/foreman_app/test/fixtures/subnet_domains.yml +9 -0
  1103. data/test/foreman_app/test/fixtures/subnets.yml +26 -0
  1104. data/test/foreman_app/test/fixtures/taxable_taxonomies.yml +15 -0
  1105. data/test/foreman_app/test/fixtures/taxonomies.yml +15 -0
  1106. data/test/foreman_app/test/fixtures/template_combinations.yml +19 -0
  1107. data/test/foreman_app/test/fixtures/template_kinds.yml +14 -0
  1108. data/test/foreman_app/test/fixtures/trend_counters.yml +9 -0
  1109. data/test/foreman_app/test/fixtures/trends.yml +9 -0
  1110. data/test/foreman_app/test/fixtures/trends_controller_test.rb +8 -0
  1111. data/test/foreman_app/test/fixtures/user_facts.yml +7 -0
  1112. data/test/foreman_app/test/fixtures/usergroups.yml +7 -0
  1113. data/test/foreman_app/test/fixtures/users.yml +52 -0
  1114. data/test/foreman_app/test/functional/api/v1/architectures_controller_test.rb +79 -0
  1115. data/test/foreman_app/test/functional/api/v1/audits_controller_test.rb +20 -0
  1116. data/test/foreman_app/test/functional/api/v1/auth_source_ldaps_controller_test.rb +41 -0
  1117. data/test/foreman_app/test/functional/api/v1/bookmarks_controller_test.rb +60 -0
  1118. data/test/foreman_app/test/functional/api/v1/common_parameters_controller_test.rb +41 -0
  1119. data/test/foreman_app/test/functional/api/v1/compute_resources_controller_test.rb +50 -0
  1120. data/test/foreman_app/test/functional/api/v1/config_templates_controller_test.rb +82 -0
  1121. data/test/foreman_app/test/functional/api/v1/dashboard_controller_test.rb +12 -0
  1122. data/test/foreman_app/test/functional/api/v1/domains_controller_test.rb +50 -0
  1123. data/test/foreman_app/test/functional/api/v1/environments_controller_test.rb +40 -0
  1124. data/test/foreman_app/test/functional/api/v1/fact_values_controller_test.rb +19 -0
  1125. data/test/foreman_app/test/functional/api/v1/home_controller_test.rb +11 -0
  1126. data/test/foreman_app/test/functional/api/v1/hostgroups_controller_test.rb +41 -0
  1127. data/test/foreman_app/test/functional/api/v1/hosts_controller_test.rb +66 -0
  1128. data/test/foreman_app/test/functional/api/v1/images_controller_test.rb +47 -0
  1129. data/test/foreman_app/test/functional/api/v1/lookup_keys_controller_test.rb +41 -0
  1130. data/test/foreman_app/test/functional/api/v1/media_controller_test.rb +48 -0
  1131. data/test/foreman_app/test/functional/api/v1/models_controller_test.rb +43 -0
  1132. data/test/foreman_app/test/functional/api/v1/operatingsystems_controller_test.rb +55 -0
  1133. data/test/foreman_app/test/functional/api/v1/ptables_controller_test.rb +48 -0
  1134. data/test/foreman_app/test/functional/api/v1/puppetclasses_controller_test.rb +40 -0
  1135. data/test/foreman_app/test/functional/api/v1/reports_controller_test.rb +66 -0
  1136. data/test/foreman_app/test/functional/api/v1/roles_controller_test.rb +41 -0
  1137. data/test/foreman_app/test/functional/api/v1/settings_controller_test.rb +25 -0
  1138. data/test/foreman_app/test/functional/api/v1/smart_proxies_controller_test.rb +72 -0
  1139. data/test/foreman_app/test/functional/api/v1/subnets_controller_test.rb +58 -0
  1140. data/test/foreman_app/test/functional/api/v1/template_kinds_controller_test.rb +11 -0
  1141. data/test/foreman_app/test/functional/api/v1/usergroups_controller_test.rb +41 -0
  1142. data/test/foreman_app/test/functional/api/v1/users_controller_test.rb +137 -0
  1143. data/test/foreman_app/test/functional/api/v2/config_templates_controller_test.rb +80 -0
  1144. data/test/foreman_app/test/functional/api/v2/domains_controller_test.rb +32 -0
  1145. data/test/foreman_app/test/functional/api/v2/host_classes_controller_test.rb +29 -0
  1146. data/test/foreman_app/test/functional/api/v2/hostgroup_class_controller_test.rb +29 -0
  1147. data/test/foreman_app/test/functional/api/v2/locations_controller_test.rb +85 -0
  1148. data/test/foreman_app/test/functional/api/v2/parameters_controller_test.rb +180 -0
  1149. data/test/foreman_app/test/functional/api/v2/puppetclasses_controller_test.rb +103 -0
  1150. data/test/foreman_app/test/functional/api/v2/template_combinations_controller_test.rb +38 -0
  1151. data/test/foreman_app/test/functional/architectures_controller_test.rb +97 -0
  1152. data/test/foreman_app/test/functional/audits_controller_test.rb +29 -0
  1153. data/test/foreman_app/test/functional/auth_source_ldaps_controller_test.rb +66 -0
  1154. data/test/foreman_app/test/functional/bookmarks_controller_test.rb +51 -0
  1155. data/test/foreman_app/test/functional/common_parameters_controller_test.rb +69 -0
  1156. data/test/foreman_app/test/functional/compute_resources_controller_test.rb +157 -0
  1157. data/test/foreman_app/test/functional/compute_resources_vms_controller_test.rb +160 -0
  1158. data/test/foreman_app/test/functional/config_templates_controller_test.rb +132 -0
  1159. data/test/foreman_app/test/functional/dashboard_controller_test.rb +38 -0
  1160. data/test/foreman_app/test/functional/domains_controller_test.rb +101 -0
  1161. data/test/foreman_app/test/functional/environments_controller_test.rb +234 -0
  1162. data/test/foreman_app/test/functional/fact_values_controller_test.rb +138 -0
  1163. data/test/foreman_app/test/functional/facts_controller_test.rb +12 -0
  1164. data/test/foreman_app/test/functional/home_controller_test.rb +9 -0
  1165. data/test/foreman_app/test/functional/hostgroups_controller_test.rb +125 -0
  1166. data/test/foreman_app/test/functional/hosts_controller_test.rb +830 -0
  1167. data/test/foreman_app/test/functional/images_controller_test.rb +55 -0
  1168. data/test/foreman_app/test/functional/locations_controller_test.rb +149 -0
  1169. data/test/foreman_app/test/functional/lookup_keys_controller_test.rb +43 -0
  1170. data/test/foreman_app/test/functional/lookup_values_controller_test.rb +8 -0
  1171. data/test/foreman_app/test/functional/media_controller_test.rb +95 -0
  1172. data/test/foreman_app/test/functional/models_controller_test.rb +66 -0
  1173. data/test/foreman_app/test/functional/notices_controller_test.rb +36 -0
  1174. data/test/foreman_app/test/functional/operatingsystems_controller_test.rb +104 -0
  1175. data/test/foreman_app/test/functional/organizations_controller_test.rb +148 -0
  1176. data/test/foreman_app/test/functional/ptables_controller_test.rb +142 -0
  1177. data/test/foreman_app/test/functional/puppetclasses_controller_test.rb +66 -0
  1178. data/test/foreman_app/test/functional/reports_controller_test.rb +191 -0
  1179. data/test/foreman_app/test/functional/roles_controller_test.rb +124 -0
  1180. data/test/foreman_app/test/functional/settings_controller_test.rb +34 -0
  1181. data/test/foreman_app/test/functional/smart_proxies/autosign_controller_test.rb +8 -0
  1182. data/test/foreman_app/test/functional/smart_proxies/puppetca_controller_test.rb +8 -0
  1183. data/test/foreman_app/test/functional/smart_proxies_controller_test.rb +85 -0
  1184. data/test/foreman_app/test/functional/statistics_controller_test.rb +21 -0
  1185. data/test/foreman_app/test/functional/subnets_controller_test.rb +89 -0
  1186. data/test/foreman_app/test/functional/tasks_controller_test.rb +8 -0
  1187. data/test/foreman_app/test/functional/unattended_controller_test.rb +141 -0
  1188. data/test/foreman_app/test/functional/usergroups_controller_test.rb +66 -0
  1189. data/test/foreman_app/test/functional/users_controller_test.rb +147 -0
  1190. data/test/foreman_app/test/lib/foreman/access_permissions_test.rb +50 -0
  1191. data/test/foreman_app/test/lib/foreman/default_settings/loader_test.rb +39 -0
  1192. data/test/foreman_app/test/lib/foreman/model/ovirt_test.rb +72 -0
  1193. data/test/foreman_app/test/lib/foreman/renderer_test.rb +32 -0
  1194. data/test/foreman_app/test/lib/foreman/util_test.rb +40 -0
  1195. data/test/foreman_app/test/lib/net/dhcp_test.rb +39 -0
  1196. data/test/foreman_app/test/lib/net/net_test.rb +21 -0
  1197. data/test/foreman_app/test/lib/net/validations_test.rb +19 -0
  1198. data/test/foreman_app/test/lib/proxy_api/bmc_test.rb +256 -0
  1199. data/test/foreman_app/test/lib/proxy_api/dhcp_test.rb +60 -0
  1200. data/test/foreman_app/test/lib/puppet_setting_test.rb +92 -0
  1201. data/test/foreman_app/test/performance/browsing_test.rb +9 -0
  1202. data/test/foreman_app/test/test_helper.rb +164 -0
  1203. data/test/foreman_app/test/unit/architecture_test.rb +106 -0
  1204. data/test/foreman_app/test/unit/auth_source_ldap_test.rb +205 -0
  1205. data/test/foreman_app/test/unit/auth_source_test.rb +34 -0
  1206. data/test/foreman_app/test/unit/bookmark_test.rb +32 -0
  1207. data/test/foreman_app/test/unit/classification_test.rb +46 -0
  1208. data/test/foreman_app/test/unit/common_parameter_test.rb +100 -0
  1209. data/test/foreman_app/test/unit/compute_resource_test.rb +88 -0
  1210. data/test/foreman_app/test/unit/config_template_test.rb +67 -0
  1211. data/test/foreman_app/test/unit/domain_parameter_test.rb +106 -0
  1212. data/test/foreman_app/test/unit/domain_test.rb +161 -0
  1213. data/test/foreman_app/test/unit/environment_class_test.rb +9 -0
  1214. data/test/foreman_app/test/unit/environment_test.rb +35 -0
  1215. data/test/foreman_app/test/unit/fact_value_test.rb +25 -0
  1216. data/test/foreman_app/test/unit/facts.yml +91 -0
  1217. data/test/foreman_app/test/unit/facts_importer_test.rb +50 -0
  1218. data/test/foreman_app/test/unit/facts_with_caps.yml +91 -0
  1219. data/test/foreman_app/test/unit/feature_test.rb +8 -0
  1220. data/test/foreman_app/test/unit/group_parameter_test.rb +108 -0
  1221. data/test/foreman_app/test/unit/helpers/architecture_helper_test.rb +4 -0
  1222. data/test/foreman_app/test/unit/helpers/audit_helper_test.rb +4 -0
  1223. data/test/foreman_app/test/unit/helpers/auth_sources_helper_test.rb +4 -0
  1224. data/test/foreman_app/test/unit/helpers/bookmarks_helper_test.rb +4 -0
  1225. data/test/foreman_app/test/unit/helpers/compute_resources_helper_test.rb +4 -0
  1226. data/test/foreman_app/test/unit/helpers/dashboard_helper_test.rb +4 -0
  1227. data/test/foreman_app/test/unit/helpers/domain_helper_test.rb +4 -0
  1228. data/test/foreman_app/test/unit/helpers/environments_helper_test.rb +4 -0
  1229. data/test/foreman_app/test/unit/helpers/fact_values_helper_test.rb +4 -0
  1230. data/test/foreman_app/test/unit/helpers/home_helper_test.rb +4 -0
  1231. data/test/foreman_app/test/unit/helpers/host_groups_helper_test.rb +14 -0
  1232. data/test/foreman_app/test/unit/helpers/hosts_helper_test.rb +4 -0
  1233. data/test/foreman_app/test/unit/helpers/images_helper_test.rb +4 -0
  1234. data/test/foreman_app/test/unit/helpers/lookup_keys_helper_test.rb +4 -0
  1235. data/test/foreman_app/test/unit/helpers/medium_helper_test.rb +4 -0
  1236. data/test/foreman_app/test/unit/helpers/model_helper_test.rb +4 -0
  1237. data/test/foreman_app/test/unit/helpers/operatingsystem_helper_test.rb +4 -0
  1238. data/test/foreman_app/test/unit/helpers/parameters_helper_test.rb +4 -0
  1239. data/test/foreman_app/test/unit/helpers/ptables_helper_test.rb +4 -0
  1240. data/test/foreman_app/test/unit/helpers/puppetclasses_helper_test.rb +4 -0
  1241. data/test/foreman_app/test/unit/helpers/reports_helper_test.rb +4 -0
  1242. data/test/foreman_app/test/unit/helpers/smart_proxies/autosign_helper_test.rb +4 -0
  1243. data/test/foreman_app/test/unit/helpers/smart_proxies/puppetca_helper_test.rb +4 -0
  1244. data/test/foreman_app/test/unit/helpers/statistics_helper_test.rb +4 -0
  1245. data/test/foreman_app/test/unit/helpers/tasks_helper_test.rb +4 -0
  1246. data/test/foreman_app/test/unit/helpers/trends_helper_test.rb +4 -0
  1247. data/test/foreman_app/test/unit/helpers/unattended_helper_test.rb +4 -0
  1248. data/test/foreman_app/test/unit/helpers/usergroups_helper_test.rb +4 -0
  1249. data/test/foreman_app/test/unit/helpers/users_helper_test.rb +4 -0
  1250. data/test/foreman_app/test/unit/host_class_test.rb +8 -0
  1251. data/test/foreman_app/test/unit/host_mailer_test.rb +70 -0
  1252. data/test/foreman_app/test/unit/host_observer_test.rb +35 -0
  1253. data/test/foreman_app/test/unit/host_parameter_test.rb +119 -0
  1254. data/test/foreman_app/test/unit/host_test.rb +606 -0
  1255. data/test/foreman_app/test/unit/hostgroup_class_test.rb +11 -0
  1256. data/test/foreman_app/test/unit/hostgroup_test.rb +178 -0
  1257. data/test/foreman_app/test/unit/image_test.rb +5 -0
  1258. data/test/foreman_app/test/unit/key_pair_test.rb +4 -0
  1259. data/test/foreman_app/test/unit/location_test.rb +162 -0
  1260. data/test/foreman_app/test/unit/log_test.rb +8 -0
  1261. data/test/foreman_app/test/unit/lookup_key_test.rb +88 -0
  1262. data/test/foreman_app/test/unit/medium_test.rb +120 -0
  1263. data/test/foreman_app/test/unit/message_test.rb +8 -0
  1264. data/test/foreman_app/test/unit/model_test.rb +90 -0
  1265. data/test/foreman_app/test/unit/nic_test.rb +49 -0
  1266. data/test/foreman_app/test/unit/notice_test.rb +19 -0
  1267. data/test/foreman_app/test/unit/operatingsystem_test.rb +139 -0
  1268. data/test/foreman_app/test/unit/orchestration/dhcp_test.rb +161 -0
  1269. data/test/foreman_app/test/unit/orchestration/dns_test.rb +54 -0
  1270. data/test/foreman_app/test/unit/orchestration/pxe_local_template +11 -0
  1271. data/test/foreman_app/test/unit/orchestration/pxe_template +4 -0
  1272. data/test/foreman_app/test/unit/orchestration/tftp_test.rb +49 -0
  1273. data/test/foreman_app/test/unit/orchestration_test.rb +25 -0
  1274. data/test/foreman_app/test/unit/organization_test.rb +163 -0
  1275. data/test/foreman_app/test/unit/os_default_template_test.rb +8 -0
  1276. data/test/foreman_app/test/unit/parameter_test.rb +44 -0
  1277. data/test/foreman_app/test/unit/ptable_test.rb +119 -0
  1278. data/test/foreman_app/test/unit/puppet_class_importer_test.rb +67 -0
  1279. data/test/foreman_app/test/unit/puppetclass_test.rb +90 -0
  1280. data/test/foreman_app/test/unit/report_test.rb +196 -0
  1281. data/test/foreman_app/test/unit/role_test.rb +104 -0
  1282. data/test/foreman_app/test/unit/setting_test.rb +158 -0
  1283. data/test/foreman_app/test/unit/smart_proxy_test.rb +27 -0
  1284. data/test/foreman_app/test/unit/source_test.rb +8 -0
  1285. data/test/foreman_app/test/unit/sso.rb +26 -0
  1286. data/test/foreman_app/test/unit/sso/apache_test.rb +38 -0
  1287. data/test/foreman_app/test/unit/sso/base_test.rb +14 -0
  1288. data/test/foreman_app/test/unit/sso/signo_test.rb +81 -0
  1289. data/test/foreman_app/test/unit/subnet_domain_test.rb +8 -0
  1290. data/test/foreman_app/test/unit/subnet_test.rb +182 -0
  1291. data/test/foreman_app/test/unit/suse_test.rb +46 -0
  1292. data/test/foreman_app/test/unit/taxable_taxonomy_test.rb +8 -0
  1293. data/test/foreman_app/test/unit/template_combination_test.rb +8 -0
  1294. data/test/foreman_app/test/unit/template_kind_test.rb +8 -0
  1295. data/test/foreman_app/test/unit/token_test.rb +67 -0
  1296. data/test/foreman_app/test/unit/trend_counter_test.rb +8 -0
  1297. data/test/foreman_app/test/unit/trend_test.rb +8 -0
  1298. data/test/foreman_app/test/unit/user_fact_test.rb +8 -0
  1299. data/test/foreman_app/test/unit/user_test.rb +196 -0
  1300. data/test/foreman_app/test/unit/usergroup_test.rb +161 -0
  1301. data/test/foreman_app/tmp/cache/505/030/idle_timeout +1 -0
  1302. data/test/foreman_app/tmp/cache/505/C00/use_gravatar +1 -0
  1303. data/test/foreman_app/tmp/cache/7D9/CD0/email_reply_address +1 -0
  1304. data/test/foreman_app/tmp/cache/94D/A30/discovery_organization +1 -0
  1305. data/test/foreman_app/tmp/cache/ACF/DB0/authorize_login_delegation +1 -0
  1306. data/test/foreman_app/tmp/secret_token +1 -0
  1307. data/test/foreman_app/vendor/assets/fonts/overpass_bold-web.eot +0 -0
  1308. data/test/foreman_app/vendor/assets/fonts/overpass_bold-web.svg +470 -0
  1309. data/test/foreman_app/vendor/assets/fonts/overpass_bold-web.ttf +0 -0
  1310. data/test/foreman_app/vendor/assets/fonts/overpass_bold-web.woff +0 -0
  1311. data/test/foreman_app/vendor/assets/fonts/overpass_regular-web.eot +0 -0
  1312. data/test/foreman_app/vendor/assets/fonts/overpass_regular-web.svg +470 -0
  1313. data/test/foreman_app/vendor/assets/fonts/overpass_regular-web.ttf +0 -0
  1314. data/test/foreman_app/vendor/assets/fonts/overpass_regular-web.woff +0 -0
  1315. data/test/foreman_app/vendor/assets/javascripts/ace/ace.js +10 -0
  1316. data/test/foreman_app/vendor/assets/javascripts/ace/cockpit.js +1 -0
  1317. data/test/foreman_app/vendor/assets/javascripts/ace/ext-static_highlight.js +1 -0
  1318. data/test/foreman_app/vendor/assets/javascripts/ace/ext-textarea.js +1 -0
  1319. data/test/foreman_app/vendor/assets/javascripts/ace/keybinding-emacs.js +1 -0
  1320. data/test/foreman_app/vendor/assets/javascripts/ace/keybinding-vim.js +1 -0
  1321. data/test/foreman_app/vendor/assets/javascripts/ace/mode-diff.js +165 -0
  1322. data/test/foreman_app/vendor/assets/javascripts/ace/mode-ruby.js +1 -0
  1323. data/test/foreman_app/vendor/assets/javascripts/ace/mode-sh.js +1 -0
  1324. data/test/foreman_app/vendor/assets/javascripts/ace/theme-clouds.js +137 -0
  1325. data/test/foreman_app/vendor/assets/javascripts/ace/theme-dawn.js +1 -0
  1326. data/test/foreman_app/vendor/assets/javascripts/ace/theme-textmate.js +1 -0
  1327. data/test/foreman_app/vendor/assets/javascripts/ace/theme-twilight.js +1 -0
  1328. data/test/foreman_app/vendor/assets/javascripts/ace/worker-coffee.js +1 -0
  1329. data/test/foreman_app/vendor/assets/javascripts/ace/worker-css.js +1 -0
  1330. data/test/foreman_app/vendor/assets/javascripts/ace/worker-javascript.js +1 -0
  1331. data/test/foreman_app/vendor/assets/javascripts/ace/worker-json.js +1 -0
  1332. data/test/foreman_app/vendor/assets/javascripts/ace/worker-xquery.js +1 -0
  1333. data/test/foreman_app/vendor/assets/javascripts/background-size.htc +7 -0
  1334. data/test/foreman_app/vendor/assets/javascripts/diff.js +296 -0
  1335. data/test/foreman_app/vendor/assets/javascripts/flot.js +5 -0
  1336. data/test/foreman_app/vendor/assets/javascripts/jquery.cookie.js +91 -0
  1337. data/test/foreman_app/vendor/assets/javascripts/jquery.dataTables.bootstrap-paging.js +101 -0
  1338. data/test/foreman_app/vendor/assets/javascripts/jquery.dataTables.min.js +155 -0
  1339. data/test/foreman_app/vendor/assets/javascripts/jquery.jeditable.js +556 -0
  1340. data/test/foreman_app/vendor/assets/javascripts/jquery.jnotify.js +209 -0
  1341. data/test/foreman_app/vendor/assets/javascripts/jquery.multi-select.js +503 -0
  1342. data/test/foreman_app/vendor/assets/javascripts/noVNC/base64.js +147 -0
  1343. data/test/foreman_app/vendor/assets/javascripts/noVNC/des.js +273 -0
  1344. data/test/foreman_app/vendor/assets/javascripts/noVNC/display.js +700 -0
  1345. data/test/foreman_app/vendor/assets/javascripts/noVNC/input.js +1911 -0
  1346. data/test/foreman_app/vendor/assets/javascripts/noVNC/jsunzip.js +668 -0
  1347. data/test/foreman_app/vendor/assets/javascripts/noVNC/logo.js +1 -0
  1348. data/test/foreman_app/vendor/assets/javascripts/noVNC/playback.js +90 -0
  1349. data/test/foreman_app/vendor/assets/javascripts/noVNC/rfb.js +1846 -0
  1350. data/test/foreman_app/vendor/assets/javascripts/noVNC/ui.js +649 -0
  1351. data/test/foreman_app/vendor/assets/javascripts/noVNC/util.js +303 -0
  1352. data/test/foreman_app/vendor/assets/javascripts/noVNC/web-socket-js/README.txt +109 -0
  1353. data/test/foreman_app/vendor/assets/javascripts/noVNC/web-socket-js/swfobject.js +4 -0
  1354. data/test/foreman_app/vendor/assets/javascripts/noVNC/web-socket-js/web_socket.js +341 -0
  1355. data/test/foreman_app/vendor/assets/javascripts/noVNC/websock.js +356 -0
  1356. data/test/foreman_app/vendor/assets/javascripts/noVNC/webutil.js +148 -0
  1357. data/test/foreman_app/vendor/assets/javascripts/vendor.js +7 -0
  1358. data/test/foreman_app/vendor/assets/stylesheets/jquery.jnotify.css +97 -0
  1359. data/test/foreman_app/vendor/assets/stylesheets/multi-select.scss +126 -0
  1360. data/test/foreman_app/vendor/assets/stylesheets/vendor.css +3 -0
  1361. data/test/functional/discovers_controller_test.rb +40 -0
  1362. data/test/test_helper.rb +28 -0
  1363. data/test/unit/facts.yml +91 -0
  1364. data/test/unit/host_discovered_test.rb +23 -0
  1365. data/test/unit/setting_discovered_test.rb +9 -0
  1366. metadata +2816 -0
@@ -0,0 +1,1911 @@
1
+ /*
2
+ * noVNC: HTML5 VNC client
3
+ * Copyright (C) 2011 Joel Martin
4
+ * Licensed under LGPL-2 or any later version (see LICENSE.txt)
5
+ */
6
+
7
+ /*jslint browser: true, white: false, bitwise: false */
8
+ /*global window, Util */
9
+
10
+
11
+ //
12
+ // Keyboard event handler
13
+ //
14
+
15
+ function Keyboard(defaults) {
16
+ "use strict";
17
+
18
+ var that = {}, // Public API methods
19
+ conf = {}, // Configuration attributes
20
+
21
+ keyDownList = []; // List of depressed keys
22
+ // (even if they are happy)
23
+
24
+ // Configuration attributes
25
+ Util.conf_defaults(conf, that, defaults, [
26
+ ['target', 'wo', 'dom', document, 'DOM element that captures keyboard input'],
27
+ ['focused', 'rw', 'bool', true, 'Capture and send key events'],
28
+
29
+ ['onKeyPress', 'rw', 'func', null, 'Handler for key press/release']
30
+ ]);
31
+
32
+
33
+ //
34
+ // Private functions
35
+ //
36
+
37
+ // From the event keyCode return the keysym value for keys that need
38
+ // to be suppressed otherwise they may trigger unintended browser
39
+ // actions
40
+ function getKeysymSpecial(evt) {
41
+ var keysym = null;
42
+
43
+ switch ( evt.keyCode ) {
44
+ // These generate a keyDown and keyPress in Firefox and Opera
45
+ case 8 : keysym = 0xFF08; break; // BACKSPACE
46
+ case 13 : keysym = 0xFF0D; break; // ENTER
47
+
48
+ // This generates a keyDown and keyPress in Opera
49
+ case 9 : keysym = 0xFF09; break; // TAB
50
+ default : break;
51
+ }
52
+
53
+ if (evt.type === 'keydown') {
54
+ switch ( evt.keyCode ) {
55
+ case 27 : keysym = 0xFF1B; break; // ESCAPE
56
+ case 46 : keysym = 0xFFFF; break; // DELETE
57
+
58
+ case 36 : keysym = 0xFF50; break; // HOME
59
+ case 35 : keysym = 0xFF57; break; // END
60
+ case 33 : keysym = 0xFF55; break; // PAGE_UP
61
+ case 34 : keysym = 0xFF56; break; // PAGE_DOWN
62
+ case 45 : keysym = 0xFF63; break; // INSERT
63
+ // '-' during keyPress
64
+ case 37 : keysym = 0xFF51; break; // LEFT
65
+ case 38 : keysym = 0xFF52; break; // UP
66
+ case 39 : keysym = 0xFF53; break; // RIGHT
67
+ case 40 : keysym = 0xFF54; break; // DOWN
68
+ case 16 : keysym = 0xFFE1; break; // SHIFT
69
+ case 17 : keysym = 0xFFE3; break; // CONTROL
70
+ //case 18 : keysym = 0xFFE7; break; // Left Meta (Mac Option)
71
+ case 18 : keysym = 0xFFE9; break; // Left ALT (Mac Command)
72
+
73
+ case 112 : keysym = 0xFFBE; break; // F1
74
+ case 113 : keysym = 0xFFBF; break; // F2
75
+ case 114 : keysym = 0xFFC0; break; // F3
76
+ case 115 : keysym = 0xFFC1; break; // F4
77
+ case 116 : keysym = 0xFFC2; break; // F5
78
+ case 117 : keysym = 0xFFC3; break; // F6
79
+ case 118 : keysym = 0xFFC4; break; // F7
80
+ case 119 : keysym = 0xFFC5; break; // F8
81
+ case 120 : keysym = 0xFFC6; break; // F9
82
+ case 121 : keysym = 0xFFC7; break; // F10
83
+ case 122 : keysym = 0xFFC8; break; // F11
84
+ case 123 : keysym = 0xFFC9; break; // F12
85
+
86
+ default : break;
87
+ }
88
+ }
89
+
90
+ if ((!keysym) && (evt.ctrlKey || evt.altKey)) {
91
+ if ((typeof(evt.which) !== "undefined") && (evt.which > 0)) {
92
+ keysym = evt.which;
93
+ } else {
94
+ // IE9 always
95
+ // Firefox and Opera when ctrl/alt + special
96
+ Util.Warn("which not set, using keyCode");
97
+ keysym = evt.keyCode;
98
+ }
99
+
100
+ /* Remap symbols */
101
+ switch (keysym) {
102
+ case 186 : keysym = 59; break; // ; (IE)
103
+ case 187 : keysym = 61; break; // = (IE)
104
+ case 188 : keysym = 44; break; // , (Mozilla, IE)
105
+ case 109 : // - (Mozilla, Opera)
106
+ if (Util.Engine.gecko || Util.Engine.presto) {
107
+ keysym = 45; }
108
+ break;
109
+ case 189 : keysym = 45; break; // - (IE)
110
+ case 190 : keysym = 46; break; // . (Mozilla, IE)
111
+ case 191 : keysym = 47; break; // / (Mozilla, IE)
112
+ case 192 : keysym = 96; break; // ` (Mozilla, IE)
113
+ case 219 : keysym = 91; break; // [ (Mozilla, IE)
114
+ case 220 : keysym = 92; break; // \ (Mozilla, IE)
115
+ case 221 : keysym = 93; break; // ] (Mozilla, IE)
116
+ case 222 : keysym = 39; break; // ' (Mozilla, IE)
117
+ }
118
+
119
+ /* Remap shifted and unshifted keys */
120
+ if (!!evt.shiftKey) {
121
+ switch (keysym) {
122
+ case 48 : keysym = 41 ; break; // ) (shifted 0)
123
+ case 49 : keysym = 33 ; break; // ! (shifted 1)
124
+ case 50 : keysym = 64 ; break; // @ (shifted 2)
125
+ case 51 : keysym = 35 ; break; // # (shifted 3)
126
+ case 52 : keysym = 36 ; break; // $ (shifted 4)
127
+ case 53 : keysym = 37 ; break; // % (shifted 5)
128
+ case 54 : keysym = 94 ; break; // ^ (shifted 6)
129
+ case 55 : keysym = 38 ; break; // & (shifted 7)
130
+ case 56 : keysym = 42 ; break; // * (shifted 8)
131
+ case 57 : keysym = 40 ; break; // ( (shifted 9)
132
+
133
+ case 59 : keysym = 58 ; break; // : (shifted `)
134
+ case 61 : keysym = 43 ; break; // + (shifted ;)
135
+ case 44 : keysym = 60 ; break; // < (shifted ,)
136
+ case 45 : keysym = 95 ; break; // _ (shifted -)
137
+ case 46 : keysym = 62 ; break; // > (shifted .)
138
+ case 47 : keysym = 63 ; break; // ? (shifted /)
139
+ case 96 : keysym = 126; break; // ~ (shifted `)
140
+ case 91 : keysym = 123; break; // { (shifted [)
141
+ case 92 : keysym = 124; break; // | (shifted \)
142
+ case 93 : keysym = 125; break; // } (shifted ])
143
+ case 39 : keysym = 34 ; break; // " (shifted ')
144
+ }
145
+ } else if ((keysym >= 65) && (keysym <=90)) {
146
+ /* Remap unshifted A-Z */
147
+ keysym += 32;
148
+ } else if (evt.keyLocation === 3) {
149
+ // numpad keys
150
+ switch (keysym) {
151
+ case 96 : keysym = 48; break; // 0
152
+ case 97 : keysym = 49; break; // 1
153
+ case 98 : keysym = 50; break; // 2
154
+ case 99 : keysym = 51; break; // 3
155
+ case 100: keysym = 52; break; // 4
156
+ case 101: keysym = 53; break; // 5
157
+ case 102: keysym = 54; break; // 6
158
+ case 103: keysym = 55; break; // 7
159
+ case 104: keysym = 56; break; // 8
160
+ case 105: keysym = 57; break; // 9
161
+ case 109: keysym = 45; break; // -
162
+ case 110: keysym = 46; break; // .
163
+ case 111: keysym = 47; break; // /
164
+ }
165
+ }
166
+ }
167
+
168
+ return keysym;
169
+ }
170
+
171
+ /* Translate DOM keyPress event to keysym value */
172
+ function getKeysym(evt) {
173
+ var keysym, msg;
174
+
175
+ if (typeof(evt.which) !== "undefined") {
176
+ // WebKit, Firefox, Opera
177
+ keysym = evt.which;
178
+ } else {
179
+ // IE9
180
+ Util.Warn("which not set, using keyCode");
181
+ keysym = evt.keyCode;
182
+ }
183
+
184
+ if ((keysym > 255) && (keysym < 0xFF00)) {
185
+ msg = "Mapping character code " + keysym;
186
+ // Map Unicode outside Latin 1 to X11 keysyms
187
+ keysym = unicodeTable[keysym];
188
+ if (typeof(keysym) === 'undefined') {
189
+ keysym = 0;
190
+ }
191
+ Util.Debug(msg + " to " + keysym);
192
+ }
193
+
194
+ return keysym;
195
+ }
196
+
197
+ function show_keyDownList(kind) {
198
+ var c;
199
+ var msg = "keyDownList (" + kind + "):\n";
200
+ for (c = 0; c < keyDownList.length; c++) {
201
+ msg = msg + " " + c + " - keyCode: " + keyDownList[c].keyCode +
202
+ " - which: " + keyDownList[c].which + "\n";
203
+ }
204
+ Util.Debug(msg);
205
+ }
206
+
207
+ function copyKeyEvent(evt) {
208
+ var members = ['type', 'keyCode', 'charCode', 'which',
209
+ 'altKey', 'ctrlKey', 'shiftKey',
210
+ 'keyLocation', 'keyIdentifier'], i, obj = {};
211
+ for (i = 0; i < members.length; i++) {
212
+ if (typeof(evt[members[i]]) !== "undefined") {
213
+ obj[members[i]] = evt[members[i]];
214
+ }
215
+ }
216
+ return obj;
217
+ }
218
+
219
+ function pushKeyEvent(fevt) {
220
+ keyDownList.push(fevt);
221
+ }
222
+
223
+ function getKeyEvent(keyCode, pop) {
224
+ var i, fevt = null;
225
+ for (i = keyDownList.length-1; i >= 0; i--) {
226
+ if (keyDownList[i].keyCode === keyCode) {
227
+ if ((typeof(pop) !== "undefined") && (pop)) {
228
+ fevt = keyDownList.splice(i, 1)[0];
229
+ } else {
230
+ fevt = keyDownList[i];
231
+ }
232
+ break;
233
+ }
234
+ }
235
+ return fevt;
236
+ }
237
+
238
+ function ignoreKeyEvent(evt) {
239
+ // Blarg. Some keys have a different keyCode on keyDown vs keyUp
240
+ if (evt.keyCode === 229) {
241
+ // French AZERTY keyboard dead key.
242
+ // Lame thing is that the respective keyUp is 219 so we can't
243
+ // properly ignore the keyUp event
244
+ return true;
245
+ }
246
+ return false;
247
+ }
248
+
249
+
250
+ //
251
+ // Key Event Handling:
252
+ //
253
+ // There are several challenges when dealing with key events:
254
+ // - The meaning and use of keyCode, charCode and which depends on
255
+ // both the browser and the event type (keyDown/Up vs keyPress).
256
+ // - We cannot automatically determine the keyboard layout
257
+ // - The keyDown and keyUp events have a keyCode value that has not
258
+ // been translated by modifier keys.
259
+ // - The keyPress event has a translated (for layout and modifiers)
260
+ // character code but the attribute containing it differs. keyCode
261
+ // contains the translated value in WebKit (Chrome/Safari), Opera
262
+ // 11 and IE9. charCode contains the value in WebKit and Firefox.
263
+ // The which attribute contains the value on WebKit, Firefox and
264
+ // Opera 11.
265
+ // - The keyDown/Up keyCode value indicates (sort of) the physical
266
+ // key was pressed but only for standard US layout. On a US
267
+ // keyboard, the '-' and '_' characters are on the same key and
268
+ // generate a keyCode value of 189. But on an AZERTY keyboard even
269
+ // though they are different physical keys they both still
270
+ // generate a keyCode of 189!
271
+ // - To prevent a key event from propagating to the browser and
272
+ // causing unwanted default actions (such as closing a tab,
273
+ // opening a menu, shifting focus, etc) we must suppress this
274
+ // event in both keyDown and keyPress because not all key strokes
275
+ // generate on a keyPress event. Also, in WebKit and IE9
276
+ // suppressing the keyDown prevents a keyPress but other browsers
277
+ // still generated a keyPress even if keyDown is suppressed.
278
+ //
279
+ // For safe key events, we wait until the keyPress event before
280
+ // reporting a key down event. For unsafe key events, we report a key
281
+ // down event when the keyDown event fires and we suppress any further
282
+ // actions (including keyPress).
283
+ //
284
+ // In order to report a key up event that matches what we reported
285
+ // for the key down event, we keep a list of keys that are currently
286
+ // down. When the keyDown event happens, we add the key event to the
287
+ // list. If it is a safe key event, then we update the which attribute
288
+ // in the most recent item on the list when we received a keyPress
289
+ // event (keyPress should immediately follow keyDown). When we
290
+ // received a keyUp event we search for the event on the list with
291
+ // a matching keyCode and we report the character code using the value
292
+ // in the 'which' attribute that was stored with that key.
293
+ //
294
+
295
+ function onKeyDown(e) {
296
+ if (! conf.focused) {
297
+ return true;
298
+ }
299
+ var fevt = null, evt = (e ? e : window.event),
300
+ keysym = null, suppress = false;
301
+ //Util.Debug("onKeyDown kC:" + evt.keyCode + " cC:" + evt.charCode + " w:" + evt.which);
302
+
303
+ fevt = copyKeyEvent(evt);
304
+
305
+ keysym = getKeysymSpecial(evt);
306
+ // Save keysym decoding for use in keyUp
307
+ fevt.keysym = keysym;
308
+ if (keysym) {
309
+ // If it is a key or key combination that might trigger
310
+ // browser behaviors or it has no corresponding keyPress
311
+ // event, then send it immediately
312
+ if (conf.onKeyPress && !ignoreKeyEvent(evt)) {
313
+ Util.Debug("onKeyPress down, keysym: " + keysym +
314
+ " (onKeyDown key: " + evt.keyCode +
315
+ ", which: " + evt.which + ")");
316
+ conf.onKeyPress(keysym, 1, evt);
317
+ }
318
+ suppress = true;
319
+ }
320
+
321
+ if (! ignoreKeyEvent(evt)) {
322
+ // Add it to the list of depressed keys
323
+ pushKeyEvent(fevt);
324
+ //show_keyDownList('down');
325
+ }
326
+
327
+ if (suppress) {
328
+ // Suppress bubbling/default actions
329
+ Util.stopEvent(e);
330
+ return false;
331
+ } else {
332
+ // Allow the event to bubble and become a keyPress event which
333
+ // will have the character code translated
334
+ return true;
335
+ }
336
+ }
337
+
338
+ function onKeyPress(e) {
339
+ if (! conf.focused) {
340
+ return true;
341
+ }
342
+ var evt = (e ? e : window.event),
343
+ kdlen = keyDownList.length, keysym = null;
344
+ //Util.Debug("onKeyPress kC:" + evt.keyCode + " cC:" + evt.charCode + " w:" + evt.which);
345
+
346
+ if (((evt.which !== "undefined") && (evt.which === 0)) ||
347
+ (getKeysymSpecial(evt))) {
348
+ // Firefox and Opera generate a keyPress event even if keyDown
349
+ // is suppressed. But the keys we want to suppress will have
350
+ // either:
351
+ // - the which attribute set to 0
352
+ // - getKeysymSpecial() will identify it
353
+ Util.Debug("Ignoring special key in keyPress");
354
+ Util.stopEvent(e);
355
+ return false;
356
+ }
357
+
358
+ keysym = getKeysym(evt);
359
+
360
+ // Modify the the which attribute in the depressed keys list so
361
+ // that the keyUp event will be able to have the character code
362
+ // translation available.
363
+ if (kdlen > 0) {
364
+ keyDownList[kdlen-1].keysym = keysym;
365
+ } else {
366
+ Util.Warn("keyDownList empty when keyPress triggered");
367
+ }
368
+
369
+ //show_keyDownList('press');
370
+
371
+ // Send the translated keysym
372
+ if (conf.onKeyPress && (keysym > 0)) {
373
+ Util.Debug("onKeyPress down, keysym: " + keysym +
374
+ " (onKeyPress key: " + evt.keyCode +
375
+ ", which: " + evt.which + ")");
376
+ conf.onKeyPress(keysym, 1, evt);
377
+ }
378
+
379
+ // Stop keypress events just in case
380
+ Util.stopEvent(e);
381
+ return false;
382
+ }
383
+
384
+ function onKeyUp(e) {
385
+ if (! conf.focused) {
386
+ return true;
387
+ }
388
+ var fevt = null, evt = (e ? e : window.event), keysym;
389
+ //Util.Debug("onKeyUp kC:" + evt.keyCode + " cC:" + evt.charCode + " w:" + evt.which);
390
+
391
+ fevt = getKeyEvent(evt.keyCode, true);
392
+
393
+ if (fevt) {
394
+ keysym = fevt.keysym;
395
+ } else {
396
+ Util.Warn("Key event (keyCode = " + evt.keyCode +
397
+ ") not found on keyDownList");
398
+ keysym = 0;
399
+ }
400
+
401
+ //show_keyDownList('up');
402
+
403
+ if (conf.onKeyPress && (keysym > 0)) {
404
+ //Util.Debug("keyPress up, keysym: " + keysym +
405
+ // " (key: " + evt.keyCode + ", which: " + evt.which + ")");
406
+ Util.Debug("onKeyPress up, keysym: " + keysym +
407
+ " (onKeyPress key: " + evt.keyCode +
408
+ ", which: " + evt.which + ")");
409
+ conf.onKeyPress(keysym, 0, evt);
410
+ }
411
+ Util.stopEvent(e);
412
+ return false;
413
+ }
414
+
415
+ function allKeysUp() {
416
+ Util.Debug(">> Keyboard.allKeysUp");
417
+ if (keyDownList.length > 0) {
418
+ Util.Info("Releasing pressed/down keys");
419
+ }
420
+ var i, keysym, fevt = null;
421
+ for (i = keyDownList.length-1; i >= 0; i--) {
422
+ fevt = keyDownList.splice(i, 1)[0];
423
+ keysym = fevt.keysym;
424
+ if (conf.onKeyPress && (keysym > 0)) {
425
+ Util.Debug("allKeysUp, keysym: " + keysym +
426
+ " (keyCode: " + fevt.keyCode +
427
+ ", which: " + fevt.which + ")");
428
+ conf.onKeyPress(keysym, 0, fevt);
429
+ }
430
+ }
431
+ Util.Debug("<< Keyboard.allKeysUp");
432
+ return;
433
+ }
434
+
435
+ //
436
+ // Public API interface functions
437
+ //
438
+
439
+ that.grab = function() {
440
+ //Util.Debug(">> Keyboard.grab");
441
+ var c = conf.target;
442
+
443
+ Util.addEvent(c, 'keydown', onKeyDown);
444
+ Util.addEvent(c, 'keyup', onKeyUp);
445
+ Util.addEvent(c, 'keypress', onKeyPress);
446
+
447
+ // Release (key up) if window loses focus
448
+ Util.addEvent(window, 'blur', allKeysUp);
449
+
450
+ //Util.Debug("<< Keyboard.grab");
451
+ };
452
+
453
+ that.ungrab = function() {
454
+ //Util.Debug(">> Keyboard.ungrab");
455
+ var c = conf.target;
456
+
457
+ Util.removeEvent(c, 'keydown', onKeyDown);
458
+ Util.removeEvent(c, 'keyup', onKeyUp);
459
+ Util.removeEvent(c, 'keypress', onKeyPress);
460
+ Util.removeEvent(window, 'blur', allKeysUp);
461
+
462
+ // Release (key up) all keys that are in a down state
463
+ allKeysUp();
464
+
465
+ //Util.Debug(">> Keyboard.ungrab");
466
+ };
467
+
468
+ return that; // Return the public API interface
469
+
470
+ } // End of Keyboard()
471
+
472
+
473
+ //
474
+ // Mouse event handler
475
+ //
476
+
477
+ function Mouse(defaults) {
478
+ "use strict";
479
+
480
+ var that = {}, // Public API methods
481
+ conf = {}; // Configuration attributes
482
+
483
+ // Configuration attributes
484
+ Util.conf_defaults(conf, that, defaults, [
485
+ ['target', 'ro', 'dom', document, 'DOM element that captures mouse input'],
486
+ ['focused', 'rw', 'bool', true, 'Capture and send mouse clicks/movement'],
487
+ ['scale', 'rw', 'float', 1.0, 'Viewport scale factor 0.0 - 1.0'],
488
+
489
+ ['onMouseButton', 'rw', 'func', null, 'Handler for mouse button click/release'],
490
+ ['onMouseMove', 'rw', 'func', null, 'Handler for mouse movement'],
491
+ ['touchButton', 'rw', 'int', 1, 'Button mask (1, 2, 4) for touch devices (0 means ignore clicks)']
492
+ ]);
493
+
494
+
495
+ //
496
+ // Private functions
497
+ //
498
+
499
+ function onMouseButton(e, down) {
500
+ var evt, pos, bmask;
501
+ if (! conf.focused) {
502
+ return true;
503
+ }
504
+ evt = (e ? e : window.event);
505
+ pos = Util.getEventPosition(e, conf.target, conf.scale);
506
+ if (e.touches || e.changedTouches) {
507
+ // Touch device
508
+ bmask = conf.touchButton;
509
+ // If bmask is set
510
+ } else if (evt.which) {
511
+ /* everything except IE */
512
+ bmask = 1 << evt.button;
513
+ } else {
514
+ /* IE including 9 */
515
+ bmask = (evt.button & 0x1) + // Left
516
+ (evt.button & 0x2) * 2 + // Right
517
+ (evt.button & 0x4) / 2; // Middle
518
+ }
519
+ //Util.Debug("mouse " + pos.x + "," + pos.y + " down: " + down +
520
+ // " bmask: " + bmask + "(evt.button: " + evt.button + ")");
521
+ if (bmask > 0 && conf.onMouseButton) {
522
+ Util.Debug("onMouseButton " + (down ? "down" : "up") +
523
+ ", x: " + pos.x + ", y: " + pos.y + ", bmask: " + bmask);
524
+ conf.onMouseButton(pos.x, pos.y, down, bmask);
525
+ }
526
+ Util.stopEvent(e);
527
+ return false;
528
+ }
529
+
530
+ function onMouseDown(e) {
531
+ onMouseButton(e, 1);
532
+ }
533
+
534
+ function onMouseUp(e) {
535
+ onMouseButton(e, 0);
536
+ }
537
+
538
+ function onMouseWheel(e) {
539
+ var evt, pos, bmask, wheelData;
540
+ if (! conf.focused) {
541
+ return true;
542
+ }
543
+ evt = (e ? e : window.event);
544
+ pos = Util.getEventPosition(e, conf.target, conf.scale);
545
+ wheelData = evt.detail ? evt.detail * -1 : evt.wheelDelta / 40;
546
+ if (wheelData > 0) {
547
+ bmask = 1 << 3;
548
+ } else {
549
+ bmask = 1 << 4;
550
+ }
551
+ //Util.Debug('mouse scroll by ' + wheelData + ':' + pos.x + "," + pos.y);
552
+ if (conf.onMouseButton) {
553
+ conf.onMouseButton(pos.x, pos.y, 1, bmask);
554
+ conf.onMouseButton(pos.x, pos.y, 0, bmask);
555
+ }
556
+ Util.stopEvent(e);
557
+ return false;
558
+ }
559
+
560
+ function onMouseMove(e) {
561
+ var evt, pos;
562
+ if (! conf.focused) {
563
+ return true;
564
+ }
565
+ evt = (e ? e : window.event);
566
+ pos = Util.getEventPosition(e, conf.target, conf.scale);
567
+ //Util.Debug('mouse ' + evt.which + '/' + evt.button + ' up:' + pos.x + "," + pos.y);
568
+ if (conf.onMouseMove) {
569
+ conf.onMouseMove(pos.x, pos.y);
570
+ }
571
+ Util.stopEvent(e);
572
+ return false;
573
+ }
574
+
575
+ function onMouseDisable(e) {
576
+ var evt, pos;
577
+ if (! conf.focused) {
578
+ return true;
579
+ }
580
+ evt = (e ? e : window.event);
581
+ pos = Util.getEventPosition(e, conf.target, conf.scale);
582
+ /* Stop propagation if inside canvas area */
583
+ if ((pos.x >= 0) && (pos.y >= 0) &&
584
+ (pos.x < conf.target.offsetWidth) &&
585
+ (pos.y < conf.target.offsetHeight)) {
586
+ //Util.Debug("mouse event disabled");
587
+ Util.stopEvent(e);
588
+ return false;
589
+ }
590
+ //Util.Debug("mouse event not disabled");
591
+ return true;
592
+ }
593
+
594
+ //
595
+ // Public API interface functions
596
+ //
597
+
598
+ that.grab = function() {
599
+ //Util.Debug(">> Mouse.grab");
600
+ var c = conf.target;
601
+
602
+ if ('ontouchstart' in document.documentElement) {
603
+ Util.addEvent(c, 'touchstart', onMouseDown);
604
+ Util.addEvent(c, 'touchend', onMouseUp);
605
+ Util.addEvent(c, 'touchmove', onMouseMove);
606
+ } else {
607
+ Util.addEvent(c, 'mousedown', onMouseDown);
608
+ Util.addEvent(c, 'mouseup', onMouseUp);
609
+ Util.addEvent(c, 'mousemove', onMouseMove);
610
+ Util.addEvent(c, (Util.Engine.gecko) ? 'DOMMouseScroll' : 'mousewheel',
611
+ onMouseWheel);
612
+ }
613
+
614
+ /* Work around right and middle click browser behaviors */
615
+ Util.addEvent(document, 'click', onMouseDisable);
616
+ Util.addEvent(document.body, 'contextmenu', onMouseDisable);
617
+
618
+ //Util.Debug("<< Mouse.grab");
619
+ };
620
+
621
+ that.ungrab = function() {
622
+ //Util.Debug(">> Mouse.ungrab");
623
+ var c = conf.target;
624
+
625
+ if ('ontouchstart' in document.documentElement) {
626
+ Util.removeEvent(c, 'touchstart', onMouseDown);
627
+ Util.removeEvent(c, 'touchend', onMouseUp);
628
+ Util.removeEvent(c, 'touchmove', onMouseMove);
629
+ } else {
630
+ Util.removeEvent(c, 'mousedown', onMouseDown);
631
+ Util.removeEvent(c, 'mouseup', onMouseUp);
632
+ Util.removeEvent(c, 'mousemove', onMouseMove);
633
+ Util.removeEvent(c, (Util.Engine.gecko) ? 'DOMMouseScroll' : 'mousewheel',
634
+ onMouseWheel);
635
+ }
636
+
637
+ /* Work around right and middle click browser behaviors */
638
+ Util.removeEvent(document, 'click', onMouseDisable);
639
+ Util.removeEvent(document.body, 'contextmenu', onMouseDisable);
640
+
641
+ //Util.Debug(">> Mouse.ungrab");
642
+ };
643
+
644
+ return that; // Return the public API interface
645
+
646
+ } // End of Mouse()
647
+
648
+
649
+ /*
650
+ * Browser keypress to X11 keysym for Unicode characters > U+00FF
651
+ */
652
+ unicodeTable = {
653
+ 0x0104 : 0x01a1,
654
+ 0x02D8 : 0x01a2,
655
+ 0x0141 : 0x01a3,
656
+ 0x013D : 0x01a5,
657
+ 0x015A : 0x01a6,
658
+ 0x0160 : 0x01a9,
659
+ 0x015E : 0x01aa,
660
+ 0x0164 : 0x01ab,
661
+ 0x0179 : 0x01ac,
662
+ 0x017D : 0x01ae,
663
+ 0x017B : 0x01af,
664
+ 0x0105 : 0x01b1,
665
+ 0x02DB : 0x01b2,
666
+ 0x0142 : 0x01b3,
667
+ 0x013E : 0x01b5,
668
+ 0x015B : 0x01b6,
669
+ 0x02C7 : 0x01b7,
670
+ 0x0161 : 0x01b9,
671
+ 0x015F : 0x01ba,
672
+ 0x0165 : 0x01bb,
673
+ 0x017A : 0x01bc,
674
+ 0x02DD : 0x01bd,
675
+ 0x017E : 0x01be,
676
+ 0x017C : 0x01bf,
677
+ 0x0154 : 0x01c0,
678
+ 0x0102 : 0x01c3,
679
+ 0x0139 : 0x01c5,
680
+ 0x0106 : 0x01c6,
681
+ 0x010C : 0x01c8,
682
+ 0x0118 : 0x01ca,
683
+ 0x011A : 0x01cc,
684
+ 0x010E : 0x01cf,
685
+ 0x0110 : 0x01d0,
686
+ 0x0143 : 0x01d1,
687
+ 0x0147 : 0x01d2,
688
+ 0x0150 : 0x01d5,
689
+ 0x0158 : 0x01d8,
690
+ 0x016E : 0x01d9,
691
+ 0x0170 : 0x01db,
692
+ 0x0162 : 0x01de,
693
+ 0x0155 : 0x01e0,
694
+ 0x0103 : 0x01e3,
695
+ 0x013A : 0x01e5,
696
+ 0x0107 : 0x01e6,
697
+ 0x010D : 0x01e8,
698
+ 0x0119 : 0x01ea,
699
+ 0x011B : 0x01ec,
700
+ 0x010F : 0x01ef,
701
+ 0x0111 : 0x01f0,
702
+ 0x0144 : 0x01f1,
703
+ 0x0148 : 0x01f2,
704
+ 0x0151 : 0x01f5,
705
+ 0x0171 : 0x01fb,
706
+ 0x0159 : 0x01f8,
707
+ 0x016F : 0x01f9,
708
+ 0x0163 : 0x01fe,
709
+ 0x02D9 : 0x01ff,
710
+ 0x0126 : 0x02a1,
711
+ 0x0124 : 0x02a6,
712
+ 0x0130 : 0x02a9,
713
+ 0x011E : 0x02ab,
714
+ 0x0134 : 0x02ac,
715
+ 0x0127 : 0x02b1,
716
+ 0x0125 : 0x02b6,
717
+ 0x0131 : 0x02b9,
718
+ 0x011F : 0x02bb,
719
+ 0x0135 : 0x02bc,
720
+ 0x010A : 0x02c5,
721
+ 0x0108 : 0x02c6,
722
+ 0x0120 : 0x02d5,
723
+ 0x011C : 0x02d8,
724
+ 0x016C : 0x02dd,
725
+ 0x015C : 0x02de,
726
+ 0x010B : 0x02e5,
727
+ 0x0109 : 0x02e6,
728
+ 0x0121 : 0x02f5,
729
+ 0x011D : 0x02f8,
730
+ 0x016D : 0x02fd,
731
+ 0x015D : 0x02fe,
732
+ 0x0138 : 0x03a2,
733
+ 0x0156 : 0x03a3,
734
+ 0x0128 : 0x03a5,
735
+ 0x013B : 0x03a6,
736
+ 0x0112 : 0x03aa,
737
+ 0x0122 : 0x03ab,
738
+ 0x0166 : 0x03ac,
739
+ 0x0157 : 0x03b3,
740
+ 0x0129 : 0x03b5,
741
+ 0x013C : 0x03b6,
742
+ 0x0113 : 0x03ba,
743
+ 0x0123 : 0x03bb,
744
+ 0x0167 : 0x03bc,
745
+ 0x014A : 0x03bd,
746
+ 0x014B : 0x03bf,
747
+ 0x0100 : 0x03c0,
748
+ 0x012E : 0x03c7,
749
+ 0x0116 : 0x03cc,
750
+ 0x012A : 0x03cf,
751
+ 0x0145 : 0x03d1,
752
+ 0x014C : 0x03d2,
753
+ 0x0136 : 0x03d3,
754
+ 0x0172 : 0x03d9,
755
+ 0x0168 : 0x03dd,
756
+ 0x016A : 0x03de,
757
+ 0x0101 : 0x03e0,
758
+ 0x012F : 0x03e7,
759
+ 0x0117 : 0x03ec,
760
+ 0x012B : 0x03ef,
761
+ 0x0146 : 0x03f1,
762
+ 0x014D : 0x03f2,
763
+ 0x0137 : 0x03f3,
764
+ 0x0173 : 0x03f9,
765
+ 0x0169 : 0x03fd,
766
+ 0x016B : 0x03fe,
767
+ 0x1E02 : 0x1001e02,
768
+ 0x1E03 : 0x1001e03,
769
+ 0x1E0A : 0x1001e0a,
770
+ 0x1E80 : 0x1001e80,
771
+ 0x1E82 : 0x1001e82,
772
+ 0x1E0B : 0x1001e0b,
773
+ 0x1EF2 : 0x1001ef2,
774
+ 0x1E1E : 0x1001e1e,
775
+ 0x1E1F : 0x1001e1f,
776
+ 0x1E40 : 0x1001e40,
777
+ 0x1E41 : 0x1001e41,
778
+ 0x1E56 : 0x1001e56,
779
+ 0x1E81 : 0x1001e81,
780
+ 0x1E57 : 0x1001e57,
781
+ 0x1E83 : 0x1001e83,
782
+ 0x1E60 : 0x1001e60,
783
+ 0x1EF3 : 0x1001ef3,
784
+ 0x1E84 : 0x1001e84,
785
+ 0x1E85 : 0x1001e85,
786
+ 0x1E61 : 0x1001e61,
787
+ 0x0174 : 0x1000174,
788
+ 0x1E6A : 0x1001e6a,
789
+ 0x0176 : 0x1000176,
790
+ 0x0175 : 0x1000175,
791
+ 0x1E6B : 0x1001e6b,
792
+ 0x0177 : 0x1000177,
793
+ 0x0152 : 0x13bc,
794
+ 0x0153 : 0x13bd,
795
+ 0x0178 : 0x13be,
796
+ 0x203E : 0x047e,
797
+ 0x3002 : 0x04a1,
798
+ 0x300C : 0x04a2,
799
+ 0x300D : 0x04a3,
800
+ 0x3001 : 0x04a4,
801
+ 0x30FB : 0x04a5,
802
+ 0x30F2 : 0x04a6,
803
+ 0x30A1 : 0x04a7,
804
+ 0x30A3 : 0x04a8,
805
+ 0x30A5 : 0x04a9,
806
+ 0x30A7 : 0x04aa,
807
+ 0x30A9 : 0x04ab,
808
+ 0x30E3 : 0x04ac,
809
+ 0x30E5 : 0x04ad,
810
+ 0x30E7 : 0x04ae,
811
+ 0x30C3 : 0x04af,
812
+ 0x30FC : 0x04b0,
813
+ 0x30A2 : 0x04b1,
814
+ 0x30A4 : 0x04b2,
815
+ 0x30A6 : 0x04b3,
816
+ 0x30A8 : 0x04b4,
817
+ 0x30AA : 0x04b5,
818
+ 0x30AB : 0x04b6,
819
+ 0x30AD : 0x04b7,
820
+ 0x30AF : 0x04b8,
821
+ 0x30B1 : 0x04b9,
822
+ 0x30B3 : 0x04ba,
823
+ 0x30B5 : 0x04bb,
824
+ 0x30B7 : 0x04bc,
825
+ 0x30B9 : 0x04bd,
826
+ 0x30BB : 0x04be,
827
+ 0x30BD : 0x04bf,
828
+ 0x30BF : 0x04c0,
829
+ 0x30C1 : 0x04c1,
830
+ 0x30C4 : 0x04c2,
831
+ 0x30C6 : 0x04c3,
832
+ 0x30C8 : 0x04c4,
833
+ 0x30CA : 0x04c5,
834
+ 0x30CB : 0x04c6,
835
+ 0x30CC : 0x04c7,
836
+ 0x30CD : 0x04c8,
837
+ 0x30CE : 0x04c9,
838
+ 0x30CF : 0x04ca,
839
+ 0x30D2 : 0x04cb,
840
+ 0x30D5 : 0x04cc,
841
+ 0x30D8 : 0x04cd,
842
+ 0x30DB : 0x04ce,
843
+ 0x30DE : 0x04cf,
844
+ 0x30DF : 0x04d0,
845
+ 0x30E0 : 0x04d1,
846
+ 0x30E1 : 0x04d2,
847
+ 0x30E2 : 0x04d3,
848
+ 0x30E4 : 0x04d4,
849
+ 0x30E6 : 0x04d5,
850
+ 0x30E8 : 0x04d6,
851
+ 0x30E9 : 0x04d7,
852
+ 0x30EA : 0x04d8,
853
+ 0x30EB : 0x04d9,
854
+ 0x30EC : 0x04da,
855
+ 0x30ED : 0x04db,
856
+ 0x30EF : 0x04dc,
857
+ 0x30F3 : 0x04dd,
858
+ 0x309B : 0x04de,
859
+ 0x309C : 0x04df,
860
+ 0x06F0 : 0x10006f0,
861
+ 0x06F1 : 0x10006f1,
862
+ 0x06F2 : 0x10006f2,
863
+ 0x06F3 : 0x10006f3,
864
+ 0x06F4 : 0x10006f4,
865
+ 0x06F5 : 0x10006f5,
866
+ 0x06F6 : 0x10006f6,
867
+ 0x06F7 : 0x10006f7,
868
+ 0x06F8 : 0x10006f8,
869
+ 0x06F9 : 0x10006f9,
870
+ 0x066A : 0x100066a,
871
+ 0x0670 : 0x1000670,
872
+ 0x0679 : 0x1000679,
873
+ 0x067E : 0x100067e,
874
+ 0x0686 : 0x1000686,
875
+ 0x0688 : 0x1000688,
876
+ 0x0691 : 0x1000691,
877
+ 0x060C : 0x05ac,
878
+ 0x06D4 : 0x10006d4,
879
+ 0x0660 : 0x1000660,
880
+ 0x0661 : 0x1000661,
881
+ 0x0662 : 0x1000662,
882
+ 0x0663 : 0x1000663,
883
+ 0x0664 : 0x1000664,
884
+ 0x0665 : 0x1000665,
885
+ 0x0666 : 0x1000666,
886
+ 0x0667 : 0x1000667,
887
+ 0x0668 : 0x1000668,
888
+ 0x0669 : 0x1000669,
889
+ 0x061B : 0x05bb,
890
+ 0x061F : 0x05bf,
891
+ 0x0621 : 0x05c1,
892
+ 0x0622 : 0x05c2,
893
+ 0x0623 : 0x05c3,
894
+ 0x0624 : 0x05c4,
895
+ 0x0625 : 0x05c5,
896
+ 0x0626 : 0x05c6,
897
+ 0x0627 : 0x05c7,
898
+ 0x0628 : 0x05c8,
899
+ 0x0629 : 0x05c9,
900
+ 0x062A : 0x05ca,
901
+ 0x062B : 0x05cb,
902
+ 0x062C : 0x05cc,
903
+ 0x062D : 0x05cd,
904
+ 0x062E : 0x05ce,
905
+ 0x062F : 0x05cf,
906
+ 0x0630 : 0x05d0,
907
+ 0x0631 : 0x05d1,
908
+ 0x0632 : 0x05d2,
909
+ 0x0633 : 0x05d3,
910
+ 0x0634 : 0x05d4,
911
+ 0x0635 : 0x05d5,
912
+ 0x0636 : 0x05d6,
913
+ 0x0637 : 0x05d7,
914
+ 0x0638 : 0x05d8,
915
+ 0x0639 : 0x05d9,
916
+ 0x063A : 0x05da,
917
+ 0x0640 : 0x05e0,
918
+ 0x0641 : 0x05e1,
919
+ 0x0642 : 0x05e2,
920
+ 0x0643 : 0x05e3,
921
+ 0x0644 : 0x05e4,
922
+ 0x0645 : 0x05e5,
923
+ 0x0646 : 0x05e6,
924
+ 0x0647 : 0x05e7,
925
+ 0x0648 : 0x05e8,
926
+ 0x0649 : 0x05e9,
927
+ 0x064A : 0x05ea,
928
+ 0x064B : 0x05eb,
929
+ 0x064C : 0x05ec,
930
+ 0x064D : 0x05ed,
931
+ 0x064E : 0x05ee,
932
+ 0x064F : 0x05ef,
933
+ 0x0650 : 0x05f0,
934
+ 0x0651 : 0x05f1,
935
+ 0x0652 : 0x05f2,
936
+ 0x0653 : 0x1000653,
937
+ 0x0654 : 0x1000654,
938
+ 0x0655 : 0x1000655,
939
+ 0x0698 : 0x1000698,
940
+ 0x06A4 : 0x10006a4,
941
+ 0x06A9 : 0x10006a9,
942
+ 0x06AF : 0x10006af,
943
+ 0x06BA : 0x10006ba,
944
+ 0x06BE : 0x10006be,
945
+ 0x06CC : 0x10006cc,
946
+ 0x06D2 : 0x10006d2,
947
+ 0x06C1 : 0x10006c1,
948
+ 0x0492 : 0x1000492,
949
+ 0x0493 : 0x1000493,
950
+ 0x0496 : 0x1000496,
951
+ 0x0497 : 0x1000497,
952
+ 0x049A : 0x100049a,
953
+ 0x049B : 0x100049b,
954
+ 0x049C : 0x100049c,
955
+ 0x049D : 0x100049d,
956
+ 0x04A2 : 0x10004a2,
957
+ 0x04A3 : 0x10004a3,
958
+ 0x04AE : 0x10004ae,
959
+ 0x04AF : 0x10004af,
960
+ 0x04B0 : 0x10004b0,
961
+ 0x04B1 : 0x10004b1,
962
+ 0x04B2 : 0x10004b2,
963
+ 0x04B3 : 0x10004b3,
964
+ 0x04B6 : 0x10004b6,
965
+ 0x04B7 : 0x10004b7,
966
+ 0x04B8 : 0x10004b8,
967
+ 0x04B9 : 0x10004b9,
968
+ 0x04BA : 0x10004ba,
969
+ 0x04BB : 0x10004bb,
970
+ 0x04D8 : 0x10004d8,
971
+ 0x04D9 : 0x10004d9,
972
+ 0x04E2 : 0x10004e2,
973
+ 0x04E3 : 0x10004e3,
974
+ 0x04E8 : 0x10004e8,
975
+ 0x04E9 : 0x10004e9,
976
+ 0x04EE : 0x10004ee,
977
+ 0x04EF : 0x10004ef,
978
+ 0x0452 : 0x06a1,
979
+ 0x0453 : 0x06a2,
980
+ 0x0451 : 0x06a3,
981
+ 0x0454 : 0x06a4,
982
+ 0x0455 : 0x06a5,
983
+ 0x0456 : 0x06a6,
984
+ 0x0457 : 0x06a7,
985
+ 0x0458 : 0x06a8,
986
+ 0x0459 : 0x06a9,
987
+ 0x045A : 0x06aa,
988
+ 0x045B : 0x06ab,
989
+ 0x045C : 0x06ac,
990
+ 0x0491 : 0x06ad,
991
+ 0x045E : 0x06ae,
992
+ 0x045F : 0x06af,
993
+ 0x2116 : 0x06b0,
994
+ 0x0402 : 0x06b1,
995
+ 0x0403 : 0x06b2,
996
+ 0x0401 : 0x06b3,
997
+ 0x0404 : 0x06b4,
998
+ 0x0405 : 0x06b5,
999
+ 0x0406 : 0x06b6,
1000
+ 0x0407 : 0x06b7,
1001
+ 0x0408 : 0x06b8,
1002
+ 0x0409 : 0x06b9,
1003
+ 0x040A : 0x06ba,
1004
+ 0x040B : 0x06bb,
1005
+ 0x040C : 0x06bc,
1006
+ 0x0490 : 0x06bd,
1007
+ 0x040E : 0x06be,
1008
+ 0x040F : 0x06bf,
1009
+ 0x044E : 0x06c0,
1010
+ 0x0430 : 0x06c1,
1011
+ 0x0431 : 0x06c2,
1012
+ 0x0446 : 0x06c3,
1013
+ 0x0434 : 0x06c4,
1014
+ 0x0435 : 0x06c5,
1015
+ 0x0444 : 0x06c6,
1016
+ 0x0433 : 0x06c7,
1017
+ 0x0445 : 0x06c8,
1018
+ 0x0438 : 0x06c9,
1019
+ 0x0439 : 0x06ca,
1020
+ 0x043A : 0x06cb,
1021
+ 0x043B : 0x06cc,
1022
+ 0x043C : 0x06cd,
1023
+ 0x043D : 0x06ce,
1024
+ 0x043E : 0x06cf,
1025
+ 0x043F : 0x06d0,
1026
+ 0x044F : 0x06d1,
1027
+ 0x0440 : 0x06d2,
1028
+ 0x0441 : 0x06d3,
1029
+ 0x0442 : 0x06d4,
1030
+ 0x0443 : 0x06d5,
1031
+ 0x0436 : 0x06d6,
1032
+ 0x0432 : 0x06d7,
1033
+ 0x044C : 0x06d8,
1034
+ 0x044B : 0x06d9,
1035
+ 0x0437 : 0x06da,
1036
+ 0x0448 : 0x06db,
1037
+ 0x044D : 0x06dc,
1038
+ 0x0449 : 0x06dd,
1039
+ 0x0447 : 0x06de,
1040
+ 0x044A : 0x06df,
1041
+ 0x042E : 0x06e0,
1042
+ 0x0410 : 0x06e1,
1043
+ 0x0411 : 0x06e2,
1044
+ 0x0426 : 0x06e3,
1045
+ 0x0414 : 0x06e4,
1046
+ 0x0415 : 0x06e5,
1047
+ 0x0424 : 0x06e6,
1048
+ 0x0413 : 0x06e7,
1049
+ 0x0425 : 0x06e8,
1050
+ 0x0418 : 0x06e9,
1051
+ 0x0419 : 0x06ea,
1052
+ 0x041A : 0x06eb,
1053
+ 0x041B : 0x06ec,
1054
+ 0x041C : 0x06ed,
1055
+ 0x041D : 0x06ee,
1056
+ 0x041E : 0x06ef,
1057
+ 0x041F : 0x06f0,
1058
+ 0x042F : 0x06f1,
1059
+ 0x0420 : 0x06f2,
1060
+ 0x0421 : 0x06f3,
1061
+ 0x0422 : 0x06f4,
1062
+ 0x0423 : 0x06f5,
1063
+ 0x0416 : 0x06f6,
1064
+ 0x0412 : 0x06f7,
1065
+ 0x042C : 0x06f8,
1066
+ 0x042B : 0x06f9,
1067
+ 0x0417 : 0x06fa,
1068
+ 0x0428 : 0x06fb,
1069
+ 0x042D : 0x06fc,
1070
+ 0x0429 : 0x06fd,
1071
+ 0x0427 : 0x06fe,
1072
+ 0x042A : 0x06ff,
1073
+ 0x0386 : 0x07a1,
1074
+ 0x0388 : 0x07a2,
1075
+ 0x0389 : 0x07a3,
1076
+ 0x038A : 0x07a4,
1077
+ 0x03AA : 0x07a5,
1078
+ 0x038C : 0x07a7,
1079
+ 0x038E : 0x07a8,
1080
+ 0x03AB : 0x07a9,
1081
+ 0x038F : 0x07ab,
1082
+ 0x0385 : 0x07ae,
1083
+ 0x2015 : 0x07af,
1084
+ 0x03AC : 0x07b1,
1085
+ 0x03AD : 0x07b2,
1086
+ 0x03AE : 0x07b3,
1087
+ 0x03AF : 0x07b4,
1088
+ 0x03CA : 0x07b5,
1089
+ 0x0390 : 0x07b6,
1090
+ 0x03CC : 0x07b7,
1091
+ 0x03CD : 0x07b8,
1092
+ 0x03CB : 0x07b9,
1093
+ 0x03B0 : 0x07ba,
1094
+ 0x03CE : 0x07bb,
1095
+ 0x0391 : 0x07c1,
1096
+ 0x0392 : 0x07c2,
1097
+ 0x0393 : 0x07c3,
1098
+ 0x0394 : 0x07c4,
1099
+ 0x0395 : 0x07c5,
1100
+ 0x0396 : 0x07c6,
1101
+ 0x0397 : 0x07c7,
1102
+ 0x0398 : 0x07c8,
1103
+ 0x0399 : 0x07c9,
1104
+ 0x039A : 0x07ca,
1105
+ 0x039B : 0x07cb,
1106
+ 0x039C : 0x07cc,
1107
+ 0x039D : 0x07cd,
1108
+ 0x039E : 0x07ce,
1109
+ 0x039F : 0x07cf,
1110
+ 0x03A0 : 0x07d0,
1111
+ 0x03A1 : 0x07d1,
1112
+ 0x03A3 : 0x07d2,
1113
+ 0x03A4 : 0x07d4,
1114
+ 0x03A5 : 0x07d5,
1115
+ 0x03A6 : 0x07d6,
1116
+ 0x03A7 : 0x07d7,
1117
+ 0x03A8 : 0x07d8,
1118
+ 0x03A9 : 0x07d9,
1119
+ 0x03B1 : 0x07e1,
1120
+ 0x03B2 : 0x07e2,
1121
+ 0x03B3 : 0x07e3,
1122
+ 0x03B4 : 0x07e4,
1123
+ 0x03B5 : 0x07e5,
1124
+ 0x03B6 : 0x07e6,
1125
+ 0x03B7 : 0x07e7,
1126
+ 0x03B8 : 0x07e8,
1127
+ 0x03B9 : 0x07e9,
1128
+ 0x03BA : 0x07ea,
1129
+ 0x03BB : 0x07eb,
1130
+ 0x03BC : 0x07ec,
1131
+ 0x03BD : 0x07ed,
1132
+ 0x03BE : 0x07ee,
1133
+ 0x03BF : 0x07ef,
1134
+ 0x03C0 : 0x07f0,
1135
+ 0x03C1 : 0x07f1,
1136
+ 0x03C3 : 0x07f2,
1137
+ 0x03C2 : 0x07f3,
1138
+ 0x03C4 : 0x07f4,
1139
+ 0x03C5 : 0x07f5,
1140
+ 0x03C6 : 0x07f6,
1141
+ 0x03C7 : 0x07f7,
1142
+ 0x03C8 : 0x07f8,
1143
+ 0x03C9 : 0x07f9,
1144
+ 0x23B7 : 0x08a1,
1145
+ 0x2320 : 0x08a4,
1146
+ 0x2321 : 0x08a5,
1147
+ 0x23A1 : 0x08a7,
1148
+ 0x23A3 : 0x08a8,
1149
+ 0x23A4 : 0x08a9,
1150
+ 0x23A6 : 0x08aa,
1151
+ 0x239B : 0x08ab,
1152
+ 0x239D : 0x08ac,
1153
+ 0x239E : 0x08ad,
1154
+ 0x23A0 : 0x08ae,
1155
+ 0x23A8 : 0x08af,
1156
+ 0x23AC : 0x08b0,
1157
+ 0x2264 : 0x08bc,
1158
+ 0x2260 : 0x08bd,
1159
+ 0x2265 : 0x08be,
1160
+ 0x222B : 0x08bf,
1161
+ 0x2234 : 0x08c0,
1162
+ 0x221D : 0x08c1,
1163
+ 0x221E : 0x08c2,
1164
+ 0x2207 : 0x08c5,
1165
+ 0x223C : 0x08c8,
1166
+ 0x2243 : 0x08c9,
1167
+ 0x21D4 : 0x08cd,
1168
+ 0x21D2 : 0x08ce,
1169
+ 0x2261 : 0x08cf,
1170
+ 0x221A : 0x08d6,
1171
+ 0x2282 : 0x08da,
1172
+ 0x2283 : 0x08db,
1173
+ 0x2229 : 0x08dc,
1174
+ 0x222A : 0x08dd,
1175
+ 0x2227 : 0x08de,
1176
+ 0x2228 : 0x08df,
1177
+ 0x2202 : 0x08ef,
1178
+ 0x0192 : 0x08f6,
1179
+ 0x2190 : 0x08fb,
1180
+ 0x2191 : 0x08fc,
1181
+ 0x2192 : 0x08fd,
1182
+ 0x2193 : 0x08fe,
1183
+ 0x25C6 : 0x09e0,
1184
+ 0x2592 : 0x09e1,
1185
+ 0x2409 : 0x09e2,
1186
+ 0x240C : 0x09e3,
1187
+ 0x240D : 0x09e4,
1188
+ 0x240A : 0x09e5,
1189
+ 0x2424 : 0x09e8,
1190
+ 0x240B : 0x09e9,
1191
+ 0x2518 : 0x09ea,
1192
+ 0x2510 : 0x09eb,
1193
+ 0x250C : 0x09ec,
1194
+ 0x2514 : 0x09ed,
1195
+ 0x253C : 0x09ee,
1196
+ 0x23BA : 0x09ef,
1197
+ 0x23BB : 0x09f0,
1198
+ 0x2500 : 0x09f1,
1199
+ 0x23BC : 0x09f2,
1200
+ 0x23BD : 0x09f3,
1201
+ 0x251C : 0x09f4,
1202
+ 0x2524 : 0x09f5,
1203
+ 0x2534 : 0x09f6,
1204
+ 0x252C : 0x09f7,
1205
+ 0x2502 : 0x09f8,
1206
+ 0x2003 : 0x0aa1,
1207
+ 0x2002 : 0x0aa2,
1208
+ 0x2004 : 0x0aa3,
1209
+ 0x2005 : 0x0aa4,
1210
+ 0x2007 : 0x0aa5,
1211
+ 0x2008 : 0x0aa6,
1212
+ 0x2009 : 0x0aa7,
1213
+ 0x200A : 0x0aa8,
1214
+ 0x2014 : 0x0aa9,
1215
+ 0x2013 : 0x0aaa,
1216
+ 0x2026 : 0x0aae,
1217
+ 0x2025 : 0x0aaf,
1218
+ 0x2153 : 0x0ab0,
1219
+ 0x2154 : 0x0ab1,
1220
+ 0x2155 : 0x0ab2,
1221
+ 0x2156 : 0x0ab3,
1222
+ 0x2157 : 0x0ab4,
1223
+ 0x2158 : 0x0ab5,
1224
+ 0x2159 : 0x0ab6,
1225
+ 0x215A : 0x0ab7,
1226
+ 0x2105 : 0x0ab8,
1227
+ 0x2012 : 0x0abb,
1228
+ 0x215B : 0x0ac3,
1229
+ 0x215C : 0x0ac4,
1230
+ 0x215D : 0x0ac5,
1231
+ 0x215E : 0x0ac6,
1232
+ 0x2122 : 0x0ac9,
1233
+ 0x2018 : 0x0ad0,
1234
+ 0x2019 : 0x0ad1,
1235
+ 0x201C : 0x0ad2,
1236
+ 0x201D : 0x0ad3,
1237
+ 0x211E : 0x0ad4,
1238
+ 0x2032 : 0x0ad6,
1239
+ 0x2033 : 0x0ad7,
1240
+ 0x271D : 0x0ad9,
1241
+ 0x2663 : 0x0aec,
1242
+ 0x2666 : 0x0aed,
1243
+ 0x2665 : 0x0aee,
1244
+ 0x2720 : 0x0af0,
1245
+ 0x2020 : 0x0af1,
1246
+ 0x2021 : 0x0af2,
1247
+ 0x2713 : 0x0af3,
1248
+ 0x2717 : 0x0af4,
1249
+ 0x266F : 0x0af5,
1250
+ 0x266D : 0x0af6,
1251
+ 0x2642 : 0x0af7,
1252
+ 0x2640 : 0x0af8,
1253
+ 0x260E : 0x0af9,
1254
+ 0x2315 : 0x0afa,
1255
+ 0x2117 : 0x0afb,
1256
+ 0x2038 : 0x0afc,
1257
+ 0x201A : 0x0afd,
1258
+ 0x201E : 0x0afe,
1259
+ 0x22A4 : 0x0bc2,
1260
+ 0x230A : 0x0bc4,
1261
+ 0x2218 : 0x0bca,
1262
+ 0x2395 : 0x0bcc,
1263
+ 0x22A5 : 0x0bce,
1264
+ 0x25CB : 0x0bcf,
1265
+ 0x2308 : 0x0bd3,
1266
+ 0x22A3 : 0x0bdc,
1267
+ 0x22A2 : 0x0bfc,
1268
+ 0x2017 : 0x0cdf,
1269
+ 0x05D0 : 0x0ce0,
1270
+ 0x05D1 : 0x0ce1,
1271
+ 0x05D2 : 0x0ce2,
1272
+ 0x05D3 : 0x0ce3,
1273
+ 0x05D4 : 0x0ce4,
1274
+ 0x05D5 : 0x0ce5,
1275
+ 0x05D6 : 0x0ce6,
1276
+ 0x05D7 : 0x0ce7,
1277
+ 0x05D8 : 0x0ce8,
1278
+ 0x05D9 : 0x0ce9,
1279
+ 0x05DA : 0x0cea,
1280
+ 0x05DB : 0x0ceb,
1281
+ 0x05DC : 0x0cec,
1282
+ 0x05DD : 0x0ced,
1283
+ 0x05DE : 0x0cee,
1284
+ 0x05DF : 0x0cef,
1285
+ 0x05E0 : 0x0cf0,
1286
+ 0x05E1 : 0x0cf1,
1287
+ 0x05E2 : 0x0cf2,
1288
+ 0x05E3 : 0x0cf3,
1289
+ 0x05E4 : 0x0cf4,
1290
+ 0x05E5 : 0x0cf5,
1291
+ 0x05E6 : 0x0cf6,
1292
+ 0x05E7 : 0x0cf7,
1293
+ 0x05E8 : 0x0cf8,
1294
+ 0x05E9 : 0x0cf9,
1295
+ 0x05EA : 0x0cfa,
1296
+ 0x0E01 : 0x0da1,
1297
+ 0x0E02 : 0x0da2,
1298
+ 0x0E03 : 0x0da3,
1299
+ 0x0E04 : 0x0da4,
1300
+ 0x0E05 : 0x0da5,
1301
+ 0x0E06 : 0x0da6,
1302
+ 0x0E07 : 0x0da7,
1303
+ 0x0E08 : 0x0da8,
1304
+ 0x0E09 : 0x0da9,
1305
+ 0x0E0A : 0x0daa,
1306
+ 0x0E0B : 0x0dab,
1307
+ 0x0E0C : 0x0dac,
1308
+ 0x0E0D : 0x0dad,
1309
+ 0x0E0E : 0x0dae,
1310
+ 0x0E0F : 0x0daf,
1311
+ 0x0E10 : 0x0db0,
1312
+ 0x0E11 : 0x0db1,
1313
+ 0x0E12 : 0x0db2,
1314
+ 0x0E13 : 0x0db3,
1315
+ 0x0E14 : 0x0db4,
1316
+ 0x0E15 : 0x0db5,
1317
+ 0x0E16 : 0x0db6,
1318
+ 0x0E17 : 0x0db7,
1319
+ 0x0E18 : 0x0db8,
1320
+ 0x0E19 : 0x0db9,
1321
+ 0x0E1A : 0x0dba,
1322
+ 0x0E1B : 0x0dbb,
1323
+ 0x0E1C : 0x0dbc,
1324
+ 0x0E1D : 0x0dbd,
1325
+ 0x0E1E : 0x0dbe,
1326
+ 0x0E1F : 0x0dbf,
1327
+ 0x0E20 : 0x0dc0,
1328
+ 0x0E21 : 0x0dc1,
1329
+ 0x0E22 : 0x0dc2,
1330
+ 0x0E23 : 0x0dc3,
1331
+ 0x0E24 : 0x0dc4,
1332
+ 0x0E25 : 0x0dc5,
1333
+ 0x0E26 : 0x0dc6,
1334
+ 0x0E27 : 0x0dc7,
1335
+ 0x0E28 : 0x0dc8,
1336
+ 0x0E29 : 0x0dc9,
1337
+ 0x0E2A : 0x0dca,
1338
+ 0x0E2B : 0x0dcb,
1339
+ 0x0E2C : 0x0dcc,
1340
+ 0x0E2D : 0x0dcd,
1341
+ 0x0E2E : 0x0dce,
1342
+ 0x0E2F : 0x0dcf,
1343
+ 0x0E30 : 0x0dd0,
1344
+ 0x0E31 : 0x0dd1,
1345
+ 0x0E32 : 0x0dd2,
1346
+ 0x0E33 : 0x0dd3,
1347
+ 0x0E34 : 0x0dd4,
1348
+ 0x0E35 : 0x0dd5,
1349
+ 0x0E36 : 0x0dd6,
1350
+ 0x0E37 : 0x0dd7,
1351
+ 0x0E38 : 0x0dd8,
1352
+ 0x0E39 : 0x0dd9,
1353
+ 0x0E3A : 0x0dda,
1354
+ 0x0E3F : 0x0ddf,
1355
+ 0x0E40 : 0x0de0,
1356
+ 0x0E41 : 0x0de1,
1357
+ 0x0E42 : 0x0de2,
1358
+ 0x0E43 : 0x0de3,
1359
+ 0x0E44 : 0x0de4,
1360
+ 0x0E45 : 0x0de5,
1361
+ 0x0E46 : 0x0de6,
1362
+ 0x0E47 : 0x0de7,
1363
+ 0x0E48 : 0x0de8,
1364
+ 0x0E49 : 0x0de9,
1365
+ 0x0E4A : 0x0dea,
1366
+ 0x0E4B : 0x0deb,
1367
+ 0x0E4C : 0x0dec,
1368
+ 0x0E4D : 0x0ded,
1369
+ 0x0E50 : 0x0df0,
1370
+ 0x0E51 : 0x0df1,
1371
+ 0x0E52 : 0x0df2,
1372
+ 0x0E53 : 0x0df3,
1373
+ 0x0E54 : 0x0df4,
1374
+ 0x0E55 : 0x0df5,
1375
+ 0x0E56 : 0x0df6,
1376
+ 0x0E57 : 0x0df7,
1377
+ 0x0E58 : 0x0df8,
1378
+ 0x0E59 : 0x0df9,
1379
+ 0x0587 : 0x1000587,
1380
+ 0x0589 : 0x1000589,
1381
+ 0x055D : 0x100055d,
1382
+ 0x058A : 0x100058a,
1383
+ 0x055C : 0x100055c,
1384
+ 0x055B : 0x100055b,
1385
+ 0x055E : 0x100055e,
1386
+ 0x0531 : 0x1000531,
1387
+ 0x0561 : 0x1000561,
1388
+ 0x0532 : 0x1000532,
1389
+ 0x0562 : 0x1000562,
1390
+ 0x0533 : 0x1000533,
1391
+ 0x0563 : 0x1000563,
1392
+ 0x0534 : 0x1000534,
1393
+ 0x0564 : 0x1000564,
1394
+ 0x0535 : 0x1000535,
1395
+ 0x0565 : 0x1000565,
1396
+ 0x0536 : 0x1000536,
1397
+ 0x0566 : 0x1000566,
1398
+ 0x0537 : 0x1000537,
1399
+ 0x0567 : 0x1000567,
1400
+ 0x0538 : 0x1000538,
1401
+ 0x0568 : 0x1000568,
1402
+ 0x0539 : 0x1000539,
1403
+ 0x0569 : 0x1000569,
1404
+ 0x053A : 0x100053a,
1405
+ 0x056A : 0x100056a,
1406
+ 0x053B : 0x100053b,
1407
+ 0x056B : 0x100056b,
1408
+ 0x053C : 0x100053c,
1409
+ 0x056C : 0x100056c,
1410
+ 0x053D : 0x100053d,
1411
+ 0x056D : 0x100056d,
1412
+ 0x053E : 0x100053e,
1413
+ 0x056E : 0x100056e,
1414
+ 0x053F : 0x100053f,
1415
+ 0x056F : 0x100056f,
1416
+ 0x0540 : 0x1000540,
1417
+ 0x0570 : 0x1000570,
1418
+ 0x0541 : 0x1000541,
1419
+ 0x0571 : 0x1000571,
1420
+ 0x0542 : 0x1000542,
1421
+ 0x0572 : 0x1000572,
1422
+ 0x0543 : 0x1000543,
1423
+ 0x0573 : 0x1000573,
1424
+ 0x0544 : 0x1000544,
1425
+ 0x0574 : 0x1000574,
1426
+ 0x0545 : 0x1000545,
1427
+ 0x0575 : 0x1000575,
1428
+ 0x0546 : 0x1000546,
1429
+ 0x0576 : 0x1000576,
1430
+ 0x0547 : 0x1000547,
1431
+ 0x0577 : 0x1000577,
1432
+ 0x0548 : 0x1000548,
1433
+ 0x0578 : 0x1000578,
1434
+ 0x0549 : 0x1000549,
1435
+ 0x0579 : 0x1000579,
1436
+ 0x054A : 0x100054a,
1437
+ 0x057A : 0x100057a,
1438
+ 0x054B : 0x100054b,
1439
+ 0x057B : 0x100057b,
1440
+ 0x054C : 0x100054c,
1441
+ 0x057C : 0x100057c,
1442
+ 0x054D : 0x100054d,
1443
+ 0x057D : 0x100057d,
1444
+ 0x054E : 0x100054e,
1445
+ 0x057E : 0x100057e,
1446
+ 0x054F : 0x100054f,
1447
+ 0x057F : 0x100057f,
1448
+ 0x0550 : 0x1000550,
1449
+ 0x0580 : 0x1000580,
1450
+ 0x0551 : 0x1000551,
1451
+ 0x0581 : 0x1000581,
1452
+ 0x0552 : 0x1000552,
1453
+ 0x0582 : 0x1000582,
1454
+ 0x0553 : 0x1000553,
1455
+ 0x0583 : 0x1000583,
1456
+ 0x0554 : 0x1000554,
1457
+ 0x0584 : 0x1000584,
1458
+ 0x0555 : 0x1000555,
1459
+ 0x0585 : 0x1000585,
1460
+ 0x0556 : 0x1000556,
1461
+ 0x0586 : 0x1000586,
1462
+ 0x055A : 0x100055a,
1463
+ 0x10D0 : 0x10010d0,
1464
+ 0x10D1 : 0x10010d1,
1465
+ 0x10D2 : 0x10010d2,
1466
+ 0x10D3 : 0x10010d3,
1467
+ 0x10D4 : 0x10010d4,
1468
+ 0x10D5 : 0x10010d5,
1469
+ 0x10D6 : 0x10010d6,
1470
+ 0x10D7 : 0x10010d7,
1471
+ 0x10D8 : 0x10010d8,
1472
+ 0x10D9 : 0x10010d9,
1473
+ 0x10DA : 0x10010da,
1474
+ 0x10DB : 0x10010db,
1475
+ 0x10DC : 0x10010dc,
1476
+ 0x10DD : 0x10010dd,
1477
+ 0x10DE : 0x10010de,
1478
+ 0x10DF : 0x10010df,
1479
+ 0x10E0 : 0x10010e0,
1480
+ 0x10E1 : 0x10010e1,
1481
+ 0x10E2 : 0x10010e2,
1482
+ 0x10E3 : 0x10010e3,
1483
+ 0x10E4 : 0x10010e4,
1484
+ 0x10E5 : 0x10010e5,
1485
+ 0x10E6 : 0x10010e6,
1486
+ 0x10E7 : 0x10010e7,
1487
+ 0x10E8 : 0x10010e8,
1488
+ 0x10E9 : 0x10010e9,
1489
+ 0x10EA : 0x10010ea,
1490
+ 0x10EB : 0x10010eb,
1491
+ 0x10EC : 0x10010ec,
1492
+ 0x10ED : 0x10010ed,
1493
+ 0x10EE : 0x10010ee,
1494
+ 0x10EF : 0x10010ef,
1495
+ 0x10F0 : 0x10010f0,
1496
+ 0x10F1 : 0x10010f1,
1497
+ 0x10F2 : 0x10010f2,
1498
+ 0x10F3 : 0x10010f3,
1499
+ 0x10F4 : 0x10010f4,
1500
+ 0x10F5 : 0x10010f5,
1501
+ 0x10F6 : 0x10010f6,
1502
+ 0x1E8A : 0x1001e8a,
1503
+ 0x012C : 0x100012c,
1504
+ 0x01B5 : 0x10001b5,
1505
+ 0x01E6 : 0x10001e6,
1506
+ 0x01D2 : 0x10001d1,
1507
+ 0x019F : 0x100019f,
1508
+ 0x1E8B : 0x1001e8b,
1509
+ 0x012D : 0x100012d,
1510
+ 0x01B6 : 0x10001b6,
1511
+ 0x01E7 : 0x10001e7,
1512
+ 0x01D2 : 0x10001d2,
1513
+ 0x0275 : 0x1000275,
1514
+ 0x018F : 0x100018f,
1515
+ 0x0259 : 0x1000259,
1516
+ 0x1E36 : 0x1001e36,
1517
+ 0x1E37 : 0x1001e37,
1518
+ 0x1EA0 : 0x1001ea0,
1519
+ 0x1EA1 : 0x1001ea1,
1520
+ 0x1EA2 : 0x1001ea2,
1521
+ 0x1EA3 : 0x1001ea3,
1522
+ 0x1EA4 : 0x1001ea4,
1523
+ 0x1EA5 : 0x1001ea5,
1524
+ 0x1EA6 : 0x1001ea6,
1525
+ 0x1EA7 : 0x1001ea7,
1526
+ 0x1EA8 : 0x1001ea8,
1527
+ 0x1EA9 : 0x1001ea9,
1528
+ 0x1EAA : 0x1001eaa,
1529
+ 0x1EAB : 0x1001eab,
1530
+ 0x1EAC : 0x1001eac,
1531
+ 0x1EAD : 0x1001ead,
1532
+ 0x1EAE : 0x1001eae,
1533
+ 0x1EAF : 0x1001eaf,
1534
+ 0x1EB0 : 0x1001eb0,
1535
+ 0x1EB1 : 0x1001eb1,
1536
+ 0x1EB2 : 0x1001eb2,
1537
+ 0x1EB3 : 0x1001eb3,
1538
+ 0x1EB4 : 0x1001eb4,
1539
+ 0x1EB5 : 0x1001eb5,
1540
+ 0x1EB6 : 0x1001eb6,
1541
+ 0x1EB7 : 0x1001eb7,
1542
+ 0x1EB8 : 0x1001eb8,
1543
+ 0x1EB9 : 0x1001eb9,
1544
+ 0x1EBA : 0x1001eba,
1545
+ 0x1EBB : 0x1001ebb,
1546
+ 0x1EBC : 0x1001ebc,
1547
+ 0x1EBD : 0x1001ebd,
1548
+ 0x1EBE : 0x1001ebe,
1549
+ 0x1EBF : 0x1001ebf,
1550
+ 0x1EC0 : 0x1001ec0,
1551
+ 0x1EC1 : 0x1001ec1,
1552
+ 0x1EC2 : 0x1001ec2,
1553
+ 0x1EC3 : 0x1001ec3,
1554
+ 0x1EC4 : 0x1001ec4,
1555
+ 0x1EC5 : 0x1001ec5,
1556
+ 0x1EC6 : 0x1001ec6,
1557
+ 0x1EC7 : 0x1001ec7,
1558
+ 0x1EC8 : 0x1001ec8,
1559
+ 0x1EC9 : 0x1001ec9,
1560
+ 0x1ECA : 0x1001eca,
1561
+ 0x1ECB : 0x1001ecb,
1562
+ 0x1ECC : 0x1001ecc,
1563
+ 0x1ECD : 0x1001ecd,
1564
+ 0x1ECE : 0x1001ece,
1565
+ 0x1ECF : 0x1001ecf,
1566
+ 0x1ED0 : 0x1001ed0,
1567
+ 0x1ED1 : 0x1001ed1,
1568
+ 0x1ED2 : 0x1001ed2,
1569
+ 0x1ED3 : 0x1001ed3,
1570
+ 0x1ED4 : 0x1001ed4,
1571
+ 0x1ED5 : 0x1001ed5,
1572
+ 0x1ED6 : 0x1001ed6,
1573
+ 0x1ED7 : 0x1001ed7,
1574
+ 0x1ED8 : 0x1001ed8,
1575
+ 0x1ED9 : 0x1001ed9,
1576
+ 0x1EDA : 0x1001eda,
1577
+ 0x1EDB : 0x1001edb,
1578
+ 0x1EDC : 0x1001edc,
1579
+ 0x1EDD : 0x1001edd,
1580
+ 0x1EDE : 0x1001ede,
1581
+ 0x1EDF : 0x1001edf,
1582
+ 0x1EE0 : 0x1001ee0,
1583
+ 0x1EE1 : 0x1001ee1,
1584
+ 0x1EE2 : 0x1001ee2,
1585
+ 0x1EE3 : 0x1001ee3,
1586
+ 0x1EE4 : 0x1001ee4,
1587
+ 0x1EE5 : 0x1001ee5,
1588
+ 0x1EE6 : 0x1001ee6,
1589
+ 0x1EE7 : 0x1001ee7,
1590
+ 0x1EE8 : 0x1001ee8,
1591
+ 0x1EE9 : 0x1001ee9,
1592
+ 0x1EEA : 0x1001eea,
1593
+ 0x1EEB : 0x1001eeb,
1594
+ 0x1EEC : 0x1001eec,
1595
+ 0x1EED : 0x1001eed,
1596
+ 0x1EEE : 0x1001eee,
1597
+ 0x1EEF : 0x1001eef,
1598
+ 0x1EF0 : 0x1001ef0,
1599
+ 0x1EF1 : 0x1001ef1,
1600
+ 0x1EF4 : 0x1001ef4,
1601
+ 0x1EF5 : 0x1001ef5,
1602
+ 0x1EF6 : 0x1001ef6,
1603
+ 0x1EF7 : 0x1001ef7,
1604
+ 0x1EF8 : 0x1001ef8,
1605
+ 0x1EF9 : 0x1001ef9,
1606
+ 0x01A0 : 0x10001a0,
1607
+ 0x01A1 : 0x10001a1,
1608
+ 0x01AF : 0x10001af,
1609
+ 0x01B0 : 0x10001b0,
1610
+ 0x20A0 : 0x10020a0,
1611
+ 0x20A1 : 0x10020a1,
1612
+ 0x20A2 : 0x10020a2,
1613
+ 0x20A3 : 0x10020a3,
1614
+ 0x20A4 : 0x10020a4,
1615
+ 0x20A5 : 0x10020a5,
1616
+ 0x20A6 : 0x10020a6,
1617
+ 0x20A7 : 0x10020a7,
1618
+ 0x20A8 : 0x10020a8,
1619
+ 0x20A9 : 0x10020a9,
1620
+ 0x20AA : 0x10020aa,
1621
+ 0x20AB : 0x10020ab,
1622
+ 0x20AC : 0x20ac,
1623
+ 0x2070 : 0x1002070,
1624
+ 0x2074 : 0x1002074,
1625
+ 0x2075 : 0x1002075,
1626
+ 0x2076 : 0x1002076,
1627
+ 0x2077 : 0x1002077,
1628
+ 0x2078 : 0x1002078,
1629
+ 0x2079 : 0x1002079,
1630
+ 0x2080 : 0x1002080,
1631
+ 0x2081 : 0x1002081,
1632
+ 0x2082 : 0x1002082,
1633
+ 0x2083 : 0x1002083,
1634
+ 0x2084 : 0x1002084,
1635
+ 0x2085 : 0x1002085,
1636
+ 0x2086 : 0x1002086,
1637
+ 0x2087 : 0x1002087,
1638
+ 0x2088 : 0x1002088,
1639
+ 0x2089 : 0x1002089,
1640
+ 0x2202 : 0x1002202,
1641
+ 0x2205 : 0x1002205,
1642
+ 0x2208 : 0x1002208,
1643
+ 0x2209 : 0x1002209,
1644
+ 0x220B : 0x100220B,
1645
+ 0x221A : 0x100221A,
1646
+ 0x221B : 0x100221B,
1647
+ 0x221C : 0x100221C,
1648
+ 0x222C : 0x100222C,
1649
+ 0x222D : 0x100222D,
1650
+ 0x2235 : 0x1002235,
1651
+ 0x2245 : 0x1002248,
1652
+ 0x2247 : 0x1002247,
1653
+ 0x2262 : 0x1002262,
1654
+ 0x2263 : 0x1002263,
1655
+ 0x2800 : 0x1002800,
1656
+ 0x2801 : 0x1002801,
1657
+ 0x2802 : 0x1002802,
1658
+ 0x2803 : 0x1002803,
1659
+ 0x2804 : 0x1002804,
1660
+ 0x2805 : 0x1002805,
1661
+ 0x2806 : 0x1002806,
1662
+ 0x2807 : 0x1002807,
1663
+ 0x2808 : 0x1002808,
1664
+ 0x2809 : 0x1002809,
1665
+ 0x280a : 0x100280a,
1666
+ 0x280b : 0x100280b,
1667
+ 0x280c : 0x100280c,
1668
+ 0x280d : 0x100280d,
1669
+ 0x280e : 0x100280e,
1670
+ 0x280f : 0x100280f,
1671
+ 0x2810 : 0x1002810,
1672
+ 0x2811 : 0x1002811,
1673
+ 0x2812 : 0x1002812,
1674
+ 0x2813 : 0x1002813,
1675
+ 0x2814 : 0x1002814,
1676
+ 0x2815 : 0x1002815,
1677
+ 0x2816 : 0x1002816,
1678
+ 0x2817 : 0x1002817,
1679
+ 0x2818 : 0x1002818,
1680
+ 0x2819 : 0x1002819,
1681
+ 0x281a : 0x100281a,
1682
+ 0x281b : 0x100281b,
1683
+ 0x281c : 0x100281c,
1684
+ 0x281d : 0x100281d,
1685
+ 0x281e : 0x100281e,
1686
+ 0x281f : 0x100281f,
1687
+ 0x2820 : 0x1002820,
1688
+ 0x2821 : 0x1002821,
1689
+ 0x2822 : 0x1002822,
1690
+ 0x2823 : 0x1002823,
1691
+ 0x2824 : 0x1002824,
1692
+ 0x2825 : 0x1002825,
1693
+ 0x2826 : 0x1002826,
1694
+ 0x2827 : 0x1002827,
1695
+ 0x2828 : 0x1002828,
1696
+ 0x2829 : 0x1002829,
1697
+ 0x282a : 0x100282a,
1698
+ 0x282b : 0x100282b,
1699
+ 0x282c : 0x100282c,
1700
+ 0x282d : 0x100282d,
1701
+ 0x282e : 0x100282e,
1702
+ 0x282f : 0x100282f,
1703
+ 0x2830 : 0x1002830,
1704
+ 0x2831 : 0x1002831,
1705
+ 0x2832 : 0x1002832,
1706
+ 0x2833 : 0x1002833,
1707
+ 0x2834 : 0x1002834,
1708
+ 0x2835 : 0x1002835,
1709
+ 0x2836 : 0x1002836,
1710
+ 0x2837 : 0x1002837,
1711
+ 0x2838 : 0x1002838,
1712
+ 0x2839 : 0x1002839,
1713
+ 0x283a : 0x100283a,
1714
+ 0x283b : 0x100283b,
1715
+ 0x283c : 0x100283c,
1716
+ 0x283d : 0x100283d,
1717
+ 0x283e : 0x100283e,
1718
+ 0x283f : 0x100283f,
1719
+ 0x2840 : 0x1002840,
1720
+ 0x2841 : 0x1002841,
1721
+ 0x2842 : 0x1002842,
1722
+ 0x2843 : 0x1002843,
1723
+ 0x2844 : 0x1002844,
1724
+ 0x2845 : 0x1002845,
1725
+ 0x2846 : 0x1002846,
1726
+ 0x2847 : 0x1002847,
1727
+ 0x2848 : 0x1002848,
1728
+ 0x2849 : 0x1002849,
1729
+ 0x284a : 0x100284a,
1730
+ 0x284b : 0x100284b,
1731
+ 0x284c : 0x100284c,
1732
+ 0x284d : 0x100284d,
1733
+ 0x284e : 0x100284e,
1734
+ 0x284f : 0x100284f,
1735
+ 0x2850 : 0x1002850,
1736
+ 0x2851 : 0x1002851,
1737
+ 0x2852 : 0x1002852,
1738
+ 0x2853 : 0x1002853,
1739
+ 0x2854 : 0x1002854,
1740
+ 0x2855 : 0x1002855,
1741
+ 0x2856 : 0x1002856,
1742
+ 0x2857 : 0x1002857,
1743
+ 0x2858 : 0x1002858,
1744
+ 0x2859 : 0x1002859,
1745
+ 0x285a : 0x100285a,
1746
+ 0x285b : 0x100285b,
1747
+ 0x285c : 0x100285c,
1748
+ 0x285d : 0x100285d,
1749
+ 0x285e : 0x100285e,
1750
+ 0x285f : 0x100285f,
1751
+ 0x2860 : 0x1002860,
1752
+ 0x2861 : 0x1002861,
1753
+ 0x2862 : 0x1002862,
1754
+ 0x2863 : 0x1002863,
1755
+ 0x2864 : 0x1002864,
1756
+ 0x2865 : 0x1002865,
1757
+ 0x2866 : 0x1002866,
1758
+ 0x2867 : 0x1002867,
1759
+ 0x2868 : 0x1002868,
1760
+ 0x2869 : 0x1002869,
1761
+ 0x286a : 0x100286a,
1762
+ 0x286b : 0x100286b,
1763
+ 0x286c : 0x100286c,
1764
+ 0x286d : 0x100286d,
1765
+ 0x286e : 0x100286e,
1766
+ 0x286f : 0x100286f,
1767
+ 0x2870 : 0x1002870,
1768
+ 0x2871 : 0x1002871,
1769
+ 0x2872 : 0x1002872,
1770
+ 0x2873 : 0x1002873,
1771
+ 0x2874 : 0x1002874,
1772
+ 0x2875 : 0x1002875,
1773
+ 0x2876 : 0x1002876,
1774
+ 0x2877 : 0x1002877,
1775
+ 0x2878 : 0x1002878,
1776
+ 0x2879 : 0x1002879,
1777
+ 0x287a : 0x100287a,
1778
+ 0x287b : 0x100287b,
1779
+ 0x287c : 0x100287c,
1780
+ 0x287d : 0x100287d,
1781
+ 0x287e : 0x100287e,
1782
+ 0x287f : 0x100287f,
1783
+ 0x2880 : 0x1002880,
1784
+ 0x2881 : 0x1002881,
1785
+ 0x2882 : 0x1002882,
1786
+ 0x2883 : 0x1002883,
1787
+ 0x2884 : 0x1002884,
1788
+ 0x2885 : 0x1002885,
1789
+ 0x2886 : 0x1002886,
1790
+ 0x2887 : 0x1002887,
1791
+ 0x2888 : 0x1002888,
1792
+ 0x2889 : 0x1002889,
1793
+ 0x288a : 0x100288a,
1794
+ 0x288b : 0x100288b,
1795
+ 0x288c : 0x100288c,
1796
+ 0x288d : 0x100288d,
1797
+ 0x288e : 0x100288e,
1798
+ 0x288f : 0x100288f,
1799
+ 0x2890 : 0x1002890,
1800
+ 0x2891 : 0x1002891,
1801
+ 0x2892 : 0x1002892,
1802
+ 0x2893 : 0x1002893,
1803
+ 0x2894 : 0x1002894,
1804
+ 0x2895 : 0x1002895,
1805
+ 0x2896 : 0x1002896,
1806
+ 0x2897 : 0x1002897,
1807
+ 0x2898 : 0x1002898,
1808
+ 0x2899 : 0x1002899,
1809
+ 0x289a : 0x100289a,
1810
+ 0x289b : 0x100289b,
1811
+ 0x289c : 0x100289c,
1812
+ 0x289d : 0x100289d,
1813
+ 0x289e : 0x100289e,
1814
+ 0x289f : 0x100289f,
1815
+ 0x28a0 : 0x10028a0,
1816
+ 0x28a1 : 0x10028a1,
1817
+ 0x28a2 : 0x10028a2,
1818
+ 0x28a3 : 0x10028a3,
1819
+ 0x28a4 : 0x10028a4,
1820
+ 0x28a5 : 0x10028a5,
1821
+ 0x28a6 : 0x10028a6,
1822
+ 0x28a7 : 0x10028a7,
1823
+ 0x28a8 : 0x10028a8,
1824
+ 0x28a9 : 0x10028a9,
1825
+ 0x28aa : 0x10028aa,
1826
+ 0x28ab : 0x10028ab,
1827
+ 0x28ac : 0x10028ac,
1828
+ 0x28ad : 0x10028ad,
1829
+ 0x28ae : 0x10028ae,
1830
+ 0x28af : 0x10028af,
1831
+ 0x28b0 : 0x10028b0,
1832
+ 0x28b1 : 0x10028b1,
1833
+ 0x28b2 : 0x10028b2,
1834
+ 0x28b3 : 0x10028b3,
1835
+ 0x28b4 : 0x10028b4,
1836
+ 0x28b5 : 0x10028b5,
1837
+ 0x28b6 : 0x10028b6,
1838
+ 0x28b7 : 0x10028b7,
1839
+ 0x28b8 : 0x10028b8,
1840
+ 0x28b9 : 0x10028b9,
1841
+ 0x28ba : 0x10028ba,
1842
+ 0x28bb : 0x10028bb,
1843
+ 0x28bc : 0x10028bc,
1844
+ 0x28bd : 0x10028bd,
1845
+ 0x28be : 0x10028be,
1846
+ 0x28bf : 0x10028bf,
1847
+ 0x28c0 : 0x10028c0,
1848
+ 0x28c1 : 0x10028c1,
1849
+ 0x28c2 : 0x10028c2,
1850
+ 0x28c3 : 0x10028c3,
1851
+ 0x28c4 : 0x10028c4,
1852
+ 0x28c5 : 0x10028c5,
1853
+ 0x28c6 : 0x10028c6,
1854
+ 0x28c7 : 0x10028c7,
1855
+ 0x28c8 : 0x10028c8,
1856
+ 0x28c9 : 0x10028c9,
1857
+ 0x28ca : 0x10028ca,
1858
+ 0x28cb : 0x10028cb,
1859
+ 0x28cc : 0x10028cc,
1860
+ 0x28cd : 0x10028cd,
1861
+ 0x28ce : 0x10028ce,
1862
+ 0x28cf : 0x10028cf,
1863
+ 0x28d0 : 0x10028d0,
1864
+ 0x28d1 : 0x10028d1,
1865
+ 0x28d2 : 0x10028d2,
1866
+ 0x28d3 : 0x10028d3,
1867
+ 0x28d4 : 0x10028d4,
1868
+ 0x28d5 : 0x10028d5,
1869
+ 0x28d6 : 0x10028d6,
1870
+ 0x28d7 : 0x10028d7,
1871
+ 0x28d8 : 0x10028d8,
1872
+ 0x28d9 : 0x10028d9,
1873
+ 0x28da : 0x10028da,
1874
+ 0x28db : 0x10028db,
1875
+ 0x28dc : 0x10028dc,
1876
+ 0x28dd : 0x10028dd,
1877
+ 0x28de : 0x10028de,
1878
+ 0x28df : 0x10028df,
1879
+ 0x28e0 : 0x10028e0,
1880
+ 0x28e1 : 0x10028e1,
1881
+ 0x28e2 : 0x10028e2,
1882
+ 0x28e3 : 0x10028e3,
1883
+ 0x28e4 : 0x10028e4,
1884
+ 0x28e5 : 0x10028e5,
1885
+ 0x28e6 : 0x10028e6,
1886
+ 0x28e7 : 0x10028e7,
1887
+ 0x28e8 : 0x10028e8,
1888
+ 0x28e9 : 0x10028e9,
1889
+ 0x28ea : 0x10028ea,
1890
+ 0x28eb : 0x10028eb,
1891
+ 0x28ec : 0x10028ec,
1892
+ 0x28ed : 0x10028ed,
1893
+ 0x28ee : 0x10028ee,
1894
+ 0x28ef : 0x10028ef,
1895
+ 0x28f0 : 0x10028f0,
1896
+ 0x28f1 : 0x10028f1,
1897
+ 0x28f2 : 0x10028f2,
1898
+ 0x28f3 : 0x10028f3,
1899
+ 0x28f4 : 0x10028f4,
1900
+ 0x28f5 : 0x10028f5,
1901
+ 0x28f6 : 0x10028f6,
1902
+ 0x28f7 : 0x10028f7,
1903
+ 0x28f8 : 0x10028f8,
1904
+ 0x28f9 : 0x10028f9,
1905
+ 0x28fa : 0x10028fa,
1906
+ 0x28fb : 0x10028fb,
1907
+ 0x28fc : 0x10028fc,
1908
+ 0x28fd : 0x10028fd,
1909
+ 0x28fe : 0x10028fe,
1910
+ 0x28ff : 0x10028ff
1911
+ };