puppetfactory 0.4.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. checksums.yaml +4 -4
  2. data/bin/puppetfactory +5 -0
  3. data/lib/puppetfactory/plugins/classification.rb +1 -1
  4. data/lib/puppetfactory/plugins/code_manager.rb +1 -1
  5. data/lib/puppetfactory/plugins/console_user.rb +2 -2
  6. data/lib/puppetfactory/plugins/docker.rb +5 -3
  7. data/lib/puppetfactory/plugins/gitviz.rb +23 -0
  8. data/lib/puppetfactory/plugins/r10k.rb +6 -2
  9. data/lib/puppetfactory/plugins/shell_user.rb +3 -3
  10. data/lib/puppetfactory/plugins/user_environment.rb +9 -5
  11. data/public/{images → css/images}/ui-bg_diagonals-thick_18_b81900_40x40.png +0 -0
  12. data/public/{images → css/images}/ui-bg_diagonals-thick_20_666666_40x40.png +0 -0
  13. data/public/{images → css/images}/ui-bg_flat_10_000000_40x100.png +0 -0
  14. data/public/{images → css/images}/ui-bg_flat_75_ffffff_40x100.png +0 -0
  15. data/public/{images → css/images}/ui-bg_glass_100_f6f6f6_1x400.png +0 -0
  16. data/public/{images → css/images}/ui-bg_glass_100_fdf5ce_1x400.png +0 -0
  17. data/public/{images → css/images}/ui-bg_glass_65_ffffff_1x400.png +0 -0
  18. data/public/{images → css/images}/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  19. data/public/{images → css/images}/ui-bg_gloss-wave_35_f6a828_500x100.png +0 -0
  20. data/public/css/images/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
  21. data/public/{images → css/images}/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  22. data/public/{images → css/images}/ui-bg_highlight-soft_75_ffe45c_1x100.png +0 -0
  23. data/public/{images → css/images}/ui-icons_222222_256x240.png +0 -0
  24. data/public/{images → css/images}/ui-icons_228ef1_256x240.png +0 -0
  25. data/public/{images → css/images}/ui-icons_454545_256x240.png +0 -0
  26. data/public/{images → css/images}/ui-icons_ef8c08_256x240.png +0 -0
  27. data/public/{images → css/images}/ui-icons_ffd27a_256x240.png +0 -0
  28. data/public/{images → css/images}/ui-icons_ffffff_256x240.png +0 -0
  29. data/public/{jquery-ui.min.css → css/jquery-ui.min.css} +0 -0
  30. data/public/{style.css → css/style.css} +5 -0
  31. data/public/{gitviz → explain-git-with-d3}/LICENSE.md +0 -0
  32. data/public/{gitviz → explain-git-with-d3}/README.md +0 -0
  33. data/public/{gitviz → explain-git-with-d3}/css/explaingit.css +16 -4
  34. data/public/{gitviz → explain-git-with-d3}/css/vendor/1140.css +0 -0
  35. data/public/explain-git-with-d3/css/vendor/images/ui-icons_444444_256x240.png +0 -0
  36. data/public/explain-git-with-d3/css/vendor/images/ui-icons_555555_256x240.png +0 -0
  37. data/public/explain-git-with-d3/css/vendor/images/ui-icons_777620_256x240.png +0 -0
  38. data/public/explain-git-with-d3/css/vendor/images/ui-icons_777777_256x240.png +0 -0
  39. data/public/explain-git-with-d3/css/vendor/images/ui-icons_cc0000_256x240.png +0 -0
  40. data/public/explain-git-with-d3/css/vendor/images/ui-icons_ffffff_256x240.png +0 -0
  41. data/public/explain-git-with-d3/css/vendor/jquery-ui.min.css +7 -0
  42. data/public/explain-git-with-d3/css/vendor/jquery-ui.structure.min.css +5 -0
  43. data/public/{jquery-ui.theme.min.css → explain-git-with-d3/css/vendor/jquery-ui.theme.min.css} +3 -3
  44. data/public/{gitviz/js → explain-git-with-d3/css}/vendor/normalize.css +0 -0
  45. data/public/explain-git-with-d3/embed.html +796 -0
  46. data/public/{gitviz → explain-git-with-d3}/images/forkme_right_red_aa0000.png +0 -0
  47. data/public/{gitviz → explain-git-with-d3}/images/grippy-close.png +0 -0
  48. data/public/{gitviz → explain-git-with-d3}/images/grippy.png +0 -0
  49. data/public/{gitviz → explain-git-with-d3}/images/prompt.gif +0 -0
  50. data/public/{gitviz → explain-git-with-d3}/index.html +7 -2
  51. data/public/{gitviz → explain-git-with-d3}/js/controlbox.js +0 -0
  52. data/public/{gitviz → explain-git-with-d3}/js/explaingit.js +21 -0
  53. data/public/{gitviz → explain-git-with-d3}/js/historyview.js +0 -0
  54. data/public/{gitviz → explain-git-with-d3}/js/main.js +9 -2
  55. data/public/{gitviz → explain-git-with-d3}/js/vendor/d3.min.js +0 -0
  56. data/public/explain-git-with-d3/js/vendor/jquery-ui.min.js +13 -0
  57. data/public/explain-git-with-d3/js/vendor/jquery.dialogextend.js +509 -0
  58. data/public/explain-git-with-d3/js/vendor/jquery.dialogextend.min.js +2 -0
  59. data/public/{gitviz/js/vendor/jquery-latest.min.js → explain-git-with-d3/js/vendor/jquery.min.js} +0 -0
  60. data/public/{gitviz → explain-git-with-d3}/js/vendor/require.min.js +0 -0
  61. data/public/{gitviz → explain-git-with-d3}/memtest.html +0 -0
  62. data/public/{dashboard.js → js/dashboard.js} +0 -0
  63. data/public/{jquery-ui.min.js → js/jquery-ui.min.js} +0 -0
  64. data/public/{jquery.activity-indicator-1.0.0.min.js → js/jquery.activity-indicator-1.0.0.min.js} +0 -0
  65. data/public/{jquery.js → js/jquery.js} +0 -0
  66. data/public/{loginscripts.js → js/loginscripts.js} +0 -0
  67. data/public/{scripts.js → js/scripts.js} +0 -0
  68. data/public/{usermanagement.js → js/usermanagement.js} +0 -0
  69. data/templates/puppet.conf.erb +1 -1
  70. data/views/dashboard.erb +1 -1
  71. data/views/home.erb +0 -6
  72. data/views/index.erb +6 -6
  73. data/views/shell.erb +1 -1
  74. data/views/users.erb +4 -4
  75. metadata +72 -62
  76. data/public/images/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
  77. data/public/jquery-1.11.1.min.js +0 -4
  78. data/public/jquery-ui.css +0 -464
  79. data/public/jquery-ui.structure.min.css +0 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ed93b40457051de5d2851c3ec2dcffd491d292ee
4
- data.tar.gz: 19f16c05357c6c9d2a8dc6d0d4109ce72acbaf81
3
+ metadata.gz: c914e44caa0a8d8068dc1dde6458e1587a4e9a21
4
+ data.tar.gz: 0277babbde8fd654b881e33ec3db1dd2a8b5d7b5
5
5
  SHA512:
6
- metadata.gz: ed0b47fdac3c0b0133809422900eaf137e92ea9b1d55c77bc35a01b26f6f3e9b3abc537d98f96f1696afe2530b99ca660358e7d2c3303cc64892e34fbae10e43
7
- data.tar.gz: c27f57e1691131f6be87d27a1011676d9ef7b9d3266cce444dbe7341c8cd2fbbc756d23b5d4786814a61695456e7cd8bf72c1fe9b4b12b1bb1078ee1ac05be55
6
+ metadata.gz: d0aca7da02276544f5225eb03982ba6ca36dfa1dc6e9b7b260f38db7ee5174fdd9e745ce5abfa171ae22fe476b25c2d53ede98cbf31aa9a0270f67b0d918b288
7
+ data.tar.gz: 5a917e68a33b5eb846483ab4cb419bc4ae4fab9cd708c89640308c614979837aebf5c10d5c9dd175260a92c6a018d1526b54933b8485c37f2c5352f0b25eb81d
data/bin/puppetfactory CHANGED
@@ -7,6 +7,10 @@ require 'yaml'
7
7
 
8
8
  NAME = File.basename($PROGRAM_NAME)
9
9
 
10
+ # sanitize the environment for the tools that expect it
11
+ ENV['HOME'] = '/root'
12
+ ENV['PATH'] = '/opt/puppetlabs/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin'
13
+
10
14
  if File.exist? '/etc/puppetfactory/config.yaml'
11
15
  options = YAML.load_file('/etc/puppetfactory/config.yaml') rescue {}
12
16
  else
@@ -55,6 +59,7 @@ optparse.parse!
55
59
  options[:puppet] ||= '/opt/puppetlabs/bin/puppet'
56
60
  options[:confdir] ||= '/etc/puppetlabs/puppet'
57
61
  options[:codedir] ||= '/etc/puppetlabs/code'
62
+ options[:stagedir] ||= '/etc/puppetlabs/code-staging'
58
63
  options[:environments] ||= "#{options[:codedir]}/environments"
59
64
 
60
65
  options[:root] ||= File.expand_path(File.join(File.dirname(__FILE__), '..'))
@@ -68,7 +68,7 @@ class Puppetfactory::Plugins::Classification < Puppetfactory::Plugins
68
68
  {
69
69
  :username => username,
70
70
  :node_group_id => ngid,
71
- :node_group_url => "https://#{@master}/#/node_groups/groups/#{ngid}",
71
+ :node_group_url => "#/node_groups/groups/#{ngid}",
72
72
  }
73
73
  end
74
74
 
@@ -38,7 +38,7 @@ class Puppetfactory::Plugins::CodeManager < Puppetfactory::Plugins
38
38
  begin
39
39
  environment = "#{@environments}/#{Puppetfactory::Helpers.environment_name(username)}"
40
40
  FileUtils.mkdir_p environment
41
- FileUtils.chown_R(username, 'pe-puppet', environment)
41
+ FileUtils.chown('pe-puppet', 'pe-puppet', environment)
42
42
  FileUtils.chmod(0750, environment)
43
43
 
44
44
  File.open(@sources) do |file|
@@ -24,7 +24,7 @@ class Puppetfactory::Plugins::ConsoleUser < Puppetfactory::Plugins
24
24
  "email=#{username}@#{@suffix}",
25
25
  "password=#{password}")
26
26
 
27
- unless status.success
27
+ unless status.success?
28
28
  $logger.error "Could not create PE Console user #{username}: #{output}"
29
29
  return false
30
30
  end
@@ -47,7 +47,7 @@ class Puppetfactory::Plugins::ConsoleUser < Puppetfactory::Plugins
47
47
  def userinfo(username, extended = false)
48
48
  return unless extended
49
49
 
50
- output, status = Open3.capture2e(PUPPET, 'resource', 'rbac_user', username)
50
+ output, status = Open3.capture2e(@puppet, 'resource', 'rbac_user', username)
51
51
  unless status.success?
52
52
  $logger.error "Could not query Puppet user #{username}: #{output}"
53
53
  return false
@@ -13,9 +13,11 @@ class Puppetfactory::Plugins::Docker < Puppetfactory::Plugins
13
13
  @weight = 5
14
14
 
15
15
  @confdir = options[:confdir]
16
- @environments = options[:environments]
16
+ @stagedir = options[:stagedir]
17
+ @environments = "#{@stagedir}/environments"
17
18
  @puppetcode = options[:puppetcode]
18
19
  @master = options[:master]
20
+ @usersuffix = options[:usersuffix]
19
21
  @modulepath = options[:modulepath]
20
22
  @templatedir = options[:templatedir]
21
23
  @container = options[:container_name] || 'centosagent'
@@ -50,7 +52,7 @@ class Puppetfactory::Plugins::Docker < Puppetfactory::Plugins
50
52
  "/usr/lib/systemd/systemd"
51
53
  ],
52
54
  "Tty" => true,
53
- "Domainname" => "puppetlabs.vm",
55
+ "Domainname" => @usersuffix,
54
56
  "Env" => [
55
57
  "RUNLEVEL=3",
56
58
  "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
@@ -151,7 +153,7 @@ class Puppetfactory::Plugins::Docker < Puppetfactory::Plugins
151
153
  # TODO: We need a better way of doing this, since we're not guaranteed to always have system users.
152
154
  # See plugins/shell_user.rb for the other side of this coupling.
153
155
  def user_port(username)
154
- Etc.getpwnam(username).uid + 3000
156
+ Etc.getpwnam(username).uid + 3000 rescue nil
155
157
  end
156
158
 
157
159
  def massage_container_state(state)
@@ -0,0 +1,23 @@
1
+ require 'puppetfactory'
2
+
3
+ class Puppetfactory::Plugins::Gitviz < Puppetfactory::Plugins
4
+
5
+ def initialize(options)
6
+ super(options)
7
+ return unless options[:puppetfactory]
8
+
9
+ server = options[:puppetfactory]
10
+
11
+ # Add a web route to the puppetfactory server. Must happen in the initializer
12
+ server.get '/gitviz' do
13
+ '<iframe id="gitviz" src="/explain-git-with-d3/embed.html" /><script>$("div:has(#gitviz)").css("padding", 0);$("body").css("min-width", "1150px");</script>'
14
+ end
15
+
16
+ end
17
+
18
+ def tabs(privileged = false)
19
+ # url path => display title
20
+ { 'gitviz' => 'Git Visualization' }
21
+ end
22
+
23
+ end
@@ -22,6 +22,8 @@ class Puppetfactory::Plugins::R10k < Puppetfactory::Plugins
22
22
  end
23
23
 
24
24
  def create(username, password)
25
+ return unless @repomodel == :peruser
26
+
25
27
  begin
26
28
  environment = "#{@environments}/#{Puppetfactory::Helpers.environment_name(username)}"
27
29
  FileUtils.mkdir_p environment
@@ -36,7 +38,7 @@ class Puppetfactory::Plugins::R10k < Puppetfactory::Plugins
36
38
  r10k['sources'][username] = {
37
39
  'remote' => sprintf(@pattern, username),
38
40
  'basedir' => @environments,
39
- 'prefix' => (@repomodel == :peruser),
41
+ 'prefix' => true,
40
42
  }
41
43
 
42
44
  # Ruby 1.8.7, why don't you just go away now
@@ -53,6 +55,8 @@ class Puppetfactory::Plugins::R10k < Puppetfactory::Plugins
53
55
  end
54
56
 
55
57
  def delete(username)
58
+ return unless @repomodel == :peruser
59
+
56
60
  begin
57
61
  environment = "#{@environments}/#{Puppetfactory::Helpers.environment_name(username)}"
58
62
  FileUtils.rm_rf environment
@@ -69,7 +73,7 @@ class Puppetfactory::Plugins::R10k < Puppetfactory::Plugins
69
73
 
70
74
  # Ruby 1.8.7, why don't you just go away now
71
75
  File.open(@r10k_config, 'w') { |f| f.write(r10k.to_yaml) }
72
- $logger.info "Created r10k source for #{username}"
76
+ $logger.info "Removed r10k source for #{username}"
73
77
  end
74
78
  rescue => e
75
79
  $logger.error "Cannot remove r10k source for #{username}"
@@ -7,7 +7,7 @@ class Puppetfactory::Plugins::ShellUser < Puppetfactory::Plugins
7
7
  super(options)
8
8
 
9
9
  @weight = 1
10
- @suffix = options[:usersuffix]
10
+ @usersuffix = options[:usersuffix]
11
11
  @puppet = options[:puppet]
12
12
  @master = options[:master]
13
13
  @templatedir = options[:templatedir]
@@ -61,8 +61,8 @@ class Puppetfactory::Plugins::ShellUser < Puppetfactory::Plugins
61
61
  # build the basic user object, can be added to by other plugins
62
62
  {
63
63
  :username => username,
64
- :console => "#{username}@#{@suffix}",
65
- :certname => "#{username}.#{@suffix}",
64
+ :console => "#{username}@#{@usersuffix}",
65
+ :certname => "#{username}.#{@usersuffix}",
66
66
  }
67
67
  end
68
68
 
@@ -7,16 +7,16 @@ class Puppetfactory::Plugins::UserEnvironment < Puppetfactory::Plugins
7
7
  super(options)
8
8
 
9
9
  @codedir = options[:codedir]
10
- @confdir = options[:confdir]
10
+ @stagedir = options[:stagedir]
11
11
  @puppetcode = options[:puppetcode]
12
12
  @templatedir = options[:templatedir]
13
13
  @environments = options[:environments]
14
- @modulepath = options[:modulepath]
15
14
  @repomodel = options[:repomodel]
15
+ @codestage = "#{@stagedir}/environments"
16
16
  end
17
17
 
18
18
  def create(username, password)
19
- environment = "#{@environments}/#{Puppetfactory::Helpers.environment_name(username)}"
19
+ environment = "#{@codestage}/#{Puppetfactory::Helpers.environment_name(username)}"
20
20
 
21
21
  begin
22
22
  # configure environment
@@ -37,9 +37,11 @@ class Puppetfactory::Plugins::UserEnvironment < Puppetfactory::Plugins
37
37
  end
38
38
 
39
39
  # make sure the user and pe-puppet can access all the needful
40
- FileUtils.chown_R(env_user, 'pe-puppet', environment)
40
+ FileUtils.chown_R(username, 'pe-puppet', environment)
41
41
  FileUtils.chmod(0750, environment)
42
42
 
43
+ deploy(username)
44
+
43
45
  rescue => e
44
46
  $logger.error "Error creating user environment for #{username}"
45
47
  $logger.error e.message
@@ -58,7 +60,9 @@ class Puppetfactory::Plugins::UserEnvironment < Puppetfactory::Plugins
58
60
  end
59
61
 
60
62
  def deploy(username)
61
- create(username, nil)
63
+ environment = Puppetfactory::Helpers.environment_name(username)
64
+
65
+ FileUtils.cp_r("#{@codestage}/#{environment}/.", "#{@environments}/#{environment}")
62
66
  end
63
67
 
64
68
  def redeploy(username)
File without changes
@@ -191,3 +191,8 @@ table#users td.select {
191
191
  #dashboard .completed a:hover {
192
192
  border-bottom: 2px solid black;
193
193
  }
194
+
195
+ #gitviz {
196
+ width: 100%;
197
+ min-height: 600px;
198
+ }
File without changes
File without changes
@@ -1,12 +1,20 @@
1
1
  /* styles */
2
- body {
3
- min-width: 1200px;
2
+ h1,h2,h3,h4,h5,h6 {
3
+ padding-bottom: 0.5em;
4
+ }
5
+
6
+ p {
7
+ padding-bottom: 1em;
8
+ }
9
+
10
+ .container {
11
+ padding: 0;
4
12
  }
5
13
 
6
14
  #menuwrapper {
7
15
  position: fixed;
8
16
  width: 100%;
9
- min-height: 9px;
17
+ min-height: 16px;
10
18
  border-bottom: 1px solid #888;
11
19
  margin: 0;
12
20
  background-color: #dfdfdf;
@@ -19,6 +27,11 @@ body {
19
27
  background: #dfdfdf url(../images/grippy-close.png) no-repeat bottom center;
20
28
  }
21
29
 
30
+ #introduction,
31
+ .scenario {
32
+ display: none;
33
+ }
34
+
22
35
  .intro {
23
36
  padding: 10px 4em 0 0;
24
37
  }
@@ -43,7 +56,6 @@ a.openswitch.selected {
43
56
  }
44
57
 
45
58
  .concept-area {
46
- padding-bottom: 20px;
47
59
  min-height: 525px;
48
60
  }
49
61
 
@@ -0,0 +1,7 @@
1
+ /*! jQuery UI - v1.12.0 - 2016-07-08
2
+ * http://jqueryui.com
3
+ * Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
4
+ * To view and modify this theme, visit http://jqueryui.com/themeroller/?bgShadowXPos=&bgOverlayXPos=&bgErrorXPos=&bgHighlightXPos=&bgContentXPos=&bgHeaderXPos=&bgActiveXPos=&bgHoverXPos=&bgDefaultXPos=&bgShadowYPos=&bgOverlayYPos=&bgErrorYPos=&bgHighlightYPos=&bgContentYPos=&bgHeaderYPos=&bgActiveYPos=&bgHoverYPos=&bgDefaultYPos=&bgShadowRepeat=&bgOverlayRepeat=&bgErrorRepeat=&bgHighlightRepeat=&bgContentRepeat=&bgHeaderRepeat=&bgActiveRepeat=&bgHoverRepeat=&bgDefaultRepeat=&iconsHover=url(%22images%2Fui-icons_555555_256x240.png%22)&iconsHighlight=url(%22images%2Fui-icons_777620_256x240.png%22)&iconsHeader=url(%22images%2Fui-icons_444444_256x240.png%22)&iconsError=url(%22images%2Fui-icons_cc0000_256x240.png%22)&iconsDefault=url(%22images%2Fui-icons_777777_256x240.png%22)&iconsContent=url(%22images%2Fui-icons_444444_256x240.png%22)&iconsActive=url(%22images%2Fui-icons_ffffff_256x240.png%22)&bgImgUrlShadow=&bgImgUrlOverlay=&bgImgUrlHover=&bgImgUrlHighlight=&bgImgUrlHeader=&bgImgUrlError=&bgImgUrlDefault=&bgImgUrlContent=&bgImgUrlActive=&opacityFilterShadow=Alpha(Opacity%3D30)&opacityFilterOverlay=Alpha(Opacity%3D30)&opacityShadowPerc=30&opacityOverlayPerc=30&iconColorHover=%23555555&iconColorHighlight=%23777620&iconColorHeader=%23444444&iconColorError=%23cc0000&iconColorDefault=%23777777&iconColorContent=%23444444&iconColorActive=%23ffffff&bgImgOpacityShadow=0&bgImgOpacityOverlay=0&bgImgOpacityError=95&bgImgOpacityHighlight=55&bgImgOpacityContent=75&bgImgOpacityHeader=75&bgImgOpacityActive=65&bgImgOpacityHover=75&bgImgOpacityDefault=75&bgTextureShadow=flat&bgTextureOverlay=flat&bgTextureError=flat&bgTextureHighlight=flat&bgTextureContent=flat&bgTextureHeader=flat&bgTextureActive=flat&bgTextureHover=flat&bgTextureDefault=flat&cornerRadius=3px&fwDefault=normal&ffDefault=Arial%2CHelvetica%2Csans-serif&fsDefault=1em&cornerRadiusShadow=8px&thicknessShadow=5px&offsetLeftShadow=0px&offsetTopShadow=0px&opacityShadow=.3&bgColorShadow=%23666666&opacityOverlay=.3&bgColorOverlay=%23aaaaaa&fcError=%235f3f3f&borderColorError=%23f1a899&bgColorError=%23fddfdf&fcHighlight=%23777620&borderColorHighlight=%23dad55e&bgColorHighlight=%23fffa90&fcContent=%23333333&borderColorContent=%23dddddd&bgColorContent=%23ffffff&fcHeader=%23333333&borderColorHeader=%23dddddd&bgColorHeader=%23e9e9e9&fcActive=%23ffffff&borderColorActive=%23003eff&bgColorActive=%23007fff&fcHover=%232b2b2b&borderColorHover=%23cccccc&bgColorHover=%23ededed&fcDefault=%23454545&borderColorDefault=%23c5c5c5&bgColorDefault=%23f6f6f6
5
+ * Copyright jQuery Foundation and other contributors; Licensed MIT */
6
+
7
+ .ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;font-size:100%}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-button{padding:.4em 1em;display:inline-block;position:relative;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2em;box-sizing:border-box;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-button-icon-only{text-indent:0}.ui-button-icon-only .ui-icon{position:absolute;top:50%;left:50%;margin-top:-8px;margin-left:-8px}.ui-button.ui-icon-notext .ui-icon{padding:0;width:2.1em;height:2.1em;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-icon-notext .ui-icon{width:auto;height:auto;text-indent:0;white-space:normal;padding:.4em 1em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-controlgroup{vertical-align:middle;display:inline-block}.ui-controlgroup > .ui-controlgroup-item{float:left;margin-left:0;margin-right:0}.ui-controlgroup > .ui-controlgroup-item:focus,.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus{z-index:9999}.ui-controlgroup-vertical > .ui-controlgroup-item{display:block;float:none;width:100%;margin-top:0;margin-bottom:0;text-align:left}.ui-controlgroup-vertical .ui-controlgroup-item{box-sizing:border-box}.ui-controlgroup .ui-controlgroup-label{padding:.4em 1em}.ui-controlgroup .ui-controlgroup-label span{font-size:80%}.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item{border-left:none}.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item{border-top:none}.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content{border-right:none}.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content{border-bottom:none}.ui-controlgroup-vertical .ui-spinner-input{width:75%;width:calc( 100% - 2.4em )}.ui-controlgroup-vertical .ui-spinner .ui-spinner-up{border-top-style:solid}.ui-checkboxradio-label .ui-icon-background{box-shadow:inset 1px 1px 1px #ccc;border-radius:.12em;border:none}.ui-checkboxradio-radio-label .ui-icon-background{width:16px;height:16px;border-radius:1em;overflow:visible;border:none}.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon{background-image:none;width:8px;height:8px;border-width:4px;border-style:solid}.ui-checkboxradio-disabled{pointer-events:none}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker .ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat;left:.5em;top:.3em}.ui-dialog{position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-n{height:2px;top:0}.ui-dialog .ui-resizable-e{width:2px;right:0}.ui-dialog .ui-resizable-s{height:2px;bottom:0}.ui-dialog .ui-resizable-w{width:2px;left:0}.ui-dialog .ui-resizable-se,.ui-dialog .ui-resizable-sw,.ui-dialog .ui-resizable-ne,.ui-dialog .ui-resizable-nw{width:7px;height:7px}.ui-dialog .ui-resizable-se{right:0;bottom:0}.ui-dialog .ui-resizable-sw{left:0;bottom:0}.ui-dialog .ui-resizable-ne{right:0;top:0}.ui-dialog .ui-resizable-nw{left:0;top:0}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw==");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px 0.4em;margin:0.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-text{display:block;margin-right:20px;overflow:hidden;text-overflow:ellipsis}.ui-selectmenu-button.ui-button{text-align:left;white-space:nowrap;width:14em}.ui-selectmenu-icon.ui-icon{float:right;margin-top:0}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:.222em 0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:2em}.ui-spinner-button{width:1.6em;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top-style:none;border-bottom-style:none;border-right-style:none}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget.ui-widget-content{border:1px solid #c5c5c5}.ui-widget-content{border:1px solid #ddd;background:#fff;color:#333}.ui-widget-content a{color:#333}.ui-widget-header{border:1px solid #ddd;background:#e9e9e9;color:#333;font-weight:bold}.ui-widget-header a{color:#333}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default,.ui-button,html .ui-button.ui-state-disabled:hover,html .ui-button.ui-state-disabled:active{border:1px solid #c5c5c5;background:#f6f6f6;font-weight:normal;color:#454545}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited,a.ui-button,a:link.ui-button,a:visited.ui-button,.ui-button{color:#454545;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus,.ui-button:hover,.ui-button:focus{border:1px solid #ccc;background:#ededed;font-weight:normal;color:#2b2b2b}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited,a.ui-button:hover,a.ui-button:focus{color:#2b2b2b;text-decoration:none}.ui-visual-focus{box-shadow:0 0 3px 1px rgb(94,158,214)}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active,a.ui-button:active,.ui-button:active,.ui-button.ui-state-active:hover{border:1px solid #003eff;background:#007fff;font-weight:normal;color:#fff}.ui-icon-background,.ui-state-active .ui-icon-background{border:#003eff;background-color:#fff}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#fff;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #dad55e;background:#fffa90;color:#777620}.ui-state-checked{border:1px solid #dad55e;background:#fffa90}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#777620}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #f1a899;background:#fddfdf;color:#5f3f3f}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#5f3f3f}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#5f3f3f}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_444444_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_444444_256x240.png")}.ui-button .ui-icon{background-image:url("images/ui-icons_777777_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon,.ui-button:hover .ui-icon,.ui-button:focus .ui-icon,.ui-state-default .ui-icon{background-image:url("images/ui-icons_555555_256x240.png")}.ui-state-active .ui-icon,.ui-button:active .ui-icon{background-image:url("images/ui-icons_ffffff_256x240.png")}.ui-state-highlight .ui-icon,.ui-button .ui-state-highlight.ui-icon{background-image:url("images/ui-icons_777620_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_cc0000_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-caret-1-n{background-position:0 0}.ui-icon-caret-1-ne{background-position:-16px 0}.ui-icon-caret-1-e{background-position:-32px 0}.ui-icon-caret-1-se{background-position:-48px 0}.ui-icon-caret-1-s{background-position:-65px 0}.ui-icon-caret-1-sw{background-position:-80px 0}.ui-icon-caret-1-w{background-position:-96px 0}.ui-icon-caret-1-nw{background-position:-112px 0}.ui-icon-caret-2-n-s{background-position:-128px 0}.ui-icon-caret-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-65px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-65px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:1px -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:3px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:3px}.ui-widget-overlay{background:#aaa;opacity:.003;filter:Alpha(Opacity=.3)}.ui-widget-shadow{-webkit-box-shadow:0 0 5px #666;box-shadow:0 0 5px #666}
@@ -0,0 +1,5 @@
1
+ /*! jQuery UI - v1.12.0 - 2016-07-08
2
+ * http://jqueryui.com
3
+ * Copyright jQuery Foundation and other contributors; Licensed MIT */
4
+
5
+ .ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;font-size:100%}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-button{padding:.4em 1em;display:inline-block;position:relative;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2em;box-sizing:border-box;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-button-icon-only{text-indent:0}.ui-button-icon-only .ui-icon{position:absolute;top:50%;left:50%;margin-top:-8px;margin-left:-8px}.ui-button.ui-icon-notext .ui-icon{padding:0;width:2.1em;height:2.1em;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-icon-notext .ui-icon{width:auto;height:auto;text-indent:0;white-space:normal;padding:.4em 1em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-controlgroup{vertical-align:middle;display:inline-block}.ui-controlgroup > .ui-controlgroup-item{float:left;margin-left:0;margin-right:0}.ui-controlgroup > .ui-controlgroup-item:focus,.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus{z-index:9999}.ui-controlgroup-vertical > .ui-controlgroup-item{display:block;float:none;width:100%;margin-top:0;margin-bottom:0;text-align:left}.ui-controlgroup-vertical .ui-controlgroup-item{box-sizing:border-box}.ui-controlgroup .ui-controlgroup-label{padding:.4em 1em}.ui-controlgroup .ui-controlgroup-label span{font-size:80%}.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item{border-left:none}.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item{border-top:none}.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content{border-right:none}.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content{border-bottom:none}.ui-controlgroup-vertical .ui-spinner-input{width:75%;width:calc( 100% - 2.4em )}.ui-controlgroup-vertical .ui-spinner .ui-spinner-up{border-top-style:solid}.ui-checkboxradio-label .ui-icon-background{box-shadow:inset 1px 1px 1px #ccc;border-radius:.12em;border:none}.ui-checkboxradio-radio-label .ui-icon-background{width:16px;height:16px;border-radius:1em;overflow:visible;border:none}.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon{background-image:none;width:8px;height:8px;border-width:4px;border-style:solid}.ui-checkboxradio-disabled{pointer-events:none}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker .ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat;left:.5em;top:.3em}.ui-dialog{position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-n{height:2px;top:0}.ui-dialog .ui-resizable-e{width:2px;right:0}.ui-dialog .ui-resizable-s{height:2px;bottom:0}.ui-dialog .ui-resizable-w{width:2px;left:0}.ui-dialog .ui-resizable-se,.ui-dialog .ui-resizable-sw,.ui-dialog .ui-resizable-ne,.ui-dialog .ui-resizable-nw{width:7px;height:7px}.ui-dialog .ui-resizable-se{right:0;bottom:0}.ui-dialog .ui-resizable-sw{left:0;bottom:0}.ui-dialog .ui-resizable-ne{right:0;top:0}.ui-dialog .ui-resizable-nw{left:0;top:0}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw==");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px 0.4em;margin:0.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-text{display:block;margin-right:20px;overflow:hidden;text-overflow:ellipsis}.ui-selectmenu-button.ui-button{text-align:left;white-space:nowrap;width:14em}.ui-selectmenu-icon.ui-icon{float:right;margin-top:0}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:.222em 0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:2em}.ui-spinner-button{width:1.6em;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top-style:none;border-bottom-style:none;border-right-style:none}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px}body .ui-tooltip{border-width:2px}
@@ -1,5 +1,5 @@
1
- /*! jQuery UI - v1.11.1 - 2014-09-04
1
+ /*! jQuery UI - v1.12.0 - 2016-07-08
2
2
  * http://jqueryui.com
3
- * Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */
3
+ * Copyright jQuery Foundation and other contributors; Licensed MIT */
4
4
 
5
- .ui-widget{font-family:Trebuchet MS,Tahoma,Verdana,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Trebuchet MS,Tahoma,Verdana,Arial,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #ddd;background:#eee url("images/ui-bg_highlight-soft_100_eeeeee_1x100.png") 50% top repeat-x;color:#333}.ui-widget-content a{color:#333}.ui-widget-header{border:1px solid #e78f08;background:#f6a828 url("images/ui-bg_gloss-wave_35_f6a828_500x100.png") 50% 50% repeat-x;color:#fff;font-weight:bold}.ui-widget-header a{color:#fff}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #ccc;background:#f6f6f6 url("images/ui-bg_glass_100_f6f6f6_1x400.png") 50% 50% repeat-x;font-weight:bold;color:#1c94c4}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#1c94c4;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #fbcb09;background:#fdf5ce url("images/ui-bg_glass_100_fdf5ce_1x400.png") 50% 50% repeat-x;font-weight:bold;color:#c77405}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited{color:#c77405;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #fbd850;background:#fff url("images/ui-bg_glass_65_ffffff_1x400.png") 50% 50% repeat-x;font-weight:bold;color:#eb8f00}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#eb8f00;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fed22f;background:#ffe45c url("images/ui-bg_highlight-soft_75_ffe45c_1x100.png") 50% top repeat-x;color:#363636}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#b81900 url("images/ui-bg_diagonals-thick_18_b81900_40x40.png") 50% 50% repeat;color:#fff}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#fff}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#fff}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_222222_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_ffffff_256x240.png")}.ui-state-default .ui-icon{background-image:url("images/ui-icons_ef8c08_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url("images/ui-icons_ef8c08_256x240.png")}.ui-state-active .ui-icon{background-image:url("images/ui-icons_ef8c08_256x240.png")}.ui-state-highlight .ui-icon{background-image:url("images/ui-icons_228ef1_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_ffd27a_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:4px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:4px}.ui-widget-overlay{background:#666 url("images/ui-bg_diagonals-thick_20_666666_40x40.png") 50% 50% repeat;opacity:.5;filter:Alpha(Opacity=50)}.ui-widget-shadow{margin:-5px 0 0 -5px;padding:5px;background:#000 url("images/ui-bg_flat_10_000000_40x100.png") 50% 50% repeat-x;opacity:.2;filter:Alpha(Opacity=20);border-radius:5px}
5
+ .ui-widget{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget.ui-widget-content{border:1px solid #c5c5c5}.ui-widget-content{border:1px solid #ddd;background:#fff;color:#333}.ui-widget-content a{color:#333}.ui-widget-header{border:1px solid #ddd;background:#e9e9e9;color:#333;font-weight:bold}.ui-widget-header a{color:#333}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default,.ui-button,html .ui-button.ui-state-disabled:hover,html .ui-button.ui-state-disabled:active{border:1px solid #c5c5c5;background:#f6f6f6;font-weight:normal;color:#454545}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited,a.ui-button,a:link.ui-button,a:visited.ui-button,.ui-button{color:#454545;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus,.ui-button:hover,.ui-button:focus{border:1px solid #ccc;background:#ededed;font-weight:normal;color:#2b2b2b}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited,a.ui-button:hover,a.ui-button:focus{color:#2b2b2b;text-decoration:none}.ui-visual-focus{box-shadow:0 0 3px 1px rgb(94,158,214)}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active,a.ui-button:active,.ui-button:active,.ui-button.ui-state-active:hover{border:1px solid #003eff;background:#007fff;font-weight:normal;color:#fff}.ui-icon-background,.ui-state-active .ui-icon-background{border:#003eff;background-color:#fff}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#fff;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #dad55e;background:#fffa90;color:#777620}.ui-state-checked{border:1px solid #dad55e;background:#fffa90}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#777620}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #f1a899;background:#fddfdf;color:#5f3f3f}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#5f3f3f}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#5f3f3f}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_444444_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_444444_256x240.png")}.ui-button .ui-icon{background-image:url("images/ui-icons_777777_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon,.ui-button:hover .ui-icon,.ui-button:focus .ui-icon,.ui-state-default .ui-icon{background-image:url("images/ui-icons_555555_256x240.png")}.ui-state-active .ui-icon,.ui-button:active .ui-icon{background-image:url("images/ui-icons_ffffff_256x240.png")}.ui-state-highlight .ui-icon,.ui-button .ui-state-highlight.ui-icon{background-image:url("images/ui-icons_777620_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_cc0000_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-caret-1-n{background-position:0 0}.ui-icon-caret-1-ne{background-position:-16px 0}.ui-icon-caret-1-e{background-position:-32px 0}.ui-icon-caret-1-se{background-position:-48px 0}.ui-icon-caret-1-s{background-position:-65px 0}.ui-icon-caret-1-sw{background-position:-80px 0}.ui-icon-caret-1-w{background-position:-96px 0}.ui-icon-caret-1-nw{background-position:-112px 0}.ui-icon-caret-2-n-s{background-position:-128px 0}.ui-icon-caret-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-65px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-65px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:1px -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:3px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:3px}.ui-widget-overlay{background:#aaa;opacity:.003;filter:Alpha(Opacity=.3)}.ui-widget-shadow{-webkit-box-shadow:0 0 5px #666;box-shadow:0 0 5px #666}
@@ -0,0 +1,796 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
5
+ <title>Visualizing Git</title>
6
+ <script data-main="js/main" src="js/vendor/require.min.js"></script>
7
+ <!--
8
+ <script type="text/javascript" src="js/vendor/jquery.min.js"></script>
9
+ <script type="text/javascript" src="js/vendor/jquery-ui.min.js"></script>
10
+ <script type="text/javascript" src="js/vendor/jquery.dialogextend.min.js"></script>
11
+ -->
12
+ <link rel="stylesheet" href="css/vendor/normalize.css">
13
+ <link rel="stylesheet" href="css/vendor/jquery-ui.min.css">
14
+ <link rel="stylesheet" href="css/vendor/jquery-ui.structure.min.css">
15
+ <link rel="stylesheet" href="css/vendor/jquery-ui.theme.min.css">
16
+ <link rel="stylesheet" href="css/vendor/1140.css">
17
+ <link rel="stylesheet" href="css/explaingit.css">
18
+ </head>
19
+ <body>
20
+ <div id="menuwrapper">
21
+ <div id="menubar">
22
+ <div class="row command-list">
23
+ <div class="twocol">
24
+ <h4>Basic Commands</h3>
25
+ <a id="open-commit" class="openswitch" href="#" onClick="return false;">git commit</a>
26
+ <a id="open-branch" class="openswitch" href="#" onClick="return false;">git branch</a>
27
+ </div>
28
+ <div class="twocol">
29
+ <h4>&nbsp;</h4>
30
+ <a id="open-checkout" class="openswitch" href="#" onClick="return false;">git checkout</a>
31
+ <a id="open-checkout-b" class="openswitch" href="#" onClick="return false;">git checkout -b</a>
32
+ </div>
33
+ <div class="twocol">
34
+ <h4>Undo Commits</h4>
35
+ <a id="open-reset" class="openswitch" href="#" onClick="return false;">git reset</a>
36
+ <a id="open-revert" class="openswitch" href="#" onClick="return false;">git revert</a>
37
+ </div>
38
+ <div class="twocol">
39
+ <h4>Combine Branches</h4>
40
+ <a id="open-merge" class="openswitch" href="#" onClick="return false;">git merge</a>
41
+ <a id="open-rebase" class="openswitch" href="#" onClick="return false;">git rebase</a>
42
+ </div>
43
+ <div class="twocol">
44
+ <h4>Remote Server</h4>
45
+ <a id="open-fetch" class="openswitch" href="#" onClick="return false;">git fetch</a>
46
+ <a id="open-pull" class="openswitch" href="#" onClick="return false;">git pull</a>
47
+ </div>
48
+ <div class="twocol last">
49
+ <h4>&nbsp;</h4>
50
+ <a id="open-push" class="openswitch" href="#" onClick="return false;">git push</a>
51
+ </div>
52
+ </div>
53
+ <div class="row command-list">
54
+ <div class="tencol">
55
+ <h4>Real World Scenarios</h4>
56
+ <a id="open-clean" class="openswitch" href="#" onClick="return false;">Restore Local Branch to State on Origin Server</a>
57
+ <a id="open-fetchrebase" class="openswitch" href="#" onClick="return false;">Update Private Local Branch with Latest from Origin</a>
58
+ <a id="open-deletebranches" class="openswitch" href="#" onClick="return false;">Deleting Local Branches</a>
59
+ </div>
60
+ <div class="twocol last">
61
+ <a id="open-freeplay" class="openswitch" href="#" onClick="return false;">Free Playground</a>
62
+ </div>
63
+ </div>
64
+ </div>
65
+ </div>
66
+ <div class="container">
67
+ <div class="row concept-area">
68
+ <div id="ExplainGitCommit-Container" class="twelvecol concept-container">
69
+ <div class="playground-container"></div>
70
+ <div class="scenario">
71
+ <p>
72
+ We are going to skip instructing you on how to add your files for commit in this explanation.
73
+ Let's assume you already know how to do that. If you don't, go read some other tutorials.
74
+ </p>
75
+ <p>
76
+ Pretend that you already have your files staged for commit and enter <span class="cmd">git commit</span>
77
+ as many times as you like in the terminal box.
78
+ </p>
79
+ </div>
80
+ </div>
81
+ <div id="ExplainGitBranch-Container" class="twelvecol concept-container">
82
+ <div class="playground-container"></div>
83
+ <div class="scenario">
84
+ <p>
85
+ <span class="cmd">git branch name</span> will create a new branch named "name".
86
+ Creating branches just creates a new tag pointing to the currently checked out commit.
87
+ </p>
88
+ <p>
89
+ Branches can be deleted using the command <span class="cmd">git branch -d name</span>.
90
+ </p>
91
+ <p>
92
+ Type <span class="cmd">git commit</span> and <span class="cmd">git branch</span> commands
93
+ to your heart's desire until you understand this concept.
94
+ </p>
95
+ </div>
96
+ </div>
97
+ <div id="ExplainGitCheckout-Container" class="twelvecol concept-container">
98
+ <div class="playground-container"></div>
99
+ <div class="scenario">
100
+ <p>
101
+ <span class="cmd">git checkout</span> has many uses,
102
+ but the main one is to switch between branches.</br>
103
+ For example, to switch from master branch to dev branch,
104
+ I would type <span class="cmd">git checkout dev</span>.
105
+ After that, if I do a git commit, notice where it goes. Try it.
106
+ </p>
107
+ <p>
108
+ In addition to checking out branches, you can also checkout individual commits. Try it.</br>
109
+ Make a new commit and then type <span class="cmd">git checkout bb92e0e</span>
110
+ and see what happens.
111
+ </p>
112
+ <p>
113
+ Type <span class="cmd">git commit</span>, <span class="cmd">git branch</span>,
114
+ and <span class="cmd">git checkout</span> commands to your heart's desire
115
+ until you understand this concept.
116
+ </p>
117
+ </div>
118
+ </div>
119
+ <div id="ExplainGitCheckout-b-Container" class="twelvecol concept-container">
120
+ <div class="playground-container"></div>
121
+ <div class="scenario">
122
+ <p>
123
+ You can combine <span class="cmd">git branch</span> and <span class="cmd">git checkout</span>
124
+ into a single command by typing <span class="cmd">git checkout -b branchname</span>.
125
+ This will create the branch if it does not already exist and immediately check it out.
126
+ </p>
127
+ </div>
128
+ </div>
129
+ <div id="ExplainGitReset-Container" class="twelvecol concept-container">
130
+ <div class="playground-container"></div>
131
+ <div class="scenario">
132
+ <p>
133
+ <span class="cmd">git reset</span> will move HEAD and the current branch back to wherever
134
+ you specify, abandoning any commits that may be left behind. This is useful to undo a commit
135
+ that you no longer need.
136
+ </p>
137
+ <p>
138
+ This command is normally used with one of three flags: "--soft", "--mixed", and "--hard".
139
+ The soft and mixed flags deal with what to do with the work that was inside the commit after
140
+ you reset, and you can read about it <a href="http://git-scm.com/2011/07/11/reset.html">here</a>.
141
+ Since this visualization cannot graphically display that work, only the "--hard" flag will work
142
+ on this site.
143
+ </p>
144
+ <p>
145
+ The ref "HEAD^" is usually used together with this command. "HEAD^" means "the commit right
146
+ before HEAD. "HEAD^^" means "two commits before HEAD", and so on.
147
+ </p>
148
+ <p>
149
+ Note that you must <b>never</b> use <span class="cmd">git reset</span> to abandon commits
150
+ that have already been pushed and merged into the origin. This can cause your local repository
151
+ to become out of sync with the origin. Don't do it unless you really know what you're doing.
152
+ </p>
153
+ </div>
154
+ </div>
155
+ <div id="ExplainGitRevert-Container" class="twelvecol concept-container">
156
+ <div class="playground-container"></div>
157
+ <div class="scenario">
158
+ <p>
159
+ To undo commits that have already been pushed and shared with the team, we cannot use the
160
+ <span class="cmd">git reset</span> command. Instead, we have to use <span class="cmd">git revert</span>.
161
+ </p>
162
+ <p>
163
+ <span class="cmd">git revert</span> will create a new commit that will undo all of the work that
164
+ was done in the commit you want to revert.
165
+ </p>
166
+ </div>
167
+ </div>
168
+ <div id="ExplainGitMerge-Container" class="twelvecol concept-container">
169
+ <div class="playground-container"></div>
170
+ <div class="scenario">
171
+ <p>
172
+ <span class="cmd">git merge</span> will create a new commit with two parents. The resulting
173
+ commit snapshot will have the all of the work that has been done in both branches.
174
+ </p>
175
+ <p>
176
+ If there was no divergence between the two commits, git will do a "fast-forward" method merge.</br>
177
+ To see this happen, checkout the 'ff' branch and then type <span class="cmd">git merge dev</span>.
178
+ </p>
179
+ </div>
180
+ </div>
181
+ <div id="ExplainGitRebase-Container" class="twelvecol concept-container">
182
+ <div class="playground-container"></div>
183
+ <div class="scenario">
184
+ <p>
185
+ <span class="cmd">git rebase</span> will take the commits on this branch and "move" them so that their
186
+ new "base" is at the point you specify.
187
+ </p>
188
+ <p>
189
+ You should pay close attention to the commit IDs of the circles as they move when you do this exercise.
190
+ </p>
191
+ <p>
192
+ The reason I put "move" in quotations because this process actually generates brand new commits with
193
+ completely different IDs than the old commits, and leaves the old commits where they were. For this reason,
194
+ you never want to rebase commits that have already been shared with the team you are working with.
195
+ </p>
196
+ </div>
197
+ </div>
198
+ <div id="ExplainGitFetch-Container" class="twelvecol concept-container">
199
+ <div class="playground-container"></div>
200
+ <div class="scenario">
201
+ <p>
202
+ <span class="cmd">git fetch</span> will update all of the "remote tracking branches" in your local repository.
203
+ Remote tracking branches are tagged in grey.
204
+ </p>
205
+ </div>
206
+ </div>
207
+ <div id="ExplainGitPull-Container" class="twelvecol concept-container">
208
+ <div class="playground-container"></div>
209
+ <div class="scenario">
210
+ <p>
211
+ A <span class="cmd">git pull</span> is a two step process that first does a <span class="cmd">git fetch</span>,
212
+ and then does a <span class="cmd">git merge</span> of the remote tracking branch associated with your current branch.
213
+ If you have no current branch, the process will stop after fetching.
214
+ </p>
215
+ <p>
216
+ If the argument "--rebase" was given by typing <span class="cmd">git pull --rebase</span>, the second step of
217
+ pull process will be a rebase instead of a merge. This can be set to the default behavior by configuration by typing:
218
+ <span class="cmd">git config branch.BRANCHNAME.rebase true</span>.
219
+ </p>
220
+ </div>
221
+ </div>
222
+ <div id="ExplainGitPush-Container" class="twelvecol concept-container">
223
+ <div class="playground-container"></div>
224
+ <div class="scenario">
225
+ <p>
226
+ A <span class="cmd">git push</span> will find the commits you have on your local branch that the corresponding branch
227
+ on the origin server does not have, and send them to the remote repository.
228
+ </p>
229
+ <p>
230
+ By default, all pushes must cause a fast-forward merge on the remote repository. If there is any divergence between
231
+ your local branch and the remote branch, your push will be rejected. In this scenario, you need to pull first and then
232
+ you will be able to push again.
233
+ </p>
234
+ </div>
235
+ </div>
236
+ <div id="ExplainGitClean-Container" class="twelvecol concept-container">
237
+ <div class="playground-container"></div>
238
+ <div class="scenario">
239
+ <p>
240
+ One simple example of the use of <span class="cmd">git reset</span> is to completely restore your local repository
241
+ state to that of the origin.</br>
242
+ You can do so by typing <span class="cmd">git reset origin/master</span>.
243
+ </p>
244
+ <p>
245
+ Note that this won't delete untracked files, you will have to delete those separately with
246
+ the command <span class="cmd">git clean -df</span>.
247
+ </p>
248
+ </div>
249
+ </div>
250
+ <div id="ExplainGitFetchRebase-Container" class="twelvecol concept-container">
251
+ <div class="playground-container"></div>
252
+ <div class="scenario">
253
+ <p>
254
+ Below is a situation in which you are working in a local branch that is all your own. You want to receive the latest code
255
+ from the origin server's master branch. To update your local branch, you can do it without having to switch branches!
256
+ </p>
257
+ <p>
258
+ First do a <span class="cmd">git fetch</span>, then type <span class="cmd">git rebase origin/master</span>!
259
+ </p>
260
+ </div>
261
+ </div>
262
+ <div id="ExplainGitDeleteBranches-Container" class="twelvecol concept-container">
263
+ <div class="playground-container"></div>
264
+ <div class="scenario">
265
+ <p>
266
+ <span class="cmd">git branch -d</span> is used to delete branches.
267
+ I have pre-created a bunch of branches for you to delete in the playground below.
268
+ Have at it.
269
+ </p>
270
+ </div>
271
+ </div>
272
+ <div id="ExplainGitFree-Container" class="twelvecol concept-container">
273
+ <div class="playground-container"></div>
274
+ <div class="scenario">
275
+ <p>
276
+ Do whatever you want in this free playground.
277
+ </p>
278
+ </div>
279
+ </div>
280
+ </div>
281
+ <div id="introduction">
282
+ <h1>Visualizing Git Concepts</h1>
283
+ <p>
284
+ This tool is designed to help you understand some fundamental git concepts
285
+ visually. These concepts are organized into scenarios. Choose a scenario
286
+ from the dropdown menu above. Explanations will be displayed each time you
287
+ load a new one. Alternatively, you can <a href="index.html" target="_gitviz">open in a new window.</a>
288
+ </p>
289
+ <p>
290
+ Throughout the simulation, pretend that files are staged and ready to commit at all
291
+ times. If you need a refresher on how to add or stage files for commit, please read
292
+ <a href="http://git-scm.com/book/en/Git-Basics-Recording-Changes-to-the-Repository" target="_git">Git Basics</a>.
293
+ </p>
294
+ <p>
295
+ This tool was adapted from the <a href="https://github.com/onlywei/explain-git-with-d3" target="_git">explain-git-with-d3</a> project.
296
+ </p>
297
+ </div>
298
+ </div>
299
+
300
+ <svg version="1.1" baseProfile="full"
301
+ xmlns="http://www.w3.org/2000/svg"
302
+ xmlns:xlink="http://www.w3.org/1999/xlink"
303
+ xmlns:ev="http://www.w3.org/2001/xml-events"
304
+ width="0" height="0">
305
+
306
+ <marker id="triangle" refX="5" refY="5" markerUnits="strokeWidth" fill="#666"
307
+ markerWidth="4" markerHeight="3" orient="auto" viewBox="0 0 10 10">
308
+ <path d="M 0 0 L 10 5 L 0 10 z"/>
309
+ </marker>
310
+ <marker id="faded-triangle" refX="5" refY="5" markerUnits="strokeWidth" fill="#DDD"
311
+ markerWidth="4" markerHeight="3" orient="auto" viewBox="0 0 10 10">
312
+ <path d="M 0 0 L 10 5 L 0 10 z"/>
313
+ </marker>
314
+ <marker id="brown-triangle" refX="5" refY="5" markerUnits="strokeWidth" fill="#663300"
315
+ markerWidth="4" markerHeight="3" orient="auto" viewBox="0 0 10 10">
316
+ <path d="M 0 0 L 10 5 L 0 10 z"/>
317
+ </marker>
318
+ </svg>
319
+
320
+ <script type="text/javascript">
321
+ require(['explaingit'], function (explainGit) {
322
+ var openSwitch = document.getElementById('open-commit'),
323
+ open;
324
+
325
+ open = function () {
326
+ explainGit.reset();
327
+ this.classList.add('selected');
328
+
329
+ explainGit.open({
330
+ name: 'Commit',
331
+ height: 200,
332
+ baseLine: 0.4,
333
+ commitData: [
334
+ {id: 'e137e9b', tags: ['master']}
335
+ ],
336
+ initialMessage: 'Type git commit a few times.'
337
+ });
338
+ };
339
+
340
+ openSwitch.addEventListener('click', open, false);
341
+ });
342
+ </script>
343
+
344
+ <script type="text/javascript">
345
+ require(['explaingit'], function (explainGit) {
346
+ var openSwitch = document.getElementById('open-branch'),
347
+ open;
348
+
349
+ open = function () {
350
+ explainGit.reset();
351
+ this.classList.add('selected');
352
+
353
+ explainGit.open({
354
+ name: 'Branch',
355
+ baseLine: 0.6,
356
+ commitData: [
357
+ {id: 'e137e9b', tags: ['master']}
358
+ ]
359
+ });
360
+ };
361
+
362
+ openSwitch.addEventListener('click', open, false);
363
+ });
364
+ </script>
365
+
366
+ <script type="text/javascript">
367
+ require(['explaingit'], function (explainGit) {
368
+ var openSwitch = document.getElementById('open-checkout'),
369
+ open;
370
+
371
+ open = function () {
372
+ explainGit.reset();
373
+ this.classList.add('selected');
374
+
375
+ explainGit.open({
376
+ name: 'Checkout',
377
+ height: 500,
378
+ commitData: [
379
+ {id: 'e137e9b'},
380
+ {id: 'bb92e0e', parent: 'e137e9b', tags: ['master']},
381
+ {id: 'e088135', parent: 'e137e9b', tags: ['dev']}
382
+ ],
383
+ initialMessage:
384
+ 'Use git checkout, git branch, and git commit commands until you understand.'
385
+ });
386
+ };
387
+
388
+ openSwitch.addEventListener('click', open, false);
389
+ });
390
+ </script>
391
+
392
+ <script type="text/javascript">
393
+ require(['explaingit'], function (explainGit) {
394
+ var openSwitch = document.getElementById('open-checkout-b'),
395
+ open;
396
+
397
+ open = function () {
398
+ explainGit.reset();
399
+ this.classList.add('selected');
400
+
401
+ explainGit.open({
402
+ name: 'Checkout-b',
403
+ height: 500,
404
+ commitData: [
405
+ {id: 'e137e9b'},
406
+ {id: 'f5b32c8', parent: 'e137e9b'},
407
+ {id: 'bb92e0e', parent: 'f5b32c8', tags: ['master']},
408
+ {id: 'e088135', parent: 'e137e9b', tags: ['dev']}
409
+ ],
410
+ initialMessage:
411
+ 'Use git checkout -b and git commit commands until you understand.'
412
+ });
413
+ };
414
+
415
+ openSwitch.addEventListener('click', open, false);
416
+ });
417
+ </script>
418
+
419
+ <script type="text/javascript">
420
+ require(['explaingit'], function (explainGit) {
421
+ var openSwitch = document.getElementById('open-reset'),
422
+ open;
423
+
424
+ open = function () {
425
+ explainGit.reset();
426
+ this.classList.add('selected');
427
+
428
+ explainGit.open({
429
+ name: 'Reset',
430
+ height: 200,
431
+ baseLine: 0.5,
432
+ commitData: [
433
+ {id: 'e137e9b'},
434
+ {id: '0e70093', parent: 'e137e9b'},
435
+ {id: '3e33afd', parent: '0e70093', tags: ['master']}
436
+ ],
437
+ initialMessage: 'Type "git reset HEAD^".'
438
+ });
439
+ };
440
+
441
+ openSwitch.addEventListener('click', open, false);
442
+ });
443
+ </script>
444
+
445
+ <script type="text/javascript">
446
+ require(['explaingit'], function (explainGit) {
447
+ var openSwitch = document.getElementById('open-revert'),
448
+ open;
449
+
450
+ open = function () {
451
+ explainGit.reset();
452
+ this.classList.add('selected');
453
+
454
+ explainGit.open({
455
+ name: 'Revert',
456
+ height: 200,
457
+ baseLine: 0.5,
458
+ commitData: [
459
+ {id: 'e137e9b'},
460
+ {id: '0e70093', parent: 'e137e9b'},
461
+ {id: '3e33afd', parent: '0e70093', tags: ['master']}
462
+ ],
463
+ initialMessage: 'Type "git revert 0e70093".'
464
+ });
465
+ };
466
+
467
+ openSwitch.addEventListener('click', open, false);
468
+ });
469
+ </script>
470
+
471
+ <script type="text/javascript">
472
+ require(['explaingit'], function (explainGit) {
473
+ var openSwitch = document.getElementById('open-merge'),
474
+ open;
475
+
476
+ open = function () {
477
+ explainGit.reset();
478
+ this.classList.add('selected');
479
+
480
+ explainGit.open({
481
+ name: 'Merge',
482
+ height: 500,
483
+ commitData: [
484
+ {id: 'e137e9b'},
485
+ {id: 'bb92e0e', parent: 'e137e9b', tags: ['master']},
486
+ {id: 'f5b32c8', parent: 'e137e9b', tags: ['ff']},
487
+ {id: 'e088135', parent: 'f5b32c8', tags: ['dev']}
488
+ ],
489
+ initialMessage:
490
+ 'Type "git merge dev".'
491
+ });
492
+ };
493
+
494
+ openSwitch.addEventListener('click', open, false);
495
+ });
496
+ </script>
497
+
498
+ <script type="text/javascript">
499
+ require(['explaingit'], function (explainGit) {
500
+ var openSwitch = document.getElementById('open-rebase'),
501
+ open;
502
+
503
+ open = function () {
504
+ explainGit.reset();
505
+ this.classList.add('selected');
506
+
507
+ explainGit.open({
508
+ name: 'Rebase',
509
+ height: 500,
510
+ commitData: [
511
+ {id: 'e137e9b'},
512
+ {id: 'bb92e0e', parent: 'e137e9b', tags: ['master']},
513
+ {id: 'f5b32c8', parent: 'e137e9b'},
514
+ {id: 'e088135', parent: 'f5b32c8', tags: ['dev']}
515
+ ],
516
+ currentBranch: 'dev',
517
+ initialMessage:
518
+ 'Type "git rebase master".'
519
+ });
520
+ };
521
+
522
+ openSwitch.addEventListener('click', open, false);
523
+ });
524
+ </script>
525
+
526
+ <script type="text/javascript">
527
+ require(['explaingit'], function (explainGit) {
528
+ var openSwitch = document.getElementById('open-fetch'),
529
+ open;
530
+
531
+ open = function () {
532
+ explainGit.reset();
533
+ this.classList.add('selected');
534
+
535
+ explainGit.open({
536
+ name: 'Fetch',
537
+ height: 500,
538
+ commitData: [
539
+ {id: 'e137e9b', tags: ['origin/master']},
540
+ {id: '6ce726f', parent: 'e137e9b'},
541
+ {id: 'bb92e0e', parent: '6ce726f', tags: ['master']},
542
+ {id: '0cff760', parent: 'e137e9b', tags: ['origin/dev']},
543
+ {id: '4ed301d', parent: '0cff760', tags: ['dev']}
544
+ ],
545
+ originData: [
546
+ {id: 'e137e9b'},
547
+ {id: '7eb7654', parent: 'e137e9b'},
548
+ {id: '090e2b8', parent: '7eb7654'},
549
+ {id: 'ee5df4b', parent: '090e2b8', tags: ['master']},
550
+ {id: '0cff760', parent: 'e137e9b'},
551
+ {id: '2f8d946', parent: '0cff760'},
552
+ {id: '29235ca', parent: '2f8d946', tags: ['dev']}
553
+ ],
554
+ initialMessage:
555
+ 'Carefully compare the commit IDs between the origin and the local repository. ' +
556
+ 'Then type "git fetch".'
557
+ });
558
+ };
559
+
560
+ openSwitch.addEventListener('click', open, false);
561
+ });
562
+ </script>
563
+
564
+ <script type="text/javascript">
565
+ require(['explaingit'], function (explainGit) {
566
+ var openSwitch = document.getElementById('open-pull'),
567
+ open;
568
+
569
+ open = function () {
570
+ explainGit.reset();
571
+ this.classList.add('selected');
572
+
573
+ explainGit.open({
574
+ name: 'Pull',
575
+ height: 500,
576
+ commitData: [
577
+ {id: 'e137e9b', tags: ['origin/master']},
578
+ {id: '46d095b', parent: 'e137e9b', tags: ['master']}
579
+ ],
580
+ originData: [
581
+ {id: 'e137e9b'},
582
+ {id: '7eb7654', parent: 'e137e9b'},
583
+ {id: '090e2b8', parent: '7eb7654'},
584
+ {id: 'ee5df4b', parent: '090e2b8', tags: ['master']}
585
+ ],
586
+ initialMessage:
587
+ 'Carefully compare the commit IDs between the origin and the local repository. ' +
588
+ 'Then type "git pull".'
589
+ });
590
+ };
591
+
592
+ openSwitch.addEventListener('click', open, false);
593
+ });
594
+ </script>
595
+
596
+ <script type="text/javascript">
597
+ require(['explaingit'], function (explainGit) {
598
+ var openSwitch = document.getElementById('open-push'),
599
+ open;
600
+
601
+ open = function () {
602
+ explainGit.reset();
603
+ this.classList.add('selected');
604
+
605
+ explainGit.open({
606
+ name: 'Push',
607
+ height: 500,
608
+ commitData: [
609
+ {id: 'e137e9b', tags: ['origin/master']},
610
+ {id: '46d095b', parent: 'e137e9b', tags: ['master']}
611
+ ],
612
+ originData: [
613
+ {id: 'e137e9b'},
614
+ {id: '7eb7654', parent: 'e137e9b', tags: ['master']}
615
+ ],
616
+ initialMessage:
617
+ 'Carefully compare the commit IDs between the origin and the local repository. ' +
618
+ 'Then type "git push".'
619
+ });
620
+ };
621
+
622
+ openSwitch.addEventListener('click', open, false);
623
+ });
624
+ </script>
625
+
626
+ <script type="text/javascript">
627
+ require(['explaingit'], function (explainGit) {
628
+ var openSwitch = document.getElementById('open-clean'),
629
+ open;
630
+
631
+ open = function () {
632
+ explainGit.reset();
633
+ this.classList.add('selected');
634
+
635
+ explainGit.open({
636
+ name: 'Clean',
637
+ height: 200,
638
+ baseLine: 0.4,
639
+ commitData: [
640
+ {id: 'e137e9b', tags: ['origin/master']},
641
+ {id: '0e70093', parent: 'e137e9b'},
642
+ {id: '3e33afd', parent: '0e70093', tags: ['master']}
643
+ ],
644
+ initialMessage: 'Type "git reset origin/master".'
645
+ });
646
+ };
647
+
648
+ openSwitch.addEventListener('click', open, false);
649
+ });
650
+ </script>
651
+
652
+ <script type="text/javascript">
653
+ require(['explaingit'], function (explainGit) {
654
+ var openSwitch = document.getElementById('open-fetchrebase'),
655
+ open;
656
+
657
+ open = function () {
658
+ explainGit.reset();
659
+ this.classList.add('selected');
660
+
661
+ explainGit.open({
662
+ name: 'FetchRebase',
663
+ height: 500,
664
+ commitData: [
665
+ {id: 'e137e9b', tags: ['origin/master', 'master']},
666
+ {id: '46d095b', parent: 'e137e9b'},
667
+ {id: 'dccdc4d', parent: '46d095b', tags: ['my-branch']}
668
+ ],
669
+ currentBranch: 'my-branch',
670
+ originData: [
671
+ {id: 'e137e9b'},
672
+ {id: '7eb7654', parent: 'e137e9b'},
673
+ {id: '090e2b8', parent: '7eb7654'},
674
+ {id: 'ee5df4b', parent: '090e2b8', tags: ['master']}
675
+ ],
676
+ initialMessage:
677
+ 'First type "git fetch". Then type "git rebase origin/master".'
678
+ });
679
+ };
680
+
681
+ openSwitch.addEventListener('click', open, false);
682
+ });
683
+ </script>
684
+
685
+ <script type="text/javascript">
686
+ require(['explaingit'], function (explainGit) {
687
+ var openSwitch = document.getElementById('open-deletebranches'),
688
+ open;
689
+
690
+ open = function () {
691
+ explainGit.reset();
692
+ this.classList.add('selected');
693
+
694
+ explainGit.open({
695
+ name: 'DeleteBranches',
696
+ height: 500,
697
+ baseLine: 0.6,
698
+ commitData: [
699
+ {id: 'e137e9b'},
700
+ {id: 'bb92e0e', parent: 'e137e9b'},
701
+ {id: 'd25ee9b', parent: 'bb92e0e', tags: ['master']},
702
+ {id: '071ff28', parent: 'e137e9b', tags: ['protoss']},
703
+ {id: 'f5b32c8', parent: 'bb92e0e'},
704
+ {id: 'e088135', parent: 'f5b32c8', tags: ['zerg']},
705
+ {id: '9e6c322', parent: 'bb92e0e'},
706
+ {id: '593ae02', parent: '9e6c322', tags: ['terran']}
707
+ ],
708
+ currentBranch: 'terran',
709
+ initialMessage:
710
+ 'Delete some branches.'
711
+ });
712
+ };
713
+
714
+ openSwitch.addEventListener('click', open, false);
715
+ });
716
+ </script>
717
+
718
+ <script type="text/javascript">
719
+ require(['explaingit'], function (explainGit) {
720
+ var openSwitch = document.getElementById('open-freeplay'),
721
+ open;
722
+
723
+ open = function () {
724
+ explainGit.reset();
725
+ this.classList.add('selected');
726
+
727
+ explainGit.open({
728
+ name: 'Free',
729
+ height: 500,
730
+ commitData: [
731
+ {id: 'e137e9b', tags: ['origin/master', 'master']}
732
+ ],
733
+ originData: [
734
+ {id: 'e137e9b'},
735
+ {id: '7eb7654', parent: 'e137e9b'},
736
+ {id: '090e2b8', parent: '7eb7654'},
737
+ {id: 'ee5df4b', parent: '090e2b8', tags: ['master']}
738
+ ],
739
+ initialMessage:
740
+ 'Have fun.'
741
+ });
742
+ };
743
+
744
+ openSwitch.addEventListener('click', open, false);
745
+ });
746
+ </script>
747
+
748
+ <script type="text/javascript">
749
+ // why the fuck isn't this coming out of main.js?!
750
+ require.config({
751
+ paths: {
752
+ 'd3': 'vendor/d3.min',
753
+ "jquery": "vendor/jquery.min",
754
+ "jquery-ui": "vendor/jquery-ui.min",
755
+ "jquery.dialogextend": "vendor/jquery.dialogextend.min"
756
+ },
757
+ shim: {
758
+ 'd3': {
759
+ exports: 'd3'
760
+ },
761
+ 'jquery-ui': ['jquery'],
762
+ 'jquery.dialogextend': {
763
+ deps: ['jquery', 'jquery-ui'],
764
+ exports: '$'
765
+ }
766
+ }
767
+ });
768
+
769
+ require( ["jquery","jquery-ui", "jquery.dialogextend"], function($){
770
+
771
+ $( document ).ready(function() {
772
+ $('#menubar').delay(1000).slideUp(500);
773
+
774
+ $("#menuwrapper").hover(
775
+ function() {
776
+ $('#menubar').show();
777
+ $('#menubar-handle').hide();
778
+ },
779
+ function() {
780
+ $('#menubar').slideUp(250);
781
+ $('#menubar-handle').show();
782
+ }
783
+ );
784
+
785
+ $( "#introduction" ).dialog({
786
+ title: "Introduction",
787
+ width: '500px',
788
+ modal: true,
789
+ });
790
+ });
791
+
792
+ });
793
+ </script>
794
+
795
+ </body>
796
+ </html>