bootstrap-on-rails 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (66) hide show
  1. data/.gitignore +4 -0
  2. data/Gemfile +4 -0
  3. data/README.md +34 -0
  4. data/Rakefile +1 -0
  5. data/app/assets/fonts/bootstrap/glyphicons-halflings-regular.eot +0 -0
  6. data/app/assets/fonts/bootstrap/glyphicons-halflings-regular.svg +228 -0
  7. data/app/assets/fonts/bootstrap/glyphicons-halflings-regular.ttf +0 -0
  8. data/app/assets/fonts/bootstrap/glyphicons-halflings-regular.woff +0 -0
  9. data/app/assets/javascripts/bootstrap/affix.js +126 -0
  10. data/app/assets/javascripts/bootstrap/alert.js +98 -0
  11. data/app/assets/javascripts/bootstrap/button.js +109 -0
  12. data/app/assets/javascripts/bootstrap/carousel.js +217 -0
  13. data/app/assets/javascripts/bootstrap/collapse.js +179 -0
  14. data/app/assets/javascripts/bootstrap/dropdown.js +154 -0
  15. data/app/assets/javascripts/bootstrap/modal.js +246 -0
  16. data/app/assets/javascripts/bootstrap/popover.js +117 -0
  17. data/app/assets/javascripts/bootstrap/scrollspy.js +158 -0
  18. data/app/assets/javascripts/bootstrap/tab.js +135 -0
  19. data/app/assets/javascripts/bootstrap/tooltip.js +386 -0
  20. data/app/assets/javascripts/bootstrap/transition.js +56 -0
  21. data/app/assets/stylesheets/bootstrap/alerts.less +67 -0
  22. data/app/assets/stylesheets/bootstrap/badges.less +51 -0
  23. data/app/assets/stylesheets/bootstrap/bootstrap.less +58 -0
  24. data/app/assets/stylesheets/bootstrap/breadcrumbs.less +23 -0
  25. data/app/assets/stylesheets/bootstrap/button-groups.less +248 -0
  26. data/app/assets/stylesheets/bootstrap/buttons.less +160 -0
  27. data/app/assets/stylesheets/bootstrap/carousel.less +209 -0
  28. data/app/assets/stylesheets/bootstrap/close.less +33 -0
  29. data/app/assets/stylesheets/bootstrap/code.less +56 -0
  30. data/app/assets/stylesheets/bootstrap/component-animations.less +29 -0
  31. data/app/assets/stylesheets/bootstrap/dropdowns.less +193 -0
  32. data/app/assets/stylesheets/bootstrap/forms.less +362 -0
  33. data/app/assets/stylesheets/bootstrap/glyphicons.less +236 -0
  34. data/app/assets/stylesheets/bootstrap/grid.less +346 -0
  35. data/app/assets/stylesheets/bootstrap/input-groups.less +127 -0
  36. data/app/assets/stylesheets/bootstrap/jumbotron.less +40 -0
  37. data/app/assets/stylesheets/bootstrap/labels.less +58 -0
  38. data/app/assets/stylesheets/bootstrap/list-group.less +88 -0
  39. data/app/assets/stylesheets/bootstrap/media.less +56 -0
  40. data/app/assets/stylesheets/bootstrap/mixins.less +744 -0
  41. data/app/assets/stylesheets/bootstrap/modals.less +141 -0
  42. data/app/assets/stylesheets/bootstrap/navbar.less +621 -0
  43. data/app/assets/stylesheets/bootstrap/navs.less +229 -0
  44. data/app/assets/stylesheets/bootstrap/normalize.less +396 -0
  45. data/app/assets/stylesheets/bootstrap/pager.less +55 -0
  46. data/app/assets/stylesheets/bootstrap/pagination.less +85 -0
  47. data/app/assets/stylesheets/bootstrap/panels.less +148 -0
  48. data/app/assets/stylesheets/bootstrap/popovers.less +133 -0
  49. data/app/assets/stylesheets/bootstrap/print.less +100 -0
  50. data/app/assets/stylesheets/bootstrap/progress-bars.less +95 -0
  51. data/app/assets/stylesheets/bootstrap/responsive-utilities.less +220 -0
  52. data/app/assets/stylesheets/bootstrap/scaffolding.less +130 -0
  53. data/app/assets/stylesheets/bootstrap/tables.less +238 -0
  54. data/app/assets/stylesheets/bootstrap/theme.less +241 -0
  55. data/app/assets/stylesheets/bootstrap/thumbnails.less +31 -0
  56. data/app/assets/stylesheets/bootstrap/tooltip.less +95 -0
  57. data/app/assets/stylesheets/bootstrap/type.less +242 -0
  58. data/app/assets/stylesheets/bootstrap/utilities.less +42 -0
  59. data/app/assets/stylesheets/bootstrap/variables.less +635 -0
  60. data/app/assets/stylesheets/bootstrap/wells.less +29 -0
  61. data/bootstrap-on-rails.gemspec +25 -0
  62. data/lib/bootstrap-on-rails.rb +6 -0
  63. data/lib/bootstrap-on-rails/engine.rb +4 -0
  64. data/lib/bootstrap-on-rails/version.rb +3 -0
  65. data/test/test_helper.rb +2 -0
  66. metadata +112 -0
@@ -0,0 +1,95 @@
1
+ //
2
+ // Progress bars
3
+ // --------------------------------------------------
4
+
5
+
6
+ // Bar animations
7
+ // -------------------------
8
+
9
+ // Webkit
10
+ @-webkit-keyframes progress-bar-stripes {
11
+ from { background-position: 40px 0; }
12
+ to { background-position: 0 0; }
13
+ }
14
+
15
+ // Firefox
16
+ @-moz-keyframes progress-bar-stripes {
17
+ from { background-position: 40px 0; }
18
+ to { background-position: 0 0; }
19
+ }
20
+
21
+ // Opera
22
+ @-o-keyframes progress-bar-stripes {
23
+ from { background-position: 0 0; }
24
+ to { background-position: 40px 0; }
25
+ }
26
+
27
+ // Spec and IE10+
28
+ @keyframes progress-bar-stripes {
29
+ from { background-position: 40px 0; }
30
+ to { background-position: 0 0; }
31
+ }
32
+
33
+
34
+
35
+ // Bar itself
36
+ // -------------------------
37
+
38
+ // Outer container
39
+ .progress {
40
+ overflow: hidden;
41
+ height: @line-height-computed;
42
+ margin-bottom: @line-height-computed;
43
+ background-color: @progress-bg;
44
+ border-radius: @border-radius-base;
45
+ .box-shadow(inset 0 1px 2px rgba(0,0,0,.1));
46
+ }
47
+
48
+ // Bar of progress
49
+ .progress-bar {
50
+ float: left;
51
+ width: 0%;
52
+ height: 100%;
53
+ font-size: @font-size-small;
54
+ color: @progress-bar-color;
55
+ text-align: center;
56
+ background-color: @progress-bar-bg;
57
+ .box-shadow(inset 0 -1px 0 rgba(0,0,0,.15));
58
+ .transition(width .6s ease);
59
+ }
60
+
61
+ // Striped bars
62
+ .progress-striped .progress-bar {
63
+ #gradient > .striped(@progress-bar-bg);
64
+ background-size: 40px 40px;
65
+ }
66
+
67
+ // Call animation for the active one
68
+ .progress.active .progress-bar {
69
+ -webkit-animation: progress-bar-stripes 2s linear infinite;
70
+ -moz-animation: progress-bar-stripes 2s linear infinite;
71
+ -ms-animation: progress-bar-stripes 2s linear infinite;
72
+ -o-animation: progress-bar-stripes 2s linear infinite;
73
+ animation: progress-bar-stripes 2s linear infinite;
74
+ }
75
+
76
+
77
+
78
+ // Variations
79
+ // -------------------------
80
+
81
+ .progress-bar-success {
82
+ .progress-bar-variant(@progress-bar-success-bg);
83
+ }
84
+
85
+ .progress-bar-info {
86
+ .progress-bar-variant(@progress-bar-info-bg);
87
+ }
88
+
89
+ .progress-bar-warning {
90
+ .progress-bar-variant(@progress-bar-warning-bg);
91
+ }
92
+
93
+ .progress-bar-danger {
94
+ .progress-bar-variant(@progress-bar-danger-bg);
95
+ }
@@ -0,0 +1,220 @@
1
+ //
2
+ // Responsive: Utility classes
3
+ // --------------------------------------------------
4
+
5
+
6
+ // IE10 Metro responsive
7
+ // Required for Windows 8 Metro split-screen snapping with IE10
8
+ //
9
+ // Source: http://timkadlec.com/2012/10/ie10-snap-mode-and-responsive-design/
10
+ @-ms-viewport{
11
+ width: device-width;
12
+ }
13
+
14
+ // IE10 on Windows Phone 8
15
+ // IE10 on WP8 doesn't report CSS pixels, but actual device pixels. In
16
+ // other words, say on a Lumia, you'll get 768px as the device width,
17
+ // meaning users will see the tablet styles and not phone styles.
18
+ //
19
+ // Alternatively you can override this with JS (see source below), but
20
+ // we won't be doing that here given our limited scope.
21
+ //
22
+ // Source: http://timkadlec.com/2013/01/windows-phone-8-and-device-width/
23
+ @media screen and (max-width: 400px) {
24
+ @-ms-viewport{
25
+ width: 320px;
26
+ }
27
+ }
28
+
29
+ // Hide from screenreaders and browsers
30
+ // Credit: HTML5 Boilerplate
31
+ .hidden {
32
+ display: none !important;
33
+ visibility: hidden !important;
34
+ }
35
+
36
+ // Visibility utilities
37
+
38
+ .visible-xs {
39
+ .responsive-invisibility();
40
+ @media (max-width: @screen-xs-max) {
41
+ .responsive-visibility();
42
+ }
43
+ &.visible-sm {
44
+ @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {
45
+ .responsive-visibility();
46
+ }
47
+ }
48
+ &.visible-md {
49
+ @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {
50
+ .responsive-visibility();
51
+ }
52
+ }
53
+ &.visible-lg {
54
+ @media (min-width: @screen-lg-min) {
55
+ .responsive-visibility();
56
+ }
57
+ }
58
+ }
59
+ .visible-sm {
60
+ .responsive-invisibility();
61
+ &.visible-xs {
62
+ @media (max-width: @screen-xs-max) {
63
+ .responsive-visibility();
64
+ }
65
+ }
66
+ @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {
67
+ .responsive-visibility();
68
+ }
69
+ &.visible-md {
70
+ @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {
71
+ .responsive-visibility();
72
+ }
73
+ }
74
+ &.visible-lg {
75
+ @media (min-width: @screen-lg-min) {
76
+ .responsive-visibility();
77
+ }
78
+ }
79
+ }
80
+ .visible-md {
81
+ .responsive-invisibility();
82
+ &.visible-xs {
83
+ @media (max-width: @screen-xs-max) {
84
+ .responsive-visibility();
85
+ }
86
+ }
87
+ &.visible-sm {
88
+ @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {
89
+ .responsive-visibility();
90
+ }
91
+ }
92
+ @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {
93
+ .responsive-visibility();
94
+ }
95
+ &.visible-lg {
96
+ @media (min-width: @screen-lg-min) {
97
+ .responsive-visibility();
98
+ }
99
+ }
100
+ }
101
+ .visible-lg {
102
+ .responsive-invisibility();
103
+ &.visible-xs {
104
+ @media (max-width: @screen-xs-max) {
105
+ .responsive-visibility();
106
+ }
107
+ }
108
+ &.visible-sm {
109
+ @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {
110
+ .responsive-visibility();
111
+ }
112
+ }
113
+ &.visible-md {
114
+ @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {
115
+ .responsive-visibility();
116
+ }
117
+ }
118
+ @media (min-width: @screen-lg-min) {
119
+ .responsive-visibility();
120
+ }
121
+ }
122
+
123
+ .hidden-xs {
124
+ .responsive-visibility();
125
+ @media (max-width: @screen-xs-max) {
126
+ .responsive-invisibility();
127
+ }
128
+ &.hidden-sm {
129
+ @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {
130
+ .responsive-invisibility();
131
+ }
132
+ }
133
+ &.hidden-md {
134
+ @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {
135
+ .responsive-invisibility();
136
+ }
137
+ }
138
+ &.hidden-lg {
139
+ @media (min-width: @screen-lg-min) {
140
+ .responsive-invisibility();
141
+ }
142
+ }
143
+ }
144
+ .hidden-sm {
145
+ .responsive-visibility();
146
+ &.hidden-xs {
147
+ @media (max-width: @screen-xs-max) {
148
+ .responsive-invisibility();
149
+ }
150
+ }
151
+ @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {
152
+ .responsive-invisibility();
153
+ }
154
+ &.hidden-md {
155
+ @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {
156
+ .responsive-invisibility();
157
+ }
158
+ }
159
+ &.hidden-lg {
160
+ @media (min-width: @screen-lg-min) {
161
+ .responsive-invisibility();
162
+ }
163
+ }
164
+ }
165
+ .hidden-md {
166
+ .responsive-visibility();
167
+ &.hidden-xs {
168
+ @media (max-width: @screen-xs-max) {
169
+ .responsive-invisibility();
170
+ }
171
+ }
172
+ &.hidden-sm {
173
+ @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {
174
+ .responsive-invisibility();
175
+ }
176
+ }
177
+ @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {
178
+ .responsive-invisibility();
179
+ }
180
+ &.hidden-lg {
181
+ @media (min-width: @screen-lg-min) {
182
+ .responsive-invisibility();
183
+ }
184
+ }
185
+ }
186
+ .hidden-lg {
187
+ .responsive-visibility();
188
+ &.hidden-xs {
189
+ @media (max-width: @screen-xs-max) {
190
+ .responsive-invisibility();
191
+ }
192
+ }
193
+ &.hidden-sm {
194
+ @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {
195
+ .responsive-invisibility();
196
+ }
197
+ }
198
+ &.hidden-md {
199
+ @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {
200
+ .responsive-invisibility();
201
+ }
202
+ }
203
+ @media (min-width: @screen-lg-min) {
204
+ .responsive-invisibility();
205
+ }
206
+ }
207
+
208
+ // Print utilities
209
+ .visible-print {
210
+ .responsive-invisibility();
211
+ }
212
+
213
+ @media print {
214
+ .visible-print {
215
+ .responsive-visibility();
216
+ }
217
+ .hidden-print {
218
+ .responsive-invisibility();
219
+ }
220
+ }
@@ -0,0 +1,130 @@
1
+ //
2
+ // Scaffolding
3
+ // --------------------------------------------------
4
+
5
+
6
+ // Reset the box-sizing
7
+
8
+ *,
9
+ *:before,
10
+ *:after {
11
+ .box-sizing(border-box);
12
+ }
13
+
14
+
15
+ // Body reset
16
+
17
+ html {
18
+ font-size: 62.5%;
19
+ -webkit-tap-highlight-color: rgba(0,0,0,0);
20
+ }
21
+
22
+ body {
23
+ font-family: @font-family-base;
24
+ font-size: @font-size-base;
25
+ line-height: @line-height-base;
26
+ color: @text-color;
27
+ background-color: @body-bg;
28
+ }
29
+
30
+ // Reset fonts for relevant elements
31
+ input,
32
+ button,
33
+ select,
34
+ textarea {
35
+ font-family: inherit;
36
+ font-size: inherit;
37
+ line-height: inherit;
38
+ }
39
+
40
+ // Reset unusual Firefox-on-Android default style.
41
+ //
42
+ // See https://github.com/necolas/normalize.css/issues/214
43
+
44
+ button,
45
+ input,
46
+ select[multiple],
47
+ textarea {
48
+ background-image: none;
49
+ }
50
+
51
+
52
+ // Links
53
+
54
+ a {
55
+ color: @link-color;
56
+ text-decoration: none;
57
+
58
+ &:hover,
59
+ &:focus {
60
+ color: @link-hover-color;
61
+ text-decoration: underline;
62
+ }
63
+
64
+ &:focus {
65
+ .tab-focus();
66
+ }
67
+ }
68
+
69
+
70
+ // Images
71
+
72
+ img {
73
+ vertical-align: middle;
74
+ }
75
+
76
+ // Responsive images (ensure images don't scale beyond their parents)
77
+ .img-responsive {
78
+ .img-responsive();
79
+ }
80
+
81
+ // Rounded corners
82
+ .img-rounded {
83
+ border-radius: @border-radius-large;
84
+ }
85
+
86
+ // Image thumbnails
87
+ //
88
+ // Heads up! This is mixin-ed into thumbnails.less for `.thumbnail`.
89
+ .img-thumbnail {
90
+ padding: @thumbnail-padding;
91
+ line-height: @line-height-base;
92
+ background-color: @thumbnail-bg;
93
+ border: 1px solid @thumbnail-border;
94
+ border-radius: @thumbnail-border-radius;
95
+ .transition(all .2s ease-in-out);
96
+
97
+ // Keep them at most 100% wide
98
+ .img-responsive(inline-block);
99
+ }
100
+
101
+ // Perfect circle
102
+ .img-circle {
103
+ border-radius: 50%; // set radius in percents
104
+ }
105
+
106
+
107
+ // Horizontal rules
108
+
109
+ hr {
110
+ margin-top: @line-height-computed;
111
+ margin-bottom: @line-height-computed;
112
+ border: 0;
113
+ border-top: 1px solid @hr-border;
114
+ }
115
+
116
+
117
+ // Only display content to screen readers
118
+ //
119
+ // See: http://a11yproject.com/posts/how-to-hide-content/
120
+
121
+ .sr-only {
122
+ position: absolute;
123
+ width: 1px;
124
+ height: 1px;
125
+ margin: -1px;
126
+ padding: 0;
127
+ overflow: hidden;
128
+ clip: rect(0 0 0 0);
129
+ border: 0;
130
+ }
@@ -0,0 +1,238 @@
1
+ //
2
+ // Tables
3
+ // --------------------------------------------------
4
+
5
+
6
+ table {
7
+ max-width: 100%;
8
+ background-color: @table-bg;
9
+ }
10
+ th {
11
+ text-align: left;
12
+ }
13
+
14
+
15
+ // Baseline styles
16
+
17
+ .table {
18
+ width: 100%;
19
+ margin-bottom: @line-height-computed;
20
+ // Cells
21
+ thead,
22
+ tbody,
23
+ tfoot {
24
+ > tr {
25
+ > th,
26
+ > td {
27
+ padding: @table-cell-padding;
28
+ line-height: @line-height-base;
29
+ vertical-align: top;
30
+ border-top: 1px solid @table-border-color;
31
+ }
32
+ }
33
+ }
34
+ // Bottom align for column headings
35
+ thead > tr > th {
36
+ vertical-align: bottom;
37
+ border-bottom: 2px solid @table-border-color;
38
+ }
39
+ // Remove top border from thead by default
40
+ caption + thead,
41
+ colgroup + thead,
42
+ thead:first-child {
43
+ tr:first-child {
44
+ th, td {
45
+ border-top: 0;
46
+ }
47
+ }
48
+ }
49
+ // Account for multiple tbody instances
50
+ tbody + tbody {
51
+ border-top: 2px solid @table-border-color;
52
+ }
53
+
54
+ // Nesting
55
+ .table {
56
+ background-color: @body-bg;
57
+ }
58
+ }
59
+
60
+
61
+ // Condensed table w/ half padding
62
+
63
+ .table-condensed {
64
+ thead,
65
+ tbody,
66
+ tfoot {
67
+ > tr {
68
+ > th,
69
+ > td {
70
+ padding: @table-condensed-cell-padding;
71
+ }
72
+ }
73
+ }
74
+ }
75
+
76
+
77
+ // Bordered version
78
+ //
79
+ // Add borders all around the table and between all the columns.
80
+
81
+ .table-bordered {
82
+ border: 1px solid @table-border-color;
83
+ > thead,
84
+ > tbody,
85
+ > tfoot {
86
+ > tr {
87
+ > th,
88
+ > td {
89
+ border: 1px solid @table-border-color;
90
+ }
91
+ }
92
+ }
93
+ > thead {
94
+ > tr {
95
+ > th,
96
+ > td {
97
+ border-bottom-width: 2px;
98
+ }
99
+ }
100
+ }
101
+ }
102
+
103
+
104
+ // Zebra-striping
105
+ //
106
+ // Default zebra-stripe styles (alternating gray and transparent backgrounds)
107
+
108
+ .table-striped {
109
+ > tbody {
110
+ > tr:nth-child(odd) {
111
+ > td,
112
+ > th {
113
+ background-color: @table-bg-accent;
114
+ }
115
+ }
116
+ }
117
+ }
118
+
119
+
120
+ // Hover effect
121
+ //
122
+ // Placed here since it has to come after the potential zebra striping
123
+
124
+ .table-hover {
125
+ > tbody {
126
+ > tr:hover {
127
+ > td,
128
+ > th {
129
+ background-color: @table-bg-hover;
130
+ }
131
+ }
132
+ }
133
+ }
134
+
135
+
136
+ // Table cell sizing
137
+ //
138
+ // Reset default table behavior
139
+
140
+ table col[class*="col-"] {
141
+ float: none;
142
+ display: table-column;
143
+ }
144
+ table {
145
+ td,
146
+ th {
147
+ &[class*="col-"] {
148
+ float: none;
149
+ display: table-cell;
150
+ }
151
+ }
152
+ }
153
+
154
+
155
+ // Table backgrounds
156
+ //
157
+ // Exact selectors below required to override `.table-striped` and prevent
158
+ // inheritance to nested tables.
159
+
160
+ .table > thead > tr,
161
+ .table > tbody > tr,
162
+ .table > tfoot > tr {
163
+ > td.active,
164
+ > th.active,
165
+ &.active > td,
166
+ &.active > th {
167
+ background-color: @table-bg-active;
168
+ }
169
+ }
170
+
171
+ // Generate the contextual variants
172
+ .table-row-variant(success; @state-success-bg; @state-success-border);
173
+ .table-row-variant(danger; @state-danger-bg; @state-danger-border);
174
+ .table-row-variant(warning; @state-warning-bg; @state-warning-border);
175
+
176
+
177
+ // Responsive tables
178
+ //
179
+ // Wrap your tables in `.table-responsive` and we'll make them mobile friendly
180
+ // by enabling horizontal scrolling. Only applies <768px. Everything above that
181
+ // will display normally.
182
+
183
+ @media (max-width: @screen-sm-min) {
184
+ .table-responsive {
185
+ width: 100%;
186
+ margin-bottom: 15px;
187
+ overflow-y: hidden;
188
+ overflow-x: scroll;
189
+ -ms-overflow-style: -ms-autohiding-scrollbar;
190
+ border: 1px solid @table-border-color;
191
+ -webkit-overflow-scrolling: touch;
192
+
193
+ // Tighten up spacing and give a background color
194
+ > .table {
195
+ margin-bottom: 0;
196
+ background-color: #fff;
197
+
198
+ // Ensure the content doesn't wrap
199
+ > thead,
200
+ > tbody,
201
+ > tfoot {
202
+ > tr {
203
+ > th,
204
+ > td {
205
+ white-space: nowrap;
206
+ }
207
+ }
208
+ }
209
+ }
210
+
211
+ // Special overrides for the bordered tables
212
+ > .table-bordered {
213
+ border: 0;
214
+
215
+ // Nuke the appropriate borders so that the parent can handle them
216
+ > thead,
217
+ > tbody,
218
+ > tfoot {
219
+ > tr {
220
+ > th:first-child,
221
+ > td:first-child {
222
+ border-left: 0;
223
+ }
224
+ > th:last-child,
225
+ > td:last-child {
226
+ border-right: 0;
227
+ }
228
+ }
229
+ > tr:last-child {
230
+ > th,
231
+ > td {
232
+ border-bottom: 0;
233
+ }
234
+ }
235
+ }
236
+ }
237
+ }
238
+ }