audit_rails 2.0.4 → 2.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (52) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +5 -1
  3. data/app/assets/stylesheets/audit_rails/application.css +3 -4
  4. data/app/assets/stylesheets/audit_rails/audit_rails.css +78 -0
  5. data/app/assets/stylesheets/audit_rails/bootstrap_override.css +58 -0
  6. data/app/assets/stylesheets/audit_rails/twitter/_alerts.scss +67 -0
  7. data/app/assets/stylesheets/audit_rails/twitter/_badges.scss +51 -0
  8. data/app/assets/stylesheets/audit_rails/twitter/_breadcrumbs.scss +23 -0
  9. data/app/assets/stylesheets/audit_rails/twitter/_button-groups.scss +253 -0
  10. data/app/assets/stylesheets/audit_rails/twitter/_buttons.scss +158 -0
  11. data/app/assets/stylesheets/audit_rails/twitter/_carousel.scss +231 -0
  12. data/app/assets/stylesheets/audit_rails/twitter/_close.scss +35 -0
  13. data/app/assets/stylesheets/audit_rails/twitter/_code.scss +53 -0
  14. data/app/assets/stylesheets/audit_rails/twitter/_component-animations.scss +29 -0
  15. data/app/assets/stylesheets/audit_rails/twitter/_dropdowns.scss +193 -0
  16. data/app/assets/stylesheets/audit_rails/twitter/_forms.scss +363 -0
  17. data/app/assets/stylesheets/audit_rails/twitter/_glyphicons.scss +236 -0
  18. data/app/assets/stylesheets/audit_rails/twitter/_grid.scss +93 -0
  19. data/app/assets/stylesheets/audit_rails/twitter/_input-groups.scss +136 -0
  20. data/app/assets/stylesheets/audit_rails/twitter/_jumbotron.scss +40 -0
  21. data/app/assets/stylesheets/audit_rails/twitter/_labels.scss +58 -0
  22. data/app/assets/stylesheets/audit_rails/twitter/_list-group.scss +88 -0
  23. data/app/assets/stylesheets/audit_rails/twitter/_media.scss +56 -0
  24. data/app/assets/stylesheets/audit_rails/twitter/_mixins.scss +861 -0
  25. data/app/assets/stylesheets/audit_rails/twitter/_modals.scss +132 -0
  26. data/app/assets/stylesheets/audit_rails/twitter/_navbar.scss +628 -0
  27. data/app/assets/stylesheets/audit_rails/twitter/_navs.scss +262 -0
  28. data/app/assets/stylesheets/audit_rails/twitter/_normalize.scss +406 -0
  29. data/app/assets/stylesheets/audit_rails/twitter/_pager.scss +55 -0
  30. data/app/assets/stylesheets/audit_rails/twitter/_pagination.scss +85 -0
  31. data/app/assets/stylesheets/audit_rails/twitter/_panels.scss +172 -0
  32. data/app/assets/stylesheets/audit_rails/twitter/_popovers.scss +133 -0
  33. data/app/assets/stylesheets/audit_rails/twitter/_print.scss +105 -0
  34. data/app/assets/stylesheets/audit_rails/twitter/_progress-bars.scss +92 -0
  35. data/app/assets/stylesheets/audit_rails/twitter/_responsive-utilities.scss +198 -0
  36. data/app/assets/stylesheets/audit_rails/twitter/_scaffolding.scss +119 -0
  37. data/app/assets/stylesheets/audit_rails/twitter/_tables.scss +244 -0
  38. data/app/assets/stylesheets/audit_rails/twitter/_theme.scss +247 -0
  39. data/app/assets/stylesheets/audit_rails/twitter/_thumbnails.scss +32 -0
  40. data/app/assets/stylesheets/audit_rails/twitter/_tooltip.scss +95 -0
  41. data/app/assets/stylesheets/audit_rails/twitter/_type.scss +279 -0
  42. data/app/assets/stylesheets/audit_rails/twitter/_utilities.scss +56 -0
  43. data/app/assets/stylesheets/audit_rails/twitter/_variables.scss +637 -0
  44. data/app/assets/stylesheets/audit_rails/twitter/_wells.scss +29 -0
  45. data/app/assets/stylesheets/audit_rails/twitter/bootstrap.scss +49 -0
  46. data/app/views/audit_rails/audits/_form_elements.html.erb +8 -2
  47. data/app/views/layouts/audit_rails/application.html.erb +33 -24
  48. data/lib/audit_rails/version.rb +1 -1
  49. metadata +47 -9
  50. data/app/assets/stylesheets/audit_rails/bootstrap-theme.css +0 -384
  51. data/app/assets/stylesheets/audit_rails/bootstrap.css +0 -6805
  52. data/app/assets/stylesheets/audit_rails/theme.css +0 -14
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ef20c62dd3cb3e2a5776d7502155c7005b34018a
4
- data.tar.gz: 77618e157b6e3ac7d9f05f6d6224834aacec7c12
3
+ metadata.gz: 3871a3487213de4d1dbc06367b182cdd393e8b31
4
+ data.tar.gz: 5e1cb826836eefbbb1ea5944ea6af61c9c1d1164
5
5
  SHA512:
6
- metadata.gz: 0dd0e22106c23a41f2b12204e09c6cc650868e1624d8bebbbf199d5346a247665d8407ecc47c23df9fe80f2ffe8fa56ebf775ea04d81553d2134859a02696a5f
7
- data.tar.gz: a7f4fe28afbacdb64d501a1d65f41e58061ec3f0795a57428ccc2ed41758da458b9038534e763c49d09ca592487d6e72a7c2a68f153b54464d5b689d27bcefa5
6
+ metadata.gz: ff8eeaf4b45e39b6ba9e1119129154eca0d8baf1b837c1b0d75dcdf126827d398fec9d47839e222bdb833a0fa225979ce4c71d92420c985eec1b8c8260501012
7
+ data.tar.gz: 4f02df25686373fff8190501462f6cb93d5a897ba96c45bad985254437f620f7cfb605700d597e03f8d905524c603ea3d78c2e1c07a0df8d3fe97ffdda7af634
data/README.md CHANGED
@@ -1,5 +1,5 @@
1
1
  ## AuditRails
2
- [![Gem Version](https://badge.fury.io/rb/audit_rails.png)](http://badge.fury.io/rb/audit_rails)[![Build Status](https://travis-ci.org/gouravtiwari/audit_rails.png?branch=master)](https://travis-ci.org/gouravtiwari/audit_rails)[![Coverage Status](https://coveralls.io/repos/gouravtiwari/audit_rails/badge.png?branch=master)](https://coveralls.io/r/gouravtiwari/audit_rails?branch=master)
2
+ [![Gem Version](https://badge.fury.io/rb/audit_rails.png)](http://badge.fury.io/rb/audit_rails)[![Build Status](https://travis-ci.org/gouravtiwari/audit_rails.png?branch=master)](https://travis-ci.org/gouravtiwari/audit_rails)[![Coverage Status](https://coveralls.io/repos/gouravtiwari/audit_rails/badge.png?branch=master)](https://coveralls.io/r/gouravtiwari/audit_rails?branch=master)[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/gouravtiwari/audit_rails/trend.png)](https://bitdeli.com/free "Bitdeli Badge")
3
3
 
4
4
  An action based auditor, which has internal as well as outgoing link tracking.
5
5
 
@@ -77,6 +77,10 @@ Use below link in views:
77
77
 
78
78
  link_to audit_rails.audits_path(:format => "xls")
79
79
 
80
+ ### To Do
81
+ - geoip integration
82
+ - World Map Integration
83
+
80
84
  ### Changelog
81
85
 
82
86
  https://github.com/gouravtiwari/audit_rails/blob/master/CHANGELOG.rdoc
@@ -11,9 +11,8 @@
11
11
  *= require sleek_charts
12
12
  *= require audit_rails/jquery-ui
13
13
  *= require audit_rails/date-picker
14
- *= require audit_rails/bootstrap
15
- *= require audit_rails/theme
16
- *= require audit_rails/bootstrap-theme
14
+ *= require audit_rails/twitter/bootstrap
15
+ *= require audit_rails/bootstrap_override
16
+ *= require audit_rails/audit_rails
17
17
  *= require_self
18
- *= require_tree .
19
18
  */
@@ -1,3 +1,59 @@
1
+ .header-container,.footer-container{
2
+ background-color: #33aeb8;
3
+ border: none;
4
+ right: 0;
5
+ left: 0;
6
+ }
7
+ .navbar-bottom{
8
+ padding-top: 62px;
9
+ }
10
+ .footer-container{
11
+ bottom: 0;
12
+ left:0;
13
+ position:fixed;
14
+ }
15
+ .footer{
16
+ font-size: 10px;
17
+ padding: 20px;
18
+ color: #ffffff;
19
+ bottom:0;
20
+ }
21
+ .content{
22
+ margin-top: 120px;
23
+ }
24
+ .left{
25
+ float: left;
26
+ }
27
+ .motto{
28
+ font-family: HelveticaNeueLTStdLtCn;
29
+ font-size: 24px;
30
+ }
31
+ .homepage-heading{
32
+ font-family: HelveticaNeueLTStdLtCn;
33
+ font-weight: bold;
34
+ font-size: 24px;
35
+ }
36
+ ul.homepage-content li,
37
+ ol.homepage-content li,
38
+ .homepage-content{
39
+ font-family: HelveticaNeueLTStdLtCn;
40
+ font-size: 18px;
41
+ }
42
+ ul.error-explanation{
43
+ margin:0;
44
+ padding:0
45
+ }
46
+ ul.error-explanation li{
47
+ color: red;
48
+ list-style-type: none;;
49
+ }
50
+ .field_with_errors input{
51
+ border-color: #F778A1;
52
+ }
53
+ .notice{
54
+ color: green;
55
+ }
56
+
1
57
  .left {
2
58
  float: left;
3
59
  }
@@ -50,3 +106,25 @@ a.active-item span.badge{
50
106
  .slice{
51
107
  font-size: 10px;
52
108
  }
109
+
110
+ input.filter{
111
+ background-color: #006978;
112
+ border-radius: 0;
113
+ }
114
+
115
+ input.filter:hover{
116
+ background-color: #2C8D94;
117
+ border-radius: 0;
118
+ }
119
+
120
+ input.download-report{
121
+ background-color: #e98e4e;
122
+ border-color: #e98e4e;
123
+ border-radius: 0;
124
+ }
125
+
126
+ input.download-report:hover{
127
+ background-color: #EB9A61;
128
+ border-color: #e98e4e;
129
+ border-radius: 0;
130
+ }
@@ -0,0 +1,58 @@
1
+ body{
2
+ background-color: #f2f2f2;
3
+ }
4
+ a{
5
+ color: #33aeb8;
6
+ }
7
+ .row{
8
+ margin:0;
9
+ padding: 0 5px;
10
+ }
11
+ .navbar{
12
+ border-bottom: 0;
13
+ }
14
+ .navbar-default .navbar-nav{
15
+ margin-left: 70px;
16
+ }
17
+ .navbar-default .navbar-nav > li > a {
18
+ padding-top: 7px;
19
+ padding-bottom: 7px;
20
+ background-color: #006978;
21
+ color: #f2f2f2;
22
+ height: 38px;
23
+ }
24
+ .navbar-default .navbar-nav > li > a:hover {
25
+ padding-top: 7px;
26
+ padding-bottom: 7px;
27
+ background-color: #2C8D94;
28
+ color: #f2f2f2;
29
+ }
30
+ .navbar-default .navbar-nav > li.active > a {
31
+ padding-top: 7px;
32
+ padding-bottom: 7px;
33
+ background-color: #f2f2f2;
34
+ color: #006978;
35
+ }
36
+
37
+ .navbar-default .navbar-nav > li.logged-in > a,
38
+ .navbar-default .navbar-nav > li.logged-in > a:hover {
39
+ padding-top: 7px;
40
+ padding-bottom: 7px;
41
+ background-color: #33aeb8;
42
+ color: #f2f2f2;
43
+ }
44
+
45
+ .nav-tabs{
46
+ padding-left: 15px;
47
+ padding-right: 15px;
48
+ }
49
+
50
+ .theme-dropdown .dropdown-menu {
51
+ display: block;
52
+ position: static;
53
+ margin-bottom: 20px;
54
+ }
55
+
56
+ .theme-showcase > p > .btn {
57
+ margin: 5px 0;
58
+ }
@@ -0,0 +1,67 @@
1
+ //
2
+ // Alerts
3
+ // --------------------------------------------------
4
+
5
+
6
+ // Base styles
7
+ // -------------------------
8
+
9
+ .alert {
10
+ padding: $alert-padding;
11
+ margin-bottom: $line-height-computed;
12
+ border: 1px solid transparent;
13
+ border-radius: $alert-border-radius;
14
+
15
+ // Headings for larger alerts
16
+ h4 {
17
+ margin-top: 0;
18
+ // Specified for the h4 to prevent conflicts of changing $headings-color
19
+ color: inherit;
20
+ }
21
+ // Provide class for links that match alerts
22
+ .alert-link {
23
+ font-weight: $alert-link-font-weight;
24
+ }
25
+
26
+ // Improve alignment and spacing of inner content
27
+ > p,
28
+ > ul {
29
+ margin-bottom: 0;
30
+ }
31
+ > p + p {
32
+ margin-top: 5px;
33
+ }
34
+ }
35
+
36
+ // Dismissable alerts
37
+ //
38
+ // Expand the right padding and account for the close button's positioning.
39
+
40
+ .alert-dismissable {
41
+ padding-right: ($alert-padding + 20);
42
+
43
+ // Adjust close link position
44
+ .close {
45
+ position: relative;
46
+ top: -2px;
47
+ right: -21px;
48
+ color: inherit;
49
+ }
50
+ }
51
+
52
+ // Alternate styles
53
+ //
54
+ // Generate contextual modifier classes for colorizing the alert.
55
+
56
+ .alert-success {
57
+ @include alert-variant($alert-success-bg, $alert-success-border, $alert-success-text);
58
+ }
59
+ .alert-info {
60
+ @include alert-variant($alert-info-bg, $alert-info-border, $alert-info-text);
61
+ }
62
+ .alert-warning {
63
+ @include alert-variant($alert-warning-bg, $alert-warning-border, $alert-warning-text);
64
+ }
65
+ .alert-danger {
66
+ @include alert-variant($alert-danger-bg, $alert-danger-border, $alert-danger-text);
67
+ }
@@ -0,0 +1,51 @@
1
+ //
2
+ // Badges
3
+ // --------------------------------------------------
4
+
5
+
6
+ // Base classes
7
+ .badge {
8
+ display: inline-block;
9
+ min-width: 10px;
10
+ padding: 3px 7px;
11
+ font-size: $font-size-small;
12
+ font-weight: $badge-font-weight;
13
+ color: $badge-color;
14
+ line-height: $badge-line-height;
15
+ vertical-align: baseline;
16
+ white-space: nowrap;
17
+ text-align: center;
18
+ background-color: $badge-bg;
19
+ border-radius: $badge-border-radius;
20
+
21
+ // Empty badges collapse automatically (not available in IE8)
22
+ &:empty {
23
+ display: none;
24
+ }
25
+ }
26
+
27
+ // Hover state, but only for links
28
+ a.badge {
29
+ &:hover,
30
+ &:focus {
31
+ color: $badge-link-hover-color;
32
+ text-decoration: none;
33
+ cursor: pointer;
34
+ }
35
+ }
36
+
37
+ // Quick fix for labels/badges in buttons
38
+ .btn .badge {
39
+ position: relative;
40
+ top: -1px;
41
+ }
42
+
43
+ // Account for counters in navs
44
+ a.list-group-item.active > .badge,
45
+ .nav-pills > .active > a > .badge {
46
+ color: $badge-active-color;
47
+ background-color: $badge-active-bg;
48
+ }
49
+ .nav-pills > li > a > .badge {
50
+ margin-left: 3px;
51
+ }
@@ -0,0 +1,23 @@
1
+ //
2
+ // Breadcrumbs
3
+ // --------------------------------------------------
4
+
5
+
6
+ .breadcrumb {
7
+ padding: 8px 15px;
8
+ margin-bottom: $line-height-computed;
9
+ list-style: none;
10
+ background-color: $breadcrumb-bg;
11
+ border-radius: $border-radius-base;
12
+ > li {
13
+ display: inline-block;
14
+ + li:before {
15
+ content: "#{$breadcrumb-separator}\00a0"; // Unicode space added since inline-block means non-collapsing white-space
16
+ padding: 0 5px;
17
+ color: $breadcrumb-color;
18
+ }
19
+ }
20
+ > .active {
21
+ color: $breadcrumb-active-color;
22
+ }
23
+ }
@@ -0,0 +1,253 @@
1
+ //
2
+ // Button groups
3
+ // --------------------------------------------------
4
+
5
+ // Button carets
6
+ //
7
+ // Match the button text color to the arrow/caret for indicating dropdown-ness.
8
+
9
+ .caret {
10
+ .btn-default & {
11
+ border-top-color: $btn-default-color;
12
+ }
13
+ .btn-primary &,
14
+ .btn-success &,
15
+ .btn-warning &,
16
+ .btn-danger &,
17
+ .btn-info & {
18
+ border-top-color: #fff;
19
+ }
20
+ }
21
+ .dropup {
22
+ .btn-default .caret {
23
+ border-bottom-color: $btn-default-color;
24
+ }
25
+ .btn-primary,
26
+ .btn-success,
27
+ .btn-warning,
28
+ .btn-danger,
29
+ .btn-info {
30
+ .caret {
31
+ border-bottom-color: #fff;
32
+ }
33
+ }
34
+ }
35
+
36
+ // Make the div behave like a button
37
+ .btn-group,
38
+ .btn-group-vertical {
39
+ position: relative;
40
+ display: inline-block;
41
+ vertical-align: middle; // match .btn alignment given font-size hack above
42
+ > .btn {
43
+ position: relative;
44
+ float: left;
45
+ // Bring the "active" button to the front
46
+ &:hover,
47
+ &:focus,
48
+ &:active,
49
+ &.active {
50
+ z-index: 2;
51
+ }
52
+ &:focus {
53
+ // Remove focus outline when dropdown JS adds it after closing the menu
54
+ outline: none;
55
+ }
56
+ }
57
+ }
58
+
59
+ // Prevent double borders when buttons are next to each other
60
+ .btn-group {
61
+ .btn + .btn,
62
+ .btn + .btn-group,
63
+ .btn-group + .btn,
64
+ .btn-group + .btn-group {
65
+ margin-left: -1px;
66
+ }
67
+ }
68
+
69
+ // Optional: Group multiple button groups together for a toolbar
70
+ .btn-toolbar {
71
+ @include clearfix();
72
+
73
+ .btn-group {
74
+ float: left;
75
+ }
76
+ // Space out series of button groups
77
+ > .btn,
78
+ > .btn-group {
79
+ + .btn,
80
+ + .btn-group {
81
+ margin-left: 5px;
82
+ }
83
+ }
84
+ }
85
+
86
+ .btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
87
+ border-radius: 0;
88
+ }
89
+
90
+ // Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match
91
+ .btn-group > .btn:first-child {
92
+ margin-left: 0;
93
+ &:not(:last-child):not(.dropdown-toggle) {
94
+ @include border-right-radius(0);
95
+ }
96
+ }
97
+ // Need .dropdown-toggle since :last-child doesn't apply given a .dropdown-menu immediately after it
98
+ .btn-group > .btn:last-child:not(:first-child),
99
+ .btn-group > .dropdown-toggle:not(:first-child) {
100
+ @include border-left-radius(0);
101
+ }
102
+
103
+ // Custom edits for including btn-groups within btn-groups (useful for including dropdown buttons within a btn-group)
104
+ .btn-group > .btn-group {
105
+ float: left;
106
+ }
107
+ .btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
108
+ border-radius: 0;
109
+ }
110
+ .btn-group > .btn-group:first-child {
111
+ > .btn:last-child,
112
+ > .dropdown-toggle {
113
+ @include border-right-radius(0);
114
+ }
115
+ }
116
+ .btn-group > .btn-group:last-child > .btn:first-child {
117
+ @include border-left-radius(0);
118
+ }
119
+
120
+ // On active and open, don't show outline
121
+ .btn-group .dropdown-toggle:active,
122
+ .btn-group.open .dropdown-toggle {
123
+ outline: 0;
124
+ }
125
+
126
+
127
+ // Sizing
128
+ //
129
+ // Remix the default button sizing classes into new ones for easier manipulation.
130
+
131
+ .btn-group-xs > .btn { @extend .btn-xs; }
132
+ .btn-group-sm > .btn { @extend .btn-sm; }
133
+ .btn-group-lg > .btn { @extend .btn-lg; }
134
+
135
+
136
+ // Split button dropdowns
137
+ // ----------------------
138
+
139
+ // Give the line between buttons some depth
140
+ .btn-group > .btn + .dropdown-toggle {
141
+ padding-left: 8px;
142
+ padding-right: 8px;
143
+ }
144
+ .btn-group > .btn-lg + .dropdown-toggle {
145
+ padding-left: 12px;
146
+ padding-right: 12px;
147
+ }
148
+
149
+ // The clickable button for toggling the menu
150
+ // Remove the gradient and set the same inset shadow as the :active state
151
+ .btn-group.open .dropdown-toggle {
152
+ @include box-shadow(inset 0 3px 5px rgba(0,0,0,.125));
153
+
154
+ // Show no shadow for `.btn-link` since it has no other button styles.
155
+ &.btn-link {
156
+ @include box-shadow(none);
157
+ }
158
+ }
159
+
160
+
161
+ // Reposition the caret
162
+ .btn .caret {
163
+ margin-left: 0;
164
+ }
165
+ // Carets in other button sizes
166
+ .btn-lg .caret {
167
+ border-width: $caret-width-large $caret-width-large 0;
168
+ border-bottom-width: 0;
169
+ }
170
+ // Upside down carets for .dropup
171
+ .dropup .btn-lg .caret {
172
+ border-width: 0 $caret-width-large $caret-width-large;
173
+ }
174
+
175
+
176
+ // Vertical button groups
177
+ // ----------------------
178
+
179
+ .btn-group-vertical {
180
+ > .btn,
181
+ > .btn-group {
182
+ display: block;
183
+ float: none;
184
+ width: 100%;
185
+ max-width: 100%;
186
+ }
187
+
188
+ // Clear floats so dropdown menus can be properly placed
189
+ > .btn-group {
190
+ @include clearfix();
191
+ > .btn {
192
+ float: none;
193
+ }
194
+ }
195
+
196
+ > .btn + .btn,
197
+ > .btn + .btn-group,
198
+ > .btn-group + .btn,
199
+ > .btn-group + .btn-group {
200
+ margin-top: -1px;
201
+ margin-left: 0;
202
+ }
203
+ }
204
+
205
+ .btn-group-vertical > .btn {
206
+ &:not(:first-child):not(:last-child) {
207
+ border-radius: 0;
208
+ }
209
+ &:first-child:not(:last-child) {
210
+ border-top-right-radius: $border-radius-base;
211
+ @include border-bottom-radius(0);
212
+ }
213
+ &:last-child:not(:first-child) {
214
+ border-bottom-left-radius: $border-radius-base;
215
+ @include border-top-radius(0);
216
+ }
217
+ }
218
+ .btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
219
+ border-radius: 0;
220
+ }
221
+ .btn-group-vertical > .btn-group:first-child {
222
+ > .btn:last-child,
223
+ > .dropdown-toggle {
224
+ @include border-bottom-radius(0);
225
+ }
226
+ }
227
+ .btn-group-vertical > .btn-group:last-child > .btn:first-child {
228
+ @include border-top-radius(0);
229
+ }
230
+
231
+
232
+
233
+ // Justified button groups
234
+ // ----------------------
235
+
236
+ .btn-group-justified {
237
+ display: table;
238
+ width: 100%;
239
+ table-layout: fixed;
240
+ border-collapse: separate;
241
+ .btn {
242
+ float: none;
243
+ display: table-cell;
244
+ width: 1%;
245
+ }
246
+ }
247
+
248
+
249
+ // Checkbox and radio options
250
+ [data-toggle="buttons"] > .btn > input[type="radio"],
251
+ [data-toggle="buttons"] > .btn > input[type="checkbox"] {
252
+ display: none;
253
+ }