mirror of https://github.com/crytic/slither
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
680 lines
26 KiB
680 lines
26 KiB
{
|
|
"success": true,
|
|
"error": null,
|
|
"results": {
|
|
"detectors": [
|
|
{
|
|
"check": "shadowing-local",
|
|
"impact": "Low",
|
|
"confidence": "High",
|
|
"description": "FurtherExtendedContract.shadowingParent.x (local variable @ tests/shadowing_local_variable.sol#25) shadows:\n\t- FurtherExtendedContract.x (state variable @ tests/shadowing_local_variable.sol#17)\n\t- ExtendedContract.x (state variable @ tests/shadowing_local_variable.sol#9)\n\t- BaseContract.x (state variable @ tests/shadowing_local_variable.sol#4)\n",
|
|
"elements": [
|
|
{
|
|
"type": "variable",
|
|
"name": "x",
|
|
"source_mapping": {
|
|
"start": 376,
|
|
"length": 6,
|
|
"filename_used": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
|
|
"filename_relative": "tests/shadowing_local_variable.sol",
|
|
"filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
|
|
"filename_short": "tests/shadowing_local_variable.sol",
|
|
"lines": [
|
|
25
|
|
],
|
|
"starting_column": 30,
|
|
"ending_column": 36
|
|
},
|
|
"type_specific_fields": {
|
|
"parent": {
|
|
"type": "function",
|
|
"name": "shadowingParent",
|
|
"source_mapping": {
|
|
"start": 351,
|
|
"length": 79,
|
|
"filename_used": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
|
|
"filename_relative": "tests/shadowing_local_variable.sol",
|
|
"filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
|
|
"filename_short": "tests/shadowing_local_variable.sol",
|
|
"lines": [
|
|
25
|
|
],
|
|
"starting_column": 5,
|
|
"ending_column": 84
|
|
},
|
|
"type_specific_fields": {
|
|
"parent": {
|
|
"type": "contract",
|
|
"name": "FurtherExtendedContract",
|
|
"source_mapping": {
|
|
"start": 197,
|
|
"length": 235,
|
|
"filename_used": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
|
|
"filename_relative": "tests/shadowing_local_variable.sol",
|
|
"filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
|
|
"filename_short": "tests/shadowing_local_variable.sol",
|
|
"lines": [
|
|
16,
|
|
17,
|
|
18,
|
|
19,
|
|
20,
|
|
21,
|
|
22,
|
|
23,
|
|
24,
|
|
25,
|
|
26
|
|
],
|
|
"starting_column": 1,
|
|
"ending_column": 2
|
|
}
|
|
},
|
|
"signature": "shadowingParent(uint256)"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "variable",
|
|
"name": "x",
|
|
"source_mapping": {
|
|
"start": 256,
|
|
"length": 10,
|
|
"filename_used": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
|
|
"filename_relative": "tests/shadowing_local_variable.sol",
|
|
"filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
|
|
"filename_short": "tests/shadowing_local_variable.sol",
|
|
"lines": [
|
|
17
|
|
],
|
|
"starting_column": 5,
|
|
"ending_column": 15
|
|
},
|
|
"type_specific_fields": {
|
|
"parent": {
|
|
"type": "contract",
|
|
"name": "FurtherExtendedContract",
|
|
"source_mapping": {
|
|
"start": 197,
|
|
"length": 235,
|
|
"filename_used": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
|
|
"filename_relative": "tests/shadowing_local_variable.sol",
|
|
"filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
|
|
"filename_short": "tests/shadowing_local_variable.sol",
|
|
"lines": [
|
|
16,
|
|
17,
|
|
18,
|
|
19,
|
|
20,
|
|
21,
|
|
22,
|
|
23,
|
|
24,
|
|
25,
|
|
26
|
|
],
|
|
"starting_column": 1,
|
|
"ending_column": 2
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "variable",
|
|
"name": "x",
|
|
"source_mapping": {
|
|
"start": 133,
|
|
"length": 10,
|
|
"filename_used": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
|
|
"filename_relative": "tests/shadowing_local_variable.sol",
|
|
"filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
|
|
"filename_short": "tests/shadowing_local_variable.sol",
|
|
"lines": [
|
|
9
|
|
],
|
|
"starting_column": 5,
|
|
"ending_column": 15
|
|
},
|
|
"type_specific_fields": {
|
|
"parent": {
|
|
"type": "contract",
|
|
"name": "ExtendedContract",
|
|
"source_mapping": {
|
|
"start": 85,
|
|
"length": 110,
|
|
"filename_used": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
|
|
"filename_relative": "tests/shadowing_local_variable.sol",
|
|
"filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
|
|
"filename_short": "tests/shadowing_local_variable.sol",
|
|
"lines": [
|
|
8,
|
|
9,
|
|
10,
|
|
11,
|
|
12,
|
|
13,
|
|
14
|
|
],
|
|
"starting_column": 1,
|
|
"ending_column": 2
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "variable",
|
|
"name": "x",
|
|
"source_mapping": {
|
|
"start": 54,
|
|
"length": 10,
|
|
"filename_used": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
|
|
"filename_relative": "tests/shadowing_local_variable.sol",
|
|
"filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
|
|
"filename_short": "tests/shadowing_local_variable.sol",
|
|
"lines": [
|
|
4
|
|
],
|
|
"starting_column": 5,
|
|
"ending_column": 15
|
|
},
|
|
"type_specific_fields": {
|
|
"parent": {
|
|
"type": "contract",
|
|
"name": "BaseContract",
|
|
"source_mapping": {
|
|
"start": 26,
|
|
"length": 57,
|
|
"filename_used": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
|
|
"filename_relative": "tests/shadowing_local_variable.sol",
|
|
"filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
|
|
"filename_short": "tests/shadowing_local_variable.sol",
|
|
"lines": [
|
|
3,
|
|
4,
|
|
5,
|
|
6
|
|
],
|
|
"starting_column": 1,
|
|
"ending_column": 2
|
|
}
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"check": "shadowing-local",
|
|
"impact": "Low",
|
|
"confidence": "High",
|
|
"description": "FurtherExtendedContract.shadowingParent.y (local variable @ tests/shadowing_local_variable.sol#25) shadows:\n\t- BaseContract.y (state variable @ tests/shadowing_local_variable.sol#5)\n",
|
|
"elements": [
|
|
{
|
|
"type": "variable",
|
|
"name": "y",
|
|
"source_mapping": {
|
|
"start": 398,
|
|
"length": 5,
|
|
"filename_used": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
|
|
"filename_relative": "tests/shadowing_local_variable.sol",
|
|
"filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
|
|
"filename_short": "tests/shadowing_local_variable.sol",
|
|
"lines": [
|
|
25
|
|
],
|
|
"starting_column": 52,
|
|
"ending_column": 57
|
|
},
|
|
"type_specific_fields": {
|
|
"parent": {
|
|
"type": "function",
|
|
"name": "shadowingParent",
|
|
"source_mapping": {
|
|
"start": 351,
|
|
"length": 79,
|
|
"filename_used": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
|
|
"filename_relative": "tests/shadowing_local_variable.sol",
|
|
"filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
|
|
"filename_short": "tests/shadowing_local_variable.sol",
|
|
"lines": [
|
|
25
|
|
],
|
|
"starting_column": 5,
|
|
"ending_column": 84
|
|
},
|
|
"type_specific_fields": {
|
|
"parent": {
|
|
"type": "contract",
|
|
"name": "FurtherExtendedContract",
|
|
"source_mapping": {
|
|
"start": 197,
|
|
"length": 235,
|
|
"filename_used": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
|
|
"filename_relative": "tests/shadowing_local_variable.sol",
|
|
"filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
|
|
"filename_short": "tests/shadowing_local_variable.sol",
|
|
"lines": [
|
|
16,
|
|
17,
|
|
18,
|
|
19,
|
|
20,
|
|
21,
|
|
22,
|
|
23,
|
|
24,
|
|
25,
|
|
26
|
|
],
|
|
"starting_column": 1,
|
|
"ending_column": 2
|
|
}
|
|
},
|
|
"signature": "shadowingParent(uint256)"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "variable",
|
|
"name": "y",
|
|
"source_mapping": {
|
|
"start": 70,
|
|
"length": 10,
|
|
"filename_used": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
|
|
"filename_relative": "tests/shadowing_local_variable.sol",
|
|
"filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
|
|
"filename_short": "tests/shadowing_local_variable.sol",
|
|
"lines": [
|
|
5
|
|
],
|
|
"starting_column": 5,
|
|
"ending_column": 15
|
|
},
|
|
"type_specific_fields": {
|
|
"parent": {
|
|
"type": "contract",
|
|
"name": "BaseContract",
|
|
"source_mapping": {
|
|
"start": 26,
|
|
"length": 57,
|
|
"filename_used": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
|
|
"filename_relative": "tests/shadowing_local_variable.sol",
|
|
"filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
|
|
"filename_short": "tests/shadowing_local_variable.sol",
|
|
"lines": [
|
|
3,
|
|
4,
|
|
5,
|
|
6
|
|
],
|
|
"starting_column": 1,
|
|
"ending_column": 2
|
|
}
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"check": "shadowing-local",
|
|
"impact": "Low",
|
|
"confidence": "High",
|
|
"description": "FurtherExtendedContract.shadowingParent.z (local variable @ tests/shadowing_local_variable.sol#25) shadows:\n\t- ExtendedContract.z (function @ tests/shadowing_local_variable.sol#11)\n",
|
|
"elements": [
|
|
{
|
|
"type": "variable",
|
|
"name": "z",
|
|
"source_mapping": {
|
|
"start": 405,
|
|
"length": 6,
|
|
"filename_used": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
|
|
"filename_relative": "tests/shadowing_local_variable.sol",
|
|
"filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
|
|
"filename_short": "tests/shadowing_local_variable.sol",
|
|
"lines": [
|
|
25
|
|
],
|
|
"starting_column": 59,
|
|
"ending_column": 65
|
|
},
|
|
"type_specific_fields": {
|
|
"parent": {
|
|
"type": "function",
|
|
"name": "shadowingParent",
|
|
"source_mapping": {
|
|
"start": 351,
|
|
"length": 79,
|
|
"filename_used": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
|
|
"filename_relative": "tests/shadowing_local_variable.sol",
|
|
"filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
|
|
"filename_short": "tests/shadowing_local_variable.sol",
|
|
"lines": [
|
|
25
|
|
],
|
|
"starting_column": 5,
|
|
"ending_column": 84
|
|
},
|
|
"type_specific_fields": {
|
|
"parent": {
|
|
"type": "contract",
|
|
"name": "FurtherExtendedContract",
|
|
"source_mapping": {
|
|
"start": 197,
|
|
"length": 235,
|
|
"filename_used": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
|
|
"filename_relative": "tests/shadowing_local_variable.sol",
|
|
"filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
|
|
"filename_short": "tests/shadowing_local_variable.sol",
|
|
"lines": [
|
|
16,
|
|
17,
|
|
18,
|
|
19,
|
|
20,
|
|
21,
|
|
22,
|
|
23,
|
|
24,
|
|
25,
|
|
26
|
|
],
|
|
"starting_column": 1,
|
|
"ending_column": 2
|
|
}
|
|
},
|
|
"signature": "shadowingParent(uint256)"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "function",
|
|
"name": "z",
|
|
"source_mapping": {
|
|
"start": 150,
|
|
"length": 27,
|
|
"filename_used": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
|
|
"filename_relative": "tests/shadowing_local_variable.sol",
|
|
"filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
|
|
"filename_short": "tests/shadowing_local_variable.sol",
|
|
"lines": [
|
|
11
|
|
],
|
|
"starting_column": 5,
|
|
"ending_column": 32
|
|
},
|
|
"type_specific_fields": {
|
|
"parent": {
|
|
"type": "contract",
|
|
"name": "ExtendedContract",
|
|
"source_mapping": {
|
|
"start": 85,
|
|
"length": 110,
|
|
"filename_used": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
|
|
"filename_relative": "tests/shadowing_local_variable.sol",
|
|
"filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
|
|
"filename_short": "tests/shadowing_local_variable.sol",
|
|
"lines": [
|
|
8,
|
|
9,
|
|
10,
|
|
11,
|
|
12,
|
|
13,
|
|
14
|
|
],
|
|
"starting_column": 1,
|
|
"ending_column": 2
|
|
}
|
|
},
|
|
"signature": "z()"
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"check": "shadowing-local",
|
|
"impact": "Low",
|
|
"confidence": "High",
|
|
"description": "FurtherExtendedContract.shadowingParent.w (local variable @ tests/shadowing_local_variable.sol#25) shadows:\n\t- FurtherExtendedContract.w (modifier @ tests/shadowing_local_variable.sol#20-23)\n",
|
|
"elements": [
|
|
{
|
|
"type": "variable",
|
|
"name": "w",
|
|
"source_mapping": {
|
|
"start": 413,
|
|
"length": 6,
|
|
"filename_used": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
|
|
"filename_relative": "tests/shadowing_local_variable.sol",
|
|
"filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
|
|
"filename_short": "tests/shadowing_local_variable.sol",
|
|
"lines": [
|
|
25
|
|
],
|
|
"starting_column": 67,
|
|
"ending_column": 73
|
|
},
|
|
"type_specific_fields": {
|
|
"parent": {
|
|
"type": "function",
|
|
"name": "shadowingParent",
|
|
"source_mapping": {
|
|
"start": 351,
|
|
"length": 79,
|
|
"filename_used": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
|
|
"filename_relative": "tests/shadowing_local_variable.sol",
|
|
"filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
|
|
"filename_short": "tests/shadowing_local_variable.sol",
|
|
"lines": [
|
|
25
|
|
],
|
|
"starting_column": 5,
|
|
"ending_column": 84
|
|
},
|
|
"type_specific_fields": {
|
|
"parent": {
|
|
"type": "contract",
|
|
"name": "FurtherExtendedContract",
|
|
"source_mapping": {
|
|
"start": 197,
|
|
"length": 235,
|
|
"filename_used": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
|
|
"filename_relative": "tests/shadowing_local_variable.sol",
|
|
"filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
|
|
"filename_short": "tests/shadowing_local_variable.sol",
|
|
"lines": [
|
|
16,
|
|
17,
|
|
18,
|
|
19,
|
|
20,
|
|
21,
|
|
22,
|
|
23,
|
|
24,
|
|
25,
|
|
26
|
|
],
|
|
"starting_column": 1,
|
|
"ending_column": 2
|
|
}
|
|
},
|
|
"signature": "shadowingParent(uint256)"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "function",
|
|
"name": "w",
|
|
"source_mapping": {
|
|
"start": 274,
|
|
"length": 71,
|
|
"filename_used": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
|
|
"filename_relative": "tests/shadowing_local_variable.sol",
|
|
"filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
|
|
"filename_short": "tests/shadowing_local_variable.sol",
|
|
"lines": [
|
|
20,
|
|
21,
|
|
22,
|
|
23
|
|
],
|
|
"starting_column": 5,
|
|
"ending_column": 6
|
|
},
|
|
"type_specific_fields": {
|
|
"parent": {
|
|
"type": "contract",
|
|
"name": "FurtherExtendedContract",
|
|
"source_mapping": {
|
|
"start": 197,
|
|
"length": 235,
|
|
"filename_used": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
|
|
"filename_relative": "tests/shadowing_local_variable.sol",
|
|
"filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
|
|
"filename_short": "tests/shadowing_local_variable.sol",
|
|
"lines": [
|
|
16,
|
|
17,
|
|
18,
|
|
19,
|
|
20,
|
|
21,
|
|
22,
|
|
23,
|
|
24,
|
|
25,
|
|
26
|
|
],
|
|
"starting_column": 1,
|
|
"ending_column": 2
|
|
}
|
|
},
|
|
"signature": "w()"
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"check": "shadowing-local",
|
|
"impact": "Low",
|
|
"confidence": "High",
|
|
"description": "FurtherExtendedContract.shadowingParent.v (local variable @ tests/shadowing_local_variable.sol#25) shadows:\n\t- ExtendedContract.v (event @ tests/shadowing_local_variable.sol#13)\n",
|
|
"elements": [
|
|
{
|
|
"type": "variable",
|
|
"name": "v",
|
|
"source_mapping": {
|
|
"start": 421,
|
|
"length": 6,
|
|
"filename_used": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
|
|
"filename_relative": "tests/shadowing_local_variable.sol",
|
|
"filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
|
|
"filename_short": "tests/shadowing_local_variable.sol",
|
|
"lines": [
|
|
25
|
|
],
|
|
"starting_column": 75,
|
|
"ending_column": 81
|
|
},
|
|
"type_specific_fields": {
|
|
"parent": {
|
|
"type": "function",
|
|
"name": "shadowingParent",
|
|
"source_mapping": {
|
|
"start": 351,
|
|
"length": 79,
|
|
"filename_used": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
|
|
"filename_relative": "tests/shadowing_local_variable.sol",
|
|
"filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
|
|
"filename_short": "tests/shadowing_local_variable.sol",
|
|
"lines": [
|
|
25
|
|
],
|
|
"starting_column": 5,
|
|
"ending_column": 84
|
|
},
|
|
"type_specific_fields": {
|
|
"parent": {
|
|
"type": "contract",
|
|
"name": "FurtherExtendedContract",
|
|
"source_mapping": {
|
|
"start": 197,
|
|
"length": 235,
|
|
"filename_used": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
|
|
"filename_relative": "tests/shadowing_local_variable.sol",
|
|
"filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
|
|
"filename_short": "tests/shadowing_local_variable.sol",
|
|
"lines": [
|
|
16,
|
|
17,
|
|
18,
|
|
19,
|
|
20,
|
|
21,
|
|
22,
|
|
23,
|
|
24,
|
|
25,
|
|
26
|
|
],
|
|
"starting_column": 1,
|
|
"ending_column": 2
|
|
}
|
|
},
|
|
"signature": "shadowingParent(uint256)"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "event",
|
|
"name": "v",
|
|
"source_mapping": {
|
|
"start": 183,
|
|
"length": 10,
|
|
"filename_used": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
|
|
"filename_relative": "tests/shadowing_local_variable.sol",
|
|
"filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
|
|
"filename_short": "tests/shadowing_local_variable.sol",
|
|
"lines": [
|
|
13
|
|
],
|
|
"starting_column": 5,
|
|
"ending_column": 15
|
|
},
|
|
"type_specific_fields": {
|
|
"parent": {
|
|
"type": "contract",
|
|
"name": "ExtendedContract",
|
|
"source_mapping": {
|
|
"start": 85,
|
|
"length": 110,
|
|
"filename_used": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
|
|
"filename_relative": "tests/shadowing_local_variable.sol",
|
|
"filename_absolute": "/home/travis/build/crytic/slither/tests/shadowing_local_variable.sol",
|
|
"filename_short": "tests/shadowing_local_variable.sol",
|
|
"lines": [
|
|
8,
|
|
9,
|
|
10,
|
|
11,
|
|
12,
|
|
13,
|
|
14
|
|
],
|
|
"starting_column": 1,
|
|
"ending_column": 2
|
|
}
|
|
},
|
|
"signature": "v()"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
} |