-
Notifications
You must be signed in to change notification settings - Fork 1
/
C4RiscVSOC.sublime-workspace
429 lines (429 loc) · 62.4 KB
/
C4RiscVSOC.sublime-workspace
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
{
"auto_complete":
{
"selected_items":
[
]
},
"buffers":
[
{
"file": "C4RiscVSOCTop.vhd",
"settings":
{
"buffer_size": 49230,
"encoding": "UTF-8",
"line_ending": "Windows"
},
"undo_stack":
[
[
3,
1,
"expand_tabs",
{
"set_translate_tabs": true
},
"AQAAAAAAAAAAAAAATsAAAAAAAAA5nQAACmxpYnJhcnkgaWVlZTsKdXNlIGllZWUuc3RkX2xvZ2ljXzExNjQuYWxsOwp1c2UgSUVFRS5zdGRfbG9naWNfYXJpdGguYWxsOwp1c2UgSUVFRS5zdGRfbG9naWNfdW5zaWduZWQuYWxsOwoKbGlicmFyeSBhbHRlcmFfbWY7CnVzZSBhbHRlcmFfbWYuYWx0ZXJhX21mX2NvbXBvbmVudHMuYWxsOwoKCi0taHR0cHM6Ly9naXRodWIuY29tL251bGxvYmplY3QvZGUwLW5hbm8tZXhhbXBsZXMvYmxvYi9tYXN0ZXIvc2RyYW0vc3JjL3NkcmFtLnZoZAotLWh0dHBzOi8vd3d3LmludGVsLmNvbS9jb250ZW50L3d3dy91cy9lbi9kb2NzL3Byb2dyYW1tYWJsZS82ODM0OTIvMTgtMS91c2luZy1zeW50aGVzaXMtYXR0cmlidXRlcy5odG1sCgoKLS1odHRwczovL2dpdGh1Yi5jb20vc3BsaW5lZHJpdmUvbXlfc2RyYW0vYmxvYi9tYWluL215X3NkcmFtX2N0cmwudgotLWh0dHBzOi8vZ2l0aHViLmNvbS9kb3VnZ2lsbGlsYW5kL1JldHJvLUNvbXB1dGVycy9ibG9iL21hc3Rlci82ODAwMC9URzY4X0FNUi9URzY4X0FNUl9GUEdBL1JUTC9NZW1vcnkvc2RyYW0udmhkCi0taHR0cHM6Ly9naXRodWIuY29tL251bGxvYmplY3Qvc2RyYW0tZnBnYQotLWh0dHBzOi8vd3d3Lmdlb2NpdGllcy53cy9taWthZWwyNjIvc2RyYW0uaHRtbAotLWh0dHBzOi8vd3d3LmZwZ2E0ZnVuLmNvbS9TRFJBTTIuaHRtbAotLWh0dHA6Ly93d3cucHVkbi5jb20vRG93bmxvYWQvaXRlbS9pZC8xMjI4MTkuaHRtbAotLWh0dHBzOi8vZ2l0aHViLmNvbS9lbWFyZC9NaW5pbWlnX0VDUy9ibG9iL21hc3Rlci9ydGxfZW1hcmQvc2RyYW0vc2RyYW0udmhkCgotLW11bHRpY3ljbGUgcGF0aHMKLS1odHRwczovL2dpdGh1Yi5jb20vaWpvci9meDY4ay9ibG9iL21hc3Rlci9meDY4ay50eHQKCgotLWNyZWF0aW5nIHRpbWluZyBjb25zdHJhaW50cwotLWh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9U3BLQWczSkpPczgKCi0taHR0cHM6Ly9jb21tdW5pdHkuaW50ZWwuY29tL3Q1L0ZQR0EvY3QtcC9mcGdhCi0taHR0cHM6Ly9jb21tdW5pdHkuaW50ZWwuY29tL3Q1L0ludGVsLVF1YXJ0dXMtUHJpbWUtU29mdHdhcmUvSG93LXRvLWltcHJvdmUtRm1heC1mb3ItU09QQy1TeXN0ZW0vdGQtcC80NjQ3OAoKLS1odHRwczovL2dpdGh1Yi5jb20vWW9zeXNIUS9waWNvcnYzMgotLWh0dHBzOi8vZ2l0aHViLmNvbS9Zb3N5c0hRL25lcnYvYmxvYi9tYWluL2Zpcm13YXJlLnMKCi0taGRtaSBvdXRwdXQgZXhhbXBsZQotLWh0dHBzOi8vbnVtYXRvLmNvbS9rYi9oZG1pLW91dHB1dC1leGFtcGxlLWRlc2lnbi1mb3ItdGVsZXN0by8KCmVudGl0eSBDNFJpc2NWU09DVG9wIGlzCmdlbmVyaWMoCglpbnN0SERNSU91dHB1dDoJCQkJCWJvb2xlYW4gOj0gdHJ1ZTsKCWluc3RCbGl0dGVyM0RBY2NlbGVyYXRpb246CQlib29sZWFuIDo9IHRydWU7CglpbnN0RmFzdEZsb2F0aW5nTWF0aDoJCQlib29sZWFuIDo9IHRydWU7CglpbnN0SGlkVVNCSG9zdDoJCQkJCWJvb2xlYW4gOj0gdHJ1ZQoKKTsKcG9ydCgKCQoJLS1vbmJvYXJkIHBlcmlwaGVyYWxzCgkJCgktLWNsb2NrCgljb3JlX2JvYXJkX2Nsa181MDoJaW4gc3RkX2xvZ2ljOwoJCgktLXJlc2V0Cgljb3JlX2JvYXJkX3Jlc2V0OiAgICBpbiBzdGRfbG9naWM7CgkKCS0tdXNlciBrZXkKCWNvcmVfYm9hcmRfa2V5OgkJaW4gc3RkX2xvZ2ljOwoJCgktLWxlZHMKCWNvcmVfYm9hcmRfbGVkczoJCW91dCBzdGRfbG9naWNfdmVjdG9yKCAxIGRvd250byAwICk7CgkKCS0tc2RyYW0KCXNkMV9hOgkJCQkJb3V0IHN0ZF9sb2dpY192ZWN0b3IoIDEyIGRvd250byAwICk7CglzZDFfYmE6CQkJCQlvdXQgc3RkX2xvZ2ljX3ZlY3RvciggMSBkb3dudG8gMCApOwoJCglzZDFfY2tlOgkJCQkJb3V0IHN0ZF9sb2dpYzsKCXNkMV9jbGs6CQkJCQlvdXQgc3RkX2xvZ2ljOwoJCglzZDFfZHFtbDoJCQkJb3V0IHN0ZF9sb2dpYzsKCXNkMV9kcW1oOgkJCQlvdXQgc3RkX2xvZ2ljOwoJCglzZDFfY2FzOgkJCQkJb3V0IHN0ZF9sb2dpYzsKCXNkMV9yYXM6CQkJCQlvdXQgc3RkX2xvZ2ljOwoJCglzZDFfd2VuOgkJCQkJb3V0IHN0ZF9sb2dpYzsKCXNkMV9jc246CQkJCQlvdXQgc3RkX2xvZ2ljOwoJCglzZDFfZDoJCQkJCWlub3V0IHN0ZF9sb2dpY192ZWN0b3IoIDE1IGRvd250byAwICk7CgkKCQoJLS1iYXNlIGJvYXJkIHBlcmlwaGVyYWxzCgkKCS0tdmdhCglyZWQ6ICAgb3V0IHN0ZF9sb2dpY192ZWN0b3IoIDQgZG93bnRvIDAgKTsKCWdyZWVuOiBvdXQgc3RkX2xvZ2ljX3ZlY3RvciggNCBkb3dudG8gMCApOwoJYmx1ZTogIG91dCBzdGRfbG9naWNfdmVjdG9yKCA0IGRvd250byAwICk7Cgl2c3luYzogb3V0IHN0ZF9sb2dpYzsKCWhzeW5jOiBvdXQgc3RkX2xvZ2ljOwoJCgktLWV4dCB1YXJ0CglleHRVYXJ0VHg6CW91dAlzdGRfbG9naWM7CglleHRVYXJ0Ung6CWluCQlzdGRfbG9naWM7CgkKCS0tc2QgY2FyZAoJc2RNY2lEYXQ6CWlub3V0CXN0ZF9sb2dpY192ZWN0b3IoIDMgZG93bnRvIDAgKTsJCglzZE1jaUNtZDoJb3V0IAlzdGRfbG9naWM7CQoJc2RNY2lDbGs6CW91dCAJc3RkX2xvZ2ljOwkKCQoJLS11c2IgaG9zdAoJdXNiSERwOgkJaW5vdXQgc3RkX2xvZ2ljOwkJLS0gYWUxNyAoSTJTX0lPMCkKCXVzYkhEbToJCWlub3V0IHN0ZF9sb2dpYzsJCS0tIGFmMTcgKEkyU19JTzEpCgkKCQoJLS1oZG1pIG91dHB1dAoJdG1kc091dENsazoJCQlvdXQgc3RkX2xvZ2ljOwogICB0bWRzT3V0Q2xrTjoJCW91dCBzdGRfbG9naWM7CiAgIHRtZHNPdXREYXRhOgkJb3V0IHN0ZF9sb2dpY192ZWN0b3IoIDIgZG93bnRvIDAgKTsKICAgdG1kc091dERhdGFOOgkJb3V0IHN0ZF9sb2dpY192ZWN0b3IoIDIgZG93bnRvIDAgKTsgCgoJLS1ncmFwaGljcyBzcmFtCglnZHMwXzduOgkJb3V0IAlzdGRfbG9naWM7CglnZHM4XzE1bjoJb3V0IAlzdGRfbG9naWM7CglnZHMxNl8yM246CW91dCAJc3RkX2xvZ2ljOwoJZ2RzMjRfMzFuOglvdXQgCXN0ZF9sb2dpYzsKCQkKCWd3ZW46CQkJb3V0CXN0ZF9sb2dpYzsKCWdvZW46CQkJb3V0CXN0ZF9sb2dpYzsKCglnYToJCQlvdXQgCXN0ZF9sb2dpY192ZWN0b3IoIDIwIGRvd250byAwICk7CglnZDoJCQlpbm91dCBzdGRfbG9naWNfdmVjdG9yKCAzMSBkb3dudG8gMCApCgkKKTsKZW5kIEM0UmlzY1ZTT0NUb3A7CgoKYXJjaGl0ZWN0dXJlIGJlaGF2aW9yIG9mIEM0UmlzY1ZTT0NUb3AgaXMKCi0tCWNvbXBvbmVudHMKCi0tIG1haW4gcGxsCmNvbXBvbmVudCBtYWluUGxsIElTCglQT1JUCgkoCgkJYXJlc2V0CQk6IElOIFNURF9MT0dJQyAgOj0gJzAnOwoJCWluY2xrMAkJOiBJTiBTVERfTE9HSUMgIDo9ICcwJzsKCQljMAkJCQk6IE9VVCBTVERfTE9HSUMgOwkJCQkKCQljMQkJCQk6IE9VVCBTVERfTE9HSUMgOwoJCWMyCQkJCTogT1VUIFNURF9MT0dJQyA7CgkJYzMJCQkJOiBPVVQgU1REX0xPR0lDIDsKCQljNAkJCQk6IE9VVCBTVERfTE9HSUMgOwoJCWxvY2tlZAkJOiBPVVQgU1REX0xPR0lDIAoJKTsKRU5EIGNvbXBvbmVudDsKCi0tIGdmeCBwbGwKY29tcG9uZW50IGdmeFBsbCBJUwoJUE9SVAoJKAoJCWFyZXNldAkJOiBJTiBTVERfTE9HSUMgIDo9ICcwJzsKCQlpbmNsazAJCTogSU4gU1REX0xPR0lDICA6PSAnMCc7CgkJYzAJCQkJOiBPVVQgU1REX0xPR0lDIDsKCQljMQkJCQk6IE9VVCBTVERfTE9HSUMgOwoJCWMyCQkJCTogT1VUIFNURF9MT0dJQyA7CgkJbG9ja2VkCQk6IE9VVCBTVERfTE9HSUMgCgkpOwpFTkQgY29tcG9uZW50OwoKCi0tIGZvbnQgcHJvbQpjb21wb25lbnQgZm9udFByb20gSVMKCVBPUlQKCSgKCQlhZGRyZXNzCQk6IElOIFNURF9MT0dJQ19WRUNUT1IgKDEwIERPV05UTyAwKTsKCQljbG9jawkJCTogSU4gU1REX0xPR0lDICA6PSAnMSc7CgkJcQkJCQk6IE9VVCBTVERfTE9HSUNfVkVDVE9SICg3IERPV05UTyAwKQoJKTsKRU5EIGNvbXBvbmVudDsKCgotLSB0ZXh0IG1vZGUgcGl4ZWwgYW5kIHN5bmMgZ2VuCmNvbXBvbmVudCBwaXhlbEdlblR4dAogICAgcG9ydCgKICAgICAgICAtLXJlc2V0CiAgICAgICAgcmVzZXQ6ICAgICAgICAgIGluICBzdGRfbG9naWM7CiAgICAgICAgcGdDbG9jazogICAgICAgIGluICBzdGRfbG9naWM7CiAgICAgICAgcGdWU3luYzogICAgICAgIG91dCBzdGRfbG9naWM7CiAgICAgICAgcGdIU3luYzogICAgICAgIG91dCBzdGRfbG9naWM7CiAgICAgICAgcGdEZTogICAgICAgICAgIG91dCBzdGRfbG9naWM7CiAgICAgICAgcGdSOiAgICAgICAgICAgIG91dCBzdGRfbG9naWNfdmVjdG9yKCA3IGRvd250byAwICk7CiAgICAgICAgcGdHOiAgICAgICAgICAgIG91dCBzdGRfbG9naWNfdmVjdG9yKCA3IGRvd250byAwICk7CiAgICAgICAgcGdCOiAgICAgICAgICAgIG91dCBzdGRfbG9naWNfdmVjdG9yKCA3IGRvd250byAwICk7CgogICAgICAgIGZvbnRSb21BOiAgICAgICBvdXQgc3RkX2xvZ2ljX3ZlY3RvciggMTAgZG93bnRvIDAgKTsKICAgICAgICBmb250Um9tRG91dDogICAgaW4gIHN0ZF9sb2dpY192ZWN0b3IoIDcgZG93bnRvIDAgKTsKCiAgICAgICAgdmlkZW9SYW1CQTogICAgIG91dCBzdGRfbG9naWNfdmVjdG9yKCAxMyBkb3dudG8gMCApOwogICAgICAgIHZpZGVvUmFtQkRvdXQ6ICBpbiAgc3RkX2xvZ2ljX3ZlY3RvciggMTUgZG93bnRvIDAgKTsKCQkgIAoJCSAgcGdYQ291bnQ6CQkgICBvdXQgc3RkX2xvZ2ljX3ZlY3RvciggMTEgZG93bnRvIDAgKTsKCQkgIHBnWUNvdW50OgkJICAgb3V0IHN0ZF9sb2dpY192ZWN0b3IoIDExIGRvd250byAwICk7CgkJICBwZ0RlWDogICAgICAgICAgb3V0IHN0ZF9sb2dpYzsKCQkgIHBnRGVZOiAgICAgICAgICBvdXQgc3RkX2xvZ2ljOwoJCSAgcGdQcmVGZXRjaExpbmU6IG91dCBzdGRfbG9naWM7CgkJICBwZ0ZldGNoRW5hYmxlOiAgb3V0IHN0ZF9sb2dpYzsKCQlwZ1ZpZGVvTW9kZToJCWluCSBzdGRfbG9naWNfdmVjdG9yKCAxIGRvd250byAwICkKCSk7CmVuZCBjb21wb25lbnQ7CgotLSBnZnggcGl4ZWwgZ2VuCmNvbXBvbmVudCBwaXhlbEdlbkdmeCBpcwpwb3J0KAoJcmVzZXQ6ICAgICAgICAgIAlpbiAgc3RkX2xvZ2ljOwogICBwZ2dDbG9jazogICAgICAgIAlpbiAgc3RkX2xvZ2ljOwogICBwZ2dSOiAgICAgICAgICAgIAlvdXQgc3RkX2xvZ2ljX3ZlY3RvciggNyBkb3dudG8gMCApOwogICBwZ2dHOiAgICAgICAgICAgIAlvdXQgc3RkX2xvZ2ljX3ZlY3RvciggNyBkb3dudG8gMCApOwogICBwZ2dCOiAgICAgICAgICAgIAlvdXQgc3RkX2xvZ2ljX3ZlY3RvciggNyBkb3dudG8gMCApOwoKCSAtLWdmeCBidWZmZXIgcmFtCglnZnhCdWZSYW1ET3V0OgkJaW4gIHN0ZF9sb2dpY192ZWN0b3IoIDMxIGRvd250byAwICk7CglnZnhCdWZSYW1SZEE6CQlvdXQgc3RkX2xvZ2ljX3ZlY3RvciggOCBkb3dudG8gMCApOwoKCS0tMiBkbWEgcmVxdWVzdHMKCXBnZ0RNQVJlcXVlc3Q6CQlvdXQgc3RkX2xvZ2ljX3ZlY3RvciggMSBkb3dudG8gMCApOwoJCgktLXN5bmMgZ2VuIG91dHB1dHMKICAgcGdWU3luYzogICAgICAgIAlpbiAgc3RkX2xvZ2ljOwogICBwZ0hTeW5jOiAgICAgICAgCWluICBzdGRfbG9naWM7CiAgIHBnRGU6ICAgICAgICAgICAJaW4gIHN0ZF9sb2dpYzsKCXBnWENvdW50OgkJICAJaW4gIHN0ZF9sb2dpY192ZWN0b3IoIDExIGRvd250byAwICk7CglwZ1lDb3VudDoJCSAgCWluICBzdGRfbG9naWNfdmVjdG9yKCAxMSBkb3dudG8gMCApOwoJcGdEZVg6ICAgICAgICAgIAlpbiAgc3RkX2xvZ2ljOwoJcGdEZVk6ICAgICAgICAgIAlpbiAgc3RkX2xvZ2ljOwoJcGdQcmVGZXRjaExpbmU6CWluICBzdGRfbG9naWM7CglwZ0ZldGNoRW5hYmxlOiAgCWluICBzdGRfbG9naWM7CgoJcGdWaWRlb01vZGU6CQlpbgkgc3RkX2xvZ2ljX3ZlY3RvciggMSBkb3dudG8gMCApCgoJKTsKZW5kIGNvbXBvbmVudDsKCgotLSByaXNjdiBjcHUKY29tcG9uZW50IHBpY29ydjMyIGlzCQoJcG9ydAoJKAoJCWNsazoJCQkJaW4gIHN0ZF9sb2dpYzsKCQlyZXNldG46CQkJaW4gIHN0ZF9sb2dpYzsKCQl0cmFwOgkJCQlvdXQgc3RkX2xvZ2ljOwoJCW1lbV92YWxpZDoJCW91dCBzdGRfbG9naWM7CgkJbWVtX2luc3RyOgkJb3V0IHN0ZF9sb2dpYzsKCQltZW1fcmVhZHk6CQlpbiAgc3RkX2xvZ2ljOwoKCQltZW1fYWRkcjoJCW91dCBzdGRfbG9naWNfdmVjdG9yKCAzMSBkb3dudG8gMCApOwoJCW1lbV93ZGF0YToJCW91dCBzdGRfbG9naWNfdmVjdG9yKCAzMSBkb3dudG8gMCApOwoJCW1lbV93c3RyYjoJCW91dCBzdGRfbG9naWNfdmVjdG9yKCAzIGRvd250byAwICk7CgkJbWVtX3JkYXRhOgkJaW4gIHN0ZF9sb2dpY192ZWN0b3IoIDMxIGRvd250byAwICk7CgoJCS0tTG9vay1BaGVhZCBJbnRlcmZhY2UKCQltZW1fbGFfcmVhZDogCW91dCBzdGRfbG9naWM7CgkJbWVtX2xhX3dyaXRlOglvdXQgc3RkX2xvZ2ljOwoJCW1lbV9sYV9hZGRyOglvdXQgc3RkX2xvZ2ljX3ZlY3RvciggMzEgZG93bnRvIDAgKTsKCQltZW1fbGFfd2RhdGE6CW91dCBzdGRfbG9naWNfdmVjdG9yKCAzMSBkb3dudG8gMCApOwoJCW1lbV9sYV93c3RyYjoJb3V0IHN0ZF9sb2dpY192ZWN0b3IoIDMgZG93bnRvIDAgKTsKCgkJLS1QaWNvIENvLVByb2Nlc3NvciBJbnRlcmZhY2UgKFBDUEkpCgkJcGNwaV92YWxpZDoJCW91dCBzdGRfbG9naWM7CgkJcGNwaV9pbnNuOgkJb3V0IHN0ZF9sb2dpY192ZWN0b3IoIDMxIGRvd250byAwICk7CgkJcGNwaV9yczE6CQlvdXQgc3RkX2xvZ2ljX3ZlY3RvciggMzEgZG93bnRvIDAgKTsKCQlwY3BpX3JzMjoJCW91dCBzdGRfbG9naWNfdmVjdG9yKCAzMSBkb3dudG8gMCApOwoJCXBjcGlfd3I6CQkJaW4gIHN0ZF9sb2dpYzsKCQlwY3BpX3JkOgkJCWluICBzdGRfbG9naWNfdmVjdG9yKCAzMSBkb3dudG8gMCApOwoJCXBjcGlfd2FpdDoJCWluICBzdGRfbG9naWM7CgkJcGNwaV9yZWFkeToJCWluICBzdGRfbG9naWM7CgoJCS0tSVJRIEludGVyZmFjZQoJCWlycToJCQkJaW4gIHN0ZF9sb2dpY192ZWN0b3IoIDMxIGRvd250byAwICk7CgkJZW9pOgkJCQlvdXQgc3RkX2xvZ2ljX3ZlY3RvciggMzEgZG93bnRvIDAgKTsKCgkJLS1UcmFjZSBJbnRlcmZhY2UKCQl0cmFjZV92YWxpZDoJb3V0IHN0ZF9sb2dpYzsKCQl0cmFjZV9kYXRhOgkJb3V0IHN0ZF9sb2dpY192ZWN0b3IoIDM1IGRvd250byAwICkKCik7CmVuZCBjb21wb25lbnQ7CgotLSBzdGF0aWMgcmFtIGNvbnRyb2xsZXIgYW5kIGRtYQpjb21wb25lbnQgc3JhbUNvbnRyb2xsZXIgaXMKcG9ydCgKCglyZXNldDogICAgICBpbiAgc3RkX2xvZ2ljOwoJY2xvY2s6ICAgICAgaW4gIHN0ZF9sb2dpYzsKCgoJLS1nZnggZGlzcGxheSBtb2RlIGludGVyZmFjZSAoIGNoMCApCgljaDBEbWFSZXF1ZXN0OgkJCWluICBzdGRfbG9naWNfdmVjdG9yKCAxIGRvd250byAwICk7CgljaDBEbWFQb2ludGVyU3RhcnQ6CWluICBzdGRfbG9naWNfdmVjdG9yKCAyMCBkb3dudG8gMCApOwoJY2gwRG1hUG9pbnRlclJlc2V0OglpbiAgc3RkX2xvZ2ljOwoJCgljaDBCdWZDbGs6CQkJCWluICBzdGRfbG9naWM7CgljaDBCdWZEb3V0OgkJCQlvdXQgc3RkX2xvZ2ljX3ZlY3RvciggMzEgZG93bnRvIDAgKTsKCWNoMEJ1ZkE6CQkJCQlpbiAgc3RkX2xvZ2ljX3ZlY3RvciggOCBkb3dudG8gMCApOwoJCgkKCS0tYXVkaW8gaW50ZXJmYWNlICggY2gxICkKCQoJLS10YmQKCQoJCgktLWJsaXR0ZXIgaW50ZXJmYWNlICggY2gyICkKCWNoMkRtYVJlcXVlc3Q6CWluICBzdGRfbG9naWM7CgljaDJBOgkJCQlpbiAgc3RkX2xvZ2ljX3ZlY3RvciggMjEgZG93bnRvIDAgKTsKCWNoMkRpbjoJCQlpbiAgc3RkX2xvZ2ljX3ZlY3RvciggMzEgZG93bnRvIDAgKTsKCWNoMkRvdXQ6CQkJb3V0IHN0ZF9sb2dpY192ZWN0b3IoIDMxIGRvd250byAwICk7CgljaDJSV246CQkJaW4gIHN0ZF9sb2dpYzsKCWNoMldvcmRTaXplOglpbiAgc3RkX2xvZ2ljOwoJY2gyRGF0YU1hc2s6CWluICBzdGRfbG9naWNfdmVjdG9yKCAxIGRvd250byAwICk7CgljaDJSZWFkeToJCW91dCBzdGRfbG9naWM7CgkKCQoJLS1jcHUgaW50ZXJmYWNlICggY2gzICkKCWE6CQkJCWluICBzdGRfbG9naWNfdmVjdG9yKCAyMCBkb3dudG8gMCApOwoJZGluOgkJCWluICBzdGRfbG9naWNfdmVjdG9yKCAzMSBkb3dudG8gMCApOwoJZG91dDoJCQlvdXQgc3RkX2xvZ2ljX3ZlY3RvciggMzEgZG93bnRvIDAgKTsKCQoJY2U6CQkJaW4gIHN0ZF9sb2dpYzsKCXdyOgkJCWluICBzdGRfbG9naWM7CglkYXRhTWFzazoJaW4gIHN0ZF9sb2dpY192ZWN0b3IoIDMgZG93bnRvIDAgKTsKCQoJcmVhZHk6CQlvdXQgc3RkX2xvZ2ljOwkKCQoJCgktLXN0YXRpYyByYW0gaW50ZXJmYWNlCglnZHMwXzduOgkJb3V0IHN0ZF9sb2dpYzsKCWdkczhfMTVuOglvdXQgc3RkX2xvZ2ljOwoJZ2RzMTZfMjNuOglvdXQgc3RkX2xvZ2ljOwoJZ2RzMjRfMzFuOglvdXQgc3RkX2xvZ2ljOwoJCQoJZ3dlbjoJCQlvdXQgc3RkX2xvZ2ljOwoJZ29lbjoJCQlvdXQgc3RkX2xvZ2ljOwoKCWdhOgkJCW91dAlzdGRfbG9naWNfdmVjdG9yKCAyMCBkb3dudG8gMCApOwoJZ2Q6CQkJaW5vdXQgc3RkX2xvZ2ljX3ZlY3RvciggMzEgZG93bnRvIDAgKQopOwplbmQgY29tcG9uZW50OwoKLS0gVUFSVApjb21wb25lbnQgVUFSVAogICAgcG9ydCgKCQktLWNwdSBpbnRlcmZhY2UKCQlyZXNldDoJCQkJaW4gIAlzdGRfbG9naWM7CgkJY2xvY2s6CQkJCWluICAJc3RkX2xvZ2ljOwoJCWE6CQkJCQkJaW4gCXN0ZF9sb2dpY192ZWN0b3IoIDE1IGRvd250byAwICk7CgkJZGluOgkJCQkJaW4gCXN0ZF9sb2dpY192ZWN0b3IoIDMxIGRvd250byAwICk7CgkJZG91dDoJCQkJCW91dAlzdGRfbG9naWNfdmVjdG9yKCAzMSBkb3dudG8gMCApOwoJCQoJCWNlOgkJCQkJaW4JCXN0ZF9sb2dpYzsKCQl3cjoJCQkJCWluCQlzdGRfbG9naWM7CgkJZGF0YU1hc2s6CQkJaW4JCXN0ZF9sb2dpY192ZWN0b3IoIDMgZG93bnRvIDAgKTsKCQkKCQlyZWFkeToJCQkJb3V0CXN0ZF9sb2dpYzsKCQkKCQktLXVhcnQgaW50ZXJmYWNlCgkJdWFydFRYRDoJCQkJb3V0IHN0ZF9sb2dpYzsKCQl1YXJ0UlhEOgkJCQlpbiAgc3RkX2xvZ2ljCiAgICApOwplbmQgY29tcG9uZW50OwoKLS0gU1BJCmNvbXBvbmVudCBTUEkgaXMKcG9ydCgKCgktLWNwdSBpbnRlcmZhY2UKCXJlc2V0OiAgICAgIGluICBzdGRfbG9naWM7CgljbG9jazogICAgICBpbiAgc3RkX2xvZ2ljOwoKCWE6CQkJCWluIAlzdGRfbG9naWNfdmVjdG9yKCAxNSBkb3dudG8gMCApOwoJZGluOgkJCWluIAlzdGRfbG9naWNfdmVjdG9yKCAzMSBkb3dudG8gMCApOwoJZG91dDoJCQlvdXQJc3RkX2xvZ2ljX3ZlY3RvciggMzEgZG93bnRvIDAgKTsKCQoJY2U6CQkJaW4JCXN0ZF9sb2dpYzsKCXdyOgkJCWluCQlzdGRfbG9naWM7CglkYXRhTWFzazoJaW4JCXN0ZF9sb2dpY192ZWN0b3IoIDMgZG93bnRvIDAgKTsKCQoJcmVhZHk6CQlvdXQJc3RkX2xvZ2ljOwoJCgktLXNwaSBpbnRlcmZhY2UKCXNjbGs6CQkJb3V0IHN0ZF9sb2dpYzsKCW1vc2k6CQkJb3V0IHN0ZF9sb2dpYzsKCW1pc286CQkJaW4gIHN0ZF9sb2dpYwoJCik7CmVuZCBjb21wb25lbnQ7CgoKLS0gc3lzdGVtIFJBTSAoIDMySywgYm9vdGxvYWRlciwgdGV4dG1vZGUgZGlzcGxheSBkYXRhLCBzdGFjayApCmNvbXBvbmVudCBzeXN0ZW1SYW0gSVMKCVBPUlQKCSgKCQlhZGRyZXNzX2EJCTogSU4gU1REX0xPR0lDX1ZFQ1RPUiAoMTIgRE9XTlRPIDApOwoJCWFkZHJlc3NfYgkJOiBJTiBTVERfTE9HSUNfVkVDVE9SICgxMiBET1dOVE8gMCk7CgkJYnl0ZWVuYV9hCQk6IElOIFNURF9MT0dJQ19WRUNUT1IgKDMgRE9XTlRPIDApIDo9ICAoT1RIRVJTID0+ICcxJyk7CgkJYnl0ZWVuYV9iCQk6IElOIFNURF9MT0dJQ19WRUNUT1IgKDMgRE9XTlRPIDApIDo9ICAoT1RIRVJTID0+ICcxJyk7CgkJY2xvY2tfYQkJCTogSU4gU1REX0xPR0lDICA6PSAnMSc7CgkJY2xvY2tfYgkJCTogSU4gU1REX0xPR0lDIDsKCQlkYXRhX2EJCQk6IElOIFNURF9MT0dJQ19WRUNUT1IgKDMxIERPV05UTyAwKTsKCQlkYXRhX2IJCQk6IElOIFNURF9MT0dJQ19WRUNUT1IgKDMxIERPV05UTyAwKTsKCQl3cmVuX2EJCQk6IElOIFNURF9MT0dJQyAgOj0gJzAnOwoJCXdyZW5fYgkJCTogSU4gU1REX0xPR0lDICA6PSAnMCc7CgkJcV9hCQkJCTogT1VUIFNURF9MT0dJQ19WRUNUT1IgKDMxIERPV05UTyAwKTsKCQlxX2IJCQkJOiBPVVQgU1REX0xPR0lDX1ZFQ1RPUiAoMzEgRE9XTlRPIDApCgkpOwpFTkQgY29tcG9uZW50OwoKLS0gZmFzdHJhbSAoNTEySykKY29tcG9uZW50IGZhc3RSYW0gSVMKCVBPUlQKCSgKCQlhZGRyZXNzX2EJCTogSU4gU1REX0xPR0lDX1ZFQ1RPUiAoMTYgRE9XTlRPIDApOwoJCWFkZHJlc3NfYgkJOiBJTiBTVERfTE9HSUNfVkVDVE9SICgxNiBET1dOVE8gMCk7CgkJYnl0ZWVuYV9hCQk6IElOIFNURF9MT0dJQ19WRUNUT1IgKDMgRE9XTlRPIDApIDo9ICAoT1RIRVJTID0+ICcxJyk7CgkJYnl0ZWVuYV9iCQk6IElOIFNURF9MT0dJQ19WRUNUT1IgKDMgRE9XTlRPIDApIDo9ICAoT1RIRVJTID0+ICcxJyk7CgkJY2xvY2tfYQkJCTogSU4gU1REX0xPR0lDICA6PSAnMSc7CgkJY2xvY2tfYgkJCTogSU4gU1REX0xPR0lDIDsKCQlkYXRhX2EJCQk6IElOIFNURF9MT0dJQ19WRUNUT1IgKDMxIERPV05UTyAwKTsKCQlkYXRhX2IJCQk6IElOIFNURF9MT0dJQ19WRUNUT1IgKDMxIERPV05UTyAwKTsKCQl3cmVuX2EJCQk6IElOIFNURF9MT0dJQyAgOj0gJzAnOwoJCXdyZW5fYgkJCTogSU4gU1REX0xPR0lDICA6PSAnMCc7CgkJcV9hCQkJCTogT1VUIFNURF9MT0dJQ19WRUNUT1IgKDMxIERPV05UTyAwKTsKCQlxX2IJCQkJOiBPVVQgU1REX0xPR0lDX1ZFQ1RPUiAoMzEgRE9XTlRPIDApCgkpOwpFTkQgY29tcG9uZW50OwoKLS0gdXNiIGhvc3QKY29tcG9uZW50IHVzYkhvc3QgaXMKcG9ydCgKCgktLWNwdSBpbnRlcmZhY2UKCXJlc2V0OgkJCQlpbiAgCXN0ZF9sb2dpYzsKCWNsb2NrOgkJCQlpbiAgCXN0ZF9sb2dpYzsKCWE6CQkJCQkJaW4gCXN0ZF9sb2dpY192ZWN0b3IoIDE1IGRvd250byAwICk7CglkaW46CQkJCQlpbiAJc3RkX2xvZ2ljX3ZlY3RvciggMzEgZG93bnRvIDAgKTsKCWRvdXQ6CQkJCQlvdXQJc3RkX2xvZ2ljX3ZlY3RvciggMzEgZG93bnRvIDAgKTsKCQoJY2U6CQkJCQlpbgkJc3RkX2xvZ2ljOwoJd3I6CQkJCQlpbgkJc3RkX2xvZ2ljOwoJZGF0YU1hc2s6CQkJaW4JCXN0ZF9sb2dpY192ZWN0b3IoIDMgZG93bnRvIDAgKTsKCQoJcmVhZHk6CQkJCW91dAlzdGRfbG9naWM7CgkKCS0tdXNiIHBoeSBjbG9jayAoMTJNSHopCgl1c2JIQ2xrOgkJCQlpbiAJc3RkX2xvZ2ljOwoJCgktLXVzYiBob3N0IGludGVyZmFjZXMKCXVzYkgwRHA6CQkJCWlub3V0IHN0ZF9sb2dpYzsJCQoJdXNiSDBEbToJCQkJaW5vdXQgc3RkX2xvZ2ljCQkKCik7CmVuZCBjb21wb25lbnQ7CgotLSBzZHJhbSBtZW1vcnkgY29udHJvbGxlcgpjb21wb25lbnQgc2RyYW1Db250cm9sbGVyIGlzCnBvcnQoCgoJY2xrOgkJCQkJCWluCQlzdGRfbG9naWM7CglyZXNldDoJCQkJCWluIAlzdGRfbG9naWM7CgkKCS0tc2RyYW0gaW50ZXJmYWNlCglzZHJhbUNrZToJCQkJb3V0IAlzdGRfbG9naWM7CgoJc2RyYW1BOgkJCQkJb3V0IAlzdGRfbG9naWNfdmVjdG9yKCAxMiBkb3dudG8gMCApOwoJc2RyYW1CYToJCQkJCW91dCAJc3RkX2xvZ2ljX3ZlY3RvciggMSBkb3dudG8gMCApOwoKCXNkcmFtRDoJCQkJCWlub3V0IHN0ZF9sb2dpY192ZWN0b3IoIDE1IGRvd250byAwICk7CgkJCglzZHJhbURxbWw6CQkJCW91dCAJc3RkX2xvZ2ljOwoJc2RyYW1EcW1oOgkJCQlvdXQgCXN0ZF9sb2dpYzsKCQoJc2RyYW1DYXM6CQkJCW91dCAJc3RkX2xvZ2ljOwoJc2RyYW1SYXM6CQkJCW91dCAJc3RkX2xvZ2ljOwoJCglzZHJhbVdlbjoJCQkJb3V0IAlzdGRfbG9naWM7CglzZHJhbUNzbjoJCQkJb3V0IAlzdGRfbG9naWM7CgkKCS0tY3B1IGludGVyZmFjZQoJY3B1U2RyYW1DRToJCQkJaW4gCXN0ZF9sb2dpYzsKCWNwdVNkcmFtQToJCQkJaW4JCXN0ZF9sb2dpY192ZWN0b3IoIDIyIGRvd250byAwICk7CgkKCWNwdURhdGFPdXRGb3JDUFU6CQlvdXQgCXN0ZF9sb2dpY192ZWN0b3IoIDMxIGRvd250byAwICk7CgljcHVEYXRhSW46CQkJCWluIAlzdGRfbG9naWNfdmVjdG9yKCAzMSBkb3dudG8gMCApOwoJCgljcHVXcjoJCQkJCWluCQlzdGRfbG9naWM7CgljcHVEYXRhTWFzazoJCQlpbgkJc3RkX2xvZ2ljX3ZlY3RvciggMyBkb3dudG8gMCApOwoJY3B1U2RyYW1SZWFkeToJCQlvdXQJc3RkX2xvZ2ljCgoJCik7CmVuZCBjb21wb25lbnQ7CgoKLS0gZGlmZmVyZW50aWFsIG91dHB1dCBidWZmZXIKY29tcG9uZW50IGRpZmZCdWYgSVMKcG9ydCgKCQlkYXRhaW4JCTogSU4gU1REX0xPR0lDX1ZFQ1RPUiAoMCBET1dOVE8gMCk7CgkJZGF0YW91dAkJOiBPVVQgU1REX0xPR0lDX1ZFQ1RPUiAoMCBET1dOVE8gMCk7CgkJZGF0YW91dF9iCTogT1VUIFNURF9MT0dJQ19WRUNUT1IgKDAgRE9XTlRPIDApCgkpOwplbmQgY29tcG9uZW50OwoKCi0tIGR2aSBlbmNvZGVyCmNvbXBvbmVudCBkdmlkIGlzCiAgICBQb3J0ICggY2xrICAgICAgIDogaW4gIFNURF9MT0dJQzsKICAgICAgICAgICBjbGtfcGl4ZWwgOiBpbiAgU1REX0xPR0lDOwogICAgICAgICAgIHJlZF9wICAgICA6IGluICBTVERfTE9HSUNfVkVDVE9SICg3IGRvd250byAwKTsKICAgICAgICAgICBncmVlbl9wICAgOiBpbiAgU1REX0xPR0lDX1ZFQ1RPUiAoNyBkb3dudG8gMCk7CiAgICAgICAgICAgYmx1ZV9wICAgIDogaW4gIFNURF9MT0dJQ19WRUNUT1IgKDcgZG93bnRvIDApOwogICAgICAgICAgIGJsYW5rICAgICA6IGluICBTVERfTE9HSUM7CiAgICAgICAgICAgaHN5bmMgICAgIDogaW4gIFNURF9MT0dJQzsKICAgICAgICAgICB2c3luYyAgICAgOiBpbiAgU1REX0xPR0lDOwogICAgICAgICAgIHJlZF9zICAgICA6IG91dCBTVERfTE9HSUM7CiAgICAgICAgICAgZ3JlZW5fcyAgIDogb3V0IFNURF9MT0dJQzsKICAgICAgICAgICBibHVlX3MgICAgOiBvdXQgU1REX0xPR0lDOwogICAgICAgICAgIGNsb2NrX3MgICA6IG91dCBTVERfTE9HSUMpOwplbmQgY29tcG9uZW50OwoKLS0gZnAgYWx1CmNvbXBvbmVudCBmcEFsdSBpcwpwb3J0KAoJcmVzZXQ6CQlpbiAgCXN0ZF9sb2dpYzsKCWNsb2NrOgkJaW4gIAlzdGRfbG9naWM7CglhOgkJCQlpbiAJc3RkX2xvZ2ljX3ZlY3RvciggMTUgZG93bnRvIDAgKTsKCWRpbjoJCQlpbiAJc3RkX2xvZ2ljX3ZlY3RvciggMzEgZG93bnRvIDAgKTsKCWRvdXQ6CQkJb3V0CXN0ZF9sb2dpY192ZWN0b3IoIDMxIGRvd250byAwICk7CgkKCWNlOgkJCWluCQlzdGRfbG9naWM7Cgl3cjoJCQlpbgkJc3RkX2xvZ2ljOwoJZGF0YU1hc2s6CWluCQlzdGRfbG9naWNfdmVjdG9yKCAzIGRvd250byAwICk7CgkKCXJlYWR5OgkJb3V0CXN0ZF9sb2dpYwopOwoKZW5kIGNvbXBvbmVudDsKCgotLSBibGl0dGVyCmNvbXBvbmVudCBibGl0dGVyIGlzCgpnZW5lcmljKAoJaW5zdDNEQWNjZWxlcmF0aW9uOgkJYm9vbGVhbiA6PSB0cnVlCik7Cgpwb3J0KAoKCS0tY3B1IGludGVyZmFjZQoKCXJlc2V0OgkJCQlpbiAgCXN0ZF9sb2dpYzsKCWNsb2NrOgkJCQlpbiAgCXN0ZF9sb2dpYzsKCWE6CQkJCQkJaW4gCXN0ZF9sb2dpY192ZWN0b3IoIDE1IGRvd250byAwICk7CglkaW46CQkJCQlpbiAJc3RkX2xvZ2ljX3ZlY3RvciggMzEgZG93bnRvIDAgKTsKCWRvdXQ6CQkJCQlvdXQJc3RkX2xvZ2ljX3ZlY3RvciggMzEgZG93bnRvIDAgKTsKCQoJY2U6CQkJCQlpbgkJc3RkX2xvZ2ljOwoJd3I6CQkJCQlpbgkJc3RkX2xvZ2ljOwoJZGF0YU1hc2s6CQkJaW4JCXN0ZF9sb2dpY192ZWN0b3IoIDMgZG93bnRvIDAgKTsKCQoJcmVhZHk6CQkJCW91dAlzdGRfbG9naWM7CgkKCS0tZG1hIGludGVyZmFjZQoJCglkbWFEaW46CQkJCWluCQlzdGRfbG9naWNfdmVjdG9yKCAzMSBkb3dudG8gMCApOwoJZG1hRG91dDoJCQkJb3V0CXN0ZF9sb2dpY192ZWN0b3IoIDMxIGRvd250byAwICk7CgkKCWRtYUE6CQkJCQlvdXQJc3RkX2xvZ2ljX3ZlY3RvciggMjEgZG93bnRvIDAgKTsKCWRtYVJXbjoJCQkJb3V0CXN0ZF9sb2dpYzsKCWRtYVJlcXVlc3Q6CQkJb3V0CXN0ZF9sb2dpYzsKCWRtYVRyYW5zZmVyU2l6ZToJb3V0IAlzdGRfbG9naWM7CglkbWFUcmFuc2Zlck1hc2s6CW91dAlzdGRfbG9naWNfdmVjdG9yKCAxIGRvd250byAwICk7CglkbWFSZWFkeToJCQlpbgkJc3RkX2xvZ2ljCgopOwoKZW5kIGNvbXBvbmVudDsKCi0tIHNpZ25hbHMKCi0tIGFjdGl2ZSBoaWdoIGFzeW5jIHJlc2V0CnNpZ25hbAlyZXNldDoJCXN0ZF9sb2dpYzsKCi0tIG1haW4gcGxsCnNpZ25hbAlwbGxMb2NrZWQ6CXN0ZF9sb2dpYzsKCi0tIGdmeCBwbGwKc2lnbmFsCWdmeFBsbExvY2tlZDoJc3RkX2xvZ2ljOwoKLS0gZ2xvYmFsIGNsb2NrcwpzaWduYWwJY2xrMjU6CQlzdGRfbG9naWM7CnNpZ25hbAljbGs1MDoJCXN0ZF9sb2dpYzsKc2lnbmFsCWNsazEwMDoJCXN0ZF9sb2dpYzsKc2lnbmFsCWNsazEwMHBzOglzdGRfbG9naWM7CS0tMTAwIE1IeiBwaGFzZSBzaGlmdGVkCnNpZ25hbAljbGsxMjoJCXN0ZF9sb2dpYzsJLS0xMiBNSHogVVNCIGNsb2NrCgpzaWduYWwJY2xrMTI1OgkJc3RkX2xvZ2ljOwktLWhkbWkgcGl4ZWwgY2xvY2sKc2lnbmFsCWNsazEyNXBzOglzdGRfbG9naWM7CS0taGRtaSBwaXhlbCBjbG9jayBwaGFzZSBzaGlmdGVkCgotLSB0eHQgcGl4ZWwgZ2VuIHNpZ25hbHMKc2lnbmFsICAJcGdDbG9jazogICAgCQlzdGRfbG9naWM7CnNpZ25hbCAgCXBnVlN5bmM6ICAgIAkJc3RkX2xvZ2ljOwpzaWduYWwgIAlwZ0hTeW5jOiAgICAJCXN0ZF9sb2dpYzsKc2lnbmFsICAJcGdEZTogICAgICAgCQlzdGRfbG9naWM7CnNpZ25hbCAgCXBnUjogICAgICAgIAkJc3RkX2xvZ2ljX3ZlY3RvciggNyBkb3dudG8gMCApOwpzaWduYWwgIAlwZ0c6ICAgICAgICAJCXN0ZF9sb2dpY192ZWN0b3IoIDcgZG93bnRvIDAgKTsKc2lnbmFsICAJcGdCOiAgICAgICAJIAkJc3RkX2xvZ2ljX3ZlY3RvciggNyBkb3dudG8gMCApOyAKc2lnbmFsICAJcGdYQ291bnQ6CQkJc3RkX2xvZ2ljX3ZlY3RvciggMTEgZG93bnRvIDAgKTsKc2lnbmFsICAJcGdZQ291bnQ6CQkJc3RkX2xvZ2ljX3ZlY3RvciggMTEgZG93bnRvIDAgKTsKc2lnbmFsICAJcGdEZVg6CQkJCXN0ZF9sb2dpYzsKc2lnbmFsICAJcGdEZVk6CQkJCXN0ZF9sb2dpYzsKc2lnbmFsICAJcGdQcmVGZXRjaExpbmU6CXN0ZF9sb2dpYzsKc2lnbmFsICAJcGdGZXRjaEVuYWJsZToJCXN0ZF9sb2dpYzsKc2lnbmFsCXZpZGVvUmFtQkRvdXQ6ICAgCXN0ZF9sb2dpY192ZWN0b3IoIDE1IGRvd250byAwICk7CnNpZ25hbAl2aWRlb1JhbUJBOiAgICAgIAlzdGRfbG9naWNfdmVjdG9yKCAxMyBkb3dudG8gMCApOwoKLS0gZ2Z4IHBpeGVsIGdlbiBzaWduYWxzCnNpZ25hbAlwZ2dSOiAgICAgICAgCQlzdGRfbG9naWNfdmVjdG9yKCA3IGRvd250byAwICk7CnNpZ25hbCAgCXBnZ0c6ICAgICAgICAJCXN0ZF9sb2dpY192ZWN0b3IoIDcgZG93bnRvIDAgKTsKc2lnbmFsICAJcGdnQjogICAgICAgIAkJc3RkX2xvZ2ljX3ZlY3RvciggNyBkb3dudG8gMCApOyAKc2lnbmFsICAJcGdnRE1BUmVxdWVzdDoJCXN0ZF9sb2dpY192ZWN0b3IoIDEgZG93bnRvIDAgKTsKCgotLSBmb250IHJvbSBzaWduYWxzCnNpZ25hbAlmb250Um9tQTogICAgICAgIHN0ZF9sb2dpY192ZWN0b3IoIDEwIGRvd250byAwICk7CnNpZ25hbAlmb250Um9tRG91dDogICAgIHN0ZF9sb2dpY192ZWN0b3IoIDcgZG93bnRvIDAgKTsKCgotLSB1YXJ0IHNpZ25hbHMKc2lnbmFsCXVhcnRDbG9jazoJCQkJc3RkX2xvZ2ljOwoKc2lnbmFsCXVhcnRDRToJCQkJCXN0ZF9sb2dpYzsKc2lnbmFsCXVhcnREb3V0Rm9yQ1BVOgkJc3RkX2xvZ2ljX3ZlY3RvciggMzEgZG93bnRvIDAgKTsKc2lnbmFsCXVhcnRSZWFkeToJCQkJc3RkX2xvZ2ljOwoKc2lnbmFsCXVhcnRUeGQ6CQkJCQlzdGRfbG9naWM7CnNpZ25hbAl1YXJ0UnhkOgkJCQkJc3RkX2xvZ2ljOwoKLS0gc3lzdGVtIHJhbSBzaWduYWxzCnNpZ25hbAlmcGdhQ3B1TWVtb3J5Q2xvY2s6CQkJCXN0ZF9sb2dpYzsKc2lnbmFsCXN5c3RlbVJhbURvdXRGb3JDUFU6CQkJCXN0ZF9sb2dpY192ZWN0b3IoIDMxIGRvd250byAwICk7CnNpZ25hbAlzeXN0ZW1SYW1Eb3V0Rm9yUGl4ZWxHZW46CQlzdGRfbG9naWNfdmVjdG9yKCAzMSBkb3dudG8gMCApOwpzaWduYWwJc3lzdGVtUkFNQ0U6CQkJCQkJc3RkX2xvZ2ljOwoKLS0gZmFzdCByYW0gc2lnbmFscwpzaWduYWwJZmFzdFJhbURvdXRGb3JDUFU6CQkJCXN0ZF9sb2dpY192ZWN0b3IoIDMxIGRvd250byAwICk7CnNpZ25hbAlmYXN0UkFNQ0U6CQkJCQkJCXN0ZF9sb2dpYzsKCgotLSBjcHUgc2lnbmFscwpzaWduYWwJY3B1Q2xvY2s6CQkJc3RkX2xvZ2ljOwpzaWduYWwJY3B1UmVzZXRuOgkJCXN0ZF9sb2dpYzsKc2lnbmFsCWNwdUFPdXQ6CQkJCXN0ZF9sb2dpY192ZWN0b3IoIDI5IGRvd250byAwICk7CnNpZ25hbAljcHVET3V0OgkJCQlzdGRfbG9naWNfdmVjdG9yKCAzMSBkb3dudG8gMCApOwoKc2lnbmFsCWNwdU1lbVZhbGlkOgkJc3RkX2xvZ2ljOwpzaWduYWwJY3B1TWVtSW5zdHI6CQlzdGRfbG9naWM7IApzaWduYWwJY3B1TWVtUmVhZHk6CQlzdGRfbG9naWM7CnNpZ25hbAljcHVBT3V0RnVsbDoJCXN0ZF9sb2dpY192ZWN0b3IoIDMxIGRvd250byAwICk7CnNpZ25hbAljcHVXclN0cm9iZToJCXN0ZF9sb2dpY192ZWN0b3IoIDMgZG93bnRvIDAgKTsKc2lnbmFsCWNwdURpbjoJCQkJc3RkX2xvZ2ljX3ZlY3RvciggMzEgZG93bnRvIDAgKTsKCnNpZ25hbAljcHVXcjoJCQkJc3RkX2xvZ2ljOwpzaWduYWwJY3B1RGF0YU1hc2s6CQlzdGRfbG9naWNfdmVjdG9yKCAzIGRvd250byAwICk7CgkJCgotLSBTUEkgc2lnbmFscwpzaWduYWwJc3BpQ2xvY2s6CQkJc3RkX2xvZ2ljOwpzaWduYWwJc3BpQ0U6CQkJCXN0ZF9sb2dpYzsKc2lnbmFsCXNwaURvdXRGb3JDUFU6CQlzdGRfbG9naWNfdmVjdG9yKCAzMSBkb3dudG8gMCApOwpzaWduYWwJc3BpUmVhZHk6CQkJc3RkX2xvZ2ljOwoKc2lnbmFsCXNwaVNDbGs6CQkJCXN0ZF9sb2dpYzsKc2lnbmFsCXNwaU1PU0k6CQkJCXN0ZF9sb2dpYzsKc2lnbmFsCXNwaU1JU086CQkJCXN0ZF9sb2dpYzsKCi0tIGdwbyBzaWduYWxzCnNpZ25hbAlncG9SZWdpc3RlcjoJCXN0ZF9sb2dpY192ZWN0b3IoIDcgZG93bnRvIDAgKTsKCgotLSByZWdpc3RlcnMgc2lnbmFscwoKc2lnbmFsCXJlZ2lzdGVyc0Nsb2NrOgkJc3RkX2xvZ2ljOwoKdHlwZQkJcmVnU3RhdGVfVCBpcyAoIHJzV2FpdEZvclJlZ0FjY2VzcywgcnNXYWl0Rm9yQnVzQ3ljbGVFbmQgKTsKc2lnbmFsCXJlZ2lzdGVyU3RhdGU6CQkJcmVnU3RhdGVfVDsKCnNpZ25hbAlyZWdpc3RlcnNDRToJCQlzdGRfbG9naWM7CnNpZ25hbAlyZWdpc3RlcnNEb3V0Rm9yQ1BVOglzdGRfbG9naWNfdmVjdG9yKCAzMSBkb3dudG8gMCApOwoKLS0gdmlkZW8gbXV4IHNpZ25hbHMKc2lnbmFsCXZtTW9kZToJc3RkX2xvZ2ljX3ZlY3RvciggMTUgZG93bnRvIDAgKTsKCi0tIGRtYSBwcm9jZXNzIHNpZ25hbHMKc2lnbmFsCWRtYUNsb2NrOgkJCQkJc3RkX2xvZ2ljOwoJCQkJCQkJCi0tIGRtYSBjaDAgYnVmIHJhbSBzaWduYWxzICggZm9yIGdmeCBwaXhlbCBnZW4gKQpzaWduYWwJZ2Z4QnVmUmFtRE91dDoJCQkJc3RkX2xvZ2ljX3ZlY3RvciggMzEgZG93bnRvIDAgKTsKc2lnbmFsCWdmeEJ1ZlJhbVJkQToJCQkJc3RkX2xvZ2ljX3ZlY3RvciggOCBkb3dudG8gMCApOwpzaWduYWwJZG1hRGlzcGxheVBvaW50ZXJTdGFydDoJc3RkX2xvZ2ljX3ZlY3RvciggMjAgZG93bnRvIDAgKTsKCi0tIGRtYSBjaDIgc2lnbmFscyAoYmxpdHRlcikKc2lnbmFsCWRtYUNoMlJlcXVlc3Q6CQkJCXN0ZF9sb2dpYzsKc2lnbmFsCWRtYUNoMlJlYWR5OgkJCQlzdGRfbG9naWM7CnNpZ25hbAlkbWFDaDJSV246CQkJCQlzdGRfbG9naWM7CnNpZ25hbAlkbWFDaDJEaW46CQkJCQlzdGRfbG9naWNfdmVjdG9yKCAzMSBkb3dudG8gMCApOwpzaWduYWwJZG1hQ2gyRG91dDoJCQkJCXN0ZF9sb2dpY192ZWN0b3IoIDMxIGRvd250byAwICk7CnNpZ25hbAlkbWFDaDJBOgkJCQkJCXN0ZF9sb2dpY192ZWN0b3IoIDIxIGRvd250byAwICk7CnNpZ25hbAlkbWFDaDJUcmFuc2ZlclNpemU6CQlzdGRfbG9naWM7CnNpZ25hbAlkbWFDaDJUcmFuc2Zlck1hc2s6CQlzdGRfbG9naWNfdmVjdG9yKCAxIGRvd250byAwICk7CgotLQlkbWEgY2gzIHNpZ25hbHMgKCBjcHUgKQpzaWduYWwJZG1hTWVtb3J5Q0U6CQkJCXN0ZF9sb2dpYzsKc2lnbmFsCWNwdURtYVJlYWR5OgkJCQlzdGRfbG9naWM7CnNpZ25hbAlkbWFEb3V0Rm9yQ1BVOgkJCQlzdGRfbG9naWNfdmVjdG9yKCAzMSBkb3dudG8gMCApOwoKCi0tIHRpY2sgdGltZXIgc2lnbmFscwpzaWduYWwJdGlja1RpbWVyQ2xvY2s6CQkJCXN0ZF9sb2dpYzsKc2lnbmFsCXRpY2tUaW1lclJlc2V0OgkJCQlzdGRfbG9naWM7CnNpZ25hbAl0aWNrVGltZXJQcmVzY2FsZXJDb3VudGVyOglzdGRfbG9naWNfdmVjdG9yKCAzMSBkb3dudG8gMCApOwpzaWduYWwJdGlja1RpbWVyQ291bnRlcjoJCQkJc3RkX2xvZ2ljX3ZlY3RvciggMzEgZG93bnRvIDAgKTsKCmNvbnN0YW50CXRpY2tUaW1lclByZXNjYWxlclZhbHVlOglpbnRlZ2VyOj0JNTAwMDAgLSAxOwktLTFtcyB0aWNrIHRpbWVyIEA1ME1IegoKLS0gdXNiIGhvc3Qgc2lnbmFscwpzaWduYWwJdXNiSG9zdENsb2NrOgkJCQlzdGRfbG9naWM7CnNpZ25hbAl1c2JIb3N0Q0U6CQkJCQlzdGRfbG9naWM7CnNpZ25hbAl1c2JIb3N0UmVhZHk6CQkJCXN0ZF9sb2dpYzsKc2lnbmFsCXVzYkhvc3REb3V0Rm9yQ1BVOgkJc3RkX2xvZ2ljX3ZlY3RvciggMzEgZG93bnRvIDAgKTsKCi0tIHVzYiBwaHkgY2xvY2sgKCAxMiBNSHogKQpzaWduYWwJdXNiSENsazogICAgICAgICAgICAJCXN0ZF9sb2dpYzsKCi0tIGJsaXR0ZXIgc2lnbmFscwpzaWduYWwJYmxpdHRlckNsb2NrOgkJCQlzdGRfbG9naWM7CnNpZ25hbAlibGl0dGVyQ0U6CQkJCQlzdGRfbG9naWM7CnNpZ25hbAlibGl0dGVyUmVhZHk6CQkJCXN0ZF9sb2dpYzsKc2lnbmFsCWJsaXR0ZXJEb3V0Rm9yQ1BVOgkJc3RkX2xvZ2ljX3ZlY3RvciggMzEgZG93bnRvIDAgKTsKCi0tIGZyYW1lVGltZXIgc2lnbmFscwpzaWduYWwJZnJhbWVUaW1lckNsb2NrOgkJCXN0ZF9sb2dpYzsKc2lnbmFsCWZyYW1lVGltZXJSZXNldDoJCQlzdGRfbG9naWM7CnNpZ25hbAlmcmFtZVRpbWVyUGdQcnZWU3luYzoJc3RkX2xvZ2ljOwpzaWduYWwJZnJhbWVUaW1lclZhbHVlOgkJCXN0ZF9sb2dpY192ZWN0b3IoIDMxIGRvd250byAwICk7CgotLSBzZHJhbSBjb250cm9sbGVyIHNpZ25hbHMKc2lnbmFsCXNkcmFtQ2xvY2s6CQkJCQlzdGRfbG9naWM7CnNpZ25hbAlzZHJhbUN0cmxDbG9jazoJCQlzdGRfbG9naWM7CnNpZ25hbAlzZHJhbUN0cmxDRToJCQkJc3RkX2xvZ2ljOwpzaWduYWwJc2RyYW1DdHJsRGF0YU91dEZvckNQVToJc3RkX2xvZ2ljX3ZlY3RvciggMzEgZG93bnRvIDAgKTsKc2lnbmFsCXNkcmFtQ3RybFNkcmFtUmVhZHk6CQlzdGRfbG9naWM7CgotLSBoZG1pIGNvbnRyb2xsZXIgc2lnbmFscwpzaWduYWwJdG1kc0NsazoJCXN0ZF9sb2dpYzsKc2lnbmFsCXRtZHNEYXRhOglzdGRfbG9naWNfdmVjdG9yKCAyIGRvd250byAwICk7CgpzaWduYWwJZHZpQ2xvY2s6CXN0ZF9sb2dpYzsKc2lnbmFsCWR2aUNsb2NrcHM6CXN0ZF9sb2dpYzsKc2lnbmFsCWR2aVJlZDogICAJc3RkX2xvZ2ljX3ZlY3RvciggNyBkb3dudG8gMCApOwpzaWduYWwJZHZpR3JlZW46CXN0ZF9sb2dpY192ZWN0b3IoIDcgZG93bnRvIDAgKTsKc2lnbmFsCWR2aUJsdWU6CQlzdGRfbG9naWNfdmVjdG9yKCA3IGRvd250byAwICk7CnNpZ25hbAlkdmlIU3luYzoJc3RkX2xvZ2ljOwpzaWduYWwJZHZpVlN5bmM6CXN0ZF9sb2dpYzsKc2lnbmFsCWR2aUJsYW5rOglzdGRfbG9naWM7CgkKLS0gZnBhbHUgc2lnbmFscwpzaWduYWwJZnBBbHVDbG9jazoJCQlzdGRfbG9naWM7CnNpZ25hbAlmcEFsdUNFOgkJCQlzdGRfbG9naWM7CnNpZ25hbAlmcEFsdURvdXRGb3JDUFU6CXN0ZF9sb2dpY192ZWN0b3IoIDMxIGRvd250byAwICk7CnNpZ25hbAlmcEFsdVJlYWR5OgkJCXN0ZF9sb2dpYzsKCmJlZ2luCgotLSBhc3luYyByZXNldCBzaWduYWxzIAoKCXJlc2V0CQkJPD0gbm90IHBsbExvY2tlZDsKCWNwdVJlc2V0bgk8PSBjb3JlX2JvYXJkX2tleSBhbmQgcGxsTG9ja2VkOwoKLS0gcGxhY2UgbWFpbiBwbGwKbWFpblBsbEluc3Q6IG1haW5QbGwKCXBvcnQgbWFwCgkoCgkJYXJlc2V0CT0+IG5vdCBjb3JlX2JvYXJkX3Jlc2V0LAoJCWluY2xrMAk9PiBjb3JlX2JvYXJkX2Nsa181MCwKLS0JCWMwCQkJPT4gY2xrMjUsCgkJYzEJCQk9PiBjbGs1MCwKCQljMgkJCT0+IGNsazEwMCwKCQljMwkJCT0+IGNsazEyLAoJCWM0CQkJPT4gY2xrMTAwcHMsCgkJbG9ja2VkCT0+IHBsbExvY2tlZAoJCgkpOwoKLS0gcGxhY2UgZ2Z4IHBsbApnZnhQbGxJbnN0IDogZ2Z4UGxsIAoJcG9ydCBtYXAKCSgKCQlhcmVzZXQJID0+IG5vdCBjb3JlX2JvYXJkX3Jlc2V0LAoJCWluY2xrMAk9PiBjb3JlX2JvYXJkX2Nsa181MCwKCQkKCQljMAkJCT0+IGNsazI1LAkJCQkJLS0yNSBNSHoKCQljMQkJCT0+IGNsazEyNSwJCQkJCS0tMTI1IE1IegoJCWMyCQkJPT4gY2xrMTI1cHMsCQkJCS0tMTI1IE1IeiAxODAgZGVncmVlIHBzCgkJbG9ja2VkCT0+IGdmeFBsbExvY2tlZAoJCgkpOwoKLS0gY29ubmVjdCBncG8gdG8gbGVkcwoJY29yZV9ib2FyZF9sZWRzIDw9IGdwb1JlZ2lzdGVyKCA1IGRvd250byA0ICk7CgkKCQotLSBjbG9jayBjb25maWcKCi0tIHR4dCBwaXhlbCBnZW4gY2xvY2sKCXBnQ2xvY2sJCQkJCTw9IGNsazI1OwoKLS0gY3B1IGNsb2NrCgljcHVDbG9jawkJCQkJPD0gY2xrNTA7CgkKLS0gZnBnYSBjcHUgbWVtb3J5IGNsb2NrICggc3lzdGVtIFJBTSwgZmFzdCByYW0gKQoJZnBnYUNwdU1lbW9yeUNsb2NrCTw9IG5vdCBjcHVDbG9jazsKCQotLSByZWdpc3RlcnMgcHJvY2VzcyBjbG9jawoJcmVnaXN0ZXJzQ2xvY2sJCQk8PSBjbGsxMDA7CgotLSB1YXJ0IGNsb2NrCgl1YXJ0Q2xvY2sJCQkJPD0gY2xrMTAwOwoJCi0tIHNyYW0gZGlyZWN0IG1lbW9yeSBhY2Nlc3MgcHJvY2VzcyBjbG9jawoJZG1hQ2xvY2sJCQkJCTw9IGNsazEwMDsKCi0tIHRpY2sgdGltZXIgY2xvY2sKCXRpY2tUaW1lckNsb2NrCQkJPD0gY2xrNTA7CgotLSBmcmFtZSB0aW1lciBwcm9jZXNzIGNsb2NrIChub3QgdGltZXIgY2xvY2spCglmcmFtZVRpbWVyQ2xvY2sJPD0gY2xrMTAwOwoKLS0gYmxpdHRlciBjbG9jawoJYmxpdHRlckNsb2NrCQk8PSBjbGsxMDA7CgotLSBzcGkgY2xvY2sKCXNwaUNsb2NrCQkJCTw9IGNsazUwOwoKLS0gZnBBbHUgY2xvY2sKCWZwQWx1Q2xvY2sJCQk8PSBjbGsxMDA7CgkJCQotLSB1c2IgaG9zdCBjbG9jawoJdXNiSG9zdENsb2NrCQk8PSBjbGsxMDA7CgotLXVzYiBwaHkgY2xvY2sgKCAxMk1IeiApCgl1c2JIQ2xrCQkJCTw9IGNsazEyOwoJCQotLSBzZHJhbSBtZW1vcnkgY2xvY2sKCXNkcmFtQ2xvY2sJCQk8PSBjbGsxMDBwczsKCQotLSBzZHJhbSBjb250cm9sbGVyIGNsb2NrCglzZHJhbUN0cmxDbG9jawkJPD0gY2xrMTAwOwoJCi0tIGhkbWkgZW5jb2RlciBjbG9ja3MKCWR2aUNsb2NrCQkJCTw9IGNsazEyNTsKCWR2aUNsb2NrUHMJCQk8PSBjbGsxMjVwczsKCQoJCi0tIHBsYWNlIHRleHQgbW9kZSBmb250IHJvbQkKZm9udFByb21JbnN0OiBmb250UHJvbSAKCXBvcnQgbWFwKAoJCWNsb2NrIAk9PiBwZ0Nsb2NrLAoJCWFkZHJlc3MJPT4gZm9udFJvbUEsCgkJcQkJCT0+IGZvbnRSb21Eb3V0CgkpOwoKCQkKCS0tcGxhY2UgdHh0IHBpeGVsIGdlbgoJcGl4ZWxHZW5JbnN0OiBwaXhlbEdlblR4dAogICAgcG9ydCBtYXAoCiAgICAgICAgcmVzZXQgICAgICAgICAgID0+IHJlc2V0LAogICAgICAgIHBnQ2xvY2sgICAgICAgICA9PiBwZ0Nsb2NrLAoKICAgICAgICBwZ1ZTeW5jICAgICAgICAgPT4gcGdWU3luYywKICAgICAgICBwZ0hTeW5jICAgICAgICAgPT4gcGdIU3luYywKICAgICAgICBwZ0RlICAgICAgICAgICAgPT4gcGdEZSwKICAgICAgICBwZ1IgICAgICAgICAgICAgPT4gcGdSLAogICAgICAgIHBnRyAgICAgICAgICAgICA9PiBwZ0csCiAgICAgICAgcGdCICAgICAgICAgICAgID0+IHBnQiwKCiAgICAgICAgZm9udFJvbUEgICAgICAgID0+IGZvbnRSb21BLAogICAgICAgIGZvbnRSb21Eb3V0ICAgICA9PiBmb250Um9tRG91dCwKCiAgICAgICAgdmlkZW9SYW1CQSAgICAgID0+IHZpZGVvUmFtQkEsCiAgICAgICAgdmlkZW9SYW1CRG91dCAgID0+IHZpZGVvUmFtQkRvdXQsCgkJICAKCQkgIHBnWENvdW50CQkJPT4gcGdYQ291bnQsCgkJICBwZ1lDb3VudAkJCT0+IHBnWUNvdW50LAoJCSAgcGdEZVgJCQkJPT4gcGdEZVgsCgkJICBwZ0RlWQkJCQk9PiBwZ0RlWSwKCQkgIHBnUHJlRmV0Y2hMaW5lCT0+IHBnUHJlRmV0Y2hMaW5lLAoJCSAgcGdGZXRjaEVuYWJsZQk9PiBwZ0ZldGNoRW5hYmxlLAoJCQoJCXBnVmlkZW9Nb2RlCQkJPT4gdm1Nb2RlKCAzIGRvd250byAyICkKCQkgIAogICAgKTsgCQoKCQotLSBwbGFjZSBnZnggcGl4ZWwgZ2VuCgoJcGl4ZWxHZW5HZnhJbnN0OiBwaXhlbEdlbkdmeAoJcG9ydCBtYXAoCgkJcmVzZXQJCQkJCT0+IHJlc2V0LAoJCXBnZ0Nsb2NrICAgICAgICAJPT4gcGdDbG9jaywKCQkKCQlwZ2dSCQkJCQk9PiBwZ2dSLAoJCXBnZ0cJCQkJCT0+IHBnZ0csCgkJcGdnQgkJCQkJPT4gcGdnQiwKCgkJLS1nZnggYnVmZmVyIHJhbQoJCWdmeEJ1ZlJhbURPdXQJCT0+IGdmeEJ1ZlJhbURPdXQsCgkJZ2Z4QnVmUmFtUmRBCQk9PiBnZnhCdWZSYW1SZEEsCgkKCQktLTIgZG1hIHJlcXVlc3RzCgkJcGdnRE1BUmVxdWVzdAkJPT4gcGdnRE1BUmVxdWVzdCwKCgkJLS1zeW5jIGdlbiBvdXRwdXRzCgkJcGdWU3luYyAgICAgICAgCT0+IHBnVlN5bmMsCgkJcGdIU3luYwkJCQk9PiBwZ0hTeW5jLAoJCXBnRGUJCQkJCT0+IHBnRGUsCgkJcGdYQ291bnQJCQkJPT4gcGdYQ291bnQsCgkJcGdZQ291bnQJCQkJPT4gcGdZQ291bnQsCgkJcGdEZVggICAgICAgICAgCT0+IHBnRGVYLAoJCXBnRGVZCQkJCQk9PiBwZ0RlWSwKCQlwZ1ByZUZldGNoTGluZQkJPT4gcGdQcmVGZXRjaExpbmUsCgkJcGdGZXRjaEVuYWJsZQkJPT4gcGdGZXRjaEVuYWJsZSwKCQkKCQlwZ1ZpZGVvTW9kZQkJCT0+IHZtTW9kZSggNSBkb3dudG8gNCApCgkpOwoKCQoKLS12aWRlbyBvdXQgbXV4IChwaXhlbEdlblR4dCBhbmQgcGl4ZWxHZW5HZnggdG8gYW5hbG9nIHZnYSBhbmQgaGRtaSkKCnZpZGVvTXV4OiBwcm9jZXNzKCBhbGwgKQoKYmVnaW4KCglpZiByaXNpbmdfZWRnZSggcGdDbG9jayApIHRoZW4KCQoJCWlmIHJlc2V0ID0gJzEnIHRoZW4KCQkJCQkJCQkJCgkJZWxzZQoJCQoJCQljYXNlIHZtTW9kZSggMSBkb3dudG8gMCApIGlzCgkJCQoJCQkJLS10ZXh0IG1vZGUKCQkJCXdoZW4gIjAwIiA9PgoJCQkJCgkJCQkJaHN5bmMgICAgICAgPD0gcGdIU3luYzsKCQkJCQl2c3luYyAgICAgICA8PSBwZ1ZTeW5jOwoJCQkJCQoJCQkJCXJlZAkJCTw9IHBnUiggNyBkb3dudG8gMyApOwoJCQkJCWdyZWVuICAgIAk8PSBwZ0coIDcgZG93bnRvIDMgKTsKCQkJCQlibHVlICAgICAJPD0gcGdCKCA3IGRvd250byAzICk7CgoJCQkJCWR2aUhTeW5jICAgIDw9IHBnSFN5bmM7CgkJCQkJZHZpVlN5bmMgICAgPD0gcGdWU3luYzsKCQkJCQlkdmlCbGFuayAgICA8PSBub3QgcGdERTsKCQkJCQkKCQkJCQlkdmlSZWQJCTw9IHBnUiggNyBkb3dudG8gMyApICYgIjAwMCI7CgkJCQkJZHZpR3JlZW4gICAgPD0gcGdHKCA3IGRvd250byAyICkgJiAiMDAiOwoJCQkJCWR2aUJsdWUgICAgIDw9IHBnQiggNyBkb3dudG8gMyApICYgIjAwMCI7CgkJCQoJCQkJLS1nZnggbW9kZQoJCQkJd2hlbiAiMDEiCT0+CgkJCQkKCQkJCQloc3luYyAgICAgICA8PSBwZ0hTeW5jOwoJCQkJCXZzeW5jICAgICAgIDw9IHBnVlN5bmM7CgkJCQkJCgkJCQkJcmVkCQk8PSBwZ2dSKCA3IGRvd250byAzICk7CgkJCQkJZ3JlZW4gICAgPD0gcGdnRyggNyBkb3dudG8gMyApOwoJCQkJCWJsdWUgICAgIDw9IHBnZ0IoIDcgZG93bnRvIDMgKTsKCgkJCQkJZHZpSFN5bmMgICAgPD0gcGdIU3luYzsKCQkJCQlkdmlWU3luYyAgICA8PSBwZ1ZTeW5jOwoJCQkJCWR2aUJsYW5rICAgIDw9IG5vdCBwZ0RFOwoJCQkJCQoJCQkJCWR2aVJlZAkJPD0gcGdnUiggNyBkb3dudG8gMyApICYgIjAwMCI7CgkJCQkJZHZpR3JlZW4gICAgPD0gcGdnRyggNyBkb3dudG8gMiApICYgIjAwIjsKCQkJCQlkdmlCbHVlICAgICA8PSBwZ2dCKCA3IGRvd250byAzICkgJiAiMDAwIjsKCgkJCQktLXRleHQgb3ZlciBnZnggbW9kZQoJCQkJd2hlbiAiMTAiID0+CgkJCQkKCQkJCQloc3luYyAgICAgICA8PSBwZ0hTeW5jOwoJCQkJCXZzeW5jICAgICAgIDw9IHBnVlN5bmM7CgkJCQkJZHZpSFN5bmMgICAgPD0gcGdIU3luYzsKCQkJCQlkdmlWU3luYyAgICA8PSBwZ1ZTeW5jOwoJCQkJCWR2aUJsYW5rICAgIDw9IG5vdCBwZ0RFOwoJCQkJCQoKCQkJCQlpZglwZ1IgPSB4IjAwIiBhbmQgcGdHID0geCIwMCIgYW5kIHBnQiA9IHgiMDAiIHRoZW4KCQkJCQkJCgkJCQkJCXJlZAkJPD0gcGdnUiggNyBkb3dudG8gMyApOwoJCQkJCQlncmVlbiAgICA8PSBwZ2dHKCA3IGRvd250byAzICk7CgkJCQkJCWJsdWUgICAgIDw9IHBnZ0IoIDcgZG93bnRvIDMgKTsKCQkJCQkKCQkJCQkJZHZpUmVkCQk8PSBwZ2dSKCA3IGRvd250byAzICkgJiAiMDAwIjsKCQkJCQkJZHZpR3JlZW4gICAgPD0gcGdnRyggNyBkb3dudG8gMiApICYgIjAwIjsKCQkJCQkJZHZpQmx1ZSAgICAgPD0gcGdnQiggNyBkb3dudG8gMyApICYgIjAwMCI7CgkJCQkJCQoJCQkJCS0tZ3JheSBjb2xvciAtPiBkaW0gYmFja2dyb3VuZAoJCQkJCWVsc2lmIHBnUiA9IHgiODAiIGFuZCBwZ0cgPSB4IjgwIiBhbmQgcGdCID0geCI4MCIgdGhlbgoJCQkJCgkJCQkJCXJlZAkJPD0gIjAiICYgcGdnUiggNyBkb3dudG8gNCApOwoJCQkJCQlncmVlbiAgICA8PSAiMCIgJiBwZ2dHKCA3IGRvd250byA0ICk7CgkJCQkJCWJsdWUgICAgIDw9ICIwIiAmIHBnZ0IoIDcgZG93bnRvIDQgKTsKCQkJCQkJCQkJCQkKCQkJCQkJZHZpUmVkCQk8PSAiMCIgJiBwZ2dSKCA3IGRvd250byAzICkgJiAiMDAiOwoJCQkJCQlkdmlHcmVlbiAgICA8PSAiMCIgJiBwZ2dHKCA3IGRvd250byAyICkgJiAiMCI7CgkJCQkJCWR2aUJsdWUgICAgIDw9ICIwIiAmIHBnZ0IoIDcgZG93bnRvIDMgKSAmICIwMCI7CgkJCQkJZWxzZQoKCQkJCQkJcmVkCQk8PSBwZ1IoIDcgZG93bnRvIDMgKTsKCQkJCQkJZ3JlZW4gICAgPD0gcGdHKCA3IGRvd250byAzICk7CgkJCQkJCWJsdWUgICAgIDw9IHBnQiggNyBkb3dudG8gMyApOwoJCQkJCgkJCQkJCWR2aVJlZAkJPD0gcGdSKCA3IGRvd250byAzICkgJiAiMDAwIjsKCQkJCQkJZHZpR3JlZW4gICAgPD0gcGdHKCA3IGRvd250byAyICkgJiAiMDAiOwoJCQkJCQlkdmlCbHVlICAgICA8PSBwZ0IoIDcgZG93bnRvIDMgKSAmICIwMDAiOwoJCQkJCQoJCQkJCWVuZCBpZjsKCgkJCQktLWdmeCBvdmVyIHRleHQgbW9kZQoJCQkJd2hlbiAiMTEiID0+CgkJCQkKCQkJCQloc3luYyAgICAgICA8PSBwZ0hTeW5jOwoJCQkJCXZzeW5jICAgICAgIDw9IHBnVlN5bmM7CgoJCQkJCWR2aUhTeW5jICAgIDw9IHBnSFN5bmM7CgkJCQkJZHZpVlN5bmMgICAgPD0gcGdWU3luYzsKCQkJCQlkdmlCbGFuayAgICA8PSBub3QgcGdERTsKCQkJCQkKCgkJCQkJLS1kdmlERSAgICAgICA8PSBwZ0RFOwoKCQkJCQlpZglwZ2dSID0geCIwMCIgYW5kIHBnZ0cgPSB4IjAwIiBhbmQgcGdnQiA9IHgiMDAiIHRoZW4KCQkJCQkJCgkJCQkJCXJlZAkJPD0gcGdSKCA3IGRvd250byAzICk7CgkJCQkJCWdyZWVuICAgIDw9IHBnRyggNyBkb3dudG8gMyApOwoJCQkJCQlibHVlICAgICA8PSBwZ0IoIDcgZG93bnRvIDMgKTsKCQkJCQkJCQkJCQkKCQkJCQkJZHZpUmVkCQk8PSBwZ1IoIDcgZG93bnRvIDMgKSAmICIwMDAiOwoJCQkJCQlkdmlHcmVlbiAgICA8PSBwZ0coIDcgZG93bnRvIDIgKSAmICIwMCI7CgkJCQkJCWR2aUJsdWUgICAgIDw9IHBnQiggNyBkb3dudG8gMyApICYgIjAwMCI7CgkJCQkJCgkJCQkJZWxzZQoKCQkJCQkJcmVkCQk8PSBwZ2dSKCA3IGRvd250byAzICk7CgkJCQkJCWdyZWVuICAgIDw9IHBnZ0coIDcgZG93bnRvIDMgKTsKCQkJCQkJYmx1ZSAgICAgPD0gcGdnQiggNyBkb3dudG8gMyApOwkJCQkJCgkJCQkJCQoJCQkJCQlkdmlSZWQJCTw9IHBnZ1IoIDcgZG93bnRvIDMgKSAmICIwMDAiOwoJCQkJCQlkdmlHcmVlbiAgICA8PSBwZ2dHKCA3IGRvd250byAyICkgJiAiMDAiOwoJCQkJCQlkdmlCbHVlICAgICA8PSBwZ2dCKCA3IGRvd250byAzICkgJiAiMDAwIjsKCQkJCQkJCgkJCQkJZW5kIGlmOwoKCQkJCXdoZW4gb3RoZXJzID0+CgkJCQkKCQkJCQoJCQllbmQgY2FzZTsKCQkKCQllbmQgaWY7CgkKCWVuZCBpZjsKCQplbmQgcHJvY2VzczsKCi0tIHBsYWNlIHVhcnQKCQoJZXh0VWFydFR4CTw9IHVhcnRUeGQ7Cgl1YXJ0UnhkCQk8PSBleHRVYXJ0Ung7CgoJVUFSVEluc3Q6IFVBUlQKICAgIHBvcnQgbWFwKAoJCXJlc2V0CQk9PiByZXNldCwKCQljbG9jawkJPT4gdWFydENsb2NrLCAgICAgCgkJCgkJYQkJCT0+IGNwdUFPdXQoIDE1IGRvd250byAwICksCgkJZGluCQk9PiBjcHVET3V0LAoJCWRvdXQJCT0+IHVhcnREb3V0Rm9yQ1BVLAoJCWNlCQkJPT4gdWFydENFLAoJCXdyCQkJPT4gY3B1V3IsCgkJZGF0YU1hc2sJPT4gY3B1RGF0YU1hc2ssCgkJcmVhZHkJCT0+IHVhcnRSZWFkeSwJCQkKCQkgIAogICAgICB1YXJ0VFhECT0+IHVhcnRUeGQsCiAgICAgIHVhcnRSWEQgID0+IHVhcnRSeGQKCQkKICAgICk7ICAKCi0tIHBsYWNlIFNQSQkKCQoJc2RNY2lDbGsJCTw9IHNwaVNDbGs7CglzZE1jaURhdCgzKQk8PSBncG9SZWdpc3RlciggMCApOwktLWNzCglzZE1jaUNtZAkJPD0gc3BpTU9TSTsKCXNwaU1JU08JCTw9IHNkTWNpRGF0KCAwICk7CgoKCXNkTWNpRGF0KDIgZG93bnRvIDAgKSAJPD0gIlpaWiI7CgoJClNQSUluc3Q6U1BJCnBvcnQgbWFwKAoKCS0tY3B1IGludGVyZmFjZQoJcmVzZXQJCQk9PiByZXNldCwKCWNsb2NrCQkJPT4gc3BpQ2xvY2ssCgoJYQkJCQk9PiBjcHVBT3V0KCAxNSBkb3dudG8gMCApLAoJZGluCQkJPT4gY3B1RE91dCwKCWRvdXQJCQk9PiBzcGlEb3V0Rm9yQ1BVLAoJCgljZQkJCQk9PiBzcGlDRSwKCXdyCQkJCT0+IGNwdVdyLAoJZGF0YU1hc2sJCT0+IGNwdURhdGFNYXNrLAoJCglyZWFkeQkJCT0+IHNwaVJlYWR5LAoJCgktLXNwaSBpbnRlcmZhY2UKCXNjbGsJCQk9PiBzcGlTQ2xrLAoJbW9zaQkJCT0+IHNwaU1PU0ksCgltaXNvCQkJPT4gc3BpTUlTTwoJCik7CgoJCi0tIHBsYWNlIHN5c3RlbSByYW0gKCBib290bG9hZGVyLCBzdGFjaywgdGV4dG1vZGUgZGF0YSApCglzeXN0ZW1SQU1JbnN0OiBzeXN0ZW1SQU0gCglwb3J0IG1hcAoJKAoJCWFkZHJlc3NfYQkJPT4gY3B1QU91dCggMTIgZG93bnRvIDAgKSwKCQlhZGRyZXNzX2IJCT0+IHZpZGVvUmFtQkEoIDEzIGRvd250byAxICksCgkJYnl0ZWVuYV9hCQk9PiBjcHVEYXRhTWFzaywKCQlieXRlZW5hX2IJCT0+ICIxMTExIiwKCQljbG9ja19hCQkJPT4gZnBnYUNwdU1lbW9yeUNsb2NrLAoJCWNsb2NrX2IJCQk9PiBwZ0Nsb2NrLAoJCWRhdGFfYQkJCT0+IGNwdURPdXQsCgkJZGF0YV9iCQkJPT4gKCBvdGhlcnMgPT4gJzAnICksCgkJd3Jlbl9hCQkJPT4gY3B1V3IgYW5kIHN5c3RlbVJBTUNFLAoJCXdyZW5fYgkJCT0+ICcwJywKCQlxX2EJCQkJPT4gc3lzdGVtUmFtRG91dEZvckNQVSwKCQlxX2IJCQkJPT4gc3lzdGVtUmFtRG91dEZvclBpeGVsR2VuCgkpOwoKCQoJdmlkZW9SYW1CRG91dAk8PSBzeXN0ZW1SYW1Eb3V0Rm9yUGl4ZWxHZW4oIDE1IGRvd250byAwICkgd2hlbiB2aWRlb1JhbUJBKCAwICkgPSAnMCcgZWxzZSBzeXN0ZW1SYW1Eb3V0Rm9yUGl4ZWxHZW4oIDMxIGRvd250byAxNiApOwoJCi0tIHBsYWNlIGZhc3QgUkFNCglmYXN0UkFNSW5zdDogZmFzdFJBTSAKCXBvcnQgbWFwCgkoCgkJYWRkcmVzc19hCQk9PiBjcHVBT3V0KCAxNiBkb3dudG8gMCApLAoJCWFkZHJlc3NfYgkJPT4gKCBvdGhlcnMgPT4gJzAnICksCgkJYnl0ZWVuYV9hCQk9PiBjcHVEYXRhTWFzaywKCQlieXRlZW5hX2IJCT0+ICIxMTExIiwKCQljbG9ja19hCQkJPT4gZnBnYUNwdU1lbW9yeUNsb2NrLAoJCWNsb2NrX2IJCQk9PiAnMCcsCgkJZGF0YV9hCQkJPT4gY3B1RE91dCwKCQlkYXRhX2IJCQk9PiAoIG90aGVycyA9PiAnMCcgKSwKCQl3cmVuX2EJCQk9PiBjcHVXciBhbmQgZmFzdFJBTUNFLAoJCXdyZW5fYgkJCT0+ICcwJywKCQlxX2EJCQkJPT4gZmFzdFJhbURvdXRGb3JDUFUKCQktLXFfYgkJCQk6IE9VVCBTVERfTE9HSUNfVkVDVE9SICgzMSBET1dOVE8gMCkKCSk7CgoJCi0tIHBsYWNlIHBpY29ydjMyCgkKLS0gYnVzIHNpZ25hbHMKCWNwdUFPdXQgCQkJCTw9IGNwdUFPdXRGdWxsKCAzMSBkb3dudG8gMiApOwoKCWNwdVdyCQkJCQk8PSBjcHVXclN0cm9iZSggMyApIG9yIGNwdVdyU3Ryb2JlKCAyICkgb3IgY3B1V3JTdHJvYmUoIDEgKSBvciBjcHVXclN0cm9iZSggMCApOwoKCWNwdURhdGFNYXNrCQkJPD0gY3B1V3JTdHJvYmUgd2hlbiBjcHVXciA9ICcxJyBlbHNlICIxMTExIjsKCgotLSBjaGlwIHNlbGVjdHMKCXN5c3RlbVJBTUNFCQkJPD0gJzEnIHdoZW4gKCBjcHVNZW1WYWxpZCA9ICcxJyApIGFuZCBjcHVBT3V0RnVsbCggMzEgZG93bnRvIDIwICkgPSB4IjAwMCIgZWxzZQoJCQkJCQkJCScwJzsKCglmYXN0UkFNQ0UJCQk8PSAnMScgd2hlbiAoIGNwdU1lbVZhbGlkID0gJzEnICApIGFuZCBjcHVBT3V0RnVsbCggMzEgZG93bnRvIDI0ICkgPSB4IjMwIiBlbHNlICcwJzsKCQkJCglkbWFNZW1vcnlDRQkJCTw9ICcxJyB3aGVuICggY3B1TWVtVmFsaWQgPSAnMScgICkgYW5kIGNwdUFPdXRGdWxsKCAzMSBkb3dudG8gMjQgKSA9IHgiMjAiIGVsc2UgJzAnOwoJCQkKCXJlZ2lzdGVyc0NFCQkJPD0gJzEnIHdoZW4gKCBjcHVNZW1WYWxpZCA9ICcxJyApIGFuZCBjcHVBT3V0RnVsbCggMzEgZG93bnRvIDIwICkgPSB4ImYwMCIgZWxzZSAnMCc7CgoJZnBBbHVDRQkJCQk8PSAnMScgd2hlbiAoIGNwdU1lbVZhbGlkID0gJzEnICkgYW5kIGNwdUFPdXRGdWxsKCAzMSBkb3dudG8gMjAgKSA9IHgiZjAxIiBlbHNlICcwJzsKCQoJYmxpdHRlckNFCQkJPD0gJzEnIHdoZW4gKCBjcHVNZW1WYWxpZCA9ICcxJyApIGFuZCBjcHVBT3V0RnVsbCggMzEgZG93bnRvIDIwICkgPSB4ImYwMiIgZWxzZSAnMCc7CgoJdXNiSG9zdENFCQkJPD0gJzEnIHdoZW4gKCBjcHVNZW1WYWxpZCA9ICcxJyApIGFuZCBjcHVBT3V0RnVsbCggMzEgZG93bnRvIDIwICkgPSB4ImYwMyIgZWxzZSAnMCc7CgoJdWFydENFCQkJCTw9ICcxJyB3aGVuICggY3B1TWVtVmFsaWQgPSAnMScgKSBhbmQgY3B1QU91dEZ1bGwoIDMxIGRvd250byAyMCApID0geCJmMDQiIGVsc2UgJzAnOwoKCXNwaUNFCQkJCQk8PSAnMScgd2hlbiAoIGNwdU1lbVZhbGlkID0gJzEnICkgYW5kIGNwdUFPdXRGdWxsKCAzMSBkb3dudG8gMjAgKSA9IHgiZjA1IiBlbHNlICcwJzsKCQoJc2RyYW1DdHJsQ0UJCQk8PSAnMScgd2hlbiAoIGNwdU1lbVZhbGlkID0gJzEnICApIGFuZCBjcHVBT3V0RnVsbCggMzEgZG93bnRvIDI4ICkgPSB4IjQiIGVsc2UgJzAnOwoJCi0tIGJ1cyBzbGF2ZXMgcmVhZHkgc2lnbmFscyBtdXgKCWNwdU1lbVJlYWR5CQkJPD0gJzEnIHdoZW4gc3lzdGVtUkFNQ0UgPSAnMScgb3IgZmFzdFJBTUNFID0gJzEnIG9yIHJlZ2lzdGVyc0NFID0gJzEnIAoJCQkJCQkJCWVsc2UgZnBBbHVSZWFkeSB3aGVuIGZwQWx1Q0UgPSAnMScgCgkJCQkJCQkJZWxzZSBibGl0dGVyUmVhZHkgd2hlbiBibGl0dGVyQ0UgPSAnMScgCgkJCQkJCQkJZWxzZSB1c2JIb3N0UmVhZHkgd2hlbiB1c2JIb3N0Q0UgPSAnMScgCgkJCQkJCQkJZWxzZSB1YXJ0UmVhZHkJd2hlbiB1YXJ0Q0UgPSAnMScgCgkJCQkJCQkJZWxzZSBzcGlSZWFkeSB3aGVuIHNwaUNFID0gJzEnIAoJCQkJCQkJCWVsc2UgY3B1RG1hUmVhZHkgd2hlbiBkbWFNZW1vcnlDRSA9ICcxJyAKCQkJCQkJCQllbHNlIHNkcmFtQ3RybFNkcmFtUmVhZHkgd2hlbiBzZHJhbUN0cmxDRSA9ICcxJyAKCQkJCQkJCQllbHNlICcxJzsKCgotLSBidXMgc2xhdmVzIGRhdGEgb3V0cHV0cyBtdXgKCWNwdURpbgkJCQk8PSBzeXN0ZW1SYW1Eb3V0Rm9yQ1BVIAkJCQkJCQkJd2hlbiBjcHVBT3V0RnVsbCggMzEgZG93bnRvIDIwICkgPSB4IjAwMCIgZWxzZSAKCQkJCQkJCQlmYXN0UmFtRG91dEZvckNQVSAJCQkJCQkJCXdoZW4gY3B1QU91dEZ1bGwoIDMxIGRvd250byAyNCApID0geCIzMCIgIGVsc2UgCgkJCQkJCQkJcmVnaXN0ZXJzRG91dEZvckNQVQkJCQkJCQkJd2hlbiBjcHVBT3V0RnVsbCggMzEgZG93bnRvIDIwICkgPSB4ImYwMCIgZWxzZQoJCQkJCQkJCWZwQWx1RG91dEZvckNQVQkJCQkJCQkJCXdoZW4gY3B1QU91dEZ1bGwoIDMxIGRvd250byAyMCApID0geCJmMDEiIGVsc2UKCQkJCQkJCQlibGl0dGVyRG91dEZvckNQVQkJCQkJCQkJCXdoZW4gY3B1QU91dEZ1bGwoIDMxIGRvd250byAyMCApID0geCJmMDIiIGVsc2UKCQkJCQkJCQl1c2JIb3N0RG91dEZvckNQVQkJCQkJCQkJCXdoZW4gY3B1QU91dEZ1bGwoIDMxIGRvd250byAyMCApID0geCJmMDMiIGVsc2UgCgkJCQkJCQkJdWFydERvdXRGb3JDUFUJCQkJCQkJCQkJd2hlbiBjcHVBT3V0RnVsbCggMzEgZG93bnRvIDIwICkgPSB4ImYwNCIgZWxzZQoJCQkJCQkJCXNwaURvdXRGb3JDUFUJCQkJCQkJCQkJd2hlbiBjcHVBT3V0RnVsbCggMzEgZG93bnRvIDIwICkgPSB4ImYwNSIgZWxzZQoJCQkJCQkJCWRtYURvdXRGb3JDUFUJCQkJCQkJCQkJd2hlbiBjcHVBT3V0RnVsbCggMzEgZG93bnRvIDI0ICkgPSB4IjIwIiAgZWxzZQoJCQkJCQkJCXNkcmFtQ3RybERhdGFPdXRGb3JDUFUJCQkJCQkJd2hlbiBjcHVBT3V0RnVsbCggMzEgZG93bnRvIDI4ICkgPSB4IjQiICAgZWxzZQoJCQkJCQkJCXgiMDAwMDAwMDAiOwoKCQkJCQkJCQotLSB0aGUgY3B1CglwaWNvcnYzMkluc3Q6IHBpY29ydjMyIAoJcG9ydCBtYXAKCSgKCQljbGsJCQkJCT0+IGNwdUNsb2NrLAoJCXJlc2V0bgkJCQk9PiBjcHVSZXNldG4sCgkJLS10cmFwOgkJCQlvdXQgc3RkX2xvZ2ljOwoJCW1lbV92YWxpZAkJCT0+IGNwdU1lbVZhbGlkLAoJCW1lbV9pbnN0cgkJCT0+IGNwdU1lbUluc3RyLAoJCW1lbV9yZWFkeQkJCT0+IGNwdU1lbVJlYWR5LAoKCQltZW1fYWRkcgkJCQk9PiBjcHVBT3V0RnVsbCwKCQltZW1fd2RhdGEJCQk9PiBjcHVET3V0LAoJCW1lbV93c3RyYgkJCT0+IGNwdVdyU3Ryb2JlLAoJCW1lbV9yZGF0YQkJCT0+IGNwdURpbiwKCgkJLS1Mb29rLUFoZWFkIEludGVyZmFjZQoJCS0tbWVtX2xhX3JlYWQ6IAlvdXQgc3RkX2xvZ2ljOwoJCS0tbWVtX2xhX3dyaXRlOglvdXQgc3RkX2xvZ2ljOwoJCS0tbWVtX2xhX2FkZHI6CW91dCBzdGRfbG9naWNfdmVjdG9yKCAzMSBkb3dudG8gMCApOwoJCS0tbWVtX2xhX3dkYXRhOglvdXQgc3RkX2xvZ2ljX3ZlY3RvciggMzEgZG93bnRvIDAgKTsKCQktLW1lbV9sYV93c3RyYjoJb3V0IHN0ZF9sb2dpY192ZWN0b3IoIDMgZG93bnRvIDAgKTsKCgkJLS1QaWNvIENvLVByb2Nlc3NvciBJbnRlcmZhY2UgKFBDUEkpCgkJLS1wY3BpX3ZhbGlkOgkJb3V0IHN0ZF9sb2dpYzsKCQktLXBjcGlfaW5zbjoJCW91dCBzdGRfbG9naWNfdmVjdG9yKCAzMSBkb3dudG8gMCApOwoJCS0tcGNwaV9yczE6CQlvdXQgc3RkX2xvZ2ljX3ZlY3RvciggMzEgZG93bnRvIDAgKTsKCQktLXBjcGlfcnMyOgkJb3V0IHN0ZF9sb2dpY192ZWN0b3IoIDMxIGRvd250byAwICk7CgkJcGNwaV93cgkJCQk9PiAnMCcsCgkJcGNwaV9yZAkJCQk9PiAoIG90aGVycyA9PiAnMCcgKSwKCQlwY3BpX3dhaXQJCQk9PiAnMCcsCgkJcGNwaV9yZWFkeQkJCT0+ICcwJywKCgkJLS1JUlEgSW50ZXJmYWNlCgkJaXJxCQkJCQk9PiAoIG90aGVycyA9PiAnMCcgKQoJCS0tZW9pOgkJCQlvdXQgc3RkX2xvZ2ljX3ZlY3RvciggMzEgZG93bnRvIDAgKTsKCgkJLS1UcmFjZSBJbnRlcmZhY2UKCQktLXRyYWNlX3ZhbGlkOglvdXQgc3RkX2xvZ2ljOwoJCS0tdHJhY2VfZGF0YToJCW91dCBzdGRfbG9naWNfdmVjdG9yKCAzNSBkb3dudG8gMCApCgopOwogCgotLXJlZ2lzdGVycyBwcm9jZXNzCnJlZ2lzdGVyczogcHJvY2VzcyggYWxsICkKCmJlZ2luCgkKCWlmIHJpc2luZ19lZGdlKCByZWdpc3RlcnNDbG9jayApIHRoZW4KCQoJCWlmIHJlc2V0ID0gJzEnIHRoZW4KCQkKCQkJcmVnaXN0ZXJzRG91dEZvckNQVQk8PSAoIG90aGVycyA9PiAnMCcgKTsKCQkJCgkJCS0tZGVmYXVsdCByZWdpc3RlciB2YWx1ZXMKCQkJdm1Nb2RlIAkJCQkJCTw9IHgiMDAwMiI7CgkJCWRtYURpc3BsYXlQb2ludGVyU3RhcnQJPD0gKCBvdGhlcnMgPT4gJzAnICk7CgkJCWdwb1JlZ2lzdGVyCQkJCQk8PSAoIG90aGVycyA9PiAnMScgKTsKCQkJCgkJCXRpY2tUaW1lclJlc2V0CQkJCQk8PSAnMCc7CgkJCQkJCQoJCQlyZWdpc3RlclN0YXRlCQkJCQk8PSByc1dhaXRGb3JSZWdBY2Nlc3M7CgoJCWVsc2UKCQkKCQkJdGlja1RpbWVyUmVzZXQJCQkJCTw9ICcwJzsKCQkJZnJhbWVUaW1lclJlc2V0CQkJCTw9ICcwJzsKCQkJCgkJCWNhc2UgcmVnaXN0ZXJTdGF0ZSBpcwoJCQkKCQkJCXdoZW4gcnNXYWl0Rm9yUmVnQWNjZXNzID0+CgkJCQoJCQkJCWlmIHJlZ2lzdGVyc0NFID0gJzEnIHRoZW4KCQkJCQkJCgkJCQkJCWNhc2UgY3B1QU91dCggNyBkb3dudG8gMCApIGlzCgkJCQkJCgkJCQkJCgkJCQkJCQktLXJ3IDB4ZjAwMDAwMDggLSB2aWRlb011eE1vZGUKCQkJCQkJCXdoZW4geCIwMiIgPT4KCQkJCQkKCQkJCQkJCQlyZWdpc3RlcnNEb3V0Rm9yQ1BVCTw9IHgiMDAwMCIgJiB2bU1vZGU7CgkJCQkJCQkJCgkJCQkJCQkJaWYgY3B1V3IgPSAnMScgdGhlbgoJCQkJCQkJCQoJCQkJCQkJCQl2bU1vZGUJPD0gY3B1RE91dCggMTUgZG93bnRvIDAgKTsKCQkJCQkJCQkKCQkJCQkJCQllbmQgaWY7CgkJCQkJCgkJCQkJCQktLXJ3IDB4ZjAwMDAwMGMgLSB2aWRlb1ZTeW5jCgkJCQkJCQl3aGVuIHgiMDMiID0+CgkJCQkJCgkJCQkJCQkJcmVnaXN0ZXJzRG91dEZvckNQVQk8PSB4IjAwMDAiICYgeCIwMDAiICYgIjAwMCIgJiBwZ1ZTeW5jOwoKCQkJCQkJCS0tcncgMHhmMDAwMDAxMCAtIGRtYURpc3BsYXlQb2ludGVyU3RhcnQKCQkJCQkJCXdoZW4geCIwNCIgPT4KCQkJCQkKCQkJCQkJCQlyZWdpc3RlcnNEb3V0Rm9yQ1BVCTw9ICIwMDAwMDAwMDAwMCIgJiBkbWFEaXNwbGF5UG9pbnRlclN0YXJ0OwoJCQkJCQkJCQoJCQkJCQkJCWlmIGNwdVdyID0gJzEnIHRoZW4KCQkJCQkJCQkKCQkJCQkJCQkJZG1hRGlzcGxheVBvaW50ZXJTdGFydAk8PSBjcHVET3V0KCAyMCBkb3dudG8gMCApOwoJCQkJCQkJCQoJCQkJCQkJCWVuZCBpZjsKCQkJCQkJCQkJCQkJCQoJCQkJCQkJLS1ydyAweGYwMDAwMDFjIC0gZ3BvUG9ydAoJCQkJCQkJd2hlbiB4IjA3IiA9PgoJCQkJCQoJCQkJCQkJCXJlZ2lzdGVyc0RvdXRGb3JDUFUJPD0geCIwMDAwIiAmIHgiMDAiICYgZ3BvUmVnaXN0ZXI7CgkJCQkJCQkJCgkJCQkJCQkJaWYgY3B1V3IgPSAnMScgdGhlbgoJCQkJCQkJCQoJCQkJCQkJCQlncG9SZWdpc3Rlcgk8PSBjcHVET3V0KCA3IGRvd250byAwICk7CgkJCQkJCQkJCgkJCQkJCQkJZW5kIGlmOwoJCQkJCQkJCQoJCQkJCQkJLS0tdyAweGYwMDAwMDIwIC0gdGlja1RpbWVyQ29uZmlnCgkJCQkJCQl3aGVuIHgiMDgiID0+CgkJCQkJCQkJCQkJCgkJCQkJCQkJaWYgY3B1V3IgPSAnMScgdGhlbgoJCQkJCQkJCQoJCQkJCQkJCQl0aWNrVGltZXJSZXNldAk8PSBjcHVET3V0KCAwICk7CgkJCQkJCQkJCgkJCQkJCQkJZW5kIGlmOwkKCQkJCQkJCQkKCQkJCQkJCS0tci0gMHhmMDAwMDAyNCAtIHRpY2tUaW1lclZhbHVlCgkJCQkJCQl3aGVuIHgiMDkiID0+CgkJCQkJCQkJCQkKCQkJCQkJCQlyZWdpc3RlcnNEb3V0Rm9yQ1BVCTw9IHRpY2tUaW1lckNvdW50ZXI7CgkJCQkJCQkJCQoJCQkJCQkJCQkJCgkJCQkJCQkJCQkKCQkJCQkJCS0tcncgMHhmMDAwMDAyOCAtIGZyYW1lVGltZXIgKHdyaXRlIHJlc2V0cyB0aW1lcikKCQkJCQkJCXdoZW4geCIwYSIgPT4KCQkJCQkJCQoJCQkJCQkJCXJlZ2lzdGVyc0RvdXRGb3JDUFUJPD0gZnJhbWVUaW1lclZhbHVlOwoJCQkJCQkJCgkJCQkJCQkJaWYgY3B1V3IgPSAnMScgdGhlbgoJCQkJCQkJCQkKCQkJCQkJCQkJCWZyYW1lVGltZXJSZXNldCA8PSAnMSc7CgkJCQkJCQkJCQkKCQkJCQkJCQllbmQgaWY7CgkJCQkJCQkJCQkJCQkJCQoKCQkJCQkJCXdoZW4gb3RoZXJzID0+CgoJCQkJCQkJCXJlZ2lzdGVyc0RvdXRGb3JDUFUJPD0gKCBvdGhlcnMgPT4gJzAnICk7CgkJCQkJCQkKCQkJCQkJZW5kIGNhc2U7IC0tY3B1QU91dCggNyBkb3dudG8gMCApIGlzCgkJCQkJCgkJCQkJCXJlZ2lzdGVyU3RhdGUJPD0gcnNXYWl0Rm9yQnVzQ3ljbGVFbmQ7CgkJCQkJCgkJCQkJZW5kIGlmOyAtLXJlZ2lzdGVyc0NFID0gJzEnCgkJCQoJCQkJd2hlbiByc1dhaXRGb3JCdXNDeWNsZUVuZCA9PgoJCQkJCQkJCgkJCQkJLS13YWl0IGZvciBidXMgY3ljbGUgdG8gZW5kCgkJCQkJaWYgcmVnaXN0ZXJzQ0UgPSAnMCcgdGhlbgoJCQkJCQoJCQkJCQlyZWdpc3RlclN0YXRlIDw9IHJzV2FpdEZvclJlZ0FjY2VzczsKCQkJCQkJCgkJCQkJZW5kIGlmOwoJCQkKCQkJCXdoZW4gb3RoZXJzID0+CgoJCQkJCXJlZ2lzdGVyU3RhdGUgPD0gcnNXYWl0Rm9yUmVnQWNjZXNzOwoJCQkJCgkJCWVuZCBjYXNlOwktLXJlZ2lzdGVyU3RhdGUgaXMKCQkJCgkJZW5kIGlmOyAtLSEgcmVzZXQgPSAnMScKCQkJCgllbmQgaWY7IC0tcmlzaW5nX2VkZ2UoIHJlZ2lzdGVyc0Nsb2NrICkKCQoKZW5kIHByb2Nlc3M7CgoKLS0gcGxhY2Ugc3RhdGljIHJhbSBjb250cm9sbGVyIGFuZCBETUEKCnNyYW1Db250cm9sbGVySW5zdDpzcmFtQ29udHJvbGxlcgpwb3J0IG1hcCgKCglyZXNldAkJCQkJCT0+IHJlc2V0LAoJY2xvY2sJCQkJCQk9PiBkbWFDbG9jaywKCgktLWdmeCBkaXNwbGF5IG1vZGUgaW50ZXJmYWNlICggY2gwICkKCWNoMERtYVJlcXVlc3QJCQk9PiBwZ2dETUFSZXF1ZXN0LAoJY2gwRG1hUG9pbnRlclN0YXJ0CT0+IGRtYURpc3BsYXlQb2ludGVyU3RhcnQsCgljaDBEbWFQb2ludGVyUmVzZXQJPT4gcGdWU3luYywKCQoJY2gwQnVmQ2xrCQkJCT0+IG5vdCBwZ0Nsb2NrLAoJY2gwQnVmRG91dAkJCQk9PiBnZnhCdWZSYW1ET3V0LAoJY2gwQnVmQQkJCQkJPT4gZ2Z4QnVmUmFtUmRBLAoJCgkKCS0tYXVkaW8gaW50ZXJmYWNlICggY2gxICkKCQoJLS10YmQKCQoKCS0tYmxpdHRlciBpbnRlcmZhY2UgKCBjaDIgKQoJY2gyRG1hUmVxdWVzdAkJPT4gZG1hQ2gyUmVxdWVzdCwKCWNoMkEJCQkJCT0+IGRtYUNoMkEsCgljaDJEaW4JCQkJPT4gZG1hQ2gyRGluLAoJY2gyRG91dAkJCQk9PiBkbWFDaDJEb3V0LAoJY2gyUlduCQkJCT0+IGRtYUNoMlJXbiwKCWNoMldvcmRTaXplCQkJPT4gZG1hQ2gyVHJhbnNmZXJTaXplLAoJY2gyRGF0YU1hc2sJCQk9PiBkbWFDaDJUcmFuc2Zlck1hc2ssCgljaDJSZWFkeQkJCQk9PiBkbWFDaDJSZWFkeSwKCQoJCgktLWNwdSBpbnRlcmZhY2UgKCBjaDMgKQoJYQkJCQk9PiBjcHVBT3V0KCAyMCBkb3dudG8gMCApLAoJZGluCQkJPT4gY3B1RE91dCwKCWRvdXQJCQk9PiBkbWFEb3V0Rm9yQ1BVLAoJCgljZQkJCQk9PiBkbWFNZW1vcnlDRSwKCXdyCQkJCT0+IGNwdVdyLAoJZGF0YU1hc2sJCT0+IGNwdURhdGFNYXNrLAkKCXJlYWR5CQkJPT4gY3B1RG1hUmVhZHksCgkKCQoJLS1zdGF0aWMgcmFtIGludGVyZmFjZQoJZ2RzMF83bgkJPT4gZ2RzMF83biwKCWdkczhfMTVuCQk9PiBnZHM4XzE1biwKCWdkczE2XzIzbgk9PiBnZHMxNl8yM24sCglnZHMyNF8zMW4JPT4gZ2RzMjRfMzFuLAoJCQoJZ3dlbgkJCT0+IGd3ZW4sCglnb2VuCQkJPT4gZ29lbiwKCglnYQkJCQk9PiBnYSwKCWdkCQkJCT0+IGdkCik7CgoKLS10aWNrIHRpbWVyIHByb2Nlc3MKCnRpY2tUaW1lcjogcHJvY2VzcyggYWxsICkKYmVnaW4KCglpZiByaXNpbmdfZWRnZSggdGlja1RpbWVyQ2xvY2sgKSB0aGVuCgkKCQlpZiByZXNldCA9ICcxJyB0aGVuCgkJCQoJCQl0aWNrVGltZXJQcmVzY2FsZXJDb3VudGVyCTw9ICggb3RoZXJzID0+ICcwJyApOwoJCQl0aWNrVGltZXJDb3VudGVyCQkJCTw9ICggb3RoZXJzID0+ICcwJyApOwoJCQkKCQkKCQllbHNlCgkJCgkJCWlmIHRpY2tUaW1lclByZXNjYWxlckNvdW50ZXIgLz0geCIwMDAwMDAwMCIgdGhlbgoJCQkJCgkJCQl0aWNrVGltZXJQcmVzY2FsZXJDb3VudGVyIDw9IHRpY2tUaW1lclByZXNjYWxlckNvdW50ZXIgLSAxOwoJCQkJCgkJCWVsc2UKCQkJCgkJCQl0aWNrVGltZXJQcmVzY2FsZXJDb3VudGVyIDw9IGNvbnZfc3RkX2xvZ2ljX3ZlY3RvciggdGlja1RpbWVyUHJlc2NhbGVyVmFsdWUsIHRpY2tUaW1lclByZXNjYWxlckNvdW50ZXInbGVuZ3RoICk7CgkJCQkKCQkJCXRpY2tUaW1lckNvdW50ZXIgPD0gdGlja1RpbWVyQ291bnRlciArIDE7CgkJCQoJCQllbmQgaWY7CgkJCgkJCWlmIHRpY2tUaW1lclJlc2V0ID0gJzEnIHRoZW4KCgkJCQl0aWNrVGltZXJQcmVzY2FsZXJDb3VudGVyCTw9ICggb3RoZXJzID0+ICcwJyApOwoJCQkJdGlja1RpbWVyQ291bnRlcgkJCQk8PSAoIG90aGVycyA9PiAnMCcgKTsKCQkJCgkJCWVuZCBpZjsKCQkJCgkJCgkJZW5kIGlmOwktLXJlc2V0ID0gJzEnCgkKCQoJZW5kIGlmOyAtLXJpc2luZ19lZGdlKCB0aWNrVGltZXJDbG9jayApCgplbmQgcHJvY2VzczsKCgotLSBmcmFtZSB0aW1lciBwcm9jZXNzCgpmcmFtZVRpbWVyUHJvY2VzczogcHJvY2VzcyggYWxsICkKYmVnaW4KCQoJaWYgcmlzaW5nX2VkZ2UoIGZyYW1lVGltZXJDbG9jayApIHRoZW4KCgkJaWYgZnJhbWVUaW1lclJlc2V0ID0gJzEnIHRoZW4KCQkKCQkJZnJhbWVUaW1lclZhbHVlIDw9ICggb3RoZXJzID0+ICcwJyApOwoJCQkKCQllbHNlCgkJCgkJCWZyYW1lVGltZXJQZ1BydlZTeW5jIDw9IHBnVlN5bmM7CgkJCQoJCQkKCQkJaWYgZnJhbWVUaW1lclBnUHJ2VlN5bmMgPSAnMCcgYW5kIHBnVlN5bmMgPSAnMScgdGhlbgoJCQoJCQkJZnJhbWVUaW1lclZhbHVlIDw9IGZyYW1lVGltZXJWYWx1ZSArICcxJzsKCQkJCQoJCQllbmQgaWY7CgkJCgkJZW5kIGlmOwoJCgllbmQgaWY7IC0tIHJpc2luZ19lZGdlKCBmcmFtZVRpbWVyQ2xvY2sgKQplbmQgcHJvY2VzczsKCgotLSBwbGFjZSBibGl0dGVyCgpibGl0dGVySW5zdDpibGl0dGVyCmdlbmVyaWMgbWFwKAoJaW5zdDNEQWNjZWxlcmF0aW9uCT0+IGluc3RCbGl0dGVyM0RBY2NlbGVyYXRpb24KKQpwb3J0IG1hcCgKCgktLWNwdSBpbnRlcmZhY2UKCglyZXNldAkJCQk9PiByZXNldCwKCWNsb2NrCQkJCT0+IGJsaXR0ZXJDbG9jaywKCWEJCQkJCT0+IGNwdUFPdXQoIDE1IGRvd250byAwICksCglkaW4JCQkJPT4gY3B1RE91dCwKCWRvdXQJCQkJPT4gYmxpdHRlckRvdXRGb3JDcHUsCgkKCWNlCQkJCQk9PiBibGl0dGVyQ0UsCgl3cgkJCQkJPT4gY3B1V3IsCglkYXRhTWFzawkJCT0+IGNwdURhdGFNYXNrLAoJCglyZWFkeQkJCQk9PiBibGl0dGVyUmVhZHksCgkKCS0tZG1hIGludGVyZmFjZQoKCWRtYURpbgkJCQk9PiBkbWFDaDJEb3V0LAoJZG1hRG91dAkJCQk9PiBkbWFDaDJEaW4sCgkKCWRtYUEJCQkJCT0+CWRtYUNoMkEsCglkbWFSV24JCQkJPT4gZG1hQ2gyUlduLAoJZG1hUmVxdWVzdAkJCT0+IGRtYUNoMlJlcXVlc3QsCglkbWFUcmFuc2ZlclNpemUJPT4gZG1hQ2gyVHJhbnNmZXJTaXplLAoJZG1hVHJhbnNmZXJNYXNrCT0+IGRtYUNoMlRyYW5zZmVyTWFzaywKCWRtYVJlYWR5CQkJCT0+IGRtYUNoMlJlYWR5CgopOwogCmluc3RGYXN0RmxvYXRpbmdNYXRoR2VuOiBpZiggaW5zdEZhc3RGbG9hdGluZ01hdGggPSB0cnVlICkgZ2VuZXJhdGUKCi0tIHBsYWNlIGZwQWx1CmZwQWx1SW5zdDpmcEFsdQpwb3J0IG1hcCgKCXJlc2V0CQk9PiByZXNldCwKCWNsb2NrCQk9PiBmcEFsdUNsb2NrLAoJYQkJCT0+IGNwdUFPdXQoIDE1IGRvd250byAwICksCglkaW4JCT0+IGNwdURPdXQsCglkb3V0CQk9PiBmcEFsdURvdXRGb3JDUFUsCgkKCWNlCQkJPT4gZnBBbHVDRSwKCXdyCQkJPT4gY3B1V3IsCglkYXRhTWFzawk9PiBjcHVEYXRhTWFzaywKCQoJcmVhZHkJCT0+IGZwQWx1UmVhZHkKKTsKCmVuZCBnZW5lcmF0ZTsKCgkgCgppbnN0SGlkVVNCSG9zdEdlbjogaWYgKCBpbnN0SGlkVVNCSG9zdCA9IHRydWUgKSBnZW5lcmF0ZQoKCS0tIHBsYWNlIHVzYiBob3N0Cgl1c2JIb3N0SW5zdDogdXNiSG9zdAoJcG9ydCBtYXAoCgoJCS0tY3B1IGludGVyZmFjZQoJCXJlc2V0CQkJCT0+IHJlc2V0LAoJCWNsb2NrCQkJCT0+IHVzYkhvc3RDbG9jaywKCQlhCQkJCQk9PiBjcHVBT3V0KCAxNSBkb3dudG8gMCApLAoJCWRpbgkJCQk9PiBjcHVET3V0LAoJCWRvdXQJCQkJPT4gdXNiSG9zdERvdXRGb3JDcHUsCgkJCgkJY2UJCQkJCT0+IHVzYkhvc3RDRSwKCQl3cgkJCQkJPT4gY3B1V3IsCgkJZGF0YU1hc2sJCQk9PiBjcHVEYXRhTWFzaywKCQkKCQlyZWFkeQkJCQk9PiB1c2JIb3N0UmVhZHksCgkJCgkJLS11c2IgcGh5IGNsb2NrICgxMk1IeikKCQl1c2JIQ2xrCQkJPT4gdXNiSENsaywKCQkKCQktLXVzYiBpbnRlcmZhY2VzCgkJdXNiSDBEcAkJCT0+IHVzYmhEcCwKCQl1c2JIMERtCQkJPT4gdXNiaERtCQoKCSk7CgplbmQgZ2VuZXJhdGU7CgoKLS0gcGxhY2Ugc2RyYW0gY29udHJvbGxlcgoJc2QxX2Nsawk8PSBzZHJhbUNsb2NrOwoJCnNkcmFtQ29udHJvbGxlckluc3Q6c2RyYW1Db250cm9sbGVyCnBvcnQgbWFwKAoKCWNsawkJCQk9PiBzZHJhbUN0cmxDbG9jaywKCXJlc2V0CQkJCT0+IHJlc2V0LAoJCgktLXNkcmFtIGludGVyZmFjZQoJc2RyYW1Da2UJCQk9PiBzZDFfY2tlLAoKCXNkcmFtQQkJCT0+IHNkMV9hLAoJc2RyYW1CYQkJCT0+IHNkMV9iYSwKCglzZHJhbUQJCQk9PiBzZDFfZCwKCQkKCXNkcmFtRHFtbAkJPT4gc2QxX2RxbWwsCglzZHJhbURxbWgJCT0+IHNkMV9kcW1oLAoJCglzZHJhbUNhcwkJCT0+IHNkMV9jYXMsCglzZHJhbVJhcwkJCT0+IHNkMV9yYXMsCgkKCXNkcmFtV2VuCQkJPT4gc2QxX3dlbiwKCXNkcmFtQ3NuCQkJPT4gc2QxX2NzbiwKCQoJLS1jcHUgaW50ZXJmYWNlCgljcHVTZHJhbUNFCQk9PiBzZHJhbUN0cmxDRSwKCWNwdVNkcmFtQQkJPT4gY3B1QU91dCggMjIgZG93bnRvIDAgKSwKCQoJY3B1RGF0YU91dEZvckNQVQk9PiBzZHJhbUN0cmxEYXRhT3V0Rm9yQ1BVLAoJY3B1RGF0YUluCQkJPT4gY3B1RE91dCwKCQoJY3B1V3IJCQkJCT0+IGNwdVdyLAoJY3B1RGF0YU1hc2sJCQk9PiBjcHVEYXRhTWFzaywKCWNwdVNkcmFtUmVhZHkJCT0+IHNkcmFtQ3RybFNkcmFtUmVhZHkKKTsKCgoKCmluc3RIRE1JT3V0cHV0R2VuOiBpZiAoIGluc3RIRE1JT3V0cHV0ID0gdHJ1ZSApIGdlbmVyYXRlCgotLSBwbGFjZSBoZG1pIGRpZmYgYnVmcwoKZGlmZkJ1ZlRtZHNDbGsgOiBkaWZmQnVmIAoJcG9ydCBtYXAoCgkJZGF0YWluKDApCSAJPT4gdG1kc0NsaywKCQlkYXRhb3V0KDApCSAJPT4gdG1kc091dENsaywKCQlkYXRhb3V0X2IoMCkJPT4gdG1kc091dENsa04KCSk7CgpkaWZmQnVmVG1kc0RhdGEwIDogZGlmZkJ1ZiAKCXBvcnQgbWFwKAoJCWRhdGFpbigwKQkgCT0+IHRtZHNEYXRhKDApLAoJCWRhdGFvdXQoMCkJIAk9PiB0bWRzT3V0RGF0YSgwKSwKCQlkYXRhb3V0X2IoMCkJPT4gdG1kc091dERhdGFOKDApCgkpOwoKZGlmZkJ1ZlRtZHNEYXRhMSA6IGRpZmZCdWYgCglwb3J0IG1hcCgKCQlkYXRhaW4oMCkJIAk9PiB0bWRzRGF0YSgxKSwKCQlkYXRhb3V0KDApCSAJPT4gdG1kc091dERhdGEoMSksCgkJZGF0YW91dF9iKDApCT0+IHRtZHNPdXREYXRhTigxKQoJKTsKCmRpZmZCdWZUbWRzRGF0YTIgOiBkaWZmQnVmIAoJcG9ydCBtYXAoCgkJZGF0YWluKDApCSAJPT4gdG1kc0RhdGEoMiksCgkJZGF0YW91dCgwKQkgCT0+IHRtZHNPdXREYXRhKDIpLAoJCWRhdGFvdXRfYigwKQk9PiB0bWRzT3V0RGF0YU4oMikKCSk7CgoKCi0tIHBsYWNlIGR2aSBlbmNvZGVyCgpkdmlkSW5zdDogZHZpZCAKcG9ydCBtYXAoCiAgICAgIGNsayAgICAgICA9PiBkdmlDbG9jaywKICAgICAgY2xrX3BpeGVsID0+IHBnQ2xvY2ssCiAgICAgIHJlZF9wICAgICA9PiBkdmlSZWQsCiAgICAgIGdyZWVuX3AgICA9PiBkdmlHcmVlbiwKICAgICAgYmx1ZV9wICAgID0+IGR2aUJsdWUsCiAgICAgIGJsYW5rICAgICA9PiBkdmlCbGFuaywKICAgICAgaHN5bmMgICAgID0+IGR2aUhTeW5jLAogICAgICB2c3luYyAgICAgPT4gZHZpVnN5bmMsCiAgICAgIC0tIG91dHB1dHMgdG8gVE1EUyBkcml2ZXJzCiAgICAgIHJlZF9zICAgICA9PiB0bWRzRGF0YSgyKSwKICAgICAgZ3JlZW5fcyAgID0+IHRtZHNEYXRhKDEpLAogICAgICBibHVlX3MgICAgPT4gdG1kc0RhdGEoMCksCiAgICAgIGNsb2NrX3MgICA9PiB0bWRzQ2xrCiAgICk7CgplbmQgZ2VuZXJhdGU7CgkKZW5kIGJlaGF2aW9yOwoKCg",
"BwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAuwEAAAAAAAC7AQAAAAAAAAAAAAAAAPC/"
]
]
},
{
"file": "sdramController.vhdl",
"settings":
{
"buffer_size": 11250,
"line_ending": "Windows"
},
"undo_stack":
[
]
}
],
"build_system": "Packages/User/make send.sublime-build",
"build_system_choices":
[
[
[
[
"Packages/C++/C++ Single File.sublime-build",
""
],
[
"Packages/C++/C++ Single File.sublime-build",
"Run"
]
],
[
"Packages/C++/C++ Single File.sublime-build",
""
]
],
[
[
[
"Packages/C++/C++ Single File.sublime-build",
""
],
[
"Packages/C++/C++ Single File.sublime-build",
"Run"
],
[
"Packages/Makefile/Make.sublime-build",
""
],
[
"Packages/Makefile/Make.sublime-build",
"Clean"
]
],
[
"Packages/Makefile/Make.sublime-build",
"Clean"
]
],
[
[
[
"Packages/C++/C++ Single File.sublime-build",
""
],
[
"Packages/C++/C++ Single File.sublime-build",
"Run"
],
[
"Packages/Makefile/Make.sublime-build",
""
],
[
"Packages/Makefile/Make.sublime-build",
"Clean"
],
[
"Packages/User/make send.sublime-build",
""
]
],
[
"Packages/User/make send.sublime-build",
""
]
],
[
[
[
"Packages/Makefile/Make.sublime-build",
""
],
[
"Packages/Makefile/Make.sublime-build",
"Clean"
],
[
"Packages/User/make send.sublime-build",
""
]
],
[
"Packages/User/make send.sublime-build",
""
]
]
],
"build_varint": "",
"command_palette":
{
"height": 0.0,
"last_filter": "",
"selected_items":
[
[
"Package Control: ",
"Package Control: Enable Package"
],
[
"package control: install package",
"Package Control: Install Package"
],
[
"install package control",
"Install Package Control"
]
],
"width": 0.0
},
"console":
{
"height": 141.0,
"history":
[
"help",
"dir",
"dire"
]
},
"distraction_free":
{
"menu_visible": true,
"show_minimap": false,
"show_open_files": false,
"show_tabs": false,
"side_bar_visible": false,
"status_bar_visible": false
},
"expanded_folders":
[
"/C/Users/qubec/Documents/Development/ProjektyVHDL/C4BaseBoard/RiscVSOCQ13"
],
"file_history":
[
"/C/Users/qubec/Documents/Development/ProjektyVHDL/C4BaseBoard/RiscVSOCQ13/dvid.vhd",
"/C/Users/qubec/Documents/Development/ProjektyVHDL/C4BaseBoard/RiscVSOCQ13/gouraudEdge.vhd",
"/C/Users/qubec/Documents/Development/ProjektyVHDL/C4BaseBoard/RiscVSOCQ13/gouraudIterator.vhd",
"/C/Users/qubec/Documents/Development/ProjektyVHDL/C4BaseBoard/RiscVSOCQ13/gouraudIterator16.vhd",
"/C/Users/qubec/Documents/Development/ProjektyVHDL/C4BaseBoard/RiscVSOCQ13/gouraudWeight.vhd",
"/C/Users/qubec/Documents/Development/ProjektyVHDL/C4BaseBoard/RiscVSOCQ13/InputSync.vhd",
"/C/Users/qubec/Documents/Development/ProjektyVHDL/C4BaseBoard/RiscVSOCQ13/spi.vhd",
"/C/Users/qubec/Documents/Development/ProjektyVHDL/C4BaseBoard/RiscVSOCQ13/sramController.vhd",
"/C/Users/qubec/Documents/Development/ProjektyVHDL/C4BaseBoard/RiscVSOCQ13/textureShader.vhd",
"/C/Users/qubec/Documents/Development/ProjektyVHDL/C4BaseBoard/RiscVSOCQ13/TMDS_encoder.vhd",
"/C/Users/qubec/Documents/Development/ProjektyVHDL/C4BaseBoard/RiscVSOCQ13/usbHost.vhd",
"/C/Users/qubec/Documents/Development/ProjektyVHDL/C4BaseBoard/RiscVSOCQ13/pixelAlpha.vhd",
"/C/Users/qubec/Documents/Development/ProjektyVHDL/C4BaseBoard/RiscVSOCQ13/pixelGenGfx.vhd",
"/C/Users/qubec/Documents/Development/ProjektyVHDL/C4BaseBoard/RiscVSOCQ13/pixelGenTxt.vhd",
"/C/Users/qubec/Documents/Development/ProjektyVHDL/C4BaseBoard/RiscVSOCQ13/fpAlu.vhd",
"/C/Users/qubec/Documents/Development/ProjektyVHDL/C4BaseBoard/RiscVSOCQ13/uart.vhd",
"/C/Users/qubec/Documents/Development/ProjektyVHDL/C4BaseBoard/RiscVSOCQ13/software/slideshow/Makefile",
"/C/Users/qubec/Documents/Development/ProjektyVHDL/C4BaseBoard/RiscVSOCQ13/software/slideshow/main.cpp",
"/C/Users/qubec/Documents/Development/ProjektyVHDL/C4BaseBoard/RiscVSOCQ13/software/gfxLib/diskio.cpp",
"/C/Users/qubec/Documents/Development/ProjektyVHDL/C4BaseBoard/RiscVSOCQ13/software/gfxLib/bsp.cpp",
"/C/Users/qubec/Documents/Development/ProjektyVHDL/C4BaseBoard/RiscVSOCQ13/software/gfxLib/bsp.h",
"/C/Users/qubec/Documents/Development/ProjektyVHDL/C4BaseBoard/RiscVSOCQ13/software/gfxLib/diskio.h",
"/C/Users/qubec/Documents/Development/ProjektyVHDL/C4BaseBoard/RiscVSOCQ13/software/slideshow/startup.S",
"/C/Users/qubec/Documents/Development/ProjektyVHDL/C4BaseBoard/RiscVSOCQ13/C4RiscVSOCTop.vhd",
"/C/Users/qubec/Documents/Development/ProjektyVHDL/C4BaseBoard/RiscV/gfxLib/osUIEvents.h",
"/C/Users/qubec/Documents/Development/ProjektyVHDL/C4BaseBoard/RiscV/gfxLib/usbHID.cpp",
"/C/Users/qubec/Documents/Development/ProjektyVHDL/C4BaseBoard/RiscV/gfxLib/bsp.h",
"/C/Users/qubec/Documents/Development/ProjektyVHDL/C4BaseBoard/RiscV/gfxLib/bsp.cpp",
"/C/Users/qubec/Documents/Development/ProjektyVHDL/C4BaseBoard/RiscV/gfxLib/gfFont.h",
"/C/Users/qubec/Documents/Development/ProjektyVHDL/C4BaseBoard/RiscV/gfxLib/gfFont.cpp",
"/C/Users/qubec/Documents/Development/ProjektyVHDL/C4BaseBoard/RiscV/gfxLib/gfDrawing.h",
"/C/Users/qubec/Documents/Development/ProjektyVHDL/C4BaseBoard/RiscV/gfxLib/gfJPEG.cpp",
"/C/Users/qubec/Documents/Development/ProjektyVHDL/C4BaseBoard/RiscV/gfxLib/gfBitmap.cpp",
"/C/Users/qubec/Documents/Development/ProjektyVHDL/C4BaseBoard/RiscV/gfxLibSlideshow/ram.ld",
"/C/Users/qubec/Documents/Development/ProjektyVHDL/C4BaseBoard/RiscV/gfxLib/gfBitmap.h",
"/C/Users/qubec/Documents/Development/ProjektyVHDL/C4BaseBoard/RiscV/gfxLib/gfDrawing.cpp",
"/C/Users/qubec/Documents/Development/ProjektyVHDL/C4BaseBoard/RiscV/gfxLibSlideshow/main.cpp",
"/C/Users/qubec/Documents/Development/ProjektyVHDL/C4BaseBoard/RiscV/gfxLibSlideshow/startup.S",
"/C/Users/qubec/Documents/Development/ProjektyVHDL/C4BaseBoard/RiscV/gfxLibSlideshow/main.h",
"/C/Users/qubec/Documents/Development/ProjektyVHDL/C4BaseBoard/RiscV/gfxLib/picojpeg.cpp",
"/C/Users/qubec/AppData/Roaming/Sublime Text/Packages/User/make send.sublime-build",
"/C/Users/qubec/AppData/Roaming/Sublime Text/Packages/User/Preferences.sublime-settings",
"/C/Users/qubec/Documents/Development/ProjektyVHDL/C4BaseBoard/RiscV/gfxLibSlideshow/slideshowProject.sublime-project",
"/C/Users/qubec/Documents/Development/ProjektyVHDL/C4BaseBoard/RiscV/gfxLibSlideshow/Makefile",
"/C/Users/qubec/Documents/Development/ProjektyVHDL/C4BaseBoard/RiscV/usbHidTest/main.cpp"
],
"find":
{
"height": 28.0
},
"find_in_files":
{
"height": 0.0,
"where_history":
[
]
},
"find_state":
{
"case_sensitive": false,
"find_history":
[
"bsp",
"usbhost",
"bsp",
"unused5",
"\n}",
"//#",
"float"
],
"highlight": true,
"in_selection": false,
"preserve_case": false,
"regex": false,
"replace_history":
[
],
"reverse": false,
"scrollbar_highlights": true,
"show_context": true,
"use_buffer2": true,
"use_gitignore": true,
"whole_word": false,
"wrap": true
},
"groups":
[
{
"sheets":
[
{
"buffer": 0,
"file": "C4RiscVSOCTop.vhd",
"semi_transient": false,
"settings":
{
"buffer_size": 49230,
"regions":
{
},
"selection":
[
[
0,
0
]
],
"settings":
{
"syntax": "Packages/VHDL Mode/Syntax/VHDL.sublime-syntax",
"tab_size": 3,
"translate_tabs_to_spaces": true
},
"translation.x": 0.0,
"translation.y": 8149.0,
"zoom_level": 1.0
},
"stack_index": 1,
"stack_multiselect": false,
"type": "text"
},
{
"buffer": 1,
"file": "sdramController.vhdl",
"selected": true,
"semi_transient": true,
"settings":
{
"buffer_size": 11250,
"regions":
{
},
"selection":
[
[
7377,
7377
]
],
"settings":
{
"syntax": "Packages/VHDL Mode/Syntax/VHDL.sublime-syntax",
"tab_size": 3,
"translate_tabs_to_spaces": false
},
"translation.x": 0.0,
"translation.y": 7158.0,
"zoom_level": 1.0
},
"stack_index": 0,
"stack_multiselect": false,
"type": "text"
}
]
}
],
"incremental_find":
{
"height": 28.0
},
"input":
{
"height": 0.0
},
"layout":
{
"cells":
[
[
0,
0,
1,
1
]
],
"cols":
[
0.0,
1.0
],
"rows":
[
0.0,
1.0
]
},
"menu_visible": true,
"output.exec":
{
"height": 191.0
},
"output.find_results":
{
"height": 0.0
},
"pinned_build_system": "",
"project": "C4RiscVSOC.sublime-project",
"replace":
{
"height": 52.0
},
"save_all_on_build": true,
"select_file":
{
"height": 0.0,
"last_filter": "",
"selected_items":
[
],
"width": 0.0
},
"select_project":
{
"height": 500.0,
"last_filter": "",
"selected_items":
[
[
"",
"C:\\Users\\qubec\\Documents\\Development\\ProjektyVHDL\\C4BaseBoard\\RiscV\\gfxLib\\gfxLib.sublime-workspace"
]
],
"width": 380.0
},
"select_symbol":
{
"height": 0.0,
"last_filter": "",
"selected_items":
[
],
"width": 0.0
},
"selected_group": 0,
"settings":
{
},
"show_minimap": true,
"show_open_files": false,
"show_tabs": true,
"side_bar_visible": true,
"side_bar_width": 242.0,
"status_bar_visible": true,
"template_settings":
{
}
}