inlaweb-lib-dynamodb 1.0.3 → 1.0.5

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.
@@ -20,41 +20,59 @@ class DynamoLib {
20
20
  this.logger = new logger_1.Logger();
21
21
  }
22
22
  async putItem(tableName, item) {
23
- const params = {
24
- TableName: tableName,
25
- Item: item,
26
- ReturnItemCollectionMetrics: "SIZE",
27
- ReturnConsumedCapacity: "TOTAL",
28
- };
29
- this.logger.debug(`PutItem: ${JSON.stringify(params)}`);
30
- const result = await this.docClient.send(new lib_dynamodb_1.PutCommand(params));
31
- this.logger.debug(`PutItem Result: ${JSON.stringify(result)}`);
23
+ try {
24
+ const params = {
25
+ TableName: tableName,
26
+ Item: item,
27
+ ReturnItemCollectionMetrics: "SIZE",
28
+ ReturnConsumedCapacity: "TOTAL",
29
+ };
30
+ this.logger.debug(`PutItem: ${JSON.stringify(params)}`);
31
+ const result = await this.docClient.send(new lib_dynamodb_1.PutCommand(params));
32
+ this.logger.debug(`PutItem Result: ${JSON.stringify(result)}`);
33
+ }
34
+ catch (error) {
35
+ this.logger.error(error.message);
36
+ throw error;
37
+ }
32
38
  }
33
39
  async getItem(tableName, key, projectionExpression) {
34
- const params = {
35
- TableName: tableName,
36
- Key: key,
37
- ReturnConsumedCapacity: "TOTAL",
38
- };
39
- const projection = this.buildProjectionExpression(projectionExpression);
40
- if (projection) {
41
- params.ProjectionExpression = projection.projectionExpression;
42
- params.ExpressionAttributeNames = projection.expressionAttributeNames;
43
- }
44
- this.logger.debug(`GetItem: ${JSON.stringify(params)}`);
45
- const response = await this.docClient.send(new lib_dynamodb_1.GetCommand(params));
46
- this.logger.debug(`GetItem Result: ${JSON.stringify(response)}`);
47
- if (response.Item) {
48
- return response.Item;
49
- }
50
- return undefined;
40
+ try {
41
+ const params = {
42
+ TableName: tableName,
43
+ Key: key,
44
+ ReturnConsumedCapacity: "TOTAL",
45
+ };
46
+ const projection = this.buildProjectionExpression(projectionExpression);
47
+ if (projection) {
48
+ params.ProjectionExpression = projection.projectionExpression;
49
+ params.ExpressionAttributeNames = projection.expressionAttributeNames;
50
+ }
51
+ this.logger.debug(`GetItem: ${JSON.stringify(params)}`);
52
+ const response = await this.docClient.send(new lib_dynamodb_1.GetCommand(params));
53
+ this.logger.debug(`GetItem Result: ${JSON.stringify(response)}`);
54
+ if (response.Item) {
55
+ return response.Item;
56
+ }
57
+ return;
58
+ }
59
+ catch (error) {
60
+ this.logger.error(error.message);
61
+ throw error;
62
+ }
51
63
  }
52
64
  async updateItem(params) {
53
- const itemUpdate = this.createUpdateParams(params);
54
- this.logger.debug(`UpdateItem: ${JSON.stringify(itemUpdate.Update)}`);
55
- const result = await this.docClient.send(new lib_dynamodb_1.UpdateCommand(itemUpdate.Update));
56
- this.logger.debug(`UpdateItem Result: ${JSON.stringify(result)}`);
57
- return true;
65
+ try {
66
+ const itemUpdate = this.createUpdateParams(params);
67
+ this.logger.debug(`UpdateItem: ${JSON.stringify(itemUpdate.Update)}`);
68
+ const result = await this.docClient.send(new lib_dynamodb_1.UpdateCommand(itemUpdate.Update));
69
+ this.logger.debug(`UpdateItem Result: ${JSON.stringify(result)}`);
70
+ return true;
71
+ }
72
+ catch (error) {
73
+ this.logger.error(error.message);
74
+ throw error;
75
+ }
58
76
  }
59
77
  async query(params) {
60
78
  try {
@@ -80,6 +98,18 @@ class DynamoLib {
80
98
  ExpressionAttributeNames: projection?.expressionAttributeNames || {},
81
99
  ExpressionAttributeValues: {}
82
100
  };
101
+ if (params.searchParameters.exclusiveStartKey) {
102
+ parameters.ExclusiveStartKey = params.searchParameters.exclusiveStartKey;
103
+ }
104
+ if (params.searchParameters.limit) {
105
+ parameters.Limit = params.searchParameters.limit;
106
+ }
107
+ if (params.searchParameters.scanIndexForward) {
108
+ parameters.ScanIndexForward = params.searchParameters.scanIndexForward;
109
+ }
110
+ if (params.searchParameters.indexName !== "") {
111
+ parameters.IndexName = params.searchParameters.indexName;
112
+ }
83
113
  if (params.permission && params.permission === "OWNS") {
84
114
  params.searchParameters.parameters.push({
85
115
  name: "creationUser",
@@ -154,19 +184,25 @@ class DynamoLib {
154
184
  }
155
185
  }
156
186
  async saveBatch(table, items) {
157
- const executions = this.createBatch(items);
158
- for (let i = 0; i < executions.length; i++) {
159
- const params = {
160
- RequestItems: {
161
- [table]: executions[i]
162
- },
163
- ReturnConsumedCapacity: "TOTAL",
164
- };
165
- this.logger.debug(`BatchWrite: ${JSON.stringify(params)}`);
166
- const response = await this.docClient.send(new lib_dynamodb_1.BatchWriteCommand(params));
167
- this.logger.debug(`BatchWrite Result: ${JSON.stringify(response)}`);
187
+ try {
188
+ const executions = this.createBatch(items);
189
+ for (let i = 0; i < executions.length; i++) {
190
+ const params = {
191
+ RequestItems: {
192
+ [table]: executions[i]
193
+ },
194
+ ReturnConsumedCapacity: "TOTAL",
195
+ };
196
+ this.logger.debug(`BatchWrite: ${JSON.stringify(params)}`);
197
+ const response = await this.docClient.send(new lib_dynamodb_1.BatchWriteCommand(params));
198
+ this.logger.debug(`BatchWrite Result: ${JSON.stringify(response)}`);
199
+ }
200
+ return true;
201
+ }
202
+ catch (error) {
203
+ this.logger.error(error.message);
204
+ throw error;
168
205
  }
169
- return true;
170
206
  }
171
207
  createBatch(items) {
172
208
  const executions = [];
@@ -181,17 +217,23 @@ class DynamoLib {
181
217
  return executions;
182
218
  }
183
219
  async writeTransactions(items, limit) {
184
- const executions = this.createWriteTransactions(items, limit);
185
- for (let i = 0; i < executions.length; i++) {
186
- const params = {
187
- TransactItems: executions[i],
188
- ReturnConsumedCapacity: "TOTAL",
189
- };
190
- this.logger.debug(`TransactWrite: ${JSON.stringify(params)}`);
191
- const response = await this.docClient.send(new lib_dynamodb_1.TransactWriteCommand(params));
192
- this.logger.debug(`TransactWrite Result: ${JSON.stringify(response)}`);
220
+ try {
221
+ const executions = this.createWriteTransactions(items, limit);
222
+ for (let i = 0; i < executions.length; i++) {
223
+ const params = {
224
+ TransactItems: executions[i],
225
+ ReturnConsumedCapacity: "TOTAL",
226
+ };
227
+ this.logger.debug(`TransactWrite: ${JSON.stringify(params)}`);
228
+ const response = await this.docClient.send(new lib_dynamodb_1.TransactWriteCommand(params));
229
+ this.logger.debug(`TransactWrite Result: ${JSON.stringify(response)}`);
230
+ }
231
+ return true;
232
+ }
233
+ catch (error) {
234
+ this.logger.error(error.message);
235
+ throw error;
193
236
  }
194
- return true;
195
237
  }
196
238
  createWriteTransactions(items, limit) {
197
239
  const executions = [];
@@ -276,48 +318,60 @@ class DynamoLib {
276
318
  updateObject.Update.UpdateExpression += " ";
277
319
  }
278
320
  async getId(table, entity, username, quantity) {
279
- let item = await this.getItem(table, { PK: "COUN", SK: entity }, "order");
280
- if (!item) {
281
- item = {
282
- PK: "COUN",
283
- SK: entity,
284
- entity: "COUN",
285
- order: 0,
286
- creationUser: username,
287
- creationDate: moment_timezone_1.default.tz(new Date(), "America/Bogota").format("YYYY-MM-DD"),
321
+ try {
322
+ let item = await this.getItem(table, { PK: "COUN", SK: entity }, "order");
323
+ if (!item) {
324
+ item = {
325
+ PK: "COUN",
326
+ SK: entity,
327
+ entity: "COUN",
328
+ order: 0,
329
+ creationUser: username,
330
+ creationDate: moment_timezone_1.default.tz(new Date(), "America/Bogota").format("YYYY-MM-DD"),
331
+ };
332
+ await this.putItem(table, item);
333
+ }
334
+ const params = {
335
+ TableName: table,
336
+ Key: { PK: "COUN", SK: entity },
337
+ UpdateExpression: `SET #id = #id + :increment`,
338
+ ExpressionAttributeNames: { "#id": "order" },
339
+ ExpressionAttributeValues: { ":increment": quantity || 1 },
340
+ ReturnValues: "UPDATED_OLD"
288
341
  };
289
- await this.putItem(table, item);
290
- }
291
- const params = {
292
- TableName: table,
293
- Key: { PK: "COUN", SK: entity },
294
- UpdateExpression: `SET #id = #id + :increment`,
295
- ExpressionAttributeNames: { "#id": "order" },
296
- ExpressionAttributeValues: { ":increment": quantity || 1 },
297
- ReturnValues: "UPDATED_OLD"
298
- };
299
- this.logger.debug(`GetId: ${JSON.stringify(params)}`);
300
- const result = await this.docClient.send(new lib_dynamodb_1.UpdateCommand(params));
301
- this.logger.debug(`GetId Result: ${JSON.stringify(result)}`);
302
- if (result.Attributes)
303
- return result.Attributes.order + 1;
304
- return 1;
342
+ this.logger.debug(`GetId: ${JSON.stringify(params)}`);
343
+ const result = await this.docClient.send(new lib_dynamodb_1.UpdateCommand(params));
344
+ this.logger.debug(`GetId Result: ${JSON.stringify(result)}`);
345
+ if (result.Attributes)
346
+ return result.Attributes.order + 1;
347
+ return 1;
348
+ }
349
+ catch (error) {
350
+ this.logger.error(error.message);
351
+ throw error;
352
+ }
305
353
  }
306
354
  async validatePermission(table, entity, action, profile) {
307
- let result;
308
- let searchParameters = {
309
- indexName: "GSI2",
310
- parameters: [
311
- { name: "entity", value: "PERM", operator: "=" },
312
- { name: "relation2", value: `${profile}|${entity}|${action}`, operator: "=" },
313
- ],
314
- };
315
- let permissionQuery = await this.query({ tableName: table, searchParameters });
316
- if (permissionQuery && permissionQuery.length > 0) {
317
- result = permissionQuery[0];
318
- return result.type === "ALL" ? "ALL" : "OWNS";
355
+ try {
356
+ let result;
357
+ let searchParameters = {
358
+ indexName: "GSI2",
359
+ parameters: [
360
+ { name: "entity", value: "PERM", operator: "=" },
361
+ { name: "relation2", value: `${profile}|${entity}|${action}`, operator: "=" },
362
+ ],
363
+ };
364
+ let permissionQuery = await this.query({ tableName: table, searchParameters });
365
+ if (permissionQuery && permissionQuery.length > 0) {
366
+ result = permissionQuery[0];
367
+ return result.type === "ALL" ? "ALL" : "OWNS";
368
+ }
369
+ throw new Error("UNAUTHORIZE_REQUEST");
370
+ }
371
+ catch (error) {
372
+ this.logger.error(error.message);
373
+ throw error;
319
374
  }
320
- throw new Error("UNAUTHORIZE_REQUEST");
321
375
  }
322
376
  }
323
377
  exports.DynamoLib = DynamoLib;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "inlaweb-lib-dynamodb",
3
- "version": "1.0.3",
3
+ "version": "1.0.5",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/types/index.d.ts",
6
6
  "scripts": {
@@ -1,22 +0,0 @@
1
- {
2
- "configurations": [
3
- {
4
- "type": "node",
5
- "request": "launch",
6
- "name": "Launch Program",
7
- "program": "${workspaceFolder}/${input:programPath}",
8
- "preLaunchTask": "build"
9
- }
10
- ],
11
- "inputs": [
12
- {
13
- "type": "pickString",
14
- "id": "programPath",
15
- "description": "Select the entry point for your program",
16
- "options": [
17
- "dist/index.js",
18
- "src/index.ts"
19
- ]
20
- }
21
- ]
22
- }
package/.vscode/task.json DELETED
@@ -1,13 +0,0 @@
1
- {
2
- "tasks": [
3
- {
4
- "type": "shell",
5
- "label": "build",
6
- "command": "npm",
7
- "args": [
8
- "run",
9
- "build"
10
- ]
11
- }
12
- ]
13
- }
@@ -1,172 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <coverage generated="1742303483109" clover="3.2.0">
3
- <project timestamp="1742303483109" name="All files">
4
- <metrics statements="163" coveredstatements="163" conditionals="48" coveredconditionals="48" methods="25" coveredmethods="25" elements="236" coveredelements="236" complexity="0" loc="163" ncloc="163" packages="1" files="1" classes="1"/>
5
- <file name="index.ts" path="/media/jfmedinae/9E32FD7232FD502F/Windows/Proyectos/Commons/inlaweb-lib-dynamodb/src/index.ts">
6
- <metrics statements="163" coveredstatements="163" conditionals="48" coveredconditionals="48" methods="25" coveredmethods="25"/>
7
- <line num="1" count="1" type="stmt"/>
8
- <line num="2" count="1" type="stmt"/>
9
- <line num="3" count="1" type="stmt"/>
10
- <line num="5" count="1" type="stmt"/>
11
- <line num="7" count="1" type="stmt"/>
12
- <line num="8" count="6" type="stmt"/>
13
- <line num="9" count="1" type="stmt"/>
14
- <line num="10" count="1" type="stmt"/>
15
- <line num="13" count="1" type="stmt"/>
16
- <line num="19" count="19" type="stmt"/>
17
- <line num="20" count="19" type="stmt"/>
18
- <line num="21" count="19" type="stmt"/>
19
- <line num="25" count="1" type="stmt"/>
20
- <line num="31" count="1" type="stmt"/>
21
- <line num="32" count="1" type="stmt"/>
22
- <line num="33" count="1" type="stmt"/>
23
- <line num="37" count="2" type="stmt"/>
24
- <line num="42" count="2" type="stmt"/>
25
- <line num="43" count="2" type="cond" truecount="1" falsecount="0"/>
26
- <line num="44" count="1" type="stmt"/>
27
- <line num="45" count="1" type="stmt"/>
28
- <line num="47" count="2" type="stmt"/>
29
- <line num="48" count="2" type="stmt"/>
30
- <line num="49" count="2" type="stmt"/>
31
- <line num="50" count="2" type="cond" truecount="1" falsecount="0"/>
32
- <line num="51" count="1" type="stmt"/>
33
- <line num="53" count="1" type="stmt"/>
34
- <line num="57" count="1" type="stmt"/>
35
- <line num="58" count="1" type="stmt"/>
36
- <line num="59" count="1" type="stmt"/>
37
- <line num="60" count="1" type="stmt"/>
38
- <line num="61" count="1" type="stmt"/>
39
- <line num="65" count="7" type="stmt"/>
40
- <line num="66" count="7" type="stmt"/>
41
- <line num="67" count="7" type="stmt"/>
42
- <line num="68" count="7" type="stmt"/>
43
- <line num="69" count="6" type="stmt"/>
44
- <line num="70" count="6" type="cond" truecount="1" falsecount="0"/>
45
- <line num="71" count="5" type="stmt"/>
46
- <line num="73" count="1" type="stmt"/>
47
- <line num="75" count="1" type="stmt"/>
48
- <line num="76" count="1" type="stmt"/>
49
- <line num="82" count="7" type="stmt"/>
50
- <line num="84" count="7" type="stmt"/>
51
- <line num="91" count="7" type="cond" truecount="3" falsecount="0"/>
52
- <line num="92" count="1" type="stmt"/>
53
- <line num="100" count="7" type="stmt"/>
54
- <line num="101" count="14" type="stmt"/>
55
- <line num="104" count="7" type="stmt"/>
56
- <line num="112" count="14" type="cond" truecount="3" falsecount="0"/>
57
- <line num="114" count="14" type="cond" truecount="4" falsecount="0"/>
58
- <line num="116" count="1" type="stmt"/>
59
- <line num="117" count="1" type="stmt"/>
60
- <line num="119" count="1" type="stmt"/>
61
- <line num="120" count="1" type="stmt"/>
62
- <line num="121" count="1" type="stmt"/>
63
- <line num="123" count="6" type="stmt"/>
64
- <line num="124" count="6" type="stmt"/>
65
- <line num="126" count="6" type="stmt"/>
66
- <line num="127" count="6" type="stmt"/>
67
- <line num="130" count="14" type="stmt"/>
68
- <line num="131" count="14" type="stmt"/>
69
- <line num="139" count="6" type="cond" truecount="2" falsecount="0"/>
70
- <line num="140" count="2" type="stmt"/>
71
- <line num="142" count="6" type="cond" truecount="5" falsecount="0"/>
72
- <line num="144" count="1" type="stmt"/>
73
- <line num="145" count="1" type="stmt"/>
74
- <line num="147" count="1" type="stmt"/>
75
- <line num="148" count="1" type="stmt"/>
76
- <line num="150" count="1" type="stmt"/>
77
- <line num="151" count="1" type="stmt"/>
78
- <line num="153" count="1" type="stmt"/>
79
- <line num="154" count="1" type="stmt"/>
80
- <line num="156" count="2" type="stmt"/>
81
- <line num="157" count="2" type="stmt"/>
82
- <line num="162" count="9" type="cond" truecount="1" falsecount="0"/>
83
- <line num="163" count="8" type="stmt"/>
84
- <line num="165" count="1" type="stmt"/>
85
- <line num="166" count="1" type="cond" truecount="1" falsecount="0"/>
86
- <line num="167" count="1" type="stmt"/>
87
- <line num="168" count="1" type="stmt"/>
88
- <line num="169" count="1" type="stmt"/>
89
- <line num="170" count="2" type="stmt"/>
90
- <line num="171" count="2" type="stmt"/>
91
- <line num="173" count="1" type="stmt"/>
92
- <line num="174" count="1" type="stmt"/>
93
- <line num="179" count="1" type="stmt"/>
94
- <line num="180" count="1" type="stmt"/>
95
- <line num="181" count="1" type="stmt"/>
96
- <line num="187" count="1" type="stmt"/>
97
- <line num="188" count="1" type="stmt"/>
98
- <line num="189" count="1" type="stmt"/>
99
- <line num="191" count="1" type="stmt"/>
100
- <line num="195" count="1" type="stmt"/>
101
- <line num="196" count="1" type="stmt"/>
102
- <line num="197" count="1" type="stmt"/>
103
- <line num="198" count="1" type="stmt"/>
104
- <line num="200" count="1" type="stmt"/>
105
- <line num="201" count="2" type="stmt"/>
106
- <line num="202" count="2" type="stmt"/>
107
- <line num="204" count="1" type="stmt"/>
108
- <line num="208" count="1" type="stmt"/>
109
- <line num="209" count="1" type="stmt"/>
110
- <line num="210" count="1" type="stmt"/>
111
- <line num="214" count="1" type="stmt"/>
112
- <line num="215" count="1" type="stmt"/>
113
- <line num="216" count="1" type="stmt"/>
114
- <line num="218" count="1" type="stmt"/>
115
- <line num="222" count="1" type="stmt"/>
116
- <line num="223" count="1" type="stmt"/>
117
- <line num="224" count="1" type="stmt"/>
118
- <line num="225" count="1" type="stmt"/>
119
- <line num="227" count="1" type="stmt"/>
120
- <line num="228" count="2" type="stmt"/>
121
- <line num="229" count="2" type="stmt"/>
122
- <line num="231" count="1" type="stmt"/>
123
- <line num="235" count="2" type="stmt"/>
124
- <line num="237" count="2" type="stmt"/>
125
- <line num="238" count="2" type="stmt"/>
126
- <line num="239" count="2" type="cond" truecount="1" falsecount="0"/>
127
- <line num="240" count="2" type="cond" truecount="1" falsecount="0"/>
128
- <line num="242" count="2" type="stmt"/>
129
- <line num="253" count="2" type="cond" truecount="3" falsecount="0"/>
130
- <line num="254" count="2" type="stmt"/>
131
- <line num="257" count="2" type="cond" truecount="3" falsecount="0"/>
132
- <line num="258" count="1" type="stmt"/>
133
- <line num="261" count="2" type="cond" truecount="3" falsecount="0"/>
134
- <line num="262" count="1" type="stmt"/>
135
- <line num="265" count="2" type="stmt"/>
136
- <line num="266" count="2" type="stmt"/>
137
- <line num="271" count="3" type="stmt"/>
138
- <line num="273" count="3" type="stmt"/>
139
- <line num="275" count="3" type="stmt"/>
140
- <line num="276" count="7" type="cond" truecount="4" falsecount="0"/>
141
- <line num="277" count="7" type="stmt"/>
142
- <line num="278" count="7" type="stmt"/>
143
- <line num="279" count="7" type="stmt"/>
144
- <line num="283" count="3" type="stmt"/>
145
- <line num="285" count="3" type="stmt"/>
146
- <line num="289" count="1" type="stmt"/>
147
- <line num="291" count="1" type="stmt"/>
148
- <line num="293" count="1" type="stmt"/>
149
- <line num="295" count="1" type="stmt"/>
150
- <line num="296" count="1" type="stmt"/>
151
- <line num="297" count="1" type="stmt"/>
152
- <line num="300" count="1" type="stmt"/>
153
- <line num="302" count="1" type="stmt"/>
154
- <line num="306" count="2" type="stmt"/>
155
- <line num="307" count="2" type="cond" truecount="1" falsecount="0"/>
156
- <line num="308" count="2" type="stmt"/>
157
- <line num="316" count="2" type="stmt"/>
158
- <line num="318" count="2" type="stmt"/>
159
- <line num="326" count="2" type="stmt"/>
160
- <line num="327" count="2" type="stmt"/>
161
- <line num="328" count="2" type="stmt"/>
162
- <line num="329" count="2" type="cond" truecount="1" falsecount="0"/>
163
- <line num="330" count="1" type="stmt"/>
164
- <line num="336" count="3" type="stmt"/>
165
- <line num="343" count="3" type="stmt"/>
166
- <line num="344" count="3" type="cond" truecount="3" falsecount="0"/>
167
- <line num="345" count="2" type="stmt"/>
168
- <line num="346" count="2" type="cond" truecount="2" falsecount="0"/>
169
- <line num="348" count="1" type="stmt"/>
170
- </file>
171
- </project>
172
- </coverage>
@@ -1,2 +0,0 @@
1
- {"/media/jfmedinae/9E32FD7232FD502F/Windows/Proyectos/Commons/inlaweb-lib-dynamodb/src/index.ts": {"path":"/media/jfmedinae/9E32FD7232FD502F/Windows/Proyectos/Commons/inlaweb-lib-dynamodb/src/index.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":58}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":157}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":54}},"3":{"start":{"line":5,"column":0},"end":{"line":5,"column":37}},"4":{"start":{"line":7,"column":33},"end":{"line":11,"column":2}},"5":{"start":{"line":8,"column":31},"end":{"line":8,"column":61}},"6":{"start":{"line":9,"column":31},"end":{"line":9,"column":59}},"7":{"start":{"line":10,"column":34},"end":{"line":10,"column":49}},"8":{"start":{"line":19,"column":8},"end":{"line":19,"column":45}},"9":{"start":{"line":20,"column":8},"end":{"line":20,"column":66}},"10":{"start":{"line":21,"column":8},"end":{"line":21,"column":35}},"11":{"start":{"line":25,"column":34},"end":{"line":30,"column":10}},"12":{"start":{"line":31,"column":8},"end":{"line":31,"column":64}},"13":{"start":{"line":32,"column":24},"end":{"line":32,"column":73}},"14":{"start":{"line":33,"column":8},"end":{"line":33,"column":71}},"15":{"start":{"line":37,"column":34},"end":{"line":41,"column":10}},"16":{"start":{"line":42,"column":27},"end":{"line":42,"column":79}},"17":{"start":{"line":43,"column":8},"end":{"line":46,"column":9}},"18":{"start":{"line":44,"column":12},"end":{"line":44,"column":74}},"19":{"start":{"line":45,"column":12},"end":{"line":45,"column":82}},"20":{"start":{"line":47,"column":8},"end":{"line":47,"column":64}},"21":{"start":{"line":48,"column":25},"end":{"line":48,"column":74}},"22":{"start":{"line":49,"column":8},"end":{"line":49,"column":73}},"23":{"start":{"line":50,"column":8},"end":{"line":52,"column":9}},"24":{"start":{"line":51,"column":12},"end":{"line":51,"column":38}},"25":{"start":{"line":53,"column":8},"end":{"line":53,"column":25}},"26":{"start":{"line":57,"column":27},"end":{"line":57,"column":58}},"27":{"start":{"line":58,"column":8},"end":{"line":58,"column":78}},"28":{"start":{"line":59,"column":23},"end":{"line":59,"column":86}},"29":{"start":{"line":60,"column":8},"end":{"line":60,"column":74}},"30":{"start":{"line":61,"column":8},"end":{"line":61,"column":20}},"31":{"start":{"line":65,"column":8},"end":{"line":77,"column":9}},"32":{"start":{"line":66,"column":44},"end":{"line":66,"column":73}},"33":{"start":{"line":67,"column":12},"end":{"line":67,"column":70}},"34":{"start":{"line":68,"column":29},"end":{"line":68,"column":84}},"35":{"start":{"line":69,"column":12},"end":{"line":69,"column":75}},"36":{"start":{"line":70,"column":12},"end":{"line":72,"column":13}},"37":{"start":{"line":71,"column":16},"end":{"line":71,"column":45}},"38":{"start":{"line":73,"column":12},"end":{"line":73,"column":19}},"39":{"start":{"line":75,"column":12},"end":{"line":75,"column":56}},"40":{"start":{"line":76,"column":12},"end":{"line":76,"column":24}},"41":{"start":{"line":82,"column":27},"end":{"line":82,"column":103}},"42":{"start":{"line":84,"column":40},"end":{"line":89,"column":10}},"43":{"start":{"line":91,"column":8},"end":{"line":98,"column":9}},"44":{"start":{"line":92,"column":12},"end":{"line":97,"column":15}},"45":{"start":{"line":100,"column":8},"end":{"line":102,"column":11}},"46":{"start":{"line":101,"column":12},"end":{"line":101,"column":70}},"47":{"start":{"line":104,"column":8},"end":{"line":104,"column":26}},"48":{"start":{"line":112,"column":8},"end":{"line":112,"column":107}},"49":{"start":{"line":112,"column":66},"end":{"line":112,"column":107}},"50":{"start":{"line":114,"column":8},"end":{"line":128,"column":9}},"51":{"start":{"line":116,"column":16},"end":{"line":116,"column":109}},"52":{"start":{"line":117,"column":16},"end":{"line":117,"column":22}},"53":{"start":{"line":119,"column":16},"end":{"line":119,"column":127}},"54":{"start":{"line":120,"column":16},"end":{"line":120,"column":93}},"55":{"start":{"line":121,"column":16},"end":{"line":121,"column":22}},"56":{"start":{"line":123,"column":16},"end":{"line":123,"column":75}},"57":{"start":{"line":124,"column":16},"end":{"line":124,"column":22}},"58":{"start":{"line":126,"column":16},"end":{"line":126,"column":107}},"59":{"start":{"line":127,"column":16},"end":{"line":127,"column":22}},"60":{"start":{"line":130,"column":8},"end":{"line":130,"column":79}},"61":{"start":{"line":131,"column":8},"end":{"line":131,"column":83}},"62":{"start":{"line":139,"column":8},"end":{"line":140,"column":42}},"63":{"start":{"line":139,"column":37},"end":{"line":139,"column":72}},"64":{"start":{"line":140,"column":13},"end":{"line":140,"column":42}},"65":{"start":{"line":142,"column":8},"end":{"line":158,"column":9}},"66":{"start":{"line":144,"column":16},"end":{"line":144,"column":85}},"67":{"start":{"line":145,"column":16},"end":{"line":145,"column":22}},"68":{"start":{"line":147,"column":16},"end":{"line":147,"column":109}},"69":{"start":{"line":148,"column":16},"end":{"line":148,"column":22}},"70":{"start":{"line":150,"column":16},"end":{"line":150,"column":81}},"71":{"start":{"line":151,"column":16},"end":{"line":151,"column":22}},"72":{"start":{"line":153,"column":16},"end":{"line":153,"column":77}},"73":{"start":{"line":154,"column":16},"end":{"line":154,"column":22}},"74":{"start":{"line":156,"column":16},"end":{"line":156,"column":107}},"75":{"start":{"line":157,"column":16},"end":{"line":157,"column":22}},"76":{"start":{"line":162,"column":8},"end":{"line":164,"column":9}},"77":{"start":{"line":163,"column":12},"end":{"line":163,"column":29}},"78":{"start":{"line":165,"column":23},"end":{"line":165,"column":54}},"79":{"start":{"line":166,"column":8},"end":{"line":175,"column":9}},"80":{"start":{"line":167,"column":39},"end":{"line":167,"column":41}},"81":{"start":{"line":168,"column":55},"end":{"line":168,"column":57}},"82":{"start":{"line":169,"column":12},"end":{"line":172,"column":15}},"83":{"start":{"line":170,"column":16},"end":{"line":170,"column":53}},"84":{"start":{"line":171,"column":16},"end":{"line":171,"column":62}},"85":{"start":{"line":173,"column":12},"end":{"line":173,"column":69}},"86":{"start":{"line":174,"column":12},"end":{"line":174,"column":70}},"87":{"start":{"line":179,"column":27},"end":{"line":179,"column":50}},"88":{"start":{"line":180,"column":8},"end":{"line":190,"column":9}},"89":{"start":{"line":180,"column":21},"end":{"line":180,"column":22}},"90":{"start":{"line":181,"column":27},"end":{"line":186,"column":14}},"91":{"start":{"line":187,"column":12},"end":{"line":187,"column":71}},"92":{"start":{"line":188,"column":29},"end":{"line":188,"column":85}},"93":{"start":{"line":189,"column":12},"end":{"line":189,"column":80}},"94":{"start":{"line":191,"column":8},"end":{"line":191,"column":20}},"95":{"start":{"line":195,"column":39},"end":{"line":195,"column":41}},"96":{"start":{"line":196,"column":40},"end":{"line":196,"column":68}},"97":{"start":{"line":197,"column":8},"end":{"line":199,"column":9}},"98":{"start":{"line":197,"column":21},"end":{"line":197,"column":22}},"99":{"start":{"line":198,"column":12},"end":{"line":198,"column":31}},"100":{"start":{"line":200,"column":8},"end":{"line":203,"column":11}},"101":{"start":{"line":201,"column":33},"end":{"line":201,"column":60}},"102":{"start":{"line":202,"column":12},"end":{"line":202,"column":78}},"103":{"start":{"line":204,"column":8},"end":{"line":204,"column":26}},"104":{"start":{"line":208,"column":27},"end":{"line":208,"column":69}},"105":{"start":{"line":209,"column":8},"end":{"line":217,"column":9}},"106":{"start":{"line":209,"column":21},"end":{"line":209,"column":22}},"107":{"start":{"line":210,"column":27},"end":{"line":213,"column":14}},"108":{"start":{"line":214,"column":12},"end":{"line":214,"column":74}},"109":{"start":{"line":215,"column":29},"end":{"line":215,"column":88}},"110":{"start":{"line":216,"column":12},"end":{"line":216,"column":83}},"111":{"start":{"line":218,"column":8},"end":{"line":218,"column":20}},"112":{"start":{"line":222,"column":41},"end":{"line":222,"column":43}},"113":{"start":{"line":223,"column":40},"end":{"line":223,"column":71}},"114":{"start":{"line":224,"column":8},"end":{"line":226,"column":9}},"115":{"start":{"line":224,"column":21},"end":{"line":224,"column":22}},"116":{"start":{"line":225,"column":12},"end":{"line":225,"column":31}},"117":{"start":{"line":227,"column":8},"end":{"line":230,"column":11}},"118":{"start":{"line":228,"column":33},"end":{"line":228,"column":63}},"119":{"start":{"line":229,"column":12},"end":{"line":229,"column":71}},"120":{"start":{"line":231,"column":8},"end":{"line":231,"column":26}},"121":{"start":{"line":235,"column":98},"end":{"line":235,"column":104}},"122":{"start":{"line":237,"column":8},"end":{"line":237,"column":35}},"123":{"start":{"line":238,"column":8},"end":{"line":238,"column":87}},"124":{"start":{"line":239,"column":8},"end":{"line":239,"column":84}},"125":{"start":{"line":239,"column":51},"end":{"line":239,"column":84}},"126":{"start":{"line":240,"column":8},"end":{"line":240,"column":84}},"127":{"start":{"line":240,"column":51},"end":{"line":240,"column":84}},"128":{"start":{"line":242,"column":25},"end":{"line":251,"column":10}},"129":{"start":{"line":253,"column":8},"end":{"line":255,"column":9}},"130":{"start":{"line":254,"column":12},"end":{"line":254,"column":80}},"131":{"start":{"line":257,"column":8},"end":{"line":259,"column":9}},"132":{"start":{"line":258,"column":12},"end":{"line":258,"column":80}},"133":{"start":{"line":261,"column":8},"end":{"line":263,"column":9}},"134":{"start":{"line":262,"column":12},"end":{"line":262,"column":76}},"135":{"start":{"line":265,"column":8},"end":{"line":265,"column":93}},"136":{"start":{"line":266,"column":8},"end":{"line":266,"column":26}},"137":{"start":{"line":271,"column":8},"end":{"line":271,"column":64}},"138":{"start":{"line":273,"column":32},"end":{"line":273,"column":67}},"139":{"start":{"line":275,"column":8},"end":{"line":281,"column":9}},"140":{"start":{"line":276,"column":12},"end":{"line":280,"column":13}},"141":{"start":{"line":277,"column":16},"end":{"line":277,"column":84}},"142":{"start":{"line":278,"column":16},"end":{"line":278,"column":88}},"143":{"start":{"line":279,"column":16},"end":{"line":279,"column":95}},"144":{"start":{"line":283,"column":8},"end":{"line":283,"column":97}},"145":{"start":{"line":285,"column":8},"end":{"line":285,"column":52}},"146":{"start":{"line":289,"column":35},"end":{"line":289,"column":43}},"147":{"start":{"line":291,"column":8},"end":{"line":291,"column":64}},"148":{"start":{"line":293,"column":32},"end":{"line":293,"column":67}},"149":{"start":{"line":295,"column":8},"end":{"line":298,"column":9}},"150":{"start":{"line":296,"column":12},"end":{"line":296,"column":80}},"151":{"start":{"line":297,"column":12},"end":{"line":297,"column":84}},"152":{"start":{"line":300,"column":8},"end":{"line":300,"column":97}},"153":{"start":{"line":302,"column":8},"end":{"line":302,"column":52}},"154":{"start":{"line":306,"column":19},"end":{"line":306,"column":89}},"155":{"start":{"line":307,"column":8},"end":{"line":317,"column":9}},"156":{"start":{"line":308,"column":12},"end":{"line":315,"column":14}},"157":{"start":{"line":316,"column":12},"end":{"line":316,"column":44}},"158":{"start":{"line":318,"column":37},"end":{"line":325,"column":10}},"159":{"start":{"line":326,"column":8},"end":{"line":326,"column":62}},"160":{"start":{"line":327,"column":23},"end":{"line":327,"column":75}},"161":{"start":{"line":328,"column":8},"end":{"line":328,"column":69}},"162":{"start":{"line":329,"column":8},"end":{"line":329,"column":65}},"163":{"start":{"line":329,"column":30},"end":{"line":329,"column":65}},"164":{"start":{"line":330,"column":8},"end":{"line":330,"column":17}},"165":{"start":{"line":336,"column":31},"end":{"line":342,"column":10}},"166":{"start":{"line":343,"column":30},"end":{"line":343,"column":94}},"167":{"start":{"line":344,"column":8},"end":{"line":347,"column":9}},"168":{"start":{"line":345,"column":12},"end":{"line":345,"column":40}},"169":{"start":{"line":346,"column":12},"end":{"line":346,"column":58}},"170":{"start":{"line":348,"column":8},"end":{"line":348,"column":47}},"171":{"start":{"line":13,"column":0},"end":{"line":13,"column":13}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":8,"column":9},"end":{"line":8,"column":10}},"loc":{"start":{"line":8,"column":31},"end":{"line":8,"column":61}}},"1":{"name":"(anonymous_2)","decl":{"start":{"line":9,"column":9},"end":{"line":9,"column":10}},"loc":{"start":{"line":9,"column":31},"end":{"line":9,"column":59}}},"2":{"name":"(anonymous_3)","decl":{"start":{"line":10,"column":12},"end":{"line":10,"column":13}},"loc":{"start":{"line":10,"column":34},"end":{"line":10,"column":49}}},"3":{"name":"(anonymous_4)","decl":{"start":{"line":18,"column":4},"end":{"line":18,"column":null}},"loc":{"start":{"line":18,"column":4},"end":{"line":22,"column":5}}},"4":{"name":"(anonymous_5)","decl":{"start":{"line":24,"column":4},"end":{"line":24,"column":9}},"loc":{"start":{"line":24,"column":51},"end":{"line":34,"column":5}}},"5":{"name":"(anonymous_6)","decl":{"start":{"line":36,"column":4},"end":{"line":36,"column":9}},"loc":{"start":{"line":36,"column":84},"end":{"line":54,"column":5}}},"6":{"name":"(anonymous_7)","decl":{"start":{"line":56,"column":4},"end":{"line":56,"column":9}},"loc":{"start":{"line":56,"column":40},"end":{"line":62,"column":5}}},"7":{"name":"(anonymous_8)","decl":{"start":{"line":64,"column":4},"end":{"line":64,"column":9}},"loc":{"start":{"line":64,"column":122},"end":{"line":79,"column":5}}},"8":{"name":"(anonymous_9)","decl":{"start":{"line":81,"column":12},"end":{"line":81,"column":28}},"loc":{"start":{"line":81,"column":132},"end":{"line":105,"column":5}}},"9":{"name":"(anonymous_10)","decl":{"start":{"line":100,"column":51},"end":{"line":100,"column":52}},"loc":{"start":{"line":100,"column":78},"end":{"line":102,"column":9}}},"10":{"name":"(anonymous_11)","decl":{"start":{"line":107,"column":12},"end":{"line":107,"column":28}},"loc":{"start":{"line":110,"column":27},"end":{"line":132,"column":5}}},"11":{"name":"(anonymous_12)","decl":{"start":{"line":134,"column":12},"end":{"line":134,"column":33}},"loc":{"start":{"line":137,"column":27},"end":{"line":159,"column":5}}},"12":{"name":"(anonymous_13)","decl":{"start":{"line":161,"column":12},"end":{"line":161,"column":37}},"loc":{"start":{"line":161,"column":78},"end":{"line":176,"column":5}}},"13":{"name":"(anonymous_14)","decl":{"start":{"line":169,"column":27},"end":{"line":169,"column":28}},"loc":{"start":{"line":169,"column":37},"end":{"line":172,"column":13}}},"14":{"name":"(anonymous_15)","decl":{"start":{"line":178,"column":4},"end":{"line":178,"column":9}},"loc":{"start":{"line":178,"column":52},"end":{"line":192,"column":5}}},"15":{"name":"(anonymous_16)","decl":{"start":{"line":194,"column":12},"end":{"line":194,"column":23}},"loc":{"start":{"line":194,"column":41},"end":{"line":205,"column":5}}},"16":{"name":"(anonymous_17)","decl":{"start":{"line":200,"column":22},"end":{"line":200,"column":23}},"loc":{"start":{"line":200,"column":38},"end":{"line":203,"column":9}}},"17":{"name":"(anonymous_18)","decl":{"start":{"line":207,"column":4},"end":{"line":207,"column":9}},"loc":{"start":{"line":207,"column":60},"end":{"line":219,"column":5}}},"18":{"name":"(anonymous_19)","decl":{"start":{"line":221,"column":4},"end":{"line":221,"column":27}},"loc":{"start":{"line":221,"column":60},"end":{"line":232,"column":5}}},"19":{"name":"(anonymous_20)","decl":{"start":{"line":227,"column":22},"end":{"line":227,"column":23}},"loc":{"start":{"line":227,"column":38},"end":{"line":230,"column":9}}},"20":{"name":"(anonymous_21)","decl":{"start":{"line":234,"column":4},"end":{"line":234,"column":22}},"loc":{"start":{"line":234,"column":42},"end":{"line":267,"column":5}}},"21":{"name":"(anonymous_22)","decl":{"start":{"line":269,"column":12},"end":{"line":269,"column":34}},"loc":{"start":{"line":269,"column":116},"end":{"line":286,"column":5}}},"22":{"name":"(anonymous_23)","decl":{"start":{"line":288,"column":12},"end":{"line":288,"column":40}},"loc":{"start":{"line":288,"column":84},"end":{"line":303,"column":5}}},"23":{"name":"(anonymous_24)","decl":{"start":{"line":305,"column":4},"end":{"line":305,"column":9}},"loc":{"start":{"line":305,"column":82},"end":{"line":331,"column":5}}},"24":{"name":"(anonymous_25)","decl":{"start":{"line":333,"column":4},"end":{"line":333,"column":9}},"loc":{"start":{"line":333,"column":91},"end":{"line":349,"column":5}}}},"branchMap":{"0":{"loc":{"start":{"line":43,"column":8},"end":{"line":46,"column":9}},"type":"if","locations":[{"start":{"line":43,"column":8},"end":{"line":46,"column":9}}]},"1":{"loc":{"start":{"line":50,"column":8},"end":{"line":52,"column":9}},"type":"if","locations":[{"start":{"line":50,"column":8},"end":{"line":52,"column":9}}]},"2":{"loc":{"start":{"line":70,"column":12},"end":{"line":72,"column":13}},"type":"if","locations":[{"start":{"line":70,"column":12},"end":{"line":72,"column":13}}]},"3":{"loc":{"start":{"line":87,"column":38},"end":{"line":87,"column":80}},"type":"binary-expr","locations":[{"start":{"line":87,"column":38},"end":{"line":87,"column":74}},{"start":{"line":87,"column":78},"end":{"line":87,"column":80}}]},"4":{"loc":{"start":{"line":91,"column":8},"end":{"line":98,"column":9}},"type":"if","locations":[{"start":{"line":91,"column":8},"end":{"line":98,"column":9}}]},"5":{"loc":{"start":{"line":91,"column":12},"end":{"line":91,"column":61}},"type":"binary-expr","locations":[{"start":{"line":91,"column":12},"end":{"line":91,"column":29}},{"start":{"line":91,"column":33},"end":{"line":91,"column":61}}]},"6":{"loc":{"start":{"line":112,"column":8},"end":{"line":112,"column":107}},"type":"if","locations":[{"start":{"line":112,"column":8},"end":{"line":112,"column":107}}]},"7":{"loc":{"start":{"line":112,"column":12},"end":{"line":112,"column":64}},"type":"binary-expr","locations":[{"start":{"line":112,"column":12},"end":{"line":112,"column":23}},{"start":{"line":112,"column":27},"end":{"line":112,"column":64}}]},"8":{"loc":{"start":{"line":114,"column":8},"end":{"line":128,"column":9}},"type":"switch","locations":[{"start":{"line":115,"column":12},"end":{"line":117,"column":22}},{"start":{"line":118,"column":12},"end":{"line":121,"column":22}},{"start":{"line":122,"column":12},"end":{"line":124,"column":22}},{"start":{"line":125,"column":12},"end":{"line":127,"column":22}}]},"9":{"loc":{"start":{"line":139,"column":8},"end":{"line":140,"column":42}},"type":"if","locations":[{"start":{"line":139,"column":8},"end":{"line":140,"column":42}},{"start":{"line":140,"column":13},"end":{"line":140,"column":42}}]},"10":{"loc":{"start":{"line":142,"column":8},"end":{"line":158,"column":9}},"type":"switch","locations":[{"start":{"line":143,"column":12},"end":{"line":145,"column":22}},{"start":{"line":146,"column":12},"end":{"line":148,"column":22}},{"start":{"line":149,"column":12},"end":{"line":151,"column":22}},{"start":{"line":152,"column":12},"end":{"line":154,"column":22}},{"start":{"line":155,"column":12},"end":{"line":157,"column":22}}]},"11":{"loc":{"start":{"line":162,"column":8},"end":{"line":164,"column":9}},"type":"if","locations":[{"start":{"line":162,"column":8},"end":{"line":164,"column":9}}]},"12":{"loc":{"start":{"line":166,"column":8},"end":{"line":175,"column":9}},"type":"if","locations":[{"start":{"line":166,"column":8},"end":{"line":175,"column":9}}]},"13":{"loc":{"start":{"line":239,"column":8},"end":{"line":239,"column":84}},"type":"if","locations":[{"start":{"line":239,"column":8},"end":{"line":239,"column":84}}]},"14":{"loc":{"start":{"line":240,"column":8},"end":{"line":240,"column":84}},"type":"if","locations":[{"start":{"line":240,"column":8},"end":{"line":240,"column":84}}]},"15":{"loc":{"start":{"line":253,"column":8},"end":{"line":255,"column":9}},"type":"if","locations":[{"start":{"line":253,"column":8},"end":{"line":255,"column":9}}]},"16":{"loc":{"start":{"line":253,"column":12},"end":{"line":253,"column":64}},"type":"binary-expr","locations":[{"start":{"line":253,"column":12},"end":{"line":253,"column":40}},{"start":{"line":253,"column":44},"end":{"line":253,"column":64}}]},"17":{"loc":{"start":{"line":257,"column":8},"end":{"line":259,"column":9}},"type":"if","locations":[{"start":{"line":257,"column":8},"end":{"line":259,"column":9}}]},"18":{"loc":{"start":{"line":257,"column":12},"end":{"line":257,"column":64}},"type":"binary-expr","locations":[{"start":{"line":257,"column":12},"end":{"line":257,"column":40}},{"start":{"line":257,"column":44},"end":{"line":257,"column":64}}]},"19":{"loc":{"start":{"line":261,"column":8},"end":{"line":263,"column":9}},"type":"if","locations":[{"start":{"line":261,"column":8},"end":{"line":263,"column":9}}]},"20":{"loc":{"start":{"line":261,"column":12},"end":{"line":261,"column":70}},"type":"binary-expr","locations":[{"start":{"line":261,"column":12},"end":{"line":261,"column":43}},{"start":{"line":261,"column":47},"end":{"line":261,"column":70}}]},"21":{"loc":{"start":{"line":276,"column":12},"end":{"line":280,"column":13}},"type":"if","locations":[{"start":{"line":276,"column":12},"end":{"line":280,"column":13}}]},"22":{"loc":{"start":{"line":276,"column":16},"end":{"line":276,"column":107}},"type":"binary-expr","locations":[{"start":{"line":276,"column":16},"end":{"line":276,"column":51}},{"start":{"line":276,"column":55},"end":{"line":276,"column":89}},{"start":{"line":276,"column":93},"end":{"line":276,"column":107}}]},"23":{"loc":{"start":{"line":307,"column":8},"end":{"line":317,"column":9}},"type":"if","locations":[{"start":{"line":307,"column":8},"end":{"line":317,"column":9}}]},"24":{"loc":{"start":{"line":323,"column":54},"end":{"line":323,"column":67}},"type":"binary-expr","locations":[{"start":{"line":323,"column":54},"end":{"line":323,"column":62}},{"start":{"line":323,"column":66},"end":{"line":323,"column":67}}]},"25":{"loc":{"start":{"line":329,"column":8},"end":{"line":329,"column":65}},"type":"if","locations":[{"start":{"line":329,"column":8},"end":{"line":329,"column":65}}]},"26":{"loc":{"start":{"line":344,"column":8},"end":{"line":347,"column":9}},"type":"if","locations":[{"start":{"line":344,"column":8},"end":{"line":347,"column":9}}]},"27":{"loc":{"start":{"line":344,"column":12},"end":{"line":344,"column":57}},"type":"binary-expr","locations":[{"start":{"line":344,"column":12},"end":{"line":344,"column":27}},{"start":{"line":344,"column":31},"end":{"line":344,"column":57}}]},"28":{"loc":{"start":{"line":346,"column":19},"end":{"line":346,"column":57}},"type":"cond-expr","locations":[{"start":{"line":346,"column":43},"end":{"line":346,"column":48}},{"start":{"line":346,"column":51},"end":{"line":346,"column":57}}]}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":6,"6":1,"7":1,"8":19,"9":19,"10":19,"11":1,"12":1,"13":1,"14":1,"15":2,"16":2,"17":2,"18":1,"19":1,"20":2,"21":2,"22":2,"23":2,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":7,"32":7,"33":7,"34":7,"35":6,"36":6,"37":5,"38":1,"39":1,"40":1,"41":7,"42":7,"43":7,"44":1,"45":7,"46":14,"47":7,"48":14,"49":1,"50":14,"51":1,"52":1,"53":1,"54":1,"55":1,"56":6,"57":6,"58":6,"59":6,"60":14,"61":14,"62":6,"63":4,"64":2,"65":6,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":2,"75":2,"76":9,"77":8,"78":1,"79":1,"80":1,"81":1,"82":1,"83":2,"84":2,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"100":1,"101":2,"102":2,"103":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":2,"119":2,"120":1,"121":2,"122":2,"123":2,"124":2,"125":2,"126":2,"127":2,"128":2,"129":2,"130":2,"131":2,"132":1,"133":2,"134":1,"135":2,"136":2,"137":3,"138":3,"139":3,"140":7,"141":7,"142":7,"143":7,"144":3,"145":3,"146":1,"147":1,"148":1,"149":1,"150":1,"151":1,"152":1,"153":1,"154":2,"155":2,"156":2,"157":2,"158":2,"159":2,"160":2,"161":2,"162":2,"163":1,"164":1,"165":3,"166":3,"167":3,"168":2,"169":2,"170":1,"171":1},"f":{"0":6,"1":1,"2":1,"3":19,"4":1,"5":2,"6":1,"7":7,"8":7,"9":14,"10":14,"11":6,"12":9,"13":2,"14":1,"15":1,"16":2,"17":1,"18":1,"19":2,"20":2,"21":3,"22":1,"23":2,"24":3},"b":{"0":[1],"1":[1],"2":[5],"3":[7,7],"4":[1],"5":[7,1],"6":[1],"7":[14,7],"8":[1,1,6,6],"9":[4,2],"10":[1,1,1,1,2],"11":[8],"12":[1],"13":[2],"14":[2],"15":[2],"16":[2,2],"17":[1],"18":[2,1],"19":[1],"20":[2,1],"21":[7],"22":[7,7,7],"23":[2],"24":[2,2],"25":[1],"26":[2],"27":[3,3],"28":[1,1]}}
2
- }