├── hush
├── Smarty_3.zip
└── ZendFramework.zip
├── _config.yml
├── train
└── ai
│ ├── apple-touch-icon.png
│ ├── res
│ ├── stage-of-ai.png
│ ├── learning-roadmap.png
│ ├── application-in-game.png
│ └── AI-Marketing-Report-2023-V3.pdf
│ ├── learning.txt
│ ├── css
│ ├── custom.css
│ └── impress.css
│ ├── index.html
│ ├── ai-learning.html
│ ├── ai-in-game.html
│ ├── ai-basic.html
│ ├── js
│ └── impress.js
│ └── impress.html
├── README.md
├── programming-language-world-map.html
└── data
├── json2.js
└── graph.js
/hush/Smarty_3.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jameschz/jameschz.github.io/master/hush/Smarty_3.zip
--------------------------------------------------------------------------------
/_config.yml:
--------------------------------------------------------------------------------
1 | theme: jekyll-theme-minimal
2 | title: James's Repositories
3 | description: James's Repositories
--------------------------------------------------------------------------------
/hush/ZendFramework.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jameschz/jameschz.github.io/master/hush/ZendFramework.zip
--------------------------------------------------------------------------------
/train/ai/apple-touch-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jameschz/jameschz.github.io/master/train/ai/apple-touch-icon.png
--------------------------------------------------------------------------------
/train/ai/res/stage-of-ai.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jameschz/jameschz.github.io/master/train/ai/res/stage-of-ai.png
--------------------------------------------------------------------------------
/train/ai/res/learning-roadmap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jameschz/jameschz.github.io/master/train/ai/res/learning-roadmap.png
--------------------------------------------------------------------------------
/train/ai/res/application-in-game.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jameschz/jameschz.github.io/master/train/ai/res/application-in-game.png
--------------------------------------------------------------------------------
/train/ai/res/AI-Marketing-Report-2023-V3.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jameschz/jameschz.github.io/master/train/ai/res/AI-Marketing-Report-2023-V3.pdf
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # AI Study
2 | [Talking about AI](https://jameschz.github.io/train/ai/)
3 |
4 | # Programming
5 | [Programming Language World Map](https://jameschz.github.io/programming-language-world-map.html)
--------------------------------------------------------------------------------
/train/ai/learning.txt:
--------------------------------------------------------------------------------
1 |
2 | 监督学习 Supervised Learning
3 | 特点:数据有确定值,算法推测
4 | 1、预测房价
5 | 2、预测股票
6 | 3、预测肿瘤
7 |
8 | 无监督学习 Unsupervised Learning
9 | 特点:数据无确定值,算法聚类
10 | 1、聚类算法
11 | 1.1、信息归类问题
12 | 1.2、社交网络分析
13 | 1.3、市场和客户群分析
14 | 2、鸡尾酒会问题
15 | 2.1、分离音乐和人声
16 | 2.2、分离两个人的声音
17 | [W,s,v]=svd((repmat(sum(x.*x,1),size(x,1),1).*x)*x')
18 |
19 | 学习工具
20 | 1、Octave & Matlab
21 | 2、Python & PyTorch
22 | Tips:
23 | 1、可以使用oct2py库在Python中使用Octave模型
24 | 练习
25 | 1、垃圾邮件判断(SL)
26 | 2、爬虫新闻归类(UL)
27 | 3、糖尿病样本分析(SL)
28 | 4、游戏玩家行为分析(UL)
29 |
30 | 模型构建、线性回归
31 | 1、模型尽量拟合数据
32 | 2、模型选择(比如线性函数模型)
33 | h(x) = a + b * x
34 | 其中a、b就是模型参数
35 | 3、代价函数(求最小方差)
36 |
37 |
38 |
39 | 神经网络,激活函数
--------------------------------------------------------------------------------
/train/ai/css/custom.css:
--------------------------------------------------------------------------------
1 |
2 | .box {
3 | border-radius: 10px;
4 | background-color: white;
5 | box-shadow: 0 2px 6px rgba(0, 0, 0, .1);
6 | border: 1px solid rgba(0, 0, 0, .3);
7 | font-family: 'Open Sans', Arial, sans-serif;
8 | color: rgb(102, 102, 102);
9 | text-shadow: 0 2px 2px rgba(0, 0, 0, .1);
10 | }
11 |
12 | .well {
13 | min-height: 20px;
14 | padding: 19px;
15 | margin-bottom: 20px;
16 | background-color: #f5f5f5;
17 | border: 1px solid #eee;
18 | border: 1px solid rgba(0, 0, 0, 0.05);
19 | -webkit-border-radius: 4px;
20 | -moz-border-radius: 4px;
21 | border-radius: 4px;
22 | -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
23 | -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
24 | box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
25 | }
26 | .well blockquote {
27 | border-color: #ddd;
28 | border-color: rgba(0, 0, 0, 0.15);
29 | }
30 |
31 | code {
32 | padding: 3px 4px;
33 | color: #D14;
34 | background-color: #F7F7F9;
35 | border: 1px solid #E1E1E8;
36 | -webkit-border-radius: 4px;
37 | -moz-border-radius: 4px;
38 | border-radius: 4px;
39 | }
40 | .codeblock{
41 | font-size:18px;
42 | padding: 3px 4px;
43 | color: #D14;
44 | }
45 | .normal {
46 | font-size:24px;
47 | }
48 |
49 | .comm-title {
50 | line-height:2;
51 | }
52 | .comm-desc {
53 | font-size:28px;
54 | }
55 | .comm-link {
56 | font-size:28px;
57 | }
58 | .text-red {
59 | color: red;
60 | }
--------------------------------------------------------------------------------
/train/ai/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | AI Study
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
Your browser doesn't support the features required by impress.js, so you are presented with a simplified version of this presentation.
22 |
For the best experience please use the latest Chrome , Safari or Firefox browser. Upcoming version 10 of Internet Explorer should also handle it.
23 |
24 |
25 |
26 |
27 |
Talking about AI*
28 |
29 |
30 |
31 |
34 |
40 |
41 |
42 |
43 |
44 |
Use a spacebar or arrow keys to navigate
45 |
46 |
51 |
52 |
53 |
54 |
55 |
--------------------------------------------------------------------------------
/train/ai/ai-learning.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | AI Study
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
Your browser doesn't support the features required by impress.js, so you are presented with a simplified version of this presentation.
23 |
For the best experience please use the latest Chrome , Safari or Firefox browser. Upcoming version 10 of Internet Explorer should also handle it.
24 |
25 |
26 |
27 | Talking about AI
28 |
How to learn AI?*
29 |
30 |
31 |
32 |
35 |
36 |
37 |
38 |
39 |
44 |
45 |
50 |
51 |
52 |
To be continued ...
53 |
54 |
55 |
56 |
Let's get on with it, Next ...
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
Use a spacebar or arrow keys to navigate
67 |
68 |
73 |
74 |
75 |
76 |
77 |
--------------------------------------------------------------------------------
/programming-language-world-map.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
21 |
22 |
23 |
24 |
102 |
103 |
110 |
111 |
112 |
113 |
--------------------------------------------------------------------------------
/train/ai/ai-in-game.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | AI Study
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
Your browser doesn't support the features required by impress.js, so you are presented with a simplified version of this presentation.
22 |
For the best experience please use the latest Chrome , Safari or Firefox browser. Upcoming version 10 of Internet Explorer should also handle it.
23 |
24 |
25 |
26 | Talking about AI
27 |
AI in Game Industry*
28 |
29 |
30 |
31 |
34 |
44 |
45 |
46 |
More examples of applications.
47 |
48 |
49 |
50 |
51 |
55 |
56 |
57 |
Is there any legal risk during the use of AI?
58 |
Look here
59 |
60 |
61 |
62 |
QA : What will AI bring to the Game in the future?
63 |
64 |
65 |
66 |
Let's get on with it, Next ...
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
Use a spacebar or arrow keys to navigate
77 |
78 |
83 |
84 |
85 |
86 |
87 |
--------------------------------------------------------------------------------
/train/ai/ai-basic.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | AI Study
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
Your browser doesn't support the features required by impress.js, so you are presented with a simplified version of this presentation.
23 |
For the best experience please use the latest Chrome , Safari or Firefox browser. Upcoming version 10 of Internet Explorer should also handle it.
24 |
25 |
26 |
27 | Talking about AI
28 |
What's AI?*
29 |
30 |
31 |
32 |
35 |
36 |
What is AI ?
37 |
Artificial Intelligence (AI) is a science devoted to making machines think and act like humans.
38 |
Basic Knowledge
39 |
History of AI
40 |
41 |
42 |
43 |
The 3 Stages of AI
44 |
45 |
46 |
47 |
48 |
Today's AI
49 |
The rapid development of AI technology today shocked all of us.
50 |
Marketing Report 2023
51 |
52 |
53 |
56 |
74 |
75 |
80 |
81 |
86 |
87 |
92 |
93 |
98 |
99 |
100 |
QA : What is the future of AI?
101 |
102 |
103 |
104 |
Let's get on with it, Next ...
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
Use a spacebar or arrow keys to navigate
115 |
116 |
121 |
122 |
123 |
124 |
125 |
--------------------------------------------------------------------------------
/train/ai/css/impress.css:
--------------------------------------------------------------------------------
1 | /**
2 | * This is a stylesheet for a demo presentation for impress.js
3 | *
4 | * It is not meant to be a part of impress.js and is not required by impress.js.
5 | * I expect that anyone creating a presentation for impress.js would create their own
6 | * set of styles.
7 | */
8 |
9 |
10 | /* http://meyerweb.com/eric/tools/css/reset/
11 | v2.0 | 20110126
12 | License: none (public domain)
13 | */
14 |
15 | html, body, div, span, applet, object, iframe,
16 | h1, h2, h3, h4, h5, h6, p, blockquote, pre,
17 | a, abbr, acronym, address, big, cite, code,
18 | del, dfn, em, img, ins, kbd, q, s, samp,
19 | small, strike, strong, sub, sup, tt, var,
20 | b, u, i, center,
21 | dl, dt, dd, ol, ul, li,
22 | fieldset, form, label, legend,
23 | table, caption, tbody, tfoot, thead, tr, th, td,
24 | article, aside, canvas, details, embed,
25 | figure, figcaption, footer, header, hgroup,
26 | menu, nav, output, ruby, section, summary,
27 | time, mark, audio, video {
28 | margin: 0;
29 | padding: 0;
30 | border: 0;
31 | font-size: 100%;
32 | font: inherit;
33 | vertical-align: baseline;
34 | }
35 |
36 | /* HTML5 display-role reset for older browsers */
37 | article, aside, details, figcaption, figure,
38 | footer, header, hgroup, menu, nav, section {
39 | display: block;
40 | }
41 | body {
42 | line-height: 1;
43 | }
44 | ol, ul {
45 | list-style: none;
46 | }
47 | blockquote, q {
48 | quotes: none;
49 | }
50 | blockquote:before, blockquote:after,
51 | q:before, q:after {
52 | content: '';
53 | content: none;
54 | }
55 |
56 | table {
57 | border-collapse: collapse;
58 | border-spacing: 0;
59 | }
60 |
61 |
62 | body {
63 | font-family: 'PT Sans', "Helvetica Neue", Helvetica, Arial, sans-serif;
64 |
65 | min-height: 740px;
66 |
67 | background: rgb(215, 215, 215);
68 | background: -webkit-gradient(radial, 50% 50%, 0, 50% 50%, 500, from(rgb(240, 240, 240)), to(rgb(190, 190, 190)));
69 | background: -webkit-radial-gradient(rgb(240, 240, 240), rgb(190, 190, 190));
70 | background: -moz-radial-gradient(rgb(240, 240, 240), rgb(190, 190, 190));
71 | background: -o-radial-gradient(rgb(240, 240, 240), rgb(190, 190, 190));
72 | background: radial-gradient(rgb(240, 240, 240), rgb(190, 190, 190));
73 |
74 | -webkit-font-smoothing: antialiased;
75 | }
76 |
77 | b, strong { font-weight: bold }
78 | i, em { font-style: italic}
79 |
80 | a {
81 | color: inherit;
82 | text-decoration: none;
83 | padding: 0 0.1em;
84 | background: rgba(255,255,255,0.5);
85 | text-shadow: -1px -1px 2px rgba(100,100,100,0.9);
86 | border-radius: 0.2em;
87 |
88 | -webkit-transition: 0.5s;
89 | -moz-transition: 0.5s;
90 | -ms-transition: 0.5s;
91 | -o-transition: 0.5s;
92 | transition: 0.5s;
93 | }
94 |
95 | a:hover {
96 | background: rgba(255,255,255,1);
97 | text-shadow: -1px -1px 2px rgba(100,100,100,0.5);
98 | }
99 |
100 | /* enable clicking on elements 'hiding' behind body in 3D */
101 | body { pointer-events: none; }
102 | #impress { pointer-events: auto; }
103 |
104 | /* COMMON STEP STYLES */
105 |
106 | .step {
107 | width: 900px;
108 | padding: 40px;
109 |
110 | -webkit-box-sizing: border-box;
111 | -moz-box-sizing: border-box;
112 | -ms-box-sizing: border-box;
113 | -o-box-sizing: border-box;
114 | box-sizing: border-box;
115 |
116 | font-family: 'PT Serif', georgia, serif;
117 |
118 | font-size: 48px;
119 | line-height: 1.5;
120 | }
121 |
122 | /* fade out inactive slides */
123 |
124 | .step {
125 | -webkit-transition: opacity 1s;
126 | -moz-transition: opacity 1s;
127 | -ms-transition: opacity 1s;
128 | -o-transition: opacity 1s;
129 | transition: opacity 1s;
130 | }
131 |
132 | .step:not(.active) {
133 | opacity: 0.3;
134 | }
135 |
136 | /* STEP SPECIFIC STYLES */
137 |
138 | /* hint on the first slide */
139 |
140 | .hint {
141 | position: fixed;
142 | left: 0;
143 | right: 0;
144 | bottom: 200px;
145 |
146 | background: rgba(0,0,0,0.5);
147 | color: #EEE;
148 | text-align: center;
149 |
150 | font-size: 50px;
151 | padding: 20px;
152 |
153 | z-index: 100;
154 |
155 | opacity: 0;
156 |
157 | -webkit-transform: translateY(400px);
158 | -moz-transform: translateY(400px);
159 | -ms-transform: translateY(400px);
160 | -o-transform: translateY(400px);
161 | transform: translateY(400px);
162 |
163 | -webkit-transition: opacity 1s, -webkit-transform 0.5s 1s;
164 | -moz-transition: opacity 1s, -moz-transform 0.5s 1s;
165 | -ms-transition: opacity 1s, -ms-transform 0.5s 1s;
166 | -o-transition: opacity 1s, -o-transform 0.5s 1s;
167 | transition: opacity 1s, transform 0.5s 1s;
168 | }
169 |
170 | .step-bored + .hint {
171 | opacity: 1;
172 |
173 | -webkit-transition: opacity 1s 5s, -webkit-transform 0.5s;
174 | -moz-transition: opacity 1s 5s, -moz-transform 0.5s;
175 | -ms-transition: opacity 1s 5s, -ms-transform 0.5s;
176 | -o-transition: opacity 1s 5s, -o-transform 0.5s;
177 | transition: opacity 1s 5s, transform 0.5s;
178 |
179 | -webkit-transform: translateY(0px);
180 | -moz-transform: translateY(0px);
181 | -ms-transform: translateY(0px);
182 | -o-transform: translateY(0px);
183 | transform: translateY(0px);
184 | }
185 |
186 | /* impress.js title */
187 |
188 | #title {
189 | padding: 0;
190 | }
191 |
192 | #title .try {
193 | font-size: 64px;
194 | position: absolute;
195 | top: -0.5em;
196 | left: 1.5em;
197 |
198 | -webkit-transform: translateZ(20px);
199 | -moz-transform: translateZ(20px);
200 | -ms-transform: translateZ(20px);
201 | -o-transform: translateZ(20px);
202 | transform: translateZ(20px);
203 | }
204 |
205 | #title h1 {
206 | font-size: 190px;
207 |
208 | -webkit-transform: translateZ(50px);
209 | -moz-transform: translateZ(50px);
210 | -ms-transform: translateZ(50px);
211 | -o-transform: translateZ(50px);
212 | transform: translateZ(50px);
213 | }
214 |
215 | #title .footnote {
216 | font-size: 32px;
217 | }
218 |
219 | /* big thoughts */
220 |
221 | #big {
222 | width: 600px;
223 | text-align: center;
224 | font-size: 60px;
225 | line-height: 1;
226 | }
227 |
228 | #big b {
229 | display: block;
230 | font-size: 250px;
231 | line-height: 250px;
232 | }
233 |
234 | #big .thoughts {
235 | font-size: 90px;
236 | line-height: 150px;
237 | }
238 |
239 | /* tiny ideas */
240 |
241 | #tiny {
242 | width: 500px;
243 | text-align: center;
244 | }
245 |
246 | #ing {
247 | width: 500px;
248 | }
249 |
250 | #ing b {
251 | display: inline-block;
252 | -webkit-transition: 0.5s;
253 | -moz-transition: 0.5s;
254 | -ms-transition: 0.5s;
255 | -o-transition: 0.5s;
256 | transition: 0.5s;
257 | }
258 |
259 | #ing.active .positioning {
260 | -webkit-transform: translateY(-10px);
261 | -moz-transform: translateY(-10px);
262 | -ms-transform: translateY(-10px);
263 | -o-transform: translateY(-10px);
264 | transform: translateY(-10px);
265 |
266 | -webkit-transition-delay: 1.5s;
267 | -moz-transition-delay: 1.5s;
268 | -ms-transition-delay: 1.5s;
269 | -o-transition-delay: 1.5s;
270 | transition-delay: 1.5s;
271 | }
272 |
273 | .rotating, #ing.active .rotating {
274 | -webkit-transform: rotate(-10deg);
275 | -moz-transform: rotate(-10deg);
276 | -ms-transform: rotate(-10deg);
277 | -o-transform: rotate(-10deg);
278 | transform: rotate(-10deg);
279 |
280 | -webkit-transition-delay: 1.75s;
281 | -moz-transition-delay: 1.75s;
282 | -ms-transition-delay: 1.75s;
283 | -o-transition-delay: 1.75s;
284 | transition-delay: 1.75s;
285 | }
286 |
287 | #ing.active .scaling {
288 | -webkit-transform: scale(0.7);
289 | -moz-transform: scale(0.7);
290 | -ms-transform: scale(0.7);
291 | -o-transform: scale(0.7);
292 | transform: scale(0.7);
293 |
294 | -webkit-transition-delay: 2s;
295 | -moz-transition-delay: 2s;
296 | -ms-transition-delay: 2s;
297 | -o-transition-delay: 2s;
298 | transition-delay: 2s;
299 |
300 | }
301 |
302 | /* imagination */
303 |
304 | #imagination {
305 | width: 600px;
306 | }
307 |
308 | #imagination .imagination {
309 | font-size: 78px;
310 | }
311 |
312 | /* use the source, Luke */
313 |
314 | #source {
315 | width: 700px;
316 | padding-bottom: 300px;
317 |
318 | /* Yoda Icon :: Pixel Art from Star Wars http://www.pixeljoint.com/pixelart/1423.htm */
319 | background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARgAAAEYCAMAAACwUBm+AAAAAXNSR0IArs4c6QAAAKtQTFRFsAAAvbWSLUUrLEQqY1s8UYJMqJ1vNTEgOiIdIzYhjIFVLhsXZ6lgSEIsP2U8JhcCVzMsSXZEgXdOO145XJdWOl03LzAYMk4vSXNExr+hwcuxRTs1Qmk+RW9Am49eFRANQz4pUoNMQWc+OSMDTz0wLBsCNVMxa2NBOyUDUoNNSnlEWo9VRGxAVzYFl6tXCggHbLNmMUIcHhwTXkk5f3VNRT8wUT8xAAAACQocRBWFFwAAAAF0Uk5TAEDm2GYAAAPCSURBVHja7d3JctNAFIZRMwRCCGEmzPM8z/D+T8bu/ptbXXJFdij5fMt2Wuo+2UgqxVmtttq5WVotLzBgwIABAwYMGDCn0qVqbo69psPqVpWx+1XG5iaavF8wYMCAAQMGDBgwi4DJ6Y6qkxB1HNlcN3a92gbR5P2CAQMGDBgwYMCAWSxMlrU+UY5yu2l9okfV4bAxUVbf7TJnAwMGDBgwYMCAAbMLMHeqbGR82Zy+VR1Ht81nVca6R+UdTLaU24Ruzd3qM/e4yjnAgAEDBgwYMGDA7AJMd1l/3NRdVGcj3eX/2WEhCmDGxnM7yqygu8XIPjJj8iN/MGDAgAEDBgwYMAuDGb8q0RGlLCHLv1t9qDKWn3vdNHVuEI6HPaxO9Jo3GDBgwIABAwYMmIXBdC9ShGgMk+XnkXUeuGcsP/e1+lhNnZsL/G5Vs3OAAQMGDBgwYMCAWSxMR3SzOmraG5atdy9wZKzb+vg16qyqe2FltbnAgAEDBgwYMGDALAxmTJSuN3WA76rnVca6GTnemGN1WoEBAwYMGDBgwIBZGMxUomy4+xO899V4LAg5Xnc2MGDAgAEDBgwYMGA218Wq+2K1LDqvY9xZu8zN8fICdM6btYABAwYMGDBgwIABMzfH0+pGU5afze2tXebmeAfVz+p8BQYMGDBgwIABAwbMPBzZ+oWmfJrln1273FhkbHzee9WWbw7AgAEDBgwYMGDALAKm43hcdctKgblcPamOhuXnXlY5Xs6bsW4FGyQCAwYMGDBgwIABswiYMceZKgvMo+h8mrHLTdn676rj+FEFoTtHd8MwOxEYMGDAgAEDBgyYRcBM5UhXqiymW3R3c9ARhWO/OmjqfjVZy+xEYMCAAQMGDBgwYBYG073OnCV0RFNhMhaOa9WfKmOB6XjHMN1tQmaAAQMGDBgwYMCA2VWY7vXjz1U4croAzgPztwIDBgwYMGDAgAEDZhswh035NBw59Dww3RgYMGDAgAEDBgwYMJuD6f4tXT7NUqfCdBvZLkxXdgQGDBgwYMCAAQNmt2DGj8WzwAfV/w7T/aq7mxwwYMCAAQMGDBgwuwqTOo7uTwTngflSzQ3TdaJvAwEDBgwYMGDAgAED5gSvgbyo5oHZ4Pc+gwEDBgwYMGDAgAEzhOm+5G0qTGaAAQMGDBgwYMCAAXNaMOcnls3tNwWm+zRzp54NDBgwYMCAAQMGDJh5YNL36k1TLuGvVq+qnKMbS5n7tulT9asCAwYMGDBgwIABA2ZumKuztLnjgQEDBgwYMGDAgNl5mH/4/ltKA6vBNAAAAABJRU5ErkJggg==);
320 | background-position: bottom right;
321 | background-repeat: no-repeat;
322 | }
323 |
324 | #source q {
325 | font-size: 60px;
326 | }
327 |
328 | /* it's in 3D */
329 |
330 | #its-in-3d p {
331 | -webkit-transform-style: preserve-3d;
332 | -moz-transform-style: preserve-3d; /* Y U need this Firefox?! */
333 | -ms-transform-style: preserve-3d;
334 | -o-transform-style: preserve-3d;
335 | transform-style: preserve-3d;
336 | }
337 |
338 | #its-in-3d span,
339 | #its-in-3d b {
340 | display: inline-block;
341 | -webkit-transform: translateZ(40px);
342 | -moz-transform: translateZ(40px);
343 | -ms-transform: translateZ(40px);
344 | -o-transform: translateZ(40px);
345 | transform: translateZ(40px);
346 |
347 | -webkit-transition: 0.5s;
348 | -moz-transition: 0.5s;
349 | -ms-transition: 0.5s;
350 | -o-transition: 0.5s;
351 | transition: 0.5s;
352 | }
353 |
354 | #its-in-3d .have {
355 | -webkit-transform: translateZ(-40px);
356 | -moz-transform: translateZ(-40px);
357 | -ms-transform: translateZ(-40px);
358 | -o-transform: translateZ(-40px);
359 | transform: translateZ(-40px);
360 | }
361 |
362 | #its-in-3d .you {
363 | -webkit-transform: translateZ(20px);
364 | -moz-transform: translateZ(20px);
365 | -ms-transform: translateZ(20px);
366 | -o-transform: translateZ(20px);
367 | transform: translateZ(20px);
368 | }
369 |
370 | #its-in-3d .noticed {
371 | -webkit-transform: translateZ(-40px);
372 | -moz-transform: translateZ(-40px);
373 | -ms-transform: translateZ(-40px);
374 | -o-transform: translateZ(-40px);
375 | transform: translateZ(-40px);
376 | }
377 |
378 | #its-in-3d .its {
379 | -webkit-transform: translateZ(60px);
380 | -moz-transform: translateZ(60px);
381 | -ms-transform: translateZ(60px);
382 | -o-transform: translateZ(60px);
383 | transform: translateZ(60px);
384 | }
385 |
386 | #its-in-3d .in {
387 | -webkit-transform: translateZ(-10px);
388 | -moz-transform: translateZ(-10px);
389 | -ms-transform: translateZ(-10px);
390 | -o-transform: translateZ(-10px);
391 | transform: translateZ(-10px);
392 | }
393 |
394 | #its-in-3d .footnote {
395 | font-size: 32px;
396 |
397 | -webkit-transform: translateZ(-10px);
398 | -moz-transform: translateZ(-10px);
399 | -ms-transform: translateZ(-10px);
400 | -o-transform: translateZ(-10px);
401 | transform: translateZ(-10px);
402 | }
403 |
404 | #its-in-3d.active span,
405 | #its-in-3d.active b {
406 | -webkit-transform: translateZ(0px);
407 | -moz-transform: translateZ(0px);
408 | -ms-transform: translateZ(0px);
409 | -o-transform: translateZ(0px);
410 | transform: translateZ(0px);
411 |
412 | -webkit-transition-delay: 1s;
413 | -moz-transition-delay: 1s;
414 | -ms-transition-delay: 1s;
415 | -o-transition-delay: 1s;
416 | transition-delay: 1s;
417 | }
418 |
419 | /* overview step */
420 |
421 | #overview {
422 | z-index: -1;
423 | padding: 0;
424 | }
425 |
426 | /* on overview step everything is visible */
427 |
428 | #impress.step-overview .step {
429 | opacity: 1;
430 | cursor: pointer;
431 | }
432 |
433 | /*
434 | * SLIDE STEP STYLES
435 | *
436 | * inspired by: http://html5slides.googlecode.com/svn/trunk/styles.css
437 | *
438 | * ;)
439 | */
440 |
441 | .slide {
442 | display: block;
443 |
444 | width: 900px;
445 | height: 700px;
446 |
447 | padding: 40px 60px;
448 |
449 | border-radius: 10px;
450 |
451 | background-color: white;
452 |
453 | box-shadow: 0 2px 6px rgba(0, 0, 0, .1);
454 | border: 1px solid rgba(0, 0, 0, .3);
455 |
456 | font-family: 'Open Sans', Arial, sans-serif;
457 |
458 | color: rgb(102, 102, 102);
459 | text-shadow: 0 2px 2px rgba(0, 0, 0, .1);
460 |
461 | font-size: 30px;
462 | line-height: 36px;
463 |
464 | letter-spacing: -1px;
465 | }
466 |
467 | .slide q {
468 | display: block;
469 | font-size: 50px;
470 | line-height: 72px;
471 |
472 | margin-top: 100px;
473 | }
474 |
475 | .slide q strong {
476 | white-space: nowrap;
477 | }
478 |
479 |
480 | /* IMPRESS NOT SUPPORTED STYLES */
481 |
482 | .fallback-message {
483 | font-family: sans-serif;
484 | line-height: 1.3;
485 |
486 | display: none;
487 | width: 780px;
488 | padding: 10px 10px 0;
489 | margin: 20px auto;
490 |
491 | border-radius: 10px;
492 | border: 1px solid #E4C652;
493 | background: #EEDC94;
494 | }
495 |
496 | .fallback-message p {
497 | margin-bottom: 10px;
498 | }
499 |
500 | .impress-not-supported .step {
501 | position: relative;
502 | opacity: 1;
503 | margin: 20px auto;
504 | }
505 |
506 | .impress-not-supported .fallback-message {
507 | display: block;
508 | }
509 |
510 |
--------------------------------------------------------------------------------
/train/ai/js/impress.js:
--------------------------------------------------------------------------------
1 | /**
2 | * impress.js
3 | *
4 | * impress.js is a presentation tool based on the power of CSS3 transforms and transitions
5 | * in modern browsers and inspired by the idea behind prezi.com.
6 | *
7 | * MIT Licensed.
8 | *
9 | * Copyright 2011-2012 Bartek Szopka (@bartaz)
10 | *
11 | * ------------------------------------------------
12 | * author: Bartek Szopka
13 | * version: 0.3
14 | * url: http://bartaz.github.com/impress.js/
15 | * source: http://github.com/bartaz/impress.js/
16 | */
17 |
18 | (function ( document, window ) {
19 | 'use strict';
20 |
21 | // HELPER FUNCTIONS
22 |
23 | var pfx = (function () {
24 |
25 | var style = document.createElement('dummy').style,
26 | prefixes = 'Webkit Moz O ms Khtml'.split(' '),
27 | memory = {};
28 |
29 | return function ( prop ) {
30 | if ( typeof memory[ prop ] === "undefined" ) {
31 |
32 | var ucProp = prop.charAt(0).toUpperCase() + prop.substr(1),
33 | props = (prop + ' ' + prefixes.join(ucProp + ' ') + ucProp).split(' ');
34 |
35 | memory[ prop ] = null;
36 | for ( var i in props ) {
37 | if ( style[ props[i] ] !== undefined ) {
38 | memory[ prop ] = props[i];
39 | break;
40 | }
41 | }
42 |
43 | }
44 |
45 | return memory[ prop ];
46 | }
47 |
48 | })();
49 |
50 | var arrayify = function ( a ) {
51 | return [].slice.call( a );
52 | };
53 |
54 | var css = function ( el, props ) {
55 | var key, pkey;
56 | for ( key in props ) {
57 | if ( props.hasOwnProperty(key) ) {
58 | pkey = pfx(key);
59 | if ( pkey != null ) {
60 | el.style[pkey] = props[key];
61 | }
62 | }
63 | }
64 | return el;
65 | }
66 |
67 | var byId = function ( id ) {
68 | return document.getElementById(id);
69 | }
70 |
71 | var $ = function ( selector, context ) {
72 | context = context || document;
73 | return context.querySelector(selector);
74 | };
75 |
76 | var $$ = function ( selector, context ) {
77 | context = context || document;
78 | return arrayify( context.querySelectorAll(selector) );
79 | };
80 |
81 | var translate = function ( t ) {
82 | return " translate3d(" + t.x + "px," + t.y + "px," + t.z + "px) ";
83 | };
84 |
85 | var rotate = function ( r, revert ) {
86 | var rX = " rotateX(" + r.x + "deg) ",
87 | rY = " rotateY(" + r.y + "deg) ",
88 | rZ = " rotateZ(" + r.z + "deg) ";
89 |
90 | return revert ? rZ+rY+rX : rX+rY+rZ;
91 | };
92 |
93 | var scale = function ( s ) {
94 | return " scale(" + s + ") ";
95 | };
96 |
97 | var getElementFromUrl = function () {
98 | // get id from url # by removing `#` or `#/` from the beginning,
99 | // so both "fallback" `#slide-id` and "enhanced" `#/slide-id` will work
100 | return byId( window.location.hash.replace(/^#\/?/,"") );
101 | };
102 |
103 | // CHECK SUPPORT
104 |
105 | var ua = navigator.userAgent.toLowerCase();
106 | var impressSupported = ( pfx("perspective") != null ) &&
107 | ( document.body.classList ) &&
108 | ( document.body.dataset ) &&
109 | ( ua.search(/(iphone)|(ipod)|(android)/) == -1 );
110 |
111 | var roots = {};
112 |
113 | var impress = window.impress = function ( rootId ) {
114 |
115 | rootId = rootId || "impress";
116 |
117 | // if already initialized just return the API
118 | if (roots["impress-root-" + rootId]) {
119 | return roots["impress-root-" + rootId];
120 | }
121 |
122 | // DOM ELEMENTS
123 |
124 | var root = byId( rootId );
125 |
126 | if (!impressSupported) {
127 | root.className = "impress-not-supported";
128 | return;
129 | } else {
130 | root.className = "";
131 | }
132 |
133 | // viewport updates for iPad
134 | var meta = $("meta[name='viewport']") || document.createElement("meta");
135 | // hardcoding these values looks pretty bad, as they kind of depend on the content
136 | // so they should be at least configurable
137 | meta.content = "width=1024, minimum-scale=0.75, maximum-scale=0.75, user-scalable=no";
138 | if (meta.parentNode != document.head) {
139 | meta.name = 'viewport';
140 | document.head.appendChild(meta);
141 | }
142 |
143 | var canvas = document.createElement("div");
144 | canvas.className = "canvas";
145 |
146 | arrayify( root.childNodes ).forEach(function ( el ) {
147 | canvas.appendChild( el );
148 | });
149 | root.appendChild(canvas);
150 |
151 | var steps = $$(".step", root);
152 |
153 | // SETUP
154 | // set initial values and defaults
155 |
156 | document.documentElement.style.height = "100%";
157 |
158 | css(document.body, {
159 | height: "100%",
160 | overflow: "hidden"
161 | });
162 |
163 | var props = {
164 | position: "absolute",
165 | transformOrigin: "top left",
166 | transition: "all 0s ease-in-out",
167 | transformStyle: "preserve-3d"
168 | }
169 |
170 | css(root, props);
171 | css(root, {
172 | top: "50%",
173 | left: "50%",
174 | perspective: "1000px"
175 | });
176 | css(canvas, props);
177 |
178 | var current = {
179 | translate: { x: 0, y: 0, z: 0 },
180 | rotate: { x: 0, y: 0, z: 0 },
181 | scale: 1
182 | };
183 |
184 | var stepData = {};
185 |
186 | var isStep = function ( el ) {
187 | return !!(el && el.id && stepData["impress-" + el.id]);
188 | }
189 |
190 | steps.forEach(function ( el, idx ) {
191 | var data = el.dataset,
192 | step = {
193 | translate: {
194 | x: data.x || 0,
195 | y: data.y || 0,
196 | z: data.z || 0
197 | },
198 | rotate: {
199 | x: data.rotateX || 0,
200 | y: data.rotateY || 0,
201 | z: data.rotateZ || data.rotate || 0
202 | },
203 | scale: data.scale || 1,
204 | el: el
205 | };
206 |
207 | if ( !el.id ) {
208 | el.id = "step-" + (idx + 1);
209 | }
210 |
211 | stepData["impress-" + el.id] = step;
212 |
213 | css(el, {
214 | position: "absolute",
215 | transform: "translate(-50%,-50%)" +
216 | translate(step.translate) +
217 | rotate(step.rotate) +
218 | scale(step.scale),
219 | transformStyle: "preserve-3d"
220 | });
221 |
222 | });
223 |
224 | // making given step active
225 |
226 | var active = null;
227 | var hashTimeout = null;
228 |
229 | var goto = function ( el ) {
230 | if ( !isStep(el) || el == active) {
231 | // selected element is not defined as step or is already active
232 | return false;
233 | }
234 |
235 | // Sometimes it's possible to trigger focus on first link with some keyboard action.
236 | // Browser in such a case tries to scroll the page to make this element visible
237 | // (even that body overflow is set to hidden) and it breaks our careful positioning.
238 | //
239 | // So, as a lousy (and lazy) workaround we will make the page scroll back to the top
240 | // whenever slide is selected
241 | //
242 | // If you are reading this and know any better way to handle it, I'll be glad to hear about it!
243 | window.scrollTo(0, 0);
244 |
245 | var step = stepData["impress-" + el.id];
246 |
247 | if ( active ) {
248 | active.classList.remove("active");
249 | }
250 | el.classList.add("active");
251 |
252 | root.className = "step-" + el.id;
253 |
254 | // `#/step-id` is used instead of `#step-id` to prevent default browser
255 | // scrolling to element in hash
256 | //
257 | // and it has to be set after animation finishes, because in chrome it
258 | // causes transtion being laggy
259 | window.clearTimeout( hashTimeout );
260 | hashTimeout = window.setTimeout(function () {
261 | window.location.hash = "#/" + el.id;
262 | }, 1000);
263 |
264 | var target = {
265 | rotate: {
266 | x: -parseInt(step.rotate.x, 10),
267 | y: -parseInt(step.rotate.y, 10),
268 | z: -parseInt(step.rotate.z, 10)
269 | },
270 | translate: {
271 | x: -step.translate.x,
272 | y: -step.translate.y,
273 | z: -step.translate.z
274 | },
275 | scale: 1 / parseFloat(step.scale)
276 | };
277 |
278 | // check if the transition is zooming in or not
279 | var zoomin = target.scale >= current.scale;
280 |
281 | // if presentation starts (nothing is active yet)
282 | // don't animate (set duration to 0)
283 | var duration = (active) ? "1s" : "0";
284 |
285 | css(root, {
286 | // to keep the perspective look similar for different scales
287 | // we need to 'scale' the perspective, too
288 | perspective: step.scale * 1000 + "px",
289 | transform: scale(target.scale),
290 | transitionDuration: duration,
291 | transitionDelay: (zoomin ? "500ms" : "0ms")
292 | });
293 |
294 | css(canvas, {
295 | transform: rotate(target.rotate, true) + translate(target.translate),
296 | transitionDuration: duration,
297 | transitionDelay: (zoomin ? "0ms" : "500ms")
298 | });
299 |
300 | current = target;
301 | active = el;
302 |
303 | return el;
304 | };
305 |
306 | var prev = function () {
307 | var prev = steps.indexOf( active ) - 1;
308 | prev = prev >= 0 ? steps[ prev ] : steps[ steps.length-1 ];
309 |
310 | return goto(prev);
311 | };
312 |
313 | var next = function () {
314 | var next = steps.indexOf( active ) + 1;
315 | next = next < steps.length ? steps[ next ] : steps[ 0 ];
316 |
317 | return goto(next);
318 | };
319 |
320 | window.addEventListener("hashchange", function () {
321 | goto( getElementFromUrl() );
322 | }, false);
323 |
324 | window.addEventListener("orientationchange", function () {
325 | window.scrollTo(0, 0);
326 | }, false);
327 |
328 | // START
329 | // by selecting step defined in url or first step of the presentation
330 | goto(getElementFromUrl() || steps[0]);
331 |
332 | return (roots[ "impress-root-" + rootId ] = {
333 | goto: goto,
334 | next: next,
335 | prev: prev
336 | });
337 |
338 | }
339 | })(document, window);
340 |
341 | // EVENTS
342 |
343 | (function ( document, window ) {
344 | 'use strict';
345 |
346 | // keyboard navigation handler
347 | document.addEventListener("keydown", function ( event ) {
348 | if ( event.keyCode == 8 || event.keyCode == 9 || ( event.keyCode >= 32 && event.keyCode <= 34 ) || (event.keyCode >= 37 && event.keyCode <= 40) ) {
349 | switch( event.keyCode ) {
350 | case 33: ; // pg up
351 | case 37: ; // left
352 | case 38: // up
353 | impress().prev();
354 | break;
355 | case 9: ; // tab
356 | case 32: ; // space
357 | case 34: ; // pg down
358 | case 39: ; // right
359 | case 40: // down
360 | impress().next();
361 | break;
362 | case 8: impress().goto(document.getElementById('overview')); break;
363 | }
364 |
365 | event.preventDefault();
366 | }
367 | }, false);
368 |
369 | // delegated handler for clicking on the links to presentation steps
370 | document.addEventListener("click", function ( event ) {
371 | // event delegation with "bubbling"
372 | // check if event target (or any of its parents is a link)
373 | var target = event.target;
374 | while (target && (target.tagName != "A") &&
375 | (target != document.body) ) {
376 | target = target.parentNode;
377 | }
378 |
379 | if (target && target.tagName == "A" ) {
380 | var href = target.getAttribute("href");
381 |
382 | // if it's a link to presentation step, target this step
383 | if ( href && href[0] == '#' ) {
384 | target = document.getElementById( href.slice(1) );
385 | }
386 | }
387 |
388 | if ( impress().goto(target) ) {
389 | event.stopImmediatePropagation();
390 | event.preventDefault();
391 | }
392 | }, false);
393 |
394 | // delegated handler for clicking on step elements
395 | document.addEventListener("click", function ( event ) {
396 | var target = event.target;
397 | // find closest step element
398 | while (target && target.classList && !target.classList.contains("step") &&
399 | (target != document.body) ) {
400 | target = target.parentNode;
401 | }
402 |
403 | if ( impress().goto(target) ) {
404 | event.preventDefault();
405 | }
406 | }, false);
407 |
408 | // touch handler to detect taps on the left and right side of the screen
409 | document.addEventListener("touchstart", function ( event ) {
410 | if (event.touches.length === 1) {
411 | var x = event.touches[0].clientX,
412 | width = window.innerWidth * 0.3,
413 | result = null;
414 |
415 | if ( x < width ) {
416 | result = impress().prev();
417 | } else if ( x > window.innerWidth - width ) {
418 | result = impress().next();
419 | }
420 |
421 | if (result) {
422 | event.preventDefault();
423 | }
424 | }
425 | }, false);
426 | })(document, window);
427 |
428 |
--------------------------------------------------------------------------------
/train/ai/impress.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
46 |
47 |
65 |
66 |
67 |
68 |
69 |
70 |
71 | impress.js | presentation tool based on the power of CSS3 transforms and transitions in modern browsers | by Bartek Szopka @bartaz
72 |
73 |
74 |
75 |
76 |
77 |
78 |
93 |
94 |
95 |
96 |
97 |
98 |
113 |
114 |
115 |
116 |
Your browser doesn't support the features required by impress.js, so you are presented with a simplified version of this presentation.
117 |
For the best experience please use the latest Chrome , Safari or Firefox browser. Upcoming version 10 of Internet Explorer should also handle it.
118 |
119 |
120 |
137 |
138 | Aren't you just bored with all those slides-based presentations?
139 |
140 |
141 |
156 |
157 | Don't you think that presentations given in modern browsers shouldn't copy the limits of 'classic' slide decks?
158 |
159 |
160 |
161 | Would you like to impress your audience with stunning visualization of your talk?
162 |
163 |
164 |
174 |
175 | then you should try
176 |
impress.js*
177 |
178 |
179 |
180 |
188 |
189 |
It's a presentation tool
190 | inspired by the idea behind prezi.com
191 | and based on the power of CSS3 transforms and transitions in modern browsers.
192 |
193 |
194 |
195 |
visualize your big thoughts
196 |
197 |
198 |
207 |
208 |
and tiny ideas
209 |
210 |
211 |
212 |
by positioning , rotating and scaling them on an infinite canvas
213 |
214 |
215 |
216 |
the only limit is your imagination
217 |
218 |
219 |
223 |
224 |
225 |
one more thing...
226 |
227 |
228 |
240 |
241 |
have you noticed it's in 3D* ?
242 |
243 |
244 |
245 |
257 |
258 |
259 |
260 |
261 |
262 |
276 |
277 |
Use a spacebar or arrow keys to navigate
278 |
279 |
284 |
285 |
300 |
301 |
302 |
303 |
324 |
325 |
326 |
327 |
328 |
356 |
357 |
372 |
373 |
--------------------------------------------------------------------------------
/data/json2.js:
--------------------------------------------------------------------------------
1 | // json2.js
2 | // 2023-05-10
3 | // Public Domain.
4 | // NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.
5 |
6 | // USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO
7 | // NOT CONTROL.
8 |
9 | // This file creates a global JSON object containing two methods: stringify
10 | // and parse. This file provides the ES5 JSON capability to ES3 systems.
11 | // If a project might run on IE8 or earlier, then this file should be included.
12 | // This file does nothing on ES5 systems.
13 |
14 | // JSON.stringify(value, replacer, space)
15 | // value any JavaScript value, usually an object or array.
16 | // replacer an optional parameter that determines how object
17 | // values are stringified for objects. It can be a
18 | // function or an array of strings.
19 | // space an optional parameter that specifies the indentation
20 | // of nested structures. If it is omitted, the text will
21 | // be packed without extra whitespace. If it is a number,
22 | // it will specify the number of spaces to indent at each
23 | // level. If it is a string (such as "\t" or " "),
24 | // it contains the characters used to indent at each level.
25 | // This method produces a JSON text from a JavaScript value.
26 | // When an object value is found, if the object contains a toJSON
27 | // method, its toJSON method will be called and the result will be
28 | // stringified. A toJSON method does not serialize: it returns the
29 | // value represented by the name/value pair that should be serialized,
30 | // or undefined if nothing should be serialized. The toJSON method
31 | // will be passed the key associated with the value, and this will be
32 | // bound to the value.
33 |
34 | // For example, this would serialize Dates as ISO strings.
35 |
36 | // Date.prototype.toJSON = function (key) {
37 | // function f(n) {
38 | // // Format integers to have at least two digits.
39 | // return (n < 10)
40 | // ? "0" + n
41 | // : n;
42 | // }
43 | // return this.getUTCFullYear() + "-" +
44 | // f(this.getUTCMonth() + 1) + "-" +
45 | // f(this.getUTCDate()) + "T" +
46 | // f(this.getUTCHours()) + ":" +
47 | // f(this.getUTCMinutes()) + ":" +
48 | // f(this.getUTCSeconds()) + "Z";
49 | // };
50 |
51 | // You can provide an optional replacer method. It will be passed the
52 | // key and value of each member, with this bound to the containing
53 | // object. The value that is returned from your method will be
54 | // serialized. If your method returns undefined, then the member will
55 | // be excluded from the serialization.
56 |
57 | // If the replacer parameter is an array of strings, then it will be
58 | // used to select the members to be serialized. It filters the results
59 | // such that only members with keys listed in the replacer array are
60 | // stringified.
61 |
62 | // Values that do not have JSON representations, such as undefined or
63 | // functions, will not be serialized. Such values in objects will be
64 | // dropped; in arrays they will be replaced with null. You can use
65 | // a replacer function to replace those with JSON values.
66 |
67 | // JSON.stringify(undefined) returns undefined.
68 |
69 | // The optional space parameter produces a stringification of the
70 | // value that is filled with line breaks and indentation to make it
71 | // easier to read.
72 |
73 | // If the space parameter is a non-empty string, then that string will
74 | // be used for indentation. If the space parameter is a number, then
75 | // the indentation will be that many spaces.
76 |
77 | // Example:
78 |
79 | // text = JSON.stringify(["e", {pluribus: "unum"}]);
80 | // // text is '["e",{"pluribus":"unum"}]'
81 |
82 | // text = JSON.stringify(["e", {pluribus: "unum"}], null, "\t");
83 | // // text is '[\n\t"e",\n\t{\n\t\t"pluribus": "unum"\n\t}\n]'
84 |
85 | // text = JSON.stringify([new Date()], function (key, value) {
86 | // return this[key] instanceof Date
87 | // ? "Date(" + this[key] + ")"
88 | // : value;
89 | // });
90 | // // text is '["Date(---current time---)"]'
91 |
92 | // JSON.parse(text, reviver)
93 | // This method parses a JSON text to produce an object or array.
94 | // It can throw a SyntaxError exception.
95 |
96 | // The optional reviver parameter is a function that can filter and
97 | // transform the results. It receives each of the keys and values,
98 | // and its return value is used instead of the original value.
99 | // If it returns what it received, then the structure is not modified.
100 | // If it returns undefined then the member is deleted.
101 |
102 | // Example:
103 |
104 | // // Parse the text. Values that look like ISO date strings will
105 | // // be converted to Date objects.
106 |
107 | // myData = JSON.parse(text, function (key, value) {
108 | // var a;
109 | // if (typeof value === "string") {
110 | // a =
111 | // /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value);
112 | // if (a) {
113 | // return new Date(Date.UTC(
114 | // +a[1], +a[2] - 1, +a[3], +a[4], +a[5], +a[6]
115 | // ));
116 | // }
117 | // return value;
118 | // }
119 | // });
120 |
121 | // myData = JSON.parse(
122 | // "[\"Date(09/09/2001)\"]",
123 | // function (key, value) {
124 | // var d;
125 | // if (
126 | // typeof value === "string"
127 | // && value.slice(0, 5) === "Date("
128 | // && value.slice(-1) === ")"
129 | // ) {
130 | // d = new Date(value.slice(5, -1));
131 | // if (d) {
132 | // return d;
133 | // }
134 | // }
135 | // return value;
136 | // }
137 | // );
138 |
139 | // This is a reference implementation. You are free to copy, modify, or
140 | // redistribute.
141 |
142 | /*jslint
143 | eval, for, this
144 | */
145 |
146 | /*property
147 | JSON, apply, call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours,
148 | getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join,
149 | lastIndex, length, parse, prototype, push, replace, slice, stringify,
150 | test, toJSON, toString, valueOf
151 | */
152 |
153 |
154 | // Create a JSON object only if one does not already exist. We create the
155 | // methods in a closure to avoid creating global variables.
156 |
157 | if (typeof JSON !== "object") {
158 | JSON = {};
159 | }
160 |
161 | (function () {
162 | "use strict";
163 |
164 | var rx_one = /^[\],:{}\s]*$/;
165 | var rx_two = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g;
166 | var rx_three = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g;
167 | var rx_four = /(?:^|:|,)(?:\s*\[)+/g;
168 | var rx_escapable = /[\\"\u0000-\u001f\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;
169 | var rx_dangerous = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;
170 |
171 | function f(n) {
172 | // Format integers to have at least two digits.
173 | return (n < 10)
174 | ? "0" + n
175 | : n;
176 | }
177 |
178 | function this_value() {
179 | return this.valueOf();
180 | }
181 |
182 | if (typeof Date.prototype.toJSON !== "function") {
183 |
184 | Date.prototype.toJSON = function () {
185 |
186 | return isFinite(this.valueOf())
187 | ? (
188 | this.getUTCFullYear()
189 | + "-"
190 | + f(this.getUTCMonth() + 1)
191 | + "-"
192 | + f(this.getUTCDate())
193 | + "T"
194 | + f(this.getUTCHours())
195 | + ":"
196 | + f(this.getUTCMinutes())
197 | + ":"
198 | + f(this.getUTCSeconds())
199 | + "Z"
200 | )
201 | : null;
202 | };
203 |
204 | Boolean.prototype.toJSON = this_value;
205 | Number.prototype.toJSON = this_value;
206 | String.prototype.toJSON = this_value;
207 | }
208 |
209 | var gap;
210 | var indent;
211 | var meta;
212 | var rep;
213 |
214 |
215 | function quote(string) {
216 |
217 | // If the string contains no control characters, no quote characters, and no
218 | // backslash characters, then we can safely slap some quotes around it.
219 | // Otherwise we must also replace the offending characters with safe escape
220 | // sequences.
221 |
222 | rx_escapable.lastIndex = 0;
223 | return rx_escapable.test(string)
224 | ? "\"" + string.replace(rx_escapable, function (a) {
225 | var c = meta[a];
226 | return typeof c === "string"
227 | ? c
228 | : "\\u" + ("0000" + a.charCodeAt(0).toString(16)).slice(-4);
229 | }) + "\""
230 | : "\"" + string + "\"";
231 | }
232 |
233 |
234 | function str(key, holder) {
235 |
236 | // Produce a string from holder[key].
237 |
238 | var i; // The loop counter.
239 | var k; // The member key.
240 | var v; // The member value.
241 | var length;
242 | var mind = gap;
243 | var partial;
244 | var value = holder[key];
245 |
246 | // If the value has a toJSON method, call it to obtain a replacement value.
247 |
248 | if (
249 | value
250 | && typeof value === "object"
251 | && typeof value.toJSON === "function"
252 | ) {
253 | value = value.toJSON(key);
254 | }
255 |
256 | // If we were called with a replacer function, then call the replacer to
257 | // obtain a replacement value.
258 |
259 | if (typeof rep === "function") {
260 | value = rep.call(holder, key, value);
261 | }
262 |
263 | // What happens next depends on the value's type.
264 |
265 | switch (typeof value) {
266 | case "string":
267 | return quote(value);
268 |
269 | case "number":
270 |
271 | // JSON numbers must be finite. Encode non-finite numbers as null.
272 |
273 | return (isFinite(value))
274 | ? String(value)
275 | : "null";
276 |
277 | case "boolean":
278 | case "null":
279 |
280 | // If the value is a boolean or null, convert it to a string. Note:
281 | // typeof null does not produce "null". The case is included here in
282 | // the remote chance that this gets fixed someday.
283 |
284 | return String(value);
285 |
286 | // If the type is "object", we might be dealing with an object or an array or
287 | // null.
288 |
289 | case "object":
290 |
291 | // Due to a specification blunder in ECMAScript, typeof null is "object",
292 | // so watch out for that case.
293 |
294 | if (!value) {
295 | return "null";
296 | }
297 |
298 | // Make an array to hold the partial results of stringifying this object value.
299 |
300 | gap += indent;
301 | partial = [];
302 |
303 | // Is the value an array?
304 |
305 | if (Object.prototype.toString.apply(value) === "[object Array]") {
306 |
307 | // The value is an array. Stringify every element. Use null as a placeholder
308 | // for non-JSON values.
309 |
310 | length = value.length;
311 | for (i = 0; i < length; i += 1) {
312 | partial[i] = str(i, value) || "null";
313 | }
314 |
315 | // Join all of the elements together, separated with commas, and wrap them in
316 | // brackets.
317 |
318 | v = partial.length === 0
319 | ? "[]"
320 | : gap
321 | ? (
322 | "[\n"
323 | + gap
324 | + partial.join(",\n" + gap)
325 | + "\n"
326 | + mind
327 | + "]"
328 | )
329 | : "[" + partial.join(",") + "]";
330 | gap = mind;
331 | return v;
332 | }
333 |
334 | // If the replacer is an array, use it to select the members to be stringified.
335 |
336 | if (rep && typeof rep === "object") {
337 | length = rep.length;
338 | for (i = 0; i < length; i += 1) {
339 | if (typeof rep[i] === "string") {
340 | k = rep[i];
341 | v = str(k, value);
342 | if (v) {
343 | partial.push(quote(k) + (
344 | (gap)
345 | ? ": "
346 | : ":"
347 | ) + v);
348 | }
349 | }
350 | }
351 | } else {
352 |
353 | // Otherwise, iterate through all of the keys in the object.
354 |
355 | for (k in value) {
356 | if (Object.prototype.hasOwnProperty.call(value, k)) {
357 | v = str(k, value);
358 | if (v) {
359 | partial.push(quote(k) + (
360 | (gap)
361 | ? ": "
362 | : ":"
363 | ) + v);
364 | }
365 | }
366 | }
367 | }
368 |
369 | // Join all of the member texts together, separated with commas,
370 | // and wrap them in braces.
371 |
372 | v = partial.length === 0
373 | ? "{}"
374 | : gap
375 | ? "{\n" + gap + partial.join(",\n" + gap) + "\n" + mind + "}"
376 | : "{" + partial.join(",") + "}";
377 | gap = mind;
378 | return v;
379 | }
380 | }
381 |
382 | // If the JSON object does not yet have a stringify method, give it one.
383 |
384 | if (typeof JSON.stringify !== "function") {
385 | meta = { // table of character substitutions
386 | "\b": "\\b",
387 | "\t": "\\t",
388 | "\n": "\\n",
389 | "\f": "\\f",
390 | "\r": "\\r",
391 | "\"": "\\\"",
392 | "\\": "\\\\"
393 | };
394 | JSON.stringify = function (value, replacer, space) {
395 |
396 | // The stringify method takes a value and an optional replacer, and an optional
397 | // space parameter, and returns a JSON text. The replacer can be a function
398 | // that can replace values, or an array of strings that will select the keys.
399 | // A default replacer method can be provided. Use of the space parameter can
400 | // produce text that is more easily readable.
401 |
402 | var i;
403 | gap = "";
404 | indent = "";
405 |
406 | // If the space parameter is a number, make an indent string containing that
407 | // many spaces.
408 |
409 | if (typeof space === "number") {
410 | for (i = 0; i < space; i += 1) {
411 | indent += " ";
412 | }
413 |
414 | // If the space parameter is a string, it will be used as the indent string.
415 |
416 | } else if (typeof space === "string") {
417 | indent = space;
418 | }
419 |
420 | // If there is a replacer, it must be a function or an array.
421 | // Otherwise, throw an error.
422 |
423 | rep = replacer;
424 | if (replacer && typeof replacer !== "function" && (
425 | typeof replacer !== "object"
426 | || typeof replacer.length !== "number"
427 | )) {
428 | throw new Error("JSON.stringify");
429 | }
430 |
431 | // Make a fake root object containing our value under the key of "".
432 | // Return the result of stringifying the value.
433 |
434 | return str("", {"": value});
435 | };
436 | }
437 |
438 |
439 | // If the JSON object does not yet have a parse method, give it one.
440 |
441 | if (typeof JSON.parse !== "function") {
442 | JSON.parse = function (text, reviver) {
443 |
444 | // The parse method takes a text and an optional reviver function, and returns
445 | // a JavaScript value if the text is a valid JSON text.
446 |
447 | var j;
448 |
449 | function walk(holder, key) {
450 |
451 | // The walk method is used to recursively walk the resulting structure so
452 | // that modifications can be made.
453 |
454 | var k;
455 | var v;
456 | var value = holder[key];
457 | if (value && typeof value === "object") {
458 | for (k in value) {
459 | if (Object.prototype.hasOwnProperty.call(value, k)) {
460 | v = walk(value, k);
461 | if (v !== undefined) {
462 | value[k] = v;
463 | } else {
464 | delete value[k];
465 | }
466 | }
467 | }
468 | }
469 | return reviver.call(holder, key, value);
470 | }
471 |
472 |
473 | // Parsing happens in four stages. In the first stage, we replace certain
474 | // Unicode characters with escape sequences. JavaScript handles many characters
475 | // incorrectly, either silently deleting them, or treating them as line endings.
476 |
477 | text = String(text);
478 | rx_dangerous.lastIndex = 0;
479 | if (rx_dangerous.test(text)) {
480 | text = text.replace(rx_dangerous, function (a) {
481 | return (
482 | "\\u"
483 | + ("0000" + a.charCodeAt(0).toString(16)).slice(-4)
484 | );
485 | });
486 | }
487 |
488 | // In the second stage, we run the text against regular expressions that look
489 | // for non-JSON patterns. We are especially concerned with "()" and "new"
490 | // because they can cause invocation, and "=" because it can cause mutation.
491 | // But just to be safe, we want to reject all unexpected forms.
492 |
493 | // We split the second stage into 4 regexp operations in order to work around
494 | // crippling inefficiencies in IE's and Safari's regexp engines. First we
495 | // replace the JSON backslash pairs with "@" (a non-JSON character). Second, we
496 | // replace all simple value tokens with "]" characters. Third, we delete all
497 | // open brackets that follow a colon or comma or that begin the text. Finally,
498 | // we look to see that the remaining characters are only whitespace or "]" or
499 | // "," or ":" or "{" or "}". If that is so, then the text is safe for eval.
500 |
501 | if (
502 | rx_one.test(
503 | text
504 | .replace(rx_two, "@")
505 | .replace(rx_three, "]")
506 | .replace(rx_four, "")
507 | )
508 | ) {
509 |
510 | // In the third stage we use the eval function to compile the text into a
511 | // JavaScript structure. The "{" operator is subject to a syntactic ambiguity
512 | // in JavaScript: it can begin a block or an object literal. We wrap the text
513 | // in parens to eliminate the ambiguity.
514 |
515 | j = eval("(" + text + ")");
516 |
517 | // In the optional fourth stage, we recursively walk the new structure, passing
518 | // each name/value pair to a reviver function for possible transformation.
519 |
520 | return (typeof reviver === "function")
521 | ? walk({"": j}, "")
522 | : j;
523 | }
524 |
525 | // If the text is not JSON parseable, then a SyntaxError is thrown.
526 |
527 | throw new SyntaxError("JSON.parse");
528 | };
529 | }
530 | }());
--------------------------------------------------------------------------------
/data/graph.js:
--------------------------------------------------------------------------------
1 | var nodeDataArray = [
2 | { key: "Short Code", color: "lightgreen" },
3 | { key: "Superplan", color: "lightgreen" },
4 | { key: "ALGAE", color: "lightgreen" },
5 | { key: "Intermediate Programming Language", color: "lightgreen" },
6 | { key: "Boehm unnamed coding system", color: "lightgreen" },
7 | { key: "Klammerausdrücke", color: "lightgreen" },
8 | { key: "Stanislaus", color: "lightgreen" },
9 | { key: "Sort Merge Generator", color: "lightgreen" },
10 | { key: "A-0", color: "lightgreen" },
11 | { key: "Glennie Autocode", color: "lightgreen" },
12 | { key: "Operator programming", color: "lightgreen" },
13 | { key: "Editing Generator", color: "lightgreen" },
14 | { key: "COMPOOL", color: "lightgreen" },
15 | { key: "Speedcoding", color: "lightgreen" },
16 | { key: "READ/PRINT", color: "lightgreen" },
17 | { key: "Laning and Zierler system", color: "lightgreen" },
18 | { key: "Mark I Autocode", color: "lightgreen" },
19 | { key: "FORTRAN", color: "lightgreen" },
20 | { key: "ARITH-MATIC", color: "lightgreen" },
21 | { key: "MATH-MATIC", color: "lightgreen" },
22 | { key: "MATRIX MATH", color: "lightgreen" },
23 | { key: "IPL I", color: "lightgreen" },
24 | { key: "Address programming language", color: "lightgreen" },
25 | { key: "FLOW-MATIC", color: "lightgreen" },
26 | { key: "BACAIC", color: "lightgreen" },
27 | { key: "PACT I", color: "lightgreen" },
28 | { key: "Freiburger Code", color: "lightgreen" },
29 | { key: "Sequentielle Formelübersetzung", color: "lightgreen" },
30 | { key: "IT", color: "lightgreen" },
31 | { key: "PRINT", color: "lightgreen" },
32 | { key: "IPL II", color: "lightgreen" },
33 | { key: "LISP", color: "lightgreen" },
34 | { key: "COMTRAN", color: "lightgreen" },
35 | { key: "GEORGE", color: "lightgreen" },
36 | { key: "FORTRAN I", color: "lightgreen" },
37 | { key: "UNICODE", color: "lightgreen" },
38 | { key: "COMIT", color: "lightgreen" },
39 | { key: "FORTRAN II", color: "lightgreen" },
40 | { key: "ALGOL 58", color: "lightgreen" },
41 | { key: "IPL V", color: "lightgreen" },
42 | { key: "APT", color: "lightgreen" },
43 | { key: "FACT", color: "lightgreen" },
44 | { key: "COBOL", color: "lightgreen" },
45 | { key: "JOVIAL", color: "lightgreen" },
46 | { key: "MAD – Michigan Algorithm Decoder", color: "lightgreen" },
47 | { key: "TRAC", color: "lightgreen" },
48 | { key: "ALGOL 60", color: "lightgreen" },
49 | { key: "COBOL 61", color: "lightgreen" },
50 | { key: "GPSS", color: "lightgreen" },
51 | { key: "FORTRAN IV", color: "lightgreen" },
52 | { key: "APL", color: "lightgreen" },
53 | { key: "Simula", color: "lightgreen" },
54 | { key: "SNOBOL", color: "lightgreen" },
55 | { key: "Combined Programming Language", color: "lightgreen" },
56 | { key: "SNOBOL3", color: "lightgreen" },
57 | { key: "ALGOL 68", color: "lightgreen" },
58 | { key: "JOSS I", color: "lightgreen" },
59 | { key: "MIMIC", color: "lightgreen" },
60 | { key: "COWSEL", color: "lightgreen" },
61 | { key: "PL/I", color: "lightgreen" },
62 | { key: "Basic Assembly Language", color: "lightgreen" },
63 | { key: "BASIC", color: "lightgreen" },
64 | { key: "IBM RPG", color: "lightgreen" },
65 | { key: "Mark-IV", color: "lightgreen" },
66 | { key: "Speakeasy-2", color: "lightgreen" },
67 | { key: "P′′", color: "lightgreen" },
68 | { key: "IITRAN", color: "lightgreen" },
69 | { key: "RPG II", color: "lightgreen" },
70 | { key: "MAD/I", color: "lightgreen" },
71 | { key: "TELCOMP", color: "lightgreen" },
72 | { key: "Atlas Autocode", color: "lightgreen" },
73 | { key: "PL360", color: "lightgreen" },
74 | { key: "JOSS II", color: "lightgreen" },
75 | { key: "ALGOL W", color: "lightgreen" },
76 | { key: "FORTRAN 66", color: "lightgreen" },
77 | { key: "ISWIM", color: "lightgreen" },
78 | { key: "CORAL 66", color: "lightgreen" },
79 | { key: "BCPL", color: "lightgreen" },
80 | { key: "MUMPS", color: "lightgreen" },
81 | { key: "Simula 67", color: "lightgreen" },
82 | { key: "Interlisp", color: "lightgreen" },
83 | { key: "EXAPT", color: "lightgreen" },
84 | { key: "SNOBOL4", color: "lightgreen" },
85 | { key: "XPL", color: "lightgreen" },
86 | { key: "POP-1", color: "lightgreen" },
87 | { key: "DIBOL-8", color: "lightgreen" },
88 | { key: "Forth", color: "lightgreen" },
89 | { key: "Logo", color: "lightgreen" },
90 | { key: "MAPPER", color: "lightgreen" },
91 | { key: "REFAL", color: "lightgreen" },
92 | { key: "TTM", color: "lightgreen" },
93 | { key: "PILOT", color: "lightgreen" },
94 | { key: "PL/S", color: "lightgreen" },
95 | { key: "B", color: "lightgreen" },
96 | { key: "PPL", color: "lightgreen" },
97 | { key: "SETL", color: "lightgreen" },
98 | { key: "TUTOR", color: "lightgreen" },
99 | { key: "Edinburgh IMP", color: "lightgreen" },
100 | { key: "POP-2", color: "lightgreen" },
101 | { key: "SAIL", color: "lightgreen" },
102 | { key: "Pascal", color: "lightgreen" },
103 | { key: "BLISS", color: "lightgreen" },
104 | { key: "KRL", color: "lightgreen" },
105 | { key: "CDL", color: "lightgreen" },
106 | { key: "Smalltalk-72", color: "lightgreen" },
107 | { key: "PL/M", color: "lightgreen" },
108 | { key: "C", color: "lightgreen" },
109 | { key: "INTERCAL", color: "lightgreen" },
110 | { key: "Prolog", color: "lightgreen" },
111 | { key: "SQL", color: "lightgreen" },
112 | { key: "SASL", color: "lightgreen" },
113 | { key: "COMAL", color: "lightgreen" },
114 | { key: "ML", color: "lightgreen" },
115 | { key: "LIS", color: "lightgreen" },
116 | { key: "Speakeasy-3", color: "lightgreen" },
117 | { key: "CLU", color: "lightgreen" },
118 | { key: "GRASS", color: "lightgreen" },
119 | { key: "BASIC FOUR", color: "lightgreen" },
120 | { key: "PROSE modeling language", color: "lightgreen" },
121 | { key: "sed", color: "lightgreen" },
122 | { key: "ABC", color: "lightgreen" },
123 | { key: "Irvine Dataflow", color: "lightgreen" },
124 | { key: "PROSE modeling language Time-Sharing Version", color: "lightgreen" },
125 | { key: "Scheme", color: "lightgreen" },
126 | { key: "Altair BASIC", color: "lightgreen" },
127 | { key: "CS-4", color: "lightgreen" },
128 | { key: "Modula", color: "lightgreen" },
129 | { key: "Plus", color: "lightgreen" },
130 | { key: "Smalltalk-76", color: "lightgreen" },
131 | { key: "Mesa", color: "lightgreen" },
132 | { key: "Ratfor", color: "lightgreen" },
133 | { key: "S", color: "lightgreen" },
134 | { key: "SAS", color: "lightgreen" },
135 | { key: "Integer BASIC", color: "lightgreen" },
136 | { key: "FP", color: "lightgreen" },
137 | { key: "Bourne Shell", color: "lightgreen" },
138 | { key: "Commodore BASIC", color: "lightgreen" },
139 | { key: "IDL", color: "lightgreen" },
140 | { key: "Standard MUMPS", color: "lightgreen" },
141 | { key: "Icon", color: "lightgreen" },
142 | { key: "Euclid", color: "lightgreen" },
143 | { key: "Applesoft BASIC", color: "lightgreen" },
144 | { key: "RAPT", color: "lightgreen" },
145 | { key: "C shell", color: "lightgreen" },
146 | { key: "RPG III", color: "lightgreen" },
147 | { key: "HAL/S", color: "lightgreen" },
148 | { key: "Applesoft II BASIC", color: "lightgreen" },
149 | { key: "MATLAB", color: "lightgreen" },
150 | { key: "SMALL", color: "lightgreen" },
151 | { key: "VisiCalc", color: "lightgreen" },
152 | { key: "TI BASIC", color: "lightgreen" },
153 | { key: "Modula-2", color: "lightgreen" },
154 | { key: "REXX", color: "lightgreen" },
155 | { key: "AWK", color: "lightgreen" },
156 | { key: "Vulcan dBase-II", color: "lightgreen" },
157 | { key: "Ada 80", color: "lightgreen" },
158 | { key: "C with classes", color: "lightgreen" },
159 | { key: "Applesoft III", color: "lightgreen" },
160 | { key: "Apple III Microsoft BASIC", color: "lightgreen" },
161 | { key: "CBASIC", color: "lightgreen" },
162 | { key: "Smalltalk-80", color: "lightgreen" },
163 | { key: "TI Extended BASIC", color: "lightgreen" },
164 | { key: "BBC BASIC", color: "lightgreen" },
165 | { key: "IBM BASICA", color: "lightgreen" },
166 | { key: "Speakeasy-IV", color: "lightgreen" },
167 | { key: "Draco", color: "lightgreen" },
168 | { key: "PostScript", color: "lightgreen" },
169 | { key: "Turing", color: "lightgreen" },
170 | { key: "GW-BASIC", color: "lightgreen" },
171 | { key: "Turbo Pascal", color: "lightgreen" },
172 | { key: "Ada 83", color: "lightgreen" },
173 | { key: "Objective-C", color: "lightgreen" },
174 | { key: "C++", color: "lightgreen" },
175 | { key: "True BASIC", color: "lightgreen" },
176 | { key: "occam", color: "lightgreen" },
177 | { key: "ABAP", color: "lightgreen" },
178 | { key: "KornShell", color: "lightgreen" },
179 | { key: "Clascal", color: "lightgreen" },
180 | { key: "CLIPPER", color: "lightgreen" },
181 | { key: "Common Lisp", color: "lightgreen" },
182 | { key: "Coq", color: "lightgreen" },
183 | { key: "RPL", color: "lightgreen" },
184 | { key: "Standard ML", color: "lightgreen" },
185 | { key: "Redcode", color: "lightgreen" },
186 | { key: "OPL", color: "lightgreen" },
187 | { key: "PARADOX", color: "lightgreen" },
188 | { key: "QuickBASIC", color: "lightgreen" },
189 | { key: "Clarion", color: "lightgreen" },
190 | { key: "CorVision", color: "lightgreen" },
191 | { key: "Eiffel", color: "lightgreen" },
192 | { key: "GFA BASIC", color: "lightgreen" },
193 | { key: "Informix-4GL", color: "lightgreen" },
194 | { key: "LabVIEW", color: "lightgreen" },
195 | { key: "Miranda", color: "lightgreen" },
196 | { key: "Object Pascal", color: "lightgreen" },
197 | { key: "PROMAL", color: "lightgreen" },
198 | { key: "Erlang", color: "lightgreen" },
199 | { key: "Ada ISO 8652:1987", color: "lightgreen" },
200 | { key: "Self", color: "lightgreen" },
201 | { key: "occam 2", color: "lightgreen" },
202 | { key: "HyperTalk", color: "lightgreen" },
203 | { key: "Clean", color: "lightgreen" },
204 | { key: "Perl", color: "lightgreen" },
205 | { key: "Oberon", color: "lightgreen" },
206 | { key: "Turbo Basic", color: "lightgreen" },
207 | { key: "Mathematica", color: "lightgreen" },
208 | { key: "Octave", color: "lightgreen" },
209 | { key: "Tcl", color: "lightgreen" },
210 | { key: "STOS BASIC", color: "lightgreen" },
211 | { key: "Actor", color: "lightgreen" },
212 | { key: "Object REXX", color: "lightgreen" },
213 | { key: "SPARK", color: "lightgreen" },
214 | { key: "A+", color: "lightgreen" },
215 | { key: "Hamilton C shell", color: "lightgreen" },
216 | { key: "C90", color: "lightgreen" },
217 | { key: "Turbo Pascal OOP", color: "lightgreen" },
218 | { key: "Modula-3", color: "lightgreen" },
219 | { key: "PowerBASIC", color: "lightgreen" },
220 | { key: "VisSim", color: "lightgreen" },
221 | { key: "LPC", color: "lightgreen" },
222 | { key: "Bash", color: "lightgreen" },
223 | { key: "Magik", color: "lightgreen" },
224 | { key: "Sather", color: "lightgreen" },
225 | { key: "AMOS BASIC", color: "lightgreen" },
226 | { key: "AMPL", color: "lightgreen" },
227 | { key: "Object Oberon", color: "lightgreen" },
228 | { key: "J", color: "lightgreen" },
229 | { key: "Haskell", color: "lightgreen" },
230 | { key: "EuLisp", color: "lightgreen" },
231 | { key: "Z shell", color: "lightgreen" },
232 | { key: "SKILL", color: "lightgreen" },
233 | { key: "GNU E", color: "lightgreen" },
234 | { key: "Oberon-2", color: "lightgreen" },
235 | { key: "Oz", color: "lightgreen" },
236 | { key: "Q", color: "lightgreen" },
237 | { key: "Python", color: "lightgreen" },
238 | { key: "Visual Basic", color: "lightgreen" },
239 | { key: "Borland Pascal", color: "lightgreen" },
240 | { key: "Dylan", color: "lightgreen" },
241 | { key: "S-Lang", color: "lightgreen" },
242 | { key: "Amiga E", color: "lightgreen" },
243 | { key: "Brainfuck", color: "lightgreen" },
244 | { key: "LiveCode Transcript", color: "lightgreen" },
245 | { key: "AppleScript", color: "lightgreen" },
246 | { key: "K", color: "lightgreen" },
247 | { key: "Lua", color: "lightgreen" },
248 | { key: "R", color: "lightgreen" },
249 | { key: "ZPL", color: "lightgreen" },
250 | { key: "NewtonScript", color: "lightgreen" },
251 | { key: "Euphoria", color: "lightgreen" },
252 | { key: "Claire", color: "lightgreen" },
253 | { key: "ANSI Common Lisp", color: "lightgreen" },
254 | { key: "RAPID", color: "lightgreen" },
255 | { key: "Pike", color: "lightgreen" },
256 | { key: "ANS Forth", color: "lightgreen" },
257 | { key: "Ada 95", color: "lightgreen" },
258 | { key: "Borland Delphi", color: "lightgreen" },
259 | { key: "ColdFusion", color: "lightgreen" },
260 | { key: "Java", color: "lightgreen" },
261 | { key: "LiveScript", color: "lightgreen" },
262 | { key: "Mercury", color: "lightgreen" },
263 | { key: "PHP", color: "lightgreen" },
264 | { key: "Ruby", color: "lightgreen" },
265 | { key: "JavaScript", color: "lightgreen" },
266 | { key: "Racket", color: "lightgreen" },
267 | { key: "CSS", color: "lightgreen" },
268 | { key: "Curl", color: "lightgreen" },
269 | { key: "Lasso", color: "lightgreen" },
270 | { key: "PDL", color: "lightgreen" },
271 | { key: "VBScript", color: "lightgreen" },
272 | { key: "OCaml", color: "lightgreen" },
273 | { key: "NetRexx", color: "lightgreen" },
274 | { key: "Component Pascal", color: "lightgreen" },
275 | { key: "E", color: "lightgreen" },
276 | { key: "Pico", color: "lightgreen" },
277 | { key: "Squeak", color: "lightgreen" },
278 | { key: "ECMAScript", color: "lightgreen" },
279 | { key: "F-Script", color: "lightgreen" },
280 | { key: "ISLISP", color: "lightgreen" },
281 | { key: "Tea", color: "lightgreen" },
282 | { key: "REBOL", color: "lightgreen" },
283 | { key: "Logtalk", color: "lightgreen" },
284 | { key: "ActionScript", color: "lightgreen" },
285 | { key: "Standard C++", color: "lightgreen" },
286 | { key: "M2001", color: "lightgreen" },
287 | { key: "PureBasic", color: "lightgreen" },
288 | { key: "UnrealScript", color: "lightgreen" },
289 | { key: "XSLT", color: "lightgreen" },
290 | { key: "Xojo", color: "lightgreen" },
291 | { key: "C99", color: "lightgreen" },
292 | { key: "Gambas", color: "lightgreen" },
293 | { key: "Game Maker Language", color: "lightgreen" },
294 | { key: "Harbour", color: "lightgreen" },
295 | { key: "Join Java", color: "lightgreen" },
296 | { key: "DarkBASIC", color: "lightgreen" },
297 | { key: "C#", color: "lightgreen" },
298 | { key: "Joy", color: "lightgreen" },
299 | { key: "AspectJ", color: "lightgreen" },
300 | { key: "D", color: "lightgreen" },
301 | { key: "Processing", color: "lightgreen" },
302 | { key: "Visual Basic .NET", color: "lightgreen" },
303 | { key: "GDScript", color: "lightgreen" },
304 | { key: "Shakespeare Programming Language", color: "lightgreen" },
305 | { key: "Io", color: "lightgreen" },
306 | { key: "Gosu", color: "lightgreen" },
307 | { key: "Scratch", color: "lightgreen" },
308 | { key: "Nix", color: "lightgreen" },
309 | { key: "Nemerle", color: "lightgreen" },
310 | { key: "Factor", color: "lightgreen" },
311 | { key: "Scala", color: "lightgreen" },
312 | { key: "C++03", color: "lightgreen" },
313 | { key: "Squirrel", color: "lightgreen" },
314 | { key: "Boo", color: "lightgreen" },
315 | { key: "Subtext", color: "lightgreen" },
316 | { key: "Alma-0", color: "lightgreen" },
317 | { key: "FreeBASIC", color: "lightgreen" },
318 | { key: "Groovy", color: "lightgreen" },
319 | { key: "Little b", color: "lightgreen" },
320 | { key: "Fantom", color: "lightgreen" },
321 | { key: "F#", color: "lightgreen" },
322 | { key: "Haxe", color: "lightgreen" },
323 | { key: "Oxygene", color: "lightgreen" },
324 | { key: "PWCT", color: "lightgreen" },
325 | { key: "Seed7", color: "lightgreen" },
326 | { key: "fish", color: "lightgreen" },
327 | { key: "Cobra", color: "lightgreen" },
328 | { key: "Windows PowerShell", color: "lightgreen" },
329 | { key: "OptimJ", color: "lightgreen" },
330 | { key: "Fortress", color: "lightgreen" },
331 | { key: "Vala", color: "lightgreen" },
332 | { key: "Ada 2005", color: "lightgreen" },
333 | { key: "Agda", color: "lightgreen" },
334 | { key: "QB64", color: "lightgreen" },
335 | { key: "Clojure", color: "lightgreen" },
336 | { key: "LOLCODE", color: "lightgreen" },
337 | { key: "Oberon-07", color: "lightgreen" },
338 | { key: "Swift", color: "lightgreen" },
339 | { key: "Nim", color: "lightgreen" },
340 | { key: "Genie", color: "lightgreen" },
341 | { key: "Pure", color: "lightgreen" },
342 | { key: "Chapel", color: "lightgreen" },
343 | { key: "Go", color: "lightgreen" },
344 | { key: "CoffeeScript", color: "lightgreen" },
345 | { key: "Idris", color: "lightgreen" },
346 | { key: "Parasail", color: "lightgreen" },
347 | { key: "Whiley", color: "lightgreen" },
348 | { key: "Dafny", color: "lightgreen" },
349 | { key: "Rust", color: "lightgreen" },
350 | { key: "C11", color: "lightgreen" },
351 | { key: "Ceylon", color: "lightgreen" },
352 | { key: "Dart", color: "lightgreen" },
353 | { key: "C++11", color: "lightgreen" },
354 | { key: "Kotlin", color: "lightgreen" },
355 | { key: "Red", color: "lightgreen" },
356 | { key: "Opa", color: "lightgreen" },
357 | { key: "Elixir", color: "lightgreen" },
358 | { key: "Elm", color: "lightgreen" },
359 | { key: "TypeScript", color: "lightgreen" },
360 | { key: "Julia", color: "lightgreen" },
361 | { key: "P", color: "lightgreen" },
362 | { key: "Ada 2012", color: "lightgreen" },
363 | { key: "P4", color: "lightgreen" },
364 | { key: "Hopscotch", color: "lightgreen" },
365 | { key: "Cuneiform", color: "lightgreen" },
366 | { key: "Lean", color: "lightgreen" },
367 | { key: "Hy", color: "lightgreen" },
368 | { key: "Jai", color: "lightgreen" },
369 | { key: "Crystal", color: "lightgreen" },
370 | { key: "Hack", color: "lightgreen" },
371 | { key: "C++14", color: "lightgreen" },
372 | { key: "Solidity", color: "lightgreen" },
373 | { key: "Raku", color: "lightgreen" },
374 | { key: "Zig", color: "lightgreen" },
375 | { key: "Reason", color: "lightgreen" },
376 | { key: "Ring", color: "lightgreen" },
377 | { key: "C++17", color: "lightgreen" },
378 | { key: "Ballerina", color: "lightgreen" },
379 | { key: "Q#", color: "lightgreen" },
380 | { key: "C17", color: "lightgreen" },
381 | { key: "Fortran 2018", color: "lightgreen" },
382 | { key: "Bosque", color: "lightgreen" },
383 | { key: "C++20", color: "lightgreen" },
384 | { key: "Microsoft Power Fx", color: "lightgreen" },
385 | { key: "Carbon", color: "lightgreen" },
386 | { key: "Mojo", color: "lightgreen" },
387 | ];
388 | var linkDataArray = [
389 | { from: "Short Code", to: "Short Code", color: "black" },
390 | { from: "Plankalkül", to: "Superplan", color: "black" },
391 | { from: "Short Code", to: "Intermediate Programming Language", color: "black" },
392 | { from: "CPC Coding scheme", to: "Boehm unnamed coding system", color: "black" },
393 | { from: "Plankalkül", to: "Klammerausdrücke", color: "black" },
394 | { from: "Short Code", to: "Short Code", color: "black" },
395 | { from: "Short Code", to: "A-0", color: "black" },
396 | { from: "CPC Coding scheme", to: "Glennie Autocode", color: "black" },
397 | { from: "MESM", to: "Operator programming", color: "black" },
398 | { from: "SORT/MERGE", to: "Editing Generator", color: "black" },
399 | { from: "Glennie Autocode", to: "Mark I Autocode", color: "black" },
400 | { from: "Speedcoding", to: "FORTRAN", color: "black" },
401 | { from: "A-0", to: "ARITH-MATIC", color: "black" },
402 | { from: "A-0", to: "MATH-MATIC", color: "black" },
403 | { from: "Operator programming - Alexey Andreevich Lyapunov & Kateryna Yushchenko & MESM", to: "Address programming language", color: "black" },
404 | { from: "A-0", to: "FLOW-MATIC", color: "black" },
405 | { from: "FORTRAN", to: "PACT I", color: "black" },
406 | { from: "A-2", to: "PACT I", color: "black" },
407 | { from: "—", to: "Freiburger Code", color: "black" },
408 | { from: "Boehm", to: "Sequentielle Formelübersetzung", color: "black" },
409 | { from: "Laning and Zierler", to: "IT", color: "black" },
410 | { from: "IPL I", to: "IPL II", color: "black" },
411 | { from: "IPL", to: "LISP", color: "black" },
412 | { from: "FLOW-MATIC", to: "COMTRAN", color: "black" },
413 | { from: "FORTRAN", to: "FORTRAN I", color: "black" },
414 | { from: "MATH-MATIC", to: "UNICODE", color: "black" },
415 | { from: "FORTRAN I", to: "FORTRAN II", color: "black" },
416 | { from: "FORTRAN", to: "ALGOL 58", color: "black" },
417 | { from: "IT", to: "ALGOL 58", color: "black" },
418 | { from: "Sequentielle Formelübersetzung", to: "ALGOL 58", color: "black" },
419 | { from: "IPL II", to: "IPL V", color: "black" },
420 | { from: "FLOW-MATIC", to: "COBOL", color: "black" },
421 | { from: "COMTRAN", to: "COBOL", color: "black" },
422 | { from: "FACT", to: "COBOL", color: "black" },
423 | { from: "ALGOL 58", to: "JOVIAL", color: "black" },
424 | { from: "IPL", to: "LISP", color: "black" },
425 | { from: "ALGOL 58", to: "MAD – Michigan Algorithm Decoder", color: "black" },
426 | { from: "ALGOL 58", to: "ALGOL 60", color: "black" },
427 | { from: "FLOW-MATIC", to: "COBOL 61", color: "black" },
428 | { from: "COMTRAN", to: "COBOL 61", color: "black" },
429 | { from: "FORTRAN II", to: "FORTRAN IV", color: "black" },
430 | { from: "ALGOL 60", to: "Simula", color: "black" },
431 | { from: "FORTRAN II", to: "SNOBOL", color: "black" },
432 | { from: "COMIT", to: "SNOBOL", color: "black" },
433 | { from: "ALGOL 60", to: "Combined Programming Language", color: "black" },
434 | { from: "SNOBOL", to: "SNOBOL3", color: "black" },
435 | { from: "ALGOL 60", to: "ALGOL 68", color: "black" },
436 | { from: "ALGOL 58", to: "JOSS I", color: "black" },
437 | { from: "MIDAS", to: "MIMIC", color: "black" },
438 | { from: "CPL", to: "COWSEL", color: "black" },
439 | { from: "LISP", to: "COWSEL", color: "black" },
440 | { from: "ALGOL 60", to: "PL/I", color: "black" },
441 | { from: "COBOL", to: "PL/I", color: "black" },
442 | { from: "FORTRAN", to: "PL/I", color: "black" },
443 | { from: "Assembly language", to: "Basic Assembly Language", color: "black" },
444 | { from: "FORTRAN II", to: "BASIC", color: "black" },
445 | { from: "JOSS", to: "BASIC", color: "black" },
446 | { from: "FARGO", to: "IBM RPG", color: "black" },
447 | { from: "Speakeasy", to: "Speakeasy-2", color: "black" },
448 | { from: "FARGO", to: "RPG II", color: "black" },
449 | { from: "RPG", to: "RPG II", color: "black" },
450 | { from: "MAD", to: "MAD/I", color: "black" },
451 | { from: "ALGOL 60", to: "MAD/I", color: "black" },
452 | { from: "PL/I", to: "MAD/I", color: "black" },
453 | { from: "JOSS", to: "TELCOMP", color: "black" },
454 | { from: "ALGOL 60", to: "Atlas Autocode", color: "black" },
455 | { from: "Autocode", to: "Atlas Autocode", color: "black" },
456 | { from: "ALGOL 60", to: "PL360", color: "black" },
457 | { from: "ESPOL", to: "PL360", color: "black" },
458 | { from: "JOSS I", to: "JOSS II", color: "black" },
459 | { from: "ALGOL 60", to: "ALGOL W", color: "black" },
460 | { from: "FORTRAN IV", to: "FORTRAN 66", color: "black" },
461 | { from: "LISP", to: "ISWIM", color: "black" },
462 | { from: "ALGOL 60", to: "CORAL 66", color: "black" },
463 | { from: "CPL", to: "BCPL", color: "black" },
464 | { from: "FORTRAN", to: "MUMPS", color: "black" },
465 | { from: "TELCOMP", to: "MUMPS", color: "black" },
466 | { from: "ALGOL 60", to: "Simula 67", color: "black" },
467 | { from: "Lisp", to: "Interlisp", color: "black" },
468 | { from: "APT", to: "EXAPT", color: "black" },
469 | { from: "SNOBOL3", to: "SNOBOL4", color: "black" },
470 | { from: "PL/I", to: "XPL", color: "black" },
471 | { from: "ALGOL 60", to: "ALGOL 68", color: "black" },
472 | { from: "COWSEL", to: "POP-1", color: "black" },
473 | { from: "DIBOL", to: "DIBOL-8", color: "black" },
474 | { from: "LISP", to: "Logo", color: "black" },
475 | { from: "CRT RPS", to: "MAPPER", color: "black" },
476 | { from: "GAP", to: "TTM", color: "black" },
477 | { from: "GPM", to: "TTM", color: "black" },
478 | { from: "Computest", to: "PILOT", color: "black" },
479 | { from: "ALGOL 60", to: "PL360", color: "black" },
480 | { from: "ESPOL", to: "PL360", color: "black" },
481 | { from: "Assembly language", to: "PL/S", color: "black" },
482 | { from: "ALGOL 60", to: "PL/I", color: "black" },
483 | { from: "COBOL", to: "PL/I", color: "black" },
484 | { from: "FORTRAN", to: "PL/I", color: "black" },
485 | { from: "BCPL", to: "B", color: "black" },
486 | { from: "ALGOL 60", to: "SETL", color: "black" },
487 | { from: "ALGOL 60", to: "Edinburgh IMP", color: "black" },
488 | { from: "Autocode", to: "Edinburgh IMP", color: "black" },
489 | { from: "Atlas Autocode", to: "Edinburgh IMP", color: "black" },
490 | { from: "POP-1", to: "POP-2", color: "black" },
491 | { from: "ALGOL 60", to: "SAIL", color: "black" },
492 | { from: "ALGOL 60", to: "Pascal", color: "black" },
493 | { from: "ALGOL W", to: "Pascal", color: "black" },
494 | { from: "ALGOL", to: "BLISS", color: "black" },
495 | { from: "KM", to: "KRL", color: "black" },
496 | { from: "FRL", to: "KRL", color: "black" },
497 | { from: "Simula 67", to: "Smalltalk-72", color: "black" },
498 | { from: "PL/I", to: "PL/M", color: "black" },
499 | { from: "ALGOL", to: "PL/M", color: "black" },
500 | { from: "XPL", to: "PL/M", color: "black" },
501 | { from: "B", to: "C", color: "black" },
502 | { from: "BCPL", to: "C", color: "black" },
503 | { from: "ALGOL 68", to: "C", color: "black" },
504 | { from: "2-level W-Grammar", to: "Prolog", color: "black" },
505 | { from: "ALPHA", to: "SQL", color: "black" },
506 | { from: "Quel", to: "SQL", color: "black" },
507 | { from: "ISWIM", to: "SASL", color: "black" },
508 | { from: "Pascal", to: "COMAL", color: "black" },
509 | { from: "BASIC", to: "COMAL", color: "black" },
510 | { from: "Pascal", to: "LIS", color: "black" },
511 | { from: "Sue", to: "LIS", color: "black" },
512 | { from: "Speakeasy-2", to: "Speakeasy-3", color: "black" },
513 | { from: "ALGOL 60", to: "CLU", color: "black" },
514 | { from: "Lisp", to: "CLU", color: "black" },
515 | { from: "Simula", to: "CLU", color: "black" },
516 | { from: "BASIC", to: "GRASS", color: "black" },
517 | { from: "Business BASIC", to: "BASIC FOUR", color: "black" },
518 | { from: "SLANG", to: "PROSE modeling language", color: "black" },
519 | { from: "FORTRAN", to: "PROSE modeling language", color: "black" },
520 | { from: "ed", to: "sed", color: "black" },
521 | { from: "SETL", to: "ABC", color: "black" },
522 | { from: "SLANG", to: "PROSE modeling language Time-Sharing Version", color: "black" },
523 | { from: "FORTRAN", to: "PROSE modeling language Time-Sharing Version", color: "black" },
524 | { from: "LISP", to: "Scheme", color: "black" },
525 | { from: "BASIC", to: "Altair BASIC", color: "black" },
526 | { from: "ALGOL 68", to: "CS-4", color: "black" },
527 | { from: "BLISS", to: "CS-4", color: "black" },
528 | { from: "ECL", to: "CS-4", color: "black" },
529 | { from: "HAL", to: "CS-4", color: "black" },
530 | { from: "Pascal", to: "Modula", color: "black" },
531 | { from: "Pascal", to: "Plus", color: "black" },
532 | { from: "Sue", to: "Plus", color: "black" },
533 | { from: "Smalltalk-72", to: "Smalltalk-76", color: "black" },
534 | { from: "ALGOL", to: "Mesa", color: "black" },
535 | { from: "C", to: "Ratfor", color: "black" },
536 | { from: "FORTRAN", to: "Ratfor", color: "black" },
537 | { from: "APL", to: "S", color: "black" },
538 | { from: "PPL", to: "S", color: "black" },
539 | { from: "Scheme", to: "S", color: "black" },
540 | { from: "BASIC", to: "Integer BASIC", color: "black" },
541 | { from: "BASIC", to: "Commodore BASIC", color: "black" },
542 | { from: "Fortran", to: "IDL", color: "black" },
543 | { from: "MUMPS", to: "Standard MUMPS", color: "black" },
544 | { from: "SNOBOL", to: "Icon", color: "black" },
545 | { from: "BASIC", to: "Applesoft BASIC", color: "black" },
546 | { from: "APT", to: "RAPT", color: "black" },
547 | { from: "C", to: "C shell", color: "black" },
548 | { from: "FARGO", to: "RPG III", color: "black" },
549 | { from: "RPG", to: "RPG III", color: "black" },
550 | { from: "RPG II", to: "RPG III", color: "black" },
551 | { from: "XPL", to: "HAL/S", color: "black" },
552 | { from: "Applesoft BASIC", to: "Applesoft II BASIC", color: "black" },
553 | { from: "Fortran", to: "MATLAB", color: "black" },
554 | { from: "Algol60", to: "SMALL", color: "black" },
555 | { from: "BASIC", to: "TI BASIC", color: "black" },
556 | { from: "Modula", to: "Modula-2", color: "black" },
557 | { from: "Mesa", to: "Modula-2", color: "black" },
558 | { from: "PL/I", to: "REXX", color: "black" },
559 | { from: "BASIC", to: "REXX", color: "black" },
560 | { from: "EXEC 2", to: "REXX", color: "black" },
561 | { from: "C", to: "AWK", color: "black" },
562 | { from: "SNOBOL", to: "AWK", color: "black" },
563 | { from: "SNOBOL", to: "Icon", color: "black" },
564 | { from: "ALGOL 68", to: "Ada 80", color: "black" },
565 | { from: "Green", to: "Ada 80", color: "black" },
566 | { from: "C", to: "C with classes", color: "black" },
567 | { from: "Simula 67", to: "C with classes", color: "black" },
568 | { from: "Applesoft II BASIC", to: "Applesoft III", color: "black" },
569 | { from: "Microsoft BASIC", to: "Apple III Microsoft BASIC", color: "black" },
570 | { from: "BASIC", to: "CBASIC", color: "black" },
571 | { from: "Compiler Systems", to: "CBASIC", color: "black" },
572 | { from: "Digital Research", to: "CBASIC", color: "black" },
573 | { from: "Smalltalk-76", to: "Smalltalk-80", color: "black" },
574 | { from: "TI BASIC", to: "TI Extended BASIC", color: "black" },
575 | { from: "BASIC", to: "BBC BASIC", color: "black" },
576 | { from: "BASIC", to: "IBM BASICA", color: "black" },
577 | { from: "Speakeasy-3", to: "Speakeasy-IV", color: "black" },
578 | { from: "Pascal", to: "Draco", color: "black" },
579 | { from: "C", to: "Draco", color: "black" },
580 | { from: "ALGOL 68", to: "Draco", color: "black" },
581 | { from: "InterPress", to: "PostScript", color: "black" },
582 | { from: "Euclid", to: "Turing", color: "black" },
583 | { from: "IBM BASICA", to: "GW-BASIC", color: "black" },
584 | { from: "Pascal", to: "Turbo Pascal", color: "black" },
585 | { from: "Ada 80", to: "Ada 83", color: "black" },
586 | { from: "Green", to: "Ada 83", color: "black" },
587 | { from: "Smalltalk", to: "Objective-C", color: "black" },
588 | { from: "C", to: "Objective-C", color: "black" },
589 | { from: "C with Classes", to: "C++", color: "black" },
590 | { from: "BASIC", to: "True BASIC", color: "black" },
591 | { from: "EPL", to: "occam", color: "black" },
592 | { from: "COBOL", to: "ABAP", color: "black" },
593 | { from: "sh", to: "KornShell", color: "black" },
594 | { from: "Pascal", to: "Clascal", color: "black" },
595 | { from: "dBase", to: "CLIPPER", color: "black" },
596 | { from: "LISP", to: "Common Lisp", color: "black" },
597 | { from: "Forth", to: "RPL", color: "black" },
598 | { from: "Lisp", to: "RPL", color: "black" },
599 | { from: "ML", to: "Standard ML", color: "black" },
600 | { from: "BASIC", to: "OPL", color: "black" },
601 | { from: "dBase", to: "PARADOX", color: "black" },
602 | { from: "BASIC", to: "QuickBASIC", color: "black" },
603 | { from: "INFORM", to: "CorVision", color: "black" },
604 | { from: "Simula 67", to: "Eiffel", color: "black" },
605 | { from: "Ada", to: "Eiffel", color: "black" },
606 | { from: "BASIC", to: "GFA BASIC", color: "black" },
607 | { from: "SASL", to: "Miranda", color: "black" },
608 | { from: "Pascal", to: "Object Pascal", color: "black" },
609 | { from: "C", to: "PROMAL", color: "black" },
610 | { from: "PLEX", to: "Erlang", color: "black" },
611 | { from: "Prolog", to: "Erlang", color: "black" },
612 | { from: "Ada 83", to: "Ada ISO 8652:1987", color: "black" },
613 | { from: "Smalltalk", to: "Self", color: "black" },
614 | { from: "occam", to: "occam 2", color: "black" },
615 | { from: "C", to: "Perl", color: "black" },
616 | { from: "sed", to: "Perl", color: "black" },
617 | { from: "awk", to: "Perl", color: "black" },
618 | { from: "sh", to: "Perl", color: "black" },
619 | { from: "Modula-2", to: "Oberon", color: "black" },
620 | { from: "BASIC/Z", to: "Turbo Basic", color: "black" },
621 | { from: "MATLAB", to: "Octave", color: "black" },
622 | { from: "Awk", to: "Tcl", color: "black" },
623 | { from: "Lisp", to: "Tcl", color: "black" },
624 | { from: "BASIC", to: "STOS BASIC", color: "black" },
625 | { from: "Forth", to: "Actor", color: "black" },
626 | { from: "Smalltalk", to: "Actor", color: "black" },
627 | { from: "REXX", to: "Object REXX", color: "black" },
628 | { from: "Smalltalk", to: "Object REXX", color: "black" },
629 | { from: "Ada", to: "SPARK", color: "black" },
630 | { from: "APL", to: "A+", color: "black" },
631 | { from: "A", to: "A+", color: "black" },
632 | { from: "C shell", to: "Hamilton C shell", color: "black" },
633 | { from: "C", to: "C90", color: "black" },
634 | { from: "Turbo Pascal", to: "Turbo Pascal OOP", color: "black" },
635 | { from: "Object Pascal", to: "Turbo Pascal OOP", color: "black" },
636 | { from: "Modula-2", to: "Modula-3", color: "black" },
637 | { from: "Turbo Basic", to: "PowerBASIC", color: "black" },
638 | { from: "Bourne shell", to: "Bash", color: "black" },
639 | { from: "C shell", to: "Bash", color: "black" },
640 | { from: "KornShell", to: "Bash", color: "black" },
641 | { from: "Smalltalk", to: "Magik", color: "black" },
642 | { from: "Eiffel", to: "Sather", color: "black" },
643 | { from: "STOS BASIC", to: "AMOS BASIC", color: "black" },
644 | { from: "Oberon", to: "Object Oberon", color: "black" },
645 | { from: "APL", to: "J", color: "black" },
646 | { from: "FP", to: "J", color: "black" },
647 | { from: "Miranda", to: "Haskell", color: "black" },
648 | { from: "Clean", to: "Haskell", color: "black" },
649 | { from: "Common Lisp", to: "EuLisp", color: "black" },
650 | { from: "Scheme", to: "EuLisp", color: "black" },
651 | { from: "ksh", to: "Z shell", color: "black" },
652 | { from: "Franz Lisp", to: "SKILL", color: "black" },
653 | { from: "C++", to: "GNU E", color: "black" },
654 | { from: "Object Oberon", to: "Oberon-2", color: "black" },
655 | { from: "Prolog", to: "Oz", color: "black" },
656 | { from: "Perl", to: "Python", color: "black" },
657 | { from: "ABC", to: "Python", color: "black" },
658 | { from: "C", to: "Python", color: "black" },
659 | { from: "QuickBASIC", to: "Visual Basic", color: "black" },
660 | { from: "Turbo Pascal OOP", to: "Borland Pascal", color: "black" },
661 | { from: "Common Lisp", to: "Dylan", color: "black" },
662 | { from: "Scheme", to: "Dylan", color: "black" },
663 | { from: "PostScript", to: "S-Lang", color: "black" },
664 | { from: "Smalltalk", to: "Self", color: "black" },
665 | { from: "DEX", to: "Amiga E", color: "black" },
666 | { from: "C", to: "Amiga E", color: "black" },
667 | { from: "Modula-2", to: "Amiga E", color: "black" },
668 | { from: "P'′", to: "Brainfuck", color: "black" },
669 | { from: "HyperTalk", to: "LiveCode Transcript", color: "black" },
670 | { from: "HyperTalk", to: "AppleScript", color: "black" },
671 | { from: "APL", to: "K", color: "black" },
672 | { from: "Lisp", to: "K", color: "black" },
673 | { from: "Scheme", to: "Lua", color: "black" },
674 | { from: "SNOBOL", to: "Lua", color: "black" },
675 | { from: "Modula", to: "Lua", color: "black" },
676 | { from: "CLU", to: "Lua", color: "black" },
677 | { from: "C++", to: "Lua", color: "black" },
678 | { from: "S", to: "R", color: "black" },
679 | { from: "C", to: "ZPL", color: "black" },
680 | { from: "Self", to: "NewtonScript", color: "black" },
681 | { from: "Dylan", to: "NewtonScript", color: "black" },
682 | { from: "SNOBOL", to: "Euphoria", color: "black" },
683 | { from: "AWK", to: "Euphoria", color: "black" },
684 | { from: "ABC", to: "Euphoria", color: "black" },
685 | { from: "Icon", to: "Euphoria", color: "black" },
686 | { from: "Python", to: "Euphoria", color: "black" },
687 | { from: "Smalltalk", to: "Claire", color: "black" },
688 | { from: "SETL", to: "Claire", color: "black" },
689 | { from: "OPS5", to: "Claire", color: "black" },
690 | { from: "Lisp", to: "Claire", color: "black" },
691 | { from: "ML", to: "Claire", color: "black" },
692 | { from: "C", to: "Claire", color: "black" },
693 | { from: "LORE", to: "Claire", color: "black" },
694 | { from: "LAURE", to: "Claire", color: "black" },
695 | { from: "Common Lisp", to: "ANSI Common Lisp", color: "black" },
696 | { from: "ARLA", to: "RAPID", color: "black" },
697 | { from: "LPC", to: "Pike", color: "black" },
698 | { from: "C", to: "Pike", color: "black" },
699 | { from: "µLPC", to: "Pike", color: "black" },
700 | { from: "Forth", to: "ANS Forth", color: "black" },
701 | { from: "Ada 83", to: "Ada 95", color: "black" },
702 | { from: "Borland Pascal", to: "Borland Delphi", color: "black" },
703 | { from: "C", to: "Java", color: "black" },
704 | { from: "Simula 67", to: "Java", color: "black" },
705 | { from: "C++", to: "Java", color: "black" },
706 | { from: "Smalltalk", to: "Java", color: "black" },
707 | { from: "Ada 83", to: "Java", color: "black" },
708 | { from: "Objective-C", to: "Java", color: "black" },
709 | { from: "Mesa", to: "Java", color: "black" },
710 | { from: "Self", to: "LiveScript", color: "black" },
711 | { from: "C", to: "LiveScript", color: "black" },
712 | { from: "Scheme", to: "LiveScript", color: "black" },
713 | { from: "Prolog", to: "Mercury", color: "black" },
714 | { from: "Hope", to: "Mercury", color: "black" },
715 | { from: "Haskell", to: "Mercury", color: "black" },
716 | { from: "Perl", to: "PHP", color: "black" },
717 | { from: "Smalltalk", to: "Ruby", color: "black" },
718 | { from: "Perl", to: "Ruby", color: "black" },
719 | { from: "LiveScript", to: "JavaScript", color: "black" },
720 | { from: "Scheme", to: "Racket", color: "black" },
721 | { from: "Lisp", to: "Racket", color: "black" },
722 | { from: "SGML", to: "CSS", color: "black" },
723 | { from: "Lisp", to: "Curl", color: "black" },
724 | { from: "C++", to: "Curl", color: "black" },
725 | { from: "Tcl/Tk", to: "Curl", color: "black" },
726 | { from: "TeX", to: "Curl", color: "black" },
727 | { from: "HTML", to: "Curl", color: "black" },
728 | { from: "APL", to: "PDL", color: "black" },
729 | { from: "Perl", to: "PDL", color: "black" },
730 | { from: "Visual Basic", to: "VBScript", color: "black" },
731 | { from: "Caml Light", to: "OCaml", color: "black" },
732 | { from: "Standard ML", to: "OCaml", color: "black" },
733 | { from: "REXX", to: "NetRexx", color: "black" },
734 | { from: "Oberon-2", to: "Component Pascal", color: "black" },
735 | { from: "Joule", to: "E", color: "black" },
736 | { from: "Original-E", to: "E", color: "black" },
737 | { from: "Scheme", to: "Pico", color: "black" },
738 | { from: "Smalltalk-80", to: "Squeak", color: "black" },
739 | { from: "Self", to: "Squeak", color: "black" },
740 | { from: "JavaScript", to: "ECMAScript", color: "black" },
741 | { from: "Smalltalk", to: "F-Script", color: "black" },
742 | { from: "APL", to: "F-Script", color: "black" },
743 | { from: "Objective-C", to: "F-Script", color: "black" },
744 | { from: "Common Lisp", to: "ISLISP", color: "black" },
745 | { from: "Java", to: "Tea", color: "black" },
746 | { from: "Scheme", to: "Tea", color: "black" },
747 | { from: "Tcl", to: "Tea", color: "black" },
748 | { from: "Self", to: "REBOL", color: "black" },
749 | { from: "Forth", to: "REBOL", color: "black" },
750 | { from: "Lisp", to: "REBOL", color: "black" },
751 | { from: "Logo", to: "REBOL", color: "black" },
752 | { from: "Prolog", to: "Logtalk", color: "black" },
753 | { from: "ECMAScript", to: "ActionScript", color: "black" },
754 | { from: "C++", to: "Standard C++", color: "black" },
755 | { from: "Standard C", to: "Standard C++", color: "black" },
756 | { from: "C", to: "Standard C++", color: "black" },
757 | { from: "C++", to: "UnrealScript", color: "black" },
758 | { from: "Java", to: "UnrealScript", color: "black" },
759 | { from: "DSSSL", to: "XSLT", color: "black" },
760 | { from: "Visual Basic", to: "Xojo", color: "black" },
761 | { from: "C90", to: "C99", color: "black" },
762 | { from: "Visual Basic", to: "Gambas", color: "black" },
763 | { from: "Java", to: "Gambas", color: "black" },
764 | { from: "Game Maker", to: "Game Maker Language", color: "black" },
765 | { from: "dBase", to: "Harbour", color: "black" },
766 | { from: "Clipper", to: "Harbour", color: "black" },
767 | { from: "Java", to: "Join Java", color: "black" },
768 | { from: "C", to: "C#", color: "black" },
769 | { from: "C++", to: "C#", color: "black" },
770 | { from: "Java", to: "C#", color: "black" },
771 | { from: "Delphi", to: "C#", color: "black" },
772 | { from: "Modula-2", to: "C#", color: "black" },
773 | { from: "FP", to: "Joy", color: "black" },
774 | { from: "Forth", to: "Joy", color: "black" },
775 | { from: "Java", to: "AspectJ", color: "black" },
776 | { from: "Common Lisp", to: "AspectJ", color: "black" },
777 | { from: "C", to: "D", color: "black" },
778 | { from: "C++", to: "D", color: "black" },
779 | { from: "C#", to: "D", color: "black" },
780 | { from: "Java", to: "D", color: "black" },
781 | { from: "Java", to: "Processing", color: "black" },
782 | { from: "C", to: "Processing", color: "black" },
783 | { from: "C++", to: "Processing", color: "black" },
784 | { from: "Visual Basic", to: "Visual Basic .NET", color: "black" },
785 | { from: "Godot", to: "GDScript", color: "black" },
786 | { from: "Self", to: "Io", color: "black" },
787 | { from: "NewtonScript", to: "Io", color: "black" },
788 | { from: "Lua", to: "Io", color: "black" },
789 | { from: "GScript", to: "Gosu", color: "black" },
790 | { from: "Logo", to: "Scratch", color: "black" },
791 | { from: "Smalltalk", to: "Scratch", color: "black" },
792 | { from: "Squeak", to: "Scratch", color: "black" },
793 | { from: "E-Toys", to: "Scratch", color: "black" },
794 | { from: "HyperCard", to: "Scratch", color: "black" },
795 | { from: "AgentSheets", to: "Scratch", color: "black" },
796 | { from: "StarLogo", to: "Scratch", color: "black" },
797 | { from: "Tweak", to: "Scratch", color: "black" },
798 | { from: "Miranda/SASL", to: "Nix", color: "black" },
799 | { from: "Haskell", to: "Nix", color: "black" },
800 | { from: "C#", to: "Nemerle", color: "black" },
801 | { from: "ML", to: "Nemerle", color: "black" },
802 | { from: "MetaHaskell", to: "Nemerle", color: "black" },
803 | { from: "Joy", to: "Factor", color: "black" },
804 | { from: "Forth", to: "Factor", color: "black" },
805 | { from: "Lisp", to: "Factor", color: "black" },
806 | { from: "Smalltalk", to: "Scala", color: "black" },
807 | { from: "Java", to: "Scala", color: "black" },
808 | { from: "Haskell", to: "Scala", color: "black" },
809 | { from: "Standard ML", to: "Scala", color: "black" },
810 | { from: "OCaml", to: "Scala", color: "black" },
811 | { from: "C++", to: "C++03", color: "black" },
812 | { from: "Standard C", to: "C++03", color: "black" },
813 | { from: "C", to: "C++03", color: "black" },
814 | { from: "Lua", to: "Squirrel", color: "black" },
815 | { from: "Python", to: "Boo", color: "black" },
816 | { from: "C#", to: "Boo", color: "black" },
817 | { from: "QBasic", to: "FreeBASIC", color: "black" },
818 | { from: "Java", to: "Groovy", color: "black" },
819 | { from: "Lisp", to: "Little b", color: "black" },
820 | { from: "C#", to: "Fantom", color: "black" },
821 | { from: "Scala", to: "Fantom", color: "black" },
822 | { from: "Ruby", to: "Fantom", color: "black" },
823 | { from: "Erlang", to: "Fantom", color: "black" },
824 | { from: "OCaml", to: "F#", color: "black" },
825 | { from: "C#", to: "F#", color: "black" },
826 | { from: "Haskell", to: "F#", color: "black" },
827 | { from: "ActionScript", to: "Haxe", color: "black" },
828 | { from: "OCaml", to: "Haxe", color: "black" },
829 | { from: "Java", to: "Haxe", color: "black" },
830 | { from: "Object Pascal", to: "Oxygene", color: "black" },
831 | { from: "C#", to: "Oxygene", color: "black" },
832 | { from: "Python", to: "Cobra", color: "black" },
833 | { from: "C#", to: "Cobra", color: "black" },
834 | { from: "Eiffel", to: "Cobra", color: "black" },
835 | { from: "Objective-C", to: "Cobra", color: "black" },
836 | { from: "C#", to: "Windows PowerShell", color: "black" },
837 | { from: "ksh", to: "Windows PowerShell", color: "black" },
838 | { from: "Perl", to: "Windows PowerShell", color: "black" },
839 | { from: "CL", to: "Windows PowerShell", color: "black" },
840 | { from: "DCL", to: "Windows PowerShell", color: "black" },
841 | { from: "SQL", to: "Windows PowerShell", color: "black" },
842 | { from: "Java", to: "OptimJ", color: "black" },
843 | { from: "Scala", to: "Fortress", color: "black" },
844 | { from: "ML", to: "Fortress", color: "black" },
845 | { from: "Haskell", to: "Fortress", color: "black" },
846 | { from: "C#", to: "Vala", color: "black" },
847 | { from: "Ada 95", to: "Ada 2005", color: "black" },
848 | { from: "Coq", to: "Agda", color: "black" },
849 | { from: "Epigram", to: "Agda", color: "black" },
850 | { from: "Haskell", to: "Agda", color: "black" },
851 | { from: "QBasic", to: "QB64", color: "black" },
852 | { from: "Lisp", to: "Clojure", color: "black" },
853 | { from: "ML", to: "Clojure", color: "black" },
854 | { from: "Haskell", to: "Clojure", color: "black" },
855 | { from: "Erlang", to: "Clojure", color: "black" },
856 | { from: "Oberon", to: "Oberon-07", color: "black" },
857 | { from: "Python", to: "Nim", color: "black" },
858 | { from: "Lisp", to: "Nim", color: "black" },
859 | { from: "Object Pascal", to: "Nim", color: "black" },
860 | { from: "Python", to: "Genie", color: "black" },
861 | { from: "Boo", to: "Genie", color: "black" },
862 | { from: "D", to: "Genie", color: "black" },
863 | { from: "Object Pascal", to: "Genie", color: "black" },
864 | { from: "Q", to: "Pure", color: "black" },
865 | { from: "HPF", to: "Chapel", color: "black" },
866 | { from: "ZPL", to: "Chapel", color: "black" },
867 | { from: "C", to: "Go", color: "black" },
868 | { from: "Oberon", to: "Go", color: "black" },
869 | { from: "Limbo", to: "Go", color: "black" },
870 | { from: "Smalltalk", to: "Go", color: "black" },
871 | { from: "JavaScript", to: "CoffeeScript", color: "black" },
872 | { from: "Ruby", to: "CoffeeScript", color: "black" },
873 | { from: "Python", to: "CoffeeScript", color: "black" },
874 | { from: "Haskell", to: "CoffeeScript", color: "black" },
875 | { from: "Haskell", to: "Idris", color: "black" },
876 | { from: "Agda", to: "Idris", color: "black" },
877 | { from: "Coq", to: "Idris", color: "black" },
878 | { from: "Modula", to: "Parasail", color: "black" },
879 | { from: "Ada", to: "Parasail", color: "black" },
880 | { from: "Pascal", to: "Parasail", color: "black" },
881 | { from: "ML", to: "Parasail", color: "black" },
882 | { from: "Java", to: "Whiley", color: "black" },
883 | { from: "C", to: "Whiley", color: "black" },
884 | { from: "Python", to: "Whiley", color: "black" },
885 | { from: "Java", to: "Dafny", color: "black" },
886 | { from: "Spec#", to: "Dafny", color: "black" },
887 | { from: "Alef", to: "Rust", color: "black" },
888 | { from: "C++", to: "Rust", color: "black" },
889 | { from: "Camlp4", to: "Rust", color: "black" },
890 | { from: "Erlang", to: "Rust", color: "black" },
891 | { from: "Hermes", to: "Rust", color: "black" },
892 | { from: "Limbo", to: "Rust", color: "black" },
893 | { from: "Napier", to: "Rust", color: "black" },
894 | { from: "Napier88", to: "Rust", color: "black" },
895 | { from: "Newsqueak", to: "Rust", color: "black" },
896 | { from: "NIL", to: "Rust", color: "black" },
897 | { from: "Sather", to: "Rust", color: "black" },
898 | { from: "Standard ML", to: "Rust", color: "black" },
899 | { from: "C99", to: "C11", color: "black" },
900 | { from: "Java", to: "Ceylon", color: "black" },
901 | { from: "Java", to: "Dart", color: "black" },
902 | { from: "JavaScript", to: "Dart", color: "black" },
903 | { from: "CoffeeScript", to: "Dart", color: "black" },
904 | { from: "Go", to: "Dart", color: "black" },
905 | { from: "C++", to: "C++11", color: "black" },
906 | { from: "Standard C", to: "C++11", color: "black" },
907 | { from: "C", to: "C++11", color: "black" },
908 | { from: "Java", to: "Kotlin", color: "black" },
909 | { from: "Scala", to: "Kotlin", color: "black" },
910 | { from: "Groovy", to: "Kotlin", color: "black" },
911 | { from: "C#", to: "Kotlin", color: "black" },
912 | { from: "Gosu", to: "Kotlin", color: "black" },
913 | { from: "Rebol", to: "Red", color: "black" },
914 | { from: "Scala", to: "Red", color: "black" },
915 | { from: "Lua", to: "Red", color: "black" },
916 | { from: "OCaml", to: "Opa", color: "black" },
917 | { from: "Erlang", to: "Opa", color: "black" },
918 | { from: "JavaScript", to: "Opa", color: "black" },
919 | { from: "Erlang", to: "Elixir", color: "black" },
920 | { from: "Ruby", to: "Elixir", color: "black" },
921 | { from: "Clojure", to: "Elixir", color: "black" },
922 | { from: "Haskell", to: "Elm", color: "black" },
923 | { from: "Standard ML", to: "Elm", color: "black" },
924 | { from: "OCaml", to: "Elm", color: "black" },
925 | { from: "F#", to: "Elm", color: "black" },
926 | { from: "JavaScript", to: "TypeScript", color: "black" },
927 | { from: "CoffeeScript", to: "TypeScript", color: "black" },
928 | { from: "MATLAB", to: "Julia", color: "black" },
929 | { from: "Lisp", to: "Julia", color: "black" },
930 | { from: "C", to: "Julia", color: "black" },
931 | { from: "Fortran", to: "Julia", color: "black" },
932 | { from: "Mathematica", to: "Julia", color: "black" },
933 | { from: "Python", to: "Julia", color: "black" },
934 | { from: "Perl", to: "Julia", color: "black" },
935 | { from: "R", to: "Julia", color: "black" },
936 | { from: "Ruby", to: "Julia", color: "black" },
937 | { from: "Lua", to: "Julia", color: "black" },
938 | { from: "Ada 2005", to: "Ada 2012", color: "black" },
939 | { from: "ISO/IEC 8652:1995/Amd 1:2007", to: "Ada 2012", color: "black" },
940 | { from: "2013", to: "P4", color: "black" },
941 | { from: "Scratch", to: "Hopscotch", color: "black" },
942 | { from: "Swift", to: "Cuneiform", color: "black" },
943 | { from: "ML", to: "Lean", color: "black" },
944 | { from: "Coq", to: "Lean", color: "black" },
945 | { from: "Haskell", to: "Lean", color: "black" },
946 | { from: "Agda", to: "Lean", color: "black" },
947 | { from: "Python", to: "Hy", color: "black" },
948 | { from: "Lisp", to: "Hy", color: "black" },
949 | { from: "Clojure", to: "Hy", color: "black" },
950 | { from: "N/A", to: "Jai", color: "black" },
951 | { from: "Ruby", to: "Crystal", color: "black" },
952 | { from: "C", to: "Crystal", color: "black" },
953 | { from: "Rust", to: "Crystal", color: "black" },
954 | { from: "Go", to: "Crystal", color: "black" },
955 | { from: "C#", to: "Crystal", color: "black" },
956 | { from: "Python", to: "Crystal", color: "black" },
957 | { from: "PHP", to: "Hack", color: "black" },
958 | { from: "Objective-C", to: "Swift", color: "black" },
959 | { from: "Rust", to: "Swift", color: "black" },
960 | { from: "Haskell", to: "Swift", color: "black" },
961 | { from: "Ruby", to: "Swift", color: "black" },
962 | { from: "Python", to: "Swift", color: "black" },
963 | { from: "C#", to: "Swift", color: "black" },
964 | { from: "CLU", to: "Swift", color: "black" },
965 | { from: "C++", to: "C++14", color: "black" },
966 | { from: "Standard C", to: "C++14", color: "black" },
967 | { from: "C", to: "C++14", color: "black" },
968 | { from: "JavaScript", to: "Solidity", color: "black" },
969 | { from: "C++", to: "Solidity", color: "black" },
970 | { from: "Python", to: "Solidity", color: "black" },
971 | { from: "Perl", to: "Raku", color: "black" },
972 | { from: "Haskell", to: "Raku", color: "black" },
973 | { from: "Python", to: "Raku", color: "black" },
974 | { from: "Ruby", to: "Raku", color: "black" },
975 | { from: "C", to: "Zig", color: "black" },
976 | { from: "C++", to: "Zig", color: "black" },
977 | { from: "LLVM IR", to: "Zig", color: "black" },
978 | { from: "Go", to: "Zig", color: "black" },
979 | { from: "Rust", to: "Zig", color: "black" },
980 | { from: "JavaScript", to: "Reason", color: "black" },
981 | { from: "OCaml", to: "Reason", color: "black" },
982 | { from: "Lua", to: "Ring", color: "black" },
983 | { from: "Python", to: "Ring", color: "black" },
984 | { from: "Ruby", to: "Ring", color: "black" },
985 | { from: "C", to: "Ring", color: "black" },
986 | { from: "C#", to: "Ring", color: "black" },
987 | { from: "BASIC", to: "Ring", color: "black" },
988 | { from: "QML", to: "Ring", color: "black" },
989 | { from: "xBase", to: "Ring", color: "black" },
990 | { from: "Supernova", to: "Ring", color: "black" },
991 | { from: "C++", to: "C++17", color: "black" },
992 | { from: "Standard C", to: "C++17", color: "black" },
993 | { from: "C", to: "C++17", color: "black" },
994 | { from: "Java", to: "Ballerina", color: "black" },
995 | { from: "Javascript", to: "Ballerina", color: "black" },
996 | { from: "Go", to: "Ballerina", color: "black" },
997 | { from: "Rust", to: "Ballerina", color: "black" },
998 | { from: "C#", to: "Ballerina", color: "black" },
999 | { from: "C#", to: "Q#", color: "black" },
1000 | { from: "F#", to: "Q#", color: "black" },
1001 | { from: "Python", to: "Q#", color: "black" },
1002 | { from: "C11", to: "C17", color: "black" },
1003 | { from: "Fortran 2008", to: "Fortran 2018", color: "black" },
1004 | { from: "JavaScript", to: "Bosque", color: "black" },
1005 | { from: "TypeScript", to: "Bosque", color: "black" },
1006 | { from: "ML", to: "Bosque", color: "black" },
1007 | { from: "C++", to: "C++20", color: "black" },
1008 | { from: "Standard C", to: "C++20", color: "black" },
1009 | { from: "C", to: "C++20", color: "black" },
1010 | { from: "Excel formulas", to: "Microsoft Power Fx", color: "black" },
1011 | { from: "C++", to: "Carbon", color: "black" },
1012 | { from: "Rust", to: "Carbon", color: "black" },
1013 | { from: "Python", to: "Mojo", color: "black" },
1014 | { from: "Rust", to: "Mojo", color: "black" },
1015 | { from: "Swift", to: "Mojo", color: "black" },
1016 | { from: "Julia", to: "Mojo", color: "black" },
1017 | ];
--------------------------------------------------------------------------------