aizek-chatbot 1.0.21 → 1.0.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs ADDED
@@ -0,0 +1,2121 @@
1
+ 'use strict';
2
+
3
+ var react = require('react');
4
+ var jsxRuntime = require('react/jsx-runtime');
5
+ var ReactMarkdown = require('react-markdown');
6
+ var remarkGfm = require('remark-gfm');
7
+
8
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
9
+
10
+ var ReactMarkdown__default = /*#__PURE__*/_interopDefault(ReactMarkdown);
11
+ var remarkGfm__default = /*#__PURE__*/_interopDefault(remarkGfm);
12
+
13
+ // src/styles/index.scss
14
+ var css = `@charset "UTF-8";
15
+ .message-container {
16
+ display: flex;
17
+ flex-direction: column;
18
+ width: 100%;
19
+ }
20
+ .message-container.user {
21
+ align-items: flex-end;
22
+ }
23
+ .message-container.assistant {
24
+ align-items: flex-start;
25
+ }
26
+
27
+ .message-bubble {
28
+ max-width: 80%;
29
+ padding: 12px 16px;
30
+ margin-bottom: 8px;
31
+ word-wrap: break-word;
32
+ line-height: 1.4;
33
+ font-size: 14px;
34
+ position: relative;
35
+ }
36
+ .message-bubble.user {
37
+ border-radius: 18px 18px 4px 18px;
38
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
39
+ color: #ffffff;
40
+ margin-left: auto;
41
+ margin-right: 0;
42
+ }
43
+ .message-bubble.assistant {
44
+ border-radius: 18px 18px 18px 4px;
45
+ background: #f8fafc;
46
+ color: #334155;
47
+ border: 1px solid #e2e8f0;
48
+ margin-left: 0;
49
+ margin-right: auto;
50
+ }
51
+ .message-bubble .message-typing-indicator {
52
+ display: inline-flex;
53
+ align-items: center;
54
+ margin-left: 8px;
55
+ }
56
+
57
+ .message-time {
58
+ font-size: 11px;
59
+ opacity: 0.7;
60
+ margin-top: 4px;
61
+ }
62
+
63
+ .message-time.user {
64
+ text-align: right;
65
+ }
66
+
67
+ .message-time.assistant {
68
+ text-align: left;
69
+ }
70
+
71
+ .markdown-content {
72
+ line-height: 1.6;
73
+ word-break: break-word;
74
+ }
75
+ .markdown-content + .generative-ui-container {
76
+ margin-top: 16px;
77
+ }
78
+ .markdown-content p {
79
+ margin: 0 0 12px 0;
80
+ line-height: 1.6;
81
+ }
82
+ .markdown-content p:last-child {
83
+ margin-bottom: 0;
84
+ }
85
+ .markdown-content p:first-child {
86
+ margin-top: 0;
87
+ }
88
+ .markdown-content a {
89
+ color: #667eea;
90
+ text-decoration: none;
91
+ transition: all 0.15s ease;
92
+ font-weight: 500;
93
+ border-bottom: 1px solid transparent;
94
+ }
95
+ .markdown-content a:hover {
96
+ color: #764ba2;
97
+ border-bottom-color: #764ba2;
98
+ }
99
+ .markdown-content ul,
100
+ .markdown-content ol {
101
+ margin: 12px 0;
102
+ padding-left: 20px;
103
+ }
104
+ .markdown-content ul {
105
+ list-style: none;
106
+ padding-left: 0;
107
+ }
108
+ .markdown-content ol {
109
+ list-style: decimal;
110
+ }
111
+ .markdown-content li {
112
+ margin-bottom: 8px;
113
+ line-height: 1.6;
114
+ position: relative;
115
+ padding-left: 20px;
116
+ }
117
+ .markdown-content li:last-child {
118
+ margin-bottom: 0;
119
+ }
120
+ .markdown-content li::before {
121
+ content: "\u2022";
122
+ position: absolute;
123
+ left: 0;
124
+ color: #667eea;
125
+ font-weight: bold;
126
+ font-size: 16px;
127
+ }
128
+ .markdown-content li ul,
129
+ .markdown-content li ol {
130
+ margin-top: 4px;
131
+ margin-bottom: 4px;
132
+ }
133
+ .markdown-content ol li {
134
+ padding-left: 0;
135
+ }
136
+ .markdown-content ol li::before {
137
+ content: none;
138
+ }
139
+ .markdown-content code {
140
+ background: rgba(102, 126, 234, 0.1);
141
+ color: #764ba2;
142
+ padding: 2px 6px;
143
+ border-radius: 4px;
144
+ font-family: "Monaco", "Menlo", "Ubuntu Mono", "Courier New", monospace;
145
+ font-size: 0.9em;
146
+ border: 1px solid rgba(102, 126, 234, 0.2);
147
+ }
148
+ .markdown-content pre {
149
+ background: #f8fafc;
150
+ padding: 12px 16px;
151
+ border-radius: 8px;
152
+ overflow-x: auto;
153
+ margin: 12px 0;
154
+ border: 1px solid #e2e8f0;
155
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
156
+ }
157
+ .markdown-content pre code {
158
+ background: none;
159
+ padding: 0;
160
+ border: none;
161
+ color: #1e293b;
162
+ font-size: 12px;
163
+ line-height: 1.5;
164
+ }
165
+ .markdown-content strong,
166
+ .markdown-content b {
167
+ font-weight: 600;
168
+ color: inherit;
169
+ }
170
+ .markdown-content em,
171
+ .markdown-content i {
172
+ font-style: italic;
173
+ }
174
+ .markdown-content h1,
175
+ .markdown-content h2,
176
+ .markdown-content h3,
177
+ .markdown-content h4,
178
+ .markdown-content h5,
179
+ .markdown-content h6 {
180
+ margin: 16px 0 8px 0;
181
+ font-weight: 600;
182
+ line-height: 1.4;
183
+ color: inherit;
184
+ }
185
+ .markdown-content h1:first-child,
186
+ .markdown-content h2:first-child,
187
+ .markdown-content h3:first-child,
188
+ .markdown-content h4:first-child,
189
+ .markdown-content h5:first-child,
190
+ .markdown-content h6:first-child {
191
+ margin-top: 0;
192
+ }
193
+ .markdown-content h1 {
194
+ font-size: 18px;
195
+ border-bottom: 2px solid #e2e8f0;
196
+ padding-bottom: 8px;
197
+ }
198
+ .markdown-content h2 {
199
+ font-size: 16px;
200
+ }
201
+ .markdown-content h3 {
202
+ font-size: 15px;
203
+ }
204
+ .markdown-content h4,
205
+ .markdown-content h5,
206
+ .markdown-content h6 {
207
+ font-size: 14px;
208
+ }
209
+ .markdown-content blockquote {
210
+ border-left: 3px solid #667eea;
211
+ padding-left: 12px;
212
+ margin: 12px 0;
213
+ color: inherit;
214
+ opacity: 0.9;
215
+ font-style: italic;
216
+ background: rgba(102, 126, 234, 0.05);
217
+ padding: 8px 12px;
218
+ border-radius: 0 4px 4px 0;
219
+ }
220
+ .markdown-content blockquote p {
221
+ margin: 0;
222
+ }
223
+ .markdown-content hr {
224
+ border: none;
225
+ border-top: 1px solid #e2e8f0;
226
+ margin: 16px 0;
227
+ }
228
+ .markdown-content table {
229
+ border-collapse: collapse;
230
+ width: 100%;
231
+ margin: 12px 0;
232
+ font-size: 12px;
233
+ border-radius: 8px;
234
+ overflow: hidden;
235
+ border: 1px solid #e2e8f0;
236
+ }
237
+ .markdown-content th,
238
+ .markdown-content td {
239
+ padding: 10px 12px;
240
+ text-align: left;
241
+ border-bottom: 1px solid #e2e8f0;
242
+ }
243
+ .markdown-content th {
244
+ background: #f1f5f9;
245
+ font-weight: 600;
246
+ color: #1e293b;
247
+ border-bottom: 2px solid #cbd5e1;
248
+ }
249
+ .markdown-content tr:last-child td {
250
+ border-bottom: none;
251
+ }
252
+ .markdown-content tbody tr {
253
+ transition: background-color 0.15s ease;
254
+ }
255
+ .markdown-content tbody tr:hover {
256
+ background-color: rgba(102, 126, 234, 0.05);
257
+ }
258
+ .markdown-content img {
259
+ max-width: 100%;
260
+ height: auto;
261
+ border-radius: 8px;
262
+ margin: 8px 0;
263
+ }
264
+ .markdown-content input[type=checkbox] {
265
+ margin-right: 6px;
266
+ }
267
+
268
+ .message-bubble.user .markdown-content {
269
+ color: #ffffff;
270
+ }
271
+ .message-bubble.user .markdown-content a {
272
+ color: #ffffff;
273
+ border-bottom-color: rgba(255, 255, 255, 0.4);
274
+ font-weight: 600;
275
+ }
276
+ .message-bubble.user .markdown-content a:hover {
277
+ border-bottom-color: #ffffff;
278
+ }
279
+ .message-bubble.user .markdown-content li::before {
280
+ color: #ffffff;
281
+ }
282
+ .message-bubble.user .markdown-content code {
283
+ background: rgba(255, 255, 255, 0.2);
284
+ color: #ffffff;
285
+ border-color: rgba(255, 255, 255, 0.3);
286
+ }
287
+ .message-bubble.user .markdown-content pre {
288
+ background: rgba(255, 255, 255, 0.1);
289
+ border-color: rgba(255, 255, 255, 0.2);
290
+ }
291
+ .message-bubble.user .markdown-content pre code {
292
+ color: #ffffff;
293
+ }
294
+ .message-bubble.user .markdown-content h1 {
295
+ border-bottom-color: rgba(255, 255, 255, 0.3);
296
+ }
297
+ .message-bubble.user .markdown-content blockquote {
298
+ border-left-color: #ffffff;
299
+ background: rgba(255, 255, 255, 0.1);
300
+ color: #ffffff;
301
+ }
302
+ .message-bubble.user .markdown-content hr {
303
+ border-top-color: rgba(255, 255, 255, 0.3);
304
+ }
305
+ .message-bubble.user .markdown-content table {
306
+ border-color: rgba(255, 255, 255, 0.3);
307
+ }
308
+ .message-bubble.user .markdown-content th,
309
+ .message-bubble.user .markdown-content td {
310
+ border-bottom-color: rgba(255, 255, 255, 0.2);
311
+ }
312
+ .message-bubble.user .markdown-content th {
313
+ background: rgba(255, 255, 255, 0.15);
314
+ color: #ffffff;
315
+ border-bottom-color: rgba(255, 255, 255, 0.3);
316
+ }
317
+ .message-bubble.user .markdown-content tbody tr:hover {
318
+ background-color: rgba(255, 255, 255, 0.1);
319
+ }
320
+
321
+ .message-bubble.assistant .markdown-content {
322
+ color: #334155;
323
+ }
324
+ .message-bubble.assistant .markdown-content a {
325
+ color: #667eea;
326
+ }
327
+ .message-bubble.assistant .markdown-content a:hover {
328
+ color: #764ba2;
329
+ }
330
+ .message-bubble.assistant .markdown-content li::before {
331
+ color: #667eea;
332
+ }
333
+ .message-bubble.assistant .markdown-content code {
334
+ background: rgba(102, 126, 234, 0.1);
335
+ color: #764ba2;
336
+ border-color: rgba(102, 126, 234, 0.2);
337
+ }
338
+ .message-bubble.assistant .markdown-content pre {
339
+ background: #ffffff;
340
+ border-color: #e2e8f0;
341
+ }
342
+ .message-bubble.assistant .markdown-content pre code {
343
+ color: #1e293b;
344
+ }
345
+ .message-bubble.assistant .markdown-content h1,
346
+ .message-bubble.assistant .markdown-content h2,
347
+ .message-bubble.assistant .markdown-content h3,
348
+ .message-bubble.assistant .markdown-content h4,
349
+ .message-bubble.assistant .markdown-content h5,
350
+ .message-bubble.assistant .markdown-content h6 {
351
+ color: #1e293b;
352
+ }
353
+ .message-bubble.assistant .markdown-content h1 {
354
+ border-bottom-color: #e2e8f0;
355
+ }
356
+ .message-bubble.assistant .markdown-content strong,
357
+ .message-bubble.assistant .markdown-content b {
358
+ color: #0f172a;
359
+ }
360
+ .message-bubble.assistant .markdown-content blockquote {
361
+ border-left-color: #667eea;
362
+ background: rgba(102, 126, 234, 0.05);
363
+ color: #334155;
364
+ }
365
+ .message-bubble.assistant .markdown-content th {
366
+ background: #f1f5f9;
367
+ color: #1e293b;
368
+ }
369
+ .message-bubble.assistant .markdown-content tbody tr:hover {
370
+ background-color: rgba(102, 126, 234, 0.05);
371
+ }
372
+
373
+ .input-container {
374
+ display: flex;
375
+ align-items: flex-end;
376
+ gap: 12px;
377
+ padding: 16px;
378
+ background: #ffffff;
379
+ border-top: 1px solid #e2e8f0;
380
+ border-radius: 0 0 12px 12px;
381
+ }
382
+
383
+ .textarea {
384
+ flex: 1;
385
+ min-height: 44px;
386
+ max-height: 120px;
387
+ padding: 12px 16px;
388
+ border: 1px solid #e2e8f0;
389
+ border-radius: 22px;
390
+ font-size: 14px;
391
+ line-height: 1.4;
392
+ resize: none;
393
+ outline: none;
394
+ transition: border-color 0.2s ease, box-shadow 0.2s ease;
395
+ font-family: inherit;
396
+ background: #f8fafc;
397
+ color: #334155;
398
+ }
399
+ .textarea:disabled {
400
+ opacity: 0.6;
401
+ cursor: not-allowed;
402
+ }
403
+ .textarea:focus:not(:disabled) {
404
+ border-color: #3b82f6;
405
+ box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
406
+ }
407
+
408
+ .send-button {
409
+ width: 44px;
410
+ height: 44px;
411
+ border-radius: 50%;
412
+ border: none;
413
+ color: #ffffff;
414
+ cursor: pointer;
415
+ display: flex;
416
+ align-items: center;
417
+ justify-content: center;
418
+ transition: all 0.2s ease;
419
+ font-size: 16px;
420
+ }
421
+ .send-button:disabled {
422
+ background: #e2e8f0;
423
+ cursor: not-allowed;
424
+ }
425
+ .send-button:not(:disabled) {
426
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
427
+ }
428
+ .send-button:not(:disabled):hover {
429
+ transform: scale(1.05);
430
+ }
431
+
432
+ .header {
433
+ padding: 16px 20px;
434
+ color: #ffffff;
435
+ display: flex;
436
+ align-items: center;
437
+ gap: 12px;
438
+ }
439
+
440
+ .logo-container {
441
+ width: 40px;
442
+ height: 40px;
443
+ border-radius: 50%;
444
+ background: rgba(255, 255, 255, 0.2);
445
+ display: flex;
446
+ align-items: center;
447
+ justify-content: center;
448
+ font-size: 18px;
449
+ overflow: hidden;
450
+ }
451
+
452
+ .logo-image {
453
+ width: 100%;
454
+ height: 100%;
455
+ object-fit: cover;
456
+ border-radius: 50%;
457
+ }
458
+
459
+ .logo-text {
460
+ font-size: 16px;
461
+ font-weight: bold;
462
+ }
463
+
464
+ .company-name {
465
+ margin: 0;
466
+ font-size: 16px;
467
+ font-weight: 600;
468
+ }
469
+
470
+ .status-text {
471
+ margin: 0;
472
+ font-size: 12px;
473
+ opacity: 0.8;
474
+ }
475
+
476
+ .button-sizes.small {
477
+ width: 50px;
478
+ height: 50px;
479
+ font-size: 20px;
480
+ }
481
+ .button-sizes.medium {
482
+ width: 60px;
483
+ height: 60px;
484
+ font-size: 24px;
485
+ }
486
+ .button-sizes.large {
487
+ width: 70px;
488
+ height: 70px;
489
+ font-size: 28px;
490
+ }
491
+
492
+ .floating-button {
493
+ position: fixed;
494
+ bottom: 20px;
495
+ border-radius: 50%;
496
+ border: none;
497
+ color: #ffffff;
498
+ cursor: pointer;
499
+ display: flex;
500
+ align-items: center;
501
+ justify-content: center;
502
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
503
+ transition: all 0.3s ease;
504
+ z-index: 1000;
505
+ }
506
+ .floating-button.bottom-left {
507
+ left: 20px;
508
+ }
509
+ .floating-button.bottom-right {
510
+ right: 20px;
511
+ }
512
+ .floating-button.is-open {
513
+ transform: scale(0.9);
514
+ }
515
+ .floating-button:hover {
516
+ box-shadow: 0 6px 20px rgba(0, 0, 0, 0.25);
517
+ }
518
+
519
+ .chat-container {
520
+ position: fixed;
521
+ bottom: 90px;
522
+ z-index: 9999999;
523
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
524
+ }
525
+ .chat-container.bottom-left {
526
+ left: 20px;
527
+ transform-origin: bottom left;
528
+ }
529
+ .chat-container.bottom-right {
530
+ right: 20px;
531
+ transform-origin: bottom right;
532
+ }
533
+ .chat-container.is-open {
534
+ transform: translateY(0) scale(1);
535
+ opacity: 1;
536
+ visibility: visible;
537
+ }
538
+ .chat-container:not(.is-open) {
539
+ transform: translateY(20px) scale(0.95);
540
+ opacity: 0;
541
+ visibility: hidden;
542
+ }
543
+
544
+ .overlay {
545
+ position: fixed;
546
+ top: 0;
547
+ left: 0;
548
+ right: 0;
549
+ bottom: 0;
550
+ background: rgba(0, 0, 0, 0.1);
551
+ z-index: 998;
552
+ transition: all 0.3s ease;
553
+ }
554
+ .overlay.is-open {
555
+ opacity: 1;
556
+ visibility: visible;
557
+ }
558
+ .overlay:not(.is-open) {
559
+ opacity: 0;
560
+ visibility: hidden;
561
+ }
562
+
563
+ .chatbot-container {
564
+ display: flex;
565
+ flex-direction: column;
566
+ height: 100%;
567
+ background: #ffffff;
568
+ border-radius: 12px;
569
+ box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
570
+ border: 1px solid #e2e8f0;
571
+ overflow: hidden;
572
+ }
573
+
574
+ .messages-container {
575
+ flex: 1;
576
+ overflow-y: auto;
577
+ padding: 16px;
578
+ display: flex;
579
+ flex-direction: column;
580
+ gap: 4px;
581
+ background: #f8fafc;
582
+ }
583
+
584
+ .empty-state {
585
+ display: flex;
586
+ flex-direction: column;
587
+ align-items: center;
588
+ justify-content: center;
589
+ height: 100%;
590
+ color: #64748b;
591
+ text-align: center;
592
+ padding: 40px 20px;
593
+ }
594
+ .empty-state .empty-state-icon {
595
+ font-size: 48px;
596
+ margin-bottom: 16px;
597
+ }
598
+ .empty-state .empty-state-title {
599
+ margin: 0 0 8px 0;
600
+ font-size: 18px;
601
+ }
602
+ .empty-state .empty-state-description {
603
+ margin: 0;
604
+ font-size: 14px;
605
+ opacity: 0.8;
606
+ }
607
+
608
+ @keyframes spin {
609
+ from {
610
+ transform: rotate(0deg);
611
+ }
612
+ to {
613
+ transform: rotate(360deg);
614
+ }
615
+ }
616
+ .loading-spinner {
617
+ width: 16px;
618
+ height: 16px;
619
+ border: 2px solid transparent;
620
+ border-top: 2px solid currentColor;
621
+ border-radius: 50%;
622
+ animation: spin 1s linear infinite;
623
+ }
624
+
625
+ @keyframes slideDown {
626
+ from {
627
+ opacity: 0;
628
+ transform: translateY(-10px);
629
+ }
630
+ to {
631
+ opacity: 1;
632
+ transform: translateY(0);
633
+ }
634
+ }
635
+ .alert-container {
636
+ border-radius: 12px;
637
+ padding: 14px 16px;
638
+ margin: 12px 16px;
639
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
640
+ color: #ffffff;
641
+ font-size: 13px;
642
+ display: flex;
643
+ align-items: flex-start;
644
+ gap: 12px;
645
+ position: relative;
646
+ animation: slideDown 0.3s ease ease-out;
647
+ }
648
+ .alert-container.error {
649
+ background: linear-gradient(135deg, #ef4444 0%, #dc2626 100%);
650
+ border: 1px solid #dc2626;
651
+ box-shadow: 0 4px 12px rgba(239, 68, 68, 0.2);
652
+ }
653
+ .alert-container.warning {
654
+ background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);
655
+ border: 1px solid #d97706;
656
+ box-shadow: 0 4px 12px rgba(245, 158, 11, 0.2);
657
+ }
658
+ .alert-container.success {
659
+ background: linear-gradient(135deg, #10b981 0%, #059669 100%);
660
+ border: 1px solid #059669;
661
+ box-shadow: 0 4px 12px rgba(16, 185, 129, 0.2);
662
+ }
663
+
664
+ .alert-icon-container {
665
+ display: flex;
666
+ align-items: center;
667
+ justify-content: center;
668
+ width: 24px;
669
+ height: 24px;
670
+ flex-shrink: 0;
671
+ margin-top: 2px;
672
+ }
673
+
674
+ .alert-content {
675
+ flex: 1;
676
+ display: flex;
677
+ flex-direction: column;
678
+ gap: 8px;
679
+ }
680
+
681
+ .alert-title {
682
+ font-weight: 600;
683
+ font-size: 14px;
684
+ margin: 0;
685
+ line-height: 1.4;
686
+ }
687
+
688
+ .alert-message {
689
+ margin: 0;
690
+ line-height: 1.5;
691
+ opacity: 0.95;
692
+ }
693
+
694
+ .alert-list {
695
+ margin: 8px 0 0 0;
696
+ padding-left: 20px;
697
+ list-style: none;
698
+ }
699
+
700
+ .alert-list-item {
701
+ margin-bottom: 4px;
702
+ position: relative;
703
+ padding-left: 12px;
704
+ line-height: 1.4;
705
+ }
706
+ .alert-list-item li > span {
707
+ position: "absolute";
708
+ left: 0;
709
+ top: 2px;
710
+ font-weight: bold;
711
+ }
712
+ .alert-list-item li > code {
713
+ background: rgba(255, 255, 255, 0.2);
714
+ padding: 2px 6px;
715
+ border-radius: 4px;
716
+ font-size: 12px;
717
+ }
718
+
719
+ .alert-close-button {
720
+ position: absolute;
721
+ top: 12px;
722
+ right: 12px;
723
+ background: rgba(255, 255, 255, 0.2);
724
+ border: none;
725
+ border-radius: 6px;
726
+ width: 24px;
727
+ height: 24px;
728
+ display: flex;
729
+ align-items: center;
730
+ justify-content: center;
731
+ cursor: pointer;
732
+ color: #ffffff;
733
+ transition: all 0.2s ease;
734
+ padding: 0;
735
+ }
736
+ .alert-close-button:hover {
737
+ background: rgba(255, 255, 255, 0.3);
738
+ }
739
+
740
+ .ui-renderer {
741
+ display: flex;
742
+ flex-direction: column;
743
+ gap: 16px;
744
+ width: 100%;
745
+ }
746
+
747
+ .form-component {
748
+ width: 100%;
749
+ max-width: 500px;
750
+ border: 1px solid #e0e0e0;
751
+ border-radius: 12px;
752
+ padding: 24px;
753
+ background-color: #ffffff;
754
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
755
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
756
+ }
757
+
758
+ .form-title {
759
+ font-weight: 600;
760
+ font-size: 16px;
761
+ margin-bottom: 20px;
762
+ color: #1a1a1a;
763
+ margin-top: 0;
764
+ }
765
+
766
+ .form-fields {
767
+ display: flex;
768
+ flex-direction: column;
769
+ gap: 20px;
770
+ }
771
+
772
+ .form-field {
773
+ display: flex;
774
+ flex-direction: column;
775
+ gap: 8px;
776
+ }
777
+
778
+ .form-label {
779
+ font-weight: 500;
780
+ font-size: 13px;
781
+ color: #475569;
782
+ display: flex;
783
+ align-items: center;
784
+ gap: 4px;
785
+ }
786
+ .form-label span {
787
+ color: #ef4444;
788
+ font-size: 12px;
789
+ }
790
+
791
+ .form-input,
792
+ .form-select {
793
+ border: 1px solid #d1d5db;
794
+ border-radius: 8px;
795
+ padding: 10px 12px;
796
+ font-size: 13px;
797
+ color: #1a1a1a;
798
+ background-color: #ffffff;
799
+ font-family: inherit;
800
+ outline: none;
801
+ transition: border-color 0.15s ease, box-shadow 0.15s ease;
802
+ cursor: pointer;
803
+ }
804
+ .form-input:focus,
805
+ .form-select:focus {
806
+ border-color: #3b82f6;
807
+ box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
808
+ }
809
+
810
+ .form-select {
811
+ cursor: pointer;
812
+ }
813
+
814
+ .form-submit-button {
815
+ margin-top: 24px;
816
+ display: inline-flex;
817
+ align-items: center;
818
+ justify-content: center;
819
+ border-radius: 8px;
820
+ padding: 12px 24px;
821
+ font-size: 13px;
822
+ font-weight: 500;
823
+ background-color: #3b82f6;
824
+ color: #ffffff;
825
+ border: none;
826
+ cursor: pointer;
827
+ transition: background-color 0.15s ease, transform 0.1s ease;
828
+ font-family: inherit;
829
+ }
830
+ .form-submit-button:hover {
831
+ background-color: #2563eb;
832
+ }
833
+ .form-submit-button:active {
834
+ transform: scale(0.98);
835
+ }
836
+
837
+ .buttons-component {
838
+ display: flex;
839
+ gap: 12px;
840
+ flex-wrap: wrap;
841
+ }
842
+
843
+ .button-component {
844
+ border-radius: 8px;
845
+ padding: 10px 20px;
846
+ font-size: 13px;
847
+ font-weight: 500;
848
+ border: 1px solid #e0e0e0;
849
+ background-color: #ffffff;
850
+ color: #475569;
851
+ cursor: pointer;
852
+ transition: all 0.15s ease;
853
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
854
+ outline: none;
855
+ }
856
+ .button-component.primary {
857
+ background-color: #3b82f6;
858
+ color: #ffffff;
859
+ border-color: #3b82f6;
860
+ }
861
+ .button-component.primary:hover {
862
+ background-color: #2563eb;
863
+ border-color: #2563eb;
864
+ }
865
+ .button-component.secondary {
866
+ background-color: #f3f4f6;
867
+ color: #475569;
868
+ border-color: #d1d5db;
869
+ }
870
+ .button-component.secondary:hover {
871
+ background-color: #e5e7eb;
872
+ border-color: #9ca3af;
873
+ }
874
+ .button-component.danger {
875
+ background-color: #ef4444;
876
+ color: #ffffff;
877
+ border-color: #ef4444;
878
+ }
879
+ .button-component.danger:hover {
880
+ background-color: #dc2626;
881
+ border-color: #dc2626;
882
+ }
883
+ .button-component:not(.primary):not(.secondary):not(.danger):hover {
884
+ background-color: #f9fafb;
885
+ border-color: #d1d5db;
886
+ }
887
+ .button-component:active {
888
+ transform: scale(0.97);
889
+ }
890
+
891
+ .table-component {
892
+ border: 1px solid #e0e0e0;
893
+ border-radius: 12px;
894
+ overflow: hidden;
895
+ font-size: 13px;
896
+ background-color: #ffffff;
897
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
898
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
899
+ }
900
+
901
+ .table-caption {
902
+ padding: 16px 20px;
903
+ font-weight: 600;
904
+ font-size: 14px;
905
+ border-bottom: 1px solid #e0e0e0;
906
+ background-color: #f8f9fa;
907
+ color: #1a1a1a;
908
+ }
909
+
910
+ .table-wrapper {
911
+ overflow-x: auto;
912
+ }
913
+
914
+ .table {
915
+ width: 100%;
916
+ border-collapse: collapse;
917
+ min-width: 100%;
918
+ }
919
+
920
+ .table-header {
921
+ background-color: #f8f9fa;
922
+ }
923
+
924
+ .table-th {
925
+ border-bottom: 2px solid #e0e0e0;
926
+ padding: 14px 20px;
927
+ text-align: left;
928
+ font-weight: 600;
929
+ font-size: 12px;
930
+ color: #4a5568;
931
+ text-transform: uppercase;
932
+ letter-spacing: 0.5px;
933
+ white-space: nowrap;
934
+ }
935
+
936
+ .table-tbody tr {
937
+ background-color: #ffffff;
938
+ transition: background-color 0.15s ease;
939
+ }
940
+ .table-tbody tr:nth-child(even) {
941
+ background-color: #fafbfc;
942
+ }
943
+ .table-tbody tr:hover {
944
+ background-color: #f0f4f8;
945
+ }
946
+
947
+ .table-td {
948
+ border-bottom: 1px solid #e8e8e8;
949
+ padding: 16px 20px;
950
+ font-size: 13px;
951
+ vertical-align: middle;
952
+ }
953
+ .table-td > span {
954
+ color: #a0a0a0;
955
+ font-style: italic;
956
+ }
957
+
958
+ .table-cell-image {
959
+ display: flex;
960
+ align-items: center;
961
+ }
962
+
963
+ .table-image {
964
+ width: 40px;
965
+ height: 40px;
966
+ border-radius: 8px;
967
+ object-fit: cover;
968
+ border: 1px solid #e0e0e0;
969
+ }
970
+
971
+ .table-cell-text {
972
+ color: #2d3748;
973
+ line-height: 1.5;
974
+ }
975
+
976
+ .table-empty {
977
+ padding: 40px;
978
+ text-align: center;
979
+ color: #9ca3af;
980
+ font-size: 13px;
981
+ }
982
+
983
+ .card-component {
984
+ border: 1px solid #e5e7eb;
985
+ border-radius: 16px;
986
+ padding: 16px;
987
+ background-color: #ffffff;
988
+ box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1);
989
+ overflow: hidden;
990
+ margin-bottom: 12px;
991
+ }
992
+
993
+ .card-content {
994
+ display: flex;
995
+ gap: 12px;
996
+ }
997
+
998
+ .card-image {
999
+ width: 64px;
1000
+ height: 64px;
1001
+ border-radius: 8px;
1002
+ object-fit: cover;
1003
+ flex-shrink: 0;
1004
+ }
1005
+
1006
+ .card-info {
1007
+ flex: 1;
1008
+ min-width: 0;
1009
+ }
1010
+
1011
+ .card-title {
1012
+ font-weight: 600;
1013
+ font-size: 14px;
1014
+ margin-bottom: 8px;
1015
+ overflow: hidden;
1016
+ text-overflow: ellipsis;
1017
+ white-space: nowrap;
1018
+ }
1019
+
1020
+ .card-subtitle {
1021
+ color: #64748b;
1022
+ font-size: 12px;
1023
+ margin-bottom: 4px;
1024
+ margin: 0;
1025
+ }
1026
+
1027
+ .card-status {
1028
+ display: flex;
1029
+ gap: 8px;
1030
+ font-size: 12px;
1031
+ margin-bottom: 4px;
1032
+ }
1033
+
1034
+ .card-status-label {
1035
+ color: #64748b;
1036
+ font-weight: 500;
1037
+ }
1038
+
1039
+ .card-status-value {
1040
+ color: #475569;
1041
+ }
1042
+
1043
+ .card-fields {
1044
+ display: flex;
1045
+ flex-direction: column;
1046
+ gap: 4px;
1047
+ }
1048
+
1049
+ .card-field {
1050
+ display: flex;
1051
+ gap: 8px;
1052
+ font-size: 12px;
1053
+ }
1054
+
1055
+ .card-field-label {
1056
+ color: #64748b;
1057
+ font-weight: 500;
1058
+ }
1059
+
1060
+ .card-field-value {
1061
+ color: #475569;
1062
+ }
1063
+
1064
+ .card-description {
1065
+ color: #64748b;
1066
+ font-size: 12px;
1067
+ margin-top: 8px;
1068
+ margin: 0;
1069
+ }
1070
+
1071
+ .card-list {
1072
+ width: 100%;
1073
+ }
1074
+
1075
+ .card-list-title {
1076
+ font-weight: 600;
1077
+ margin-bottom: 12px;
1078
+ font-size: 14px;
1079
+ color: #1a1a1a;
1080
+ margin-top: 0;
1081
+ }
1082
+
1083
+ .card-list-description {
1084
+ color: #64748b;
1085
+ margin-bottom: 12px;
1086
+ font-size: 12px;
1087
+ margin-top: 0;
1088
+ }
1089
+
1090
+ .card-grid {
1091
+ display: grid;
1092
+ grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
1093
+ gap: 12px;
1094
+ }
1095
+
1096
+ .card-item {
1097
+ font-size: 12px;
1098
+ border: 1px solid #e0e0e0;
1099
+ border-radius: 12px;
1100
+ padding: 16px;
1101
+ background-color: #ffffff;
1102
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
1103
+ overflow: hidden;
1104
+ }
1105
+
1106
+ .card-item-content {
1107
+ display: flex;
1108
+ gap: 12px;
1109
+ }
1110
+
1111
+ .card-item-image {
1112
+ width: 64px;
1113
+ height: 64px;
1114
+ border-radius: 8px;
1115
+ object-fit: cover;
1116
+ flex-shrink: 0;
1117
+ }
1118
+
1119
+ .card-item-info {
1120
+ flex: 1;
1121
+ min-width: 0;
1122
+ }
1123
+
1124
+ .card-item-title {
1125
+ font-weight: 600;
1126
+ font-size: 14px;
1127
+ margin-bottom: 4px;
1128
+ overflow: hidden;
1129
+ text-overflow: ellipsis;
1130
+ white-space: nowrap;
1131
+ color: #1a1a1a;
1132
+ margin-top: 0;
1133
+ }
1134
+
1135
+ .card-item-subtitle {
1136
+ color: #64748b;
1137
+ font-size: 12px;
1138
+ margin: 0;
1139
+ }
1140
+
1141
+ .card-item-legacy {
1142
+ display: flex;
1143
+ justify-content: space-between;
1144
+ gap: 8px;
1145
+ font-size: 12px;
1146
+ }
1147
+
1148
+ .card-item-legacy-label {
1149
+ color: #64748b;
1150
+ margin: 0;
1151
+ }
1152
+
1153
+ .card-item-legacy-value {
1154
+ font-weight: 500;
1155
+ color: #1a1a1a;
1156
+ margin: 0;
1157
+ }
1158
+
1159
+ .field-image {
1160
+ width: 24px;
1161
+ height: 24px;
1162
+ border-radius: 999px;
1163
+ object-fit: cover;
1164
+ }
1165
+
1166
+ .field-link {
1167
+ text-decoration: underline;
1168
+ }
1169
+
1170
+ .field-badge {
1171
+ display: inline-block;
1172
+ padding: 2px 6px;
1173
+ border-radius: 999px;
1174
+ font-size: 10px;
1175
+ font-weight: 500;
1176
+ }
1177
+ .field-badge.success {
1178
+ background-color: #e0fce5;
1179
+ color: #1a7f36;
1180
+ }
1181
+ .field-badge.warning {
1182
+ background-color: #fff7d6;
1183
+ color: #8a6a00;
1184
+ }
1185
+ .field-badge.danger {
1186
+ background-color: #ffe4e4;
1187
+ color: #b42318;
1188
+ }
1189
+ .field-badge:not(.success):not(.warning):not(.danger) {
1190
+ background-color: #f2f2f2;
1191
+ color: #333;
1192
+ }
1193
+
1194
+ .field-list {
1195
+ margin: 0;
1196
+ padding-left: 16px;
1197
+ }
1198
+
1199
+ .generative-ui-container {
1200
+ display: flex;
1201
+ flex-direction: column;
1202
+ gap: 16px;
1203
+ width: 100%;
1204
+ }
1205
+
1206
+ .generative-ui-header {
1207
+ margin-bottom: 12px;
1208
+ }
1209
+
1210
+ .generative-ui-title {
1211
+ font-size: 18px;
1212
+ font-weight: 600;
1213
+ color: #0f172a;
1214
+ margin: 0 0 8px 0;
1215
+ }
1216
+
1217
+ .generative-ui-description {
1218
+ font-size: 14px;
1219
+ color: #475569;
1220
+ margin: 0;
1221
+ line-height: 1.5;
1222
+ }
1223
+
1224
+ .gen-ui-text {
1225
+ font-size: 13px;
1226
+ color: #1e293b;
1227
+ line-height: 1.6;
1228
+ margin: 0;
1229
+ }
1230
+
1231
+ .gen-ui-input-wrapper {
1232
+ display: flex;
1233
+ flex-direction: column;
1234
+ gap: 8px;
1235
+ }
1236
+
1237
+ .gen-ui-input-label {
1238
+ font-size: 12px;
1239
+ font-weight: 500;
1240
+ color: #334155;
1241
+ margin: 0;
1242
+ }
1243
+
1244
+ .gen-ui-input,
1245
+ .gen-ui-textarea {
1246
+ width: 100%;
1247
+ padding: 10px 12px;
1248
+ border: 1px solid #cbd5e1;
1249
+ border-radius: 8px;
1250
+ font-size: 13px;
1251
+ color: #0f172a;
1252
+ background-color: #ffffff;
1253
+ outline: none;
1254
+ transition: border-color 0.2s ease, box-shadow 0.2s ease;
1255
+ font-family: inherit;
1256
+ }
1257
+ .gen-ui-input::placeholder,
1258
+ .gen-ui-textarea::placeholder {
1259
+ color: #94a3b8;
1260
+ }
1261
+ .gen-ui-input:focus,
1262
+ .gen-ui-textarea:focus {
1263
+ border-color: #3b82f6;
1264
+ box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
1265
+ }
1266
+ .gen-ui-input:disabled,
1267
+ .gen-ui-textarea:disabled {
1268
+ background-color: #f1f5f9;
1269
+ cursor: not-allowed;
1270
+ opacity: 0.6;
1271
+ }
1272
+
1273
+ .gen-ui-textarea {
1274
+ min-height: 80px;
1275
+ resize: vertical;
1276
+ }
1277
+
1278
+ .gen-ui-select-wrapper {
1279
+ display: flex;
1280
+ flex-direction: column;
1281
+ gap: 8px;
1282
+ }
1283
+
1284
+ .gen-ui-select-label {
1285
+ font-size: 12px;
1286
+ font-weight: 500;
1287
+ color: #334155;
1288
+ margin: 0;
1289
+ }
1290
+
1291
+ .gen-ui-select {
1292
+ width: 100%;
1293
+ padding: 10px 12px;
1294
+ border: 1px solid #cbd5e1;
1295
+ border-radius: 8px;
1296
+ font-size: 13px;
1297
+ color: #0f172a;
1298
+ background-color: #ffffff;
1299
+ outline: none;
1300
+ transition: border-color 0.2s ease, box-shadow 0.2s ease;
1301
+ cursor: pointer;
1302
+ font-family: inherit;
1303
+ }
1304
+ .gen-ui-select:focus {
1305
+ border-color: #3b82f6;
1306
+ box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
1307
+ }
1308
+ .gen-ui-select:disabled {
1309
+ background-color: #f1f5f9;
1310
+ cursor: not-allowed;
1311
+ opacity: 0.6;
1312
+ }
1313
+
1314
+ .gen-ui-button {
1315
+ display: inline-flex;
1316
+ align-items: center;
1317
+ justify-content: center;
1318
+ padding: 10px 16px;
1319
+ border-radius: 8px;
1320
+ font-size: 13px;
1321
+ font-weight: 500;
1322
+ border: none;
1323
+ cursor: pointer;
1324
+ transition: all 0.2s ease;
1325
+ font-family: inherit;
1326
+ outline: none;
1327
+ background: #2563eb;
1328
+ color: #ffffff;
1329
+ }
1330
+ .gen-ui-button:hover {
1331
+ background: #1d4ed8;
1332
+ }
1333
+ .gen-ui-button:active {
1334
+ transform: scale(0.98);
1335
+ }
1336
+ .gen-ui-button:disabled {
1337
+ background: #cbd5e1;
1338
+ cursor: not-allowed;
1339
+ opacity: 0.6;
1340
+ }
1341
+
1342
+ .gen-ui-card {
1343
+ border: 1px solid #e2e8f0;
1344
+ border-radius: 12px;
1345
+ padding: 16px;
1346
+ background-color: #ffffff;
1347
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
1348
+ transition: box-shadow 0.2s ease;
1349
+ }
1350
+ .gen-ui-card:hover {
1351
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
1352
+ }
1353
+
1354
+ .gen-ui-card-title {
1355
+ font-size: 16px;
1356
+ font-weight: 600;
1357
+ color: #0f172a;
1358
+ margin: 0 0 8px 0;
1359
+ }
1360
+
1361
+ .gen-ui-card-content {
1362
+ font-size: 13px;
1363
+ color: #334155;
1364
+ margin: 0;
1365
+ line-height: 1.5;
1366
+ }
1367
+
1368
+ .gen-ui-list {
1369
+ list-style-type: disc;
1370
+ padding-left: 20px;
1371
+ margin: 0;
1372
+ }
1373
+
1374
+ .gen-ui-list-item {
1375
+ font-size: 13px;
1376
+ color: #1e293b;
1377
+ line-height: 1.6;
1378
+ margin-bottom: 4px;
1379
+ }
1380
+ .gen-ui-list-item:last-child {
1381
+ margin-bottom: 0;
1382
+ }
1383
+
1384
+ .gen-ui-image {
1385
+ max-width: 100%;
1386
+ height: auto;
1387
+ border-radius: 8px;
1388
+ display: block;
1389
+ }
1390
+
1391
+ .gen-ui-link {
1392
+ color: #2563eb;
1393
+ text-decoration: none;
1394
+ font-size: 13px;
1395
+ transition: color 0.2s ease;
1396
+ }
1397
+ .gen-ui-link:hover {
1398
+ color: #1d4ed8;
1399
+ text-decoration: underline;
1400
+ }
1401
+ .gen-ui-link:visited {
1402
+ color: #2563eb;
1403
+ }
1404
+
1405
+ .gen-ui-table-wrapper {
1406
+ width: 100%;
1407
+ overflow-x: auto;
1408
+ border: 1px solid #e2e8f0;
1409
+ border-radius: 12px;
1410
+ background-color: #ffffff;
1411
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
1412
+ }
1413
+
1414
+ .gen-ui-table {
1415
+ width: 100%;
1416
+ border-collapse: collapse;
1417
+ min-width: 100%;
1418
+ }
1419
+
1420
+ .gen-ui-table-header {
1421
+ background-color: #f8fafc;
1422
+ }
1423
+
1424
+ .gen-ui-table-th {
1425
+ padding: 12px 16px;
1426
+ text-align: left;
1427
+ font-size: 12px;
1428
+ font-weight: 600;
1429
+ color: #334155;
1430
+ border-bottom: 2px solid #e2e8f0;
1431
+ white-space: nowrap;
1432
+ }
1433
+
1434
+ .gen-ui-table-body tr {
1435
+ transition: background-color 0.2s ease;
1436
+ }
1437
+ .gen-ui-table-body tr:hover {
1438
+ background-color: #f8fafc;
1439
+ }
1440
+ .gen-ui-table-body tr:not(:last-child) {
1441
+ border-bottom: 1px solid #e2e8f0;
1442
+ }
1443
+
1444
+ .gen-ui-table-td {
1445
+ padding: 12px 16px;
1446
+ font-size: 13px;
1447
+ color: #1e293b;
1448
+ vertical-align: middle;
1449
+ }
1450
+
1451
+ .gen-ui-form {
1452
+ display: flex;
1453
+ flex-direction: column;
1454
+ gap: 16px;
1455
+ width: 100%;
1456
+ }
1457
+ /*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VSb290IjoiQzpcXENhbGlzbWFsYXJcXHpla2FpXFxhaXplay13aWRnZXRcXHNyY1xcc3R5bGVzIiwic291cmNlcyI6WyJtZXNzYWdlU3R5bGVzLnNjc3MiLCJ2YXJpYWJsZXMuc2NzcyIsImlucHV0U3R5bGVzLnNjc3MiLCJoZWFkZXJTdHlsZXMuc2NzcyIsImNvbnRhaW5lclN0eWxlcy5zY3NzIiwibG9hZGluZ1N0eWxlcy5zY3NzIiwiYWxlcnRTdHlsZXMuc2NzcyIsInVpUmVuZGVyZXIuc2NzcyIsImdlbmVyYXRpdmVVSS5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFFQTtFQUNFO0VBQ0E7RUFDQTs7QUFFQTtFQUNFOztBQUdGO0VBQ0U7OztBQUlKO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLFdDMkJRO0VEMUJSOztBQUVBO0VBQ0U7RUFDQSxZQzFCZTtFRDJCZixPQ3hCSTtFRHlCSjtFQUNBOztBQUdGO0VBQ0U7RUFDQSxZQzdCTTtFRDhCTixPQ3ZCTztFRHdCUDtFQUNBO0VBQ0E7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7OztBQUtKO0VBQ0UsV0NMUTtFRE1SO0VBQ0EsWUN0Qlc7OztBRHlCYjtFQUNFOzs7QUFHRjtFQUNFOzs7QUFHRjtFQUNFO0VBQ0E7O0FBRUE7RUFDRTs7QUFJRjtFQUNFO0VBQ0E7O0FBRUE7RUFDRTs7QUFHRjtFQUNFOztBQUtKO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFO0VBQ0E7O0FBS0o7QUFBQTtFQUVFO0VBQ0E7O0FBR0Y7RUFDRTtFQUNBOztBQUdGO0VBQ0U7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFOztBQUlGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUlGO0FBQUE7RUFFRTtFQUNBOztBQUlKO0VBQ0U7O0FBRUE7RUFDRTs7QUFLSjtFQUNFO0VBQ0E7RUFDQTtFQUNBLGVDdEhRO0VEdUhSO0VBQ0E7RUFDQTs7QUFJRjtFQUNFLFlDL0pNO0VEZ0tOO0VBQ0EsZUMvSFE7RURnSVI7RUFDQTtFQUNBO0VBQ0EsWUNoSFE7O0FEa0hSO0VBQ0U7RUFDQTtFQUNBO0VBQ0EsT0NuS0s7RURvS0wsV0NuSUk7RURvSUo7O0FBS0o7QUFBQTtFQUVFO0VBQ0E7O0FBSUY7QUFBQTtFQUVFOztBQUlGO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtFQU1FO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtFQUNFOztBQUlKO0VBQ0UsV0NuS007RURvS047RUFDQTs7QUFHRjtFQUNFLFdDMUtNOztBRDZLUjtFQUNFOztBQUdGO0FBQUE7QUFBQTtFQUdFLFdDckxNOztBRHlMUjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFOztBQUtKO0VBQ0U7RUFDQTtFQUNBOztBQUlGO0VBQ0U7RUFDQTtFQUNBO0VBQ0EsV0N2Tk07RUR3Tk4sZUMvTlE7RURnT1I7RUFDQTs7QUFHRjtBQUFBO0VBRUU7RUFDQTtFQUNBOztBQUdGO0VBQ0UsWUM3UU87RUQ4UVA7RUFDQSxPQ3hRTztFRHlRUDs7QUFHRjtFQUNFOztBQUdGO0VBQ0U7O0FBRUE7RUFDRTs7QUFLSjtFQUNFO0VBQ0E7RUFDQSxlQ2xRUTtFRG1RUjs7QUFJRjtFQUNFOzs7QUFNRjtFQUNFLE9DblRJOztBRHNUSjtFQUNFLE9DdlRFO0VEd1RGO0VBQ0E7O0FBRUE7RUFDRSxxQkM1VEE7O0FEaVVKO0VBQ0UsT0NsVUU7O0FEc1VKO0VBQ0U7RUFDQSxPQ3hVRTtFRHlVRjs7QUFJRjtFQUNFO0VBQ0E7O0FBRUE7RUFDRSxPQ2xWQTs7QUR1Vko7RUFDRTs7QUFJRjtFQUNFLG1CQzdWRTtFRDhWRjtFQUNBLE9DL1ZFOztBRG1XSjtFQUNFOztBQUlGO0VBQ0U7O0FBR0Y7QUFBQTtFQUVFOztBQUdGO0VBQ0U7RUFDQSxPQ25YRTtFRG9YRjs7QUFHRjtFQUNFOzs7QUFPSjtFQUNFLE9DdlhPOztBRDBYUDtFQUNFOztBQUVBO0VBQ0U7O0FBS0o7RUFDRTs7QUFJRjtFQUNFO0VBQ0E7RUFDQTs7QUFJRjtFQUNFLFlDelpFO0VEMFpGLGNDdFpLOztBRHdaTDtFQUNFLE9DblpHOztBRHdaUDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7RUFNRSxPQzlaSzs7QURpYVA7RUFDRSxxQkN4YUs7O0FENGFQO0FBQUE7RUFFRSxPQ3ZhSzs7QUQyYVA7RUFDRTtFQUNBO0VBQ0EsT0NoYks7O0FEb2JQO0VBQ0UsWUMzYks7RUQ0YkwsT0NyYks7O0FEd2JQO0VBQ0U7OztBRXJjTjtFQUNFO0VBQ0E7RUFDQTtFQUNBLFNENEJXO0VDM0JYLFlESE07RUNJTjtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLFdEOEJRO0VDN0JSO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxZRG5CUTtFQ29CUixPRGJTOztBQ2VUO0VBQ0U7RUFDQTs7QUFHRjtFQUNFLGNEaEJPO0VDaUJQOzs7QUFJSjtFQUNFO0VBQ0E7RUFDQSxlRENZO0VDQVo7RUFDQSxPRHhDTTtFQ3lDTjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDRSxZRDdDTztFQzhDUDs7QUFHRjtFQUNFLFlEekRlOztBQzJEZjtFQUNFOzs7QUMzRE47RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQSxlRjhCWTtFRTdCWjtFQUNBO0VBQ0E7RUFDQTtFQUNBLFdGaUNRO0VFaENSOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBLGVGaUJZOzs7QUVkZDtFQUNFLFdGb0JRO0VFbkJSOzs7QUFHRjtFQUNFO0VBQ0EsV0ZjUTtFRWJSOzs7QUFHRjtFQUNFO0VBQ0EsV0ZLUTtFRUpSOzs7QUN4Q0E7RUFDRTtFQUNBO0VBQ0E7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7OztBQUlKO0VBQ0U7RUFDQSxRSFdXO0VHVlgsZUhrQlk7RUdqQlo7RUFDQSxPSHZCTTtFR3dCTjtFQUNBO0VBQ0E7RUFDQTtFQUNBLFlINkJVO0VHNUJWO0VBQ0E7O0FBRUE7RUFDRSxNSEZTOztBR0tYO0VBQ0UsT0hOUzs7QUdTWDtFQUNFOztBQUdGO0VBQ0UsWUhhUTs7O0FHVFo7RUFDRTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFLE1IekJTO0VHMEJUOztBQUdGO0VBQ0UsT0g5QlM7RUcrQlQ7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7OztBQUlKO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFO0VBQ0E7O0FBR0Y7RUFDRTtFQUNBOzs7QUFJSjtFQUNFO0VBQ0E7RUFDQTtFQUNBLFlIdkdNO0VHd0dOLGVIbkVVO0VHb0VWO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0EsU0huRlc7RUdvRlg7RUFDQTtFQUNBLEtIekZXO0VHMEZYLFlIbkhROzs7QUdzSFY7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsT0h2SFM7RUd3SFQ7RUFDQTs7QUFFQTtFQUNFO0VBQ0E7O0FBR0Y7RUFDRTtFQUNBOztBQUdGO0VBQ0U7RUFDQTtFQUNBOzs7QUNqSko7RUFDRTtJQUNFOztFQUVGO0lBQ0U7OztBQUlKO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQSxlSjJCWTtFSTFCWjs7O0FDZkY7RUFDRTtJQUNFO0lBQ0E7O0VBR0Y7SUFDRTtJQUNBOzs7QUFJSjtFQUNFLGVMMEJVO0VLekJWO0VBQ0E7RUFDQTtFQUNBLE9MZk07RUtnQk4sV0w0QlU7RUszQlY7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFO0VBQ0E7RUFDQTs7QUFHRjtFQUNFO0VBQ0E7RUFDQTs7QUFHRjtFQUNFO0VBQ0E7RUFDQTs7O0FBSUo7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQSxLTDVCVzs7O0FLK0JiO0VBQ0U7RUFDQSxXTGhCUTtFS2lCUjtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBLGNMM0NXO0VLNENYOzs7QUFHRjtFQUNFLGVMcERXO0VLcURYO0VBQ0E7RUFDQTs7QUFFQTtFQUNFO0VBQ0E7RUFDQTtFQUNBOztBQUlGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7OztBQUlKO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsT0xqSE07RUtrSE47RUFDQTs7QUFFQTtFQUNFOzs7QUN4SEo7RUFDRTtFQUNBO0VBQ0EsS042Qlc7RU01Qlg7OztBQUlGO0VBQ0U7RUFDQTtFQUNBO0VBQ0EsZU4yQlU7RU0xQlYsU05xQlk7RU1wQlosa0JOWk07RU1hTixZTjJDVTtFTTFDVjs7O0FBR0Y7RUFDRTtFQUNBLFdOMkJRO0VNMUJSLGVOV1c7RU1WWCxPTnBCTTtFTXFCTjs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0EsS05HVzs7O0FNQWI7RUFDRTtFQUNBO0VBQ0EsS05OVzs7O0FNU2I7RUFDRTtFQUNBLFdOS1U7RU1KVixPTmhDUztFTWlDVDtFQUNBO0VBQ0EsS05oQlc7O0FNa0JYO0VBQ0UsT04zQkk7RU00QkosV05KTTs7O0FNUVY7QUFBQTtFQUVFO0VBQ0EsZU5sQlU7RU1tQlY7RUFDQSxXTlpVO0VNYVYsT054RE07RU15RE4sa0JOMURNO0VNMkROO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0FBQUE7RUFDRSxjTm5ETztFTW9EUDs7O0FBSUo7RUFDRTs7O0FBR0Y7RUFDRSxZTjNDWTtFTTRDWjtFQUNBO0VBQ0E7RUFDQSxlTjNDVTtFTTRDVjtFQUNBLFdOckNVO0VNc0NWO0VBQ0Esa0JOckVTO0VNc0VULE9OcEZNO0VNcUZOO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0Usa0JONUVPOztBTStFVDtFQUNFOzs7QUFLSjtFQUNFO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRSxlTnZFVTtFTXdFVjtFQUNBLFdOakVVO0VNa0VWO0VBQ0E7RUFDQSxrQk5oSE07RU1pSE4sT056R1M7RU0wR1Q7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDRSxrQk4xR087RU0yR1AsT056SEk7RU0wSEosY041R087O0FNOEdQO0VBQ0Usa0JOOUdLO0VNK0dMLGNOL0dLOztBTW1IVDtFQUNFO0VBQ0EsT041SE87RU02SFA7O0FBRUE7RUFDRTtFQUNBOztBQUlKO0VBQ0Usa0JOM0hJO0VNNEhKLE9OL0lJO0VNZ0pKLGNON0hJOztBTStISjtFQUNFLGtCTi9ITztFTWdJUCxjTmhJTzs7QU1vSVg7RUFDRTtFQUNBOztBQUdGO0VBQ0U7OztBQUtKO0VBQ0U7RUFDQSxlTmhJVTtFTWlJVjtFQUNBLFdOM0hVO0VNNEhWLGtCTnhLTTtFTXlLTixZTmpIVTtFTWtIVjs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0EsV05uSVE7RU1vSVI7RUFDQTtFQUNBLE9ObExNOzs7QU1xTFI7RUFDRTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7OztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQSxXTjlKUTtFTStKUjtFQUNBO0VBQ0E7RUFDQTs7O0FBSUE7RUFDRSxrQk5sTkk7RU1tTko7O0FBRUE7RUFDRTs7QUFHRjtFQUNFOzs7QUFLTjtFQUNFO0VBQ0E7RUFDQSxXTnRMVTtFTXVMVjs7QUFFQTtFQUNFO0VBQ0E7OztBQUlKO0VBQ0U7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0EsZU4vTVU7RU1nTlY7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBLFdOck5VOzs7QU15Tlo7RUFDRTtFQUNBLGVOak9VO0VNa09WLFNOMU9XO0VNMk9YLGtCTnpRTTtFTTBRTjtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0EsZU5uUFU7RU1vUFY7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0EsV050UFE7RU11UFIsZU54UVc7RU15UVg7RUFDQTtFQUNBOzs7QUFHRjtFQUNFLE9OcFNTO0VNcVNULFdOalFRO0VNa1FSLGVObFJXO0VNbVJYOzs7QUFHRjtFQUNFO0VBQ0EsS052Ulc7RU13UlgsV056UVE7RU0wUVIsZU4xUlc7OztBTTZSYjtFQUNFLE9ObFRTO0VNbVRUOzs7QUFHRjtFQUNFLE9OdFRTOzs7QU15VFg7RUFDRTtFQUNBO0VBQ0EsS056U1c7OztBTTRTYjtFQUNFO0VBQ0EsS043U1c7RU04U1gsV04vUlE7OztBTWtTVjtFQUNFLE9OdlVTO0VNd1VUOzs7QUFHRjtFQUNFLE9OM1VTOzs7QU04VVg7RUFDRSxPTmhWUztFTWlWVCxXTjdTUTtFTThTUixZTjdUVztFTThUWDs7O0FBR0Y7RUFDRTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0EsV052VFE7RU13VFIsT05wV007RU1xV047OztBQUdGO0VBQ0UsT05uV1M7RU1vV1Q7RUFDQSxXTmpVUTtFTWtVUjs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7OztBQUdGO0VBQ0UsV041VVE7RU02VVI7RUFDQSxlTnBWVTtFTXFWVixTTjVWVztFTTZWWCxrQk4zWE07RU00WE4sWU5wVVU7RU1xVVY7OztBQUdGO0VBQ0U7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0EsZU5wV1U7RU1xV1Y7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0EsV052V1E7RU13V1I7RUFDQTtFQUNBO0VBQ0E7RUFDQSxPTnhaTTtFTXlaTjs7O0FBR0Y7RUFDRSxPTnZaUztFTXdaVCxXTnBYUTtFTXFYUjs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0EsS04xWVc7RU0yWVgsV041WFE7OztBTStYVjtFQUNFLE9OcGFTO0VNcWFUOzs7QUFHRjtFQUNFO0VBQ0EsT05oYk07RU1pYk47OztBQVFGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7OztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFO0VBQ0E7O0FBR0Y7RUFDRTtFQUNBOztBQUdGO0VBQ0U7RUFDQTs7QUFHRjtFQUNFO0VBQ0E7OztBQUlKO0VBQ0U7RUFDQTs7O0FDcmVGO0VBQ0U7RUFDQTtFQUNBLEtQNkJXO0VPNUJYOzs7QUFLRjtFQUNFLGVQcUJXOzs7QU9sQmI7RUFDRSxXUG1DUTtFT2xDUjtFQUNBLE9QSFM7RU9JVDs7O0FBR0Y7RUFDRSxXUDBCUTtFT3pCUixPUFpTO0VPYVQ7RUFDQTs7O0FBSUY7RUFDRSxXUGlCVTtFT2hCVixPUGxCUztFT21CVDtFQUNBOzs7QUFJRjtFQUNFO0VBQ0E7RUFDQSxLUFRXOzs7QU9ZYjtFQUNFLFdQRVE7RU9EUjtFQUNBLE9QbENTO0VPbUNUOzs7QUFHRjtBQUFBO0VBRUU7RUFDQTtFQUNBO0VBQ0EsZVBoQlU7RU9pQlYsV1BUVTtFT1VWLE9QM0NTO0VPNENULGtCUHZETTtFT3dETjtFQUNBO0VBQ0E7O0FBRUE7QUFBQTtFQUNFLE9QdkRPOztBTzBEVDtBQUFBO0VBQ0UsY1BuRE87RU9vRFA7O0FBR0Y7QUFBQTtFQUNFLGtCUG5FTztFT29FUDtFQUNBOzs7QUFJSjtFQUNFO0VBQ0E7OztBQUlGO0VBQ0U7RUFDQTtFQUNBLEtQekRXOzs7QU80RGI7RUFDRSxXUDlDUTtFTytDUjtFQUNBLE9QbEZTO0VPbUZUOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBLGVQL0RVO0VPZ0VWLFdQeERVO0VPeURWLE9QMUZTO0VPMkZULGtCUHRHTTtFT3VHTjtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFLGNQL0ZPO0VPZ0dQOztBQUdGO0VBQ0Usa0JQL0dPO0VPZ0hQO0VBQ0E7OztBQUtKO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQSxlUDFGVTtFTzJGVixXUG5GVTtFT29GVjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxZUHZIUztFT3dIVCxPUHZJTTs7QU95SU47RUFDRSxZUDFITzs7QU82SFQ7RUFDRTs7QUFHRjtFQUNFLFlQN0lPO0VPOElQO0VBQ0E7OztBQUtKO0VBQ0U7RUFDQSxlUHRIVTtFT3VIVixTUDlIVztFTytIWCxrQlA3Sk07RU84Sk4sWVB2R1U7RU93R1Y7O0FBRUE7RUFDRSxZUDFHUTs7O0FPOEdaO0VBQ0UsV1B6SFE7RU8wSFI7RUFDQSxPUDlKUztFTytKVDs7O0FBR0Y7RUFDRSxXUGxJVTtFT21JVixPUHRLUztFT3VLVDtFQUNBOzs7QUFJRjtFQUNFO0VBQ0EsY1B4Slc7RU95Slg7OztBQUdGO0VBQ0UsV1BoSlU7RU9pSlYsT1BuTFM7RU9vTFQ7RUFDQSxlUHBLVzs7QU9zS1g7RUFDRTs7O0FBS0o7RUFDRTtFQUNBO0VBQ0EsZVB0S1U7RU91S1Y7OztBQUlGO0VBQ0UsT1BqTVM7RU9rTVQ7RUFDQSxXUHRLVTtFT3VLVjs7QUFFQTtFQUNFLE9QdE1PO0VPdU1QOztBQUdGO0VBQ0UsT1A1TU87OztBT2lOWDtFQUNFO0VBQ0E7RUFDQTtFQUNBLGVQL0xVO0VPZ01WLGtCUHJPTTtFT3NPTixZUC9LVTs7O0FPa0xaO0VBQ0U7RUFDQTtFQUNBOzs7QUFHRjtFQUNFLGtCUDlPUTs7O0FPaVBWO0VBQ0U7RUFDQTtFQUNBLFdQM01RO0VPNE1SO0VBQ0EsT1AvT1M7RU9nUFQ7RUFDQTs7O0FBSUE7RUFDRTs7QUFFQTtFQUNFLGtCUGhRSTs7QU9tUU47RUFDRTs7O0FBS047RUFDRTtFQUNBLFdQak9VO0VPa09WLE9QcFFTO0VPcVFUOzs7QUFJRjtFQUNFO0VBQ0E7RUFDQSxLUHhQVztFT3lQWCIsInNvdXJjZXNDb250ZW50IjpbIkB1c2UgJy4vdmFyaWFibGVzLnNjc3MnIGFzICo7XHJcblxyXG4ubWVzc2FnZS1jb250YWluZXIge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICB3aWR0aDogMTAwJTtcclxuXHJcbiAgJi51c2VyIHtcclxuICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcclxuICB9XHJcblxyXG4gICYuYXNzaXN0YW50IHtcclxuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xyXG4gIH1cclxufVxyXG5cclxuLm1lc3NhZ2UtYnViYmxlIHtcclxuICBtYXgtd2lkdGg6IDgwJTtcclxuICBwYWRkaW5nOiAxMnB4IDE2cHg7XHJcbiAgbWFyZ2luLWJvdHRvbTogOHB4O1xyXG4gIHdvcmQtd3JhcDogYnJlYWstd29yZDtcclxuICBsaW5lLWhlaWdodDogMS40O1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtbWQ7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG5cclxuICAmLnVzZXIge1xyXG4gICAgYm9yZGVyLXJhZGl1czogMThweCAxOHB4IDRweCAxOHB4O1xyXG4gICAgYmFja2dyb3VuZDogJHByaW1hcnktZ3JhZGllbnQ7XHJcbiAgICBjb2xvcjogJHdoaXRlO1xyXG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XHJcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XHJcbiAgfVxyXG5cclxuICAmLmFzc2lzdGFudCB7XHJcbiAgICBib3JkZXItcmFkaXVzOiAxOHB4IDE4cHggMThweCA0cHg7XHJcbiAgICBiYWNrZ3JvdW5kOiAkZ3JheS01MDtcclxuICAgIGNvbG9yOiAkZ3JheS03MDA7XHJcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkZ3JheS0yMDA7XHJcbiAgICBtYXJnaW4tbGVmdDogMDtcclxuICAgIG1hcmdpbi1yaWdodDogYXV0bztcclxuICB9XHJcblxyXG4gIC5tZXNzYWdlLXR5cGluZy1pbmRpY2F0b3Ige1xyXG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgbWFyZ2luLWxlZnQ6IDhweDtcclxuICB9XHJcblxyXG59XHJcblxyXG4ubWVzc2FnZS10aW1lIHtcclxuICBmb250LXNpemU6ICR0ZXh0LXhzO1xyXG4gIG9wYWNpdHk6IDAuNztcclxuICBtYXJnaW4tdG9wOiAkc3BhY2luZy14cztcclxufVxyXG5cclxuLm1lc3NhZ2UtdGltZS51c2VyIHtcclxuICB0ZXh0LWFsaWduOiByaWdodDtcclxufVxyXG5cclxuLm1lc3NhZ2UtdGltZS5hc3Npc3RhbnQge1xyXG4gIHRleHQtYWxpZ246IGxlZnQ7XHJcbn1cclxuXHJcbi5tYXJrZG93bi1jb250ZW50IHtcclxuICBsaW5lLWhlaWdodDogMS42O1xyXG4gIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XHJcblxyXG4gICYrLmdlbmVyYXRpdmUtdWktY29udGFpbmVyIHtcclxuICAgIG1hcmdpbi10b3A6IDE2cHg7XHJcbiAgfVxyXG5cclxuICAvLyBQYXJhZ3JhZmxhclxyXG4gIHAge1xyXG4gICAgbWFyZ2luOiAwIDAgMTJweCAwO1xyXG4gICAgbGluZS1oZWlnaHQ6IDEuNjtcclxuXHJcbiAgICAmOmxhc3QtY2hpbGQge1xyXG4gICAgICBtYXJnaW4tYm90dG9tOiAwO1xyXG4gICAgfVxyXG5cclxuICAgICY6Zmlyc3QtY2hpbGQge1xyXG4gICAgICBtYXJnaW4tdG9wOiAwO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gTGlua2xlclxyXG4gIGEge1xyXG4gICAgY29sb3I6ICM2NjdlZWE7XHJcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XHJcbiAgICB0cmFuc2l0aW9uOiBhbGwgJHRyYW5zaXRpb24tZmFzdDtcclxuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XHJcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XHJcblxyXG4gICAgJjpob3ZlciB7XHJcbiAgICAgIGNvbG9yOiAjNzY0YmEyO1xyXG4gICAgICBib3JkZXItYm90dG9tLWNvbG9yOiAjNzY0YmEyO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gTGlzdGVsZXJcclxuICB1bCxcclxuICBvbCB7XHJcbiAgICBtYXJnaW46IDEycHggMDtcclxuICAgIHBhZGRpbmctbGVmdDogMjBweDtcclxuICB9XHJcblxyXG4gIHVsIHtcclxuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XHJcbiAgICBwYWRkaW5nLWxlZnQ6IDA7XHJcbiAgfVxyXG5cclxuICBvbCB7XHJcbiAgICBsaXN0LXN0eWxlOiBkZWNpbWFsO1xyXG4gIH1cclxuXHJcbiAgbGkge1xyXG4gICAgbWFyZ2luLWJvdHRvbTogOHB4O1xyXG4gICAgbGluZS1oZWlnaHQ6IDEuNjtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIHBhZGRpbmctbGVmdDogMjBweDtcclxuXHJcbiAgICAmOmxhc3QtY2hpbGQge1xyXG4gICAgICBtYXJnaW4tYm90dG9tOiAwO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEJ1bGxldCBwb2ludCBpw6dpblxyXG4gICAgJjo6YmVmb3JlIHtcclxuICAgICAgY29udGVudDogXCLigKJcIjtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICBsZWZ0OiAwO1xyXG4gICAgICBjb2xvcjogIzY2N2VlYTtcclxuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTZweDtcclxuICAgIH1cclxuXHJcbiAgICAvLyBOZXN0ZWQgbGlzdCBpw6dpbiBkYWhhIGl5aSBnw7Zyw7xuw7xtXHJcbiAgICB1bCxcclxuICAgIG9sIHtcclxuICAgICAgbWFyZ2luLXRvcDogNHB4O1xyXG4gICAgICBtYXJnaW4tYm90dG9tOiA0cHg7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbCBsaSB7XHJcbiAgICBwYWRkaW5nLWxlZnQ6IDA7XHJcblxyXG4gICAgJjo6YmVmb3JlIHtcclxuICAgICAgY29udGVudDogbm9uZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIElubGluZSBrb2RcclxuICBjb2RlIHtcclxuICAgIGJhY2tncm91bmQ6IHJnYmEoMTAyLCAxMjYsIDIzNCwgMC4xKTtcclxuICAgIGNvbG9yOiAjNzY0YmEyO1xyXG4gICAgcGFkZGluZzogMnB4IDZweDtcclxuICAgIGJvcmRlci1yYWRpdXM6ICRyYWRpdXMtc207XHJcbiAgICBmb250LWZhbWlseTogJ01vbmFjbycsICdNZW5sbycsICdVYnVudHUgTW9ubycsICdDb3VyaWVyIE5ldycsIG1vbm9zcGFjZTtcclxuICAgIGZvbnQtc2l6ZTogMC45ZW07XHJcbiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDEwMiwgMTI2LCAyMzQsIDAuMik7XHJcbiAgfVxyXG5cclxuICAvLyBLb2QgYmxva2xhcsSxXHJcbiAgcHJlIHtcclxuICAgIGJhY2tncm91bmQ6ICRncmF5LTUwO1xyXG4gICAgcGFkZGluZzogMTJweCAxNnB4O1xyXG4gICAgYm9yZGVyLXJhZGl1czogJHJhZGl1cy1tZDtcclxuICAgIG92ZXJmbG93LXg6IGF1dG87XHJcbiAgICBtYXJnaW46IDEycHggMDtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkICRncmF5LTIwMDtcclxuICAgIGJveC1zaGFkb3c6ICRzaGFkb3ctc207XHJcblxyXG4gICAgY29kZSB7XHJcbiAgICAgIGJhY2tncm91bmQ6IG5vbmU7XHJcbiAgICAgIHBhZGRpbmc6IDA7XHJcbiAgICAgIGJvcmRlcjogbm9uZTtcclxuICAgICAgY29sb3I6ICRncmF5LTgwMDtcclxuICAgICAgZm9udC1zaXplOiAkdGV4dC1zbTtcclxuICAgICAgbGluZS1oZWlnaHQ6IDEuNTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIFZ1cmd1IG1ldG5pXHJcbiAgc3Ryb25nLFxyXG4gIGIge1xyXG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICAgIGNvbG9yOiBpbmhlcml0O1xyXG4gIH1cclxuXHJcbiAgLy8gxLB0YWxpayBtZXRpblxyXG4gIGVtLFxyXG4gIGkge1xyXG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xyXG4gIH1cclxuXHJcbiAgLy8gQmHFn2zEsWtsYXJcclxuICBoMSxcclxuICBoMixcclxuICBoMyxcclxuICBoNCxcclxuICBoNSxcclxuICBoNiB7XHJcbiAgICBtYXJnaW46IDE2cHggMCA4cHggMDtcclxuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICBsaW5lLWhlaWdodDogMS40O1xyXG4gICAgY29sb3I6IGluaGVyaXQ7XHJcblxyXG4gICAgJjpmaXJzdC1jaGlsZCB7XHJcbiAgICAgIG1hcmdpbi10b3A6IDA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoMSB7XHJcbiAgICBmb250LXNpemU6ICR0ZXh0LXhsO1xyXG4gICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICRncmF5LTIwMDtcclxuICAgIHBhZGRpbmctYm90dG9tOiA4cHg7XHJcbiAgfVxyXG5cclxuICBoMiB7XHJcbiAgICBmb250LXNpemU6ICR0ZXh0LWxnO1xyXG4gIH1cclxuXHJcbiAgaDMge1xyXG4gICAgZm9udC1zaXplOiAxNXB4O1xyXG4gIH1cclxuXHJcbiAgaDQsXHJcbiAgaDUsXHJcbiAgaDYge1xyXG4gICAgZm9udC1zaXplOiAkdGV4dC1tZDtcclxuICB9XHJcblxyXG4gIC8vIEFsxLFudMSxbGFyXHJcbiAgYmxvY2txdW90ZSB7XHJcbiAgICBib3JkZXItbGVmdDogM3B4IHNvbGlkICM2NjdlZWE7XHJcbiAgICBwYWRkaW5nLWxlZnQ6IDEycHg7XHJcbiAgICBtYXJnaW46IDEycHggMDtcclxuICAgIGNvbG9yOiBpbmhlcml0O1xyXG4gICAgb3BhY2l0eTogMC45O1xyXG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xyXG4gICAgYmFja2dyb3VuZDogcmdiYSgxMDIsIDEyNiwgMjM0LCAwLjA1KTtcclxuICAgIHBhZGRpbmc6IDhweCAxMnB4O1xyXG4gICAgYm9yZGVyLXJhZGl1czogMCAkcmFkaXVzLXNtICRyYWRpdXMtc20gMDtcclxuXHJcbiAgICBwIHtcclxuICAgICAgbWFyZ2luOiAwO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gWWF0YXkgw6dpemdpXHJcbiAgaHIge1xyXG4gICAgYm9yZGVyOiBub25lO1xyXG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICRncmF5LTIwMDtcclxuICAgIG1hcmdpbjogMTZweCAwO1xyXG4gIH1cclxuXHJcbiAgLy8gVGFibG9sYXJcclxuICB0YWJsZSB7XHJcbiAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBtYXJnaW46IDEycHggMDtcclxuICAgIGZvbnQtc2l6ZTogJHRleHQtc207XHJcbiAgICBib3JkZXItcmFkaXVzOiAkcmFkaXVzLW1kO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkICRncmF5LTIwMDtcclxuICB9XHJcblxyXG4gIHRoLFxyXG4gIHRkIHtcclxuICAgIHBhZGRpbmc6IDEwcHggMTJweDtcclxuICAgIHRleHQtYWxpZ246IGxlZnQ7XHJcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGdyYXktMjAwO1xyXG4gIH1cclxuXHJcbiAgdGgge1xyXG4gICAgYmFja2dyb3VuZDogJGdyYXktMTAwO1xyXG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICAgIGNvbG9yOiAkZ3JheS04MDA7XHJcbiAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgJGdyYXktMzAwO1xyXG4gIH1cclxuXHJcbiAgdHI6bGFzdC1jaGlsZCB0ZCB7XHJcbiAgICBib3JkZXItYm90dG9tOiBub25lO1xyXG4gIH1cclxuXHJcbiAgdGJvZHkgdHIge1xyXG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAkdHJhbnNpdGlvbi1mYXN0O1xyXG5cclxuICAgICY6aG92ZXIge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDEwMiwgMTI2LCAyMzQsIDAuMDUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gR8O2cnNlbGxlclxyXG4gIGltZyB7XHJcbiAgICBtYXgtd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IGF1dG87XHJcbiAgICBib3JkZXItcmFkaXVzOiAkcmFkaXVzLW1kO1xyXG4gICAgbWFyZ2luOiA4cHggMDtcclxuICB9XHJcblxyXG4gIC8vIENoZWNrYm94IGxpc3RlbGVyIChHaXRIdWIgc3R5bGUpXHJcbiAgaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdIHtcclxuICAgIG1hcmdpbi1yaWdodDogNnB4O1xyXG4gIH1cclxufVxyXG5cclxuLy8gVXNlciBtZXNzYWdlIHNwZWNpZmljIHN0eWxlc1xyXG4ubWVzc2FnZS1idWJibGUudXNlciB7XHJcbiAgLm1hcmtkb3duLWNvbnRlbnQge1xyXG4gICAgY29sb3I6ICR3aGl0ZTtcclxuXHJcbiAgICAvLyBMaW5rbGVyXHJcbiAgICBhIHtcclxuICAgICAgY29sb3I6ICR3aGl0ZTtcclxuICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjQpO1xyXG4gICAgICBmb250LXdlaWdodDogNjAwO1xyXG5cclxuICAgICAgJjpob3ZlciB7XHJcbiAgICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJHdoaXRlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQnVsbGV0IHBvaW50c1xyXG4gICAgbGk6OmJlZm9yZSB7XHJcbiAgICAgIGNvbG9yOiAkd2hpdGU7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSW5saW5lIGtvZFxyXG4gICAgY29kZSB7XHJcbiAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTtcclxuICAgICAgY29sb3I6ICR3aGl0ZTtcclxuICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMyk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gS29kIGJsb2tsYXLEsVxyXG4gICAgcHJlIHtcclxuICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpO1xyXG4gICAgICBib3JkZXItY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTtcclxuXHJcbiAgICAgIGNvZGUge1xyXG4gICAgICAgIGNvbG9yOiAkd2hpdGU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBCYcWfbMSxa2xhclxyXG4gICAgaDEge1xyXG4gICAgICBib3JkZXItYm90dG9tLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMyk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQWzEsW50xLFsYXJcclxuICAgIGJsb2NrcXVvdGUge1xyXG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogJHdoaXRlO1xyXG4gICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7XHJcbiAgICAgIGNvbG9yOiAkd2hpdGU7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gWWF0YXkgw6dpemdpXHJcbiAgICBociB7XHJcbiAgICAgIGJvcmRlci10b3AtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBUYWJsb2xhclxyXG4gICAgdGFibGUge1xyXG4gICAgICBib3JkZXItY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zKTtcclxuICAgIH1cclxuXHJcbiAgICB0aCxcclxuICAgIHRkIHtcclxuICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoIHtcclxuICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KTtcclxuICAgICAgY29sb3I6ICR3aGl0ZTtcclxuICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjMpO1xyXG4gICAgfVxyXG5cclxuICAgIHRib2R5IHRyOmhvdmVyIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLy8gQXNzaXN0YW50IG1lc3NhZ2Ugc3BlY2lmaWMgc3R5bGVzXHJcbi5tZXNzYWdlLWJ1YmJsZS5hc3Npc3RhbnQge1xyXG4gIC5tYXJrZG93bi1jb250ZW50IHtcclxuICAgIGNvbG9yOiAkZ3JheS03MDA7XHJcblxyXG4gICAgLy8gTGlua2xlclxyXG4gICAgYSB7XHJcbiAgICAgIGNvbG9yOiAjNjY3ZWVhO1xyXG5cclxuICAgICAgJjpob3ZlciB7XHJcbiAgICAgICAgY29sb3I6ICM3NjRiYTI7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBCdWxsZXQgcG9pbnRzXHJcbiAgICBsaTo6YmVmb3JlIHtcclxuICAgICAgY29sb3I6ICM2NjdlZWE7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSW5saW5lIGtvZFxyXG4gICAgY29kZSB7XHJcbiAgICAgIGJhY2tncm91bmQ6IHJnYmEoMTAyLCAxMjYsIDIzNCwgMC4xKTtcclxuICAgICAgY29sb3I6ICM3NjRiYTI7XHJcbiAgICAgIGJvcmRlci1jb2xvcjogcmdiYSgxMDIsIDEyNiwgMjM0LCAwLjIpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEtvZCBibG9rbGFyxLFcclxuICAgIHByZSB7XHJcbiAgICAgIGJhY2tncm91bmQ6ICR3aGl0ZTtcclxuICAgICAgYm9yZGVyLWNvbG9yOiAkZ3JheS0yMDA7XHJcblxyXG4gICAgICBjb2RlIHtcclxuICAgICAgICBjb2xvcjogJGdyYXktODAwO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQmHFn2zEsWtsYXJcclxuICAgIGgxLFxyXG4gICAgaDIsXHJcbiAgICBoMyxcclxuICAgIGg0LFxyXG4gICAgaDUsXHJcbiAgICBoNiB7XHJcbiAgICAgIGNvbG9yOiAkZ3JheS04MDA7XHJcbiAgICB9XHJcblxyXG4gICAgaDEge1xyXG4gICAgICBib3JkZXItYm90dG9tLWNvbG9yOiAkZ3JheS0yMDA7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gVnVyZ3VcclxuICAgIHN0cm9uZyxcclxuICAgIGIge1xyXG4gICAgICBjb2xvcjogJGdyYXktOTAwO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEFsxLFudMSxbGFyXHJcbiAgICBibG9ja3F1b3RlIHtcclxuICAgICAgYm9yZGVyLWxlZnQtY29sb3I6ICM2NjdlZWE7XHJcbiAgICAgIGJhY2tncm91bmQ6IHJnYmEoMTAyLCAxMjYsIDIzNCwgMC4wNSk7XHJcbiAgICAgIGNvbG9yOiAkZ3JheS03MDA7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gVGFibG9sYXJcclxuICAgIHRoIHtcclxuICAgICAgYmFja2dyb3VuZDogJGdyYXktMTAwO1xyXG4gICAgICBjb2xvcjogJGdyYXktODAwO1xyXG4gICAgfVxyXG5cclxuICAgIHRib2R5IHRyOmhvdmVyIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgxMDIsIDEyNiwgMjM0LCAwLjA1KTtcclxuICAgIH1cclxuICB9XHJcbn0iLCIvLyBDb2xvciBWYXJpYWJsZXNcclxuJHByaW1hcnktZ3JhZGllbnQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICM2NjdlZWEgMCUsICM3NjRiYTIgMTAwJSk7XHJcbiRidXR0b24tZ3JhZGllbnQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICM2NjdlZWEgMCUsICM3NjRiYTIgMTAwJSk7XHJcblxyXG4kd2hpdGU6ICNmZmZmZmY7XHJcbiRibGFjazogIzFhMWExYTtcclxuJGdyYXktNTA6ICNmOGZhZmM7XHJcbiRncmF5LTEwMDogI2YxZjVmOTtcclxuJGdyYXktMjAwOiAjZTJlOGYwO1xyXG4kZ3JheS0zMDA6ICNjYmQ1ZTE7XHJcbiRncmF5LTQwMDogIzk0YTNiODtcclxuJGdyYXktNTAwOiAjNjQ3NDhiO1xyXG4kZ3JheS02MDA6ICM0NzU1Njk7XHJcbiRncmF5LTcwMDogIzMzNDE1NTtcclxuJGdyYXktODAwOiAjMWUyOTNiO1xyXG4kZ3JheS05MDA6ICMwZjE3MmE7XHJcblxyXG4vLyBCcmFuZCBDb2xvcnNcclxuJGJsdWUtNTAwOiAjM2I4MmY2O1xyXG4kYmx1ZS02MDA6ICMyNTYzZWI7XHJcbiRibHVlLTcwMDogIzFkNGVkODtcclxuXHJcbi8vIFN0YXR1cyBDb2xvcnNcclxuJGVycm9yOiAjZWY0NDQ0O1xyXG4kZXJyb3ItZGFyazogI2RjMjYyNjtcclxuJHdhcm5pbmc6ICNmNTllMGI7XHJcbiR3YXJuaW5nLWRhcms6ICNkOTc3MDY7XHJcbiRzdWNjZXNzOiAjMTBiOTgxO1xyXG4kc3VjY2Vzcy1kYXJrOiAjMDU5NjY5O1xyXG5cclxuLy8gU3BhY2luZ1xyXG4kc3BhY2luZy14czogNHB4O1xyXG4kc3BhY2luZy1zbTogOHB4O1xyXG4kc3BhY2luZy1tZDogMTJweDtcclxuJHNwYWNpbmctbGc6IDE2cHg7XHJcbiRzcGFjaW5nLXhsOiAyMHB4O1xyXG4kc3BhY2luZy0yeGw6IDI0cHg7XHJcblxyXG4vLyBCb3JkZXIgUmFkaXVzXHJcbiRyYWRpdXMtc206IDRweDtcclxuJHJhZGl1cy1tZDogOHB4O1xyXG4kcmFkaXVzLWxnOiAxMnB4O1xyXG4kcmFkaXVzLXhsOiAxNnB4O1xyXG4kcmFkaXVzLWZ1bGw6IDUwJTtcclxuXHJcbi8vIEZvbnQgU2l6ZXNcclxuJHRleHQteHM6IDExcHg7XHJcbiR0ZXh0LXNtOiAxMnB4O1xyXG4kdGV4dC1iYXNlOiAxM3B4O1xyXG4kdGV4dC1tZDogMTRweDtcclxuJHRleHQtbGc6IDE2cHg7XHJcbiR0ZXh0LXhsOiAxOHB4O1xyXG5cclxuLy8gVHJhbnNpdGlvbnNcclxuJHRyYW5zaXRpb24tZmFzdDogMC4xNXMgZWFzZTtcclxuJHRyYW5zaXRpb24tYmFzZTogMC4ycyBlYXNlO1xyXG4kdHJhbnNpdGlvbi1zbG93OiAwLjNzIGVhc2U7XHJcblxyXG4vLyBTaGFkb3dzXHJcbiRzaGFkb3ctc206IDAgMnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMDUpO1xyXG4kc2hhZG93LW1kOiAwIDJweCA4cHggcmdiYSgwLCAwLCAwLCAwLjA4KTtcclxuJHNoYWRvdy1sZzogMCA0cHggMTJweCByZ2JhKDAsIDAsIDAsIDAuMTUpO1xyXG4kc2hhZG93LXhsOiAwIDZweCAyMHB4IHJnYmEoMCwgMCwgMCwgMC4yNSk7XHJcblxyXG4iLCJAdXNlICcuL3ZhcmlhYmxlcy5zY3NzJyBhcyAqO1xyXG5cclxuLmlucHV0LWNvbnRhaW5lciB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XHJcbiAgZ2FwOiAxMnB4O1xyXG4gIHBhZGRpbmc6ICRzcGFjaW5nLWxnO1xyXG4gIGJhY2tncm91bmQ6ICR3aGl0ZTtcclxuICBib3JkZXItdG9wOiAxcHggc29saWQgJGdyYXktMjAwO1xyXG4gIGJvcmRlci1yYWRpdXM6IDAgMCAkcmFkaXVzLWxnICRyYWRpdXMtbGc7XHJcbn1cclxuXHJcbi50ZXh0YXJlYSB7XHJcbiAgZmxleDogMTtcclxuICBtaW4taGVpZ2h0OiA0NHB4O1xyXG4gIG1heC1oZWlnaHQ6IDEyMHB4O1xyXG4gIHBhZGRpbmc6IDEycHggJHNwYWNpbmctbGc7XHJcbiAgYm9yZGVyOiAxcHggc29saWQgJGdyYXktMjAwO1xyXG4gIGJvcmRlci1yYWRpdXM6IDIycHg7XHJcbiAgZm9udC1zaXplOiAkdGV4dC1tZDtcclxuICBsaW5lLWhlaWdodDogMS40O1xyXG4gIHJlc2l6ZTogbm9uZTtcclxuICBvdXRsaW5lOiBub25lO1xyXG4gIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAkdHJhbnNpdGlvbi1iYXNlLCBib3gtc2hhZG93ICR0cmFuc2l0aW9uLWJhc2U7XHJcbiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XHJcbiAgYmFja2dyb3VuZDogJGdyYXktNTA7XHJcbiAgY29sb3I6ICRncmF5LTcwMDtcclxuXHJcbiAgJjpkaXNhYmxlZCB7XHJcbiAgICBvcGFjaXR5OiAwLjY7XHJcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xyXG4gIH1cclxuXHJcbiAgJjpmb2N1czpub3QoOmRpc2FibGVkKSB7XHJcbiAgICBib3JkZXItY29sb3I6ICRibHVlLTUwMDtcclxuICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKDU5LCAxMzAsIDI0NiwgMC4xKTtcclxuICB9XHJcbn1cclxuXHJcbi5zZW5kLWJ1dHRvbiB7XHJcbiAgd2lkdGg6IDQ0cHg7XHJcbiAgaGVpZ2h0OiA0NHB4O1xyXG4gIGJvcmRlci1yYWRpdXM6ICRyYWRpdXMtZnVsbDtcclxuICBib3JkZXI6IG5vbmU7XHJcbiAgY29sb3I6ICR3aGl0ZTtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gIHRyYW5zaXRpb246IGFsbCAkdHJhbnNpdGlvbi1iYXNlO1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtbGc7XHJcblxyXG4gICY6ZGlzYWJsZWQge1xyXG4gICAgYmFja2dyb3VuZDogJGdyYXktMjAwO1xyXG4gICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcclxuICB9XHJcblxyXG4gICY6bm90KDpkaXNhYmxlZCkge1xyXG4gICAgYmFja2dyb3VuZDogJHByaW1hcnktZ3JhZGllbnQ7XHJcbiAgICBcclxuICAgICY6aG92ZXIge1xyXG4gICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMDUpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuIiwiQHVzZSAnLi92YXJpYWJsZXMuc2NzcycgYXMgKjtcclxuXHJcbi5oZWFkZXIge1xyXG4gIHBhZGRpbmc6ICRzcGFjaW5nLWxnICRzcGFjaW5nLXhsO1xyXG4gIGNvbG9yOiAkd2hpdGU7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGdhcDogMTJweDtcclxufVxyXG5cclxuLmxvZ28tY29udGFpbmVyIHtcclxuICB3aWR0aDogNDBweDtcclxuICBoZWlnaHQ6IDQwcHg7XHJcbiAgYm9yZGVyLXJhZGl1czogJHJhZGl1cy1mdWxsO1xyXG4gIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgZm9udC1zaXplOiAkdGV4dC14bDtcclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG59XHJcblxyXG4ubG9nby1pbWFnZSB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgaGVpZ2h0OiAxMDAlO1xyXG4gIG9iamVjdC1maXQ6IGNvdmVyO1xyXG4gIGJvcmRlci1yYWRpdXM6ICRyYWRpdXMtZnVsbDtcclxufVxyXG5cclxuLmxvZ28tdGV4dCB7XHJcbiAgZm9udC1zaXplOiAkdGV4dC1sZztcclxuICBmb250LXdlaWdodDogYm9sZDtcclxufVxyXG5cclxuLmNvbXBhbnktbmFtZSB7XHJcbiAgbWFyZ2luOiAwO1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtbGc7XHJcbiAgZm9udC13ZWlnaHQ6IDYwMDtcclxufVxyXG5cclxuLnN0YXR1cy10ZXh0IHtcclxuICBtYXJnaW46IDA7XHJcbiAgZm9udC1zaXplOiAkdGV4dC1zbTtcclxuICBvcGFjaXR5OiAwLjg7XHJcbn1cclxuXHJcbiIsIkB1c2UgJy4vdmFyaWFibGVzLnNjc3MnIGFzICo7XHJcblxyXG4uYnV0dG9uLXNpemVzIHtcclxuICAmLnNtYWxsIHtcclxuICAgIHdpZHRoOiA1MHB4O1xyXG4gICAgaGVpZ2h0OiA1MHB4O1xyXG4gICAgZm9udC1zaXplOiAyMHB4O1xyXG4gIH1cclxuXHJcbiAgJi5tZWRpdW0ge1xyXG4gICAgd2lkdGg6IDYwcHg7XHJcbiAgICBoZWlnaHQ6IDYwcHg7XHJcbiAgICBmb250LXNpemU6IDI0cHg7XHJcbiAgfVxyXG5cclxuICAmLmxhcmdlIHtcclxuICAgIHdpZHRoOiA3MHB4O1xyXG4gICAgaGVpZ2h0OiA3MHB4O1xyXG4gICAgZm9udC1zaXplOiAyOHB4O1xyXG4gIH1cclxufVxyXG5cclxuLmZsb2F0aW5nLWJ1dHRvbiB7XHJcbiAgcG9zaXRpb246IGZpeGVkO1xyXG4gIGJvdHRvbTogJHNwYWNpbmcteGw7XHJcbiAgYm9yZGVyLXJhZGl1czogJHJhZGl1cy1mdWxsO1xyXG4gIGJvcmRlcjogbm9uZTtcclxuICBjb2xvcjogJHdoaXRlO1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgYm94LXNoYWRvdzogJHNoYWRvdy1sZztcclxuICB0cmFuc2l0aW9uOiBhbGwgJHRyYW5zaXRpb24tc2xvdztcclxuICB6LWluZGV4OiAxMDAwO1xyXG5cclxuICAmLmJvdHRvbS1sZWZ0IHtcclxuICAgIGxlZnQ6ICRzcGFjaW5nLXhsO1xyXG4gIH1cclxuXHJcbiAgJi5ib3R0b20tcmlnaHQge1xyXG4gICAgcmlnaHQ6ICRzcGFjaW5nLXhsO1xyXG4gIH1cclxuXHJcbiAgJi5pcy1vcGVuIHtcclxuICAgIHRyYW5zZm9ybTogc2NhbGUoMC45KTtcclxuICB9XHJcblxyXG4gICY6aG92ZXIge1xyXG4gICAgYm94LXNoYWRvdzogJHNoYWRvdy14bDtcclxuICB9XHJcbn1cclxuXHJcbi5jaGF0LWNvbnRhaW5lciB7XHJcbiAgcG9zaXRpb246IGZpeGVkO1xyXG4gIGJvdHRvbTogOTBweDtcclxuICB6LWluZGV4OiA5OTk5OTk5O1xyXG4gIHRyYW5zaXRpb246IGFsbCAwLjNzIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7XHJcblxyXG4gICYuYm90dG9tLWxlZnQge1xyXG4gICAgbGVmdDogJHNwYWNpbmcteGw7XHJcbiAgICB0cmFuc2Zvcm0tb3JpZ2luOiBib3R0b20gbGVmdDtcclxuICB9XHJcblxyXG4gICYuYm90dG9tLXJpZ2h0IHtcclxuICAgIHJpZ2h0OiAkc3BhY2luZy14bDtcclxuICAgIHRyYW5zZm9ybS1vcmlnaW46IGJvdHRvbSByaWdodDtcclxuICB9XHJcblxyXG4gICYuaXMtb3BlbiB7XHJcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCkgc2NhbGUoMSk7XHJcbiAgICBvcGFjaXR5OiAxO1xyXG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcclxuICB9XHJcblxyXG4gICY6bm90KC5pcy1vcGVuKSB7XHJcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMjBweCkgc2NhbGUoMC45NSk7XHJcbiAgICBvcGFjaXR5OiAwO1xyXG4gICAgdmlzaWJpbGl0eTogaGlkZGVuO1xyXG4gIH1cclxufVxyXG5cclxuLm92ZXJsYXkge1xyXG4gIHBvc2l0aW9uOiBmaXhlZDtcclxuICB0b3A6IDA7XHJcbiAgbGVmdDogMDtcclxuICByaWdodDogMDtcclxuICBib3R0b206IDA7XHJcbiAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjEpO1xyXG4gIHotaW5kZXg6IDk5ODtcclxuICB0cmFuc2l0aW9uOiBhbGwgJHRyYW5zaXRpb24tc2xvdztcclxuXHJcbiAgJi5pcy1vcGVuIHtcclxuICAgIG9wYWNpdHk6IDE7XHJcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xyXG4gIH1cclxuXHJcbiAgJjpub3QoLmlzLW9wZW4pIHtcclxuICAgIG9wYWNpdHk6IDA7XHJcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XHJcbiAgfVxyXG59XHJcblxyXG4uY2hhdGJvdC1jb250YWluZXIge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICBoZWlnaHQ6IDEwMCU7XHJcbiAgYmFja2dyb3VuZDogJHdoaXRlO1xyXG4gIGJvcmRlci1yYWRpdXM6ICRyYWRpdXMtbGc7XHJcbiAgYm94LXNoYWRvdzogMCA0cHggNnB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjEpLCAwIDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMDYpO1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkICRncmF5LTIwMDtcclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG59XHJcblxyXG4ubWVzc2FnZXMtY29udGFpbmVyIHtcclxuICBmbGV4OiAxO1xyXG4gIG92ZXJmbG93LXk6IGF1dG87XHJcbiAgcGFkZGluZzogJHNwYWNpbmctbGc7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIGdhcDogJHNwYWNpbmcteHM7XHJcbiAgYmFja2dyb3VuZDogJGdyYXktNTA7XHJcbn1cclxuXHJcbi5lbXB0eS1zdGF0ZSB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgaGVpZ2h0OiAxMDAlO1xyXG4gIGNvbG9yOiAkZ3JheS01MDA7XHJcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gIHBhZGRpbmc6IDQwcHggJHNwYWNpbmcteGw7XHJcblxyXG4gIC5lbXB0eS1zdGF0ZS1pY29uIHtcclxuICAgIGZvbnQtc2l6ZTogNDhweDtcclxuICAgIG1hcmdpbi1ib3R0b206IDE2cHg7XHJcbiAgfVxyXG5cclxuICAuZW1wdHktc3RhdGUtdGl0bGUge1xyXG4gICAgbWFyZ2luOiAwIDAgOHB4IDA7XHJcbiAgICBmb250LXNpemU6IDE4cHg7XHJcbiAgfVxyXG5cclxuICAuZW1wdHktc3RhdGUtZGVzY3JpcHRpb24ge1xyXG4gICAgbWFyZ2luOiAwO1xyXG4gICAgZm9udC1zaXplOiAxNHB4O1xyXG4gICAgb3BhY2l0eTogMC44O1xyXG4gIH1cclxufSIsIkB1c2UgJy4vdmFyaWFibGVzLnNjc3MnIGFzICo7XHJcblxyXG5Aa2V5ZnJhbWVzIHNwaW4ge1xyXG4gIGZyb20ge1xyXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XHJcbiAgfVxyXG4gIHRvIHtcclxuICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XHJcbiAgfVxyXG59XHJcblxyXG4ubG9hZGluZy1zcGlubmVyIHtcclxuICB3aWR0aDogMTZweDtcclxuICBoZWlnaHQ6IDE2cHg7XHJcbiAgYm9yZGVyOiAycHggc29saWQgdHJhbnNwYXJlbnQ7XHJcbiAgYm9yZGVyLXRvcDogMnB4IHNvbGlkIGN1cnJlbnRDb2xvcjtcclxuICBib3JkZXItcmFkaXVzOiAkcmFkaXVzLWZ1bGw7XHJcbiAgYW5pbWF0aW9uOiBzcGluIDFzIGxpbmVhciBpbmZpbml0ZTtcclxufVxyXG5cclxuIiwiQHVzZSAnLi92YXJpYWJsZXMuc2NzcycgYXMgKjtcclxuXHJcbkBrZXlmcmFtZXMgc2xpZGVEb3duIHtcclxuICBmcm9tIHtcclxuICAgIG9wYWNpdHk6IDA7XHJcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwcHgpO1xyXG4gIH1cclxuXHJcbiAgdG8ge1xyXG4gICAgb3BhY2l0eTogMTtcclxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcclxuICB9XHJcbn1cclxuXHJcbi5hbGVydC1jb250YWluZXIge1xyXG4gIGJvcmRlci1yYWRpdXM6ICRyYWRpdXMtbGc7XHJcbiAgcGFkZGluZzogMTRweCAkc3BhY2luZy1sZztcclxuICBtYXJnaW46IDEycHggJHNwYWNpbmctbGc7XHJcbiAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKDAsIDAsIDAsIDAuMik7XHJcbiAgY29sb3I6ICR3aGl0ZTtcclxuICBmb250LXNpemU6ICR0ZXh0LWJhc2U7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcclxuICBnYXA6IDEycHg7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIGFuaW1hdGlvbjogc2xpZGVEb3duICR0cmFuc2l0aW9uLXNsb3cgZWFzZS1vdXQ7XHJcblxyXG4gICYuZXJyb3Ige1xyXG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgJGVycm9yIDAlLCAkZXJyb3ItZGFyayAxMDAlKTtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkICRlcnJvci1kYXJrO1xyXG4gICAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKDIzOSwgNjgsIDY4LCAwLjIpO1xyXG4gIH1cclxuXHJcbiAgJi53YXJuaW5nIHtcclxuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICR3YXJuaW5nIDAlLCAkd2FybmluZy1kYXJrIDEwMCUpO1xyXG4gICAgYm9yZGVyOiAxcHggc29saWQgJHdhcm5pbmctZGFyaztcclxuICAgIGJveC1zaGFkb3c6IDAgNHB4IDEycHggcmdiYSgyNDUsIDE1OCwgMTEsIDAuMik7XHJcbiAgfVxyXG5cclxuICAmLnN1Y2Nlc3Mge1xyXG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgJHN1Y2Nlc3MgMCUsICRzdWNjZXNzLWRhcmsgMTAwJSk7XHJcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkc3VjY2Vzcy1kYXJrO1xyXG4gICAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKDE2LCAxODUsIDEyOSwgMC4yKTtcclxuICB9XHJcbn1cclxuXHJcbi5hbGVydC1pY29uLWNvbnRhaW5lciB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gIHdpZHRoOiAyNHB4O1xyXG4gIGhlaWdodDogMjRweDtcclxuICBmbGV4LXNocmluazogMDtcclxuICBtYXJnaW4tdG9wOiAycHg7XHJcbn1cclxuXHJcbi5hbGVydC1jb250ZW50IHtcclxuICBmbGV4OiAxO1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICBnYXA6ICRzcGFjaW5nLXNtO1xyXG59XHJcblxyXG4uYWxlcnQtdGl0bGUge1xyXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgZm9udC1zaXplOiAkdGV4dC1tZDtcclxuICBtYXJnaW46IDA7XHJcbiAgbGluZS1oZWlnaHQ6IDEuNDtcclxufVxyXG5cclxuLmFsZXJ0LW1lc3NhZ2Uge1xyXG4gIG1hcmdpbjogMDtcclxuICBsaW5lLWhlaWdodDogMS41O1xyXG4gIG9wYWNpdHk6IDAuOTU7XHJcbn1cclxuXHJcbi5hbGVydC1saXN0IHtcclxuICBtYXJnaW46ICRzcGFjaW5nLXNtIDAgMCAwO1xyXG4gIHBhZGRpbmctbGVmdDogJHNwYWNpbmcteGw7XHJcbiAgbGlzdC1zdHlsZTogbm9uZTtcclxufVxyXG5cclxuLmFsZXJ0LWxpc3QtaXRlbSB7XHJcbiAgbWFyZ2luLWJvdHRvbTogJHNwYWNpbmcteHM7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIHBhZGRpbmctbGVmdDogMTJweDtcclxuICBsaW5lLWhlaWdodDogMS40O1xyXG5cclxuICBsaT5zcGFuIHtcclxuICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCI7XHJcbiAgICBsZWZ0OiAwO1xyXG4gICAgdG9wOiAycHg7XHJcbiAgICBmb250LXdlaWdodDogYm9sZDtcclxuXHJcbiAgfVxyXG5cclxuICBsaT5jb2RlIHtcclxuICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTtcclxuICAgIHBhZGRpbmc6IDJweCA2cHg7XHJcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XHJcbiAgICBmb250LXNpemU6IDEycHg7XHJcbiAgfVxyXG59XHJcblxyXG4uYWxlcnQtY2xvc2UtYnV0dG9uIHtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgdG9wOiAxMnB4O1xyXG4gIHJpZ2h0OiAxMnB4O1xyXG4gIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTtcclxuICBib3JkZXI6IG5vbmU7XHJcbiAgYm9yZGVyLXJhZGl1czogNnB4O1xyXG4gIHdpZHRoOiAyNHB4O1xyXG4gIGhlaWdodDogMjRweDtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG4gIGNvbG9yOiAkd2hpdGU7XHJcbiAgdHJhbnNpdGlvbjogYWxsICR0cmFuc2l0aW9uLWJhc2U7XHJcbiAgcGFkZGluZzogMDtcclxuXHJcbiAgJjpob3ZlciB7XHJcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMyk7XHJcbiAgfVxyXG59IiwiQHVzZSAnLi92YXJpYWJsZXMuc2NzcycgYXMgKjtcclxuXHJcbi51aS1yZW5kZXJlciB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIGdhcDogJHNwYWNpbmctbGc7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbn1cclxuXHJcbi8vIEZvcm0gQ29tcG9uZW50XHJcbi5mb3JtLWNvbXBvbmVudCB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgbWF4LXdpZHRoOiA1MDBweDtcclxuICBib3JkZXI6IDFweCBzb2xpZCAjZTBlMGUwO1xyXG4gIGJvcmRlci1yYWRpdXM6ICRyYWRpdXMtbGc7XHJcbiAgcGFkZGluZzogJHNwYWNpbmctMnhsO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcclxuICBib3gtc2hhZG93OiAkc2hhZG93LW1kO1xyXG4gIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsIFwiU2Vnb2UgVUlcIiwgUm9ib3RvLCBcIkhlbHZldGljYSBOZXVlXCIsIEFyaWFsLCBzYW5zLXNlcmlmO1xyXG59XHJcblxyXG4uZm9ybS10aXRsZSB7XHJcbiAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICBmb250LXNpemU6ICR0ZXh0LWxnO1xyXG4gIG1hcmdpbi1ib3R0b206ICRzcGFjaW5nLXhsO1xyXG4gIGNvbG9yOiAkYmxhY2s7XHJcbiAgbWFyZ2luLXRvcDogMDtcclxufVxyXG5cclxuLmZvcm0tZmllbGRzIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgZ2FwOiAkc3BhY2luZy14bDtcclxufVxyXG5cclxuLmZvcm0tZmllbGQge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICBnYXA6ICRzcGFjaW5nLXNtO1xyXG59XHJcblxyXG4uZm9ybS1sYWJlbCB7XHJcbiAgZm9udC13ZWlnaHQ6IDUwMDtcclxuICBmb250LXNpemU6ICR0ZXh0LWJhc2U7XHJcbiAgY29sb3I6ICRncmF5LTYwMDtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgZ2FwOiAkc3BhY2luZy14cztcclxuXHJcbiAgc3BhbiB7XHJcbiAgICBjb2xvcjogJGVycm9yO1xyXG4gICAgZm9udC1zaXplOiAkdGV4dC1zbTtcclxuICB9XHJcbn1cclxuXHJcbi5mb3JtLWlucHV0LFxyXG4uZm9ybS1zZWxlY3Qge1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkICNkMWQ1ZGI7XHJcbiAgYm9yZGVyLXJhZGl1czogJHJhZGl1cy1tZDtcclxuICBwYWRkaW5nOiAxMHB4IDEycHg7XHJcbiAgZm9udC1zaXplOiAkdGV4dC1iYXNlO1xyXG4gIGNvbG9yOiAkYmxhY2s7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xyXG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xyXG4gIG91dGxpbmU6IG5vbmU7XHJcbiAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yICR0cmFuc2l0aW9uLWZhc3QsIGJveC1zaGFkb3cgJHRyYW5zaXRpb24tZmFzdDtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcblxyXG4gICY6Zm9jdXMge1xyXG4gICAgYm9yZGVyLWNvbG9yOiAkYmx1ZS01MDA7XHJcbiAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSg1OSwgMTMwLCAyNDYsIDAuMSk7XHJcbiAgfVxyXG59XHJcblxyXG4uZm9ybS1zZWxlY3Qge1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxufVxyXG5cclxuLmZvcm0tc3VibWl0LWJ1dHRvbiB7XHJcbiAgbWFyZ2luLXRvcDogJHNwYWNpbmctMnhsO1xyXG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgYm9yZGVyLXJhZGl1czogJHJhZGl1cy1tZDtcclxuICBwYWRkaW5nOiAxMnB4ICRzcGFjaW5nLTJ4bDtcclxuICBmb250LXNpemU6ICR0ZXh0LWJhc2U7XHJcbiAgZm9udC13ZWlnaHQ6IDUwMDtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmx1ZS01MDA7XHJcbiAgY29sb3I6ICR3aGl0ZTtcclxuICBib3JkZXI6IG5vbmU7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgJHRyYW5zaXRpb24tZmFzdCwgdHJhbnNmb3JtIDAuMXMgZWFzZTtcclxuICBmb250LWZhbWlseTogaW5oZXJpdDtcclxuXHJcbiAgJjpob3ZlciB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmx1ZS02MDA7XHJcbiAgfVxyXG5cclxuICAmOmFjdGl2ZSB7XHJcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOTgpO1xyXG4gIH1cclxufVxyXG5cclxuLy8gQnV0dG9ucyBDb21wb25lbnRcclxuLmJ1dHRvbnMtY29tcG9uZW50IHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGdhcDogMTJweDtcclxuICBmbGV4LXdyYXA6IHdyYXA7XHJcbn1cclxuXHJcbi5idXR0b24tY29tcG9uZW50IHtcclxuICBib3JkZXItcmFkaXVzOiAkcmFkaXVzLW1kO1xyXG4gIHBhZGRpbmc6IDEwcHggJHNwYWNpbmcteGw7XHJcbiAgZm9udC1zaXplOiAkdGV4dC1iYXNlO1xyXG4gIGZvbnQtd2VpZ2h0OiA1MDA7XHJcbiAgYm9yZGVyOiAxcHggc29saWQgI2UwZTBlMDtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XHJcbiAgY29sb3I6ICRncmF5LTYwMDtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgdHJhbnNpdGlvbjogYWxsICR0cmFuc2l0aW9uLWZhc3Q7XHJcbiAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgXCJTZWdvZSBVSVwiLCBSb2JvdG8sIFwiSGVsdmV0aWNhIE5ldWVcIiwgQXJpYWwsIHNhbnMtc2VyaWY7XHJcbiAgb3V0bGluZTogbm9uZTtcclxuXHJcbiAgJi5wcmltYXJ5IHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICRibHVlLTUwMDtcclxuICAgIGNvbG9yOiAkd2hpdGU7XHJcbiAgICBib3JkZXItY29sb3I6ICRibHVlLTUwMDtcclxuXHJcbiAgICAmOmhvdmVyIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGJsdWUtNjAwO1xyXG4gICAgICBib3JkZXItY29sb3I6ICRibHVlLTYwMDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICYuc2Vjb25kYXJ5IHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICNmM2Y0ZjY7XHJcbiAgICBjb2xvcjogJGdyYXktNjAwO1xyXG4gICAgYm9yZGVyLWNvbG9yOiAjZDFkNWRiO1xyXG5cclxuICAgICY6aG92ZXIge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTVlN2ViO1xyXG4gICAgICBib3JkZXItY29sb3I6ICM5Y2EzYWY7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmLmRhbmdlciB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZXJyb3I7XHJcbiAgICBjb2xvcjogJHdoaXRlO1xyXG4gICAgYm9yZGVyLWNvbG9yOiAkZXJyb3I7XHJcblxyXG4gICAgJjpob3ZlciB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRlcnJvci1kYXJrO1xyXG4gICAgICBib3JkZXItY29sb3I6ICRlcnJvci1kYXJrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJjpub3QoLnByaW1hcnkpOm5vdCguc2Vjb25kYXJ5KTpub3QoLmRhbmdlcik6aG92ZXIge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2Y5ZmFmYjtcclxuICAgIGJvcmRlci1jb2xvcjogI2QxZDVkYjtcclxuICB9XHJcblxyXG4gICY6YWN0aXZlIHtcclxuICAgIHRyYW5zZm9ybTogc2NhbGUoMC45Nyk7XHJcbiAgfVxyXG59XHJcblxyXG4vLyBUYWJsZSBDb21wb25lbnRcclxuLnRhYmxlLWNvbXBvbmVudCB7XHJcbiAgYm9yZGVyOiAxcHggc29saWQgI2UwZTBlMDtcclxuICBib3JkZXItcmFkaXVzOiAkcmFkaXVzLWxnO1xyXG4gIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgZm9udC1zaXplOiAkdGV4dC1iYXNlO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcclxuICBib3gtc2hhZG93OiAkc2hhZG93LW1kO1xyXG4gIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsIFwiU2Vnb2UgVUlcIiwgUm9ib3RvLCBcIkhlbHZldGljYSBOZXVlXCIsIEFyaWFsLCBzYW5zLXNlcmlmO1xyXG59XHJcblxyXG4udGFibGUtY2FwdGlvbiB7XHJcbiAgcGFkZGluZzogJHNwYWNpbmctbGcgJHNwYWNpbmcteGw7XHJcbiAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICBmb250LXNpemU6ICR0ZXh0LW1kO1xyXG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZTBlMGUwO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNmOGY5ZmE7XHJcbiAgY29sb3I6ICRibGFjaztcclxufVxyXG5cclxuLnRhYmxlLXdyYXBwZXIge1xyXG4gIG92ZXJmbG93LXg6IGF1dG87XHJcbn1cclxuXHJcbi50YWJsZSB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcclxuICBtaW4td2lkdGg6IDEwMCU7XHJcbn1cclxuXHJcbi50YWJsZS1oZWFkZXIge1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNmOGY5ZmE7XHJcbn1cclxuXHJcbi50YWJsZS10aCB7XHJcbiAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICNlMGUwZTA7XHJcbiAgcGFkZGluZzogMTRweCAkc3BhY2luZy14bDtcclxuICB0ZXh0LWFsaWduOiBsZWZ0O1xyXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgZm9udC1zaXplOiAkdGV4dC1zbTtcclxuICBjb2xvcjogIzRhNTU2ODtcclxuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xyXG4gIGxldHRlci1zcGFjaW5nOiAwLjVweDtcclxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG59XHJcblxyXG4udGFibGUtdGJvZHkge1xyXG4gIHRyIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcclxuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgJHRyYW5zaXRpb24tZmFzdDtcclxuXHJcbiAgICAmOm50aC1jaGlsZChldmVuKSB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmYWZiZmM7XHJcbiAgICB9XHJcblxyXG4gICAgJjpob3ZlciB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmMGY0Zjg7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4udGFibGUtdGQge1xyXG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZThlOGU4O1xyXG4gIHBhZGRpbmc6ICRzcGFjaW5nLWxnICRzcGFjaW5nLXhsO1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtYmFzZTtcclxuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xyXG5cclxuICA+c3BhbiB7XHJcbiAgICBjb2xvcjogI2EwYTBhMDtcclxuICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcclxuICB9XHJcbn1cclxuXHJcbi50YWJsZS1jZWxsLWltYWdlIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbn1cclxuXHJcbi50YWJsZS1pbWFnZSB7XHJcbiAgd2lkdGg6IDQwcHg7XHJcbiAgaGVpZ2h0OiA0MHB4O1xyXG4gIGJvcmRlci1yYWRpdXM6ICRyYWRpdXMtbWQ7XHJcbiAgb2JqZWN0LWZpdDogY292ZXI7XHJcbiAgYm9yZGVyOiAxcHggc29saWQgI2UwZTBlMDtcclxufVxyXG5cclxuLnRhYmxlLWNlbGwtdGV4dCB7XHJcbiAgY29sb3I6ICMyZDM3NDg7XHJcbiAgbGluZS1oZWlnaHQ6IDEuNTtcclxufVxyXG5cclxuLnRhYmxlLWVtcHR5IHtcclxuICBwYWRkaW5nOiA0MHB4O1xyXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICBjb2xvcjogIzljYTNhZjtcclxuICBmb250LXNpemU6ICR0ZXh0LWJhc2U7XHJcbn1cclxuXHJcbi8vIENhcmQgQ29tcG9uZW50XHJcbi5jYXJkLWNvbXBvbmVudCB7XHJcbiAgYm9yZGVyOiAxcHggc29saWQgI2U1ZTdlYjtcclxuICBib3JkZXItcmFkaXVzOiAkcmFkaXVzLXhsO1xyXG4gIHBhZGRpbmc6ICRzcGFjaW5nLWxnO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcclxuICBib3gtc2hhZG93OiAwIDFweCAzcHggMCByZ2JhKDAsIDAsIDAsIDAuMSk7XHJcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICBtYXJnaW4tYm90dG9tOiAxMnB4O1xyXG59XHJcblxyXG4uY2FyZC1jb250ZW50IHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGdhcDogMTJweDtcclxufVxyXG5cclxuLmNhcmQtaW1hZ2Uge1xyXG4gIHdpZHRoOiA2NHB4O1xyXG4gIGhlaWdodDogNjRweDtcclxuICBib3JkZXItcmFkaXVzOiAkcmFkaXVzLW1kO1xyXG4gIG9iamVjdC1maXQ6IGNvdmVyO1xyXG4gIGZsZXgtc2hyaW5rOiAwO1xyXG59XHJcblxyXG4uY2FyZC1pbmZvIHtcclxuICBmbGV4OiAxO1xyXG4gIG1pbi13aWR0aDogMDtcclxufVxyXG5cclxuLmNhcmQtdGl0bGUge1xyXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgZm9udC1zaXplOiAkdGV4dC1tZDtcclxuICBtYXJnaW4tYm90dG9tOiAkc3BhY2luZy1zbTtcclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xyXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XHJcbn1cclxuXHJcbi5jYXJkLXN1YnRpdGxlIHtcclxuICBjb2xvcjogJGdyYXktNTAwO1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtc207XHJcbiAgbWFyZ2luLWJvdHRvbTogJHNwYWNpbmcteHM7XHJcbiAgbWFyZ2luOiAwO1xyXG59XHJcblxyXG4uY2FyZC1zdGF0dXMge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZ2FwOiAkc3BhY2luZy1zbTtcclxuICBmb250LXNpemU6ICR0ZXh0LXNtO1xyXG4gIG1hcmdpbi1ib3R0b206ICRzcGFjaW5nLXhzO1xyXG59XHJcblxyXG4uY2FyZC1zdGF0dXMtbGFiZWwge1xyXG4gIGNvbG9yOiAkZ3JheS01MDA7XHJcbiAgZm9udC13ZWlnaHQ6IDUwMDtcclxufVxyXG5cclxuLmNhcmQtc3RhdHVzLXZhbHVlIHtcclxuICBjb2xvcjogJGdyYXktNjAwO1xyXG59XHJcblxyXG4uY2FyZC1maWVsZHMge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICBnYXA6ICRzcGFjaW5nLXhzO1xyXG59XHJcblxyXG4uY2FyZC1maWVsZCB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBnYXA6ICRzcGFjaW5nLXNtO1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtc207XHJcbn1cclxuXHJcbi5jYXJkLWZpZWxkLWxhYmVsIHtcclxuICBjb2xvcjogJGdyYXktNTAwO1xyXG4gIGZvbnQtd2VpZ2h0OiA1MDA7XHJcbn1cclxuXHJcbi5jYXJkLWZpZWxkLXZhbHVlIHtcclxuICBjb2xvcjogJGdyYXktNjAwO1xyXG59XHJcblxyXG4uY2FyZC1kZXNjcmlwdGlvbiB7XHJcbiAgY29sb3I6ICRncmF5LTUwMDtcclxuICBmb250LXNpemU6ICR0ZXh0LXNtO1xyXG4gIG1hcmdpbi10b3A6ICRzcGFjaW5nLXNtO1xyXG4gIG1hcmdpbjogMDtcclxufVxyXG5cclxuLmNhcmQtbGlzdCB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbn1cclxuXHJcbi5jYXJkLWxpc3QtdGl0bGUge1xyXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgbWFyZ2luLWJvdHRvbTogMTJweDtcclxuICBmb250LXNpemU6ICR0ZXh0LW1kO1xyXG4gIGNvbG9yOiAkYmxhY2s7XHJcbiAgbWFyZ2luLXRvcDogMDtcclxufVxyXG5cclxuLmNhcmQtbGlzdC1kZXNjcmlwdGlvbiB7XHJcbiAgY29sb3I6ICRncmF5LTUwMDtcclxuICBtYXJnaW4tYm90dG9tOiAxMnB4O1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtc207XHJcbiAgbWFyZ2luLXRvcDogMDtcclxufVxyXG5cclxuLmNhcmQtZ3JpZCB7XHJcbiAgZGlzcGxheTogZ3JpZDtcclxuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KDI1MHB4LCAxZnIpKTtcclxuICBnYXA6IDEycHg7XHJcbn1cclxuXHJcbi5jYXJkLWl0ZW0ge1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtc207XHJcbiAgYm9yZGVyOiAxcHggc29saWQgI2UwZTBlMDtcclxuICBib3JkZXItcmFkaXVzOiAkcmFkaXVzLWxnO1xyXG4gIHBhZGRpbmc6ICRzcGFjaW5nLWxnO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcclxuICBib3gtc2hhZG93OiAkc2hhZG93LW1kO1xyXG4gIG92ZXJmbG93OiBoaWRkZW47XHJcbn1cclxuXHJcbi5jYXJkLWl0ZW0tY29udGVudCB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBnYXA6IDEycHg7XHJcbn1cclxuXHJcbi5jYXJkLWl0ZW0taW1hZ2Uge1xyXG4gIHdpZHRoOiA2NHB4O1xyXG4gIGhlaWdodDogNjRweDtcclxuICBib3JkZXItcmFkaXVzOiAkcmFkaXVzLW1kO1xyXG4gIG9iamVjdC1maXQ6IGNvdmVyO1xyXG4gIGZsZXgtc2hyaW5rOiAwO1xyXG59XHJcblxyXG4uY2FyZC1pdGVtLWluZm8ge1xyXG4gIGZsZXg6IDE7XHJcbiAgbWluLXdpZHRoOiAwO1xyXG59XHJcblxyXG4uY2FyZC1pdGVtLXRpdGxlIHtcclxuICBmb250LXdlaWdodDogNjAwO1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtbWQ7XHJcbiAgbWFyZ2luLWJvdHRvbTogNHB4O1xyXG4gIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XHJcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxuICBjb2xvcjogJGJsYWNrO1xyXG4gIG1hcmdpbi10b3A6IDA7XHJcbn1cclxuXHJcbi5jYXJkLWl0ZW0tc3VidGl0bGUge1xyXG4gIGNvbG9yOiAkZ3JheS01MDA7XHJcbiAgZm9udC1zaXplOiAkdGV4dC1zbTtcclxuICBtYXJnaW46IDA7XHJcbn1cclxuXHJcbi5jYXJkLWl0ZW0tbGVnYWN5IHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuICBnYXA6ICRzcGFjaW5nLXNtO1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtc207XHJcbn1cclxuXHJcbi5jYXJkLWl0ZW0tbGVnYWN5LWxhYmVsIHtcclxuICBjb2xvcjogJGdyYXktNTAwO1xyXG4gIG1hcmdpbjogMDtcclxufVxyXG5cclxuLmNhcmQtaXRlbS1sZWdhY3ktdmFsdWUge1xyXG4gIGZvbnQtd2VpZ2h0OiA1MDA7XHJcbiAgY29sb3I6ICRibGFjaztcclxuICBtYXJnaW46IDA7XHJcbn1cclxuXHJcbi8vIEZpZWxkIHJlbmRlcmVyXHJcbi5maWVsZC10ZXh0IHtcclxuICAvLyBUZXh0IGZpZWxkIHN0eWxlcyBpZiBuZWVkZWRcclxufVxyXG5cclxuLmZpZWxkLWltYWdlIHtcclxuICB3aWR0aDogMjRweDtcclxuICBoZWlnaHQ6IDI0cHg7XHJcbiAgYm9yZGVyLXJhZGl1czogOTk5cHg7XHJcbiAgb2JqZWN0LWZpdDogY292ZXI7XHJcbn1cclxuXHJcbi5maWVsZC1saW5rIHtcclxuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcclxufVxyXG5cclxuLmZpZWxkLWJhZGdlIHtcclxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgcGFkZGluZzogMnB4IDZweDtcclxuICBib3JkZXItcmFkaXVzOiA5OTlweDtcclxuICBmb250LXNpemU6IDEwcHg7XHJcbiAgZm9udC13ZWlnaHQ6IDUwMDtcclxuXHJcbiAgJi5zdWNjZXNzIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICNlMGZjZTU7XHJcbiAgICBjb2xvcjogIzFhN2YzNjtcclxuICB9XHJcblxyXG4gICYud2FybmluZyB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmN2Q2O1xyXG4gICAgY29sb3I6ICM4YTZhMDA7XHJcbiAgfVxyXG5cclxuICAmLmRhbmdlciB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZlNGU0O1xyXG4gICAgY29sb3I6ICNiNDIzMTg7XHJcbiAgfVxyXG5cclxuICAmOm5vdCguc3VjY2Vzcyk6bm90KC53YXJuaW5nKTpub3QoLmRhbmdlcikge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2YyZjJmMjtcclxuICAgIGNvbG9yOiAjMzMzO1xyXG4gIH1cclxufVxyXG5cclxuLmZpZWxkLWxpc3Qge1xyXG4gIG1hcmdpbjogMDtcclxuICBwYWRkaW5nLWxlZnQ6IDE2cHg7XHJcbn0iLCJAdXNlICcuL3ZhcmlhYmxlcy5zY3NzJyBhcyAqO1xyXG5cclxuLmdlbmVyYXRpdmUtdWktY29udGFpbmVyIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgZ2FwOiAkc3BhY2luZy1sZztcclxuICB3aWR0aDogMTAwJTtcclxuXHJcbiAgIFxyXG59XHJcblxyXG4uZ2VuZXJhdGl2ZS11aS1oZWFkZXIge1xyXG4gIG1hcmdpbi1ib3R0b206ICRzcGFjaW5nLW1kO1xyXG59XHJcblxyXG4uZ2VuZXJhdGl2ZS11aS10aXRsZSB7XHJcbiAgZm9udC1zaXplOiAkdGV4dC14bDtcclxuICBmb250LXdlaWdodDogNjAwO1xyXG4gIGNvbG9yOiAkZ3JheS05MDA7XHJcbiAgbWFyZ2luOiAwIDAgJHNwYWNpbmctc20gMDtcclxufVxyXG5cclxuLmdlbmVyYXRpdmUtdWktZGVzY3JpcHRpb24ge1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtbWQ7XHJcbiAgY29sb3I6ICRncmF5LTYwMDtcclxuICBtYXJnaW46IDA7XHJcbiAgbGluZS1oZWlnaHQ6IDEuNTtcclxufVxyXG5cclxuLy8gVGV4dCBDb21wb25lbnRcclxuLmdlbi11aS10ZXh0IHtcclxuICBmb250LXNpemU6ICR0ZXh0LWJhc2U7XHJcbiAgY29sb3I6ICRncmF5LTgwMDtcclxuICBsaW5lLWhlaWdodDogMS42O1xyXG4gIG1hcmdpbjogMDtcclxufVxyXG5cclxuLy8gSW5wdXQgQ29tcG9uZW50XHJcbi5nZW4tdWktaW5wdXQtd3JhcHBlciB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIGdhcDogJHNwYWNpbmctc207XHJcbn1cclxuXHJcbi5nZW4tdWktaW5wdXQtbGFiZWwge1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtc207XHJcbiAgZm9udC13ZWlnaHQ6IDUwMDtcclxuICBjb2xvcjogJGdyYXktNzAwO1xyXG4gIG1hcmdpbjogMDtcclxufVxyXG5cclxuLmdlbi11aS1pbnB1dCxcclxuLmdlbi11aS10ZXh0YXJlYSB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgcGFkZGluZzogMTBweCAxMnB4O1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkICRncmF5LTMwMDtcclxuICBib3JkZXItcmFkaXVzOiAkcmFkaXVzLW1kO1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtYmFzZTtcclxuICBjb2xvcjogJGdyYXktOTAwO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcclxuICBvdXRsaW5lOiBub25lO1xyXG4gIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAkdHJhbnNpdGlvbi1iYXNlLCBib3gtc2hhZG93ICR0cmFuc2l0aW9uLWJhc2U7XHJcbiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XHJcblxyXG4gICY6OnBsYWNlaG9sZGVyIHtcclxuICAgIGNvbG9yOiAkZ3JheS00MDA7XHJcbiAgfVxyXG5cclxuICAmOmZvY3VzIHtcclxuICAgIGJvcmRlci1jb2xvcjogJGJsdWUtNTAwO1xyXG4gICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoNTksIDEzMCwgMjQ2LCAwLjEpO1xyXG4gIH1cclxuXHJcbiAgJjpkaXNhYmxlZCB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZ3JheS0xMDA7XHJcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xyXG4gICAgb3BhY2l0eTogMC42O1xyXG4gIH1cclxufVxyXG5cclxuLmdlbi11aS10ZXh0YXJlYSB7XHJcbiAgbWluLWhlaWdodDogODBweDtcclxuICByZXNpemU6IHZlcnRpY2FsO1xyXG59XHJcblxyXG4vLyBTZWxlY3QgQ29tcG9uZW50XHJcbi5nZW4tdWktc2VsZWN0LXdyYXBwZXIge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICBnYXA6ICRzcGFjaW5nLXNtO1xyXG59XHJcblxyXG4uZ2VuLXVpLXNlbGVjdC1sYWJlbCB7XHJcbiAgZm9udC1zaXplOiAkdGV4dC1zbTtcclxuICBmb250LXdlaWdodDogNTAwO1xyXG4gIGNvbG9yOiAkZ3JheS03MDA7XHJcbiAgbWFyZ2luOiAwO1xyXG59XHJcblxyXG4uZ2VuLXVpLXNlbGVjdCB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgcGFkZGluZzogMTBweCAxMnB4O1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkICRncmF5LTMwMDtcclxuICBib3JkZXItcmFkaXVzOiAkcmFkaXVzLW1kO1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtYmFzZTtcclxuICBjb2xvcjogJGdyYXktOTAwO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcclxuICBvdXRsaW5lOiBub25lO1xyXG4gIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAkdHJhbnNpdGlvbi1iYXNlLCBib3gtc2hhZG93ICR0cmFuc2l0aW9uLWJhc2U7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xyXG5cclxuICAmOmZvY3VzIHtcclxuICAgIGJvcmRlci1jb2xvcjogJGJsdWUtNTAwO1xyXG4gICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoNTksIDEzMCwgMjQ2LCAwLjEpO1xyXG4gIH1cclxuXHJcbiAgJjpkaXNhYmxlZCB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZ3JheS0xMDA7XHJcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xyXG4gICAgb3BhY2l0eTogMC42O1xyXG4gIH1cclxufVxyXG5cclxuLy8gQnV0dG9uIENvbXBvbmVudFxyXG4uZ2VuLXVpLWJ1dHRvbiB7XHJcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICBwYWRkaW5nOiAxMHB4ICRzcGFjaW5nLWxnO1xyXG4gIGJvcmRlci1yYWRpdXM6ICRyYWRpdXMtbWQ7XHJcbiAgZm9udC1zaXplOiAkdGV4dC1iYXNlO1xyXG4gIGZvbnQtd2VpZ2h0OiA1MDA7XHJcbiAgYm9yZGVyOiBub25lO1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxuICB0cmFuc2l0aW9uOiBhbGwgJHRyYW5zaXRpb24tYmFzZTtcclxuICBmb250LWZhbWlseTogaW5oZXJpdDtcclxuICBvdXRsaW5lOiBub25lO1xyXG4gIGJhY2tncm91bmQ6ICRibHVlLTYwMDtcclxuICBjb2xvcjogJHdoaXRlO1xyXG5cclxuICAmOmhvdmVyIHtcclxuICAgIGJhY2tncm91bmQ6ICRibHVlLTcwMDtcclxuICB9XHJcblxyXG4gICY6YWN0aXZlIHtcclxuICAgIHRyYW5zZm9ybTogc2NhbGUoMC45OCk7XHJcbiAgfVxyXG5cclxuICAmOmRpc2FibGVkIHtcclxuICAgIGJhY2tncm91bmQ6ICRncmF5LTMwMDtcclxuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XHJcbiAgICBvcGFjaXR5OiAwLjY7XHJcbiAgfVxyXG59XHJcblxyXG4vLyBDYXJkIENvbXBvbmVudFxyXG4uZ2VuLXVpLWNhcmQge1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkICRncmF5LTIwMDtcclxuICBib3JkZXItcmFkaXVzOiAkcmFkaXVzLWxnO1xyXG4gIHBhZGRpbmc6ICRzcGFjaW5nLWxnO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcclxuICBib3gtc2hhZG93OiAkc2hhZG93LXNtO1xyXG4gIHRyYW5zaXRpb246IGJveC1zaGFkb3cgJHRyYW5zaXRpb24tYmFzZTtcclxuXHJcbiAgJjpob3ZlciB7XHJcbiAgICBib3gtc2hhZG93OiAkc2hhZG93LW1kO1xyXG4gIH1cclxufVxyXG5cclxuLmdlbi11aS1jYXJkLXRpdGxlIHtcclxuICBmb250LXNpemU6ICR0ZXh0LWxnO1xyXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgY29sb3I6ICRncmF5LTkwMDtcclxuICBtYXJnaW46IDAgMCAkc3BhY2luZy1zbSAwO1xyXG59XHJcblxyXG4uZ2VuLXVpLWNhcmQtY29udGVudCB7XHJcbiAgZm9udC1zaXplOiAkdGV4dC1iYXNlO1xyXG4gIGNvbG9yOiAkZ3JheS03MDA7XHJcbiAgbWFyZ2luOiAwO1xyXG4gIGxpbmUtaGVpZ2h0OiAxLjU7XHJcbn1cclxuXHJcbi8vIExpc3QgQ29tcG9uZW50XHJcbi5nZW4tdWktbGlzdCB7XHJcbiAgbGlzdC1zdHlsZS10eXBlOiBkaXNjO1xyXG4gIHBhZGRpbmctbGVmdDogJHNwYWNpbmcteGw7XHJcbiAgbWFyZ2luOiAwO1xyXG59XHJcblxyXG4uZ2VuLXVpLWxpc3QtaXRlbSB7XHJcbiAgZm9udC1zaXplOiAkdGV4dC1iYXNlO1xyXG4gIGNvbG9yOiAkZ3JheS04MDA7XHJcbiAgbGluZS1oZWlnaHQ6IDEuNjtcclxuICBtYXJnaW4tYm90dG9tOiAkc3BhY2luZy14cztcclxuXHJcbiAgJjpsYXN0LWNoaWxkIHtcclxuICAgIG1hcmdpbi1ib3R0b206IDA7XHJcbiAgfVxyXG59XHJcblxyXG4vLyBJbWFnZSBDb21wb25lbnRcclxuLmdlbi11aS1pbWFnZSB7XHJcbiAgbWF4LXdpZHRoOiAxMDAlO1xyXG4gIGhlaWdodDogYXV0bztcclxuICBib3JkZXItcmFkaXVzOiAkcmFkaXVzLW1kO1xyXG4gIGRpc3BsYXk6IGJsb2NrO1xyXG59XHJcblxyXG4vLyBMaW5rIENvbXBvbmVudFxyXG4uZ2VuLXVpLWxpbmsge1xyXG4gIGNvbG9yOiAkYmx1ZS02MDA7XHJcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtYmFzZTtcclxuICB0cmFuc2l0aW9uOiBjb2xvciAkdHJhbnNpdGlvbi1iYXNlO1xyXG5cclxuICAmOmhvdmVyIHtcclxuICAgIGNvbG9yOiAkYmx1ZS03MDA7XHJcbiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcclxuICB9XHJcblxyXG4gICY6dmlzaXRlZCB7XHJcbiAgICBjb2xvcjogJGJsdWUtNjAwO1xyXG4gIH1cclxufVxyXG5cclxuLy8gVGFibGUgQ29tcG9uZW50XHJcbi5nZW4tdWktdGFibGUtd3JhcHBlciB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgb3ZlcmZsb3cteDogYXV0bztcclxuICBib3JkZXI6IDFweCBzb2xpZCAkZ3JheS0yMDA7XHJcbiAgYm9yZGVyLXJhZGl1czogJHJhZGl1cy1sZztcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XHJcbiAgYm94LXNoYWRvdzogJHNoYWRvdy1zbTtcclxufVxyXG5cclxuLmdlbi11aS10YWJsZSB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcclxuICBtaW4td2lkdGg6IDEwMCU7XHJcbn1cclxuXHJcbi5nZW4tdWktdGFibGUtaGVhZGVyIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkZ3JheS01MDtcclxufVxyXG5cclxuLmdlbi11aS10YWJsZS10aCB7XHJcbiAgcGFkZGluZzogMTJweCAkc3BhY2luZy1sZztcclxuICB0ZXh0LWFsaWduOiBsZWZ0O1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtc207XHJcbiAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICBjb2xvcjogJGdyYXktNzAwO1xyXG4gIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCAkZ3JheS0yMDA7XHJcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxufVxyXG5cclxuLmdlbi11aS10YWJsZS1ib2R5IHtcclxuICB0ciB7XHJcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yICR0cmFuc2l0aW9uLWJhc2U7XHJcblxyXG4gICAgJjpob3ZlciB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRncmF5LTUwO1xyXG4gICAgfVxyXG5cclxuICAgICY6bm90KDpsYXN0LWNoaWxkKSB7XHJcbiAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkZ3JheS0yMDA7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4uZ2VuLXVpLXRhYmxlLXRkIHtcclxuICBwYWRkaW5nOiAxMnB4ICRzcGFjaW5nLWxnO1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtYmFzZTtcclxuICBjb2xvcjogJGdyYXktODAwO1xyXG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcbn1cclxuXHJcbi8vIEZvcm0gQ29tcG9uZW50XHJcbi5nZW4tdWktZm9ybSB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIGdhcDogJHNwYWNpbmctbGc7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbn1cclxuXHJcbiJdfQ== */`;
1458
+ document.head.appendChild(document.createElement("style")).appendChild(document.createTextNode(css));
1459
+
1460
+ // src/utils/cx.ts
1461
+ function validateHeaders(headers, authConfig, opts = {}) {
1462
+ if (headers && (!authConfig || Object.keys(authConfig).length === 0)) {
1463
+ return {
1464
+ isValid: false,
1465
+ missingKeys: [],
1466
+ extraKeys: [],
1467
+ emptyValueKeys: [],
1468
+ warning: "Auth config bo\u015F ya da tan\u0131ms\u0131z, header do\u011Frulamas\u0131 yap\u0131lam\u0131yor."
1469
+ };
1470
+ }
1471
+ const { caseSensitive = false, allowExtra = false } = opts;
1472
+ const normalize = (s) => caseSensitive ? s : s.toLowerCase();
1473
+ const headerEntries = Object.entries(headers).map(([k, v]) => [normalize(k), v.trim()]);
1474
+ const authEntries = Object.entries(authConfig).map(([k, v]) => [normalize(k), v.trim()]);
1475
+ const headerKeys = headerEntries.map(([k]) => k);
1476
+ const authKeys = authEntries.map(([k]) => k);
1477
+ const requiredSet = new Set(authKeys);
1478
+ const missingKeys = authKeys.filter((k) => !headerKeys.includes(k));
1479
+ const extraKeys = headerKeys.filter((k) => !requiredSet.has(k));
1480
+ const hasAllRequired = missingKeys.length === 0;
1481
+ const hasExtraKeys = extraKeys.length > 0 && !allowExtra;
1482
+ const emptyValueKeys = authKeys.filter((k) => {
1483
+ const val = headerEntries.find(([key]) => key === k)?.[1];
1484
+ return !val || val.length === 0;
1485
+ });
1486
+ const isValid = hasAllRequired && !hasExtraKeys && emptyValueKeys.length === 0;
1487
+ return { isValid, missingKeys, extraKeys, emptyValueKeys };
1488
+ }
1489
+ var HeaderAlert = ({ headerValidation, showAlert, setShowAlert }) => {
1490
+ if (!headerValidation || !showAlert) return null;
1491
+ const { isValid, missingKeys, extraKeys, emptyValueKeys, warning } = headerValidation;
1492
+ if (isValid && missingKeys.length === 0 && extraKeys.length === 0 && emptyValueKeys.length === 0 && !warning) {
1493
+ return null;
1494
+ }
1495
+ const hasErrors = missingKeys.length > 0 || emptyValueKeys.length > 0;
1496
+ const hasWarnings = extraKeys.length > 0 || !!warning;
1497
+ const alertType = hasErrors ? "error" : "warning";
1498
+ const getAlertIcon = () => {
1499
+ if (hasErrors) {
1500
+ return /* @__PURE__ */ jsxRuntime.jsx("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z" }) });
1501
+ }
1502
+ return /* @__PURE__ */ jsxRuntime.jsx("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z" }) });
1503
+ };
1504
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `alert-container ${alertType}`, children: [
1505
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "alert-icon-container", children: getAlertIcon() }),
1506
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "alert-content", children: [
1507
+ /* @__PURE__ */ jsxRuntime.jsx("h4", { className: "alert-title", children: hasErrors ? "Header Do\u011Frulama Hatas\u0131" : "Header Uyar\u0131s\u0131" }),
1508
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "alert-message", children: hasErrors && hasWarnings ? "Header yap\u0131land\u0131rman\u0131zda hatalar ve uyar\u0131lar bulundu." : hasErrors ? "Header yap\u0131land\u0131rman\u0131zda hatalar bulundu." : "Header yap\u0131land\u0131rman\u0131zda fazla anahtarlar bulundu." }),
1509
+ missingKeys.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
1510
+ /* @__PURE__ */ jsxRuntime.jsx("strong", { children: "Eksik Header'lar:" }),
1511
+ /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "alert-list", children: missingKeys.map((key, index) => /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "alert-list-item", children: [
1512
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: "\u2022" }),
1513
+ /* @__PURE__ */ jsxRuntime.jsx("code", { children: key })
1514
+ ] }, index)) })
1515
+ ] }),
1516
+ emptyValueKeys.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
1517
+ /* @__PURE__ */ jsxRuntime.jsx("strong", { children: "Bo\u015F De\u011Ferli Header'lar:" }),
1518
+ /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "alert-list", children: emptyValueKeys.map((key, index) => /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "alert-list-item", children: [
1519
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: "\u2022" }),
1520
+ /* @__PURE__ */ jsxRuntime.jsx("code", { children: key }),
1521
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: "(de\u011Fer bo\u015F olamaz)" })
1522
+ ] }, index)) })
1523
+ ] }),
1524
+ extraKeys.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
1525
+ /* @__PURE__ */ jsxRuntime.jsx("strong", { children: "Fazla Header'lar:" }),
1526
+ /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "alert-list", children: extraKeys.map((key, index) => /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "alert-list-item", children: [
1527
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: "\u2022" }),
1528
+ /* @__PURE__ */ jsxRuntime.jsx("code", { children: key })
1529
+ ] }, index)) })
1530
+ ] }),
1531
+ warning && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
1532
+ /* @__PURE__ */ jsxRuntime.jsx("strong", { children: "Uyar\u0131:" }),
1533
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "alert-message", children: warning })
1534
+ ] })
1535
+ ] }),
1536
+ /* @__PURE__ */ jsxRuntime.jsx(
1537
+ "button",
1538
+ {
1539
+ onClick: () => setShowAlert(false),
1540
+ className: "alert-close-button",
1541
+ "aria-label": "Uyar\u0131y\u0131 kapat",
1542
+ children: /* @__PURE__ */ jsxRuntime.jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z" }) })
1543
+ }
1544
+ )
1545
+ ] }) });
1546
+ };
1547
+ var LoadingSpinner = () => {
1548
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "loading-spinner" });
1549
+ };
1550
+ var ChatInput = ({ isLoading, placeholder, handleSendMessage }) => {
1551
+ const [message, setMessage] = react.useState("");
1552
+ const textareaRef = react.useRef(null);
1553
+ const handleSubmit = (e) => {
1554
+ e.preventDefault();
1555
+ if (message.trim() && !isLoading) {
1556
+ handleSendMessage(message.trim());
1557
+ setMessage("");
1558
+ if (textareaRef.current) {
1559
+ textareaRef.current.style.height = "auto";
1560
+ }
1561
+ }
1562
+ };
1563
+ const handleKeyDown = (e) => {
1564
+ if (e.key === "Enter" && !e.shiftKey) {
1565
+ e.preventDefault();
1566
+ handleSubmit(e);
1567
+ }
1568
+ };
1569
+ const handleInputChange = (e) => {
1570
+ setMessage(e.target.value);
1571
+ const textarea = e.target;
1572
+ textarea.style.height = "auto";
1573
+ textarea.style.height = Math.min(textarea.scrollHeight, 120) + "px";
1574
+ };
1575
+ return /* @__PURE__ */ jsxRuntime.jsxs("form", { onSubmit: handleSubmit, className: "input-container", children: [
1576
+ /* @__PURE__ */ jsxRuntime.jsx(
1577
+ "textarea",
1578
+ {
1579
+ ref: textareaRef,
1580
+ value: message,
1581
+ onChange: handleInputChange,
1582
+ onKeyDown: handleKeyDown,
1583
+ placeholder,
1584
+ disabled: isLoading,
1585
+ className: "textarea"
1586
+ }
1587
+ ),
1588
+ /* @__PURE__ */ jsxRuntime.jsx(
1589
+ "button",
1590
+ {
1591
+ type: "submit",
1592
+ disabled: isLoading || !message.trim(),
1593
+ className: "send-button",
1594
+ children: isLoading ? /* @__PURE__ */ jsxRuntime.jsx(LoadingSpinner, {}) : /* @__PURE__ */ jsxRuntime.jsx("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M2.01 21L23 12 2.01 3 2 10l15 2-15 2z" }) })
1595
+ }
1596
+ )
1597
+ ] });
1598
+ };
1599
+ var GenericUIRenderer = ({ uiData, onInteraction }) => {
1600
+ const containerRef = react.useRef(null);
1601
+ if (!uiData || !uiData.components) return null;
1602
+ const collectFormValues = () => {
1603
+ if (!containerRef.current) return {};
1604
+ const formData = {};
1605
+ const inputs = containerRef.current.querySelectorAll("input, textarea, select");
1606
+ inputs.forEach((element) => {
1607
+ const name = element.getAttribute("name");
1608
+ if (name) {
1609
+ if (element instanceof HTMLInputElement && element.type === "checkbox") {
1610
+ formData[name] = element.checked;
1611
+ } else if (element instanceof HTMLInputElement && element.type === "radio") {
1612
+ if (element.checked) {
1613
+ formData[name] = element.value;
1614
+ }
1615
+ } else {
1616
+ formData[name] = element.value;
1617
+ }
1618
+ }
1619
+ });
1620
+ return formData;
1621
+ };
1622
+ const renderComponent = (comp) => {
1623
+ switch (comp.type) {
1624
+ case "text":
1625
+ return /* @__PURE__ */ jsxRuntime.jsx("p", { className: "gen-ui-text", children: comp.value ?? comp.label }, comp.id);
1626
+ case "input":
1627
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "gen-ui-input-wrapper", children: [
1628
+ comp.label && /* @__PURE__ */ jsxRuntime.jsx("label", { className: "gen-ui-input-label", children: comp.label }),
1629
+ comp.fieldType === "textarea" ? /* @__PURE__ */ jsxRuntime.jsx(
1630
+ "textarea",
1631
+ {
1632
+ name: comp.id,
1633
+ placeholder: comp.placeholder,
1634
+ className: "gen-ui-textarea"
1635
+ }
1636
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
1637
+ "input",
1638
+ {
1639
+ name: comp.id,
1640
+ type: comp.fieldType || "text",
1641
+ placeholder: comp.placeholder,
1642
+ className: "gen-ui-input"
1643
+ }
1644
+ )
1645
+ ] }, comp.id);
1646
+ case "select":
1647
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "gen-ui-select-wrapper", children: [
1648
+ comp.label && /* @__PURE__ */ jsxRuntime.jsx("label", { className: "gen-ui-select-label", children: comp.label }),
1649
+ /* @__PURE__ */ jsxRuntime.jsx("select", { name: comp.id, className: "gen-ui-select", children: comp.options?.map((opt) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: opt, children: opt }, opt)) })
1650
+ ] }, comp.id);
1651
+ case "button":
1652
+ return /* @__PURE__ */ jsxRuntime.jsx(
1653
+ "button",
1654
+ {
1655
+ onClick: () => {
1656
+ const formValues = collectFormValues();
1657
+ onInteraction({
1658
+ action: comp.label,
1659
+ buttonId: comp.buttonType,
1660
+ formData: formValues
1661
+ });
1662
+ },
1663
+ className: "gen-ui-button",
1664
+ children: comp.label
1665
+ },
1666
+ comp.id
1667
+ );
1668
+ case "card":
1669
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "gen-ui-card", children: [
1670
+ comp.label && /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "gen-ui-card-title", children: comp.label }),
1671
+ comp.value && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "gen-ui-card-content", children: comp.value })
1672
+ ] }, comp.id);
1673
+ case "list":
1674
+ return /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "gen-ui-list", children: comp.items?.map((item) => /* @__PURE__ */ jsxRuntime.jsx("li", { className: "gen-ui-list-item", children: item.label ?? String(item.value ?? "") }, item.id)) }, comp.id);
1675
+ case "image":
1676
+ return /* @__PURE__ */ jsxRuntime.jsx(
1677
+ "img",
1678
+ {
1679
+ src: comp.url,
1680
+ alt: comp.label || "",
1681
+ className: "gen-ui-image"
1682
+ },
1683
+ comp.id
1684
+ );
1685
+ case "link":
1686
+ return /* @__PURE__ */ jsxRuntime.jsx(
1687
+ "a",
1688
+ {
1689
+ href: comp.url,
1690
+ className: "gen-ui-link",
1691
+ children: comp.label || comp.url
1692
+ },
1693
+ comp.id
1694
+ );
1695
+ case "table":
1696
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "gen-ui-table-wrapper", children: /* @__PURE__ */ jsxRuntime.jsxs("table", { className: "gen-ui-table", children: [
1697
+ comp.columns && /* @__PURE__ */ jsxRuntime.jsx("thead", { className: "gen-ui-table-header", children: /* @__PURE__ */ jsxRuntime.jsx("tr", { children: comp.columns.map((col) => /* @__PURE__ */ jsxRuntime.jsx("th", { className: "gen-ui-table-th", children: col }, col)) }) }),
1698
+ comp.rows && /* @__PURE__ */ jsxRuntime.jsx("tbody", { className: "gen-ui-table-body", children: comp.rows.map((row, ridx) => /* @__PURE__ */ jsxRuntime.jsx("tr", { children: row.map((cell, cidx) => /* @__PURE__ */ jsxRuntime.jsx("td", { className: "gen-ui-table-td", children: cell }, cidx)) }, ridx)) })
1699
+ ] }) }, comp.id);
1700
+ case "form":
1701
+ return /* @__PURE__ */ jsxRuntime.jsx("form", { className: "gen-ui-form", children: comp.items?.map((field) => renderComponent(field)) }, comp.id);
1702
+ default:
1703
+ return null;
1704
+ }
1705
+ };
1706
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "generative-ui-container", ref: containerRef, children: [
1707
+ (uiData.title || uiData.description) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "generative-ui-header", children: [
1708
+ uiData.title && /* @__PURE__ */ jsxRuntime.jsx("h1", { className: "generative-ui-title", children: uiData.title }),
1709
+ uiData.description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "generative-ui-description", children: uiData.description })
1710
+ ] }),
1711
+ uiData.components.map((comp) => renderComponent(comp))
1712
+ ] });
1713
+ };
1714
+ var MessageBubble = ({ message, onAction }) => {
1715
+ console.log("MESSAGE", message);
1716
+ const isUser = message.role === "user";
1717
+ const approval = message.role === "approval";
1718
+ if (approval) {
1719
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, {});
1720
+ }
1721
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `message-container ${isUser ? "user" : "assistant"}`, children: [
1722
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: `message-bubble ${isUser ? "user" : "assistant"}`, children: isUser ? message.text && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "markdown-content", children: message.text }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1723
+ message.text && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "markdown-content", children: /* @__PURE__ */ jsxRuntime.jsx(ReactMarkdown__default.default, { remarkPlugins: [remarkGfm__default.default], children: message.text }) }),
1724
+ message.ui && /* @__PURE__ */ jsxRuntime.jsx(
1725
+ GenericUIRenderer,
1726
+ {
1727
+ uiData: message.ui,
1728
+ onInteraction: (event) => {
1729
+ console.log("event", event);
1730
+ if (event.buttonId === "submit") {
1731
+ onAction(JSON.stringify(event.formData), true);
1732
+ } else {
1733
+ onAction(event.action, true);
1734
+ }
1735
+ }
1736
+ }
1737
+ )
1738
+ ] }) }),
1739
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: `message-time ${isUser ? "user" : "assistant"}`, children: message.timestamp.toLocaleTimeString("tr-TR", {
1740
+ hour: "2-digit",
1741
+ minute: "2-digit"
1742
+ }) })
1743
+ ] });
1744
+ };
1745
+ var TypingDots = () => {
1746
+ const [dots, setDots] = react.useState("");
1747
+ react.useEffect(() => {
1748
+ const interval = setInterval(() => {
1749
+ setDots((prev) => {
1750
+ if (prev === "...") return "";
1751
+ return prev + ".";
1752
+ });
1753
+ }, 500);
1754
+ return () => clearInterval(interval);
1755
+ }, []);
1756
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "message-container assistant", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "message-bubble assistant", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "message-typing-indicator", children: /* @__PURE__ */ jsxRuntime.jsx("span", { children: dots }) }) }) });
1757
+ };
1758
+
1759
+ // src/utils/chatbot.ts
1760
+ var extractUIJsonFromText = (text) => {
1761
+ const regex = /```ui-component([\s\S]*?)```/g;
1762
+ let cleaned = text;
1763
+ let match;
1764
+ let uiData = null;
1765
+ while ((match = regex.exec(text)) !== null) {
1766
+ const block = match[1].trim();
1767
+ try {
1768
+ const parsed = JSON.parse(block);
1769
+ if (parsed && parsed.components && Array.isArray(parsed.components)) {
1770
+ parsed.components = parsed.components.map((comp, index) => {
1771
+ if (!comp.id || typeof comp.id !== "string" || !comp.id.trim()) {
1772
+ comp.id = `ui-comp-${index}-${Date.now()}`;
1773
+ }
1774
+ if (comp.type === "button") {
1775
+ if (!comp.buttonType) {
1776
+ comp.buttonType = "click";
1777
+ }
1778
+ }
1779
+ if (comp.type === "input") {
1780
+ if (!comp.fieldType) {
1781
+ comp.fieldType = "text";
1782
+ }
1783
+ }
1784
+ if (comp.type === "select") {
1785
+ if (comp.options && Array.isArray(comp.options)) {
1786
+ const firstOption = comp.options[0];
1787
+ if (typeof firstOption === "object" && firstOption !== null) {
1788
+ if ("label" in firstOption || "value" in firstOption) {
1789
+ comp.options = comp.options.map(
1790
+ (opt) => opt.label || opt.value || String(opt)
1791
+ );
1792
+ }
1793
+ }
1794
+ }
1795
+ }
1796
+ if (comp.type === "table") {
1797
+ if (comp.columns && Array.isArray(comp.columns)) {
1798
+ const firstCol = comp.columns[0];
1799
+ if (typeof firstCol === "object" && firstCol !== null) {
1800
+ comp.columns = comp.columns.map(
1801
+ (col) => col.label || col.id || String(col)
1802
+ );
1803
+ }
1804
+ }
1805
+ if (comp.rows && Array.isArray(comp.rows)) {
1806
+ const firstRow = comp.rows[0];
1807
+ if (typeof firstRow === "object" && !Array.isArray(firstRow)) {
1808
+ comp.rows = comp.rows.map((row) => {
1809
+ if (Array.isArray(row)) return row;
1810
+ return Object.values(row).map((val) => {
1811
+ if (typeof val === "object" && val !== null) {
1812
+ if (val.type === "image" && val.src) return val.src;
1813
+ if (val.value !== void 0) return String(val.value);
1814
+ }
1815
+ return String(val || "");
1816
+ });
1817
+ });
1818
+ }
1819
+ }
1820
+ }
1821
+ if (comp.type === "form" && comp.items && Array.isArray(comp.items)) {
1822
+ comp.items = comp.items.map((field, fieldIndex) => {
1823
+ if (!field.id || !field.id.trim()) {
1824
+ field.id = `field-${fieldIndex}-${Date.now()}`;
1825
+ }
1826
+ if (field.optional !== void 0) {
1827
+ field.requiredField = !field.optional;
1828
+ delete field.optional;
1829
+ }
1830
+ if (field.required !== void 0) {
1831
+ field.requiredField = field.required;
1832
+ delete field.required;
1833
+ }
1834
+ if (field.type === "input" && !field.fieldType) {
1835
+ field.fieldType = "text";
1836
+ }
1837
+ if (field.type === "select" && field.options && Array.isArray(field.options)) {
1838
+ const firstOpt = field.options[0];
1839
+ if (typeof firstOpt === "object" && firstOpt !== null) {
1840
+ field.options = field.options.map(
1841
+ (opt) => opt.label || opt.value || String(opt)
1842
+ );
1843
+ }
1844
+ }
1845
+ return field;
1846
+ });
1847
+ }
1848
+ if (comp.type === "list" && comp.items && Array.isArray(comp.items)) {
1849
+ comp.items = comp.items.map((item, itemIndex) => {
1850
+ if (typeof item === "string") {
1851
+ return {
1852
+ id: `list-item-${itemIndex}-${Date.now()}`,
1853
+ type: "text",
1854
+ value: item,
1855
+ label: item
1856
+ };
1857
+ }
1858
+ if (!item.id || !item.id.trim()) {
1859
+ item.id = `list-item-${itemIndex}-${Date.now()}`;
1860
+ }
1861
+ return item;
1862
+ });
1863
+ }
1864
+ return comp;
1865
+ });
1866
+ uiData = parsed;
1867
+ }
1868
+ cleaned = cleaned.replace(match[0], "").trim();
1869
+ break;
1870
+ } catch (e) {
1871
+ console.error("Invalid ui-component JSON:", e, block);
1872
+ }
1873
+ }
1874
+ return {
1875
+ cleanedText: cleaned,
1876
+ uiData
1877
+ };
1878
+ };
1879
+ var AizekChatBot = ({ clientId, headers, onMounted, onReady, onOpen, onClose, onMessage, onToolCall, onDisconnect }) => {
1880
+ const messagesEndRef = react.useRef(null);
1881
+ const [config, setConfig] = react.useState();
1882
+ const [messages, setMessages] = react.useState([]);
1883
+ const [isLoading, setIsLoading] = react.useState(false);
1884
+ const [isConfigLoading, setIsConfigLoading] = react.useState(true);
1885
+ const [isOpen, setIsOpen] = react.useState(false);
1886
+ const [headerValidation, setHeaderValidation] = react.useState(null);
1887
+ const [showAlert, setShowAlert] = react.useState(true);
1888
+ const loadConfig = async () => {
1889
+ try {
1890
+ setIsConfigLoading(true);
1891
+ const response = await fetch("https://proxy.aizek.ai/api/aizek-connect", {
1892
+ method: "POST",
1893
+ headers: {
1894
+ "Content-Type": "application/json",
1895
+ ...headers
1896
+ },
1897
+ body: JSON.stringify({ clientId }),
1898
+ credentials: "include"
1899
+ });
1900
+ const data = await response.json();
1901
+ if (data.success) {
1902
+ setIsOpen(data.data.chat_widget_settings.initial_open);
1903
+ setConfig(data.data);
1904
+ console.log(data.data);
1905
+ if (headers) {
1906
+ const validationResult = validateHeaders(
1907
+ headers,
1908
+ data.data.auth_config,
1909
+ {
1910
+ allowExtra: false,
1911
+ caseSensitive: true
1912
+ }
1913
+ );
1914
+ setHeaderValidation(validationResult);
1915
+ }
1916
+ onReady?.({ config: { ...data.data } });
1917
+ } else {
1918
+ setIsOpen(false);
1919
+ }
1920
+ } catch (error) {
1921
+ console.error("Failed to load chat widget config:", error);
1922
+ } finally {
1923
+ setIsConfigLoading(false);
1924
+ }
1925
+ };
1926
+ const disconnect = async () => {
1927
+ try {
1928
+ setIsConfigLoading(true);
1929
+ await fetch("http://localhost:3001/api/aizek-disconnect", {
1930
+ method: "POST",
1931
+ headers: {
1932
+ "Content-Type": "application/json",
1933
+ ...headers
1934
+ },
1935
+ credentials: "include"
1936
+ });
1937
+ onDisconnect?.();
1938
+ } catch (error) {
1939
+ console.error("Failed to load chat widget config:", error);
1940
+ } finally {
1941
+ setIsConfigLoading(false);
1942
+ }
1943
+ };
1944
+ react.useEffect(() => {
1945
+ onMounted?.();
1946
+ loadConfig();
1947
+ return () => {
1948
+ disconnect();
1949
+ };
1950
+ }, []);
1951
+ react.useEffect(() => {
1952
+ const newIsOpen = !isOpen;
1953
+ setIsOpen(newIsOpen);
1954
+ if (newIsOpen) onOpen?.();
1955
+ else onClose?.();
1956
+ }, [config?.chat_widget_settings.initial_open]);
1957
+ react.useEffect(() => {
1958
+ messagesEndRef.current?.scrollIntoView({ behavior: "smooth" });
1959
+ }, [messages]);
1960
+ const addMessage = (payload) => {
1961
+ const newMessage = {
1962
+ text: payload.text,
1963
+ ui: payload.ui,
1964
+ role: payload.role,
1965
+ timestamp: /* @__PURE__ */ new Date()
1966
+ };
1967
+ onMessage?.(newMessage);
1968
+ setMessages((prev) => [...prev, newMessage]);
1969
+ messagesEndRef.current?.scrollIntoView({ behavior: "smooth" });
1970
+ return newMessage;
1971
+ };
1972
+ const sendMessage = async (message, approval) => {
1973
+ if (!message.trim() || isLoading) return;
1974
+ const newMessage = {
1975
+ text: message,
1976
+ ui: void 0,
1977
+ role: approval ? "approval" : "user",
1978
+ timestamp: /* @__PURE__ */ new Date()
1979
+ };
1980
+ setMessages((prev) => [...prev, newMessage]);
1981
+ setIsLoading(true);
1982
+ try {
1983
+ const response = await fetch("https://proxy.aizek.ai/api/aizek-chat", {
1984
+ method: "POST",
1985
+ headers: {
1986
+ "Content-Type": "application/json"
1987
+ },
1988
+ body: JSON.stringify({ message }),
1989
+ credentials: "include"
1990
+ });
1991
+ if (!response.ok) {
1992
+ throw new Error(`HTTP error ${response.status}`);
1993
+ }
1994
+ if (!response.body) {
1995
+ throw new Error("Streaming desteklenmiyor (response.body yok)");
1996
+ }
1997
+ const reader = response.body.getReader();
1998
+ const decoder = new TextDecoder();
1999
+ let buffer = "";
2000
+ while (true) {
2001
+ const { value, done } = await reader.read();
2002
+ if (done) break;
2003
+ buffer += decoder.decode(value, { stream: true });
2004
+ const chunks = buffer.split("\n\n");
2005
+ buffer = chunks.pop() ?? "";
2006
+ for (const rawChunk of chunks) {
2007
+ const line = rawChunk.split("\n").find((l) => l.startsWith("data:"));
2008
+ if (!line) continue;
2009
+ const jsonStr = line.replace(/^data:\s*/, "").trim();
2010
+ if (!jsonStr) continue;
2011
+ const event = JSON.parse(jsonStr);
2012
+ if (event.type === "assistant_text" && event.content) {
2013
+ const { cleanedText, uiData } = extractUIJsonFromText(event.content);
2014
+ addMessage({
2015
+ text: cleanedText,
2016
+ ui: uiData,
2017
+ role: "assistant"
2018
+ });
2019
+ }
2020
+ if (event.type === "assistant_tool_result" && event.content) {
2021
+ const toolInfoParsed = JSON.parse(event.content);
2022
+ onToolCall?.(toolInfoParsed);
2023
+ }
2024
+ if (event.type === "error" && event.content) {
2025
+ const { cleanedText, uiData } = extractUIJsonFromText(event.content);
2026
+ addMessage({
2027
+ text: cleanedText,
2028
+ ui: uiData,
2029
+ role: "assistant"
2030
+ });
2031
+ }
2032
+ }
2033
+ }
2034
+ } catch (error) {
2035
+ console.error("Error sending message:", error);
2036
+ addMessage({ text: "\xDCzg\xFCn\xFCm, bir hata olu\u015Ftu. L\xFCtfen tekrar deneyin.", role: "assistant" });
2037
+ } finally {
2038
+ setIsLoading(false);
2039
+ }
2040
+ };
2041
+ const toggleChat = () => {
2042
+ const newIsOpen = !isOpen;
2043
+ setIsOpen(newIsOpen);
2044
+ if (newIsOpen) onOpen?.();
2045
+ else onClose?.();
2046
+ };
2047
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: isConfigLoading ? /* @__PURE__ */ jsxRuntime.jsx(
2048
+ "button",
2049
+ {
2050
+ className: "floating-button bottom-right button-sizes medium loading-state",
2051
+ style: { background: "#4f46e5" },
2052
+ "aria-label": "Y\xFCkleniyor",
2053
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "loading-spinner" })
2054
+ }
2055
+ ) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2056
+ isOpen && /* @__PURE__ */ jsxRuntime.jsx("div", { className: `overlay floating-chat-overlay ${isOpen ? "is-open" : ""}`, onClick: toggleChat }),
2057
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: `chat-container ${config?.chat_widget_settings.button_position} ${isOpen ? "is-open" : ""}`, style: { width: config?.chat_widget_settings.chat_width, height: config?.chat_widget_settings.chat_height }, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "chatbot-container", children: [
2058
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "header", style: { background: config?.chat_widget_settings.header_background }, children: [
2059
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "logo-container", children: config?.chat_widget_settings.company_logo ? config?.chat_widget_settings.company_logo.startsWith("http") || config?.chat_widget_settings.company_logo.startsWith("data:") ? /* @__PURE__ */ jsxRuntime.jsx(
2060
+ "img",
2061
+ {
2062
+ src: config?.chat_widget_settings.company_logo,
2063
+ alt: "Company Logo",
2064
+ className: "logo-image"
2065
+ }
2066
+ ) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "logo-text", children: config?.chat_widget_settings.company_logo }) : "\u{1F916}" }),
2067
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
2068
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "company-name", children: config?.chat_widget_settings.company_name }),
2069
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "status-text", children: isLoading ? "Yaz\u0131yor..." : "\xC7evrimi\xE7i" })
2070
+ ] })
2071
+ ] }),
2072
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "messages-container", children: [
2073
+ /* @__PURE__ */ jsxRuntime.jsx(
2074
+ HeaderAlert,
2075
+ {
2076
+ headerValidation,
2077
+ setShowAlert,
2078
+ showAlert
2079
+ }
2080
+ ),
2081
+ messages.length === 0 ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "empty-state", children: [
2082
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "empty-state-icon", children: "\u{1F4AC}" }),
2083
+ /* @__PURE__ */ jsxRuntime.jsx("h4", { className: "empty-state-title", children: config?.chat_widget_settings.welcome_message }),
2084
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "empty-state-description", children: "A\u015Fa\u011F\u0131daki alana mesaj\u0131n\u0131z\u0131 yazarak ba\u015Flayabilirsiniz." })
2085
+ ] }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2086
+ messages.map((message, index) => /* @__PURE__ */ jsxRuntime.jsx(
2087
+ MessageBubble,
2088
+ {
2089
+ message,
2090
+ onAction: sendMessage
2091
+ },
2092
+ index
2093
+ )),
2094
+ config?.chat_widget_settings.show_typing_indicator && isLoading && /* @__PURE__ */ jsxRuntime.jsx(TypingDots, {})
2095
+ ] })
2096
+ ] }),
2097
+ /* @__PURE__ */ jsxRuntime.jsx(
2098
+ ChatInput,
2099
+ {
2100
+ handleSendMessage: sendMessage,
2101
+ isLoading,
2102
+ placeholder: config?.chat_widget_settings.placeholder ?? ""
2103
+ }
2104
+ )
2105
+ ] }) }),
2106
+ /* @__PURE__ */ jsxRuntime.jsx(
2107
+ "button",
2108
+ {
2109
+ onClick: toggleChat,
2110
+ className: `floating-button ${config?.chat_widget_settings.button_position} button-sizes ${config?.chat_widget_settings.button_size} ${isOpen ? "is-open" : ""}`,
2111
+ style: { background: config?.chat_widget_settings.button_background },
2112
+ "aria-label": isOpen ? "Chati kapat" : "Chati a\xE7",
2113
+ children: isOpen ? /* @__PURE__ */ jsxRuntime.jsx("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z" }) }) : /* @__PURE__ */ jsxRuntime.jsx("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M20 2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h4l4 4 4-4h4c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-2 12H6v-2h12v2zm0-3H6V9h12v2zm0-3H6V6h12v2z" }) })
2114
+ }
2115
+ )
2116
+ ] }) });
2117
+ };
2118
+
2119
+ exports.AizekChatBot = AizekChatBot;
2120
+ //# sourceMappingURL=index.cjs.map
2121
+ //# sourceMappingURL=index.cjs.map