Skip to content

Latest commit

 

History

History
5550 lines (5072 loc) · 105 KB

PandasKickoff.md

File metadata and controls

5550 lines (5072 loc) · 105 KB

Exploring data using Pandas

Pandas

So far we explored Python and a few native libraries. Now we will play a little to simplify our life with tools to conduct some data analysis.

Pandas is the most popular library (so far) to import and handle data in Python.

Let's import some data from a CSV file

When downloading my ipynb, remember to also get the commits_pr.csv file

import pandas
cpr = pandas.read_csv("commits_pr.csv")

It became this easy to read a CSV file!!! And more... Look at what my cpr is:

type(cpr)
pandas.core.frame.DataFrame

Yes! A DataFrame. And it reads really nice, look:

cpr.tail()
### We can use head() and tail() functions to see a bit less
<style scoped> .dataframe tbody tr th:only-of-type { vertical-align: middle; }
.dataframe tbody tr th {
    vertical-align: top;
}

.dataframe thead th {
    text-align: right;
}
</style>
user project_name prog_lang pull_req_number num_commits
42087 user36933 node javascript 14285 1
42088 user36934 react javascript 8762 2
42089 user36934 rails ruby 27508 1
42090 user36935 cocos2d-x C++ 15047 1
42091 user36936 node javascript 9508 2

Before moving forward... Explaining a little about this dataset.

This dataset represents a series of Pull Requests made to a subset of projects hosted by GitHub. We worked on this data to capture a specific type of contributor, which we called casual contributor. These contributors are known by having a single pull request accepted in a project and not coming back (i.e., they have no long-term commitment to the project).

In this specific dataset, you will find the following columns:

  • user: represent a user in GitHub (anonymized here)
  • project_name: the name of GitHub project in which the pull request was accepted
  • prog_lang: programming language of the project
  • pull_req_num: unique identifier of the pull request
  • num_commits: number of commits sent within that specific pull request

Some information about the dataframe

Dimensions/shape of the dataset (lines vs. columns)

cpr.shape
(42092, 5)

What about the column names?

cpr.columns
Index(['user', 'project_name', 'prog_lang', 'pull_req_number', 'num_commits'], dtype='object')

And the datatype per column?

cpr.dtypes
user               object
project_name       object
prog_lang          object
pull_req_number     int64
num_commits         int64
dtype: object

Some more information: info() method prints information including the index dtype and column dtypes, non-null values and memory usage.

cpr.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 42092 entries, 0 to 42091
Data columns (total 5 columns):
user               42092 non-null object
project_name       42092 non-null object
prog_lang          42092 non-null object
pull_req_number    42092 non-null int64
num_commits        42092 non-null int64
dtypes: int64(2), object(3)
memory usage: 1.6+ MB

What is the type of a specific column???

type(cpr["num_commits"])
pandas.core.series.Series

A serie is a list, with one dimension, indexed. Each column of a dataframe is a series

Before moving ahead, we can use the types to filter some columns.

Let's say we want only the columns that store int:

int_columns = cpr.dtypes[cpr.dtypes == "int64"].index
int_columns
Index(['pull_req_number', 'num_commits'], dtype='object')

Now... I just want to see these columns... BOOM

cpr[int_columns].head()
<style scoped> .dataframe tbody tr th:only-of-type { vertical-align: middle; }
.dataframe tbody tr th {
    vertical-align: top;
}

.dataframe thead th {
    text-align: right;
}
</style>
pull_req_number num_commits
0 122 1
1 3325 1
2 2128 2
3 2663 1
4 7901 1

What about statistical information about my DataFrame?

describe() method provides a summary of numeric values in your dataset: mean, standard deviation, minimum, maximum, 1st quartile, 2nd quartile (median), 3rd quartile of the columns with numeric values. It also counts the number of variables in the dataset (are there missing variables?)

cpr.describe()
<style scoped> .dataframe tbody tr th:only-of-type { vertical-align: middle; }
.dataframe tbody tr th {
    vertical-align: top;
}

.dataframe thead th {
    text-align: right;
}
</style>
pull_req_number num_commits
count 42092.000000 42092.000000
mean 4452.145681 3.824242
std 6152.304478 20.760123
min 1.000000 1.000000
25% 628.000000 1.000000
50% 2007.000000 1.000000
75% 5534.250000 2.000000
max 38174.000000 385.000000

We can do it for a Series...

#cpr["num_commits"].describe()
cpr.num_commits.describe()
count    42092.000000
mean         3.824242
std         20.760123
min          1.000000
25%          1.000000
50%          1.000000
75%          2.000000
max        385.000000
Name: num_commits, dtype: float64
#LOOK at this with a non-numeric column
cpr.prog_lang.describe() #either way work.
count     42092
unique       17
top        ruby
freq       8147
Name: prog_lang, dtype: object

And we can get specific information per column

cpr.num_commits.median()
1.0
cpr.num_commits.mean()
3.8242421362729258
cpr.num_commits.std()
20.76012335707578

--------------####

Playing with the data: sorting

We can sort our data easily using pandas.

In this example, sorting by Programming Language

cpr.sort_values("num_commits", ascending=False).head(10)
<style scoped> .dataframe tbody tr th:only-of-type { vertical-align: middle; }
.dataframe tbody tr th {
    vertical-align: top;
}

.dataframe thead th {
    text-align: right;
}
</style>
user project_name prog_lang pull_req_number num_commits
38987 user34165 three.js javascript 7832 385
705 user640 cocos2d-x C++ 6866 364
7335 user6426 redis C 3506 315
19587 user17126 jenkins java 2718 307
35826 user31347 redis C 3230 290
13300 user11672 cocos2d-x C++ 16576 281
3601 user3214 three.js javascript 7808 277
13873 user12167 spring-framework java 642 273
26360 user23077 Faker php 660 259
18632 user16293 libgdx java 814 258

We can sort using many columns, by using a list (sort will happen from the first item to the last)

cpr.sort_values(["prog_lang", "project_name", "num_commits"], ascending=False).head(10)
<style scoped> .dataframe tbody tr th:only-of-type { vertical-align: middle; }
.dataframe tbody tr th {
    vertical-align: top;
}

.dataframe thead th {
    text-align: right;
}
</style>
user project_name prog_lang pull_req_number num_commits
14351 user12556 winjs typescript 678 11
40943 user35906 winjs typescript 1609 10
35890 user31404 winjs typescript 565 6
1800 user1614 winjs typescript 1179 3
20245 user17684 winjs typescript 1559 3
29167 user25562 winjs typescript 30 3
4780 user4214 winjs typescript 44 2
5142 user4533 winjs typescript 185 2
7862 user6897 winjs typescript 1515 2
32077 user28045 winjs typescript 428 2
cpr.head(10)
<style scoped> .dataframe tbody tr th:only-of-type { vertical-align: middle; }
.dataframe tbody tr th {
    vertical-align: top;
}

.dataframe thead th {
    text-align: right;
}
</style>
user project_name prog_lang pull_req_number num_commits
0 user1 php-src C 122 1
1 user2 activeadmin ruby 3325 1
2 user3 YouCompleteMe python 2128 2
3 user4 requests python 2663 1
4 user5 ipython python 7901 1
5 user6 haste-compiler haskell 407 1
6 user7 select2 javascript 1987 1
7 user8 django python 8608 3
8 user9 folly C++ 206 1
9 user10 django python 4745 2

If you want to keep the sorted version, you can use the parameter inplace:

cpr.sort_values(["prog_lang", "project_name", "num_commits"], ascending=False, inplace=True)
cpr.head(10)
#cpr = pandas.read_csv("commits_pr.csv") #--> to return to the original order
<style scoped> .dataframe tbody tr th:only-of-type { vertical-align: middle; }
.dataframe tbody tr th {
    vertical-align: top;
}

.dataframe thead th {
    text-align: right;
}
</style>
user project_name prog_lang pull_req_number num_commits
14351 user12556 winjs typescript 678 11
40943 user35906 winjs typescript 1609 10
35890 user31404 winjs typescript 565 6
1800 user1614 winjs typescript 1179 3
20245 user17684 winjs typescript 1559 3
29167 user25562 winjs typescript 30 3
4780 user4214 winjs typescript 44 2
5142 user4533 winjs typescript 185 2
7862 user6897 winjs typescript 1515 2
32077 user28045 winjs typescript 428 2

Counting the occurences of variables

So, to count the occurrences in a column we have to select the column first, and use the method value_counts()

cpr.prog_lang.value_counts()
ruby            8147
javascript      7052
python          4092
php             4069
C++             2785
java            2596
C               2196
go              2103
coffeescript    2066
scala           1823
objective-c     1801
haskell          950
clojure          882
perl             663
erlang           500
typescript       343
Perl              24
Name: prog_lang, dtype: int64

But... I just want to know what are the languages out there. Is there a way?

Always

cpr["prog_lang"].unique()
array(['typescript', 'scala', 'ruby', 'python', 'php', 'perl',
       'objective-c', 'javascript', 'java', 'haskell', 'go', 'erlang',
       'coffeescript', 'clojure', 'Perl', 'C++', 'C'], dtype=object)

OK! Let's do something else... Like, selecting columns and filtering data

Let's say that I just want to look at the columns programming language, project name and number of commits.

I can select them and create a new DF

selected_columns = ["prog_lang", "project_name", "num_commits"]
my_subset = cpr[selected_columns]
my_subset.head()
<style scoped> .dataframe tbody tr th:only-of-type { vertical-align: middle; }
.dataframe tbody tr th {
    vertical-align: top;
}

.dataframe thead th {
    text-align: right;
}
</style>
prog_lang project_name num_commits
14351 typescript winjs 11
40943 typescript winjs 10
35890 typescript winjs 6
1800 typescript winjs 3
20245 typescript winjs 3

What if now I want to filter those projects written in C language?

only_C = cpr[(cpr["prog_lang"]=='C') & (cpr["num_commits"]==2)]
only_C.describe()
<style scoped> .dataframe tbody tr th:only-of-type { vertical-align: middle; }
.dataframe tbody tr th {
    vertical-align: top;
}

.dataframe thead th {
    text-align: right;
}
</style>
pull_req_number num_commits
count 389.000000 389.0
mean 3815.380463 2.0
std 3264.957089 0.0
min 3.000000 2.0
25% 1061.000000 2.0
50% 2860.000000 2.0
75% 5831.000000 2.0
max 12724.000000 2.0

We can filter whatever we want:

single_commit = cpr[cpr["num_commits"] == 1]

We can create filters in variables, and use whenever we want, as well

one_commit = cpr["num_commits"]==1
language_C = cpr["prog_lang"]=="C"
multi_commit = cpr["num_commits"]>1
cpr[one_commit & language_C].head(10)
<style scoped> .dataframe tbody tr th:only-of-type { vertical-align: middle; }
.dataframe tbody tr th {
    vertical-align: top;
}

.dataframe thead th {
    text-align: right;
}
</style>
user project_name prog_lang pull_req_number num_commits
1625 user1464 twemproxy C 284 1
1696 user1526 twemproxy C 224 1
2259 user2025 twemproxy C 398 1
2522 user2268 twemproxy C 387 1
3210 user2872 twemproxy C 311 1
3946 user3515 twemproxy C 366 1
4774 user4209 twemproxy C 291 1
5802 user5103 twemproxy C 3 1
7326 user6419 twemproxy C 58 1
7811 user6850 twemproxy C 217 1

And... we can use OR (|) and AND(&) to play!

cpr[one_commit & language_C].head(10)
<style scoped> .dataframe tbody tr th:only-of-type { vertical-align: middle; }
.dataframe tbody tr th {
    vertical-align: top;
}

.dataframe thead th {
    text-align: right;
}
</style>
user project_name prog_lang pull_req_number num_commits
1625 user1464 twemproxy C 284 1
1696 user1526 twemproxy C 224 1
2259 user2025 twemproxy C 398 1
2522 user2268 twemproxy C 387 1
3210 user2872 twemproxy C 311 1
3946 user3515 twemproxy C 366 1
4774 user4209 twemproxy C 291 1
5802 user5103 twemproxy C 3 1
7326 user6419 twemproxy C 58 1
7811 user6850 twemproxy C 217 1

What if we want the pull requests with more than one commit for the projects written in "C" and those with 2 commits for the projects written in "typescript"???

Let's do it!

#####
two_commits = cpr["num_commits"]==2
language_typescript = cpr["prog_lang"]=="typescript"

cpr[(one_commit & language_C) | (two_commits & language_typescript)]
<style scoped> .dataframe tbody tr th:only-of-type { vertical-align: middle; }
.dataframe tbody tr th {
    vertical-align: top;
}

.dataframe thead th {
    text-align: right;
}
</style>
user project_name prog_lang pull_req_number num_commits
4780 user4214 winjs typescript 44 2
5142 user4533 winjs typescript 185 2
7862 user6897 winjs typescript 1515 2
32077 user28045 winjs typescript 428 2
14874 user13017 typescript-node-definitions typescript 10 2
4628 user4086 tsd typescript 251 2
6163 user5410 tsd typescript 99 2
19480 user17042 tsd typescript 227 2
28014 user24539 tsd typescript 223 2
2938 user2628 shumway typescript 1660 2
29652 user25959 shumway typescript 7 2
35752 user31281 shumway typescript 2156 2
39930 user35002 shumway typescript 119 2
12063 user10592 reddcoin typescript 8 2
24217 user21197 reddcoin typescript 80 2
18678 user16336 primecoin typescript 15 2
37326 user32674 primecoin typescript 4 2
3309 user2954 litecoin typescript 373 2
8441 user7412 litecoin typescript 356 2
12193 user10705 litecoin typescript 3 2
14382 user12584 litecoin typescript 16 2
14478 user12666 litecoin typescript 2 2
34893 user30521 litecoin typescript 124 2
41348 user36268 litecoin typescript 242 2
18750 user16399 egret-core typescript 125 2
15621 user13681 doppio typescript 415 2
29010 user25413 doppio typescript 417 2
41824 user36687 doppio typescript 387 2
430 user398 TypeScript typescript 8394 2
2542 user2286 TypeScript typescript 13045 2
... ... ... ... ... ...
25269 user22129 cphalcon C 11147 1
26031 user22791 cphalcon C 11144 1
26174 user22918 cphalcon C 3192 1
26259 user22997 cphalcon C 12609 1
26272 user23006 cphalcon C 2455 1
26445 user23156 cphalcon C 11214 1
27626 user24204 cphalcon C 11951 1
27992 user24520 cphalcon C 2176 1
28734 user25172 cphalcon C 636 1
29569 user25888 cphalcon C 10007 1
29871 user26145 cphalcon C 10802 1
30035 user26276 cphalcon C 3051 1
30057 user26297 cphalcon C 12757 1
30508 user26700 cphalcon C 9927 1
30829 user26967 cphalcon C 9918 1
32633 user28536 cphalcon C 1033 1
32940 user28804 cphalcon C 11983 1
33441 user29243 cphalcon C 1490 1
33795 user29560 cphalcon C 2354 1
37159 user32521 cphalcon C 3340 1
39986 user35049 cphalcon C 2689 1
41069 user36019 cphalcon C 11071 1
41416 user36327 cphalcon C 11148 1
41484 user36386 cphalcon C 34 1
41679 user36551 cphalcon C 3082 1
2465 user2213 ccv C 83 1
14883 user13025 ccv C 4 1
21334 user18630 ccv C 19 1
21728 user18978 ccv C 132 1
39827 user34908 ccv C 150 1

1367 rows × 5 columns

What if I wanted to convert number of commits into a feature by creating bands of values that we define:

  • 1 commit = group 1
  • 2 - 5 commits = group 2
  • 6 - 20 commits = group 3
  • more than 20 = group 4
cpr.loc[cpr["num_commits"]==1, "group_commit"]=1
cpr.loc[(cpr["num_commits"]>1) & (cpr["num_commits"]<=5), "group_commit"]=2
cpr.loc[(cpr["num_commits"]>5) & (cpr["num_commits"]<=20), "group_commit"]=3
cpr.loc[cpr["num_commits"]>20, "group_commit"]=4
cpr.group_commit = cpr.group_commit.astype('int32')
cpr.head()
<style scoped> .dataframe tbody tr th:only-of-type { vertical-align: middle; }
.dataframe tbody tr th {
    vertical-align: top;
}

.dataframe thead th {
    text-align: right;
}
</style>
user project_name prog_lang pull_req_number num_commits group_commit
14351 user12556 winjs typescript 678 11 3
40943 user35906 winjs typescript 1609 10 3
35890 user31404 winjs typescript 565 6 3
1800 user1614 winjs typescript 1179 3 2
20245 user17684 winjs typescript 1559 3 2

I challenge you:

What if: I wanted to know how the average of num_commits for those pull requests in group_commit 4???

I challenge you (2):

Can you do that average per language?

cpr[cpr["prog_lang"] == "typescript"].quantile(0.75)
pull_req_number    8213.5
num_commits           2.0
group_commit          2.0
Name: 0.75, dtype: float64

Some more...

Let's work with a new dataset...

This is not only related to casual contributors, but all contributors

commits_complete = pandas.read_csv('commit_complete.csv')
commits_complete.sort_values('num_commits', ascending=False).head(10)
<style scoped> .dataframe tbody tr th:only-of-type { vertical-align: middle; }
.dataframe tbody tr th {
    vertical-align: top;
}

.dataframe thead th {
    text-align: right;
}
</style>
user project_name prog_lang num_commits additions deletions files_changed num_comments
52041 user_13168 cocos2d-x C++ 10000.0 1320472.0 24870.0 5865.0 0.0
52036 user_13168 cocos2d-x C++ 10000.0 1321513.0 24870.0 5905.0 0.0
54883 user_13227 cocos2d-x C++ 10000.0 1549480.0 843841.0 9726.0 0.0
52033 user_13168 cocos2d-x C++ 10000.0 1320976.0 24870.0 5892.0 0.0
61760 user_13751 cocos2d-x C++ 10000.0 1163795.0 24870.0 5241.0 0.0
52034 user_13168 cocos2d-x C++ 10000.0 1321296.0 24870.0 5905.0 0.0
61813 user_13757 cocos2d-x C++ 10000.0 1324952.0 24870.0 5903.0 0.0
52035 user_13168 cocos2d-x C++ 10000.0 1321419.0 24870.0 5890.0 0.0
61841 user_13764 cocos2d-x C++ 10000.0 1539898.0 21568.0 6574.0 0.0
54495 user_13188 cocos2d-x C++ 10000.0 1249461.0 1129333.0 8848.0 0.0
commits_complete['num_commits'].corr(commits_complete['additions'])
0.6573205139433453
commits_complete.corr()
<style scoped> .dataframe tbody tr th:only-of-type { vertical-align: middle; }
.dataframe tbody tr th {
    vertical-align: top;
}

.dataframe thead th {
    text-align: right;
}
</style>
num_commits additions deletions files_changed num_comments
num_commits 1.000000 0.657321 0.151074 0.605152 -0.007297
additions 0.657321 1.000000 0.244859 0.749543 -0.002682
deletions 0.151074 0.244859 1.000000 0.566905 0.011876
files_changed 0.605152 0.749543 0.566905 1.000000 0.003657
num_comments -0.007297 -0.002682 0.011876 0.003657 1.000000
commits_complete.corr(method='pearson').style.background_gradient(cmap='coolwarm')

Check the result somewhere else

Can we play with graphics?

Plot types:

  • 'line' : line plot (default)
  • 'bar' : vertical bar plot
  • 'barh' : horizontal bar plot
  • 'hist' : histogram
  • 'box' : boxplot
  • 'kde' : Kernel Density Estimation plot
  • 'density' : same as 'kde'
  • 'area' : area plot
  • 'pie' : pie plot
  • 'scatter' : scatter plot
  • 'hexbin' : hexbin plot

Histogram

cpr.num_commits.plot.hist(bins=200)
<matplotlib.axes._subplots.AxesSubplot at 0x116703e48>

png

cpr[cpr["prog_lang"]=="C"].num_commits.plot.hist(bins=20, color="red", alpha=0.5)
cpr[cpr["prog_lang"]=="java"].num_commits.plot.hist(bins=20, alpha=0.5).legend(["C", "Java"])
<matplotlib.legend.Legend at 0x113399278>

png

cpr['prog_lang'].value_counts().plot.bar()
<matplotlib.axes._subplots.AxesSubplot at 0x1134acbe0>

png

cpr[cpr["prog_lang"]== "C"].project_name.value_counts().plot.bar()
<matplotlib.axes._subplots.AxesSubplot at 0x1135ca390>

png

commits_complete.plot.scatter(x = "files_changed", y = "num_commits")
<matplotlib.axes._subplots.AxesSubplot at 0x11347bcf8>

png

lang_c = cpr.prog_lang=="C"
lang_java = cpr.prog_lang=="java"
lang_php = cpr.prog_lang=="php"


cpr[(lang_c) | (lang_java) | (lang_php)].boxplot(by='prog_lang', column=['num_commits'])
<matplotlib.axes._subplots.AxesSubplot at 0x113489400>

png

plot = cpr[(lang_c) | (lang_java) | (lang_php)].boxplot(by='prog_lang', column=['num_commits'], showfliers=False, grid=False)

plot.set_xlabel("Language")
plot.set_ylabel("# of commits")
plot.set_title("")
Text(0.5, 1.0, '')

png

Just to show...

that it is possible to do statistical analysis

from scipy import stats

stats.mannwhitneyu(cpr[(lang_c)].num_commits, cpr[(lang_java)].num_commits)
MannwhitneyuResult(statistic=2481768.0, pvalue=2.1763470665307134e-20)

Exporting

my_subset.to_dict()
{'prog_lang': {14351: 'typescript',
  40943: 'typescript',
  35890: 'typescript',
  1800: 'typescript',
  20245: 'typescript',
  29167: 'typescript',
  4780: 'typescript',
  5142: 'typescript',
  7862: 'typescript',
  32077: 'typescript',
  535: 'typescript',
  2368: 'typescript',
  3644: 'typescript',
  6174: 'typescript',
  9288: 'typescript',
  9851: 'typescript',
  14019: 'typescript',
  17979: 'typescript',
  20726: 'typescript',
  25046: 'typescript',
  28071: 'typescript',
  28507: 'typescript',
  29869: 'typescript',
  34060: 'typescript',
  34065: 'typescript',
  39071: 'typescript',
  854: 'typescript',
  14874: 'typescript',
  1860: 'typescript',
  3667: 'typescript',
  4370: 'typescript',
  4815: 'typescript',
  8702: 'typescript',
  8937: 'typescript',
  12216: 'typescript',
  12674: 'typescript',
  24329: 'typescript',
  27932: 'typescript',
  34233: 'typescript',
  37983: 'typescript',
  38922: 'typescript',
  39249: 'typescript',
  2131: 'typescript',
  32309: 'typescript',
  32557: 'typescript',
  4249: 'typescript',
  35078: 'typescript',
  40918: 'typescript',
  4628: 'typescript',
  6163: 'typescript',
  19480: 'typescript',
  28014: 'typescript',
  1465: 'typescript',
  4491: 'typescript',
  8228: 'typescript',
  13271: 'typescript',
  14337: 'typescript',
  17756: 'typescript',
  18359: 'typescript',
  20548: 'typescript',
  22726: 'typescript',
  27413: 'typescript',
  27831: 'typescript',
  29199: 'typescript',
  31193: 'typescript',
  41245: 'typescript',
  26242: 'typescript',
  9564: 'typescript',
  11313: 'typescript',
  28612: 'typescript',
  33920: 'typescript',
  12142: 'typescript',
  21945: 'typescript',
  2681: 'typescript',
  35930: 'typescript',
  2938: 'typescript',
  29652: 'typescript',
  35752: 'typescript',
  39930: 'typescript',
  2672: 'typescript',
  5431: 'typescript',
  7477: 'typescript',
  7620: 'typescript',
  10958: 'typescript',
  11155: 'typescript',
  11660: 'typescript',
  13310: 'typescript',
  13811: 'typescript',
  16395: 'typescript',
  18022: 'typescript',
  18472: 'typescript',
  23164: 'typescript',
  26882: 'typescript',
  29553: 'typescript',
  30362: 'typescript',
  30478: 'typescript',
  33480: 'typescript',
  35636: 'typescript',
  35904: 'typescript',
  38979: 'typescript',
  3994: 'typescript',
  4812: 'typescript',
  17696: 'typescript',
  19075: 'typescript',
  19789: 'typescript',
  25409: 'typescript',
  31586: 'typescript',
  31940: 'typescript',
  32836: 'typescript',
  36545: 'typescript',
  38333: 'typescript',
  12063: 'typescript',
  24217: 'typescript',
  11670: 'typescript',
  15277: 'typescript',
  31244: 'typescript',
  31667: 'typescript',
  35068: 'typescript',
  36274: 'typescript',
  39993: 'typescript',
  18678: 'typescript',
  37326: 'typescript',
  15342: 'typescript',
  25235: 'typescript',
  29153: 'typescript',
  31694: 'typescript',
  29780: 'typescript',
  40003: 'typescript',
  3309: 'typescript',
  8441: 'typescript',
  12193: 'typescript',
  14382: 'typescript',
  14478: 'typescript',
  34893: 'typescript',
  41348: 'typescript',
  7332: 'typescript',
  11531: 'typescript',
  13342: 'typescript',
  16156: 'typescript',
  20393: 'typescript',
  20614: 'typescript',
  22498: 'typescript',
  26239: 'typescript',
  27240: 'typescript',
  28979: 'typescript',
  30062: 'typescript',
  32301: 'typescript',
  32479: 'typescript',
  34161: 'typescript',
  34546: 'typescript',
  39005: 'typescript',
  39750: 'typescript',
  40282: 'typescript',
  41814: 'typescript',
  8041: 'typescript',
  41987: 'typescript',
  18750: 'typescript',
  4447: 'typescript',
  6903: 'typescript',
  8578: 'typescript',
  12070: 'typescript',
  16325: 'typescript',
  19790: 'typescript',
  22746: 'typescript',
  23155: 'typescript',
  35582: 'typescript',
  39168: 'typescript',
  39989: 'typescript',
  41222: 'typescript',
  41923: 'typescript',
  20572: 'typescript',
  15621: 'typescript',
  29010: 'typescript',
  41824: 'typescript',
  1069: 'typescript',
  5317: 'typescript',
  11557: 'typescript',
  12890: 'typescript',
  14017: 'typescript',
  16537: 'typescript',
  24836: 'typescript',
  29412: 'typescript',
  29507: 'typescript',
  31063: 'typescript',
  40026: 'typescript',
  3227: 'typescript',
  18237: 'typescript',
  40005: 'typescript',
  929: 'typescript',
  21101: 'typescript',
  354: 'typescript',
  2116: 'typescript',
  6570: 'typescript',
  15272: 'typescript',
  6145: 'typescript',
  29531: 'typescript',
  23981: 'typescript',
  9147: 'typescript',
  39165: 'typescript',
  10443: 'typescript',
  16254: 'typescript',
  25429: 'typescript',
  39046: 'typescript',
  10768: 'typescript',
  24609: 'typescript',
  33636: 'typescript',
  35945: 'typescript',
  40284: 'typescript',
  41317: 'typescript',
  10062: 'typescript',
  11627: 'typescript',
  18716: 'typescript',
  21366: 'typescript',
  27898: 'typescript',
  28578: 'typescript',
  29516: 'typescript',
  34032: 'typescript',
  40557: 'typescript',
  2353: 'typescript',
  6494: 'typescript',
  8087: 'typescript',
  12086: 'typescript',
  13975: 'typescript',
  14152: 'typescript',
  15529: 'typescript',
  16107: 'typescript',
  20922: 'typescript',
  26166: 'typescript',
  27277: 'typescript',
  28227: 'typescript',
  28312: 'typescript',
  29200: 'typescript',
  33078: 'typescript',
  39451: 'typescript',
  41280: 'typescript',
  430: 'typescript',
  2542: 'typescript',
  2812: 'typescript',
  4629: 'typescript',
  4937: 'typescript',
  8823: 'typescript',
  11962: 'typescript',
  12041: 'typescript',
  12717: 'typescript',
  13291: 'typescript',
  13427: 'typescript',
  14746: 'typescript',
  16120: 'typescript',
  20357: 'typescript',
  20551: 'typescript',
  27272: 'typescript',
  28638: 'typescript',
  29524: 'typescript',
  31344: 'typescript',
  31641: 'typescript',
  31734: 'typescript',
  32074: 'typescript',
  32193: 'typescript',
  33829: 'typescript',
  36412: 'typescript',
  36777: 'typescript',
  37257: 'typescript',
  37266: 'typescript',
  38129: 'typescript',
  38170: 'typescript',
  38690: 'typescript',
  39504: 'typescript',
  40592: 'typescript',
  41818: 'typescript',
  197: 'typescript',
  1782: 'typescript',
  2075: 'typescript',
  3165: 'typescript',
  3788: 'typescript',
  3798: 'typescript',
  4131: 'typescript',
  4146: 'typescript',
  4756: 'typescript',
  4987: 'typescript',
  5364: 'typescript',
  5550: 'typescript',
  5925: 'typescript',
  6301: 'typescript',
  6547: 'typescript',
  8040: 'typescript',
  8660: 'typescript',
  9254: 'typescript',
  9619: 'typescript',
  11802: 'typescript',
  12203: 'typescript',
  12563: 'typescript',
  12775: 'typescript',
  13008: 'typescript',
  13343: 'typescript',
  13617: 'typescript',
  14018: 'typescript',
  14160: 'typescript',
  14648: 'typescript',
  15128: 'typescript',
  15474: 'typescript',
  15699: 'typescript',
  16312: 'typescript',
  16538: 'typescript',
  17031: 'typescript',
  17659: 'typescript',
  17991: 'typescript',
  18685: 'typescript',
  19279: 'typescript',
  19326: 'typescript',
  19940: 'typescript',
  20883: 'typescript',
  20992: 'typescript',
  21342: 'typescript',
  21458: 'typescript',
  22877: 'typescript',
  22912: 'typescript',
  23448: 'typescript',
  23476: 'typescript',
  23611: 'typescript',
  24365: 'typescript',
  24398: 'typescript',
  24521: 'typescript',
  24678: 'typescript',
  25298: 'typescript',
  25808: 'typescript',
  25996: 'typescript',
  28841: 'typescript',
  29590: 'typescript',
  29852: 'typescript',
  29937: 'typescript',
  30107: 'typescript',
  30553: 'typescript',
  30675: 'typescript',
  30819: 'typescript',
  31909: 'typescript',
  33564: 'typescript',
  34245: 'typescript',
  35500: 'typescript',
  36419: 'typescript',
  36968: 'typescript',
  38014: 'typescript',
  38694: 'typescript',
  39667: 'typescript',
  12366: 'scala',
  30943: 'scala',
  10321: 'scala',
  18803: 'scala',
  507: 'scala',
  4802: 'scala',
  30714: 'scala',
  37109: 'scala',
  31265: 'scala',
  20512: 'scala',
  122: 'scala',
  462: 'scala',
  1139: 'scala',
  1468: 'scala',
  1819: 'scala',
  2149: 'scala',
  2873: 'scala',
  2876: 'scala',
  3499: 'scala',
  3850: 'scala',
  4101: 'scala',
  4281: 'scala',
  4408: 'scala',
  4414: 'scala',
  4570: 'scala',
  4692: 'scala',
  4710: 'scala',
  4809: 'scala',
  4881: 'scala',
  6011: 'scala',
  6071: 'scala',
  6263: 'scala',
  6526: 'scala',
  6928: 'scala',
  6949: 'scala',
  7378: 'scala',
  7461: 'scala',
  7695: 'scala',
  7849: 'scala',
  7868: 'scala',
  8358: 'scala',
  8704: 'scala',
  9543: 'scala',
  9621: 'scala',
  10127: 'scala',
  10274: 'scala',
  10275: 'scala',
  10548: 'scala',
  10728: 'scala',
  10826: 'scala',
  10837: 'scala',
  10882: 'scala',
  11348: 'scala',
  11838: 'scala',
  11973: 'scala',
  12959: 'scala',
  13323: 'scala',
  14120: 'scala',
  14128: 'scala',
  14182: 'scala',
  14661: 'scala',
  15515: 'scala',
  15847: 'scala',
  16063: 'scala',
  16835: 'scala',
  16981: 'scala',
  17168: 'scala',
  17231: 'scala',
  17422: 'scala',
  17489: 'scala',
  18825: 'scala',
  19072: 'scala',
  19118: 'scala',
  19156: 'scala',
  19572: 'scala',
  19748: 'scala',
  20124: 'scala',
  20237: 'scala',
  20457: 'scala',
  21179: 'scala',
  21228: 'scala',
  21252: 'scala',
  21624: 'scala',
  22099: 'scala',
  22148: 'scala',
  22556: 'scala',
  22993: 'scala',
  23425: 'scala',
  23429: 'scala',
  23687: 'scala',
  24093: 'scala',
  24265: 'scala',
  24276: 'scala',
  24549: 'scala',
  25105: 'scala',
  25490: 'scala',
  25616: 'scala',
  25649: 'scala',
  25972: 'scala',
  26045: 'scala',
  26629: 'scala',
  26636: 'scala',
  27299: 'scala',
  27592: 'scala',
  28459: 'scala',
  28585: 'scala',
  28653: 'scala',
  29086: 'scala',
  29298: 'scala',
  29435: 'scala',
  29899: 'scala',
  30053: 'scala',
  30070: 'scala',
  30144: 'scala',
  30383: 'scala',
  30802: 'scala',
  30921: 'scala',
  30997: 'scala',
  31677: 'scala',
  32097: 'scala',
  32111: 'scala',
  32113: 'scala',
  32201: 'scala',
  32243: 'scala',
  32279: 'scala',
  32666: 'scala',
  33159: 'scala',
  33253: 'scala',
  33848: 'scala',
  33856: 'scala',
  34009: 'scala',
  34028: 'scala',
  34112: 'scala',
  34394: 'scala',
  34497: 'scala',
  34662: 'scala',
  34703: 'scala',
  34809: 'scala',
  35193: 'scala',
  35354: 'scala',
  35376: 'scala',
  35725: 'scala',
  36673: 'scala',
  36774: 'scala',
  37011: 'scala',
  37140: 'scala',
  38132: 'scala',
  38234: 'scala',
  38373: 'scala',
  38513: 'scala',
  38995: 'scala',
  39642: 'scala',
  39688: 'scala',
  39692: 'scala',
  40100: 'scala',
  40837: 'scala',
  41224: 'scala',
  41974: 'scala',
  31654: 'scala',
  2351: 'scala',
  23016: 'scala',
  40369: 'scala',
  36508: 'scala',
  40948: 'scala',
  12501: 'scala',
  5573: 'scala',
  10374: 'scala',
  28911: 'scala',
  29639: 'scala',
  33122: 'scala',
  40504: 'scala',
  28648: 'scala',
  7860: 'scala',
  6549: 'scala',
  23186: 'scala',
  23904: 'scala',
  12450: 'scala',
  20731: 'scala',
  39334: 'scala',
  5193: 'scala',
  25197: 'scala',
  36784: 'scala',
  840: 'scala',
  6622: 'scala',
  14405: 'scala',
  37170: 'scala',
  1198: 'scala',
  1521: 'scala',
  4264: 'scala',
  8205: 'scala',
  9884: 'scala',
  13190: 'scala',
  13284: 'scala',
  18718: 'scala',
  18761: 'scala',
  25123: 'scala',
  25454: 'scala',
  31235: 'scala',
  38798: 'scala',
  38868: 'scala',
  39077: 'scala',
  39338: 'scala',
  40476: 'scala',
  123: 'scala',
  524: 'scala',
  1741: 'scala',
  1869: 'scala',
  3600: 'scala',
  4142: 'scala',
  5226: 'scala',
  6331: 'scala',
  7608: 'scala',
  7830: 'scala',
  9390: 'scala',
  16721: 'scala',
  17229: 'scala',
  17679: 'scala',
  19214: 'scala',
  19643: 'scala',
  21572: 'scala',
  25124: 'scala',
  27508: 'scala',
  28075: 'scala',
  30516: 'scala',
  32084: 'scala',
  33038: 'scala',
  34692: 'scala',
  35165: 'scala',
  39652: 'scala',
  39757: 'scala',
  4861: 'scala',
  14075: 'scala',
  16237: 'scala',
  16501: 'scala',
  3099: 'scala',
  10072: 'scala',
  11486: 'scala',
  15705: 'scala',
  29790: 'scala',
  34589: 'scala',
  34939: 'scala',
  4402: 'scala',
  8430: 'scala',
  9531: 'scala',
  9549: 'scala',
  13976: 'scala',
  14403: 'scala',
  15660: 'scala',
  17385: 'scala',
  20910: 'scala',
  20929: 'scala',
  21167: 'scala',
  25492: 'scala',
  26085: 'scala',
  26575: 'scala',
  27582: 'scala',
  33415: 'scala',
  35647: 'scala',
  35974: 'scala',
  12667: 'scala',
  565: 'scala',
  1692: 'scala',
  21939: 'scala',
  4325: 'scala',
  35296: 'scala',
  1046: 'scala',
  14350: 'scala',
  30952: 'scala',
  826: 'scala',
  10663: 'scala',
  21571: 'scala',
  22322: 'scala',
  29528: 'scala',
  35420: 'scala',
  38722: 'scala',
  1197: 'scala',
  16573: 'scala',
  23870: 'scala',
  24260: 'scala',
  24900: 'scala',
  31035: 'scala',
  31200: 'scala',
  35059: 'scala',
  35602: 'scala',
  40091: 'scala',
  2364: 'scala',
  5998: 'scala',
  11123: 'scala',
  15465: 'scala',
  17035: 'scala',
  18943: 'scala',
  20113: 'scala',
  21964: 'scala',
  22939: 'scala',
  23562: 'scala',
  25949: 'scala',
  27285: 'scala',
  29152: 'scala',
  33066: 'scala',
  33577: 'scala',
  35639: 'scala',
  38345: 'scala',
  1565: 'scala',
  2355: 'scala',
  2531: 'scala',
  7783: 'scala',
  8633: 'scala',
  9603: 'scala',
  10667: 'scala',
  11758: 'scala',
  12705: 'scala',
  13603: 'scala',
  16218: 'scala',
  19260: 'scala',
  19327: 'scala',
  19774: 'scala',
  20713: 'scala',
  22041: 'scala',
  25332: 'scala',
  27515: 'scala',
  28837: 'scala',
  30282: 'scala',
  30583: 'scala',
  31010: 'scala',
  31327: 'scala',
  31828: 'scala',
  32047: 'scala',
  32693: 'scala',
  36064: 'scala',
  36372: 'scala',
  38088: 'scala',
  39481: 'scala',
  39538: 'scala',
  40280: 'scala',
  6310: 'scala',
  3719: 'scala',
  11933: 'scala',
  2418: 'scala',
  10488: 'scala',
  10694: 'scala',
  16709: 'scala',
  17666: 'scala',
  20541: 'scala',
  10425: 'scala',
  11811: 'scala',
  20412: 'scala',
  25681: 'scala',
  26340: 'scala',
  27991: 'scala',
  32627: 'scala',
  983: 'scala',
  3944: 'scala',
  7197: 'scala',
  7408: 'scala',
  9727: 'scala',
  20692: 'scala',
  22084: 'scala',
  22648: 'scala',
  23912: 'scala',
  25462: 'scala',
  25463: 'scala',
  28007: 'scala',
  30461: 'scala',
  31605: 'scala',
  32218: 'scala',
  32718: 'scala',
  36258: 'scala',
  37067: 'scala',
  1288: 'scala',
  2548: 'scala',
  2875: 'scala',
  3821: 'scala',
  4104: 'scala',
  4701: 'scala',
  5381: 'scala',
  5424: 'scala',
  6592: 'scala',
  7918: 'scala',
  9247: 'scala',
  9281: 'scala',
  11757: 'scala',
  11783: 'scala',
  14168: 'scala',
  16137: 'scala',
  16212: 'scala',
  16258: 'scala',
  17695: 'scala',
  18401: 'scala',
  19617: 'scala',
  19757: 'scala',
  20022: 'scala',
  20568: 'scala',
  21429: 'scala',
  21841: 'scala',
  23287: 'scala',
  24024: 'scala',
  25023: 'scala',
  25431: 'scala',
  25457: 'scala',
  25683: 'scala',
  25941: 'scala',
  26452: 'scala',
  26985: 'scala',
  27181: 'scala',
  27284: 'scala',
  27700: 'scala',
  28197: 'scala',
  28886: 'scala',
  29587: 'scala',
  29778: 'scala',
  30259: 'scala',
  30515: 'scala',
  31249: 'scala',
  31402: 'scala',
  31760: 'scala',
  32091: 'scala',
  32169: 'scala',
  34049: 'scala',
  34449: 'scala',
  35009: 'scala',
  36610: 'scala',
  37777: 'scala',
  38282: 'scala',
  38535: 'scala',
  39818: 'scala',
  41124: 'scala',
  17228: 'scala',
  6010: 'scala',
  22982: 'scala',
  23269: 'scala',
  32320: 'scala',
  39238: 'scala',
  11661: 'scala',
  18328: 'scala',
  34648: 'scala',
  35164: 'scala',
  41253: 'scala',
  898: 'scala',
  2178: 'scala',
  6633: 'scala',
  11828: 'scala',
  15352: 'scala',
  24104: 'scala',
  24813: 'scala',
  27736: 'scala',
  29366: 'scala',
  36257: 'scala',
  37295: 'scala',
  313: 'scala',
  2049: 'scala',
  2437: 'scala',
  2547: 'scala',
  2688: 'scala',
  2874: 'scala',
  3231: 'scala',
  3487: 'scala',
  8093: 'scala',
  8785: 'scala',
  10320: 'scala',
  10591: 'scala',
  11300: 'scala',
  12020: 'scala',
  12365: 'scala',
  14016: 'scala',
  15786: 'scala',
  17874: 'scala',
  19029: 'scala',
  19436: 'scala',
  22091: 'scala',
  23478: 'scala',
  25022: 'scala',
  25637: 'scala',
  25777: 'scala',
  26082: 'scala',
  26195: 'scala',
  27890: 'scala',
  28528: 'scala',
  29853: 'scala',
  30339: 'scala',
  31713: 'scala',
  32173: 'scala',
  33121: 'scala',
  33297: 'scala',
  35336: 'scala',
  36580: 'scala',
  39320: 'scala',
  41247: 'scala',
  28671: 'scala',
  26850: 'scala',
  26616: 'scala',
  14338: 'scala',
  1421: 'scala',
  10561: 'scala',
  11000: 'scala',
  12517: 'scala',
  15469: 'scala',
  20016: 'scala',
  24130: 'scala',
  25963: 'scala',
  29033: 'scala',
  35622: 'scala',
  38051: 'scala',
  38465: 'scala',
  39740: 'scala',
  3448: 'scala',
  3489: 'scala',
  6804: 'scala',
  7634: 'scala',
  9246: 'scala',
  10720: 'scala',
  13198: 'scala',
  14873: 'scala',
  16720: 'scala',
  17233: 'scala',
  18438: 'scala',
  26984: 'scala',
  28836: 'scala',
  29373: 'scala',
  29876: 'scala',
  40768: 'scala',
  12057: 'scala',
  33654: 'scala',
  40806: 'scala',
  11944: 'scala',
  39098: 'scala',
  3364: 'scala',
  29022: 'scala',
  5225: 'scala',
  29608: 'scala',
  39654: 'scala',
  10254: 'scala',
  37042: 'scala',
  15347: 'scala',
  17043: 'scala',
  22938: 'scala',
  28597: 'scala',
  782: 'scala',
  3050: 'scala',
  3421: 'scala',
  9023: 'scala',
  17382: 'scala',
  18793: 'scala',
  19278: 'scala',
  21762: 'scala',
  22647: 'scala',
  25072: 'scala',
  34229: 'scala',
  38021: 'scala',
  39741: 'scala',
  39823: 'scala',
  87: 'scala',
  585: 'scala',
  849: 'scala',
  1464: 'scala',
  1740: 'scala',
  2009: 'scala',
  3062: 'scala',
  3651: 'scala',
  4123: 'scala',
  4208: 'scala',
  4772: 'scala',
  5584: 'scala',
  5997: 'scala',
  6009: 'scala',
  6107: 'scala',
  6147: 'scala',
  6212: 'scala',
  6464: 'scala',
  7512: 'scala',
  8012: 'scala',
  9639: 'scala',
  9859: 'scala',
  9892: 'scala',
  10314: 'scala',
  10689: 'scala',
  10793: 'scala',
  10803: 'scala',
  10838: 'scala',
  11120: 'scala',
  14279: 'scala',
  14395: 'scala',
  14564: 'scala',
  14954: 'scala',
  15015: 'scala',
  15130: 'scala',
  15244: 'scala',
  15245: 'scala',
  15729: 'scala',
  16143: 'scala',
  16176: 'scala',
  17195: 'scala',
  17513: 'scala',
  17875: 'scala',
  18215: 'scala',
  18555: 'scala',
  18963: 'scala',
  19159: 'scala',
  19182: 'scala',
  19435: 'scala',
  20171: 'scala',
  21524: 'scala',
  21895: 'scala',
  21952: 'scala',
  22346: 'scala',
  22452: 'scala',
  23455: 'scala',
  24603: 'scala',
  24722: 'scala',
  24953: 'scala',
  26836: 'scala',
  27211: 'scala',
  27491: 'scala',
  28266: 'scala',
  28642: 'scala',
  28918: 'scala',
  29136: 'scala',
  30797: 'scala',
  32554: 'scala',
  33487: 'scala',
  33554: 'scala',
  33976: 'scala',
  34321: 'scala',
  34908: 'scala',
  35163: 'scala',
  35461: 'scala',
  35869: 'scala',
  36555: 'scala',
  36732: 'scala',
  37474: 'scala',
  37587: 'scala',
  38032: 'scala',
  38534: 'scala',
  39214: 'scala',
  40086: 'scala',
  40640: 'scala',
  41620: 'scala',
  41486: 'scala',
  23610: 'scala',
  19594: 'scala',
  5564: 'scala',
  37765: 'scala',
  20194: 'scala',
  4935: 'scala',
  6758: 'scala',
  21648: 'scala',
  15014: 'scala',
  31411: 'scala',
  3049: 'scala',
  24686: 'scala',
  29783: 'scala',
  30300: 'scala',
  2272: 'scala',
  18229: 'scala',
  20270: 'scala',
  26081: 'scala',
  26919: 'scala',
  27129: 'scala',
  ...},
 'project_name': {14351: 'winjs',
  40943: 'winjs',
  35890: 'winjs',
  1800: 'winjs',
  20245: 'winjs',
  29167: 'winjs',
  4780: 'winjs',
  5142: 'winjs',
  7862: 'winjs',
  32077: 'winjs',
  535: 'winjs',
  2368: 'winjs',
  3644: 'winjs',
  6174: 'winjs',
  9288: 'winjs',
  9851: 'winjs',
  14019: 'winjs',
  17979: 'winjs',
  20726: 'winjs',
  25046: 'winjs',
  28071: 'winjs',
  28507: 'winjs',
  29869: 'winjs',
  34060: 'winjs',
  34065: 'winjs',
  39071: 'winjs',
  854: 'typescript-node-definitions',
  14874: 'typescript-node-definitions',
  1860: 'typescript-node-definitions',
  3667: 'typescript-node-definitions',
  4370: 'typescript-node-definitions',
  4815: 'typescript-node-definitions',
  8702: 'typescript-node-definitions',
  8937: 'typescript-node-definitions',
  12216: 'typescript-node-definitions',
  12674: 'typescript-node-definitions',
  24329: 'typescript-node-definitions',
  27932: 'typescript-node-definitions',
  34233: 'typescript-node-definitions',
  37983: 'typescript-node-definitions',
  38922: 'typescript-node-definitions',
  39249: 'typescript-node-definitions',
  2131: 'turbulenz_engine',
  32309: 'turbulenz_engine',
  32557: 'turbulenz_engine',
  4249: 'tsd',
  35078: 'tsd',
  40918: 'tsd',
  4628: 'tsd',
  6163: 'tsd',
  19480: 'tsd',
  28014: 'tsd',
  1465: 'tsd',
  4491: 'tsd',
  8228: 'tsd',
  13271: 'tsd',
  14337: 'tsd',
  17756: 'tsd',
  18359: 'tsd',
  20548: 'tsd',
  22726: 'tsd',
  27413: 'tsd',
  27831: 'tsd',
  29199: 'tsd',
  31193: 'tsd',
  41245: 'tsd',
  26242: 'trNgGrid',
  9564: 'trNgGrid',
  11313: 'trNgGrid',
  28612: 'trNgGrid',
  33920: 'trNgGrid',
  12142: 'shumway',
  21945: 'shumway',
  2681: 'shumway',
  35930: 'shumway',
  2938: 'shumway',
  29652: 'shumway',
  35752: 'shumway',
  39930: 'shumway',
  2672: 'shumway',
  5431: 'shumway',
  7477: 'shumway',
  7620: 'shumway',
  10958: 'shumway',
  11155: 'shumway',
  11660: 'shumway',
  13310: 'shumway',
  13811: 'shumway',
  16395: 'shumway',
  18022: 'shumway',
  18472: 'shumway',
  23164: 'shumway',
  26882: 'shumway',
  29553: 'shumway',
  30362: 'shumway',
  30478: 'shumway',
  33480: 'shumway',
  35636: 'shumway',
  35904: 'shumway',
  38979: 'shumway',
  3994: 'shellshape',
  4812: 'shellshape',
  17696: 'shellshape',
  19075: 'shellshape',
  19789: 'shellshape',
  25409: 'shellshape',
  31586: 'shellshape',
  31940: 'shellshape',
  32836: 'shellshape',
  36545: 'shellshape',
  38333: 'shellshape',
  12063: 'reddcoin',
  24217: 'reddcoin',
  11670: 'reddcoin',
  15277: 'reddcoin',
  31244: 'reddcoin',
  31667: 'reddcoin',
  35068: 'reddcoin',
  36274: 'reddcoin',
  39993: 'primecoin',
  18678: 'primecoin',
  37326: 'primecoin',
  15342: 'primecoin',
  25235: 'primecoin',
  29153: 'primecoin',
  31694: 'primecoin',
  29780: 'litecoin',
  40003: 'litecoin',
  3309: 'litecoin',
  8441: 'litecoin',
  12193: 'litecoin',
  14382: 'litecoin',
  14478: 'litecoin',
  34893: 'litecoin',
  41348: 'litecoin',
  7332: 'litecoin',
  11531: 'litecoin',
  13342: 'litecoin',
  16156: 'litecoin',
  20393: 'litecoin',
  20614: 'litecoin',
  22498: 'litecoin',
  26239: 'litecoin',
  27240: 'litecoin',
  28979: 'litecoin',
  30062: 'litecoin',
  32301: 'litecoin',
  32479: 'litecoin',
  34161: 'litecoin',
  34546: 'litecoin',
  39005: 'litecoin',
  39750: 'litecoin',
  40282: 'litecoin',
  41814: 'litecoin',
  8041: 'egret-core',
  41987: 'egret-core',
  18750: 'egret-core',
  4447: 'egret-core',
  6903: 'egret-core',
  8578: 'egret-core',
  12070: 'egret-core',
  16325: 'egret-core',
  19790: 'egret-core',
  22746: 'egret-core',
  23155: 'egret-core',
  35582: 'egret-core',
  39168: 'egret-core',
  39989: 'egret-core',
  41222: 'egret-core',
  41923: 'egret-core',
  20572: 'doppio',
  15621: 'doppio',
  29010: 'doppio',
  41824: 'doppio',
  1069: 'doppio',
  5317: 'doppio',
  11557: 'doppio',
  12890: 'doppio',
  14017: 'doppio',
  16537: 'doppio',
  24836: 'doppio',
  29412: 'doppio',
  29507: 'doppio',
  31063: 'doppio',
  40026: 'doppio',
  3227: 'TypeScript',
  18237: 'TypeScript',
  40005: 'TypeScript',
  929: 'TypeScript',
  21101: 'TypeScript',
  354: 'TypeScript',
  2116: 'TypeScript',
  6570: 'TypeScript',
  15272: 'TypeScript',
  6145: 'TypeScript',
  29531: 'TypeScript',
  23981: 'TypeScript',
  9147: 'TypeScript',
  39165: 'TypeScript',
  10443: 'TypeScript',
  16254: 'TypeScript',
  25429: 'TypeScript',
  39046: 'TypeScript',
  10768: 'TypeScript',
  24609: 'TypeScript',
  33636: 'TypeScript',
  35945: 'TypeScript',
  40284: 'TypeScript',
  41317: 'TypeScript',
  10062: 'TypeScript',
  11627: 'TypeScript',
  18716: 'TypeScript',
  21366: 'TypeScript',
  27898: 'TypeScript',
  28578: 'TypeScript',
  29516: 'TypeScript',
  34032: 'TypeScript',
  40557: 'TypeScript',
  2353: 'TypeScript',
  6494: 'TypeScript',
  8087: 'TypeScript',
  12086: 'TypeScript',
  13975: 'TypeScript',
  14152: 'TypeScript',
  15529: 'TypeScript',
  16107: 'TypeScript',
  20922: 'TypeScript',
  26166: 'TypeScript',
  27277: 'TypeScript',
  28227: 'TypeScript',
  28312: 'TypeScript',
  29200: 'TypeScript',
  33078: 'TypeScript',
  39451: 'TypeScript',
  41280: 'TypeScript',
  430: 'TypeScript',
  2542: 'TypeScript',
  2812: 'TypeScript',
  4629: 'TypeScript',
  4937: 'TypeScript',
  8823: 'TypeScript',
  11962: 'TypeScript',
  12041: 'TypeScript',
  12717: 'TypeScript',
  13291: 'TypeScript',
  13427: 'TypeScript',
  14746: 'TypeScript',
  16120: 'TypeScript',
  20357: 'TypeScript',
  20551: 'TypeScript',
  27272: 'TypeScript',
  28638: 'TypeScript',
  29524: 'TypeScript',
  31344: 'TypeScript',
  31641: 'TypeScript',
  31734: 'TypeScript',
  32074: 'TypeScript',
  32193: 'TypeScript',
  33829: 'TypeScript',
  36412: 'TypeScript',
  36777: 'TypeScript',
  37257: 'TypeScript',
  37266: 'TypeScript',
  38129: 'TypeScript',
  38170: 'TypeScript',
  38690: 'TypeScript',
  39504: 'TypeScript',
  40592: 'TypeScript',
  41818: 'TypeScript',
  197: 'TypeScript',
  1782: 'TypeScript',
  2075: 'TypeScript',
  3165: 'TypeScript',
  3788: 'TypeScript',
  3798: 'TypeScript',
  4131: 'TypeScript',
  4146: 'TypeScript',
  4756: 'TypeScript',
  4987: 'TypeScript',
  5364: 'TypeScript',
  5550: 'TypeScript',
  5925: 'TypeScript',
  6301: 'TypeScript',
  6547: 'TypeScript',
  8040: 'TypeScript',
  8660: 'TypeScript',
  9254: 'TypeScript',
  9619: 'TypeScript',
  11802: 'TypeScript',
  12203: 'TypeScript',
  12563: 'TypeScript',
  12775: 'TypeScript',
  13008: 'TypeScript',
  13343: 'TypeScript',
  13617: 'TypeScript',
  14018: 'TypeScript',
  14160: 'TypeScript',
  14648: 'TypeScript',
  15128: 'TypeScript',
  15474: 'TypeScript',
  15699: 'TypeScript',
  16312: 'TypeScript',
  16538: 'TypeScript',
  17031: 'TypeScript',
  17659: 'TypeScript',
  17991: 'TypeScript',
  18685: 'TypeScript',
  19279: 'TypeScript',
  19326: 'TypeScript',
  19940: 'TypeScript',
  20883: 'TypeScript',
  20992: 'TypeScript',
  21342: 'TypeScript',
  21458: 'TypeScript',
  22877: 'TypeScript',
  22912: 'TypeScript',
  23448: 'TypeScript',
  23476: 'TypeScript',
  23611: 'TypeScript',
  24365: 'TypeScript',
  24398: 'TypeScript',
  24521: 'TypeScript',
  24678: 'TypeScript',
  25298: 'TypeScript',
  25808: 'TypeScript',
  25996: 'TypeScript',
  28841: 'TypeScript',
  29590: 'TypeScript',
  29852: 'TypeScript',
  29937: 'TypeScript',
  30107: 'TypeScript',
  30553: 'TypeScript',
  30675: 'TypeScript',
  30819: 'TypeScript',
  31909: 'TypeScript',
  33564: 'TypeScript',
  34245: 'TypeScript',
  35500: 'TypeScript',
  36419: 'TypeScript',
  36968: 'TypeScript',
  38014: 'TypeScript',
  38694: 'TypeScript',
  39667: 'TypeScript',
  12366: 'textteaser',
  30943: 'textteaser',
  10321: 'textteaser',
  18803: 'textteaser',
  507: 'textteaser',
  4802: 'textteaser',
  30714: 'textteaser',
  37109: 'textteaser',
  31265: 'swagger-core',
  20512: 'swagger-core',
  122: 'swagger-core',
  462: 'swagger-core',
  1139: 'swagger-core',
  1468: 'swagger-core',
  1819: 'swagger-core',
  2149: 'swagger-core',
  2873: 'swagger-core',
  2876: 'swagger-core',
  3499: 'swagger-core',
  3850: 'swagger-core',
  4101: 'swagger-core',
  4281: 'swagger-core',
  4408: 'swagger-core',
  4414: 'swagger-core',
  4570: 'swagger-core',
  4692: 'swagger-core',
  4710: 'swagger-core',
  4809: 'swagger-core',
  4881: 'swagger-core',
  6011: 'swagger-core',
  6071: 'swagger-core',
  6263: 'swagger-core',
  6526: 'swagger-core',
  6928: 'swagger-core',
  6949: 'swagger-core',
  7378: 'swagger-core',
  7461: 'swagger-core',
  7695: 'swagger-core',
  7849: 'swagger-core',
  7868: 'swagger-core',
  8358: 'swagger-core',
  8704: 'swagger-core',
  9543: 'swagger-core',
  9621: 'swagger-core',
  10127: 'swagger-core',
  10274: 'swagger-core',
  10275: 'swagger-core',
  10548: 'swagger-core',
  10728: 'swagger-core',
  10826: 'swagger-core',
  10837: 'swagger-core',
  10882: 'swagger-core',
  11348: 'swagger-core',
  11838: 'swagger-core',
  11973: 'swagger-core',
  12959: 'swagger-core',
  13323: 'swagger-core',
  14120: 'swagger-core',
  14128: 'swagger-core',
  14182: 'swagger-core',
  14661: 'swagger-core',
  15515: 'swagger-core',
  15847: 'swagger-core',
  16063: 'swagger-core',
  16835: 'swagger-core',
  16981: 'swagger-core',
  17168: 'swagger-core',
  17231: 'swagger-core',
  17422: 'swagger-core',
  17489: 'swagger-core',
  18825: 'swagger-core',
  19072: 'swagger-core',
  19118: 'swagger-core',
  19156: 'swagger-core',
  19572: 'swagger-core',
  19748: 'swagger-core',
  20124: 'swagger-core',
  20237: 'swagger-core',
  20457: 'swagger-core',
  21179: 'swagger-core',
  21228: 'swagger-core',
  21252: 'swagger-core',
  21624: 'swagger-core',
  22099: 'swagger-core',
  22148: 'swagger-core',
  22556: 'swagger-core',
  22993: 'swagger-core',
  23425: 'swagger-core',
  23429: 'swagger-core',
  23687: 'swagger-core',
  24093: 'swagger-core',
  24265: 'swagger-core',
  24276: 'swagger-core',
  24549: 'swagger-core',
  25105: 'swagger-core',
  25490: 'swagger-core',
  25616: 'swagger-core',
  25649: 'swagger-core',
  25972: 'swagger-core',
  26045: 'swagger-core',
  26629: 'swagger-core',
  26636: 'swagger-core',
  27299: 'swagger-core',
  27592: 'swagger-core',
  28459: 'swagger-core',
  28585: 'swagger-core',
  28653: 'swagger-core',
  29086: 'swagger-core',
  29298: 'swagger-core',
  29435: 'swagger-core',
  29899: 'swagger-core',
  30053: 'swagger-core',
  30070: 'swagger-core',
  30144: 'swagger-core',
  30383: 'swagger-core',
  30802: 'swagger-core',
  30921: 'swagger-core',
  30997: 'swagger-core',
  31677: 'swagger-core',
  32097: 'swagger-core',
  32111: 'swagger-core',
  32113: 'swagger-core',
  32201: 'swagger-core',
  32243: 'swagger-core',
  32279: 'swagger-core',
  32666: 'swagger-core',
  33159: 'swagger-core',
  33253: 'swagger-core',
  33848: 'swagger-core',
  33856: 'swagger-core',
  34009: 'swagger-core',
  34028: 'swagger-core',
  34112: 'swagger-core',
  34394: 'swagger-core',
  34497: 'swagger-core',
  34662: 'swagger-core',
  34703: 'swagger-core',
  34809: 'swagger-core',
  35193: 'swagger-core',
  35354: 'swagger-core',
  35376: 'swagger-core',
  35725: 'swagger-core',
  36673: 'swagger-core',
  36774: 'swagger-core',
  37011: 'swagger-core',
  37140: 'swagger-core',
  38132: 'swagger-core',
  38234: 'swagger-core',
  38373: 'swagger-core',
  38513: 'swagger-core',
  38995: 'swagger-core',
  39642: 'swagger-core',
  39688: 'swagger-core',
  39692: 'swagger-core',
  40100: 'swagger-core',
  40837: 'swagger-core',
  41224: 'swagger-core',
  41974: 'swagger-core',
  31654: 'summingbird',
  2351: 'summingbird',
  23016: 'summingbird',
  40369: 'summingbird',
  36508: 'summingbird',
  40948: 'summingbird',
  12501: 'summingbird',
  5573: 'summingbird',
  10374: 'summingbird',
  28911: 'summingbird',
  29639: 'summingbird',
  33122: 'summingbird',
  40504: 'summingbird',
  28648: 'spray',
  7860: 'spray',
  6549: 'spray',
  23186: 'spray',
  23904: 'spray',
  12450: 'spray',
  20731: 'spray',
  39334: 'spray',
  5193: 'spray',
  25197: 'spray',
  36784: 'spray',
  840: 'spray',
  6622: 'spray',
  14405: 'spray',
  37170: 'spray',
  1198: 'spray',
  1521: 'spray',
  4264: 'spray',
  8205: 'spray',
  9884: 'spray',
  13190: 'spray',
  13284: 'spray',
  18718: 'spray',
  18761: 'spray',
  25123: 'spray',
  25454: 'spray',
  31235: 'spray',
  38798: 'spray',
  38868: 'spray',
  39077: 'spray',
  39338: 'spray',
  40476: 'spray',
  123: 'spray',
  524: 'spray',
  1741: 'spray',
  1869: 'spray',
  3600: 'spray',
  4142: 'spray',
  5226: 'spray',
  6331: 'spray',
  7608: 'spray',
  7830: 'spray',
  9390: 'spray',
  16721: 'spray',
  17229: 'spray',
  17679: 'spray',
  19214: 'spray',
  19643: 'spray',
  21572: 'spray',
  25124: 'spray',
  27508: 'spray',
  28075: 'spray',
  30516: 'spray',
  32084: 'spray',
  33038: 'spray',
  34692: 'spray',
  35165: 'spray',
  39652: 'spray',
  39757: 'spray',
  4861: 'snowplow',
  14075: 'snowplow',
  16237: 'snowplow',
  16501: 'snowplow',
  3099: 'snowplow',
  10072: 'snowplow',
  11486: 'snowplow',
  15705: 'snowplow',
  29790: 'snowplow',
  34589: 'snowplow',
  34939: 'snowplow',
  4402: 'snowplow',
  8430: 'snowplow',
  9531: 'snowplow',
  9549: 'snowplow',
  13976: 'snowplow',
  14403: 'snowplow',
  15660: 'snowplow',
  17385: 'snowplow',
  20910: 'snowplow',
  20929: 'snowplow',
  21167: 'snowplow',
  25492: 'snowplow',
  26085: 'snowplow',
  26575: 'snowplow',
  27582: 'snowplow',
  33415: 'snowplow',
  35647: 'snowplow',
  35974: 'snowplow',
  12667: 'scalding',
  565: 'scalding',
  1692: 'scalding',
  21939: 'scalding',
  4325: 'scalding',
  35296: 'scalding',
  1046: 'scalding',
  14350: 'scalding',
  30952: 'scalding',
  826: 'scalding',
  10663: 'scalding',
  21571: 'scalding',
  22322: 'scalding',
  29528: 'scalding',
  35420: 'scalding',
  38722: 'scalding',
  1197: 'scalding',
  16573: 'scalding',
  23870: 'scalding',
  24260: 'scalding',
  24900: 'scalding',
  31035: 'scalding',
  31200: 'scalding',
  35059: 'scalding',
  35602: 'scalding',
  40091: 'scalding',
  2364: 'scalding',
  5998: 'scalding',
  11123: 'scalding',
  15465: 'scalding',
  17035: 'scalding',
  18943: 'scalding',
  20113: 'scalding',
  21964: 'scalding',
  22939: 'scalding',
  23562: 'scalding',
  25949: 'scalding',
  27285: 'scalding',
  29152: 'scalding',
  33066: 'scalding',
  33577: 'scalding',
  35639: 'scalding',
  38345: 'scalding',
  1565: 'scalding',
  2355: 'scalding',
  2531: 'scalding',
  7783: 'scalding',
  8633: 'scalding',
  9603: 'scalding',
  10667: 'scalding',
  11758: 'scalding',
  12705: 'scalding',
  13603: 'scalding',
  16218: 'scalding',
  19260: 'scalding',
  19327: 'scalding',
  19774: 'scalding',
  20713: 'scalding',
  22041: 'scalding',
  25332: 'scalding',
  27515: 'scalding',
  28837: 'scalding',
  30282: 'scalding',
  30583: 'scalding',
  31010: 'scalding',
  31327: 'scalding',
  31828: 'scalding',
  32047: 'scalding',
  32693: 'scalding',
  36064: 'scalding',
  36372: 'scalding',
  38088: 'scalding',
  39481: 'scalding',
  39538: 'scalding',
  40280: 'scalding',
  6310: 'scalaz',
  3719: 'scalaz',
  11933: 'scalaz',
  2418: 'scalaz',
  10488: 'scalaz',
  10694: 'scalaz',
  16709: 'scalaz',
  17666: 'scalaz',
  20541: 'scalaz',
  10425: 'scalaz',
  11811: 'scalaz',
  20412: 'scalaz',
  25681: 'scalaz',
  26340: 'scalaz',
  27991: 'scalaz',
  32627: 'scalaz',
  983: 'scalaz',
  3944: 'scalaz',
  7197: 'scalaz',
  7408: 'scalaz',
  9727: 'scalaz',
  20692: 'scalaz',
  22084: 'scalaz',
  22648: 'scalaz',
  23912: 'scalaz',
  25462: 'scalaz',
  25463: 'scalaz',
  28007: 'scalaz',
  30461: 'scalaz',
  31605: 'scalaz',
  32218: 'scalaz',
  32718: 'scalaz',
  36258: 'scalaz',
  37067: 'scalaz',
  1288: 'scalaz',
  2548: 'scalaz',
  2875: 'scalaz',
  3821: 'scalaz',
  4104: 'scalaz',
  4701: 'scalaz',
  5381: 'scalaz',
  5424: 'scalaz',
  6592: 'scalaz',
  7918: 'scalaz',
  9247: 'scalaz',
  9281: 'scalaz',
  11757: 'scalaz',
  11783: 'scalaz',
  14168: 'scalaz',
  16137: 'scalaz',
  16212: 'scalaz',
  16258: 'scalaz',
  17695: 'scalaz',
  18401: 'scalaz',
  19617: 'scalaz',
  19757: 'scalaz',
  20022: 'scalaz',
  20568: 'scalaz',
  21429: 'scalaz',
  21841: 'scalaz',
  23287: 'scalaz',
  24024: 'scalaz',
  25023: 'scalaz',
  25431: 'scalaz',
  25457: 'scalaz',
  25683: 'scalaz',
  25941: 'scalaz',
  26452: 'scalaz',
  26985: 'scalaz',
  27181: 'scalaz',
  27284: 'scalaz',
  27700: 'scalaz',
  28197: 'scalaz',
  28886: 'scalaz',
  29587: 'scalaz',
  29778: 'scalaz',
  30259: 'scalaz',
  30515: 'scalaz',
  31249: 'scalaz',
  31402: 'scalaz',
  31760: 'scalaz',
  32091: 'scalaz',
  32169: 'scalaz',
  34049: 'scalaz',
  34449: 'scalaz',
  35009: 'scalaz',
  36610: 'scalaz',
  37777: 'scalaz',
  38282: 'scalaz',
  38535: 'scalaz',
  39818: 'scalaz',
  41124: 'scalaz',
  17228: 'scalatra',
  6010: 'scalatra',
  22982: 'scalatra',
  23269: 'scalatra',
  32320: 'scalatra',
  39238: 'scalatra',
  11661: 'scalatra',
  18328: 'scalatra',
  34648: 'scalatra',
  35164: 'scalatra',
  41253: 'scalatra',
  898: 'scalatra',
  2178: 'scalatra',
  6633: 'scalatra',
  11828: 'scalatra',
  15352: 'scalatra',
  24104: 'scalatra',
  24813: 'scalatra',
  27736: 'scalatra',
  29366: 'scalatra',
  36257: 'scalatra',
  37295: 'scalatra',
  313: 'scalatra',
  2049: 'scalatra',
  2437: 'scalatra',
  2547: 'scalatra',
  2688: 'scalatra',
  2874: 'scalatra',
  3231: 'scalatra',
  3487: 'scalatra',
  8093: 'scalatra',
  8785: 'scalatra',
  10320: 'scalatra',
  10591: 'scalatra',
  11300: 'scalatra',
  12020: 'scalatra',
  12365: 'scalatra',
  14016: 'scalatra',
  15786: 'scalatra',
  17874: 'scalatra',
  19029: 'scalatra',
  19436: 'scalatra',
  22091: 'scalatra',
  23478: 'scalatra',
  25022: 'scalatra',
  25637: 'scalatra',
  25777: 'scalatra',
  26082: 'scalatra',
  26195: 'scalatra',
  27890: 'scalatra',
  28528: 'scalatra',
  29853: 'scalatra',
  30339: 'scalatra',
  31713: 'scalatra',
  32173: 'scalatra',
  33121: 'scalatra',
  33297: 'scalatra',
  35336: 'scalatra',
  36580: 'scalatra',
  39320: 'scalatra',
  41247: 'scalatra',
  28671: 'scala-js',
  26850: 'scala-js',
  26616: 'scala-js',
  14338: 'scala-js',
  1421: 'scala-js',
  10561: 'scala-js',
  11000: 'scala-js',
  12517: 'scala-js',
  15469: 'scala-js',
  20016: 'scala-js',
  24130: 'scala-js',
  25963: 'scala-js',
  29033: 'scala-js',
  35622: 'scala-js',
  38051: 'scala-js',
  38465: 'scala-js',
  39740: 'scala-js',
  3448: 'scala-js',
  3489: 'scala-js',
  6804: 'scala-js',
  7634: 'scala-js',
  9246: 'scala-js',
  10720: 'scala-js',
  13198: 'scala-js',
  14873: 'scala-js',
  16720: 'scala-js',
  17233: 'scala-js',
  18438: 'scala-js',
  26984: 'scala-js',
  28836: 'scala-js',
  29373: 'scala-js',
  29876: 'scala-js',
  40768: 'scala-js',
  12057: 'sbt',
  33654: 'sbt',
  40806: 'sbt',
  11944: 'sbt',
  39098: 'sbt',
  3364: 'sbt',
  29022: 'sbt',
  5225: 'sbt',
  29608: 'sbt',
  39654: 'sbt',
  10254: 'sbt',
  37042: 'sbt',
  15347: 'sbt',
  17043: 'sbt',
  22938: 'sbt',
  28597: 'sbt',
  782: 'sbt',
  3050: 'sbt',
  3421: 'sbt',
  9023: 'sbt',
  17382: 'sbt',
  18793: 'sbt',
  19278: 'sbt',
  21762: 'sbt',
  22647: 'sbt',
  25072: 'sbt',
  34229: 'sbt',
  38021: 'sbt',
  39741: 'sbt',
  39823: 'sbt',
  87: 'sbt',
  585: 'sbt',
  849: 'sbt',
  1464: 'sbt',
  1740: 'sbt',
  2009: 'sbt',
  3062: 'sbt',
  3651: 'sbt',
  4123: 'sbt',
  4208: 'sbt',
  4772: 'sbt',
  5584: 'sbt',
  5997: 'sbt',
  6009: 'sbt',
  6107: 'sbt',
  6147: 'sbt',
  6212: 'sbt',
  6464: 'sbt',
  7512: 'sbt',
  8012: 'sbt',
  9639: 'sbt',
  9859: 'sbt',
  9892: 'sbt',
  10314: 'sbt',
  10689: 'sbt',
  10793: 'sbt',
  10803: 'sbt',
  10838: 'sbt',
  11120: 'sbt',
  14279: 'sbt',
  14395: 'sbt',
  14564: 'sbt',
  14954: 'sbt',
  15015: 'sbt',
  15130: 'sbt',
  15244: 'sbt',
  15245: 'sbt',
  15729: 'sbt',
  16143: 'sbt',
  16176: 'sbt',
  17195: 'sbt',
  17513: 'sbt',
  17875: 'sbt',
  18215: 'sbt',
  18555: 'sbt',
  18963: 'sbt',
  19159: 'sbt',
  19182: 'sbt',
  19435: 'sbt',
  20171: 'sbt',
  21524: 'sbt',
  21895: 'sbt',
  21952: 'sbt',
  22346: 'sbt',
  22452: 'sbt',
  23455: 'sbt',
  24603: 'sbt',
  24722: 'sbt',
  24953: 'sbt',
  26836: 'sbt',
  27211: 'sbt',
  27491: 'sbt',
  28266: 'sbt',
  28642: 'sbt',
  28918: 'sbt',
  29136: 'sbt',
  30797: 'sbt',
  32554: 'sbt',
  33487: 'sbt',
  33554: 'sbt',
  33976: 'sbt',
  34321: 'sbt',
  34908: 'sbt',
  35163: 'sbt',
  35461: 'sbt',
  35869: 'sbt',
  36555: 'sbt',
  36732: 'sbt',
  37474: 'sbt',
  37587: 'sbt',
  38032: 'sbt',
  38534: 'sbt',
  39214: 'sbt',
  40086: 'sbt',
  40640: 'sbt',
  41620: 'sbt',
  41486: 'playframework',
  23610: 'playframework',
  19594: 'playframework',
  5564: 'playframework',
  37765: 'playframework',
  20194: 'playframework',
  4935: 'playframework',
  6758: 'playframework',
  21648: 'playframework',
  15014: 'playframework',
  31411: 'playframework',
  3049: 'playframework',
  24686: 'playframework',
  29783: 'playframework',
  30300: 'playframework',
  2272: 'playframework',
  18229: 'playframework',
  20270: 'playframework',
  26081: 'playframework',
  26919: 'playframework',
  27129: 'playframework',
  ...},
 'num_commits': {14351: 11,
  40943: 10,
  35890: 6,
  1800: 3,
  20245: 3,
  29167: 3,
  4780: 2,
  5142: 2,
  7862: 2,
  32077: 2,
  535: 1,
  2368: 1,
  3644: 1,
  6174: 1,
  9288: 1,
  9851: 1,
  14019: 1,
  17979: 1,
  20726: 1,
  25046: 1,
  28071: 1,
  28507: 1,
  29869: 1,
  34060: 1,
  34065: 1,
  39071: 1,
  854: 6,
  14874: 2,
  1860: 1,
  3667: 1,
  4370: 1,
  4815: 1,
  8702: 1,
  8937: 1,
  12216: 1,
  12674: 1,
  24329: 1,
  27932: 1,
  34233: 1,
  37983: 1,
  38922: 1,
  39249: 1,
  2131: 1,
  32309: 1,
  32557: 1,
  4249: 3,
  35078: 3,
  40918: 3,
  4628: 2,
  6163: 2,
  19480: 2,
  28014: 2,
  1465: 1,
  4491: 1,
  8228: 1,
  13271: 1,
  14337: 1,
  17756: 1,
  18359: 1,
  20548: 1,
  22726: 1,
  27413: 1,
  27831: 1,
  29199: 1,
  31193: 1,
  41245: 1,
  26242: 6,
  9564: 1,
  11313: 1,
  28612: 1,
  33920: 1,
  12142: 250,
  21945: 7,
  2681: 3,
  35930: 3,
  2938: 2,
  29652: 2,
  35752: 2,
  39930: 2,
  2672: 1,
  5431: 1,
  7477: 1,
  7620: 1,
  10958: 1,
  11155: 1,
  11660: 1,
  13310: 1,
  13811: 1,
  16395: 1,
  18022: 1,
  18472: 1,
  23164: 1,
  26882: 1,
  29553: 1,
  30362: 1,
  30478: 1,
  33480: 1,
  35636: 1,
  35904: 1,
  38979: 1,
  3994: 1,
  4812: 1,
  17696: 1,
  19075: 1,
  19789: 1,
  25409: 1,
  31586: 1,
  31940: 1,
  32836: 1,
  36545: 1,
  38333: 1,
  12063: 2,
  24217: 2,
  11670: 1,
  15277: 1,
  31244: 1,
  31667: 1,
  35068: 1,
  36274: 1,
  39993: 250,
  18678: 2,
  37326: 2,
  15342: 1,
  25235: 1,
  29153: 1,
  31694: 1,
  29780: 5,
  40003: 5,
  3309: 2,
  8441: 2,
  12193: 2,
  14382: 2,
  14478: 2,
  34893: 2,
  41348: 2,
  7332: 1,
  11531: 1,
  13342: 1,
  16156: 1,
  20393: 1,
  20614: 1,
  22498: 1,
  26239: 1,
  27240: 1,
  28979: 1,
  30062: 1,
  32301: 1,
  32479: 1,
  34161: 1,
  34546: 1,
  39005: 1,
  39750: 1,
  40282: 1,
  41814: 1,
  8041: 9,
  41987: 4,
  18750: 2,
  4447: 1,
  6903: 1,
  8578: 1,
  12070: 1,
  16325: 1,
  19790: 1,
  22746: 1,
  23155: 1,
  35582: 1,
  39168: 1,
  39989: 1,
  41222: 1,
  41923: 1,
  20572: 11,
  15621: 2,
  29010: 2,
  41824: 2,
  1069: 1,
  5317: 1,
  11557: 1,
  12890: 1,
  14017: 1,
  16537: 1,
  24836: 1,
  29412: 1,
  29507: 1,
  31063: 1,
  40026: 1,
  3227: 250,
  18237: 120,
  40005: 44,
  929: 19,
  21101: 18,
  354: 17,
  2116: 15,
  6570: 12,
  15272: 12,
  6145: 11,
  29531: 11,
  23981: 9,
  9147: 8,
  39165: 8,
  10443: 7,
  16254: 7,
  25429: 6,
  39046: 6,
  10768: 5,
  24609: 5,
  33636: 5,
  35945: 5,
  40284: 5,
  41317: 5,
  10062: 4,
  11627: 4,
  18716: 4,
  21366: 4,
  27898: 4,
  28578: 4,
  29516: 4,
  34032: 4,
  40557: 4,
  2353: 3,
  6494: 3,
  8087: 3,
  12086: 3,
  13975: 3,
  14152: 3,
  15529: 3,
  16107: 3,
  20922: 3,
  26166: 3,
  27277: 3,
  28227: 3,
  28312: 3,
  29200: 3,
  33078: 3,
  39451: 3,
  41280: 3,
  430: 2,
  2542: 2,
  2812: 2,
  4629: 2,
  4937: 2,
  8823: 2,
  11962: 2,
  12041: 2,
  12717: 2,
  13291: 2,
  13427: 2,
  14746: 2,
  16120: 2,
  20357: 2,
  20551: 2,
  27272: 2,
  28638: 2,
  29524: 2,
  31344: 2,
  31641: 2,
  31734: 2,
  32074: 2,
  32193: 2,
  33829: 2,
  36412: 2,
  36777: 2,
  37257: 2,
  37266: 2,
  38129: 2,
  38170: 2,
  38690: 2,
  39504: 2,
  40592: 2,
  41818: 2,
  197: 1,
  1782: 1,
  2075: 1,
  3165: 1,
  3788: 1,
  3798: 1,
  4131: 1,
  4146: 1,
  4756: 1,
  4987: 1,
  5364: 1,
  5550: 1,
  5925: 1,
  6301: 1,
  6547: 1,
  8040: 1,
  8660: 1,
  9254: 1,
  9619: 1,
  11802: 1,
  12203: 1,
  12563: 1,
  12775: 1,
  13008: 1,
  13343: 1,
  13617: 1,
  14018: 1,
  14160: 1,
  14648: 1,
  15128: 1,
  15474: 1,
  15699: 1,
  16312: 1,
  16538: 1,
  17031: 1,
  17659: 1,
  17991: 1,
  18685: 1,
  19279: 1,
  19326: 1,
  19940: 1,
  20883: 1,
  20992: 1,
  21342: 1,
  21458: 1,
  22877: 1,
  22912: 1,
  23448: 1,
  23476: 1,
  23611: 1,
  24365: 1,
  24398: 1,
  24521: 1,
  24678: 1,
  25298: 1,
  25808: 1,
  25996: 1,
  28841: 1,
  29590: 1,
  29852: 1,
  29937: 1,
  30107: 1,
  30553: 1,
  30675: 1,
  30819: 1,
  31909: 1,
  33564: 1,
  34245: 1,
  35500: 1,
  36419: 1,
  36968: 1,
  38014: 1,
  38694: 1,
  39667: 1,
  12366: 6,
  30943: 4,
  10321: 2,
  18803: 2,
  507: 1,
  4802: 1,
  30714: 1,
  37109: 1,
  31265: 3,
  20512: 2,
  122: 1,
  462: 1,
  1139: 1,
  1468: 1,
  1819: 1,
  2149: 1,
  2873: 1,
  2876: 1,
  3499: 1,
  3850: 1,
  4101: 1,
  4281: 1,
  4408: 1,
  4414: 1,
  4570: 1,
  4692: 1,
  4710: 1,
  4809: 1,
  4881: 1,
  6011: 1,
  6071: 1,
  6263: 1,
  6526: 1,
  6928: 1,
  6949: 1,
  7378: 1,
  7461: 1,
  7695: 1,
  7849: 1,
  7868: 1,
  8358: 1,
  8704: 1,
  9543: 1,
  9621: 1,
  10127: 1,
  10274: 1,
  10275: 1,
  10548: 1,
  10728: 1,
  10826: 1,
  10837: 1,
  10882: 1,
  11348: 1,
  11838: 1,
  11973: 1,
  12959: 1,
  13323: 1,
  14120: 1,
  14128: 1,
  14182: 1,
  14661: 1,
  15515: 1,
  15847: 1,
  16063: 1,
  16835: 1,
  16981: 1,
  17168: 1,
  17231: 1,
  17422: 1,
  17489: 1,
  18825: 1,
  19072: 1,
  19118: 1,
  19156: 1,
  19572: 1,
  19748: 1,
  20124: 1,
  20237: 1,
  20457: 1,
  21179: 1,
  21228: 1,
  21252: 1,
  21624: 1,
  22099: 1,
  22148: 1,
  22556: 1,
  22993: 1,
  23425: 1,
  23429: 1,
  23687: 1,
  24093: 1,
  24265: 1,
  24276: 1,
  24549: 1,
  25105: 1,
  25490: 1,
  25616: 1,
  25649: 1,
  25972: 1,
  26045: 1,
  26629: 1,
  26636: 1,
  27299: 1,
  27592: 1,
  28459: 1,
  28585: 1,
  28653: 1,
  29086: 1,
  29298: 1,
  29435: 1,
  29899: 1,
  30053: 1,
  30070: 1,
  30144: 1,
  30383: 1,
  30802: 1,
  30921: 1,
  30997: 1,
  31677: 1,
  32097: 1,
  32111: 1,
  32113: 1,
  32201: 1,
  32243: 1,
  32279: 1,
  32666: 1,
  33159: 1,
  33253: 1,
  33848: 1,
  33856: 1,
  34009: 1,
  34028: 1,
  34112: 1,
  34394: 1,
  34497: 1,
  34662: 1,
  34703: 1,
  34809: 1,
  35193: 1,
  35354: 1,
  35376: 1,
  35725: 1,
  36673: 1,
  36774: 1,
  37011: 1,
  37140: 1,
  38132: 1,
  38234: 1,
  38373: 1,
  38513: 1,
  38995: 1,
  39642: 1,
  39688: 1,
  39692: 1,
  40100: 1,
  40837: 1,
  41224: 1,
  41974: 1,
  31654: 8,
  2351: 6,
  23016: 6,
  40369: 5,
  36508: 3,
  40948: 3,
  12501: 2,
  5573: 1,
  10374: 1,
  28911: 1,
  29639: 1,
  33122: 1,
  40504: 1,
  28648: 23,
  7860: 20,
  6549: 8,
  23186: 8,
  23904: 7,
  12450: 6,
  20731: 6,
  39334: 5,
  5193: 4,
  25197: 4,
  36784: 4,
  840: 3,
  6622: 3,
  14405: 3,
  37170: 3,
  1198: 2,
  1521: 2,
  4264: 2,
  8205: 2,
  9884: 2,
  13190: 2,
  13284: 2,
  18718: 2,
  18761: 2,
  25123: 2,
  25454: 2,
  31235: 2,
  38798: 2,
  38868: 2,
  39077: 2,
  39338: 2,
  40476: 2,
  123: 1,
  524: 1,
  1741: 1,
  1869: 1,
  3600: 1,
  4142: 1,
  5226: 1,
  6331: 1,
  7608: 1,
  7830: 1,
  9390: 1,
  16721: 1,
  17229: 1,
  17679: 1,
  19214: 1,
  19643: 1,
  21572: 1,
  25124: 1,
  27508: 1,
  28075: 1,
  30516: 1,
  32084: 1,
  33038: 1,
  34692: 1,
  35165: 1,
  39652: 1,
  39757: 1,
  4861: 16,
  14075: 15,
  16237: 6,
  16501: 4,
  3099: 2,
  10072: 2,
  11486: 2,
  15705: 2,
  29790: 2,
  34589: 2,
  34939: 2,
  4402: 1,
  8430: 1,
  9531: 1,
  9549: 1,
  13976: 1,
  14403: 1,
  15660: 1,
  17385: 1,
  20910: 1,
  20929: 1,
  21167: 1,
  25492: 1,
  26085: 1,
  26575: 1,
  27582: 1,
  33415: 1,
  35647: 1,
  35974: 1,
  12667: 79,
  565: 27,
  1692: 21,
  21939: 12,
  4325: 10,
  35296: 9,
  1046: 7,
  14350: 7,
  30952: 7,
  826: 6,
  10663: 6,
  21571: 5,
  22322: 5,
  29528: 5,
  35420: 5,
  38722: 4,
  1197: 3,
  16573: 3,
  23870: 3,
  24260: 3,
  24900: 3,
  31035: 3,
  31200: 3,
  35059: 3,
  35602: 3,
  40091: 3,
  2364: 2,
  5998: 2,
  11123: 2,
  15465: 2,
  17035: 2,
  18943: 2,
  20113: 2,
  21964: 2,
  22939: 2,
  23562: 2,
  25949: 2,
  27285: 2,
  29152: 2,
  33066: 2,
  33577: 2,
  35639: 2,
  38345: 2,
  1565: 1,
  2355: 1,
  2531: 1,
  7783: 1,
  8633: 1,
  9603: 1,
  10667: 1,
  11758: 1,
  12705: 1,
  13603: 1,
  16218: 1,
  19260: 1,
  19327: 1,
  19774: 1,
  20713: 1,
  22041: 1,
  25332: 1,
  27515: 1,
  28837: 1,
  30282: 1,
  30583: 1,
  31010: 1,
  31327: 1,
  31828: 1,
  32047: 1,
  32693: 1,
  36064: 1,
  36372: 1,
  38088: 1,
  39481: 1,
  39538: 1,
  40280: 1,
  6310: 250,
  3719: 8,
  11933: 8,
  2418: 4,
  10488: 4,
  10694: 4,
  16709: 4,
  17666: 4,
  20541: 4,
  10425: 3,
  11811: 3,
  20412: 3,
  25681: 3,
  26340: 3,
  27991: 3,
  32627: 3,
  983: 2,
  3944: 2,
  7197: 2,
  7408: 2,
  9727: 2,
  20692: 2,
  22084: 2,
  22648: 2,
  23912: 2,
  25462: 2,
  25463: 2,
  28007: 2,
  30461: 2,
  31605: 2,
  32218: 2,
  32718: 2,
  36258: 2,
  37067: 2,
  1288: 1,
  2548: 1,
  2875: 1,
  3821: 1,
  4104: 1,
  4701: 1,
  5381: 1,
  5424: 1,
  6592: 1,
  7918: 1,
  9247: 1,
  9281: 1,
  11757: 1,
  11783: 1,
  14168: 1,
  16137: 1,
  16212: 1,
  16258: 1,
  17695: 1,
  18401: 1,
  19617: 1,
  19757: 1,
  20022: 1,
  20568: 1,
  21429: 1,
  21841: 1,
  23287: 1,
  24024: 1,
  25023: 1,
  25431: 1,
  25457: 1,
  25683: 1,
  25941: 1,
  26452: 1,
  26985: 1,
  27181: 1,
  27284: 1,
  27700: 1,
  28197: 1,
  28886: 1,
  29587: 1,
  29778: 1,
  30259: 1,
  30515: 1,
  31249: 1,
  31402: 1,
  31760: 1,
  32091: 1,
  32169: 1,
  34049: 1,
  34449: 1,
  35009: 1,
  36610: 1,
  37777: 1,
  38282: 1,
  38535: 1,
  39818: 1,
  41124: 1,
  17228: 5,
  6010: 4,
  22982: 4,
  23269: 4,
  32320: 4,
  39238: 4,
  11661: 3,
  18328: 3,
  34648: 3,
  35164: 3,
  41253: 3,
  898: 2,
  2178: 2,
  6633: 2,
  11828: 2,
  15352: 2,
  24104: 2,
  24813: 2,
  27736: 2,
  29366: 2,
  36257: 2,
  37295: 2,
  313: 1,
  2049: 1,
  2437: 1,
  2547: 1,
  2688: 1,
  2874: 1,
  3231: 1,
  3487: 1,
  8093: 1,
  8785: 1,
  10320: 1,
  10591: 1,
  11300: 1,
  12020: 1,
  12365: 1,
  14016: 1,
  15786: 1,
  17874: 1,
  19029: 1,
  19436: 1,
  22091: 1,
  23478: 1,
  25022: 1,
  25637: 1,
  25777: 1,
  26082: 1,
  26195: 1,
  27890: 1,
  28528: 1,
  29853: 1,
  30339: 1,
  31713: 1,
  32173: 1,
  33121: 1,
  33297: 1,
  35336: 1,
  36580: 1,
  39320: 1,
  41247: 1,
  28671: 19,
  26850: 8,
  26616: 7,
  14338: 3,
  1421: 2,
  10561: 2,
  11000: 2,
  12517: 2,
  15469: 2,
  20016: 2,
  24130: 2,
  25963: 2,
  29033: 2,
  35622: 2,
  38051: 2,
  38465: 2,
  39740: 2,
  3448: 1,
  3489: 1,
  6804: 1,
  7634: 1,
  9246: 1,
  10720: 1,
  13198: 1,
  14873: 1,
  16720: 1,
  17233: 1,
  18438: 1,
  26984: 1,
  28836: 1,
  29373: 1,
  29876: 1,
  40768: 1,
  12057: 219,
  33654: 41,
  40806: 17,
  11944: 12,
  39098: 12,
  3364: 11,
  29022: 7,
  5225: 5,
  29608: 5,
  39654: 5,
  10254: 4,
  37042: 4,
  15347: 3,
  17043: 3,
  22938: 3,
  28597: 3,
  782: 2,
  3050: 2,
  3421: 2,
  9023: 2,
  17382: 2,
  18793: 2,
  19278: 2,
  21762: 2,
  22647: 2,
  25072: 2,
  34229: 2,
  38021: 2,
  39741: 2,
  39823: 2,
  87: 1,
  585: 1,
  849: 1,
  1464: 1,
  1740: 1,
  2009: 1,
  3062: 1,
  3651: 1,
  4123: 1,
  4208: 1,
  4772: 1,
  5584: 1,
  5997: 1,
  6009: 1,
  6107: 1,
  6147: 1,
  6212: 1,
  6464: 1,
  7512: 1,
  8012: 1,
  9639: 1,
  9859: 1,
  9892: 1,
  10314: 1,
  10689: 1,
  10793: 1,
  10803: 1,
  10838: 1,
  11120: 1,
  14279: 1,
  14395: 1,
  14564: 1,
  14954: 1,
  15015: 1,
  15130: 1,
  15244: 1,
  15245: 1,
  15729: 1,
  16143: 1,
  16176: 1,
  17195: 1,
  17513: 1,
  17875: 1,
  18215: 1,
  18555: 1,
  18963: 1,
  19159: 1,
  19182: 1,
  19435: 1,
  20171: 1,
  21524: 1,
  21895: 1,
  21952: 1,
  22346: 1,
  22452: 1,
  23455: 1,
  24603: 1,
  24722: 1,
  24953: 1,
  26836: 1,
  27211: 1,
  27491: 1,
  28266: 1,
  28642: 1,
  28918: 1,
  29136: 1,
  30797: 1,
  32554: 1,
  33487: 1,
  33554: 1,
  33976: 1,
  34321: 1,
  34908: 1,
  35163: 1,
  35461: 1,
  35869: 1,
  36555: 1,
  36732: 1,
  37474: 1,
  37587: 1,
  38032: 1,
  38534: 1,
  39214: 1,
  40086: 1,
  40640: 1,
  41620: 1,
  41486: 149,
  23610: 102,
  19594: 49,
  5564: 29,
  37765: 11,
  20194: 9,
  4935: 8,
  6758: 8,
  21648: 8,
  15014: 7,
  31411: 7,
  3049: 5,
  24686: 5,
  29783: 5,
  30300: 5,
  2272: 4,
  18229: 4,
  20270: 4,
  26081: 4,
  26919: 4,
  27129: 4,
  ...}}
cpr.to_csv('test.csv', sep=',')

Go for the HW