adiwg-mdtranslator 2.0.0rc2 → 2.0.0rc3

Sign up to get free protection for your applications and to get access to all the features.
@@ -2,7 +2,9 @@
2
2
  # Reader - ADIwg JSON to internal data structure
3
3
 
4
4
  # History:
5
- # Stan Smith 2016-11-01 original script
5
+ # Stan Smith 2017-05-16 deprecated topic category
6
+ # ... topic category is now handled as keyword list
7
+ # Stan Smith 2016-11-01 original script
6
8
 
7
9
  require_relative 'module_resourceType'
8
10
  require_relative 'module_citation'
@@ -24,341 +26,341 @@ require_relative 'module_locale'
24
26
  require_relative 'module_maintenance'
25
27
 
26
28
  module ADIWG
27
- module Mdtranslator
28
- module Readers
29
- module MdJson
30
-
31
- module ResourceInfo
32
-
33
- def self.unpack(hResInfo, responseObj)
34
-
35
- # return nil object if input is empty
36
- if hResInfo.empty?
37
- responseObj[:readerExecutionMessages] << 'ResourceInfo object is empty'
38
- responseObj[:readerExecutionPass] = false
39
- return nil
40
- end
41
-
42
- # instance classes needed in script
43
- intMetadataClass = InternalMetadata.new
44
- intResInfo = intMetadataClass.newResourceInfo
45
-
46
- # resource information - resource type [] (required) {resourceType}
47
- if hResInfo.has_key?('resourceType')
48
- hResInfo['resourceType'].each do |item|
49
- unless item.empty?
50
- hReturn = ResourceType.unpack(item, responseObj)
51
- unless hReturn.nil?
52
- intResInfo[:resourceTypes] << hReturn
53
- end
54
- end
55
- end
56
- end
57
- if intResInfo[:resourceTypes].empty?
58
- responseObj[:readerExecutionMessages] << 'ResourceInfo is missing resourceType'
59
- responseObj[:readerExecutionPass] = false
60
- return nil
61
- end
62
-
63
- # resource information - citation {citation} (required)
64
- if hResInfo.has_key?('citation')
65
- hObject = hResInfo['citation']
66
- unless hObject.empty?
67
- hReturn = Citation.unpack(hObject, responseObj)
68
- unless hReturn.nil?
69
- intResInfo[:citation] = hReturn
70
- end
71
- end
72
- end
73
- if intResInfo[:citation].empty?
74
- responseObj[:readerExecutionMessages] << 'ResourceInfo is missing citation'
75
- responseObj[:readerExecutionPass] = false
76
- return nil
77
- end
78
-
79
- # resource information - abstract (required)
80
- if hResInfo.has_key?('abstract')
81
- intResInfo[:abstract] = hResInfo['abstract']
82
- end
83
- if intResInfo[:abstract].nil? || intResInfo[:abstract] == ''
84
- responseObj[:readerExecutionMessages] << 'ResourceInfo is missing abstract'
85
- responseObj[:readerExecutionPass] = false
86
- return nil
87
- end
88
-
89
- # resource information - short abstract
90
- if hResInfo.has_key?('shortAbstract')
91
- if hResInfo['shortAbstract'] != ''
92
- intResInfo[:shortAbstract] = hResInfo['shortAbstract']
93
- end
94
- end
95
-
96
- # resource information - purpose
97
- if hResInfo.has_key?('purpose')
98
- if hResInfo['purpose'] != ''
99
- intResInfo[:purpose] = hResInfo['purpose']
100
- end
101
- end
102
-
103
- # resource information - credits []
104
- if hResInfo.has_key?('credit')
105
- hResInfo['credit'].each do |item|
106
- if item != ''
107
- intResInfo[:credits] << item
108
- end
109
- end
110
- end
111
-
112
- # resource information - resource time period {timePeriod}
113
- if hResInfo.has_key?('timePeriod')
114
- hObject = hResInfo['timePeriod']
115
- unless hObject.empty?
116
- hReturn = TimePeriod.unpack(hObject, responseObj)
117
- unless hReturn.nil?
118
- intResInfo[:timePeriod] = hReturn
119
- end
120
- end
121
- end
122
-
123
- # resource information - status [] (required)
124
- if hResInfo.has_key?('status')
125
- hResInfo['status'].each do |item|
126
- if item != ''
127
- intResInfo[:status] << item
128
- end
129
- end
130
- end
131
- if intResInfo[:status].empty?
132
- responseObj[:readerExecutionMessages] << 'ResourceInfo is missing status'
133
- responseObj[:readerExecutionPass] = false
134
- return nil
135
- end
136
-
137
- # resource information - topic category []
138
- if hResInfo.has_key?('topicCategory')
139
- hResInfo['topicCategory'].each do |item|
140
- if item != ''
141
- intResInfo[:topicCategories] << item
142
- end
143
- end
144
- end
145
-
146
- # resource information - point of contact [] {responsibleParty} (required)
147
- if hResInfo.has_key?('pointOfContact')
148
- aItems = hResInfo['pointOfContact']
149
- aItems.each do |item|
150
- hReturn = ResponsibleParty.unpack(item, responseObj)
151
- unless hReturn.nil?
152
- intResInfo[:pointOfContacts] << hReturn
153
- end
154
- end
155
- end
156
- if intResInfo[:pointOfContacts].empty?
157
- responseObj[:readerExecutionMessages] << 'ResourceInfo object is missing pointOfContact'
158
- responseObj[:readerExecutionPass] = false
159
- return nil
160
- end
161
-
162
- # resource information - spatial reference system [] {spatialReference}
163
- if hResInfo.has_key?('spatialReferenceSystem')
164
- aItems = hResInfo['spatialReferenceSystem']
165
- aItems.each do |item|
166
- hReturn = SpatialReferenceSystem.unpack(item, responseObj)
167
- unless hReturn.nil?
168
- intResInfo[:spatialReferenceSystems] << hReturn
169
- end
170
- end
171
- end
172
-
173
- # resource information - spatial representation type []
174
- if hResInfo.has_key?('spatialRepresentationType')
175
- hResInfo['spatialRepresentationType'].each do |item|
176
- if item != ''
177
- intResInfo[:spatialRepresentationTypes] << item
178
- end
179
- end
180
- end
181
-
182
- # resource information - spatial representation [] {spatialRepresentation}
183
- if hResInfo.has_key?('spatialRepresentation')
184
- aItems = hResInfo['spatialRepresentation']
185
- aItems.each do |item|
186
- hReturn = SpatialRepresentation.unpack(item, responseObj)
187
- unless hReturn.nil?
188
- intResInfo[:spatialRepresentations] << hReturn
189
- end
190
- end
191
- end
192
-
193
- # resource information - spatial resolution [] {spatialResolution}
194
- if hResInfo.has_key?('spatialResolution')
195
- aItems = hResInfo['spatialResolution']
196
- aItems.each do |item|
197
- hReturn = SpatialResolution.unpack(item, responseObj)
198
- unless hReturn.nil?
199
- intResInfo[:spatialResolutions] << hReturn
200
- end
201
- end
202
- end
203
-
204
- # resource information - temporal resolution [] {duration}
205
- if hResInfo.has_key?('temporalResolution')
206
- aItems = hResInfo['temporalResolution']
207
- aItems.each do |item|
208
- hReturn = Duration.unpack(item, responseObj)
209
- unless hReturn.nil?
210
- intResInfo[:temporalResolutions] << hReturn
211
- end
212
- end
213
- end
214
-
215
- # resource information - extent [] {extent}
216
- if hResInfo.has_key?('extent')
217
- aItems = hResInfo['extent']
218
- aItems.each do |item|
219
- hReturn = Extent.unpack(item, responseObj)
220
- unless hReturn.nil?
221
- intResInfo[:extents] << hReturn
222
- end
223
- end
224
- end
225
-
226
- # resource information - content information [] {contentInformation}
227
- if hResInfo.has_key?('coverageDescription')
228
- aItems = hResInfo['coverageDescription']
229
- aItems.each do |item|
230
- hReturn = CoverageDescription.unpack(item, responseObj)
231
- unless hReturn.nil?
232
- intResInfo[:coverageDescriptions] << hReturn
233
- end
234
- end
235
- end
236
-
237
- # resource information - taxonomy {taxonomy}
238
- if hResInfo.has_key?('taxonomy')
239
- hObject = hResInfo['taxonomy']
240
- unless hObject.empty?
241
- hReturn = Taxonomy.unpack(hObject, responseObj)
242
- unless hReturn.nil?
243
- intResInfo[:taxonomy] = hReturn
244
- end
245
- end
246
- end
247
-
248
- # resource information - graphic overview [] {graphicOverview}
249
- if hResInfo.has_key?('graphicOverview')
250
- aItems = hResInfo['graphicOverview']
251
- aItems.each do |item|
252
- hReturn = Graphic.unpack(item, responseObj)
253
- unless hReturn.nil?
254
- intResInfo[:graphicOverviews] << hReturn
255
- end
256
- end
257
- end
258
-
259
- # resource information - resource format [] {format}
260
- if hResInfo.has_key?('resourceFormat')
261
- aItems = hResInfo['resourceFormat']
262
- aItems.each do |item|
263
- hReturn = Format.unpack(item, responseObj)
264
- unless hReturn.nil?
265
- intResInfo[:resourceFormats] << hReturn
266
- end
267
- end
268
- end
269
-
270
- # resource information - keyword [] {keyword}
271
- if hResInfo.has_key?('keyword')
272
- aItems = hResInfo['keyword']
273
- aItems.each do |item|
274
- hReturn = Keyword.unpack(item, responseObj)
275
- unless hReturn.nil?
276
- intResInfo[:keywords] << hReturn
277
- end
278
- end
279
- end
280
-
281
- # resource information - resource usage [] {resourceUsage}
282
- if hResInfo.has_key?('resourceUsage')
283
- aItems = hResInfo['resourceUsage']
284
- aItems.each do |item|
285
- hReturn = ResourceUsage.unpack(item, responseObj)
286
- unless hReturn.nil?
287
- intResInfo[:resourceUsages] << hReturn
288
- end
289
- end
290
- end
291
-
292
- # resource information - constraint [] {constraint}
293
- if hResInfo.has_key?('constraint')
294
- aCons = hResInfo['constraint']
295
- aCons.each do |hItem|
296
- hReturn = Constraint.unpack(hItem, responseObj)
297
- unless hReturn.nil?
298
- intResInfo[:constraints] << hReturn
299
- end
300
- end
301
- end
302
-
303
- # resource information - default resource locale {locale} (required)
304
- if hResInfo.has_key?('defaultResourceLocale')
305
- hObject = hResInfo['defaultResourceLocale']
306
- unless hObject.empty?
307
- hReturn = Locale.unpack(hObject, responseObj)
308
- unless hReturn.nil?
309
- intResInfo[:defaultResourceLocale] = hReturn
310
- end
311
- end
312
- end
313
- if intResInfo[:defaultResourceLocale].empty?
314
- responseObj[:readerExecutionMessages] << 'ResourceInfo object is missing defaultResourceLocale'
315
- responseObj[:readerExecutionPass] = false
316
- return nil
317
- end
318
-
319
- # resource information - other resource locale [] {locale}
320
- if hResInfo.has_key?('otherResourceLocale')
321
- aItems = hResInfo['otherResourceLocale']
322
- aItems.each do |item|
323
- hReturn = Locale.unpack(item, responseObj)
324
- unless hReturn.nil?
325
- intResInfo[:otherResourceLocales] << hReturn
326
- end
327
- end
328
- end
329
-
330
- # resource information - resource maintenance [] {maintenance}
331
- if hResInfo.has_key?('resourceMaintenance')
332
- aItems = hResInfo['resourceMaintenance']
333
- aItems.each do |item|
334
- hReturn = Maintenance.unpack(item, responseObj)
335
- unless hReturn.nil?
336
- intResInfo[:resourceMaintenance] << hReturn
337
- end
338
- end
339
- end
340
-
341
- # resource information - environment description
342
- if hResInfo.has_key?('environmentDescription')
343
- if hResInfo['environmentDescription'] != ''
344
- intResInfo[:environmentDescription] = hResInfo['environmentDescription']
345
- end
346
- end
347
-
348
- # resource information - supplemental information
349
- if hResInfo.has_key?('supplementalInfo')
350
- if hResInfo['supplementalInfo'] != ''
351
- intResInfo[:supplementalInfo] = hResInfo['supplementalInfo']
352
- end
353
- end
354
-
355
- return intResInfo
356
-
357
- end
358
-
359
- end
29
+ module Mdtranslator
30
+ module Readers
31
+ module MdJson
32
+
33
+ module ResourceInfo
34
+
35
+ def self.unpack(hResInfo, responseObj)
36
+
37
+ # return nil object if input is empty
38
+ if hResInfo.empty?
39
+ responseObj[:readerExecutionMessages] << 'ResourceInfo object is empty'
40
+ responseObj[:readerExecutionPass] = false
41
+ return nil
42
+ end
43
+
44
+ # instance classes needed in script
45
+ intMetadataClass = InternalMetadata.new
46
+ intResInfo = intMetadataClass.newResourceInfo
47
+
48
+ # resource information - resource type [] (required) {resourceType}
49
+ if hResInfo.has_key?('resourceType')
50
+ hResInfo['resourceType'].each do |item|
51
+ unless item.empty?
52
+ hReturn = ResourceType.unpack(item, responseObj)
53
+ unless hReturn.nil?
54
+ intResInfo[:resourceTypes] << hReturn
55
+ end
56
+ end
57
+ end
58
+ end
59
+ if intResInfo[:resourceTypes].empty?
60
+ responseObj[:readerExecutionMessages] << 'ResourceInfo is missing resourceType'
61
+ responseObj[:readerExecutionPass] = false
62
+ return nil
63
+ end
64
+
65
+ # resource information - citation {citation} (required)
66
+ if hResInfo.has_key?('citation')
67
+ hObject = hResInfo['citation']
68
+ unless hObject.empty?
69
+ hReturn = Citation.unpack(hObject, responseObj)
70
+ unless hReturn.nil?
71
+ intResInfo[:citation] = hReturn
72
+ end
73
+ end
74
+ end
75
+ if intResInfo[:citation].empty?
76
+ responseObj[:readerExecutionMessages] << 'ResourceInfo is missing citation'
77
+ responseObj[:readerExecutionPass] = false
78
+ return nil
79
+ end
80
+
81
+ # resource information - abstract (required)
82
+ if hResInfo.has_key?('abstract')
83
+ intResInfo[:abstract] = hResInfo['abstract']
84
+ end
85
+ if intResInfo[:abstract].nil? || intResInfo[:abstract] == ''
86
+ responseObj[:readerExecutionMessages] << 'ResourceInfo is missing abstract'
87
+ responseObj[:readerExecutionPass] = false
88
+ return nil
89
+ end
90
+
91
+ # resource information - short abstract
92
+ if hResInfo.has_key?('shortAbstract')
93
+ if hResInfo['shortAbstract'] != ''
94
+ intResInfo[:shortAbstract] = hResInfo['shortAbstract']
95
+ end
96
+ end
97
+
98
+ # resource information - purpose
99
+ if hResInfo.has_key?('purpose')
100
+ if hResInfo['purpose'] != ''
101
+ intResInfo[:purpose] = hResInfo['purpose']
102
+ end
103
+ end
104
+
105
+ # resource information - credits []
106
+ if hResInfo.has_key?('credit')
107
+ hResInfo['credit'].each do |item|
108
+ if item != ''
109
+ intResInfo[:credits] << item
110
+ end
111
+ end
112
+ end
113
+
114
+ # resource information - resource time period {timePeriod}
115
+ if hResInfo.has_key?('timePeriod')
116
+ hObject = hResInfo['timePeriod']
117
+ unless hObject.empty?
118
+ hReturn = TimePeriod.unpack(hObject, responseObj)
119
+ unless hReturn.nil?
120
+ intResInfo[:timePeriod] = hReturn
121
+ end
122
+ end
123
+ end
124
+
125
+ # resource information - status [] (required)
126
+ if hResInfo.has_key?('status')
127
+ hResInfo['status'].each do |item|
128
+ if item != ''
129
+ intResInfo[:status] << item
130
+ end
131
+ end
132
+ end
133
+ if intResInfo[:status].empty?
134
+ responseObj[:readerExecutionMessages] << 'ResourceInfo is missing status'
135
+ responseObj[:readerExecutionPass] = false
136
+ return nil
137
+ end
138
+
139
+ # resource information - topic category (deprecated)
140
+ if hResInfo.has_key?('topicCategory')
141
+ unless hResInfo['topicCategory'].empty?
142
+ responseObj[:readerExecutionMessages] << 'TopicCategory is deprecated, use keyword type isoTopicCategory instead'
143
+ responseObj[:readerExecutionPass] = false
144
+ end
145
+ end
146
+
147
+ # resource information - point of contact [] {responsibleParty} (required)
148
+ if hResInfo.has_key?('pointOfContact')
149
+ aItems = hResInfo['pointOfContact']
150
+ aItems.each do |item|
151
+ hReturn = ResponsibleParty.unpack(item, responseObj)
152
+ unless hReturn.nil?
153
+ intResInfo[:pointOfContacts] << hReturn
154
+ end
155
+ end
156
+ end
157
+ if intResInfo[:pointOfContacts].empty?
158
+ responseObj[:readerExecutionMessages] << 'ResourceInfo object is missing pointOfContact'
159
+ responseObj[:readerExecutionPass] = false
160
+ return nil
161
+ end
162
+
163
+ # resource information - spatial reference system [] {spatialReference}
164
+ if hResInfo.has_key?('spatialReferenceSystem')
165
+ aItems = hResInfo['spatialReferenceSystem']
166
+ aItems.each do |item|
167
+ hReturn = SpatialReferenceSystem.unpack(item, responseObj)
168
+ unless hReturn.nil?
169
+ intResInfo[:spatialReferenceSystems] << hReturn
170
+ end
171
+ end
172
+ end
173
+
174
+ # resource information - spatial representation type []
175
+ if hResInfo.has_key?('spatialRepresentationType')
176
+ hResInfo['spatialRepresentationType'].each do |item|
177
+ if item != ''
178
+ intResInfo[:spatialRepresentationTypes] << item
179
+ end
180
+ end
181
+ end
182
+
183
+ # resource information - spatial representation [] {spatialRepresentation}
184
+ if hResInfo.has_key?('spatialRepresentation')
185
+ aItems = hResInfo['spatialRepresentation']
186
+ aItems.each do |item|
187
+ hReturn = SpatialRepresentation.unpack(item, responseObj)
188
+ unless hReturn.nil?
189
+ intResInfo[:spatialRepresentations] << hReturn
190
+ end
191
+ end
192
+ end
193
+
194
+ # resource information - spatial resolution [] {spatialResolution}
195
+ if hResInfo.has_key?('spatialResolution')
196
+ aItems = hResInfo['spatialResolution']
197
+ aItems.each do |item|
198
+ hReturn = SpatialResolution.unpack(item, responseObj)
199
+ unless hReturn.nil?
200
+ intResInfo[:spatialResolutions] << hReturn
201
+ end
202
+ end
203
+ end
204
+
205
+ # resource information - temporal resolution [] {duration}
206
+ if hResInfo.has_key?('temporalResolution')
207
+ aItems = hResInfo['temporalResolution']
208
+ aItems.each do |item|
209
+ hReturn = Duration.unpack(item, responseObj)
210
+ unless hReturn.nil?
211
+ intResInfo[:temporalResolutions] << hReturn
212
+ end
213
+ end
214
+ end
215
+
216
+ # resource information - extent [] {extent}
217
+ if hResInfo.has_key?('extent')
218
+ aItems = hResInfo['extent']
219
+ aItems.each do |item|
220
+ hReturn = Extent.unpack(item, responseObj)
221
+ unless hReturn.nil?
222
+ intResInfo[:extents] << hReturn
223
+ end
224
+ end
225
+ end
226
+
227
+ # resource information - content information [] {contentInformation}
228
+ if hResInfo.has_key?('coverageDescription')
229
+ aItems = hResInfo['coverageDescription']
230
+ aItems.each do |item|
231
+ hReturn = CoverageDescription.unpack(item, responseObj)
232
+ unless hReturn.nil?
233
+ intResInfo[:coverageDescriptions] << hReturn
234
+ end
235
+ end
236
+ end
237
+
238
+ # resource information - taxonomy {taxonomy}
239
+ if hResInfo.has_key?('taxonomy')
240
+ hObject = hResInfo['taxonomy']
241
+ unless hObject.empty?
242
+ hReturn = Taxonomy.unpack(hObject, responseObj)
243
+ unless hReturn.nil?
244
+ intResInfo[:taxonomy] = hReturn
245
+ end
246
+ end
247
+ end
248
+
249
+ # resource information - graphic overview [] {graphicOverview}
250
+ if hResInfo.has_key?('graphicOverview')
251
+ aItems = hResInfo['graphicOverview']
252
+ aItems.each do |item|
253
+ hReturn = Graphic.unpack(item, responseObj)
254
+ unless hReturn.nil?
255
+ intResInfo[:graphicOverviews] << hReturn
256
+ end
257
+ end
258
+ end
259
+
260
+ # resource information - resource format [] {format}
261
+ if hResInfo.has_key?('resourceFormat')
262
+ aItems = hResInfo['resourceFormat']
263
+ aItems.each do |item|
264
+ hReturn = Format.unpack(item, responseObj)
265
+ unless hReturn.nil?
266
+ intResInfo[:resourceFormats] << hReturn
267
+ end
268
+ end
269
+ end
270
+
271
+ # resource information - keyword [] {keyword}
272
+ if hResInfo.has_key?('keyword')
273
+ aItems = hResInfo['keyword']
274
+ aItems.each do |item|
275
+ hReturn = Keyword.unpack(item, responseObj)
276
+ unless hReturn.nil?
277
+ intResInfo[:keywords] << hReturn[0]
278
+ intResInfo[:topicCategories] = intResInfo[:topicCategories] | hReturn[1]
279
+ end
280
+ end
281
+ end
282
+
283
+ # resource information - resource usage [] {resourceUsage}
284
+ if hResInfo.has_key?('resourceUsage')
285
+ aItems = hResInfo['resourceUsage']
286
+ aItems.each do |item|
287
+ hReturn = ResourceUsage.unpack(item, responseObj)
288
+ unless hReturn.nil?
289
+ intResInfo[:resourceUsages] << hReturn
290
+ end
291
+ end
292
+ end
293
+
294
+ # resource information - constraint [] {constraint}
295
+ if hResInfo.has_key?('constraint')
296
+ aCons = hResInfo['constraint']
297
+ aCons.each do |hItem|
298
+ hReturn = Constraint.unpack(hItem, responseObj)
299
+ unless hReturn.nil?
300
+ intResInfo[:constraints] << hReturn
301
+ end
302
+ end
303
+ end
304
+
305
+ # resource information - default resource locale {locale} (required)
306
+ if hResInfo.has_key?('defaultResourceLocale')
307
+ hObject = hResInfo['defaultResourceLocale']
308
+ unless hObject.empty?
309
+ hReturn = Locale.unpack(hObject, responseObj)
310
+ unless hReturn.nil?
311
+ intResInfo[:defaultResourceLocale] = hReturn
312
+ end
313
+ end
314
+ end
315
+ if intResInfo[:defaultResourceLocale].empty?
316
+ responseObj[:readerExecutionMessages] << 'ResourceInfo object is missing defaultResourceLocale'
317
+ responseObj[:readerExecutionPass] = false
318
+ return nil
319
+ end
320
+
321
+ # resource information - other resource locale [] {locale}
322
+ if hResInfo.has_key?('otherResourceLocale')
323
+ aItems = hResInfo['otherResourceLocale']
324
+ aItems.each do |item|
325
+ hReturn = Locale.unpack(item, responseObj)
326
+ unless hReturn.nil?
327
+ intResInfo[:otherResourceLocales] << hReturn
328
+ end
329
+ end
330
+ end
331
+
332
+ # resource information - resource maintenance [] {maintenance}
333
+ if hResInfo.has_key?('resourceMaintenance')
334
+ aItems = hResInfo['resourceMaintenance']
335
+ aItems.each do |item|
336
+ hReturn = Maintenance.unpack(item, responseObj)
337
+ unless hReturn.nil?
338
+ intResInfo[:resourceMaintenance] << hReturn
339
+ end
340
+ end
341
+ end
342
+
343
+ # resource information - environment description
344
+ if hResInfo.has_key?('environmentDescription')
345
+ if hResInfo['environmentDescription'] != ''
346
+ intResInfo[:environmentDescription] = hResInfo['environmentDescription']
347
+ end
348
+ end
349
+
350
+ # resource information - supplemental information
351
+ if hResInfo.has_key?('supplementalInfo')
352
+ if hResInfo['supplementalInfo'] != ''
353
+ intResInfo[:supplementalInfo] = hResInfo['supplementalInfo']
354
+ end
355
+ end
356
+
357
+ return intResInfo
358
+
359
+ end
360
360
 
361
361
  end
362
- end
363
- end
362
+
363
+ end
364
+ end
365
+ end
364
366
  end