aizek-chatbot 1.0.20 → 1.0.21

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