2024-08-21 17:00:18 +00:00
|
|
|
{
|
|
|
|
"cells": [
|
|
|
|
{
|
|
|
|
"cell_type": "code",
|
2024-08-26 15:45:29 +00:00
|
|
|
"execution_count": 371,
|
2024-08-21 17:00:18 +00:00
|
|
|
"metadata": {},
|
|
|
|
"outputs": [],
|
|
|
|
"source": [
|
|
|
|
"# Using plotly\n",
|
|
|
|
"import plotly.graph_objects as go\n",
|
|
|
|
"import numpy as np"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"cell_type": "markdown",
|
|
|
|
"metadata": {},
|
|
|
|
"source": [
|
|
|
|
"Define data"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"cell_type": "code",
|
2024-08-26 15:45:29 +00:00
|
|
|
"execution_count": 372,
|
2024-08-23 16:05:06 +00:00
|
|
|
"metadata": {},
|
|
|
|
"outputs": [
|
|
|
|
{
|
|
|
|
"data": {
|
|
|
|
"text/html": [
|
|
|
|
"<div>\n",
|
|
|
|
"<style scoped>\n",
|
|
|
|
" .dataframe tbody tr th:only-of-type {\n",
|
|
|
|
" vertical-align: middle;\n",
|
|
|
|
" }\n",
|
|
|
|
"\n",
|
|
|
|
" .dataframe tbody tr th {\n",
|
|
|
|
" vertical-align: top;\n",
|
|
|
|
" }\n",
|
|
|
|
"\n",
|
|
|
|
" .dataframe thead th {\n",
|
|
|
|
" text-align: right;\n",
|
|
|
|
" }\n",
|
|
|
|
"</style>\n",
|
|
|
|
"<table border=\"1\" class=\"dataframe\">\n",
|
|
|
|
" <thead>\n",
|
|
|
|
" <tr style=\"text-align: right;\">\n",
|
|
|
|
" <th></th>\n",
|
|
|
|
" <th>start</th>\n",
|
|
|
|
" <th>end</th>\n",
|
|
|
|
" <th>name</th>\n",
|
|
|
|
" <th>order</th>\n",
|
|
|
|
" <th>comment</th>\n",
|
2024-08-26 15:45:29 +00:00
|
|
|
" <th>size</th>\n",
|
2024-08-23 16:05:06 +00:00
|
|
|
" <th>overlap</th>\n",
|
|
|
|
" <th>overlap_with</th>\n",
|
|
|
|
" </tr>\n",
|
|
|
|
" </thead>\n",
|
|
|
|
" <tbody>\n",
|
|
|
|
" <tr>\n",
|
|
|
|
" <th>0</th>\n",
|
|
|
|
" <td>0</td>\n",
|
|
|
|
" <td>131072</td>\n",
|
|
|
|
" <td>BootROM</td>\n",
|
|
|
|
" <td>NaN</td>\n",
|
|
|
|
" <td>NaN</td>\n",
|
2024-08-26 15:45:29 +00:00
|
|
|
" <td>131072</td>\n",
|
2024-08-23 16:05:06 +00:00
|
|
|
" <td>True</td>\n",
|
2024-08-25 18:00:07 +00:00
|
|
|
" <td>0.0</td>\n",
|
2024-08-23 16:05:06 +00:00
|
|
|
" </tr>\n",
|
|
|
|
" <tr>\n",
|
|
|
|
" <th>1</th>\n",
|
|
|
|
" <td>704</td>\n",
|
2024-08-26 15:45:29 +00:00
|
|
|
" <td>708</td>\n",
|
|
|
|
" <td>_jump_bl1</td>\n",
|
|
|
|
" <td>NaN</td>\n",
|
2024-08-23 16:05:06 +00:00
|
|
|
" <td>NaN</td>\n",
|
2024-08-26 15:45:29 +00:00
|
|
|
" <td>4</td>\n",
|
2024-08-23 16:05:06 +00:00
|
|
|
" <td>True</td>\n",
|
|
|
|
" <td>0.0</td>\n",
|
|
|
|
" </tr>\n",
|
|
|
|
" <tr>\n",
|
|
|
|
" <th>2</th>\n",
|
|
|
|
" <td>25824</td>\n",
|
2024-08-26 15:45:29 +00:00
|
|
|
" <td>25996</td>\n",
|
|
|
|
" <td>_boot_usb</td>\n",
|
2024-08-23 16:05:06 +00:00
|
|
|
" <td>NaN</td>\n",
|
|
|
|
" <td>NaN</td>\n",
|
2024-08-26 15:45:29 +00:00
|
|
|
" <td>172</td>\n",
|
2024-08-23 16:05:06 +00:00
|
|
|
" <td>True</td>\n",
|
|
|
|
" <td>0.0</td>\n",
|
|
|
|
" </tr>\n",
|
|
|
|
" <tr>\n",
|
|
|
|
" <th>3</th>\n",
|
|
|
|
" <td>75848</td>\n",
|
2024-08-26 15:45:29 +00:00
|
|
|
" <td>76008</td>\n",
|
|
|
|
" <td>auth_bl1</td>\n",
|
2024-08-23 16:05:06 +00:00
|
|
|
" <td>NaN</td>\n",
|
|
|
|
" <td>NaN</td>\n",
|
2024-08-26 15:45:29 +00:00
|
|
|
" <td>160</td>\n",
|
2024-08-23 16:05:06 +00:00
|
|
|
" <td>True</td>\n",
|
|
|
|
" <td>0.0</td>\n",
|
|
|
|
" </tr>\n",
|
|
|
|
" <tr>\n",
|
|
|
|
" <th>4</th>\n",
|
2024-08-26 15:45:29 +00:00
|
|
|
" <td>33689440</td>\n",
|
|
|
|
" <td>33689448</td>\n",
|
|
|
|
" <td>_boot_usb_ra</td>\n",
|
2024-08-23 16:05:06 +00:00
|
|
|
" <td>NaN</td>\n",
|
|
|
|
" <td>NaN</td>\n",
|
2024-08-26 15:45:29 +00:00
|
|
|
" <td>8</td>\n",
|
|
|
|
" <td>False</td>\n",
|
|
|
|
" <td>4.0</td>\n",
|
2024-08-23 16:05:06 +00:00
|
|
|
" </tr>\n",
|
|
|
|
" <tr>\n",
|
|
|
|
" <th>5</th>\n",
|
2024-08-26 15:45:29 +00:00
|
|
|
" <td>33693696</td>\n",
|
|
|
|
" <td>33701888</td>\n",
|
|
|
|
" <td>BL1</td>\n",
|
2024-08-23 16:05:06 +00:00
|
|
|
" <td>NaN</td>\n",
|
|
|
|
" <td>NaN</td>\n",
|
2024-08-26 15:45:29 +00:00
|
|
|
" <td>8192</td>\n",
|
2024-08-23 16:05:06 +00:00
|
|
|
" <td>False</td>\n",
|
2024-08-25 18:00:07 +00:00
|
|
|
" <td>5.0</td>\n",
|
2024-08-23 16:05:06 +00:00
|
|
|
" </tr>\n",
|
|
|
|
" <tr>\n",
|
|
|
|
" <th>6</th>\n",
|
2024-08-26 15:45:29 +00:00
|
|
|
" <td>33701888</td>\n",
|
|
|
|
" <td>33849344</td>\n",
|
|
|
|
" <td>BL31</td>\n",
|
2024-08-23 16:05:06 +00:00
|
|
|
" <td>NaN</td>\n",
|
|
|
|
" <td>NaN</td>\n",
|
2024-08-26 15:45:29 +00:00
|
|
|
" <td>147456</td>\n",
|
2024-08-23 16:05:06 +00:00
|
|
|
" <td>False</td>\n",
|
2024-08-25 18:00:07 +00:00
|
|
|
" <td>6.0</td>\n",
|
2024-08-23 16:05:06 +00:00
|
|
|
" </tr>\n",
|
|
|
|
" <tr>\n",
|
|
|
|
" <th>7</th>\n",
|
2024-08-26 15:45:29 +00:00
|
|
|
" <td>33849344</td>\n",
|
|
|
|
" <td>34008336</td>\n",
|
|
|
|
" <td>BL2</td>\n",
|
2024-08-23 16:05:06 +00:00
|
|
|
" <td>NaN</td>\n",
|
|
|
|
" <td>NaN</td>\n",
|
2024-08-26 15:45:29 +00:00
|
|
|
" <td>158992</td>\n",
|
|
|
|
" <td>True</td>\n",
|
2024-08-23 16:05:06 +00:00
|
|
|
" <td>7.0</td>\n",
|
|
|
|
" </tr>\n",
|
|
|
|
" <tr>\n",
|
2024-08-25 18:00:07 +00:00
|
|
|
" <th>8</th>\n",
|
2024-08-23 16:05:06 +00:00
|
|
|
" <td>33984512</td>\n",
|
2024-08-26 15:45:29 +00:00
|
|
|
" <td>34009088</td>\n",
|
|
|
|
" <td>Debugger</td>\n",
|
2024-08-23 16:05:06 +00:00
|
|
|
" <td>NaN</td>\n",
|
|
|
|
" <td>NaN</td>\n",
|
2024-08-26 15:45:29 +00:00
|
|
|
" <td>24576</td>\n",
|
2024-08-23 16:05:06 +00:00
|
|
|
" <td>True</td>\n",
|
2024-08-26 15:45:29 +00:00
|
|
|
" <td>7.0</td>\n",
|
2024-08-23 16:05:06 +00:00
|
|
|
" </tr>\n",
|
|
|
|
" <tr>\n",
|
2024-08-25 18:00:07 +00:00
|
|
|
" <th>9</th>\n",
|
2024-08-26 15:45:29 +00:00
|
|
|
" <td>34008336</td>\n",
|
2024-08-23 16:05:06 +00:00
|
|
|
" <td>34013184</td>\n",
|
2024-08-26 15:45:29 +00:00
|
|
|
" <td>End of readable memory space in buffer</td>\n",
|
2024-08-23 16:05:06 +00:00
|
|
|
" <td>NaN</td>\n",
|
|
|
|
" <td>NaN</td>\n",
|
2024-08-26 15:45:29 +00:00
|
|
|
" <td>4848</td>\n",
|
2024-08-23 16:05:06 +00:00
|
|
|
" <td>True</td>\n",
|
2024-08-25 18:00:07 +00:00
|
|
|
" <td>8.0</td>\n",
|
2024-08-26 15:45:29 +00:00
|
|
|
" </tr>\n",
|
|
|
|
" <tr>\n",
|
|
|
|
" <th>10</th>\n",
|
|
|
|
" <td>34340864</td>\n",
|
|
|
|
" <td>34369536</td>\n",
|
|
|
|
" <td>Debugger relocated</td>\n",
|
|
|
|
" <td>NaN</td>\n",
|
|
|
|
" <td>NaN</td>\n",
|
|
|
|
" <td>28672</td>\n",
|
|
|
|
" <td>True</td>\n",
|
|
|
|
" <td>10.0</td>\n",
|
|
|
|
" </tr>\n",
|
|
|
|
" <tr>\n",
|
|
|
|
" <th>11</th>\n",
|
|
|
|
" <td>34340864</td>\n",
|
|
|
|
" <td>34340868</td>\n",
|
|
|
|
" <td>_frederic_dest_ptr</td>\n",
|
|
|
|
" <td>NaN</td>\n",
|
|
|
|
" <td>NaN</td>\n",
|
|
|
|
" <td>4</td>\n",
|
|
|
|
" <td>True</td>\n",
|
|
|
|
" <td>10.0</td>\n",
|
2024-08-23 16:05:06 +00:00
|
|
|
" </tr>\n",
|
|
|
|
" </tbody>\n",
|
|
|
|
"</table>\n",
|
|
|
|
"</div>"
|
|
|
|
],
|
|
|
|
"text/plain": [
|
2024-08-26 15:45:29 +00:00
|
|
|
" start end name order \\\n",
|
|
|
|
"0 0 131072 BootROM NaN \n",
|
|
|
|
"1 704 708 _jump_bl1 NaN \n",
|
|
|
|
"2 25824 25996 _boot_usb NaN \n",
|
|
|
|
"3 75848 76008 auth_bl1 NaN \n",
|
|
|
|
"4 33689440 33689448 _boot_usb_ra NaN \n",
|
|
|
|
"5 33693696 33701888 BL1 NaN \n",
|
|
|
|
"6 33701888 33849344 BL31 NaN \n",
|
|
|
|
"7 33849344 34008336 BL2 NaN \n",
|
|
|
|
"8 33984512 34009088 Debugger NaN \n",
|
|
|
|
"9 34008336 34013184 End of readable memory space in buffer NaN \n",
|
|
|
|
"10 34340864 34369536 Debugger relocated NaN \n",
|
|
|
|
"11 34340864 34340868 _frederic_dest_ptr NaN \n",
|
2024-08-23 16:05:06 +00:00
|
|
|
"\n",
|
2024-08-26 15:45:29 +00:00
|
|
|
" comment size overlap overlap_with \n",
|
|
|
|
"0 NaN 131072 True 0.0 \n",
|
|
|
|
"1 NaN 4 True 0.0 \n",
|
|
|
|
"2 NaN 172 True 0.0 \n",
|
|
|
|
"3 NaN 160 True 0.0 \n",
|
|
|
|
"4 NaN 8 False 4.0 \n",
|
|
|
|
"5 NaN 8192 False 5.0 \n",
|
|
|
|
"6 NaN 147456 False 6.0 \n",
|
|
|
|
"7 NaN 158992 True 7.0 \n",
|
|
|
|
"8 NaN 24576 True 7.0 \n",
|
|
|
|
"9 NaN 4848 True 8.0 \n",
|
|
|
|
"10 NaN 28672 True 10.0 \n",
|
|
|
|
"11 NaN 4 True 10.0 "
|
2024-08-23 16:05:06 +00:00
|
|
|
]
|
|
|
|
},
|
2024-08-26 15:45:29 +00:00
|
|
|
"execution_count": 372,
|
2024-08-23 16:05:06 +00:00
|
|
|
"metadata": {},
|
|
|
|
"output_type": "execute_result"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"source": [
|
2024-08-25 18:00:07 +00:00
|
|
|
"import pandas as pd\n",
|
|
|
|
"data = pd.read_csv('stack_and_functions.csv')\n",
|
|
|
|
"\n",
|
|
|
|
"def convert_to_int(value):\n",
|
|
|
|
" try:\n",
|
|
|
|
" if isinstance(value, str) and value.startswith('0x'):\n",
|
|
|
|
" return int(value, 16)\n",
|
|
|
|
" else:\n",
|
|
|
|
" return int(value)\n",
|
|
|
|
" except ValueError:\n",
|
|
|
|
" return value \n",
|
|
|
|
"\n",
|
|
|
|
"data['start'] = data['start'].apply(convert_to_int)\n",
|
|
|
|
"data['end'] = data['end'].apply(convert_to_int)\n",
|
2024-08-26 15:45:29 +00:00
|
|
|
"data['size'] = data['end'] - data['start']\n",
|
|
|
|
"\n",
|
|
|
|
"data.sort_values(by=['size'], inplace=True, ascending=False)\n",
|
|
|
|
"data.sort_values(by=['start'], inplace=True)\n",
|
|
|
|
"data.reset_index(drop=True, inplace=True)\n",
|
|
|
|
"\n",
|
2024-08-25 18:00:07 +00:00
|
|
|
"data['overlap'] = False\n",
|
|
|
|
"\n",
|
|
|
|
"for i, row in data.iterrows():\n",
|
|
|
|
" for j, row2 in data.iterrows():\n",
|
|
|
|
" if i == j:\n",
|
|
|
|
" continue\n",
|
2024-08-26 15:45:29 +00:00
|
|
|
" if row['start'] <= row2['end'] and row['end'] > row2['start']:\n",
|
|
|
|
" if row['end'] - row['start'] >= row2['end'] - row2['start']:\n",
|
2024-08-25 18:00:07 +00:00
|
|
|
" continue\n",
|
|
|
|
" data.at[i, 'overlap'] = True\n",
|
|
|
|
" data.at[j, 'overlap'] = True\n",
|
|
|
|
" data.at[i, 'overlap_with'] = j\n",
|
|
|
|
"\n",
|
|
|
|
"data['overlap_with'] = data['overlap_with'].fillna(data.index.to_series())\n",
|
|
|
|
"data['overlap_with'] = data['overlap_with'].astype(float)\n",
|
2024-08-26 15:45:29 +00:00
|
|
|
"\n",
|
|
|
|
"# Send warnings if sizes are negative\n",
|
|
|
|
"if (data['size'] < 0).any():\n",
|
|
|
|
" print(f'Warning: Negative sizes detected at indices {data[data[\"size\"] < 0].index}')\n",
|
2024-08-25 18:00:07 +00:00
|
|
|
"\n",
|
2024-08-23 16:05:06 +00:00
|
|
|
"data"
|
2024-08-21 17:00:18 +00:00
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"cell_type": "markdown",
|
|
|
|
"metadata": {},
|
|
|
|
"source": [
|
2024-08-25 18:00:07 +00:00
|
|
|
"Inherent stacked block diagram"
|
2024-08-21 17:00:18 +00:00
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"cell_type": "code",
|
2024-08-26 15:45:29 +00:00
|
|
|
"execution_count": 373,
|
2024-08-21 17:00:18 +00:00
|
|
|
"metadata": {},
|
|
|
|
"outputs": [
|
|
|
|
{
|
|
|
|
"data": {
|
|
|
|
"application/vnd.plotly.v1+json": {
|
|
|
|
"config": {
|
|
|
|
"plotlyServerURL": "https://plot.ly"
|
|
|
|
},
|
|
|
|
"data": [
|
|
|
|
{
|
2024-08-22 17:50:46 +00:00
|
|
|
"marker": {
|
2024-08-26 15:45:29 +00:00
|
|
|
"color": "#856446"
|
2024-08-22 17:50:46 +00:00
|
|
|
},
|
2024-08-21 17:00:18 +00:00
|
|
|
"mode": "text",
|
2024-08-22 17:50:46 +00:00
|
|
|
"name": "BootROM",
|
2024-08-21 17:00:18 +00:00
|
|
|
"text": "BootROM",
|
|
|
|
"textposition": "middle center",
|
|
|
|
"type": "scatter",
|
|
|
|
"x": [
|
2024-08-26 15:45:29 +00:00
|
|
|
2.5
|
2024-08-21 17:00:18 +00:00
|
|
|
],
|
|
|
|
"y": [
|
2024-08-25 18:00:07 +00:00
|
|
|
0.5
|
2024-08-21 17:00:18 +00:00
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
2024-08-22 17:50:46 +00:00
|
|
|
"marker": {
|
2024-08-26 15:45:29 +00:00
|
|
|
"color": "#856446"
|
|
|
|
},
|
|
|
|
"mode": "text",
|
|
|
|
"showlegend": false,
|
|
|
|
"text": "0x20000",
|
|
|
|
"textposition": "middle center",
|
|
|
|
"type": "scatter",
|
|
|
|
"x": [
|
|
|
|
1.1400000000000001
|
|
|
|
],
|
|
|
|
"y": [
|
|
|
|
3.84
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"marker": {
|
|
|
|
"color": "#856446"
|
|
|
|
},
|
|
|
|
"mode": "text",
|
|
|
|
"showlegend": false,
|
|
|
|
"text": "0x0",
|
|
|
|
"textposition": "middle center",
|
|
|
|
"type": "scatter",
|
|
|
|
"x": [
|
|
|
|
1.1400000000000001
|
|
|
|
],
|
|
|
|
"y": [
|
|
|
|
0.14
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"marker": {
|
|
|
|
"color": "#82f92f"
|
2024-08-22 17:50:46 +00:00
|
|
|
},
|
2024-08-21 17:00:18 +00:00
|
|
|
"mode": "text",
|
2024-08-26 15:45:29 +00:00
|
|
|
"name": "_jump_bl1",
|
|
|
|
"text": "_jump_bl1",
|
2024-08-21 17:00:18 +00:00
|
|
|
"textposition": "middle center",
|
|
|
|
"type": "scatter",
|
|
|
|
"x": [
|
2024-08-26 15:45:29 +00:00
|
|
|
2.5
|
2024-08-21 17:00:18 +00:00
|
|
|
],
|
|
|
|
"y": [
|
2024-08-25 18:00:07 +00:00
|
|
|
1.52
|
2024-08-21 17:00:18 +00:00
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
2024-08-22 17:50:46 +00:00
|
|
|
"marker": {
|
2024-08-26 15:45:29 +00:00
|
|
|
"color": "#82f92f"
|
|
|
|
},
|
|
|
|
"mode": "text",
|
|
|
|
"showlegend": false,
|
|
|
|
"text": "0x2c4",
|
|
|
|
"textposition": "middle center",
|
|
|
|
"type": "scatter",
|
|
|
|
"x": [
|
|
|
|
1.2400000000000002
|
|
|
|
],
|
|
|
|
"y": [
|
|
|
|
1.7100000000000002
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"marker": {
|
|
|
|
"color": "#82f92f"
|
|
|
|
},
|
|
|
|
"mode": "text",
|
|
|
|
"showlegend": false,
|
|
|
|
"text": "0x2c0",
|
|
|
|
"textposition": "middle center",
|
|
|
|
"type": "scatter",
|
|
|
|
"x": [
|
|
|
|
1.2400000000000002
|
|
|
|
],
|
|
|
|
"y": [
|
|
|
|
1.1600000000000001
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"marker": {
|
|
|
|
"color": "#bd73ad"
|
2024-08-22 17:50:46 +00:00
|
|
|
},
|
2024-08-21 17:00:18 +00:00
|
|
|
"mode": "text",
|
2024-08-26 15:45:29 +00:00
|
|
|
"name": "_boot_usb",
|
|
|
|
"text": "_boot_usb",
|
2024-08-21 17:00:18 +00:00
|
|
|
"textposition": "middle center",
|
|
|
|
"type": "scatter",
|
|
|
|
"x": [
|
2024-08-26 15:45:29 +00:00
|
|
|
2.5
|
2024-08-21 17:00:18 +00:00
|
|
|
],
|
|
|
|
"y": [
|
2024-08-25 18:00:07 +00:00
|
|
|
2.52
|
2024-08-21 17:00:18 +00:00
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
2024-08-22 17:50:46 +00:00
|
|
|
"marker": {
|
2024-08-26 15:45:29 +00:00
|
|
|
"color": "#bd73ad"
|
2024-08-22 17:50:46 +00:00
|
|
|
},
|
2024-08-21 17:00:18 +00:00
|
|
|
"mode": "text",
|
2024-08-26 15:45:29 +00:00
|
|
|
"showlegend": false,
|
|
|
|
"text": "0x658c",
|
2024-08-21 17:00:18 +00:00
|
|
|
"textposition": "middle center",
|
|
|
|
"type": "scatter",
|
|
|
|
"x": [
|
2024-08-26 15:45:29 +00:00
|
|
|
1.2400000000000002
|
|
|
|
],
|
|
|
|
"y": [
|
|
|
|
2.71
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"marker": {
|
|
|
|
"color": "#bd73ad"
|
|
|
|
},
|
|
|
|
"mode": "text",
|
|
|
|
"showlegend": false,
|
|
|
|
"text": "0x64e0",
|
|
|
|
"textposition": "middle center",
|
|
|
|
"type": "scatter",
|
|
|
|
"x": [
|
|
|
|
1.2400000000000002
|
|
|
|
],
|
|
|
|
"y": [
|
|
|
|
2.16
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"marker": {
|
|
|
|
"color": "#7e8007"
|
|
|
|
},
|
|
|
|
"mode": "text",
|
|
|
|
"name": "auth_bl1",
|
|
|
|
"text": "auth_bl1",
|
|
|
|
"textposition": "middle center",
|
|
|
|
"type": "scatter",
|
|
|
|
"x": [
|
|
|
|
2.5
|
2024-08-21 17:00:18 +00:00
|
|
|
],
|
|
|
|
"y": [
|
2024-08-25 18:00:07 +00:00
|
|
|
3.52
|
2024-08-21 17:00:18 +00:00
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
2024-08-22 17:50:46 +00:00
|
|
|
"marker": {
|
2024-08-26 15:45:29 +00:00
|
|
|
"color": "#7e8007"
|
|
|
|
},
|
|
|
|
"mode": "text",
|
|
|
|
"showlegend": false,
|
|
|
|
"text": "0x128e8",
|
|
|
|
"textposition": "middle center",
|
|
|
|
"type": "scatter",
|
|
|
|
"x": [
|
|
|
|
1.2400000000000002
|
|
|
|
],
|
|
|
|
"y": [
|
|
|
|
3.71
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"marker": {
|
|
|
|
"color": "#7e8007"
|
|
|
|
},
|
|
|
|
"mode": "text",
|
|
|
|
"showlegend": false,
|
|
|
|
"text": "0x12848",
|
|
|
|
"textposition": "middle center",
|
|
|
|
"type": "scatter",
|
|
|
|
"x": [
|
|
|
|
1.2400000000000002
|
|
|
|
],
|
|
|
|
"y": [
|
|
|
|
3.16
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"marker": {
|
|
|
|
"color": "#7c5233"
|
2024-08-22 17:50:46 +00:00
|
|
|
},
|
2024-08-21 17:00:18 +00:00
|
|
|
"mode": "text",
|
2024-08-26 15:45:29 +00:00
|
|
|
"name": "_boot_usb_ra",
|
|
|
|
"text": "_boot_usb_ra",
|
2024-08-21 17:00:18 +00:00
|
|
|
"textposition": "middle center",
|
|
|
|
"type": "scatter",
|
|
|
|
"x": [
|
2024-08-26 15:45:29 +00:00
|
|
|
2.5
|
2024-08-21 17:00:18 +00:00
|
|
|
],
|
|
|
|
"y": [
|
2024-08-26 15:45:29 +00:00
|
|
|
4.5
|
2024-08-21 17:00:18 +00:00
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
2024-08-22 17:50:46 +00:00
|
|
|
"marker": {
|
2024-08-26 15:45:29 +00:00
|
|
|
"color": "#7c5233"
|
2024-08-22 17:50:46 +00:00
|
|
|
},
|
2024-08-21 17:00:18 +00:00
|
|
|
"mode": "text",
|
2024-08-26 15:45:29 +00:00
|
|
|
"showlegend": false,
|
|
|
|
"text": "0x2020f68",
|
2024-08-21 17:00:18 +00:00
|
|
|
"textposition": "middle center",
|
|
|
|
"type": "scatter",
|
|
|
|
"x": [
|
2024-08-26 15:45:29 +00:00
|
|
|
1.2400000000000002
|
|
|
|
],
|
|
|
|
"y": [
|
|
|
|
4.84
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"marker": {
|
|
|
|
"color": "#7c5233"
|
|
|
|
},
|
|
|
|
"mode": "text",
|
|
|
|
"showlegend": false,
|
|
|
|
"text": "0x2020f60",
|
|
|
|
"textposition": "middle center",
|
|
|
|
"type": "scatter",
|
|
|
|
"x": [
|
|
|
|
1.2400000000000002
|
|
|
|
],
|
|
|
|
"y": [
|
|
|
|
4.14
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"marker": {
|
|
|
|
"color": "#6f6733"
|
|
|
|
},
|
|
|
|
"mode": "text",
|
|
|
|
"name": "BL1",
|
|
|
|
"text": "BL1",
|
|
|
|
"textposition": "middle center",
|
|
|
|
"type": "scatter",
|
|
|
|
"x": [
|
|
|
|
2.5
|
2024-08-21 17:00:18 +00:00
|
|
|
],
|
|
|
|
"y": [
|
2024-08-25 18:00:07 +00:00
|
|
|
5.5
|
2024-08-21 17:00:18 +00:00
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
2024-08-22 17:50:46 +00:00
|
|
|
"marker": {
|
2024-08-26 15:45:29 +00:00
|
|
|
"color": "#6f6733"
|
2024-08-22 17:50:46 +00:00
|
|
|
},
|
2024-08-21 17:00:18 +00:00
|
|
|
"mode": "text",
|
2024-08-26 15:45:29 +00:00
|
|
|
"showlegend": false,
|
|
|
|
"text": "0x2024000",
|
2024-08-21 17:00:18 +00:00
|
|
|
"textposition": "middle center",
|
|
|
|
"type": "scatter",
|
|
|
|
"x": [
|
2024-08-26 15:45:29 +00:00
|
|
|
1.2400000000000002
|
|
|
|
],
|
|
|
|
"y": [
|
|
|
|
5.84
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"marker": {
|
|
|
|
"color": "#6f6733"
|
|
|
|
},
|
|
|
|
"mode": "text",
|
|
|
|
"showlegend": false,
|
|
|
|
"text": "0x2022000",
|
|
|
|
"textposition": "middle center",
|
|
|
|
"type": "scatter",
|
|
|
|
"x": [
|
|
|
|
1.2400000000000002
|
|
|
|
],
|
|
|
|
"y": [
|
|
|
|
5.14
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"marker": {
|
|
|
|
"color": "#86ce48"
|
|
|
|
},
|
|
|
|
"mode": "text",
|
|
|
|
"name": "BL31",
|
|
|
|
"text": "BL31",
|
|
|
|
"textposition": "middle center",
|
|
|
|
"type": "scatter",
|
|
|
|
"x": [
|
|
|
|
2.5
|
2024-08-21 17:00:18 +00:00
|
|
|
],
|
|
|
|
"y": [
|
2024-08-25 18:00:07 +00:00
|
|
|
6.5
|
2024-08-21 17:00:18 +00:00
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
2024-08-22 17:50:46 +00:00
|
|
|
"marker": {
|
2024-08-26 15:45:29 +00:00
|
|
|
"color": "#86ce48"
|
|
|
|
},
|
|
|
|
"mode": "text",
|
|
|
|
"showlegend": false,
|
|
|
|
"text": "0x2048000",
|
|
|
|
"textposition": "middle center",
|
|
|
|
"type": "scatter",
|
|
|
|
"x": [
|
|
|
|
1.2400000000000002
|
|
|
|
],
|
|
|
|
"y": [
|
|
|
|
6.84
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"marker": {
|
|
|
|
"color": "#86ce48"
|
|
|
|
},
|
|
|
|
"mode": "text",
|
|
|
|
"showlegend": false,
|
|
|
|
"text": "0x2024000",
|
|
|
|
"textposition": "middle center",
|
|
|
|
"type": "scatter",
|
|
|
|
"x": [
|
|
|
|
1.2400000000000002
|
|
|
|
],
|
|
|
|
"y": [
|
|
|
|
6.14
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"marker": {
|
|
|
|
"color": "#de3ae2"
|
2024-08-22 17:50:46 +00:00
|
|
|
},
|
2024-08-21 17:00:18 +00:00
|
|
|
"mode": "text",
|
2024-08-26 15:45:29 +00:00
|
|
|
"name": "BL2",
|
|
|
|
"text": "BL2",
|
2024-08-21 17:00:18 +00:00
|
|
|
"textposition": "middle center",
|
|
|
|
"type": "scatter",
|
|
|
|
"x": [
|
2024-08-26 15:45:29 +00:00
|
|
|
2.5
|
2024-08-21 17:00:18 +00:00
|
|
|
],
|
|
|
|
"y": [
|
2024-08-25 18:00:07 +00:00
|
|
|
7.5
|
2024-08-21 17:00:18 +00:00
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
2024-08-22 17:50:46 +00:00
|
|
|
"marker": {
|
2024-08-26 15:45:29 +00:00
|
|
|
"color": "#de3ae2"
|
|
|
|
},
|
|
|
|
"mode": "text",
|
|
|
|
"showlegend": false,
|
|
|
|
"text": "0x206ed10",
|
|
|
|
"textposition": "middle center",
|
|
|
|
"type": "scatter",
|
|
|
|
"x": [
|
|
|
|
1.1400000000000001
|
|
|
|
],
|
|
|
|
"y": [
|
|
|
|
8.34
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"marker": {
|
|
|
|
"color": "#de3ae2"
|
|
|
|
},
|
|
|
|
"mode": "text",
|
|
|
|
"showlegend": false,
|
|
|
|
"text": "0x2048000",
|
|
|
|
"textposition": "middle center",
|
|
|
|
"type": "scatter",
|
|
|
|
"x": [
|
|
|
|
1.1400000000000001
|
|
|
|
],
|
|
|
|
"y": [
|
|
|
|
7.14
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"marker": {
|
|
|
|
"color": "#292d88"
|
2024-08-22 17:50:46 +00:00
|
|
|
},
|
2024-08-21 17:00:18 +00:00
|
|
|
"mode": "text",
|
2024-08-26 15:45:29 +00:00
|
|
|
"name": "Debugger",
|
|
|
|
"text": "Debugger",
|
2024-08-21 17:00:18 +00:00
|
|
|
"textposition": "middle center",
|
|
|
|
"type": "scatter",
|
|
|
|
"x": [
|
2024-08-26 15:45:29 +00:00
|
|
|
2.5
|
2024-08-21 17:00:18 +00:00
|
|
|
],
|
|
|
|
"y": [
|
2024-08-25 18:00:07 +00:00
|
|
|
8.52
|
2024-08-21 17:00:18 +00:00
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
2024-08-22 17:50:46 +00:00
|
|
|
"marker": {
|
2024-08-26 15:45:29 +00:00
|
|
|
"color": "#292d88"
|
|
|
|
},
|
|
|
|
"mode": "text",
|
|
|
|
"showlegend": false,
|
|
|
|
"text": "0x206f000",
|
|
|
|
"textposition": "middle center",
|
|
|
|
"type": "scatter",
|
|
|
|
"x": [
|
|
|
|
1.2400000000000002
|
|
|
|
],
|
|
|
|
"y": [
|
|
|
|
8.709999999999999
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"marker": {
|
|
|
|
"color": "#292d88"
|
2024-08-22 17:50:46 +00:00
|
|
|
},
|
2024-08-21 17:00:18 +00:00
|
|
|
"mode": "text",
|
2024-08-26 15:45:29 +00:00
|
|
|
"showlegend": false,
|
|
|
|
"text": "0x2069000",
|
2024-08-21 17:00:18 +00:00
|
|
|
"textposition": "middle center",
|
|
|
|
"type": "scatter",
|
|
|
|
"x": [
|
2024-08-26 15:45:29 +00:00
|
|
|
1.2400000000000002
|
|
|
|
],
|
|
|
|
"y": [
|
|
|
|
8.16
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"marker": {
|
|
|
|
"color": "#5d64be"
|
|
|
|
},
|
|
|
|
"mode": "text",
|
|
|
|
"name": "End of readable memory space in buffer",
|
|
|
|
"text": "End of readable memory space in buffer",
|
|
|
|
"textposition": "middle center",
|
|
|
|
"type": "scatter",
|
|
|
|
"x": [
|
|
|
|
2.5
|
2024-08-21 17:00:18 +00:00
|
|
|
],
|
|
|
|
"y": [
|
2024-08-25 18:00:07 +00:00
|
|
|
9.52
|
2024-08-21 17:00:18 +00:00
|
|
|
]
|
2024-08-26 15:45:29 +00:00
|
|
|
},
|
|
|
|
{
|
|
|
|
"marker": {
|
|
|
|
"color": "#5d64be"
|
|
|
|
},
|
|
|
|
"mode": "text",
|
|
|
|
"showlegend": false,
|
|
|
|
"text": "0x2070000",
|
|
|
|
"textposition": "middle center",
|
|
|
|
"type": "scatter",
|
|
|
|
"x": [
|
|
|
|
1.2400000000000002
|
|
|
|
],
|
|
|
|
"y": [
|
|
|
|
9.709999999999999
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"marker": {
|
|
|
|
"color": "#5d64be"
|
|
|
|
},
|
|
|
|
"mode": "text",
|
|
|
|
"showlegend": false,
|
|
|
|
"text": "0x206ed10",
|
|
|
|
"textposition": "middle center",
|
|
|
|
"type": "scatter",
|
|
|
|
"x": [
|
|
|
|
1.2400000000000002
|
|
|
|
],
|
|
|
|
"y": [
|
|
|
|
9.16
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"marker": {
|
|
|
|
"color": "#1db55c"
|
|
|
|
},
|
|
|
|
"mode": "text",
|
|
|
|
"name": "Debugger relocated",
|
|
|
|
"text": "Debugger relocated",
|
|
|
|
"textposition": "middle center",
|
|
|
|
"type": "scatter",
|
|
|
|
"x": [
|
|
|
|
2.5
|
|
|
|
],
|
|
|
|
"y": [
|
|
|
|
10.5
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"marker": {
|
|
|
|
"color": "#1db55c"
|
|
|
|
},
|
|
|
|
"mode": "text",
|
|
|
|
"showlegend": false,
|
|
|
|
"text": "0x20c7000",
|
|
|
|
"textposition": "middle center",
|
|
|
|
"type": "scatter",
|
|
|
|
"x": [
|
|
|
|
1.1400000000000001
|
|
|
|
],
|
|
|
|
"y": [
|
|
|
|
11.84
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"marker": {
|
|
|
|
"color": "#1db55c"
|
|
|
|
},
|
|
|
|
"mode": "text",
|
|
|
|
"showlegend": false,
|
|
|
|
"text": "0x20c0000",
|
|
|
|
"textposition": "middle center",
|
|
|
|
"type": "scatter",
|
|
|
|
"x": [
|
|
|
|
1.1400000000000001
|
|
|
|
],
|
|
|
|
"y": [
|
|
|
|
10.14
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"marker": {
|
|
|
|
"color": "#3d7e32"
|
|
|
|
},
|
|
|
|
"mode": "text",
|
|
|
|
"name": "_frederic_dest_ptr",
|
|
|
|
"text": "_frederic_dest_ptr",
|
|
|
|
"textposition": "middle center",
|
|
|
|
"type": "scatter",
|
|
|
|
"x": [
|
|
|
|
2.5
|
|
|
|
],
|
|
|
|
"y": [
|
|
|
|
11.52
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"marker": {
|
|
|
|
"color": "#3d7e32"
|
|
|
|
},
|
|
|
|
"mode": "text",
|
|
|
|
"showlegend": false,
|
|
|
|
"text": "0x20c0004",
|
|
|
|
"textposition": "middle center",
|
|
|
|
"type": "scatter",
|
|
|
|
"x": [
|
|
|
|
1.2400000000000002
|
|
|
|
],
|
|
|
|
"y": [
|
|
|
|
11.709999999999999
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"marker": {
|
|
|
|
"color": "#3d7e32"
|
|
|
|
},
|
|
|
|
"mode": "text",
|
|
|
|
"showlegend": false,
|
|
|
|
"text": "0x20c0000",
|
|
|
|
"textposition": "middle center",
|
|
|
|
"type": "scatter",
|
|
|
|
"x": [
|
|
|
|
1.2400000000000002
|
|
|
|
],
|
|
|
|
"y": [
|
|
|
|
11.16
|
|
|
|
]
|
2024-08-21 17:00:18 +00:00
|
|
|
}
|
|
|
|
],
|
|
|
|
"layout": {
|
|
|
|
"autosize": true,
|
2024-08-22 17:50:46 +00:00
|
|
|
"font": {
|
|
|
|
"size": 18
|
|
|
|
},
|
2024-08-21 17:00:18 +00:00
|
|
|
"height": 1200,
|
2024-08-22 17:50:46 +00:00
|
|
|
"legend": {
|
|
|
|
"title": {
|
|
|
|
"text": "Function/Locations"
|
|
|
|
}
|
|
|
|
},
|
2024-08-21 17:00:18 +00:00
|
|
|
"margin": {
|
|
|
|
"b": 20,
|
|
|
|
"l": 200,
|
|
|
|
"r": 20,
|
|
|
|
"t": 20
|
|
|
|
},
|
|
|
|
"shapes": [
|
|
|
|
{
|
2024-08-26 15:45:29 +00:00
|
|
|
"fillcolor": "#856446",
|
2024-08-21 17:00:18 +00:00
|
|
|
"layer": "below",
|
|
|
|
"line": {
|
|
|
|
"width": 2
|
|
|
|
},
|
|
|
|
"opacity": 0.5,
|
|
|
|
"type": "rect",
|
2024-08-25 18:00:07 +00:00
|
|
|
"x0": 0.9,
|
2024-08-26 15:45:29 +00:00
|
|
|
"x1": 4.1,
|
|
|
|
"y0": 0.08,
|
|
|
|
"y1": 3.92
|
2024-08-21 17:00:18 +00:00
|
|
|
},
|
|
|
|
{
|
2024-08-26 15:45:29 +00:00
|
|
|
"fillcolor": "#82f92f",
|
2024-08-21 17:00:18 +00:00
|
|
|
"layer": "below",
|
|
|
|
"line": {
|
|
|
|
"width": 2
|
|
|
|
},
|
|
|
|
"opacity": 0.5,
|
|
|
|
"type": "rect",
|
2024-08-23 16:05:06 +00:00
|
|
|
"x0": 1,
|
2024-08-26 15:45:29 +00:00
|
|
|
"x1": 4,
|
|
|
|
"y0": 1.1,
|
|
|
|
"y1": 1.79
|
2024-08-21 17:00:18 +00:00
|
|
|
},
|
|
|
|
{
|
2024-08-26 15:45:29 +00:00
|
|
|
"fillcolor": "#bd73ad",
|
2024-08-21 17:00:18 +00:00
|
|
|
"layer": "below",
|
|
|
|
"line": {
|
|
|
|
"width": 2
|
|
|
|
},
|
|
|
|
"opacity": 0.5,
|
|
|
|
"type": "rect",
|
2024-08-23 16:05:06 +00:00
|
|
|
"x0": 1,
|
2024-08-26 15:45:29 +00:00
|
|
|
"x1": 4,
|
|
|
|
"y0": 2.1,
|
|
|
|
"y1": 2.79
|
2024-08-21 17:00:18 +00:00
|
|
|
},
|
|
|
|
{
|
2024-08-26 15:45:29 +00:00
|
|
|
"fillcolor": "#7e8007",
|
2024-08-21 17:00:18 +00:00
|
|
|
"layer": "below",
|
|
|
|
"line": {
|
|
|
|
"width": 2
|
|
|
|
},
|
|
|
|
"opacity": 0.5,
|
|
|
|
"type": "rect",
|
2024-08-23 16:05:06 +00:00
|
|
|
"x0": 1,
|
2024-08-26 15:45:29 +00:00
|
|
|
"x1": 4,
|
|
|
|
"y0": 3.1,
|
|
|
|
"y1": 3.79
|
2024-08-21 17:00:18 +00:00
|
|
|
},
|
|
|
|
{
|
2024-08-26 15:45:29 +00:00
|
|
|
"fillcolor": "#7c5233",
|
2024-08-21 17:00:18 +00:00
|
|
|
"layer": "below",
|
|
|
|
"line": {
|
|
|
|
"width": 2
|
|
|
|
},
|
|
|
|
"opacity": 0.5,
|
|
|
|
"type": "rect",
|
2024-08-23 16:05:06 +00:00
|
|
|
"x0": 1,
|
2024-08-26 15:45:29 +00:00
|
|
|
"x1": 4,
|
|
|
|
"y0": 4.08,
|
2024-08-25 18:00:07 +00:00
|
|
|
"y1": 4.92
|
2024-08-21 17:00:18 +00:00
|
|
|
},
|
|
|
|
{
|
2024-08-26 15:45:29 +00:00
|
|
|
"fillcolor": "#6f6733",
|
2024-08-21 17:00:18 +00:00
|
|
|
"layer": "below",
|
|
|
|
"line": {
|
|
|
|
"width": 2
|
|
|
|
},
|
|
|
|
"opacity": 0.5,
|
|
|
|
"type": "rect",
|
2024-08-23 16:05:06 +00:00
|
|
|
"x0": 1,
|
2024-08-26 15:45:29 +00:00
|
|
|
"x1": 4,
|
|
|
|
"y0": 5.08,
|
|
|
|
"y1": 5.92
|
2024-08-21 17:00:18 +00:00
|
|
|
},
|
|
|
|
{
|
2024-08-26 15:45:29 +00:00
|
|
|
"fillcolor": "#86ce48",
|
2024-08-21 17:00:18 +00:00
|
|
|
"layer": "below",
|
|
|
|
"line": {
|
|
|
|
"width": 2
|
|
|
|
},
|
|
|
|
"opacity": 0.5,
|
|
|
|
"type": "rect",
|
2024-08-23 16:05:06 +00:00
|
|
|
"x0": 1,
|
2024-08-26 15:45:29 +00:00
|
|
|
"x1": 4,
|
|
|
|
"y0": 6.08,
|
|
|
|
"y1": 6.92
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"fillcolor": "#de3ae2",
|
|
|
|
"layer": "below",
|
|
|
|
"line": {
|
|
|
|
"width": 2
|
|
|
|
},
|
|
|
|
"opacity": 0.5,
|
|
|
|
"type": "rect",
|
|
|
|
"x0": 0.9,
|
|
|
|
"x1": 4.1,
|
|
|
|
"y0": 7.08,
|
|
|
|
"y1": 8.42
|
2024-08-21 17:00:18 +00:00
|
|
|
},
|
|
|
|
{
|
2024-08-26 15:45:29 +00:00
|
|
|
"fillcolor": "#292d88",
|
2024-08-21 17:00:18 +00:00
|
|
|
"layer": "below",
|
|
|
|
"line": {
|
|
|
|
"width": 2
|
|
|
|
},
|
|
|
|
"opacity": 0.5,
|
|
|
|
"type": "rect",
|
2024-08-23 16:05:06 +00:00
|
|
|
"x0": 1,
|
2024-08-26 15:45:29 +00:00
|
|
|
"x1": 4,
|
|
|
|
"y0": 8.1,
|
|
|
|
"y1": 8.79
|
2024-08-21 17:00:18 +00:00
|
|
|
},
|
|
|
|
{
|
2024-08-26 15:45:29 +00:00
|
|
|
"fillcolor": "#5d64be",
|
2024-08-21 17:00:18 +00:00
|
|
|
"layer": "below",
|
|
|
|
"line": {
|
|
|
|
"width": 2
|
|
|
|
},
|
|
|
|
"opacity": 0.5,
|
|
|
|
"type": "rect",
|
2024-08-23 16:05:06 +00:00
|
|
|
"x0": 1,
|
2024-08-26 15:45:29 +00:00
|
|
|
"x1": 4,
|
|
|
|
"y0": 9.1,
|
|
|
|
"y1": 9.79
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"fillcolor": "#1db55c",
|
|
|
|
"layer": "below",
|
|
|
|
"line": {
|
|
|
|
"width": 2
|
|
|
|
},
|
|
|
|
"opacity": 0.5,
|
|
|
|
"type": "rect",
|
|
|
|
"x0": 0.9,
|
|
|
|
"x1": 4.1,
|
|
|
|
"y0": 10.08,
|
|
|
|
"y1": 11.92
|
2024-08-21 17:00:18 +00:00
|
|
|
},
|
|
|
|
{
|
2024-08-26 15:45:29 +00:00
|
|
|
"fillcolor": "#3d7e32",
|
2024-08-21 17:00:18 +00:00
|
|
|
"layer": "below",
|
|
|
|
"line": {
|
|
|
|
"width": 2
|
|
|
|
},
|
|
|
|
"opacity": 0.5,
|
|
|
|
"type": "rect",
|
2024-08-23 16:05:06 +00:00
|
|
|
"x0": 1,
|
2024-08-26 15:45:29 +00:00
|
|
|
"x1": 4,
|
|
|
|
"y0": 11.1,
|
|
|
|
"y1": 11.79
|
2024-08-21 17:00:18 +00:00
|
|
|
}
|
|
|
|
],
|
|
|
|
"template": {
|
|
|
|
"data": {
|
|
|
|
"bar": [
|
|
|
|
{
|
|
|
|
"error_x": {
|
|
|
|
"color": "#2a3f5f"
|
|
|
|
},
|
|
|
|
"error_y": {
|
|
|
|
"color": "#2a3f5f"
|
|
|
|
},
|
|
|
|
"marker": {
|
|
|
|
"line": {
|
|
|
|
"color": "#E5ECF6",
|
|
|
|
"width": 0.5
|
|
|
|
},
|
|
|
|
"pattern": {
|
|
|
|
"fillmode": "overlay",
|
|
|
|
"size": 10,
|
|
|
|
"solidity": 0.2
|
|
|
|
}
|
|
|
|
},
|
|
|
|
"type": "bar"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"barpolar": [
|
|
|
|
{
|
|
|
|
"marker": {
|
|
|
|
"line": {
|
|
|
|
"color": "#E5ECF6",
|
|
|
|
"width": 0.5
|
|
|
|
},
|
|
|
|
"pattern": {
|
|
|
|
"fillmode": "overlay",
|
|
|
|
"size": 10,
|
|
|
|
"solidity": 0.2
|
|
|
|
}
|
|
|
|
},
|
|
|
|
"type": "barpolar"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"carpet": [
|
|
|
|
{
|
|
|
|
"aaxis": {
|
|
|
|
"endlinecolor": "#2a3f5f",
|
|
|
|
"gridcolor": "white",
|
|
|
|
"linecolor": "white",
|
|
|
|
"minorgridcolor": "white",
|
|
|
|
"startlinecolor": "#2a3f5f"
|
|
|
|
},
|
|
|
|
"baxis": {
|
|
|
|
"endlinecolor": "#2a3f5f",
|
|
|
|
"gridcolor": "white",
|
|
|
|
"linecolor": "white",
|
|
|
|
"minorgridcolor": "white",
|
|
|
|
"startlinecolor": "#2a3f5f"
|
|
|
|
},
|
|
|
|
"type": "carpet"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"choropleth": [
|
|
|
|
{
|
|
|
|
"colorbar": {
|
|
|
|
"outlinewidth": 0,
|
|
|
|
"ticks": ""
|
|
|
|
},
|
|
|
|
"type": "choropleth"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"contour": [
|
|
|
|
{
|
|
|
|
"colorbar": {
|
|
|
|
"outlinewidth": 0,
|
|
|
|
"ticks": ""
|
|
|
|
},
|
|
|
|
"colorscale": [
|
|
|
|
[
|
|
|
|
0,
|
|
|
|
"#0d0887"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
0.1111111111111111,
|
|
|
|
"#46039f"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
0.2222222222222222,
|
|
|
|
"#7201a8"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
0.3333333333333333,
|
|
|
|
"#9c179e"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
0.4444444444444444,
|
|
|
|
"#bd3786"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
0.5555555555555556,
|
|
|
|
"#d8576b"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
0.6666666666666666,
|
|
|
|
"#ed7953"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
0.7777777777777778,
|
|
|
|
"#fb9f3a"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
0.8888888888888888,
|
|
|
|
"#fdca26"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
1,
|
|
|
|
"#f0f921"
|
|
|
|
]
|
|
|
|
],
|
|
|
|
"type": "contour"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"contourcarpet": [
|
|
|
|
{
|
|
|
|
"colorbar": {
|
|
|
|
"outlinewidth": 0,
|
|
|
|
"ticks": ""
|
|
|
|
},
|
|
|
|
"type": "contourcarpet"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"heatmap": [
|
|
|
|
{
|
|
|
|
"colorbar": {
|
|
|
|
"outlinewidth": 0,
|
|
|
|
"ticks": ""
|
|
|
|
},
|
|
|
|
"colorscale": [
|
|
|
|
[
|
|
|
|
0,
|
|
|
|
"#0d0887"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
0.1111111111111111,
|
|
|
|
"#46039f"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
0.2222222222222222,
|
|
|
|
"#7201a8"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
0.3333333333333333,
|
|
|
|
"#9c179e"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
0.4444444444444444,
|
|
|
|
"#bd3786"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
0.5555555555555556,
|
|
|
|
"#d8576b"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
0.6666666666666666,
|
|
|
|
"#ed7953"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
0.7777777777777778,
|
|
|
|
"#fb9f3a"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
0.8888888888888888,
|
|
|
|
"#fdca26"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
1,
|
|
|
|
"#f0f921"
|
|
|
|
]
|
|
|
|
],
|
|
|
|
"type": "heatmap"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"heatmapgl": [
|
|
|
|
{
|
|
|
|
"colorbar": {
|
|
|
|
"outlinewidth": 0,
|
|
|
|
"ticks": ""
|
|
|
|
},
|
|
|
|
"colorscale": [
|
|
|
|
[
|
|
|
|
0,
|
|
|
|
"#0d0887"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
0.1111111111111111,
|
|
|
|
"#46039f"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
0.2222222222222222,
|
|
|
|
"#7201a8"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
0.3333333333333333,
|
|
|
|
"#9c179e"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
0.4444444444444444,
|
|
|
|
"#bd3786"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
0.5555555555555556,
|
|
|
|
"#d8576b"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
0.6666666666666666,
|
|
|
|
"#ed7953"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
0.7777777777777778,
|
|
|
|
"#fb9f3a"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
0.8888888888888888,
|
|
|
|
"#fdca26"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
1,
|
|
|
|
"#f0f921"
|
|
|
|
]
|
|
|
|
],
|
|
|
|
"type": "heatmapgl"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"histogram": [
|
|
|
|
{
|
|
|
|
"marker": {
|
|
|
|
"pattern": {
|
|
|
|
"fillmode": "overlay",
|
|
|
|
"size": 10,
|
|
|
|
"solidity": 0.2
|
|
|
|
}
|
|
|
|
},
|
|
|
|
"type": "histogram"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"histogram2d": [
|
|
|
|
{
|
|
|
|
"colorbar": {
|
|
|
|
"outlinewidth": 0,
|
|
|
|
"ticks": ""
|
|
|
|
},
|
|
|
|
"colorscale": [
|
|
|
|
[
|
|
|
|
0,
|
|
|
|
"#0d0887"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
0.1111111111111111,
|
|
|
|
"#46039f"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
0.2222222222222222,
|
|
|
|
"#7201a8"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
0.3333333333333333,
|
|
|
|
"#9c179e"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
0.4444444444444444,
|
|
|
|
"#bd3786"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
0.5555555555555556,
|
|
|
|
"#d8576b"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
0.6666666666666666,
|
|
|
|
"#ed7953"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
0.7777777777777778,
|
|
|
|
"#fb9f3a"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
0.8888888888888888,
|
|
|
|
"#fdca26"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
1,
|
|
|
|
"#f0f921"
|
|
|
|
]
|
|
|
|
],
|
|
|
|
"type": "histogram2d"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"histogram2dcontour": [
|
|
|
|
{
|
|
|
|
"colorbar": {
|
|
|
|
"outlinewidth": 0,
|
|
|
|
"ticks": ""
|
|
|
|
},
|
|
|
|
"colorscale": [
|
|
|
|
[
|
|
|
|
0,
|
|
|
|
"#0d0887"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
0.1111111111111111,
|
|
|
|
"#46039f"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
0.2222222222222222,
|
|
|
|
"#7201a8"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
0.3333333333333333,
|
|
|
|
"#9c179e"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
0.4444444444444444,
|
|
|
|
"#bd3786"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
0.5555555555555556,
|
|
|
|
"#d8576b"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
0.6666666666666666,
|
|
|
|
"#ed7953"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
0.7777777777777778,
|
|
|
|
"#fb9f3a"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
0.8888888888888888,
|
|
|
|
"#fdca26"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
1,
|
|
|
|
"#f0f921"
|
|
|
|
]
|
|
|
|
],
|
|
|
|
"type": "histogram2dcontour"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"mesh3d": [
|
|
|
|
{
|
|
|
|
"colorbar": {
|
|
|
|
"outlinewidth": 0,
|
|
|
|
"ticks": ""
|
|
|
|
},
|
|
|
|
"type": "mesh3d"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"parcoords": [
|
|
|
|
{
|
|
|
|
"line": {
|
|
|
|
"colorbar": {
|
|
|
|
"outlinewidth": 0,
|
|
|
|
"ticks": ""
|
|
|
|
}
|
|
|
|
},
|
|
|
|
"type": "parcoords"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"pie": [
|
|
|
|
{
|
|
|
|
"automargin": true,
|
|
|
|
"type": "pie"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"scatter": [
|
|
|
|
{
|
|
|
|
"fillpattern": {
|
|
|
|
"fillmode": "overlay",
|
|
|
|
"size": 10,
|
|
|
|
"solidity": 0.2
|
|
|
|
},
|
|
|
|
"type": "scatter"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"scatter3d": [
|
|
|
|
{
|
|
|
|
"line": {
|
|
|
|
"colorbar": {
|
|
|
|
"outlinewidth": 0,
|
|
|
|
"ticks": ""
|
|
|
|
}
|
|
|
|
},
|
|
|
|
"marker": {
|
|
|
|
"colorbar": {
|
|
|
|
"outlinewidth": 0,
|
|
|
|
"ticks": ""
|
|
|
|
}
|
|
|
|
},
|
|
|
|
"type": "scatter3d"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"scattercarpet": [
|
|
|
|
{
|
|
|
|
"marker": {
|
|
|
|
"colorbar": {
|
|
|
|
"outlinewidth": 0,
|
|
|
|
"ticks": ""
|
|
|
|
}
|
|
|
|
},
|
|
|
|
"type": "scattercarpet"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"scattergeo": [
|
|
|
|
{
|
|
|
|
"marker": {
|
|
|
|
"colorbar": {
|
|
|
|
"outlinewidth": 0,
|
|
|
|
"ticks": ""
|
|
|
|
}
|
|
|
|
},
|
|
|
|
"type": "scattergeo"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"scattergl": [
|
|
|
|
{
|
|
|
|
"marker": {
|
|
|
|
"colorbar": {
|
|
|
|
"outlinewidth": 0,
|
|
|
|
"ticks": ""
|
|
|
|
}
|
|
|
|
},
|
|
|
|
"type": "scattergl"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"scattermapbox": [
|
|
|
|
{
|
|
|
|
"marker": {
|
|
|
|
"colorbar": {
|
|
|
|
"outlinewidth": 0,
|
|
|
|
"ticks": ""
|
|
|
|
}
|
|
|
|
},
|
|
|
|
"type": "scattermapbox"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"scatterpolar": [
|
|
|
|
{
|
|
|
|
"marker": {
|
|
|
|
"colorbar": {
|
|
|
|
"outlinewidth": 0,
|
|
|
|
"ticks": ""
|
|
|
|
}
|
|
|
|
},
|
|
|
|
"type": "scatterpolar"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"scatterpolargl": [
|
|
|
|
{
|
|
|
|
"marker": {
|
|
|
|
"colorbar": {
|
|
|
|
"outlinewidth": 0,
|
|
|
|
"ticks": ""
|
|
|
|
}
|
|
|
|
},
|
|
|
|
"type": "scatterpolargl"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"scatterternary": [
|
|
|
|
{
|
|
|
|
"marker": {
|
|
|
|
"colorbar": {
|
|
|
|
"outlinewidth": 0,
|
|
|
|
"ticks": ""
|
|
|
|
}
|
|
|
|
},
|
|
|
|
"type": "scatterternary"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"surface": [
|
|
|
|
{
|
|
|
|
"colorbar": {
|
|
|
|
"outlinewidth": 0,
|
|
|
|
"ticks": ""
|
|
|
|
},
|
|
|
|
"colorscale": [
|
|
|
|
[
|
|
|
|
0,
|
|
|
|
"#0d0887"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
0.1111111111111111,
|
|
|
|
"#46039f"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
0.2222222222222222,
|
|
|
|
"#7201a8"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
0.3333333333333333,
|
|
|
|
"#9c179e"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
0.4444444444444444,
|
|
|
|
"#bd3786"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
0.5555555555555556,
|
|
|
|
"#d8576b"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
0.6666666666666666,
|
|
|
|
"#ed7953"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
0.7777777777777778,
|
|
|
|
"#fb9f3a"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
0.8888888888888888,
|
|
|
|
"#fdca26"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
1,
|
|
|
|
"#f0f921"
|
|
|
|
]
|
|
|
|
],
|
|
|
|
"type": "surface"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"table": [
|
|
|
|
{
|
|
|
|
"cells": {
|
|
|
|
"fill": {
|
|
|
|
"color": "#EBF0F8"
|
|
|
|
},
|
|
|
|
"line": {
|
|
|
|
"color": "white"
|
|
|
|
}
|
|
|
|
},
|
|
|
|
"header": {
|
|
|
|
"fill": {
|
|
|
|
"color": "#C8D4E3"
|
|
|
|
},
|
|
|
|
"line": {
|
|
|
|
"color": "white"
|
|
|
|
}
|
|
|
|
},
|
|
|
|
"type": "table"
|
|
|
|
}
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"layout": {
|
|
|
|
"annotationdefaults": {
|
|
|
|
"arrowcolor": "#2a3f5f",
|
|
|
|
"arrowhead": 0,
|
|
|
|
"arrowwidth": 1
|
|
|
|
},
|
|
|
|
"autotypenumbers": "strict",
|
|
|
|
"coloraxis": {
|
|
|
|
"colorbar": {
|
|
|
|
"outlinewidth": 0,
|
|
|
|
"ticks": ""
|
|
|
|
}
|
|
|
|
},
|
|
|
|
"colorscale": {
|
|
|
|
"diverging": [
|
|
|
|
[
|
|
|
|
0,
|
|
|
|
"#8e0152"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
0.1,
|
|
|
|
"#c51b7d"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
0.2,
|
|
|
|
"#de77ae"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
0.3,
|
|
|
|
"#f1b6da"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
0.4,
|
|
|
|
"#fde0ef"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
0.5,
|
|
|
|
"#f7f7f7"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
0.6,
|
|
|
|
"#e6f5d0"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
0.7,
|
|
|
|
"#b8e186"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
0.8,
|
|
|
|
"#7fbc41"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
0.9,
|
|
|
|
"#4d9221"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
1,
|
|
|
|
"#276419"
|
|
|
|
]
|
|
|
|
],
|
|
|
|
"sequential": [
|
|
|
|
[
|
|
|
|
0,
|
|
|
|
"#0d0887"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
0.1111111111111111,
|
|
|
|
"#46039f"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
0.2222222222222222,
|
|
|
|
"#7201a8"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
0.3333333333333333,
|
|
|
|
"#9c179e"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
0.4444444444444444,
|
|
|
|
"#bd3786"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
0.5555555555555556,
|
|
|
|
"#d8576b"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
0.6666666666666666,
|
|
|
|
"#ed7953"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
0.7777777777777778,
|
|
|
|
"#fb9f3a"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
0.8888888888888888,
|
|
|
|
"#fdca26"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
1,
|
|
|
|
"#f0f921"
|
|
|
|
]
|
|
|
|
],
|
|
|
|
"sequentialminus": [
|
|
|
|
[
|
|
|
|
0,
|
|
|
|
"#0d0887"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
0.1111111111111111,
|
|
|
|
"#46039f"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
0.2222222222222222,
|
|
|
|
"#7201a8"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
0.3333333333333333,
|
|
|
|
"#9c179e"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
0.4444444444444444,
|
|
|
|
"#bd3786"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
0.5555555555555556,
|
|
|
|
"#d8576b"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
0.6666666666666666,
|
|
|
|
"#ed7953"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
0.7777777777777778,
|
|
|
|
"#fb9f3a"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
0.8888888888888888,
|
|
|
|
"#fdca26"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
1,
|
|
|
|
"#f0f921"
|
|
|
|
]
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"colorway": [
|
|
|
|
"#636efa",
|
|
|
|
"#EF553B",
|
|
|
|
"#00cc96",
|
|
|
|
"#ab63fa",
|
|
|
|
"#FFA15A",
|
|
|
|
"#19d3f3",
|
|
|
|
"#FF6692",
|
|
|
|
"#B6E880",
|
|
|
|
"#FF97FF",
|
|
|
|
"#FECB52"
|
|
|
|
],
|
|
|
|
"font": {
|
|
|
|
"color": "#2a3f5f"
|
|
|
|
},
|
|
|
|
"geo": {
|
|
|
|
"bgcolor": "white",
|
|
|
|
"lakecolor": "white",
|
|
|
|
"landcolor": "#E5ECF6",
|
|
|
|
"showlakes": true,
|
|
|
|
"showland": true,
|
|
|
|
"subunitcolor": "white"
|
|
|
|
},
|
|
|
|
"hoverlabel": {
|
|
|
|
"align": "left"
|
|
|
|
},
|
|
|
|
"hovermode": "closest",
|
|
|
|
"mapbox": {
|
|
|
|
"style": "light"
|
|
|
|
},
|
|
|
|
"paper_bgcolor": "white",
|
|
|
|
"plot_bgcolor": "#E5ECF6",
|
|
|
|
"polar": {
|
|
|
|
"angularaxis": {
|
|
|
|
"gridcolor": "white",
|
|
|
|
"linecolor": "white",
|
|
|
|
"ticks": ""
|
|
|
|
},
|
|
|
|
"bgcolor": "#E5ECF6",
|
|
|
|
"radialaxis": {
|
|
|
|
"gridcolor": "white",
|
|
|
|
"linecolor": "white",
|
|
|
|
"ticks": ""
|
|
|
|
}
|
|
|
|
},
|
|
|
|
"scene": {
|
|
|
|
"xaxis": {
|
|
|
|
"backgroundcolor": "#E5ECF6",
|
|
|
|
"gridcolor": "white",
|
|
|
|
"gridwidth": 2,
|
|
|
|
"linecolor": "white",
|
|
|
|
"showbackground": true,
|
|
|
|
"ticks": "",
|
|
|
|
"zerolinecolor": "white"
|
|
|
|
},
|
|
|
|
"yaxis": {
|
|
|
|
"backgroundcolor": "#E5ECF6",
|
|
|
|
"gridcolor": "white",
|
|
|
|
"gridwidth": 2,
|
|
|
|
"linecolor": "white",
|
|
|
|
"showbackground": true,
|
|
|
|
"ticks": "",
|
|
|
|
"zerolinecolor": "white"
|
|
|
|
},
|
|
|
|
"zaxis": {
|
|
|
|
"backgroundcolor": "#E5ECF6",
|
|
|
|
"gridcolor": "white",
|
|
|
|
"gridwidth": 2,
|
|
|
|
"linecolor": "white",
|
|
|
|
"showbackground": true,
|
|
|
|
"ticks": "",
|
|
|
|
"zerolinecolor": "white"
|
|
|
|
}
|
|
|
|
},
|
|
|
|
"shapedefaults": {
|
|
|
|
"line": {
|
|
|
|
"color": "#2a3f5f"
|
|
|
|
}
|
|
|
|
},
|
|
|
|
"ternary": {
|
|
|
|
"aaxis": {
|
|
|
|
"gridcolor": "white",
|
|
|
|
"linecolor": "white",
|
|
|
|
"ticks": ""
|
|
|
|
},
|
|
|
|
"baxis": {
|
|
|
|
"gridcolor": "white",
|
|
|
|
"linecolor": "white",
|
|
|
|
"ticks": ""
|
|
|
|
},
|
|
|
|
"bgcolor": "#E5ECF6",
|
|
|
|
"caxis": {
|
|
|
|
"gridcolor": "white",
|
|
|
|
"linecolor": "white",
|
|
|
|
"ticks": ""
|
|
|
|
}
|
|
|
|
},
|
|
|
|
"title": {
|
|
|
|
"x": 0.05
|
|
|
|
},
|
|
|
|
"xaxis": {
|
|
|
|
"automargin": true,
|
|
|
|
"gridcolor": "white",
|
|
|
|
"linecolor": "white",
|
|
|
|
"ticks": "",
|
|
|
|
"title": {
|
|
|
|
"standoff": 15
|
|
|
|
},
|
|
|
|
"zerolinecolor": "white",
|
|
|
|
"zerolinewidth": 2
|
|
|
|
},
|
|
|
|
"yaxis": {
|
|
|
|
"automargin": true,
|
|
|
|
"gridcolor": "white",
|
|
|
|
"linecolor": "white",
|
|
|
|
"ticks": "",
|
|
|
|
"title": {
|
|
|
|
"standoff": 15
|
|
|
|
},
|
|
|
|
"zerolinecolor": "white",
|
|
|
|
"zerolinewidth": 2
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
2024-08-25 18:00:07 +00:00
|
|
|
"width": 1200,
|
2024-08-21 17:00:18 +00:00
|
|
|
"xaxis": {
|
|
|
|
"range": [
|
|
|
|
0,
|
2024-08-26 15:45:29 +00:00
|
|
|
5
|
2024-08-21 17:00:18 +00:00
|
|
|
],
|
2024-08-25 18:00:07 +00:00
|
|
|
"showgrid": false,
|
2024-08-22 17:50:46 +00:00
|
|
|
"showticklabels": false,
|
2024-08-21 17:00:18 +00:00
|
|
|
"tickvals": [
|
|
|
|
0,
|
2024-08-23 16:05:06 +00:00
|
|
|
1,
|
|
|
|
2,
|
2024-08-25 18:00:07 +00:00
|
|
|
3,
|
2024-08-26 15:45:29 +00:00
|
|
|
4,
|
|
|
|
5
|
2024-08-21 17:00:18 +00:00
|
|
|
]
|
|
|
|
},
|
|
|
|
"yaxis": {
|
2024-08-22 17:50:46 +00:00
|
|
|
"gridcolor": "black",
|
|
|
|
"griddash": "longdashdot",
|
|
|
|
"gridwidth": 0,
|
|
|
|
"showgrid": false,
|
2024-08-25 18:00:07 +00:00
|
|
|
"showticklabels": true,
|
2024-08-21 17:00:18 +00:00
|
|
|
"tickvals": [
|
|
|
|
0,
|
2024-08-25 18:00:07 +00:00
|
|
|
1,
|
|
|
|
2,
|
|
|
|
3,
|
|
|
|
4,
|
|
|
|
5,
|
|
|
|
6,
|
|
|
|
7,
|
|
|
|
8,
|
2024-08-26 15:45:29 +00:00
|
|
|
9,
|
|
|
|
10,
|
|
|
|
11
|
2024-08-21 17:00:18 +00:00
|
|
|
]
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
"metadata": {},
|
|
|
|
"output_type": "display_data"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"source": [
|
|
|
|
"import plotly.graph_objects as go\n",
|
2024-08-22 17:50:46 +00:00
|
|
|
"import random\n",
|
2024-08-21 17:00:18 +00:00
|
|
|
"\n",
|
2024-08-22 17:50:46 +00:00
|
|
|
"tickpointers = []\n",
|
2024-08-25 18:00:07 +00:00
|
|
|
"vertical_len = len(data['overlap_with'].unique())\n",
|
2024-08-26 15:45:29 +00:00
|
|
|
"vertical_gap_percentage = 0.08\n",
|
2024-08-25 18:00:07 +00:00
|
|
|
"horizontal_gap = 0.1\n",
|
2024-08-26 15:45:29 +00:00
|
|
|
"labels = pd.DataFrame()\n",
|
2024-08-21 17:00:18 +00:00
|
|
|
"\n",
|
|
|
|
"def random_color():\n",
|
|
|
|
" return f'#{random.randint(0, 0xFFFFFF):06x}'\n",
|
|
|
|
"\n",
|
|
|
|
"fig = go.Figure()\n",
|
2024-08-25 18:00:07 +00:00
|
|
|
"\n",
|
|
|
|
"for i, d in data.iterrows():\n",
|
2024-08-22 17:50:46 +00:00
|
|
|
" fillcolor = random_color()\n",
|
2024-08-25 18:00:07 +00:00
|
|
|
" data.at[i, 'fillcolor'] = fillcolor\n",
|
|
|
|
" \n",
|
|
|
|
" x0=1\n",
|
2024-08-26 15:45:29 +00:00
|
|
|
" x1=4\n",
|
2024-08-25 18:00:07 +00:00
|
|
|
"\n",
|
|
|
|
" if d['overlap'] == False:\n",
|
|
|
|
" y0=d['overlap_with']\n",
|
|
|
|
" y1=d['overlap_with']+1\n",
|
|
|
|
" elif d['overlap'] == True:\n",
|
|
|
|
" overlaps = data.loc[data['overlap_with'] == d['overlap_with']].shape[0]\n",
|
2024-08-22 17:50:46 +00:00
|
|
|
"\n",
|
2024-08-25 18:00:07 +00:00
|
|
|
" # Calculate relative size of the overlap\n",
|
|
|
|
" overlap_sizes = data.loc[data['overlap_with'] == d['overlap_with']].iloc[1:]['size'].sum()\n",
|
|
|
|
"\n",
|
2024-08-26 15:45:29 +00:00
|
|
|
" if d['overlap_with'] == i:\n",
|
2024-08-25 18:00:07 +00:00
|
|
|
" y0=i\n",
|
|
|
|
" y1=overlaps+i\n",
|
2024-08-26 15:45:29 +00:00
|
|
|
" if i != data.shape[0]+1:\n",
|
|
|
|
" if d['end'] > data.iloc[i+1].start and d['end'] < data.iloc[i+1].end:\n",
|
|
|
|
" y1=overlaps+i-0.5\n",
|
2024-08-25 18:00:07 +00:00
|
|
|
" x0=x0-horizontal_gap\n",
|
|
|
|
" x1=x1+horizontal_gap\n",
|
|
|
|
" else:\n",
|
|
|
|
" y0=0.02+i\n",
|
2024-08-26 15:45:29 +00:00
|
|
|
" y1=0.87+i\n",
|
2024-08-22 17:50:46 +00:00
|
|
|
" else:\n",
|
2024-08-25 18:00:07 +00:00
|
|
|
" print(f'Something went wrong with {d}. Skipping')\n",
|
|
|
|
" continue\n",
|
2024-08-22 17:50:46 +00:00
|
|
|
"\n",
|
2024-08-21 17:00:18 +00:00
|
|
|
" fig.add_shape(\n",
|
|
|
|
" type=\"rect\",\n",
|
2024-08-22 17:50:46 +00:00
|
|
|
" x0=x0,\n",
|
2024-08-25 18:00:07 +00:00
|
|
|
" x1=x1,\n",
|
2024-08-26 15:45:29 +00:00
|
|
|
" y0=y0+vertical_gap_percentage,\n",
|
|
|
|
" y1=y1-vertical_gap_percentage,\n",
|
2024-08-21 17:00:18 +00:00
|
|
|
" line=dict(width=2),\n",
|
2024-08-22 17:50:46 +00:00
|
|
|
" fillcolor=fillcolor,\n",
|
2024-08-21 17:00:18 +00:00
|
|
|
" opacity=0.5,\n",
|
2024-08-22 17:50:46 +00:00
|
|
|
" layer=\"below\",\n",
|
2024-08-21 17:00:18 +00:00
|
|
|
" )\n",
|
|
|
|
"\n",
|
2024-08-26 15:45:29 +00:00
|
|
|
" # Add middle text\n",
|
2024-08-21 17:00:18 +00:00
|
|
|
" fig.add_trace(go.Scatter\n",
|
|
|
|
" (\n",
|
2024-08-25 18:00:07 +00:00
|
|
|
" x=[(x0+x1)/2],\n",
|
|
|
|
" y=[y0+0.5],\n",
|
2024-08-21 17:00:18 +00:00
|
|
|
" text=d['name'],\n",
|
|
|
|
" mode=\"text\",\n",
|
2024-08-22 17:50:46 +00:00
|
|
|
" textposition=\"middle center\",\n",
|
|
|
|
" name=d['name'],\n",
|
|
|
|
" marker=dict(\n",
|
|
|
|
" color=fillcolor,\n",
|
|
|
|
" ),\n",
|
2024-08-21 17:00:18 +00:00
|
|
|
" ))\n",
|
|
|
|
"\n",
|
2024-08-26 15:45:29 +00:00
|
|
|
" # Add top-left text with d['end']\n",
|
|
|
|
" fig.add_trace(go.Scatter\n",
|
|
|
|
" (\n",
|
|
|
|
" x=[(x0+0.14+horizontal_gap)],\n",
|
|
|
|
" y=[y1-0.16],\n",
|
|
|
|
" text=hex(d['end']),\n",
|
|
|
|
" mode=\"text\",\n",
|
|
|
|
" textposition=\"middle center\",\n",
|
|
|
|
" marker=dict(\n",
|
|
|
|
" color=fillcolor,\n",
|
|
|
|
" ),\n",
|
|
|
|
" showlegend=False,\n",
|
|
|
|
" ))\n",
|
|
|
|
"\n",
|
|
|
|
" # Add bottom-left text with d['end']\n",
|
|
|
|
" fig.add_trace(go.Scatter\n",
|
|
|
|
" (\n",
|
|
|
|
" x=[(x0+0.14+horizontal_gap)],\n",
|
|
|
|
" y=[y0+0.14],\n",
|
|
|
|
" text=hex(d['start']),\n",
|
|
|
|
" mode=\"text\",\n",
|
|
|
|
" textposition=\"middle center\",\n",
|
|
|
|
" marker=dict(\n",
|
|
|
|
" color=fillcolor,\n",
|
|
|
|
" ),\n",
|
|
|
|
" showlegend=False,\n",
|
|
|
|
" ))\n",
|
|
|
|
"\n",
|
2024-08-21 17:00:18 +00:00
|
|
|
"fig.update_xaxes(\n",
|
2024-08-26 15:45:29 +00:00
|
|
|
" range=[0, 5],\n",
|
|
|
|
" tickvals=[0, 1, 2, 3, 4, 5],\n",
|
2024-08-21 17:00:18 +00:00
|
|
|
")\n",
|
|
|
|
"\n",
|
2024-08-26 15:45:29 +00:00
|
|
|
"start_values = data['start'].sort_values()\n",
|
|
|
|
"end_values = data['end'].sort_values()\n",
|
|
|
|
"\n",
|
2024-08-25 18:00:07 +00:00
|
|
|
"labels = []\n",
|
2024-08-26 15:45:29 +00:00
|
|
|
"\n",
|
|
|
|
"for i, d in data.iterrows():\n",
|
|
|
|
" if i == 0:\n",
|
|
|
|
" labels.append(f'{hex(start_values.iloc[i])}')\n",
|
|
|
|
" elif i == len(data)-1:\n",
|
|
|
|
" labels.append(f'{hex(end_values.iloc[i])}')\n",
|
|
|
|
" else:\n",
|
|
|
|
" labels.append(f'{hex(start_values.iloc[i])}<br>{hex(end_values.iloc[i-1])}')\n",
|
2024-08-21 17:00:18 +00:00
|
|
|
"\n",
|
2024-08-25 18:00:07 +00:00
|
|
|
"tickpointers = [i for i in range(len(data))]\n",
|
2024-08-21 17:00:18 +00:00
|
|
|
"\n",
|
|
|
|
"fig.update_yaxes(\n",
|
2024-08-22 17:50:46 +00:00
|
|
|
" # tickvals=[i for i in range(len(data)+1)], \n",
|
|
|
|
" tickvals = tickpointers,\n",
|
2024-08-26 15:45:29 +00:00
|
|
|
" # ticktext= labels,\n",
|
2024-08-22 17:50:46 +00:00
|
|
|
" griddash=\"longdashdot\",\n",
|
|
|
|
" gridwidth=0,\n",
|
|
|
|
" gridcolor=\"black\",\n",
|
|
|
|
" showgrid=False,\n",
|
2024-08-25 18:00:07 +00:00
|
|
|
" showticklabels=True,\n",
|
2024-08-22 17:50:46 +00:00
|
|
|
")\n",
|
|
|
|
"\n",
|
|
|
|
"fig.update_xaxes(\n",
|
2024-08-25 18:00:07 +00:00
|
|
|
" showgrid=False,\n",
|
2024-08-22 17:50:46 +00:00
|
|
|
" showticklabels=False,\n",
|
|
|
|
")\n",
|
|
|
|
"\n",
|
|
|
|
"fig.update_layout(\n",
|
2024-08-25 18:00:07 +00:00
|
|
|
" width=1200,\n",
|
2024-08-22 17:50:46 +00:00
|
|
|
" height=1200,\n",
|
|
|
|
" autosize=True,\n",
|
|
|
|
" margin=dict(l=200, r=20, t=20, b=20),\n",
|
|
|
|
" font=dict(\n",
|
|
|
|
" size=18,\n",
|
|
|
|
" ),\n",
|
|
|
|
" # Legend being the name of the function\n",
|
|
|
|
" legend_title_text=\"Function/Locations\",\n",
|
2024-08-21 17:00:18 +00:00
|
|
|
")\n",
|
|
|
|
"\n",
|
|
|
|
"fig.show()"
|
|
|
|
]
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"metadata": {
|
|
|
|
"kernelspec": {
|
|
|
|
"display_name": "venv",
|
|
|
|
"language": "python",
|
|
|
|
"name": "python3"
|
|
|
|
},
|
|
|
|
"language_info": {
|
|
|
|
"codemirror_mode": {
|
|
|
|
"name": "ipython",
|
|
|
|
"version": 3
|
|
|
|
},
|
|
|
|
"file_extension": ".py",
|
|
|
|
"mimetype": "text/x-python",
|
|
|
|
"name": "python",
|
|
|
|
"nbconvert_exporter": "python",
|
|
|
|
"pygments_lexer": "ipython3",
|
|
|
|
"version": "3.10.12"
|
|
|
|
}
|
|
|
|
},
|
|
|
|
"nbformat": 4,
|
|
|
|
"nbformat_minor": 2
|
|
|
|
}
|