├── 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 | * by James.h 29 |
30 | 31 | 34 |
35 | Roadmap
36 | What's AI?
37 | AI in Game Industry.
38 | How to learn?
39 |
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 | * by James.h 30 |
31 | 32 | 35 |
36 |

37 |
38 | 39 |
40 | Top-Level Tools
41 | TensorFlow vs PyTorch
42 | Trends in 2023
43 |
44 | 45 |
46 | Learn about Python?
47 | In Python.org
48 | Something Interesting
49 |
50 | 51 |
52 |

To be continued ...

53 |
54 | 55 |
56 |

Let's get on with it, Next ...

57 | * enjoy it ;) 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 |
104 |
106 | 108 |
109 |
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 | * by James.h 29 |
30 | 31 | 34 |
35 | How we apply AI in Game Industry?
36 | Art Materials
37 | Text Materials
38 | Music Materials
39 | Advertising Materials
40 | Customer Service
41 | Automated Testing
42 | Prevent Cheating
43 |
44 | 45 |
46 | More examples of applications.
47 |

48 | 49 |
50 | 51 |
52 | AI is changing Game Industry ...
53 | Special Report
54 |
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 | * enjoy it ;) 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 | * by James.h 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 |
57 | Types and Applications
58 |

1. Discriminant AI <=> Judgment

59 | 67 |

2. Generative AI <=> Creativity

68 | 73 |
74 | 75 |
76 | Prepare for Next ...
77 | Learn Common Industry Terms
78 | Machine Learning => Deep Learning
79 |
80 | 81 |
82 | More about Deep Learning?
83 | DL in Wikipedia
84 | Neural Network
85 |
86 | 87 |
88 | What is Large Language Model?
89 | LLM in Wikipedia
90 | More about it
91 |
92 | 93 |
94 | What is NEXT?
95 | AI Agent
96 | AutoGPT ...
97 |
98 | 99 |
100 |

QA : What is the future of AI?

101 |
102 | 103 |
104 |

Let's get on with it, Next ...

105 | * enjoy it ;) 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 | * no rhyme intended 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 |
220 |

want to know more?

221 | use the source, Luke! 222 |
223 | 224 |
225 |

one more thing...

226 |
227 | 228 | 240 |
241 |

have you noticed it's in 3D*?

242 | * beat that, prezi ;) 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 | ]; --------------------------------------------------------------------------------