Bottom Up Experimentation

This notebook documents the bottom-up strategy experimentation to determine notebook similarity. It is based on the notion that it is easier to aggregate than to break down a 'black box.'

The biggest challenge is working with the AST structure. Because it is a tree, we need to merge leafs with their parents, working our way up.

GOAL

There are two main goals:

  1. Come up with a similarity function for entire notebooks
  2. Maximize the coverage of 'black boxes' while minimizing the number of 'black boxes'

In [1]:
# Necessary imports 
import os
import time
from nbminer.notebook_miner import NotebookMiner
from nbminer.cells.cells import Cell
from nbminer.features.ast_features import ASTFeatures
from nbminer.stats.summary import Summary
from nbminer.stats.multiple_summary import MultipleSummary
from nbminer.encoders.ast_graph.ast_graph import *

In [2]:
people = os.listdir('../testbed/Final')
notebooks = []
for person in people:
    person = os.path.join('../testbed/Final', person)
    if os.path.isdir(person):
        direc = os.listdir(person)
        notebooks.extend([os.path.join(person, filename) for filename in direc if filename.endswith('.ipynb')])
notebook_objs = [NotebookMiner(file) for file in notebooks]
a = ASTFeatures(notebook_objs)

In [3]:
for i, nb in enumerate(a.nb_features):
    a.nb_features[i] = nb.get_new_notebook()

In [ ]:


In [4]:
agr = ASTGraphReducer(a, threshold=5, split_call=True)
agr.set_graphs()
print ('Total number of graphs:',agr.number_graphs())
print ('Total number of graphs with one node:',agr.number_single())
print ('Total number of nodes:',agr.count_nodes())
print (agr.count_nodes())


Total number of graphs: 19882
Total number of graphs with one node: 0
Total number of nodes: 289657
289657

In [5]:
cur_count = 0
new_count = 1
print (agr.count_nodes())
while cur_count != new_count:
    cur_count = new_count
    new_count = (agr.count_nodes())
    agr.build_relations()
print (new_count)


289657
60851

In [6]:
print ('Total number of graphs:',agr.number_graphs())
print ('Total number of graphs with one node:',agr.number_single())
print ('Total number of nodes:',agr.count_nodes())
print (agr.count_nodes())


Total number of graphs: 19882
Total number of graphs with one node: 14696
Total number of nodes: 60851
60851

In [ ]:


In [7]:
# Maximum similarity
all_sims = []
max_sim = 0
max_val = None
for i in range(len(a.nb_features)):
    for similarity in a.notebook_jaccard_similarity(i):
        if similarity[1][1] > max_sim:
            max_sim = similarity[1][1]
            max_val = (i, similarity[0])
max_sim, max_val


Out[7]:
(0.19736842105263158, (25, 135))

In [8]:
a.nb_features[2].notebook.filename


Out[8]:
'../testbed/Final/Aimee Montero aimee.montero@epfl.ch/FinalAimeeMontero.ipynb'

In [9]:
a.nb_features[3].notebook.filename


Out[9]:
'../testbed/Final/Akhilesh Gotmare akhilesh.gotmare@epfl.ch/ADA_Final_272620.ipynb'

Black Boxes

Now we're interested in what happened with this bottom up approach. What does the final thing look like? We can print out each graph and get a sense of what's happened, then we can look at some actual code, what it looks like in graph format, and what the black boxes it holds actually mean


In [10]:
for cell in a.nb_features[0].get_all_cells():
    print (cell.get_feature('graph').get_nodes())


['black_box1']
['black_box1']
['black_box1']
['black_box2']
['black_box2']
['black_box1']
['black_box3479']
['black_box2062']
['black_box2062']
['black_box2279']
['black_box4745']
['black_box4745']
['black_box839']
['black_box839']
['black_box4358']
['black_box879']
['black_box879']
['black_box879']
['black_box879']
['black_box840']
['black_box2063']
["<class '_ast.For'>", "<class '_ast.Assign'>", 'Call_append', "<class '_ast.List'>", "<class '_ast.Subscript'>", "<class '_ast.Load'>", 'black_box5', 'black_box2566', "<class '_ast.Load'>", 'black_box51', 'black_box4', 'black_box4', 'black_box2562']
["<class '_ast.Assign'>", 'Call_drop_duplicates', 'black_box51', 'black_box4']
['black_box2063']
["<class '_ast.For'>", "<class '_ast.Assign'>", 'Call_append', "<class '_ast.List'>", "<class '_ast.Subscript'>", "<class '_ast.Load'>", 'black_box5', 'black_box2566', "<class '_ast.Load'>", 'black_box51', 'black_box4', 'black_box4', 'black_box2562']
["<class '_ast.Assign'>", 'Call_drop_duplicates', 'black_box51', 'black_box4']
['black_box67']
['black_box3639']
['black_box3639']
['black_box3639']
['black_box3639']
['black_box2280']
["<class '_ast.Assign'>", 'Call_DataFrame', "<class '_ast.keyword'>", "<class '_ast.List'>", "<class '_ast.List'>", "<class '_ast.Str'>", "<class '_ast.Load'>", 'black_box70', "<class '_ast.List'>", "<class '_ast.Str'>", "<class '_ast.Load'>", 'black_box70', "<class '_ast.Load'>", 'black_box51', 'black_box87', 'black_box87', 'black_box4']
['black_box2281']
["<class '_ast.Expr'>", 'Call_print', 'black_box3', 'black_box70']
['black_box4966']
['black_box2064']
['black_box2065']
['black_box4966']
['black_box2064']
['black_box2065']
['black_box2066']
['black_box2067']
['black_box95']
['black_box3480']
['black_box3480']
['black_box2282']
['black_box4966']
['black_box2064']
['black_box2065']
['black_box4966']
['black_box2064']
['black_box2065']
['black_box2066']
['black_box2067']
['black_box95']
['black_box3480']
['black_box3480']
['black_box2282']
['black_box4966']
['black_box2064']
['black_box2065']
['black_box4966']
['black_box2064']
['black_box2065']
['black_box2066']
['black_box2067']
['black_box95']
['black_box3480']
['black_box3480']
['black_box2282']
['black_box96']
['black_box2063']
["<class '_ast.For'>", "<class '_ast.Assign'>", "<class '_ast.Subscript'>", "<class '_ast.Load'>", 'black_box5', 'black_box2566', 'black_box4', "<class '_ast.If'>", "<class '_ast.Assign'>", 'black_box4', 'black_box976', "<class '_ast.Assign'>", 'Call_append', 'black_box51', 'black_box129', 'black_box56', "<class '_ast.Assign'>", 'Call_append', 'black_box8', 'black_box51', 'black_box56', 'black_box108', 'black_box4', 'black_box2562']
['black_box95']
['black_box880']
['black_box880']
['black_box2069']
['black_box880']
['black_box880']
['black_box2069']
['black_box2070']
['black_box2070']
['black_box2070']
['black_box2070']
['black_box881']
["<class '_ast.Expr'>", 'Call_fit', 'black_box51', 'black_box51', 'black_box2758']
["<class '_ast.Assign'>", 'Call_predict', 'black_box51', 'black_box2758', 'black_box4']
["<class '_ast.Expr'>", 'Call_print', "<class '_ast.Str'>", 'Call_score', 'black_box51', 'black_box51', 'black_box2758', 'black_box3']
['black_box2']
['black_box2']
["<class '_ast.Assign'>", 'Call_sqrt', 'Call_mean_squared_error', 'Call_reshape', 'black_box25', 'black_box754', 'black_box3', 'black_box3', 'black_box3', 'black_box4']
['black_box841']
['black_box95']
['black_box880']
['black_box880']
['black_box2069']
['black_box880']
['black_box880']
['black_box2069']
['black_box2070']
['black_box2070']
['black_box2070']
['black_box2070']
['black_box881']
["<class '_ast.Expr'>", 'Call_fit', 'black_box51', 'black_box51', 'black_box2758']
["<class '_ast.Expr'>", 'Call_print', "<class '_ast.Str'>", 'Call_score', 'black_box51', 'black_box51', 'black_box2758', 'black_box3']
['black_box2']
['black_box2']
["<class '_ast.Assign'>", 'Call_sqrt', 'Call_mean_squared_error', 'Call_reshape', 'black_box25', 'black_box754', 'black_box3', 'black_box3', 'black_box3', 'black_box4']
['black_box841']
['black_box95']
['black_box880']
['black_box880']
['black_box2069']
['black_box2064']
['black_box2064']
['black_box3640']
['black_box3640']
['black_box2069']
['black_box2070']
['black_box2070']
['black_box2070']
['black_box2070']
['black_box881']
["<class '_ast.Expr'>", 'Call_fit', 'black_box51', 'black_box51', 'black_box51']
["<class '_ast.Expr'>", 'Call_print', "<class '_ast.Str'>", 'Call_score', 'black_box51', 'black_box51', 'black_box51', 'black_box3']
['black_box2']
['black_box2']
["<class '_ast.Assign'>", 'Call_sqrt', 'black_box3', 'black_box1133', 'black_box4']
['black_box841']

In [11]:
cells = []
for nb in a.nb_features:
    cells.extend([cell for cell in nb.get_all_cells()])
groups = []
cur_code = ''
cur_group = []
for cell in cells:
    if cell.get_feature('original_code') == cur_code:
        cur_group.append(cell)
    else:
        if len(cur_group) > 0:
            groups.append(cur_group)
        cur_group = []
    cur_code = cell.get_feature('original_code')

In [12]:
group = 7
print ('*'*50)
print ('Black Boxes')
for cell in groups[group]:
    print (cell.get_feature('graph').get_nodes())
print ('*'*50)
print ('Code')
print (groups[group][0].get_feature('original_code'))
print ('*'*50)
print ('Black Box meaning')
for cell in groups[group]:
    n = (cell.get_feature('graph').get_nodes())
    if len(n) == 1 and n[0][:5] == 'black':
        print (agr.get_trace(n[0]))


**************************************************
Black Boxes
['black_box2064']
['black_box2065']
['black_box4966']
['black_box2064']
['black_box2065']
['black_box2066']
['black_box2067']
['black_box95']
['black_box3480']
['black_box3480']
['black_box2282']
**************************************************
Code

# coding: utf-8

# In[ ]:

# Now let's check per year
df_epfl_year = df_epfl.groupby(df_epfl['created_at'].map(lambda x: x.year)).sum()
df_epfl_year = df_epfl_year[["favorite_count", "retweet_count"]]
df_epfl_year['total'] = df_epfl_year['favorite_count'] + df_epfl_year['retweet_count'] 

df_eth_year = df_eth.groupby(df_eth['created_at'].map(lambda x: x.year)).sum()
df_eth_year = df_eth_year[["favorite_count", "retweet_count"]]
df_eth_year['total'] = df_eth_year['favorite_count'] + df_eth_year['retweet_count'] 

fig = plt.figure() # Create matplotlib figure

ax = fig.add_subplot(111) # Create matplotlib axes

width = 0.4

df_epfl_year.total.plot(kind='bar', color='blue', width=width, position=0)
df_eth_year.total.plot(kind='bar', color='red', width=width, position=1)

plt.show()

# We can see that the account got more active over time and that epfl is on top almost every year

#Need to fix label names , blue = EPFL, red = ETH


**************************************************
Black Box meaning
<class '_ast.Assign'> (black_box2064)
	 <class '_ast.Name'> (black_box4)
		 <class '_ast.Store'>
	 <class '_ast.Subscript'> (black_box975)
		 <class '_ast.Load'>
		 <class '_ast.Name'> (black_box3)
			 <class '_ast.Load'>
		 <class '_ast.Index'> (black_box62)
			 <class '_ast.List'> (black_box8)
				 <class '_ast.Load'>
				 <class '_ast.Str'>
<class '_ast.Assign'> (black_box2065)
	 <class '_ast.Subscript'> (black_box56)
		 <class '_ast.Store'>
		 <class '_ast.Name'> (black_box3)
			 <class '_ast.Load'>
		 <class '_ast.Index'> (black_box5)
			 <class '_ast.Str'>
	 <class '_ast.BinOp'> (black_box790)
		 <class '_ast.Add'>
		 <class '_ast.Subscript'> (black_box55)
			 <class '_ast.Load'>
			 <class '_ast.Name'> (black_box3)
				 <class '_ast.Load'>
			 <class '_ast.Index'> (black_box5)
				 <class '_ast.Str'>
<class '_ast.Assign'> (black_box4966)
	 <class '_ast.Name'> (black_box4)
		 <class '_ast.Store'>
	 Call_sum (black_box4819)
		 <class '_ast.Attribute'> (black_box4413)
			 <class '_ast.Load'>
			 Call_groupby (black_box3803)
				 Call_map (black_box2706)
					 <class '_ast.Lambda'> (black_box1089)
						 <class '_ast.arguments'> (black_box18)
							 <class '_ast.arg'>
						 <class '_ast.Attribute'> (black_box51)
							 <class '_ast.Load'>
							 <class '_ast.Name'> (black_box3)
								 <class '_ast.Load'>
					 <class '_ast.Attribute'> (black_box753)
						 <class '_ast.Load'>
						 <class '_ast.Subscript'> (black_box55)
							 <class '_ast.Load'>
							 <class '_ast.Name'> (black_box3)
								 <class '_ast.Load'>
							 <class '_ast.Index'> (black_box5)
								 <class '_ast.Str'>
				 <class '_ast.Attribute'> (black_box51)
					 <class '_ast.Load'>
					 <class '_ast.Name'> (black_box3)
						 <class '_ast.Load'>
<class '_ast.Assign'> (black_box2064)
	 <class '_ast.Name'> (black_box4)
		 <class '_ast.Store'>
	 <class '_ast.Subscript'> (black_box975)
		 <class '_ast.Load'>
		 <class '_ast.Name'> (black_box3)
			 <class '_ast.Load'>
		 <class '_ast.Index'> (black_box62)
			 <class '_ast.List'> (black_box8)
				 <class '_ast.Load'>
				 <class '_ast.Str'>
<class '_ast.Assign'> (black_box2065)
	 <class '_ast.Subscript'> (black_box56)
		 <class '_ast.Store'>
		 <class '_ast.Name'> (black_box3)
			 <class '_ast.Load'>
		 <class '_ast.Index'> (black_box5)
			 <class '_ast.Str'>
	 <class '_ast.BinOp'> (black_box790)
		 <class '_ast.Add'>
		 <class '_ast.Subscript'> (black_box55)
			 <class '_ast.Load'>
			 <class '_ast.Name'> (black_box3)
				 <class '_ast.Load'>
			 <class '_ast.Index'> (black_box5)
				 <class '_ast.Str'>
<class '_ast.Assign'> (black_box2066)
	 Call_figure (black_box1022)
		 <class '_ast.Attribute'> (black_box51)
			 <class '_ast.Load'>
			 <class '_ast.Name'> (black_box3)
				 <class '_ast.Load'>
	 <class '_ast.Name'> (black_box4)
		 <class '_ast.Store'>
<class '_ast.Assign'> (black_box2067)
	 Call_add_subplot (black_box1107)
		 <class '_ast.Num'>
		 <class '_ast.Attribute'> (black_box51)
			 <class '_ast.Load'>
			 <class '_ast.Name'> (black_box3)
				 <class '_ast.Load'>
	 <class '_ast.Name'> (black_box4)
		 <class '_ast.Store'>
<class '_ast.Assign'> (black_box95)
	 <class '_ast.Num'>
	 <class '_ast.Name'> (black_box4)
		 <class '_ast.Store'>
<class '_ast.Expr'> (black_box3480)
	 Call_plot (black_box2717)
		 <class '_ast.keyword'> (black_box15)
			 <class '_ast.Str'>
		 <class '_ast.keyword'> (black_box16)
			 <class '_ast.Num'>
		 <class '_ast.Attribute'> (black_box754)
			 <class '_ast.Load'>
			 <class '_ast.Attribute'> (black_box51)
				 <class '_ast.Load'>
				 <class '_ast.Name'> (black_box3)
					 <class '_ast.Load'>
		 <class '_ast.keyword'> (black_box88)
			 <class '_ast.Name'> (black_box3)
				 <class '_ast.Load'>
<class '_ast.Expr'> (black_box3480)
	 Call_plot (black_box2717)
		 <class '_ast.keyword'> (black_box15)
			 <class '_ast.Str'>
		 <class '_ast.keyword'> (black_box16)
			 <class '_ast.Num'>
		 <class '_ast.Attribute'> (black_box754)
			 <class '_ast.Load'>
			 <class '_ast.Attribute'> (black_box51)
				 <class '_ast.Load'>
				 <class '_ast.Name'> (black_box3)
					 <class '_ast.Load'>
		 <class '_ast.keyword'> (black_box88)
			 <class '_ast.Name'> (black_box3)
				 <class '_ast.Load'>
<class '_ast.Expr'> (black_box2282)
	 Call_show (black_box1108)
		 <class '_ast.Attribute'> (black_box51)
			 <class '_ast.Load'>
			 <class '_ast.Name'> (black_box3)
				 <class '_ast.Load'>

In [ ]:


In [13]:
bbs=[]
for i in range(100000):
    name = 'black_box' + str(i)
    l, total = agr.get_examples(name, 2)
    if total > 0:
        bbs.append(name)
print (len(bbs))


2055

In [62]:
import astor
bb = bbs[2054]
l, total = agr.get_examples(bb,6)
print(agr.get_trace(bb),'\n')
print ('There are a total of', total, 'instances of this template type\n')
for el in l:
    print (astor.to_source(el))


<class '_ast.Expr'> (black_box5127)
	 Call_plot (black_box5123)
		 <class '_ast.keyword'> (black_box15)
			 <class '_ast.Str'>
		 <class '_ast.Attribute'> (black_box5101)
			 <class '_ast.Load'>
			 <class '_ast.Subscript'> (black_box5040)
				 <class '_ast.Load'>
				 <class '_ast.Index'> (black_box5)
					 <class '_ast.Str'>
				 Call_sum (black_box5014)
					 <class '_ast.Attribute'> (black_box4894)
						 <class '_ast.Load'>
						 Call_groupby (black_box4697)
							 <class '_ast.keyword'> (black_box4203)
								 <class '_ast.Attribute'> (black_box2484)
									 <class '_ast.Load'>
									 <class '_ast.Attribute'> (black_box754)
										 <class '_ast.Load'>
										 <class '_ast.Attribute'> (black_box51)
											 <class '_ast.Load'>
											 <class '_ast.Name'> (black_box3)
												 <class '_ast.Load'>
							 <class '_ast.Attribute'> (black_box51)
								 <class '_ast.Load'>
								 <class '_ast.Name'> (black_box3)
									 <class '_ast.Load'> 

There are a total of 12 instances of this template type

r1.groupby(by=r1.created_at.dt.year).sum()['favorite_count'].plot(kind='bar')

r1.groupby(by=r1.created_at.dt.year).sum()['retweet_count'].plot(kind='bar')

r2.groupby(by=r2.created_at.dt.year).sum()['favorite_count'].plot(kind='bar')

r2.groupby(by=r2.created_at.dt.year).sum()['retweet_count'].plot(kind='bar')

r3.groupby(by=r3.created_at.dt.month).sum()['favorite_count'].plot(kind='bar')

r3.groupby(by=r3.created_at.dt.month).sum()['retweet_count'].plot(kind='bar')


In [ ]:


In [ ]:


In [15]:
print (agr.get_trace('black_box6'))


<class '_ast.Index'> (black_box6)
	 <class '_ast.Num'>

In [16]:
agr.box_examples.keys()


Out[16]:
dict_keys(['black_box1', 'black_box2', 'black_box3', 'black_box4', 'black_box5', 'black_box6', 'black_box8', 'black_box15', 'black_box18', 'black_box16', 'black_box25', 'black_box17', 'black_box26', 'black_box9', 'black_box34', 'black_box35', 'black_box38', 'black_box10', 'black_box27', 'black_box36', 'black_box30', 'black_box41', 'black_box42', 'black_box31', 'black_box19', 'black_box20', 'black_box39', 'black_box44', 'black_box45', 'black_box46', 'black_box40', 'black_box32', 'black_box50', 'black_box51', 'black_box55', 'black_box52', 'black_box61', 'black_box67', 'black_box70', 'black_box87', 'black_box62', 'black_box56', 'black_box95', 'black_box88', 'black_box96', 'black_box108', 'black_box57', 'black_box129', 'black_box135', 'black_box139', 'black_box142', 'black_box147', 'black_box148', 'black_box149', 'black_box143', 'black_box97', 'black_box161', 'black_box130', 'black_box163', 'black_box58', 'black_box169', 'black_box170', 'black_box109', 'black_box173', 'black_box110', 'black_box177', 'black_box154', 'black_box111', 'black_box89', 'black_box71', 'black_box98', 'black_box99', 'black_box100', 'black_box112', 'black_box187', 'black_box190', 'black_box68', 'black_box194', 'black_box101', 'black_box162', 'black_box114', 'black_box136', 'black_box90', 'black_box198', 'black_box63', 'black_box200', 'black_box203', 'black_box207', 'black_box155', 'black_box214', 'black_box195', 'black_box64', 'black_box91', 'black_box219', 'black_box72', 'black_box221', 'black_box222', 'black_box73', 'black_box156', 'black_box102', 'black_box238', 'black_box242', 'black_box243', 'black_box244', 'black_box247', 'black_box249', 'black_box250', 'black_box131', 'black_box255', 'black_box65', 'black_box157', 'black_box115', 'black_box258', 'black_box92', 'black_box245', 'black_box270', 'black_box208', 'black_box272', 'black_box276', 'black_box183', 'black_box277', 'black_box118', 'black_box283', 'black_box59', 'black_box286', 'black_box293', 'black_box295', 'black_box74', 'black_box284', 'black_box301', 'black_box66', 'black_box119', 'black_box75', 'black_box76', 'black_box77', 'black_box308', 'black_box311', 'black_box210', 'black_box327', 'black_box328', 'black_box333', 'black_box335', 'black_box78', 'black_box354', 'black_box355', 'black_box356', 'black_box358', 'black_box359', 'black_box360', 'black_box361', 'black_box362', 'black_box366', 'black_box287', 'black_box369', 'black_box152', 'black_box385', 'black_box260', 'black_box386', 'black_box79', 'black_box391', 'black_box196', 'black_box81', 'black_box189', 'black_box82', 'black_box334', 'black_box426', 'black_box428', 'black_box434', 'black_box436', 'black_box453', 'black_box456', 'black_box467', 'black_box472', 'black_box474', 'black_box480', 'black_box482', 'black_box261', 'black_box127', 'black_box554', 'black_box566', 'black_box567', 'black_box427', 'black_box596', 'black_box629', 'black_box659', 'black_box668', 'black_box669', 'black_box671', 'black_box673', 'black_box695', 'black_box705', 'black_box709', 'black_box717', 'black_box721', 'black_box738', 'black_box752', 'black_box776', 'black_box785', 'black_box789', 'black_box839', 'black_box876', 'black_box879', 'black_box840', 'black_box962', 'black_box974', 'black_box753', 'black_box1022', 'black_box1041', 'black_box1089', 'black_box975', 'black_box790', 'black_box1107', 'black_box754', 'black_box1108', 'black_box976', 'black_box880', 'black_box1111', 'black_box977', 'black_box881', 'black_box841', 'black_box1133', 'black_box1134', 'black_box777', 'black_box843', 'black_box1135', 'black_box978', 'black_box786', 'black_box1144', 'black_box1147', 'black_box1201', 'black_box877', 'black_box979', 'black_box844', 'black_box980', 'black_box1126', 'black_box1239', 'black_box1132', 'black_box882', 'black_box1246', 'black_box1252', 'black_box791', 'black_box1253', 'black_box1283', 'black_box1298', 'black_box845', 'black_box883', 'black_box1136', 'black_box884', 'black_box1316', 'black_box1317', 'black_box1321', 'black_box1148', 'black_box885', 'black_box1322', 'black_box1323', 'black_box1326', 'black_box1254', 'black_box1334', 'black_box886', 'black_box1068', 'black_box1337', 'black_box1149', 'black_box1150', 'black_box1338', 'black_box1339', 'black_box1345', 'black_box981', 'black_box1347', 'black_box1112', 'black_box1356', 'black_box982', 'black_box1029', 'black_box1225', 'black_box888', 'black_box1365', 'black_box1113', 'black_box1202', 'black_box1374', 'black_box1284', 'black_box1381', 'black_box1383', 'black_box1386', 'black_box1390', 'black_box1393', 'black_box1394', 'black_box1395', 'black_box889', 'black_box1396', 'black_box1255', 'black_box1402', 'black_box1410', 'black_box1391', 'black_box1416', 'black_box1421', 'black_box1447', 'black_box1451', 'black_box1452', 'black_box1458', 'black_box1403', 'black_box1464', 'black_box983', 'black_box1472', 'black_box1482', 'black_box1484', 'black_box1042', 'black_box1491', 'black_box1495', 'black_box1498', 'black_box1203', 'black_box846', 'black_box1422', 'black_box1500', 'black_box1501', 'black_box1508', 'black_box1511', 'black_box891', 'black_box847', 'black_box757', 'black_box1526', 'black_box1528', 'black_box1530', 'black_box892', 'black_box964', 'black_box1431', 'black_box1432', 'black_box1444', 'black_box1476', 'black_box1226', 'black_box1541', 'black_box1335', 'black_box1204', 'black_box1304', 'black_box1553', 'black_box1556', 'black_box1559', 'black_box1384', 'black_box1043', 'black_box1562', 'black_box1563', 'black_box1567', 'black_box1568', 'black_box1569', 'black_box1328', 'black_box1571', 'black_box984', 'black_box1023', 'black_box1542', 'black_box1573', 'black_box1152', 'black_box1574', 'black_box1575', 'black_box1153', 'black_box1256', 'black_box1576', 'black_box1070', 'black_box1585', 'black_box895', 'black_box1404', 'black_box1154', 'black_box778', 'black_box1205', 'black_box1586', 'black_box986', 'black_box896', 'black_box1417', 'black_box1602', 'black_box1545', 'black_box1502', 'black_box1366', 'black_box1206', 'black_box1607', 'black_box987', 'black_box1564', 'black_box1620', 'black_box1092', 'black_box1473', 'black_box1448', 'black_box1340', 'black_box1534', 'black_box1268', 'black_box1247', 'black_box1269', 'black_box1411', 'black_box897', 'black_box758', 'black_box1512', 'black_box1513', 'black_box898', 'black_box1642', 'black_box1644', 'black_box792', 'black_box1155', 'black_box1156', 'black_box899', 'black_box759', 'black_box1645', 'black_box1647', 'black_box848', 'black_box1651', 'black_box900', 'black_box901', 'black_box1114', 'black_box902', 'black_box1286', 'black_box990', 'black_box761', 'black_box1158', 'black_box1207', 'black_box1587', 'black_box1664', 'black_box904', 'black_box1621', 'black_box991', 'black_box1670', 'black_box1679', 'black_box1208', 'black_box1680', 'black_box905', 'black_box906', 'black_box1710', 'black_box1305', 'black_box1711', 'black_box1306', 'black_box849', 'black_box1412', 'black_box1072', 'black_box908', 'black_box1515', 'black_box1228', 'black_box1287', 'black_box1671', 'black_box1270', 'black_box763', 'black_box992', 'black_box965', 'black_box1300', 'black_box909', 'black_box1492', 'black_box1496', 'black_box1229', 'black_box993', 'black_box911', 'black_box1592', 'black_box966', 'black_box1288', 'black_box1720', 'black_box1721', 'black_box1516', 'black_box1593', 'black_box912', 'black_box1739', 'black_box1093', 'black_box1045', 'black_box1546', 'black_box1231', 'black_box1748', 'black_box1161', 'black_box1726', 'black_box1349', 'black_box1033', 'black_box1622', 'black_box852', 'black_box1145', 'black_box1162', 'black_box1163', 'black_box1752', 'black_box1759', 'black_box1760', 'black_box1761', 'black_box1271', 'black_box1074', 'black_box1094', 'black_box1770', 'black_box1772', 'black_box1779', 'black_box796', 'black_box1167', 'black_box1211', 'black_box914', 'black_box1783', 'black_box1788', 'black_box1751', 'black_box1047', 'black_box1048', 'black_box915', 'black_box1399', 'black_box1212', 'black_box1723', 'black_box1493', 'black_box1791', 'black_box1324', 'black_box1257', 'black_box1413', 'black_box1594', 'black_box1733', 'black_box1734', 'black_box1517', 'black_box1623', 'black_box1768', 'black_box798', 'black_box916', 'black_box1595', 'black_box1418', 'black_box1035', 'black_box1655', 'black_box1049', 'black_box1077', 'black_box1274', 'black_box1425', 'black_box1860', 'black_box765', 'black_box1392', 'black_box1656', 'black_box800', 'black_box1560', 'black_box1450', 'black_box1445', 'black_box1578', 'black_box1635', 'black_box1579', 'black_box1870', 'black_box1735', 'black_box1436', 'black_box1437', 'black_box1743', 'black_box1275', 'black_box1376', 'black_box853', 'black_box1873', 'black_box1051', 'black_box918', 'black_box1874', 'black_box919', 'black_box1694', 'black_box1078', 'black_box1880', 'black_box1675', 'black_box1677', 'black_box920', 'black_box1843', 'black_box1744', 'black_box998', 'black_box1887', 'black_box779', 'black_box1554', 'black_box922', 'black_box925', 'black_box926', 'black_box927', 'black_box928', 'black_box1518', 'black_box1052', 'black_box1858', 'black_box1080', 'black_box1895', 'black_box931', 'black_box932', 'black_box1899', 'black_box1000', 'black_box1745', 'black_box1903', 'black_box934', 'black_box1911', 'black_box1913', 'black_box1001', 'black_box1002', 'black_box1053', 'black_box1915', 'black_box936', 'black_box1869', 'black_box1019', 'black_box1919', 'black_box1624', 'black_box1003', 'black_box1811', 'black_box1026', 'black_box1681', 'black_box1923', 'black_box937', 'black_box1181', 'black_box1928', 'black_box780', 'black_box1933', 'black_box767', 'black_box1182', 'black_box1329', 'black_box1054', 'black_box809', 'black_box1455', 'black_box938', 'black_box939', 'black_box1904', 'black_box1549', 'black_box1825', 'black_box1308', 'black_box1854', 'black_box1956', 'black_box1957', 'black_box1426', 'black_box1550', 'black_box1259', 'black_box817', 'black_box855', 'black_box856', 'black_box878', 'black_box1965', 'black_box857', 'black_box1358', 'black_box818', 'black_box1186', 'black_box942', 'black_box1535', 'black_box1971', 'black_box1086', 'black_box1187', 'black_box944', 'black_box1055', 'black_box1973', 'black_box1639', 'black_box1974', 'black_box1975', 'black_box1005', 'black_box858', 'black_box1916', 'black_box1637', 'black_box1605', 'black_box1427', 'black_box1189', 'black_box947', 'black_box825', 'black_box1219', 'black_box860', 'black_box1818', 'black_box1986', 'black_box1409', 'black_box948', 'black_box1057', 'black_box769', 'black_box1519', 'black_box1776', 'black_box861', 'black_box1700', 'black_box1701', 'black_box1702', 'black_box1997', 'black_box1101', 'black_box1102', 'black_box2003', 'black_box1336', 'black_box1191', 'black_box1302', 'black_box1292', 'black_box2011', 'black_box1536', 'black_box1446', 'black_box2018', 'black_box2020', 'black_box1344', 'black_box2019', 'black_box2022', 'black_box863', 'black_box2023', 'black_box831', 'black_box2026', 'black_box1538', 'black_box2024', 'black_box1221', 'black_box949', 'black_box950', 'black_box864', 'black_box1010', 'black_box1295', 'black_box1105', 'black_box1027', 'black_box867', 'black_box972', 'black_box1690', 'black_box1673', 'black_box1859', 'black_box2042', 'black_box772', 'black_box1509', 'black_box957', 'black_box958', 'black_box869', 'black_box1820', 'black_box1297', 'black_box1354', 'black_box2048', 'black_box2049', 'black_box870', 'black_box871', 'black_box1106', 'black_box1724', 'black_box872', 'black_box873', 'black_box2040', 'black_box1065', 'black_box1442', 'black_box1066', 'black_box2061', 'black_box2062', 'black_box2279', 'black_box2450', 'black_box2480', 'black_box2063', 'black_box2562', 'black_box2566', 'black_box2635', 'black_box2280', 'black_box2281', 'black_box2706', 'black_box2064', 'black_box2065', 'black_box2066', 'black_box2067', 'black_box2717', 'black_box2282', 'black_box2069', 'black_box2070', 'black_box2758', 'black_box2481', 'black_box2283', 'black_box2071', 'black_box2072', 'black_box2284', 'black_box2285', 'black_box2819', 'black_box2286', 'black_box2482', 'black_box2483', 'black_box2847', 'black_box2853', 'black_box2287', 'black_box2073', 'black_box2288', 'black_box2289', 'black_box2075', 'black_box2290', 'black_box2451', 'black_box2908', 'black_box2771', 'black_box2076', 'black_box2077', 'black_box2078', 'black_box2772', 'black_box2773', 'black_box2079', 'black_box2994', 'black_box2484', 'black_box2080', 'black_box2452', 'black_box2291', 'black_box2292', 'black_box3018', 'black_box2567', 'black_box2820', 'black_box3020', 'black_box2855', 'black_box2485', 'black_box3044', 'black_box2295', 'black_box2081', 'black_box2486', 'black_box2296', 'black_box3062', 'black_box2297', 'black_box3076', 'black_box3078', 'black_box2299', 'black_box3079', 'black_box3086', 'black_box2084', 'black_box2487', 'black_box2488', 'black_box2085', 'black_box2086', 'black_box2453', 'black_box2088', 'black_box2568', 'black_box3021', 'black_box3089', 'black_box2089', 'black_box3100', 'black_box2741', 'black_box2300', 'black_box2775', 'black_box2776', 'black_box2090', 'black_box2091', 'black_box2454', 'black_box2489', 'black_box2092', 'black_box2301', 'black_box3115', 'black_box2302', 'black_box2490', 'black_box3117', 'black_box2093', 'black_box2491', 'black_box2094', 'black_box2095', 'black_box2718', 'black_box2304', 'black_box2096', 'black_box2097', 'black_box2305', 'black_box2306', 'black_box2307', 'black_box2308', 'black_box3125', 'black_box2098', 'black_box2636', 'black_box2707', 'black_box2309', 'black_box2310', 'black_box2311', 'black_box2312', 'black_box2708', 'black_box3019', 'black_box3126', 'black_box3134', 'black_box2313', 'black_box2314', 'black_box2493', 'black_box2100', 'black_box2101', 'black_box2316', 'black_box2317', 'black_box3139', 'black_box2709', 'black_box3145', 'black_box2318', 'black_box2102', 'black_box2103', 'black_box3149', 'black_box2104', 'black_box2105', 'black_box2571', 'black_box2319', 'black_box2106', 'black_box2107', 'black_box2108', 'black_box2665', 'black_box2109', 'black_box3158', 'black_box2320', 'black_box2112', 'black_box3077', 'black_box2321', 'black_box2322', 'black_box2822', 'black_box3090', 'black_box3045', 'black_box2323', 'black_box2778', 'black_box2779', 'black_box3168', 'black_box2324', 'black_box2325', 'black_box2780', 'black_box3175', 'black_box2781', 'black_box3176', 'black_box2326', 'black_box2114', 'black_box2327', 'black_box2328', 'black_box2329', 'black_box2115', 'black_box2720', 'black_box2330', 'black_box3183', 'black_box2331', 'black_box2563', 'black_box2116', 'black_box2572', 'black_box2118', 'black_box2333', 'black_box3022', 'black_box2334', 'black_box2335', 'black_box2336', 'black_box2564', 'black_box2121', 'black_box2915', 'black_box3101', 'black_box3197', 'black_box2122', 'black_box2337', 'black_box2857', 'black_box3024', 'black_box2743', 'black_box2123', 'black_box2496', 'black_box2338', 'black_box2339', 'black_box3203', 'black_box2125', 'black_box2340', 'black_box2126', 'black_box2497', 'black_box2996', 'black_box2341', 'black_box2498', 'black_box2909', 'black_box3159', 'black_box2824', 'black_box2344', 'black_box2127', 'black_box2128', 'black_box3212', 'black_box2129', 'black_box2645', 'black_box2131', 'black_box2577', 'black_box2578', 'black_box3223', 'black_box2500', 'black_box2132', 'black_box2133', 'black_box2345', 'black_box2134', 'black_box2579', 'black_box2135', 'black_box2784', 'black_box3026', 'black_box2346', 'black_box2136', 'black_box2137', 'black_box3249', 'black_box2825', 'black_box2347', 'black_box2139', 'black_box3213', 'black_box2939', 'black_box2826', 'black_box2502', 'black_box2140', 'black_box2580', 'black_box2581', 'black_box2582', 'black_box2503', 'black_box3027', 'black_box3253', 'black_box2504', 'black_box2141', 'black_box2142', 'black_box2348', 'black_box2349', 'black_box2143', 'black_box2646', 'black_box2940', 'black_box2144', 'black_box2505', 'black_box2941', 'black_box2721', 'black_box2145', 'black_box3140', 'black_box2146', 'black_box2351', 'black_box2147', 'black_box2723', 'black_box3028', 'black_box2744', 'black_box2353', 'black_box2354', 'black_box2849', 'black_box2506', 'black_box2149', 'black_box2150', 'black_box2151', 'black_box2152', 'black_box2565', 'black_box2154', 'black_box2827', 'black_box2507', 'black_box2458', 'black_box2156', 'black_box2509', 'black_box2356', 'black_box2510', 'black_box3087', 'black_box3266', 'black_box2357', 'black_box3030', 'black_box2587', 'black_box2588', 'black_box2589', 'black_box2358', 'black_box2157', 'black_box2159', 'black_box2850', 'black_box3304', 'black_box2943', 'black_box2828', 'black_box2161', 'black_box3299', 'black_box2162', 'black_box2359', 'black_box2360', 'black_box2361', 'black_box2362', 'black_box2163', 'black_box2363', 'black_box2164', 'black_box2165', 'black_box2167', 'black_box2787', 'black_box2168', 'black_box2365', 'black_box2366', 'black_box2590', 'black_box2591', 'black_box3031', 'black_box2367', 'black_box2592', 'black_box2829', 'black_box2368', 'black_box3102', 'black_box2169', 'black_box2369', 'black_box2945', 'black_box2370', 'black_box2676', 'black_box2371', 'black_box3063', 'black_box2593', 'black_box2511', 'black_box2512', 'black_box2898', 'black_box2175', 'black_box2373', 'black_box3335', 'black_box2999', 'black_box3344', 'black_box2947', 'black_box2594', 'black_box2176', 'black_box2746', 'black_box2177', 'black_box2374', 'black_box2375', 'black_box2376', 'black_box2377', 'black_box2178', 'black_box2179', 'black_box2513', 'black_box2595', 'black_box2181', 'black_box3350', 'black_box2596', 'black_box2514', 'black_box2515', 'black_box3353', 'black_box2379', 'black_box2597', 'black_box2678', 'black_box2380', 'black_box2598', 'black_box2599', 'black_box2863', 'black_box2679', 'black_box2381', 'black_box2831', 'black_box2382', 'black_box2383', 'black_box2384', 'black_box2386', 'black_box2387', 'black_box2388', 'black_box2186', 'black_box3000', 'black_box2602', 'black_box2187', 'black_box2864', 'black_box2865', 'black_box2603', 'black_box3379', 'black_box2188', 'black_box2681', 'black_box2390', 'black_box2391', 'black_box2190', 'black_box2191', 'black_box3336', 'black_box2605', 'black_box3046', 'black_box3128', 'black_box3186', 'black_box2392', 'black_box2519', 'black_box2393', 'black_box2832', 'black_box2396', 'black_box2521', 'black_box3354', 'black_box2195', 'black_box2196', 'black_box2683', 'black_box2607', 'black_box3002', 'black_box2397', 'black_box2398', 'black_box3389', 'black_box2522', 'black_box2833', 'black_box2834', 'black_box2609', 'black_box2866', 'black_box2953', 'black_box2524', 'black_box2198', 'black_box2835', 'black_box2610', 'black_box2711', 'black_box2201', 'black_box2400', 'black_box2202', 'black_box2527', 'black_box2402', 'black_box3204', 'black_box2204', 'black_box2528', 'black_box2403', 'black_box2205', 'black_box2404', 'black_box2405', 'black_box2406', 'black_box2206', 'black_box2653', 'black_box2407', 'black_box2851', 'black_box3194', 'black_box3005', 'black_box3280', 'black_box3403', 'black_box3064', 'black_box2208', 'black_box3216', 'black_box2409', 'black_box2797', 'black_box2612', 'black_box2209', 'black_box2727', 'black_box2728', 'black_box2837', 'black_box2868', 'black_box2638', 'black_box2411', 'black_box2412', 'black_box2210', 'black_box2211', 'black_box3214', 'black_box2212', 'black_box3377', 'black_box3047', 'black_box2468', 'black_box3033', 'black_box3267', 'black_box2414', 'black_box2869', 'black_box2215', 'black_box2840', 'black_box2219', 'black_box3382', 'black_box2416', 'black_box3234', 'black_box2417', 'black_box2842', 'black_box2614', 'black_box3274', 'black_box3356', 'black_box2419', 'black_box3325', 'black_box2689', 'black_box2690', 'black_box2531', 'black_box3288', 'black_box3035', 'black_box3110', 'black_box2692', 'black_box2639', 'black_box2615', 'black_box2532', 'black_box2224', 'black_box3038', 'black_box2891', 'black_box2421', 'black_box3435', 'black_box2962', 'black_box2535', 'black_box2731', 'black_box2873', 'black_box2616', 'black_box2423', 'black_box3217', 'black_box2619', 'black_box2233', 'black_box3051', 'black_box2424', 'black_box2425', 'black_box2236', 'black_box2237', 'black_box2966', 'black_box3333', 'black_box2239', 'black_box2427', 'black_box2428', 'black_box2240', 'black_box2430', 'black_box3442', 'black_box3418', 'black_box2538', 'black_box2243', 'black_box2432', 'black_box3322', 'black_box3039', 'black_box2433', 'black_box2624', 'black_box3449', 'black_box2734', 'black_box3432', 'black_box3116', 'black_box2543', 'black_box2544', 'black_box2973', 'black_box3040', 'black_box2627', 'black_box3401', 'black_box2735', 'black_box2434', 'black_box2545', 'black_box2437', 'black_box3461', 'black_box2546', 'black_box3462', 'black_box2253', 'black_box2254', 'black_box2439', 'black_box2845', 'black_box2737', 'black_box2257', 'black_box2807', 'black_box2808', 'black_box2809', 'black_box2443', 'black_box2551', 'black_box3402', 'black_box2901', 'black_box2554', 'black_box2555', 'black_box2556', 'black_box2557', 'black_box2660', 'black_box2633', 'black_box3258', 'black_box3043', 'black_box2264', 'black_box3222', 'black_box2267', 'black_box2268', 'black_box2449', 'black_box2273', 'black_box2275', 'black_box2276', 'black_box3141', 'black_box2277', 'black_box3479', 'black_box3552', 'black_box3564', 'black_box3639', 'black_box3803', 'black_box3480', 'black_box3640', 'black_box3641', 'black_box3583', 'black_box3565', 'black_box3642', 'black_box3553', 'black_box3481', 'black_box3643', 'black_box3554', 'black_box3972', 'black_box4049', 'black_box3585', 'black_box3645', 'black_box3866', 'black_box3804', 'black_box3482', 'black_box4050', 'black_box3555', 'black_box4078', 'black_box3484', 'black_box3485', 'black_box3646', 'black_box3566', 'black_box4091', 'black_box4115', 'black_box3647', 'black_box3887', 'black_box4121', 'black_box3486', 'black_box3843', 'black_box3648', 'black_box3556', 'black_box3805', 'black_box3822', 'black_box3487', 'black_box3649', 'black_box4140', 'black_box3651', 'black_box3488', 'black_box3654', 'black_box3655', 'black_box3657', 'black_box3658', 'black_box3659', 'black_box3489', 'black_box4092', 'black_box4162', 'black_box4149', 'black_box3490', 'black_box3660', 'black_box3975', 'black_box4122', 'black_box3586', 'black_box4080', 'black_box3491', 'black_box3662', 'black_box3663', 'black_box3664', 'black_box3665', 'black_box4182', 'black_box4116', 'black_box4053', 'black_box3823', 'black_box4163', 'black_box3666', 'black_box3492', 'black_box3493', 'black_box3667', 'black_box3954', 'black_box3807', 'black_box3567', 'black_box3808', 'black_box4197', 'black_box3668', 'black_box3867', 'black_box4037', 'black_box3494', 'black_box3669', 'black_box3670', 'black_box4094', 'black_box4209', 'black_box4180', 'black_box3671', 'black_box3495', 'black_box3977', 'black_box4117', 'black_box3496', 'black_box3672', 'black_box4202', 'black_box3498', 'black_box4223', 'black_box3979', 'black_box3673', 'black_box3674', 'black_box3591', 'black_box4230', 'black_box3592', 'black_box3980', 'black_box3981', 'black_box3676', 'black_box3593', 'black_box3787', 'black_box3677', 'black_box4244', 'black_box3824', 'black_box3678', 'black_box4203', 'black_box3568', 'black_box3500', 'black_box3679', 'black_box3923', 'black_box3982', 'black_box3501', 'black_box3681', 'black_box3983', 'black_box3503', 'black_box4204', 'black_box3504', 'black_box4095', 'black_box4254', 'black_box3596', 'black_box4258', 'black_box4262', 'black_box4150', 'black_box4131', 'black_box3569', 'black_box3985', 'black_box3986', 'black_box4096', 'black_box3687', 'black_box3925', 'black_box3598', 'black_box3956', 'black_box3688', 'black_box4264', 'black_box3847', 'black_box3689', 'black_box3690', 'black_box3599', 'black_box4161', 'black_box3693', 'black_box3507', 'black_box3989', 'black_box4274', 'black_box3698', 'black_box3699', 'black_box3700', 'black_box3970', 'black_box3790', 'black_box3990', 'black_box3991', 'black_box3701', 'black_box3508', 'black_box3703', 'black_box3704', 'black_box3600', 'black_box3705', 'black_box3570', 'black_box3706', 'black_box3509', 'black_box3707', 'black_box3830', 'black_box3510', 'black_box3511', 'black_box4205', 'black_box3512', 'black_box3603', 'black_box4042', 'black_box3708', 'black_box3709', 'black_box3849', 'black_box4083', 'black_box3604', 'black_box3710', 'black_box4062', 'black_box3871', 'black_box3792', 'black_box3711', 'black_box3712', 'black_box3513', 'black_box3714', 'black_box3605', 'black_box3572', 'black_box3717', 'black_box3995', 'black_box3514', 'black_box3996', 'black_box3515', 'black_box4239', 'black_box3719', 'black_box3516', 'black_box3609', 'black_box3720', 'black_box4212', 'black_box3517', 'black_box3721', 'black_box3809', 'black_box3518', 'black_box4063', 'black_box4290', 'black_box3930', 'black_box4271', 'black_box4000', 'black_box3794', 'black_box3796', 'black_box3810', 'black_box3613', 'black_box4001', 'black_box3863', 'black_box3726', 'black_box4124', 'black_box3727', 'black_box4224', 'black_box3728', 'black_box4267', 'black_box3731', 'black_box3559', 'black_box3520', 'black_box3782', 'black_box4303', 'black_box4181', 'black_box4152', 'black_box3733', 'black_box4002', 'black_box3735', 'black_box4119', 'black_box3521', 'black_box3522', 'black_box3523', 'black_box3617', 'black_box3737', 'black_box3524', 'black_box4206', 'black_box3741', 'black_box3619', 'black_box3840', 'black_box3620', 'black_box3811', 'black_box4003', 'black_box3573', 'black_box3621', 'black_box3525', 'black_box3743', 'black_box3744', 'black_box3623', 'black_box3624', 'black_box4084', 'black_box4147', 'black_box3968', 'black_box3971', 'black_box3625', 'black_box3958', 'black_box4004', 'black_box3745', 'black_box3526', 'black_box3812', 'black_box3839', 'black_box3841', 'black_box3528', 'black_box3529', 'black_box3797', 'black_box3748', 'black_box4011', 'black_box3855', 'black_box3530', 'black_box4295', 'black_box4014', 'black_box3574', 'black_box4310', 'black_box4257', 'black_box4045', 'black_box3752', 'black_box3533', 'black_box3878', 'black_box3576', 'black_box3535', 'black_box4288', 'black_box4015', 'black_box4016', 'black_box3962', 'black_box4184', 'black_box3537', 'black_box4157', 'black_box3629', 'black_box3799', 'black_box4186', 'black_box4020', 'black_box4133', 'black_box4021', 'black_box3937', 'black_box4120', 'black_box3755', 'black_box4099', 'black_box4026', 'black_box3539', 'black_box3540', 'black_box3759', 'black_box3940', 'black_box3760', 'black_box3856', 'black_box3579', 'black_box3580', 'black_box4207', 'black_box3763', 'black_box3965', 'black_box3541', 'black_box3816', 'black_box3542', 'black_box4127', 'black_box4027', 'black_box3818', 'black_box3543', 'black_box3544', 'black_box3635', 'black_box4123', 'black_box3545', 'black_box3883', 'black_box4074', 'black_box3767', 'black_box3768', 'black_box3563', 'black_box4103', 'black_box3547', 'black_box3920', 'black_box4156', 'black_box4104', 'black_box4167', 'black_box3966', 'black_box4253', 'black_box4285', 'black_box4030', 'black_box3638', 'black_box3773', 'black_box4139', 'black_box3774', 'black_box3550', 'black_box3821', 'black_box3775', 'black_box3777', 'black_box3551', 'black_box4032', 'black_box3778', 'black_box4320', 'black_box4358', 'black_box4413', 'black_box4414', 'black_box4322', 'black_box4591', 'black_box4415', 'black_box4459', 'black_box4460', 'black_box4416', 'black_box4323', 'black_box4461', 'black_box4361', 'black_box4530', 'black_box4325', 'black_box4362', 'black_box4363', 'black_box4464', 'black_box4326', 'black_box4622', 'black_box4701', 'black_box4327', 'black_box4715', 'black_box4531', 'black_box4364', 'black_box4562', 'black_box4548', 'black_box4465', 'black_box4418', 'black_box4328', 'black_box4466', 'black_box4563', 'black_box4574', 'black_box4365', 'black_box4366', 'black_box4367', 'black_box4624', 'black_box4532', 'black_box4625', 'black_box4696', 'black_box4469', 'black_box4626', 'black_box4470', 'black_box4627', 'black_box4471', 'black_box4472', 'black_box4648', 'black_box4649', 'black_box4419', 'black_box4368', 'black_box4329', 'black_box4369', 'black_box4719', 'black_box4650', 'black_box4697', 'black_box4709', 'black_box4710', 'black_box4728', 'black_box4370', 'black_box4474', 'black_box4422', 'black_box4475', 'black_box4476', 'black_box4372', 'black_box4373', 'black_box4711', 'black_box4374', 'black_box4477', 'black_box4586', 'black_box4478', 'black_box4550', 'black_box4732', 'black_box4330', 'black_box4479', 'black_box4481', 'black_box4424', 'black_box4628', 'black_box4482', 'black_box4377', 'black_box4712', 'black_box4484', 'black_box4378', 'black_box4738', 'black_box4564', 'black_box4485', 'black_box4629', 'black_box4739', 'black_box4333', 'black_box4604', 'black_box4428', 'black_box4486', 'black_box4380', 'black_box4335', 'black_box4630', 'black_box4336', 'black_box4631', 'black_box4632', 'black_box4381', 'black_box4487', 'black_box4382', 'black_box4429', 'black_box4729', 'black_box4633', 'black_box4577', 'black_box4430', 'black_box4698', 'black_box4383', 'black_box4384', 'black_box4431', 'black_box4432', 'black_box4640', 'black_box4662', 'black_box4337', 'black_box4433', 'black_box4339', 'black_box4340', 'black_box4489', 'black_box4699', 'black_box4490', 'black_box4491', 'black_box4492', 'black_box4720', 'black_box4386', 'black_box4533', 'black_box4435', 'black_box4436', 'black_box4578', 'black_box4343', 'black_box4635', 'black_box4406', 'black_box4494', 'black_box4438', 'black_box4439', 'black_box4721', 'black_box4344', 'black_box4498', 'black_box4499', 'black_box4346', 'black_box4551', 'black_box4636', 'black_box4500', 'black_box4727', 'black_box4388', 'black_box4441', 'black_box4653', 'black_box4654', 'black_box4546', 'black_box4580', 'black_box4503', 'black_box4504', 'black_box4390', 'black_box4637', 'black_box4744', 'black_box4552', 'black_box4443', 'black_box4392', 'black_box4394', 'black_box4408', 'black_box4736', 'black_box4395', 'black_box4656', 'black_box4536', 'black_box4397', 'black_box4613', 'black_box4398', 'black_box4445', 'black_box4700', 'black_box4595', 'black_box4702', 'black_box4512', 'black_box4514', 'black_box4350', 'black_box4351', 'black_box4657', 'black_box4621', 'black_box4446', 'black_box4451', 'black_box4516', 'black_box4452', 'black_box4518', 'black_box4704', 'black_box4519', 'black_box4354', 'black_box4596', 'black_box4401', 'black_box4558', 'black_box4520', 'black_box4402', 'black_box4454', 'black_box4554', 'black_box4355', 'black_box4521', 'black_box4356', 'black_box4639', 'black_box4403', 'black_box4456', 'black_box4458', 'black_box4745', 'black_box4819', 'black_box4831', 'black_box4912', 'black_box4820', 'black_box4746', 'black_box4747', 'black_box4888', 'black_box4889', 'black_box4748', 'black_box4855', 'black_box4797', 'black_box4890', 'black_box4751', 'black_box4821', 'black_box4891', 'black_box4752', 'black_box4798', 'black_box4915', 'black_box4832', 'black_box4753', 'black_box4834', 'black_box4835', 'black_box4946', 'black_box4754', 'black_box4858', 'black_box4836', 'black_box4894', 'black_box4879', 'black_box4755', 'black_box4896', 'black_box4756', 'black_box4869', 'black_box4757', 'black_box4758', 'black_box4759', 'black_box4822', 'black_box4823', 'black_box4897', 'black_box4918', 'black_box4799', 'black_box4800', 'black_box4898', 'black_box4760', 'black_box4899', 'black_box4762', 'black_box4763', 'black_box4900', 'black_box4764', 'black_box4765', 'black_box4824', 'black_box4766', 'black_box4838', 'black_box4767', 'black_box4768', 'black_box4925', 'black_box4950', 'black_box4825', 'black_box4902', 'black_box4810', 'black_box4930', 'black_box4772', 'black_box4933', 'black_box4904', 'black_box4952', 'black_box4857', 'black_box4924', 'black_box4920', 'black_box4775', 'black_box4842', 'black_box4864', 'black_box4905', 'black_box4954', 'black_box4776', 'black_box4777', 'black_box4779', 'black_box4906', 'black_box4938', 'black_box4781', 'black_box4844', 'black_box4907', 'black_box4829', 'black_box4868', 'black_box4782', 'black_box4885', 'black_box4783', 'black_box4784', 'black_box4845', 'black_box4846', 'black_box4847', 'black_box4785', 'black_box4786', 'black_box4815', 'black_box4908', 'black_box4817', 'black_box4787', 'black_box4789', 'black_box4790', 'black_box4849', 'black_box4927', 'black_box4866', 'black_box4936', 'black_box4909', 'black_box4882', 'black_box4850', 'black_box4827', 'black_box4791', 'black_box4792', 'black_box4793', 'black_box4794', 'black_box4828', 'black_box4806', 'black_box4928', 'black_box4795', 'black_box4966', 'black_box4967', 'black_box5018', 'black_box5012', 'black_box4968', 'black_box4996', 'black_box5019', 'black_box4997', 'black_box5013', 'black_box4998', 'black_box4956', 'black_box4999', 'black_box5014', 'black_box4959', 'black_box5015', 'black_box5000', 'black_box4972', 'black_box5022', 'black_box4981', 'black_box4957', 'black_box5023', 'black_box5009', 'black_box5024', 'black_box5025', 'black_box4973', 'black_box5001', 'black_box5002', 'black_box5003', 'black_box4983', 'black_box5004', 'black_box5016', 'black_box4984', 'black_box4974', 'black_box4990', 'black_box5005', 'black_box5026', 'black_box4985', 'black_box5036', 'black_box4963', 'black_box5020', 'black_box4986', 'black_box4992', 'black_box4991', 'black_box4975', 'black_box4987', 'black_box5021', 'black_box4988', 'black_box4977', 'black_box5006', 'black_box4989', 'black_box5017', 'black_box4965', 'black_box5007', 'black_box4978', 'black_box5008', 'black_box4979', 'black_box5030', 'black_box5043', 'black_box5044', 'black_box5042', 'black_box5076', 'black_box5046', 'black_box5047', 'black_box5063', 'black_box5077', 'black_box5054', 'black_box5040', 'black_box5055', 'black_box5048', 'black_box5062', 'black_box5065', 'black_box5066', 'black_box5056', 'black_box5070', 'black_box5057', 'black_box5058', 'black_box5084', 'black_box5078', 'black_box5075', 'black_box5067', 'black_box5071', 'black_box5049', 'black_box5079', 'black_box5068', 'black_box5050', 'black_box5059', 'black_box5051', 'black_box5072', 'black_box5041', 'black_box5052', 'black_box5069', 'black_box5080', 'black_box5053', 'black_box5060', 'black_box5083', 'black_box5074', 'black_box5107', 'black_box5093', 'black_box5086', 'black_box5108', 'black_box5099', 'black_box5094', 'black_box5101', 'black_box5087', 'black_box5110', 'black_box5113', 'black_box5109', 'black_box5095', 'black_box5096', 'black_box5103', 'black_box5091', 'black_box5114', 'black_box5100', 'black_box5111', 'black_box5098', 'black_box5106', 'black_box5115', 'black_box5123', 'black_box5117', 'black_box5118', 'black_box5116', 'black_box5125', 'black_box5119', 'black_box5122', 'black_box5120', 'black_box5124', 'black_box5127', 'black_box5126'])

In [ ]:


In [ ]: