@vendure/admin-ui 1.7.2 → 1.7.3

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.
Files changed (28) hide show
  1. package/bundles/vendure-admin-ui-catalog.umd.js.map +1 -1
  2. package/bundles/vendure-admin-ui-core.umd.js +2 -2
  3. package/bundles/vendure-admin-ui-core.umd.js.map +1 -1
  4. package/bundles/vendure-admin-ui-customer.umd.js.map +1 -1
  5. package/bundles/vendure-admin-ui-settings.umd.js +2 -0
  6. package/bundles/vendure-admin-ui-settings.umd.js.map +1 -1
  7. package/core/common/version.d.ts +1 -1
  8. package/core/vendure-admin-ui-core.metadata.json +1 -1
  9. package/esm2015/catalog/components/generate-product-variants/generate-product-variants.component.js +1 -1
  10. package/esm2015/core/common/generated-types.js +1 -1
  11. package/esm2015/core/common/introspection-result.js +1 -1
  12. package/esm2015/core/common/utilities/configurable-operation-utils.js +2 -2
  13. package/esm2015/core/common/version.js +2 -2
  14. package/esm2015/core/data/definitions/order-definitions.js +443 -443
  15. package/esm2015/core/data/definitions/product-definitions.js +743 -743
  16. package/esm2015/core/shared/components/custom-field-control/custom-field-control.component.js +1 -1
  17. package/esm2015/core/shared/dynamic-form-inputs/select-form-input/select-form-input.component.js +1 -1
  18. package/esm2015/core/shared/pipes/custom-field-label.pipe.js +1 -1
  19. package/esm2015/core/shared/pipes/locale-currency.pipe.js +1 -1
  20. package/esm2015/customer/components/customer-group-list/customer-group-list.component.js +1 -1
  21. package/esm2015/settings/components/shipping-method-detail/shipping-method-detail.component.js +3 -1
  22. package/fesm2015/vendure-admin-ui-catalog.js.map +1 -1
  23. package/fesm2015/vendure-admin-ui-core.js +1211 -1211
  24. package/fesm2015/vendure-admin-ui-core.js.map +1 -1
  25. package/fesm2015/vendure-admin-ui-customer.js.map +1 -1
  26. package/fesm2015/vendure-admin-ui-settings.js +2 -0
  27. package/fesm2015/vendure-admin-ui-settings.js.map +1 -1
  28. package/package.json +2 -2
@@ -1,745 +1,745 @@
1
1
  import { gql } from 'apollo-angular';
2
2
  import { ERROR_RESULT_FRAGMENT } from './shared-definitions';
3
- export const ASSET_FRAGMENT = gql `
4
- fragment Asset on Asset {
5
- id
6
- createdAt
7
- updatedAt
8
- name
9
- fileSize
10
- mimeType
11
- type
12
- preview
13
- source
14
- width
15
- height
16
- focalPoint {
17
- x
18
- y
19
- }
20
- }
21
- `;
22
- export const TAG_FRAGMENT = gql `
23
- fragment Tag on Tag {
24
- id
25
- value
26
- }
27
- `;
28
- export const PRODUCT_OPTION_GROUP_FRAGMENT = gql `
29
- fragment ProductOptionGroup on ProductOptionGroup {
30
- id
31
- createdAt
32
- updatedAt
33
- code
34
- languageCode
35
- name
36
- translations {
37
- id
38
- languageCode
39
- name
40
- }
41
- }
42
- `;
43
- export const PRODUCT_OPTION_FRAGMENT = gql `
44
- fragment ProductOption on ProductOption {
45
- id
46
- createdAt
47
- updatedAt
48
- code
49
- languageCode
50
- name
51
- groupId
52
- translations {
53
- id
54
- languageCode
55
- name
56
- }
57
- }
58
- `;
59
- export const PRODUCT_VARIANT_FRAGMENT = gql `
60
- fragment ProductVariant on ProductVariant {
61
- id
62
- createdAt
63
- updatedAt
64
- enabled
65
- languageCode
66
- name
67
- price
68
- currencyCode
69
- priceWithTax
70
- stockOnHand
71
- stockAllocated
72
- trackInventory
73
- outOfStockThreshold
74
- useGlobalOutOfStockThreshold
75
- taxRateApplied {
76
- id
77
- name
78
- value
79
- }
80
- taxCategory {
81
- id
82
- name
83
- }
84
- sku
85
- options {
86
- ...ProductOption
87
- }
88
- facetValues {
89
- id
90
- code
91
- name
92
- facet {
93
- id
94
- name
95
- }
96
- }
97
- featuredAsset {
98
- ...Asset
99
- }
100
- assets {
101
- ...Asset
102
- }
103
- translations {
104
- id
105
- languageCode
106
- name
107
- }
108
- channels {
109
- id
110
- code
111
- }
112
- }
113
- ${PRODUCT_OPTION_FRAGMENT}
114
- ${ASSET_FRAGMENT}
115
- `;
116
- export const PRODUCT_DETAIL_FRAGMENT = gql `
117
- fragment ProductDetail on Product {
118
- id
119
- createdAt
120
- updatedAt
121
- enabled
122
- languageCode
123
- name
124
- slug
125
- description
126
- featuredAsset {
127
- ...Asset
128
- }
129
- assets {
130
- ...Asset
131
- }
132
- translations {
133
- id
134
- languageCode
135
- name
136
- slug
137
- description
138
- }
139
- optionGroups {
140
- ...ProductOptionGroup
141
- }
142
- facetValues {
143
- id
144
- code
145
- name
146
- facet {
147
- id
148
- name
149
- }
150
- }
151
- channels {
152
- id
153
- code
154
- }
155
- }
156
- ${PRODUCT_OPTION_GROUP_FRAGMENT}
157
- ${ASSET_FRAGMENT}
158
- `;
159
- export const PRODUCT_OPTION_GROUP_WITH_OPTIONS_FRAGMENT = gql `
160
- fragment ProductOptionGroupWithOptions on ProductOptionGroup {
161
- id
162
- createdAt
163
- updatedAt
164
- languageCode
165
- code
166
- name
167
- translations {
168
- id
169
- name
170
- }
171
- options {
172
- id
173
- languageCode
174
- name
175
- code
176
- translations {
177
- name
178
- }
179
- }
180
- }
181
- `;
182
- export const UPDATE_PRODUCT = gql `
183
- mutation UpdateProduct($input: UpdateProductInput!, $variantListOptions: ProductVariantListOptions) {
184
- updateProduct(input: $input) {
185
- ...ProductDetail
186
- variantList(options: $variantListOptions) {
187
- items {
188
- ...ProductVariant
189
- }
190
- totalItems
191
- }
192
- }
193
- }
194
- ${PRODUCT_DETAIL_FRAGMENT}
195
- ${PRODUCT_VARIANT_FRAGMENT}
196
- `;
197
- export const CREATE_PRODUCT = gql `
198
- mutation CreateProduct($input: CreateProductInput!, $variantListOptions: ProductVariantListOptions) {
199
- createProduct(input: $input) {
200
- ...ProductDetail
201
- variantList(options: $variantListOptions) {
202
- items {
203
- ...ProductVariant
204
- }
205
- totalItems
206
- }
207
- }
208
- }
209
- ${PRODUCT_DETAIL_FRAGMENT}
210
- ${PRODUCT_VARIANT_FRAGMENT}
211
- `;
212
- export const DELETE_PRODUCT = gql `
213
- mutation DeleteProduct($id: ID!) {
214
- deleteProduct(id: $id) {
215
- result
216
- message
217
- }
218
- }
219
- `;
220
- export const CREATE_PRODUCT_VARIANTS = gql `
221
- mutation CreateProductVariants($input: [CreateProductVariantInput!]!) {
222
- createProductVariants(input: $input) {
223
- ...ProductVariant
224
- }
225
- }
226
- ${PRODUCT_VARIANT_FRAGMENT}
227
- `;
228
- export const UPDATE_PRODUCT_VARIANTS = gql `
229
- mutation UpdateProductVariants($input: [UpdateProductVariantInput!]!) {
230
- updateProductVariants(input: $input) {
231
- ...ProductVariant
232
- }
233
- }
234
- ${PRODUCT_VARIANT_FRAGMENT}
235
- `;
236
- export const CREATE_PRODUCT_OPTION_GROUP = gql `
237
- mutation CreateProductOptionGroup($input: CreateProductOptionGroupInput!) {
238
- createProductOptionGroup(input: $input) {
239
- ...ProductOptionGroupWithOptions
240
- }
241
- }
242
- ${PRODUCT_OPTION_GROUP_WITH_OPTIONS_FRAGMENT}
243
- `;
244
- export const GET_PRODUCT_OPTION_GROUP = gql `
245
- query GetProductOptionGroup($id: ID!) {
246
- productOptionGroup(id: $id) {
247
- ...ProductOptionGroupWithOptions
248
- }
249
- }
250
- ${PRODUCT_OPTION_GROUP_WITH_OPTIONS_FRAGMENT}
251
- `;
252
- export const ADD_OPTION_TO_GROUP = gql `
253
- mutation AddOptionToGroup($input: CreateProductOptionInput!) {
254
- createProductOption(input: $input) {
255
- id
256
- createdAt
257
- updatedAt
258
- name
259
- code
260
- groupId
261
- }
262
- }
263
- `;
264
- export const ADD_OPTION_GROUP_TO_PRODUCT = gql `
265
- mutation AddOptionGroupToProduct($productId: ID!, $optionGroupId: ID!) {
266
- addOptionGroupToProduct(productId: $productId, optionGroupId: $optionGroupId) {
267
- id
268
- createdAt
269
- updatedAt
270
- optionGroups {
271
- id
272
- createdAt
273
- updatedAt
274
- code
275
- options {
276
- id
277
- createdAt
278
- updatedAt
279
- code
280
- }
281
- }
282
- }
283
- }
284
- `;
285
- export const REMOVE_OPTION_GROUP_FROM_PRODUCT = gql `
286
- mutation RemoveOptionGroupFromProduct($productId: ID!, $optionGroupId: ID!) {
287
- removeOptionGroupFromProduct(productId: $productId, optionGroupId: $optionGroupId) {
288
- ... on Product {
289
- id
290
- createdAt
291
- updatedAt
292
- optionGroups {
293
- id
294
- createdAt
295
- updatedAt
296
- code
297
- options {
298
- id
299
- createdAt
300
- updatedAt
301
- code
302
- }
303
- }
304
- }
305
- ...ErrorResult
306
- }
307
- }
308
- ${ERROR_RESULT_FRAGMENT}
309
- `;
310
- export const GET_PRODUCT_WITH_VARIANTS = gql `
311
- query GetProductWithVariants($id: ID!, $variantListOptions: ProductVariantListOptions) {
312
- product(id: $id) {
313
- ...ProductDetail
314
- variantList(options: $variantListOptions) {
315
- items {
316
- ...ProductVariant
317
- }
318
- totalItems
319
- }
320
- }
321
- }
322
- ${PRODUCT_DETAIL_FRAGMENT}
323
- ${PRODUCT_VARIANT_FRAGMENT}
324
- `;
325
- export const GET_PRODUCT_SIMPLE = gql `
326
- query GetProductSimple($id: ID!) {
327
- product(id: $id) {
328
- id
329
- name
330
- featuredAsset {
331
- ...Asset
332
- }
333
- }
334
- }
335
- ${ASSET_FRAGMENT}
336
- `;
337
- export const GET_PRODUCT_LIST = gql `
338
- query GetProductList($options: ProductListOptions) {
339
- products(options: $options) {
340
- items {
341
- id
342
- createdAt
343
- updatedAt
344
- enabled
345
- languageCode
346
- name
347
- slug
348
- featuredAsset {
349
- id
350
- createdAt
351
- updatedAt
352
- preview
353
- }
354
- }
355
- totalItems
356
- }
357
- }
358
- `;
359
- export const GET_PRODUCT_OPTION_GROUPS = gql `
360
- query GetProductOptionGroups($filterTerm: String) {
361
- productOptionGroups(filterTerm: $filterTerm) {
362
- id
363
- createdAt
364
- updatedAt
365
- languageCode
366
- code
367
- name
368
- options {
369
- id
370
- createdAt
371
- updatedAt
372
- languageCode
373
- code
374
- name
375
- }
376
- }
377
- }
378
- `;
379
- export const GET_ASSET_LIST = gql `
380
- query GetAssetList($options: AssetListOptions) {
381
- assets(options: $options) {
382
- items {
383
- ...Asset
384
- tags {
385
- ...Tag
386
- }
387
- }
388
- totalItems
389
- }
390
- }
391
- ${ASSET_FRAGMENT}
392
- ${TAG_FRAGMENT}
393
- `;
394
- export const GET_ASSET = gql `
395
- query GetAsset($id: ID!) {
396
- asset(id: $id) {
397
- ...Asset
398
- tags {
399
- ...Tag
400
- }
401
- }
402
- }
403
- ${ASSET_FRAGMENT}
404
- ${TAG_FRAGMENT}
405
- `;
406
- export const CREATE_ASSETS = gql `
407
- mutation CreateAssets($input: [CreateAssetInput!]!) {
408
- createAssets(input: $input) {
409
- ...Asset
410
- ... on Asset {
411
- tags {
412
- ...Tag
413
- }
414
- }
415
- ... on ErrorResult {
416
- message
417
- }
418
- }
419
- }
420
- ${ASSET_FRAGMENT}
421
- ${TAG_FRAGMENT}
422
- `;
423
- export const UPDATE_ASSET = gql `
424
- mutation UpdateAsset($input: UpdateAssetInput!) {
425
- updateAsset(input: $input) {
426
- ...Asset
427
- tags {
428
- ...Tag
429
- }
430
- }
431
- }
432
- ${ASSET_FRAGMENT}
433
- ${TAG_FRAGMENT}
434
- `;
435
- export const DELETE_ASSETS = gql `
436
- mutation DeleteAssets($input: DeleteAssetsInput!) {
437
- deleteAssets(input: $input) {
438
- result
439
- message
440
- }
441
- }
442
- `;
443
- export const SEARCH_PRODUCTS = gql `
444
- query SearchProducts($input: SearchInput!) {
445
- search(input: $input) {
446
- totalItems
447
- items {
448
- enabled
449
- productId
450
- productName
451
- productAsset {
452
- id
453
- preview
454
- focalPoint {
455
- x
456
- y
457
- }
458
- }
459
- productVariantId
460
- productVariantName
461
- productVariantAsset {
462
- id
463
- preview
464
- focalPoint {
465
- x
466
- y
467
- }
468
- }
469
- sku
470
- channelIds
471
- }
472
- facetValues {
473
- count
474
- facetValue {
475
- id
476
- createdAt
477
- updatedAt
478
- name
479
- facet {
480
- id
481
- createdAt
482
- updatedAt
483
- name
484
- }
485
- }
486
- }
487
- }
488
- }
489
- `;
490
- export const PRODUCT_SELECTOR_SEARCH = gql `
491
- query ProductSelectorSearch($term: String!, $take: Int!) {
492
- search(input: { groupByProduct: false, term: $term, take: $take }) {
493
- items {
494
- productVariantId
495
- productVariantName
496
- productAsset {
497
- id
498
- preview
499
- focalPoint {
500
- x
501
- y
502
- }
503
- }
504
- price {
505
- ... on SinglePrice {
506
- value
507
- }
508
- }
509
- priceWithTax {
510
- ... on SinglePrice {
511
- value
512
- }
513
- }
514
- sku
515
- }
516
- }
517
- }
518
- `;
519
- export const UPDATE_PRODUCT_OPTION_GROUP = gql `
520
- mutation UpdateProductOptionGroup($input: UpdateProductOptionGroupInput!) {
521
- updateProductOptionGroup(input: $input) {
522
- ...ProductOptionGroup
523
- }
524
- }
525
- ${PRODUCT_OPTION_GROUP_FRAGMENT}
526
- `;
527
- export const UPDATE_PRODUCT_OPTION = gql `
528
- mutation UpdateProductOption($input: UpdateProductOptionInput!) {
529
- updateProductOption(input: $input) {
530
- ...ProductOption
531
- }
532
- }
533
- ${PRODUCT_OPTION_FRAGMENT}
534
- `;
535
- export const DELETE_PRODUCT_OPTION = gql `
536
- mutation DeleteProductOption($id: ID!) {
537
- deleteProductOption(id: $id) {
538
- result
539
- message
540
- }
541
- }
542
- `;
543
- export const DELETE_PRODUCT_VARIANT = gql `
544
- mutation DeleteProductVariant($id: ID!) {
545
- deleteProductVariant(id: $id) {
546
- result
547
- message
548
- }
549
- }
550
- `;
551
- export const GET_PRODUCT_VARIANT_OPTIONS = gql `
552
- query GetProductVariantOptions($id: ID!) {
553
- product(id: $id) {
554
- id
555
- createdAt
556
- updatedAt
557
- name
558
- optionGroups {
559
- ...ProductOptionGroup
560
- options {
561
- ...ProductOption
562
- }
563
- }
564
- variants {
565
- id
566
- createdAt
567
- updatedAt
568
- enabled
569
- name
570
- sku
571
- price
572
- stockOnHand
573
- enabled
574
- options {
575
- id
576
- createdAt
577
- updatedAt
578
- name
579
- code
580
- groupId
581
- }
582
- }
583
- }
584
- }
585
- ${PRODUCT_OPTION_GROUP_FRAGMENT}
586
- ${PRODUCT_OPTION_FRAGMENT}
587
- `;
588
- export const ASSIGN_PRODUCTS_TO_CHANNEL = gql `
589
- mutation AssignProductsToChannel($input: AssignProductsToChannelInput!) {
590
- assignProductsToChannel(input: $input) {
591
- id
592
- channels {
593
- id
594
- code
595
- }
596
- }
597
- }
598
- `;
599
- export const ASSIGN_VARIANTS_TO_CHANNEL = gql `
600
- mutation AssignVariantsToChannel($input: AssignProductVariantsToChannelInput!) {
601
- assignProductVariantsToChannel(input: $input) {
602
- id
603
- channels {
604
- id
605
- code
606
- }
607
- }
608
- }
609
- `;
610
- export const REMOVE_PRODUCTS_FROM_CHANNEL = gql `
611
- mutation RemoveProductsFromChannel($input: RemoveProductsFromChannelInput!) {
612
- removeProductsFromChannel(input: $input) {
613
- id
614
- channels {
615
- id
616
- code
617
- }
618
- }
619
- }
620
- `;
621
- export const REMOVE_VARIANTS_FROM_CHANNEL = gql `
622
- mutation RemoveVariantsFromChannel($input: RemoveProductVariantsFromChannelInput!) {
623
- removeProductVariantsFromChannel(input: $input) {
624
- id
625
- channels {
626
- id
627
- code
628
- }
629
- }
630
- }
631
- `;
632
- export const GET_PRODUCT_VARIANT = gql `
633
- query GetProductVariant($id: ID!) {
634
- productVariant(id: $id) {
635
- id
636
- name
637
- sku
638
- featuredAsset {
639
- id
640
- preview
641
- focalPoint {
642
- x
643
- y
644
- }
645
- }
646
- product {
647
- id
648
- featuredAsset {
649
- id
650
- preview
651
- focalPoint {
652
- x
653
- y
654
- }
655
- }
656
- }
657
- }
658
- }
659
- `;
660
- export const GET_PRODUCT_VARIANT_LIST_SIMPLE = gql `
661
- query GetProductVariantListSimple($options: ProductVariantListOptions!, $productId: ID) {
662
- productVariants(options: $options, productId: $productId) {
663
- items {
664
- id
665
- name
666
- sku
667
- featuredAsset {
668
- id
669
- preview
670
- focalPoint {
671
- x
672
- y
673
- }
674
- }
675
- product {
676
- id
677
- featuredAsset {
678
- id
679
- preview
680
- focalPoint {
681
- x
682
- y
683
- }
684
- }
685
- }
686
- }
687
- totalItems
688
- }
689
- }
690
- `;
691
- export const GET_PRODUCT_VARIANT_LIST = gql `
692
- query GetProductVariantList($options: ProductVariantListOptions!, $productId: ID) {
693
- productVariants(options: $options, productId: $productId) {
694
- items {
695
- ...ProductVariant
696
- }
697
- totalItems
698
- }
699
- }
700
- ${PRODUCT_VARIANT_FRAGMENT}
701
- `;
702
- export const GET_TAG_LIST = gql `
703
- query GetTagList($options: TagListOptions) {
704
- tags(options: $options) {
705
- items {
706
- ...Tag
707
- }
708
- totalItems
709
- }
710
- }
711
- ${TAG_FRAGMENT}
712
- `;
713
- export const GET_TAG = gql `
714
- query GetTag($id: ID!) {
715
- tag(id: $id) {
716
- ...Tag
717
- }
718
- }
719
- ${TAG_FRAGMENT}
720
- `;
721
- export const CREATE_TAG = gql `
722
- mutation CreateTag($input: CreateTagInput!) {
723
- createTag(input: $input) {
724
- ...Tag
725
- }
726
- }
727
- ${TAG_FRAGMENT}
728
- `;
729
- export const UPDATE_TAG = gql `
730
- mutation UpdateTag($input: UpdateTagInput!) {
731
- updateTag(input: $input) {
732
- ...Tag
733
- }
734
- }
735
- ${TAG_FRAGMENT}
736
- `;
737
- export const DELETE_TAG = gql `
738
- mutation DeleteTag($id: ID!) {
739
- deleteTag(id: $id) {
740
- message
741
- result
742
- }
743
- }
744
- `;
745
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1kZWZpbml0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29yZS9zcmMvZGF0YS9kZWZpbml0aW9ucy9wcm9kdWN0LWRlZmluaXRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUU3RCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsR0FBRyxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FrQmhDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsR0FBRyxDQUFBOzs7OztDQUs5QixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQUcsR0FBRyxDQUFBOzs7Ozs7Ozs7Ozs7OztDQWMvQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsR0FBRyxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Q0FlekMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLEdBQUcsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O01Bc0RyQyx1QkFBdUI7TUFDdkIsY0FBYztDQUNuQixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsR0FBRyxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O01Bd0NwQyw2QkFBNkI7TUFDN0IsY0FBYztDQUNuQixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sMENBQTBDLEdBQUcsR0FBRyxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBc0I1RCxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLEdBQUcsQ0FBQTs7Ozs7Ozs7Ozs7O01BWTNCLHVCQUF1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LFVBQVUsR0FBRyxHQUFHLENBQUE7Ozs7Ozs7Q0FPNUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdxbCB9IGZyb20gJ2Fwb2xsby1hbmd1bGFyJztcblxuaW1wb3J0IHsgRVJST1JfUkVTVUxUX0ZSQUdNRU5UIH0gZnJvbSAnLi9zaGFyZWQtZGVmaW5pdGlvbnMnO1xuXG5leHBvcnQgY29uc3QgQVNTRVRfRlJBR01FTlQgPSBncWxgXG4gICAgZnJhZ21lbnQgQXNzZXQgb24gQXNzZXQge1xuICAgICAgICBpZFxuICAgICAgICBjcmVhdGVkQXRcbiAgICAgICAgdXBkYXRlZEF0XG4gICAgICAgIG5hbWVcbiAgICAgICAgZmlsZVNpemVcbiAgICAgICAgbWltZVR5cGVcbiAgICAgICAgdHlwZVxuICAgICAgICBwcmV2aWV3XG4gICAgICAgIHNvdXJjZVxuICAgICAgICB3aWR0aFxuICAgICAgICBoZWlnaHRcbiAgICAgICAgZm9jYWxQb2ludCB7XG4gICAgICAgICAgICB4XG4gICAgICAgICAgICB5XG4gICAgICAgIH1cbiAgICB9XG5gO1xuXG5leHBvcnQgY29uc3QgVEFHX0ZSQUdNRU5UID0gZ3FsYFxuICAgIGZyYWdtZW50IFRhZyBvbiBUYWcge1xuICAgICAgICBpZFxuICAgICAgICB2YWx1ZVxuICAgIH1cbmA7XG5cbmV4cG9ydCBjb25zdCBQUk9EVUNUX09QVElPTl9HUk9VUF9GUkFHTUVOVCA9IGdxbGBcbiAgICBmcmFnbWVudCBQcm9kdWN0T3B0aW9uR3JvdXAgb24gUHJvZHVjdE9wdGlvbkdyb3VwIHtcbiAgICAgICAgaWRcbiAgICAgICAgY3JlYXRlZEF0XG4gICAgICAgIHVwZGF0ZWRBdFxuICAgICAgICBjb2RlXG4gICAgICAgIGxhbmd1YWdlQ29kZVxuICAgICAgICBuYW1lXG4gICAgICAgIHRyYW5zbGF0aW9ucyB7XG4gICAgICAgICAgICBpZFxuICAgICAgICAgICAgbGFuZ3VhZ2VDb2RlXG4gICAgICAgICAgICBuYW1lXG4gICAgICAgIH1cbiAgICB9XG5gO1xuXG5leHBvcnQgY29uc3QgUFJPRFVDVF9PUFRJT05fRlJBR01FTlQgPSBncWxgXG4gICAgZnJhZ21lbnQgUHJvZHVjdE9wdGlvbiBvbiBQcm9kdWN0T3B0aW9uIHtcbiAgICAgICAgaWRcbiAgICAgICAgY3JlYXRlZEF0XG4gICAgICAgIHVwZGF0ZWRBdFxuICAgICAgICBjb2RlXG4gICAgICAgIGxhbmd1YWdlQ29kZVxuICAgICAgICBuYW1lXG4gICAgICAgIGdyb3VwSWRcbiAgICAgICAgdHJhbnNsYXRpb25zIHtcbiAgICAgICAgICAgIGlkXG4gICAgICAgICAgICBsYW5ndWFnZUNvZGVcbiAgICAgICAgICAgIG5hbWVcbiAgICAgICAgfVxuICAgIH1cbmA7XG5cbmV4cG9ydCBjb25zdCBQUk9EVUNUX1ZBUklBTlRfRlJBR01FTlQgPSBncWxgXG4gICAgZnJhZ21lbnQgUHJvZHVjdFZhcmlhbnQgb24gUHJvZHVjdFZhcmlhbnQge1xuICAgICAgICBpZFxuICAgICAgICBjcmVhdGVkQXRcbiAgICAgICAgdXBkYXRlZEF0XG4gICAgICAgIGVuYWJsZWRcbiAgICAgICAgbGFuZ3VhZ2VDb2RlXG4gICAgICAgIG5hbWVcbiAgICAgICAgcHJpY2VcbiAgICAgICAgY3VycmVuY3lDb2RlXG4gICAgICAgIHByaWNlV2l0aFRheFxuICAgICAgICBzdG9ja09uSGFuZFxuICAgICAgICBzdG9ja0FsbG9jYXRlZFxuICAgICAgICB0cmFja0ludmVudG9yeVxuICAgICAgICBvdXRPZlN0b2NrVGhyZXNob2xkXG4gICAgICAgIHVzZUdsb2JhbE91dE9mU3RvY2tUaHJlc2hvbGRcbiAgICAgICAgdGF4UmF0ZUFwcGxpZWQge1xuICAgICAgICAgICAgaWRcbiAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICAgIHZhbHVlXG4gICAgICAgIH1cbiAgICAgICAgdGF4Q2F0ZWdvcnkge1xuICAgICAgICAgICAgaWRcbiAgICAgICAgICAgIG5hbWVcbiAgICAgICAgfVxuICAgICAgICBza3VcbiAgICAgICAgb3B0aW9ucyB7XG4gICAgICAgICAgICAuLi5Qcm9kdWN0T3B0aW9uXG4gICAgICAgIH1cbiAgICAgICAgZmFjZXRWYWx1ZXMge1xuICAgICAgICAgICAgaWRcbiAgICAgICAgICAgIGNvZGVcbiAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICAgIGZhY2V0IHtcbiAgICAgICAgICAgICAgICBpZFxuICAgICAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmZWF0dXJlZEFzc2V0IHtcbiAgICAgICAgICAgIC4uLkFzc2V0XG4gICAgICAgIH1cbiAgICAgICAgYXNzZXRzIHtcbiAgICAgICAgICAgIC4uLkFzc2V0XG4gICAgICAgIH1cbiAgICAgICAgdHJhbnNsYXRpb25zIHtcbiAgICAgICAgICAgIGlkXG4gICAgICAgICAgICBsYW5ndWFnZUNvZGVcbiAgICAgICAgICAgIG5hbWVcbiAgICAgICAgfVxuICAgICAgICBjaGFubmVscyB7XG4gICAgICAgICAgICBpZFxuICAgICAgICAgICAgY29kZVxuICAgICAgICB9XG4gICAgfVxuICAgICR7UFJPRFVDVF9PUFRJT05fRlJBR01FTlR9XG4gICAgJHtBU1NFVF9GUkFHTUVOVH1cbmA7XG5cbmV4cG9ydCBjb25zdCBQUk9EVUNUX0RFVEFJTF9GUkFHTUVOVCA9IGdxbGBcbiAgICBmcmFnbWVudCBQcm9kdWN0RGV0YWlsIG9uIFByb2R1Y3Qge1xuICAgICAgICBpZFxuICAgICAgICBjcmVhdGVkQXRcbiAgICAgICAgdXBkYXRlZEF0XG4gICAgICAgIGVuYWJsZWRcbiAgICAgICAgbGFuZ3VhZ2VDb2RlXG4gICAgICAgIG5hbWVcbiAgICAgICAgc2x1Z1xuICAgICAgICBkZXNjcmlwdGlvblxuICAgICAgICBmZWF0dXJlZEFzc2V0IHtcbiAgICAgICAgICAgIC4uLkFzc2V0XG4gICAgICAgIH1cbiAgICAgICAgYXNzZXRzIHtcbiAgICAgICAgICAgIC4uLkFzc2V0XG4gICAgICAgIH1cbiAgICAgICAgdHJhbnNsYXRpb25zIHtcbiAgICAgICAgICAgIGlkXG4gICAgICAgICAgICBsYW5ndWFnZUNvZGVcbiAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICAgIHNsdWdcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uXG4gICAgICAgIH1cbiAgICAgICAgb3B0aW9uR3JvdXBzIHtcbiAgICAgICAgICAgIC4uLlByb2R1Y3RPcHRpb25Hcm91cFxuICAgICAgICB9XG4gICAgICAgIGZhY2V0VmFsdWVzIHtcbiAgICAgICAgICAgIGlkXG4gICAgICAgICAgICBjb2RlXG4gICAgICAgICAgICBuYW1lXG4gICAgICAgICAgICBmYWNldCB7XG4gICAgICAgICAgICAgICAgaWRcbiAgICAgICAgICAgICAgICBuYW1lXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY2hhbm5lbHMge1xuICAgICAgICAgICAgaWRcbiAgICAgICAgICAgIGNvZGVcbiAgICAgICAgfVxuICAgIH1cbiAgICAke1BST0RVQ1RfT1BUSU9OX0dST1VQX0ZSQUdNRU5UfVxuICAgICR7QVNTRVRfRlJBR01FTlR9XG5gO1xuXG5leHBvcnQgY29uc3QgUFJPRFVDVF9PUFRJT05fR1JPVVBfV0lUSF9PUFRJT05TX0ZSQUdNRU5UID0gZ3FsYFxuICAgIGZyYWdtZW50IFByb2R1Y3RPcHRpb25Hcm91cFdpdGhPcHRpb25zIG9uIFByb2R1Y3RPcHRpb25Hcm91cCB7XG4gICAgICAgIGlkXG4gICAgICAgIGNyZWF0ZWRBdFxuICAgICAgICB1cGRhdGVkQXRcbiAgICAgICAgbGFuZ3VhZ2VDb2RlXG4gICAgICAgIGNvZGVcbiAgICAgICAgbmFtZVxuICAgICAgICB0cmFuc2xhdGlvbnMge1xuICAgICAgICAgICAgaWRcbiAgICAgICAgICAgIG5hbWVcbiAgICAgICAgfVxuICAgICAgICBvcHRpb25zIHtcbiAgICAgICAgICAgIGlkXG4gICAgICAgICAgICBsYW5ndWFnZUNvZGVcbiAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICAgIGNvZGVcbiAgICAgICAgICAgIHRyYW5zbGF0aW9ucyB7XG4gICAgICAgICAgICAgICAgbmFtZVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuYDtcblxuZXhwb3J0IGNvbnN0IFVQREFURV9QUk9EVUNUID0gZ3FsYFxuICAgIG11dGF0aW9uIFVwZGF0ZVByb2R1Y3QoJGlucHV0OiBVcGRhdGVQcm9kdWN0SW5wdXQhLCAkdmFyaWFudExpc3RPcHRpb25zOiBQcm9kdWN0VmFyaWFudExpc3RPcHRpb25zKSB7XG4gICAgICAgIHVwZGF0ZVByb2R1Y3QoaW5wdXQ6ICRpbnB1dCkge1xuICAgICAgICAgICAgLi4uUHJvZHVjdERldGFpbFxuICAgICAgICAgICAgdmFyaWFudExpc3Qob3B0aW9uczogJHZhcmlhbnRMaXN0T3B0aW9ucykge1xuICAgICAgICAgICAgICAgIGl0ZW1zIHtcbiAgICAgICAgICAgICAgICAgICAgLi4uUHJvZHVjdFZhcmlhbnRcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdG90YWxJdGVtc1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgICR7UFJPRFVDVF9ERVRBSUxfRlJBR01FTlR9XG4gICAgJHtQUk9EVUNUX1ZBUklBTlRfRlJBR01FTlR9XG5gO1xuXG5leHBvcnQgY29uc3QgQ1JFQVRFX1BST0RVQ1QgPSBncWxgXG4gICAgbXV0YXRpb24gQ3JlYXRlUHJvZHVjdCgkaW5wdXQ6IENyZWF0ZVByb2R1Y3RJbnB1dCEsICR2YXJpYW50TGlzdE9wdGlvbnM6IFByb2R1Y3RWYXJpYW50TGlzdE9wdGlvbnMpIHtcbiAgICAgICAgY3JlYXRlUHJvZHVjdChpbnB1dDogJGlucHV0KSB7XG4gICAgICAgICAgICAuLi5Qcm9kdWN0RGV0YWlsXG4gICAgICAgICAgICB2YXJpYW50TGlzdChvcHRpb25zOiAkdmFyaWFudExpc3RPcHRpb25zKSB7XG4gICAgICAgICAgICAgICAgaXRlbXMge1xuICAgICAgICAgICAgICAgICAgICAuLi5Qcm9kdWN0VmFyaWFudFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0b3RhbEl0ZW1zXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgJHtQUk9EVUNUX0RFVEFJTF9GUkFHTUVOVH1cbiAgICAke1BST0RVQ1RfVkFSSUFOVF9GUkFHTUVOVH1cbmA7XG5cbmV4cG9ydCBjb25zdCBERUxFVEVfUFJPRFVDVCA9IGdxbGBcbiAgICBtdXRhdGlvbiBEZWxldGVQcm9kdWN0KCRpZDogSUQhKSB7XG4gICAgICAgIGRlbGV0ZVByb2R1Y3QoaWQ6ICRpZCkge1xuICAgICAgICAgICAgcmVzdWx0XG4gICAgICAgICAgICBtZXNzYWdlXG4gICAgICAgIH1cbiAgICB9XG5gO1xuXG5leHBvcnQgY29uc3QgQ1JFQVRFX1BST0RVQ1RfVkFSSUFOVFMgPSBncWxgXG4gICAgbXV0YXRpb24gQ3JlYXRlUHJvZHVjdFZhcmlhbnRzKCRpbnB1dDogW0NyZWF0ZVByb2R1Y3RWYXJpYW50SW5wdXQhXSEpIHtcbiAgICAgICAgY3JlYXRlUHJvZHVjdFZhcmlhbnRzKGlucHV0OiAkaW5wdXQpIHtcbiAgICAgICAgICAgIC4uLlByb2R1Y3RWYXJpYW50XG4gICAgICAgIH1cbiAgICB9XG4gICAgJHtQUk9EVUNUX1ZBUklBTlRfRlJBR01FTlR9XG5gO1xuXG5leHBvcnQgY29uc3QgVVBEQVRFX1BST0RVQ1RfVkFSSUFOVFMgPSBncWxgXG4gICAgbXV0YXRpb24gVXBkYXRlUHJvZHVjdFZhcmlhbnRzKCRpbnB1dDogW1VwZGF0ZVByb2R1Y3RWYXJpYW50SW5wdXQhXSEpIHtcbiAgICAgICAgdXBkYXRlUHJvZHVjdFZhcmlhbnRzKGlucHV0OiAkaW5wdXQpIHtcbiAgICAgICAgICAgIC4uLlByb2R1Y3RWYXJpYW50XG4gICAgICAgIH1cbiAgICB9XG4gICAgJHtQUk9EVUNUX1ZBUklBTlRfRlJBR01FTlR9XG5gO1xuXG5leHBvcnQgY29uc3QgQ1JFQVRFX1BST0RVQ1RfT1BUSU9OX0dST1VQID0gZ3FsYFxuICAgIG11dGF0aW9uIENyZWF0ZVByb2R1Y3RPcHRpb25Hcm91cCgkaW5wdXQ6IENyZWF0ZVByb2R1Y3RPcHRpb25Hcm91cElucHV0ISkge1xuICAgICAgICBjcmVhdGVQcm9kdWN0T3B0aW9uR3JvdXAoaW5wdXQ6ICRpbnB1dCkge1xuICAgICAgICAgICAgLi4uUHJvZHVjdE9wdGlvbkdyb3VwV2l0aE9wdGlvbnNcbiAgICAgICAgfVxuICAgIH1cbiAgICAke1BST0RVQ1RfT1BUSU9OX0dST1VQX1dJVEhfT1BUSU9OU19GUkFHTUVOVH1cbmA7XG5cbmV4cG9ydCBjb25zdCBHRVRfUFJPRFVDVF9PUFRJT05fR1JPVVAgPSBncWxgXG4gICAgcXVlcnkgR2V0UHJvZHVjdE9wdGlvbkdyb3VwKCRpZDogSUQhKSB7XG4gICAgICAgIHByb2R1Y3RPcHRpb25Hcm91cChpZDogJGlkKSB7XG4gICAgICAgICAgICAuLi5Qcm9kdWN0T3B0aW9uR3JvdXBXaXRoT3B0aW9uc1xuICAgICAgICB9XG4gICAgfVxuICAgICR7UFJPRFVDVF9PUFRJT05fR1JPVVBfV0lUSF9PUFRJT05TX0ZSQUdNRU5UfVxuYDtcblxuZXhwb3J0IGNvbnN0IEFERF9PUFRJT05fVE9fR1JPVVAgPSBncWxgXG4gICAgbXV0YXRpb24gQWRkT3B0aW9uVG9Hcm91cCgkaW5wdXQ6IENyZWF0ZVByb2R1Y3RPcHRpb25JbnB1dCEpIHtcbiAgICAgICAgY3JlYXRlUHJvZHVjdE9wdGlvbihpbnB1dDogJGlucHV0KSB7XG4gICAgICAgICAgICBpZFxuICAgICAgICAgICAgY3JlYXRlZEF0XG4gICAgICAgICAgICB1cGRhdGVkQXRcbiAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICAgIGNvZGVcbiAgICAgICAgICAgIGdyb3VwSWRcbiAgICAgICAgfVxuICAgIH1cbmA7XG5cbmV4cG9ydCBjb25zdCBBRERfT1BUSU9OX0dST1VQX1RPX1BST0RVQ1QgPSBncWxgXG4gICAgbXV0YXRpb24gQWRkT3B0aW9uR3JvdXBUb1Byb2R1Y3QoJHByb2R1Y3RJZDogSUQhLCAkb3B0aW9uR3JvdXBJZDogSUQhKSB7XG4gICAgICAgIGFkZE9wdGlvbkdyb3VwVG9Qcm9kdWN0KHByb2R1Y3RJZDogJHByb2R1Y3RJZCwgb3B0aW9uR3JvdXBJZDogJG9wdGlvbkdyb3VwSWQpIHtcbiAgICAgICAgICAgIGlkXG4gICAgICAgICAgICBjcmVhdGVkQXRcbiAgICAgICAgICAgIHVwZGF0ZWRBdFxuICAgICAgICAgICAgb3B0aW9uR3JvdXBzIHtcbiAgICAgICAgICAgICAgICBpZFxuICAgICAgICAgICAgICAgIGNyZWF0ZWRBdFxuICAgICAgICAgICAgICAgIHVwZGF0ZWRBdFxuICAgICAgICAgICAgICAgIGNvZGVcbiAgICAgICAgICAgICAgICBvcHRpb25zIHtcbiAgICAgICAgICAgICAgICAgICAgaWRcbiAgICAgICAgICAgICAgICAgICAgY3JlYXRlZEF0XG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZWRBdFxuICAgICAgICAgICAgICAgICAgICBjb2RlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuYDtcblxuZXhwb3J0IGNvbnN0IFJFTU9WRV9PUFRJT05fR1JPVVBfRlJPTV9QUk9EVUNUID0gZ3FsYFxuICAgIG11dGF0aW9uIFJlbW92ZU9wdGlvbkdyb3VwRnJvbVByb2R1Y3QoJHByb2R1Y3RJZDogSUQhLCAkb3B0aW9uR3JvdXBJZDogSUQhKSB7XG4gICAgICAgIHJlbW92ZU9wdGlvbkdyb3VwRnJvbVByb2R1Y3QocHJvZHVjdElkOiAkcHJvZHVjdElkLCBvcHRpb25Hcm91cElkOiAkb3B0aW9uR3JvdXBJZCkge1xuICAgICAgICAgICAgLi4uIG9uIFByb2R1Y3Qge1xuICAgICAgICAgICAgICAgIGlkXG4gICAgICAgICAgICAgICAgY3JlYXRlZEF0XG4gICAgICAgICAgICAgICAgdXBkYXRlZEF0XG4gICAgICAgICAgICAgICAgb3B0aW9uR3JvdXBzIHtcbiAgICAgICAgICAgICAgICAgICAgaWRcbiAgICAgICAgICAgICAgICAgICAgY3JlYXRlZEF0XG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZWRBdFxuICAgICAgICAgICAgICAgICAgICBjb2RlXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnMge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWRcbiAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZWRBdFxuICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlZEF0XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAuLi5FcnJvclJlc3VsdFxuICAgICAgICB9XG4gICAgfVxuICAgICR7RVJST1JfUkVTVUxUX0ZSQUdNRU5UfVxuYDtcblxuZXhwb3J0IGNvbnN0IEdFVF9QUk9EVUNUX1dJVEhfVkFSSUFOVFMgPSBncWxgXG4gICAgcXVlcnkgR2V0UHJvZHVjdFdpdGhWYXJpYW50cygkaWQ6IElEISwgJHZhcmlhbnRMaXN0T3B0aW9uczogUHJvZHVjdFZhcmlhbnRMaXN0T3B0aW9ucykge1xuICAgICAgICBwcm9kdWN0KGlkOiAkaWQpIHtcbiAgICAgICAgICAgIC4uLlByb2R1Y3REZXRhaWxcbiAgICAgICAgICAgIHZhcmlhbnRMaXN0KG9wdGlvbnM6ICR2YXJpYW50TGlzdE9wdGlvbnMpIHtcbiAgICAgICAgICAgICAgICBpdGVtcyB7XG4gICAgICAgICAgICAgICAgICAgIC4uLlByb2R1Y3RWYXJpYW50XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRvdGFsSXRlbXNcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAke1BST0RVQ1RfREVUQUlMX0ZSQUdNRU5UfVxuICAgICR7UFJPRFVDVF9WQVJJQU5UX0ZSQUdNRU5UfVxuYDtcblxuZXhwb3J0IGNvbnN0IEdFVF9QUk9EVUNUX1NJTVBMRSA9IGdxbGBcbiAgICBxdWVyeSBHZXRQcm9kdWN0U2ltcGxlKCRpZDogSUQhKSB7XG4gICAgICAgIHByb2R1Y3QoaWQ6ICRpZCkge1xuICAgICAgICAgICAgaWRcbiAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICAgIGZlYXR1cmVkQXNzZXQge1xuICAgICAgICAgICAgICAgIC4uLkFzc2V0XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgJHtBU1NFVF9GUkFHTUVOVH1cbmA7XG5cbmV4cG9ydCBjb25zdCBHRVRfUFJPRFVDVF9MSVNUID0gZ3FsYFxuICAgIHF1ZXJ5IEdldFByb2R1Y3RMaXN0KCRvcHRpb25zOiBQcm9kdWN0TGlzdE9wdGlvbnMpIHtcbiAgICAgICAgcHJvZHVjdHMob3B0aW9uczogJG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGl0ZW1zIHtcbiAgICAgICAgICAgICAgICBpZFxuICAgICAgICAgICAgICAgIGNyZWF0ZWRBdFxuICAgICAgICAgICAgICAgIHVwZGF0ZWRBdFxuICAgICAgICAgICAgICAgIGVuYWJsZWRcbiAgICAgICAgICAgICAgICBsYW5ndWFnZUNvZGVcbiAgICAgICAgICAgICAgICBuYW1lXG4gICAgICAgICAgICAgICAgc2x1Z1xuICAgICAgICAgICAgICAgIGZlYXR1cmVkQXNzZXQge1xuICAgICAgICAgICAgICAgICAgICBpZFxuICAgICAgICAgICAgICAgICAgICBjcmVhdGVkQXRcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlZEF0XG4gICAgICAgICAgICAgICAgICAgIHByZXZpZXdcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0b3RhbEl0ZW1zXG4gICAgICAgIH1cbiAgICB9XG5gO1xuXG5leHBvcnQgY29uc3QgR0VUX1BST0RVQ1RfT1BUSU9OX0dST1VQUyA9IGdxbGBcbiAgICBxdWVyeSBHZXRQcm9kdWN0T3B0aW9uR3JvdXBzKCRmaWx0ZXJUZXJtOiBTdHJpbmcpIHtcbiAgICAgICAgcHJvZHVjdE9wdGlvbkdyb3VwcyhmaWx0ZXJUZXJtOiAkZmlsdGVyVGVybSkge1xuICAgICAgICAgICAgaWRcbiAgICAgICAgICAgIGNyZWF0ZWRBdFxuICAgICAgICAgICAgdXBkYXRlZEF0XG4gICAgICAgICAgICBsYW5ndWFnZUNvZGVcbiAgICAgICAgICAgIGNvZGVcbiAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICAgIG9wdGlvbnMge1xuICAgICAgICAgICAgICAgIGlkXG4gICAgICAgICAgICAgICAgY3JlYXRlZEF0XG4gICAgICAgICAgICAgICAgdXBkYXRlZEF0XG4gICAgICAgICAgICAgICAgbGFuZ3VhZ2VDb2RlXG4gICAgICAgICAgICAgICAgY29kZVxuICAgICAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbmA7XG5cbmV4cG9ydCBjb25zdCBHRVRfQVNTRVRfTElTVCA9IGdxbGBcbiAgICBxdWVyeSBHZXRBc3NldExpc3QoJG9wdGlvbnM6IEFzc2V0TGlzdE9wdGlvbnMpIHtcbiAgICAgICAgYXNzZXRzKG9wdGlvbnM6ICRvcHRpb25zKSB7XG4gICAgICAgICAgICBpdGVtcyB7XG4gICAgICAgICAgICAgICAgLi4uQXNzZXRcbiAgICAgICAgICAgICAgICB0YWdzIHtcbiAgICAgICAgICAgICAgICAgICAgLi4uVGFnXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdG90YWxJdGVtc1xuICAgICAgICB9XG4gICAgfVxuICAgICR7QVNTRVRfRlJBR01FTlR9XG4gICAgJHtUQUdfRlJBR01FTlR9XG5gO1xuXG5leHBvcnQgY29uc3QgR0VUX0FTU0VUID0gZ3FsYFxuICAgIHF1ZXJ5IEdldEFzc2V0KCRpZDogSUQhKSB7XG4gICAgICAgIGFzc2V0KGlkOiAkaWQpIHtcbiAgICAgICAgICAgIC4uLkFzc2V0XG4gICAgICAgICAgICB0YWdzIHtcbiAgICAgICAgICAgICAgICAuLi5UYWdcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAke0FTU0VUX0ZSQUdNRU5UfVxuICAgICR7VEFHX0ZSQUdNRU5UfVxuYDtcblxuZXhwb3J0IGNvbnN0IENSRUFURV9BU1NFVFMgPSBncWxgXG4gICAgbXV0YXRpb24gQ3JlYXRlQXNzZXRzKCRpbnB1dDogW0NyZWF0ZUFzc2V0SW5wdXQhXSEpIHtcbiAgICAgICAgY3JlYXRlQXNzZXRzKGlucHV0OiAkaW5wdXQpIHtcbiAgICAgICAgICAgIC4uLkFzc2V0XG4gICAgICAgICAgICAuLi4gb24gQXNzZXQge1xuICAgICAgICAgICAgICAgIHRhZ3Mge1xuICAgICAgICAgICAgICAgICAgICAuLi5UYWdcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAuLi4gb24gRXJyb3JSZXN1bHQge1xuICAgICAgICAgICAgICAgIG1lc3NhZ2VcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAke0FTU0VUX0ZSQUdNRU5UfVxuICAgICR7VEFHX0ZSQUdNRU5UfVxuYDtcblxuZXhwb3J0IGNvbnN0IFVQREFURV9BU1NFVCA9IGdxbGBcbiAgICBtdXRhdGlvbiBVcGRhdGVBc3NldCgkaW5wdXQ6IFVwZGF0ZUFzc2V0SW5wdXQhKSB7XG4gICAgICAgIHVwZGF0ZUFzc2V0KGlucHV0OiAkaW5wdXQpIHtcbiAgICAgICAgICAgIC4uLkFzc2V0XG4gICAgICAgICAgICB0YWdzIHtcbiAgICAgICAgICAgICAgICAuLi5UYWdcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAke0FTU0VUX0ZSQUdNRU5UfVxuICAgICR7VEFHX0ZSQUdNRU5UfVxuYDtcblxuZXhwb3J0IGNvbnN0IERFTEVURV9BU1NFVFMgPSBncWxgXG4gICAgbXV0YXRpb24gRGVsZXRlQXNzZXRzKCRpbnB1dDogRGVsZXRlQXNzZXRzSW5wdXQhKSB7XG4gICAgICAgIGRlbGV0ZUFzc2V0cyhpbnB1dDogJGlucHV0KSB7XG4gICAgICAgICAgICByZXN1bHRcbiAgICAgICAgICAgIG1lc3NhZ2VcbiAgICAgICAgfVxuICAgIH1cbmA7XG5cbmV4cG9ydCBjb25zdCBTRUFSQ0hfUFJPRFVDVFMgPSBncWxgXG4gICAgcXVlcnkgU2VhcmNoUHJvZHVjdHMoJGlucHV0OiBTZWFyY2hJbnB1dCEpIHtcbiAgICAgICAgc2VhcmNoKGlucHV0OiAkaW5wdXQpIHtcbiAgICAgICAgICAgIHRvdGFsSXRlbXNcbiAgICAgICAgICAgIGl0ZW1zIHtcbiAgICAgICAgICAgICAgICBlbmFibGVkXG4gICAgICAgICAgICAgICAgcHJvZHVjdElkXG4gICAgICAgICAgICAgICAgcHJvZHVjdE5hbWVcbiAgICAgICAgICAgICAgICBwcm9kdWN0QXNzZXQge1xuICAgICAgICAgICAgICAgICAgICBpZFxuICAgICAgICAgICAgICAgICAgICBwcmV2aWV3XG4gICAgICAgICAgICAgICAgICAgIGZvY2FsUG9pbnQge1xuICAgICAgICAgICAgICAgICAgICAgICAgeFxuICAgICAgICAgICAgICAgICAgICAgICAgeVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHByb2R1Y3RWYXJpYW50SWRcbiAgICAgICAgICAgICAgICBwcm9kdWN0VmFyaWFudE5hbWVcbiAgICAgICAgICAgICAgICBwcm9kdWN0VmFyaWFudEFzc2V0IHtcbiAgICAgICAgICAgICAgICAgICAgaWRcbiAgICAgICAgICAgICAgICAgICAgcHJldmlld1xuICAgICAgICAgICAgICAgICAgICBmb2NhbFBvaW50IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHhcbiAgICAgICAgICAgICAgICAgICAgICAgIHlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBza3VcbiAgICAgICAgICAgICAgICBjaGFubmVsSWRzXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmYWNldFZhbHVlcyB7XG4gICAgICAgICAgICAgICAgY291bnRcbiAgICAgICAgICAgICAgICBmYWNldFZhbHVlIHtcbiAgICAgICAgICAgICAgICAgICAgaWRcbiAgICAgICAgICAgICAgICAgICAgY3JlYXRlZEF0XG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZWRBdFxuICAgICAgICAgICAgICAgICAgICBuYW1lXG4gICAgICAgICAgICAgICAgICAgIGZhY2V0IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkXG4gICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVkQXRcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZWRBdFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuYDtcblxuZXhwb3J0IGNvbnN0IFBST0RVQ1RfU0VMRUNUT1JfU0VBUkNIID0gZ3FsYFxuICAgIHF1ZXJ5IFByb2R1Y3RTZWxlY3RvclNlYXJjaCgkdGVybTogU3RyaW5nISwgJHRha2U6IEludCEpIHtcbiAgICAgICAgc2VhcmNoKGlucHV0OiB7IGdyb3VwQnlQcm9kdWN0OiBmYWxzZSwgdGVybTogJHRlcm0sIHRha2U6ICR0YWtlIH0pIHtcbiAgICAgICAgICAgIGl0ZW1zIHtcbiAgICAgICAgICAgICAgICBwcm9kdWN0VmFyaWFudElkXG4gICAgICAgICAgICAgICAgcHJvZHVjdFZhcmlhbnROYW1lXG4gICAgICAgICAgICAgICAgcHJvZHVjdEFzc2V0IHtcbiAgICAgICAgICAgICAgICAgICAgaWRcbiAgICAgICAgICAgICAgICAgICAgcHJldmlld1xuICAgICAgICAgICAgICAgICAgICBmb2NhbFBvaW50IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHhcbiAgICAgICAgICAgICAgICAgICAgICAgIHlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBwcmljZSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLiBvbiBTaW5nbGVQcmljZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHByaWNlV2l0aFRheCB7XG4gICAgICAgICAgICAgICAgICAgIC4uLiBvbiBTaW5nbGVQcmljZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHNrdVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuYDtcblxuZXhwb3J0IGNvbnN0IFVQREFURV9QUk9EVUNUX09QVElPTl9HUk9VUCA9IGdxbGBcbiAgICBtdXRhdGlvbiBVcGRhdGVQcm9kdWN0T3B0aW9uR3JvdXAoJGlucHV0OiBVcGRhdGVQcm9kdWN0T3B0aW9uR3JvdXBJbnB1dCEpIHtcbiAgICAgICAgdXBkYXRlUHJvZHVjdE9wdGlvbkdyb3VwKGlucHV0OiAkaW5wdXQpIHtcbiAgICAgICAgICAgIC4uLlByb2R1Y3RPcHRpb25Hcm91cFxuICAgICAgICB9XG4gICAgfVxuICAgICR7UFJPRFVDVF9PUFRJT05fR1JPVVBfRlJBR01FTlR9XG5gO1xuXG5leHBvcnQgY29uc3QgVVBEQVRFX1BST0RVQ1RfT1BUSU9OID0gZ3FsYFxuICAgIG11dGF0aW9uIFVwZGF0ZVByb2R1Y3RPcHRpb24oJGlucHV0OiBVcGRhdGVQcm9kdWN0T3B0aW9uSW5wdXQhKSB7XG4gICAgICAgIHVwZGF0ZVByb2R1Y3RPcHRpb24oaW5wdXQ6ICRpbnB1dCkge1xuICAgICAgICAgICAgLi4uUHJvZHVjdE9wdGlvblxuICAgICAgICB9XG4gICAgfVxuICAgICR7UFJPRFVDVF9PUFRJT05fRlJBR01FTlR9XG5gO1xuXG5leHBvcnQgY29uc3QgREVMRVRFX1BST0RVQ1RfT1BUSU9OID0gZ3FsYFxuICAgIG11dGF0aW9uIERlbGV0ZVByb2R1Y3RPcHRpb24oJGlkOiBJRCEpIHtcbiAgICAgICAgZGVsZXRlUHJvZHVjdE9wdGlvbihpZDogJGlkKSB7XG4gICAgICAgICAgICByZXN1bHRcbiAgICAgICAgICAgIG1lc3NhZ2VcbiAgICAgICAgfVxuICAgIH1cbmA7XG5cbmV4cG9ydCBjb25zdCBERUxFVEVfUFJPRFVDVF9WQVJJQU5UID0gZ3FsYFxuICAgIG11dGF0aW9uIERlbGV0ZVByb2R1Y3RWYXJpYW50KCRpZDogSUQhKSB7XG4gICAgICAgIGRlbGV0ZVByb2R1Y3RWYXJpYW50KGlkOiAkaWQpIHtcbiAgICAgICAgICAgIHJlc3VsdFxuICAgICAgICAgICAgbWVzc2FnZVxuICAgICAgICB9XG4gICAgfVxuYDtcblxuZXhwb3J0IGNvbnN0IEdFVF9QUk9EVUNUX1ZBUklBTlRfT1BUSU9OUyA9IGdxbGBcbiAgICBxdWVyeSBHZXRQcm9kdWN0VmFyaWFudE9wdGlvbnMoJGlkOiBJRCEpIHtcbiAgICAgICAgcHJvZHVjdChpZDogJGlkKSB7XG4gICAgICAgICAgICBpZFxuICAgICAgICAgICAgY3JlYXRlZEF0XG4gICAgICAgICAgICB1cGRhdGVkQXRcbiAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICAgIG9wdGlvbkdyb3VwcyB7XG4gICAgICAgICAgICAgICAgLi4uUHJvZHVjdE9wdGlvbkdyb3VwXG4gICAgICAgICAgICAgICAgb3B0aW9ucyB7XG4gICAgICAgICAgICAgICAgICAgIC4uLlByb2R1Y3RPcHRpb25cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXJpYW50cyB7XG4gICAgICAgICAgICAgICAgaWRcbiAgICAgICAgICAgICAgICBjcmVhdGVkQXRcbiAgICAgICAgICAgICAgICB1cGRhdGVkQXRcbiAgICAgICAgICAgICAgICBlbmFibGVkXG4gICAgICAgICAgICAgICAgbmFtZVxuICAgICAgICAgICAgICAgIHNrdVxuICAgICAgICAgICAgICAgIHByaWNlXG4gICAgICAgICAgICAgICAgc3RvY2tPbkhhbmRcbiAgICAgICAgICAgICAgICBlbmFibGVkXG4gICAgICAgICAgICAgICAgb3B0aW9ucyB7XG4gICAgICAgICAgICAgICAgICAgIGlkXG4gICAgICAgICAgICAgICAgICAgIGNyZWF0ZWRBdFxuICAgICAgICAgICAgICAgICAgICB1cGRhdGVkQXRcbiAgICAgICAgICAgICAgICAgICAgbmFtZVxuICAgICAgICAgICAgICAgICAgICBjb2RlXG4gICAgICAgICAgICAgICAgICAgIGdyb3VwSWRcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgJHtQUk9EVUNUX09QVElPTl9HUk9VUF9GUkFHTUVOVH1cbiAgICAke1BST0RVQ1RfT1BUSU9OX0ZSQUdNRU5UfVxuYDtcblxuZXhwb3J0IGNvbnN0IEFTU0lHTl9QUk9EVUNUU19UT19DSEFOTkVMID0gZ3FsYFxuICAgIG11dGF0aW9uIEFzc2lnblByb2R1Y3RzVG9DaGFubmVsKCRpbnB1dDogQXNzaWduUHJvZHVjdHNUb0NoYW5uZWxJbnB1dCEpIHtcbiAgICAgICAgYXNzaWduUHJvZHVjdHNUb0NoYW5uZWwoaW5wdXQ6ICRpbnB1dCkge1xuICAgICAgICAgICAgaWRcbiAgICAgICAgICAgIGNoYW5uZWxzIHtcbiAgICAgICAgICAgICAgICBpZFxuICAgICAgICAgICAgICAgIGNvZGVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbmA7XG5cbmV4cG9ydCBjb25zdCBBU1NJR05fVkFSSUFOVFNfVE9fQ0hBTk5FTCA9IGdxbGBcbiAgICBtdXRhdGlvbiBBc3NpZ25WYXJpYW50c1RvQ2hhbm5lbCgkaW5wdXQ6IEFzc2lnblByb2R1Y3RWYXJpYW50c1RvQ2hhbm5lbElucHV0ISkge1xuICAgICAgICBhc3NpZ25Qcm9kdWN0VmFyaWFudHNUb0NoYW5uZWwoaW5wdXQ6ICRpbnB1dCkge1xuICAgICAgICAgICAgaWRcbiAgICAgICAgICAgIGNoYW5uZWxzIHtcbiAgICAgICAgICAgICAgICBpZFxuICAgICAgICAgICAgICAgIGNvZGVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbmA7XG5cbmV4cG9ydCBjb25zdCBSRU1PVkVfUFJPRFVDVFNfRlJPTV9DSEFOTkVMID0gZ3FsYFxuICAgIG11dGF0aW9uIFJlbW92ZVByb2R1Y3RzRnJvbUNoYW5uZWwoJGlucHV0OiBSZW1vdmVQcm9kdWN0c0Zyb21DaGFubmVsSW5wdXQhKSB7XG4gICAgICAgIHJlbW92ZVByb2R1Y3RzRnJvbUNoYW5uZWwoaW5wdXQ6ICRpbnB1dCkge1xuICAgICAgICAgICAgaWRcbiAgICAgICAgICAgIGNoYW5uZWxzIHtcbiAgICAgICAgICAgICAgICBpZFxuICAgICAgICAgICAgICAgIGNvZGVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbmA7XG5cbmV4cG9ydCBjb25zdCBSRU1PVkVfVkFSSUFOVFNfRlJPTV9DSEFOTkVMID0gZ3FsYFxuICAgIG11dGF0aW9uIFJlbW92ZVZhcmlhbnRzRnJvbUNoYW5uZWwoJGlucHV0OiBSZW1vdmVQcm9kdWN0VmFyaWFudHNGcm9tQ2hhbm5lbElucHV0ISkge1xuICAgICAgICByZW1vdmVQcm9kdWN0VmFyaWFudHNGcm9tQ2hhbm5lbChpbnB1dDogJGlucHV0KSB7XG4gICAgICAgICAgICBpZFxuICAgICAgICAgICAgY2hhbm5lbHMge1xuICAgICAgICAgICAgICAgIGlkXG4gICAgICAgICAgICAgICAgY29kZVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuYDtcblxuZXhwb3J0IGNvbnN0IEdFVF9QUk9EVUNUX1ZBUklBTlQgPSBncWxgXG4gICAgcXVlcnkgR2V0UHJvZHVjdFZhcmlhbnQoJGlkOiBJRCEpIHtcbiAgICAgICAgcHJvZHVjdFZhcmlhbnQoaWQ6ICRpZCkge1xuICAgICAgICAgICAgaWRcbiAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICAgIHNrdVxuICAgICAgICAgICAgZmVhdHVyZWRBc3NldCB7XG4gICAgICAgICAgICAgICAgaWRcbiAgICAgICAgICAgICAgICBwcmV2aWV3XG4gICAgICAgICAgICAgICAgZm9jYWxQb2ludCB7XG4gICAgICAgICAgICAgICAgICAgIHhcbiAgICAgICAgICAgICAgICAgICAgeVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHByb2R1Y3Qge1xuICAgICAgICAgICAgICAgIGlkXG4gICAgICAgICAgICAgICAgZmVhdHVyZWRBc3NldCB7XG4gICAgICAgICAgICAgICAgICAgIGlkXG4gICAgICAgICAgICAgICAgICAgIHByZXZpZXdcbiAgICAgICAgICAgICAgICAgICAgZm9jYWxQb2ludCB7XG4gICAgICAgICAgICAgICAgICAgICAgICB4XG4gICAgICAgICAgICAgICAgICAgICAgICB5XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5gO1xuXG5leHBvcnQgY29uc3QgR0VUX1BST0RVQ1RfVkFSSUFOVF9MSVNUX1NJTVBMRSA9IGdxbGBcbiAgICBxdWVyeSBHZXRQcm9kdWN0VmFyaWFudExpc3RTaW1wbGUoJG9wdGlvbnM6IFByb2R1Y3RWYXJpYW50TGlzdE9wdGlvbnMhLCAkcHJvZHVjdElkOiBJRCkge1xuICAgICAgICBwcm9kdWN0VmFyaWFudHMob3B0aW9uczogJG9wdGlvbnMsIHByb2R1Y3RJZDogJHByb2R1Y3RJZCkge1xuICAgICAgICAgICAgaXRlbXMge1xuICAgICAgICAgICAgICAgIGlkXG4gICAgICAgICAgICAgICAgbmFtZVxuICAgICAgICAgICAgICAgIHNrdVxuICAgICAgICAgICAgICAgIGZlYXR1cmVkQXNzZXQge1xuICAgICAgICAgICAgICAgICAgICBpZFxuICAgICAgICAgICAgICAgICAgICBwcmV2aWV3XG4gICAgICAgICAgICAgICAgICAgIGZvY2FsUG9pbnQge1xuICAgICAgICAgICAgICAgICAgICAgICAgeFxuICAgICAgICAgICAgICAgICAgICAgICAgeVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHByb2R1Y3Qge1xuICAgICAgICAgICAgICAgICAgICBpZFxuICAgICAgICAgICAgICAgICAgICBmZWF0dXJlZEFzc2V0IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV2aWV3XG4gICAgICAgICAgICAgICAgICAgICAgICBmb2NhbFBvaW50IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdG90YWxJdGVtc1xuICAgICAgICB9XG4gICAgfVxuYDtcblxuZXhwb3J0IGNvbnN0IEdFVF9QUk9EVUNUX1ZBUklBTlRfTElTVCA9IGdxbGBcbiAgICBxdWVyeSBHZXRQcm9kdWN0VmFyaWFudExpc3QoJG9wdGlvbnM6IFByb2R1Y3RWYXJpYW50TGlzdE9wdGlvbnMhLCAkcHJvZHVjdElkOiBJRCkge1xuICAgICAgICBwcm9kdWN0VmFyaWFudHMob3B0aW9uczogJG9wdGlvbnMsIHByb2R1Y3RJZDogJHByb2R1Y3RJZCkge1xuICAgICAgICAgICAgaXRlbXMge1xuICAgICAgICAgICAgICAgIC4uLlByb2R1Y3RWYXJpYW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0b3RhbEl0ZW1zXG4gICAgICAgIH1cbiAgICB9XG4gICAgJHtQUk9EVUNUX1ZBUklBTlRfRlJBR01FTlR9XG5gO1xuXG5leHBvcnQgY29uc3QgR0VUX1RBR19MSVNUID0gZ3FsYFxuICAgIHF1ZXJ5IEdldFRhZ0xpc3QoJG9wdGlvbnM6IFRhZ0xpc3RPcHRpb25zKSB7XG4gICAgICAgIHRhZ3Mob3B0aW9uczogJG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGl0ZW1zIHtcbiAgICAgICAgICAgICAgICAuLi5UYWdcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRvdGFsSXRlbXNcbiAgICAgICAgfVxuICAgIH1cbiAgICAke1RBR19GUkFHTUVOVH1cbmA7XG5cbmV4cG9ydCBjb25zdCBHRVRfVEFHID0gZ3FsYFxuICAgIHF1ZXJ5IEdldFRhZygkaWQ6IElEISkge1xuICAgICAgICB0YWcoaWQ6ICRpZCkge1xuICAgICAgICAgICAgLi4uVGFnXG4gICAgICAgIH1cbiAgICB9XG4gICAgJHtUQUdfRlJBR01FTlR9XG5gO1xuXG5leHBvcnQgY29uc3QgQ1JFQVRFX1RBRyA9IGdxbGBcbiAgICBtdXRhdGlvbiBDcmVhdGVUYWcoJGlucHV0OiBDcmVhdGVUYWdJbnB1dCEpIHtcbiAgICAgICAgY3JlYXRlVGFnKGlucHV0OiAkaW5wdXQpIHtcbiAgICAgICAgICAgIC4uLlRhZ1xuICAgICAgICB9XG4gICAgfVxuICAgICR7VEFHX0ZSQUdNRU5UfVxuYDtcblxuZXhwb3J0IGNvbnN0IFVQREFURV9UQUcgPSBncWxgXG4gICAgbXV0YXRpb24gVXBkYXRlVGFnKCRpbnB1dDogVXBkYXRlVGFnSW5wdXQhKSB7XG4gICAgICAgIHVwZGF0ZVRhZyhpbnB1dDogJGlucHV0KSB7XG4gICAgICAgICAgICAuLi5UYWdcbiAgICAgICAgfVxuICAgIH1cbiAgICAke1RBR19GUkFHTUVOVH1cbmA7XG5cbmV4cG9ydCBjb25zdCBERUxFVEVfVEFHID0gZ3FsYFxuICAgIG11dGF0aW9uIERlbGV0ZVRhZygkaWQ6IElEISkge1xuICAgICAgICBkZWxldGVUYWcoaWQ6ICRpZCkge1xuICAgICAgICAgICAgbWVzc2FnZVxuICAgICAgICAgICAgcmVzdWx0XG4gICAgICAgIH1cbiAgICB9XG5gO1xuIl19
3
+ export const ASSET_FRAGMENT = gql `
4
+ fragment Asset on Asset {
5
+ id
6
+ createdAt
7
+ updatedAt
8
+ name
9
+ fileSize
10
+ mimeType
11
+ type
12
+ preview
13
+ source
14
+ width
15
+ height
16
+ focalPoint {
17
+ x
18
+ y
19
+ }
20
+ }
21
+ `;
22
+ export const TAG_FRAGMENT = gql `
23
+ fragment Tag on Tag {
24
+ id
25
+ value
26
+ }
27
+ `;
28
+ export const PRODUCT_OPTION_GROUP_FRAGMENT = gql `
29
+ fragment ProductOptionGroup on ProductOptionGroup {
30
+ id
31
+ createdAt
32
+ updatedAt
33
+ code
34
+ languageCode
35
+ name
36
+ translations {
37
+ id
38
+ languageCode
39
+ name
40
+ }
41
+ }
42
+ `;
43
+ export const PRODUCT_OPTION_FRAGMENT = gql `
44
+ fragment ProductOption on ProductOption {
45
+ id
46
+ createdAt
47
+ updatedAt
48
+ code
49
+ languageCode
50
+ name
51
+ groupId
52
+ translations {
53
+ id
54
+ languageCode
55
+ name
56
+ }
57
+ }
58
+ `;
59
+ export const PRODUCT_VARIANT_FRAGMENT = gql `
60
+ fragment ProductVariant on ProductVariant {
61
+ id
62
+ createdAt
63
+ updatedAt
64
+ enabled
65
+ languageCode
66
+ name
67
+ price
68
+ currencyCode
69
+ priceWithTax
70
+ stockOnHand
71
+ stockAllocated
72
+ trackInventory
73
+ outOfStockThreshold
74
+ useGlobalOutOfStockThreshold
75
+ taxRateApplied {
76
+ id
77
+ name
78
+ value
79
+ }
80
+ taxCategory {
81
+ id
82
+ name
83
+ }
84
+ sku
85
+ options {
86
+ ...ProductOption
87
+ }
88
+ facetValues {
89
+ id
90
+ code
91
+ name
92
+ facet {
93
+ id
94
+ name
95
+ }
96
+ }
97
+ featuredAsset {
98
+ ...Asset
99
+ }
100
+ assets {
101
+ ...Asset
102
+ }
103
+ translations {
104
+ id
105
+ languageCode
106
+ name
107
+ }
108
+ channels {
109
+ id
110
+ code
111
+ }
112
+ }
113
+ ${PRODUCT_OPTION_FRAGMENT}
114
+ ${ASSET_FRAGMENT}
115
+ `;
116
+ export const PRODUCT_DETAIL_FRAGMENT = gql `
117
+ fragment ProductDetail on Product {
118
+ id
119
+ createdAt
120
+ updatedAt
121
+ enabled
122
+ languageCode
123
+ name
124
+ slug
125
+ description
126
+ featuredAsset {
127
+ ...Asset
128
+ }
129
+ assets {
130
+ ...Asset
131
+ }
132
+ translations {
133
+ id
134
+ languageCode
135
+ name
136
+ slug
137
+ description
138
+ }
139
+ optionGroups {
140
+ ...ProductOptionGroup
141
+ }
142
+ facetValues {
143
+ id
144
+ code
145
+ name
146
+ facet {
147
+ id
148
+ name
149
+ }
150
+ }
151
+ channels {
152
+ id
153
+ code
154
+ }
155
+ }
156
+ ${PRODUCT_OPTION_GROUP_FRAGMENT}
157
+ ${ASSET_FRAGMENT}
158
+ `;
159
+ export const PRODUCT_OPTION_GROUP_WITH_OPTIONS_FRAGMENT = gql `
160
+ fragment ProductOptionGroupWithOptions on ProductOptionGroup {
161
+ id
162
+ createdAt
163
+ updatedAt
164
+ languageCode
165
+ code
166
+ name
167
+ translations {
168
+ id
169
+ name
170
+ }
171
+ options {
172
+ id
173
+ languageCode
174
+ name
175
+ code
176
+ translations {
177
+ name
178
+ }
179
+ }
180
+ }
181
+ `;
182
+ export const UPDATE_PRODUCT = gql `
183
+ mutation UpdateProduct($input: UpdateProductInput!, $variantListOptions: ProductVariantListOptions) {
184
+ updateProduct(input: $input) {
185
+ ...ProductDetail
186
+ variantList(options: $variantListOptions) {
187
+ items {
188
+ ...ProductVariant
189
+ }
190
+ totalItems
191
+ }
192
+ }
193
+ }
194
+ ${PRODUCT_DETAIL_FRAGMENT}
195
+ ${PRODUCT_VARIANT_FRAGMENT}
196
+ `;
197
+ export const CREATE_PRODUCT = gql `
198
+ mutation CreateProduct($input: CreateProductInput!, $variantListOptions: ProductVariantListOptions) {
199
+ createProduct(input: $input) {
200
+ ...ProductDetail
201
+ variantList(options: $variantListOptions) {
202
+ items {
203
+ ...ProductVariant
204
+ }
205
+ totalItems
206
+ }
207
+ }
208
+ }
209
+ ${PRODUCT_DETAIL_FRAGMENT}
210
+ ${PRODUCT_VARIANT_FRAGMENT}
211
+ `;
212
+ export const DELETE_PRODUCT = gql `
213
+ mutation DeleteProduct($id: ID!) {
214
+ deleteProduct(id: $id) {
215
+ result
216
+ message
217
+ }
218
+ }
219
+ `;
220
+ export const CREATE_PRODUCT_VARIANTS = gql `
221
+ mutation CreateProductVariants($input: [CreateProductVariantInput!]!) {
222
+ createProductVariants(input: $input) {
223
+ ...ProductVariant
224
+ }
225
+ }
226
+ ${PRODUCT_VARIANT_FRAGMENT}
227
+ `;
228
+ export const UPDATE_PRODUCT_VARIANTS = gql `
229
+ mutation UpdateProductVariants($input: [UpdateProductVariantInput!]!) {
230
+ updateProductVariants(input: $input) {
231
+ ...ProductVariant
232
+ }
233
+ }
234
+ ${PRODUCT_VARIANT_FRAGMENT}
235
+ `;
236
+ export const CREATE_PRODUCT_OPTION_GROUP = gql `
237
+ mutation CreateProductOptionGroup($input: CreateProductOptionGroupInput!) {
238
+ createProductOptionGroup(input: $input) {
239
+ ...ProductOptionGroupWithOptions
240
+ }
241
+ }
242
+ ${PRODUCT_OPTION_GROUP_WITH_OPTIONS_FRAGMENT}
243
+ `;
244
+ export const GET_PRODUCT_OPTION_GROUP = gql `
245
+ query GetProductOptionGroup($id: ID!) {
246
+ productOptionGroup(id: $id) {
247
+ ...ProductOptionGroupWithOptions
248
+ }
249
+ }
250
+ ${PRODUCT_OPTION_GROUP_WITH_OPTIONS_FRAGMENT}
251
+ `;
252
+ export const ADD_OPTION_TO_GROUP = gql `
253
+ mutation AddOptionToGroup($input: CreateProductOptionInput!) {
254
+ createProductOption(input: $input) {
255
+ id
256
+ createdAt
257
+ updatedAt
258
+ name
259
+ code
260
+ groupId
261
+ }
262
+ }
263
+ `;
264
+ export const ADD_OPTION_GROUP_TO_PRODUCT = gql `
265
+ mutation AddOptionGroupToProduct($productId: ID!, $optionGroupId: ID!) {
266
+ addOptionGroupToProduct(productId: $productId, optionGroupId: $optionGroupId) {
267
+ id
268
+ createdAt
269
+ updatedAt
270
+ optionGroups {
271
+ id
272
+ createdAt
273
+ updatedAt
274
+ code
275
+ options {
276
+ id
277
+ createdAt
278
+ updatedAt
279
+ code
280
+ }
281
+ }
282
+ }
283
+ }
284
+ `;
285
+ export const REMOVE_OPTION_GROUP_FROM_PRODUCT = gql `
286
+ mutation RemoveOptionGroupFromProduct($productId: ID!, $optionGroupId: ID!) {
287
+ removeOptionGroupFromProduct(productId: $productId, optionGroupId: $optionGroupId) {
288
+ ... on Product {
289
+ id
290
+ createdAt
291
+ updatedAt
292
+ optionGroups {
293
+ id
294
+ createdAt
295
+ updatedAt
296
+ code
297
+ options {
298
+ id
299
+ createdAt
300
+ updatedAt
301
+ code
302
+ }
303
+ }
304
+ }
305
+ ...ErrorResult
306
+ }
307
+ }
308
+ ${ERROR_RESULT_FRAGMENT}
309
+ `;
310
+ export const GET_PRODUCT_WITH_VARIANTS = gql `
311
+ query GetProductWithVariants($id: ID!, $variantListOptions: ProductVariantListOptions) {
312
+ product(id: $id) {
313
+ ...ProductDetail
314
+ variantList(options: $variantListOptions) {
315
+ items {
316
+ ...ProductVariant
317
+ }
318
+ totalItems
319
+ }
320
+ }
321
+ }
322
+ ${PRODUCT_DETAIL_FRAGMENT}
323
+ ${PRODUCT_VARIANT_FRAGMENT}
324
+ `;
325
+ export const GET_PRODUCT_SIMPLE = gql `
326
+ query GetProductSimple($id: ID!) {
327
+ product(id: $id) {
328
+ id
329
+ name
330
+ featuredAsset {
331
+ ...Asset
332
+ }
333
+ }
334
+ }
335
+ ${ASSET_FRAGMENT}
336
+ `;
337
+ export const GET_PRODUCT_LIST = gql `
338
+ query GetProductList($options: ProductListOptions) {
339
+ products(options: $options) {
340
+ items {
341
+ id
342
+ createdAt
343
+ updatedAt
344
+ enabled
345
+ languageCode
346
+ name
347
+ slug
348
+ featuredAsset {
349
+ id
350
+ createdAt
351
+ updatedAt
352
+ preview
353
+ }
354
+ }
355
+ totalItems
356
+ }
357
+ }
358
+ `;
359
+ export const GET_PRODUCT_OPTION_GROUPS = gql `
360
+ query GetProductOptionGroups($filterTerm: String) {
361
+ productOptionGroups(filterTerm: $filterTerm) {
362
+ id
363
+ createdAt
364
+ updatedAt
365
+ languageCode
366
+ code
367
+ name
368
+ options {
369
+ id
370
+ createdAt
371
+ updatedAt
372
+ languageCode
373
+ code
374
+ name
375
+ }
376
+ }
377
+ }
378
+ `;
379
+ export const GET_ASSET_LIST = gql `
380
+ query GetAssetList($options: AssetListOptions) {
381
+ assets(options: $options) {
382
+ items {
383
+ ...Asset
384
+ tags {
385
+ ...Tag
386
+ }
387
+ }
388
+ totalItems
389
+ }
390
+ }
391
+ ${ASSET_FRAGMENT}
392
+ ${TAG_FRAGMENT}
393
+ `;
394
+ export const GET_ASSET = gql `
395
+ query GetAsset($id: ID!) {
396
+ asset(id: $id) {
397
+ ...Asset
398
+ tags {
399
+ ...Tag
400
+ }
401
+ }
402
+ }
403
+ ${ASSET_FRAGMENT}
404
+ ${TAG_FRAGMENT}
405
+ `;
406
+ export const CREATE_ASSETS = gql `
407
+ mutation CreateAssets($input: [CreateAssetInput!]!) {
408
+ createAssets(input: $input) {
409
+ ...Asset
410
+ ... on Asset {
411
+ tags {
412
+ ...Tag
413
+ }
414
+ }
415
+ ... on ErrorResult {
416
+ message
417
+ }
418
+ }
419
+ }
420
+ ${ASSET_FRAGMENT}
421
+ ${TAG_FRAGMENT}
422
+ `;
423
+ export const UPDATE_ASSET = gql `
424
+ mutation UpdateAsset($input: UpdateAssetInput!) {
425
+ updateAsset(input: $input) {
426
+ ...Asset
427
+ tags {
428
+ ...Tag
429
+ }
430
+ }
431
+ }
432
+ ${ASSET_FRAGMENT}
433
+ ${TAG_FRAGMENT}
434
+ `;
435
+ export const DELETE_ASSETS = gql `
436
+ mutation DeleteAssets($input: DeleteAssetsInput!) {
437
+ deleteAssets(input: $input) {
438
+ result
439
+ message
440
+ }
441
+ }
442
+ `;
443
+ export const SEARCH_PRODUCTS = gql `
444
+ query SearchProducts($input: SearchInput!) {
445
+ search(input: $input) {
446
+ totalItems
447
+ items {
448
+ enabled
449
+ productId
450
+ productName
451
+ productAsset {
452
+ id
453
+ preview
454
+ focalPoint {
455
+ x
456
+ y
457
+ }
458
+ }
459
+ productVariantId
460
+ productVariantName
461
+ productVariantAsset {
462
+ id
463
+ preview
464
+ focalPoint {
465
+ x
466
+ y
467
+ }
468
+ }
469
+ sku
470
+ channelIds
471
+ }
472
+ facetValues {
473
+ count
474
+ facetValue {
475
+ id
476
+ createdAt
477
+ updatedAt
478
+ name
479
+ facet {
480
+ id
481
+ createdAt
482
+ updatedAt
483
+ name
484
+ }
485
+ }
486
+ }
487
+ }
488
+ }
489
+ `;
490
+ export const PRODUCT_SELECTOR_SEARCH = gql `
491
+ query ProductSelectorSearch($term: String!, $take: Int!) {
492
+ search(input: { groupByProduct: false, term: $term, take: $take }) {
493
+ items {
494
+ productVariantId
495
+ productVariantName
496
+ productAsset {
497
+ id
498
+ preview
499
+ focalPoint {
500
+ x
501
+ y
502
+ }
503
+ }
504
+ price {
505
+ ... on SinglePrice {
506
+ value
507
+ }
508
+ }
509
+ priceWithTax {
510
+ ... on SinglePrice {
511
+ value
512
+ }
513
+ }
514
+ sku
515
+ }
516
+ }
517
+ }
518
+ `;
519
+ export const UPDATE_PRODUCT_OPTION_GROUP = gql `
520
+ mutation UpdateProductOptionGroup($input: UpdateProductOptionGroupInput!) {
521
+ updateProductOptionGroup(input: $input) {
522
+ ...ProductOptionGroup
523
+ }
524
+ }
525
+ ${PRODUCT_OPTION_GROUP_FRAGMENT}
526
+ `;
527
+ export const UPDATE_PRODUCT_OPTION = gql `
528
+ mutation UpdateProductOption($input: UpdateProductOptionInput!) {
529
+ updateProductOption(input: $input) {
530
+ ...ProductOption
531
+ }
532
+ }
533
+ ${PRODUCT_OPTION_FRAGMENT}
534
+ `;
535
+ export const DELETE_PRODUCT_OPTION = gql `
536
+ mutation DeleteProductOption($id: ID!) {
537
+ deleteProductOption(id: $id) {
538
+ result
539
+ message
540
+ }
541
+ }
542
+ `;
543
+ export const DELETE_PRODUCT_VARIANT = gql `
544
+ mutation DeleteProductVariant($id: ID!) {
545
+ deleteProductVariant(id: $id) {
546
+ result
547
+ message
548
+ }
549
+ }
550
+ `;
551
+ export const GET_PRODUCT_VARIANT_OPTIONS = gql `
552
+ query GetProductVariantOptions($id: ID!) {
553
+ product(id: $id) {
554
+ id
555
+ createdAt
556
+ updatedAt
557
+ name
558
+ optionGroups {
559
+ ...ProductOptionGroup
560
+ options {
561
+ ...ProductOption
562
+ }
563
+ }
564
+ variants {
565
+ id
566
+ createdAt
567
+ updatedAt
568
+ enabled
569
+ name
570
+ sku
571
+ price
572
+ stockOnHand
573
+ enabled
574
+ options {
575
+ id
576
+ createdAt
577
+ updatedAt
578
+ name
579
+ code
580
+ groupId
581
+ }
582
+ }
583
+ }
584
+ }
585
+ ${PRODUCT_OPTION_GROUP_FRAGMENT}
586
+ ${PRODUCT_OPTION_FRAGMENT}
587
+ `;
588
+ export const ASSIGN_PRODUCTS_TO_CHANNEL = gql `
589
+ mutation AssignProductsToChannel($input: AssignProductsToChannelInput!) {
590
+ assignProductsToChannel(input: $input) {
591
+ id
592
+ channels {
593
+ id
594
+ code
595
+ }
596
+ }
597
+ }
598
+ `;
599
+ export const ASSIGN_VARIANTS_TO_CHANNEL = gql `
600
+ mutation AssignVariantsToChannel($input: AssignProductVariantsToChannelInput!) {
601
+ assignProductVariantsToChannel(input: $input) {
602
+ id
603
+ channels {
604
+ id
605
+ code
606
+ }
607
+ }
608
+ }
609
+ `;
610
+ export const REMOVE_PRODUCTS_FROM_CHANNEL = gql `
611
+ mutation RemoveProductsFromChannel($input: RemoveProductsFromChannelInput!) {
612
+ removeProductsFromChannel(input: $input) {
613
+ id
614
+ channels {
615
+ id
616
+ code
617
+ }
618
+ }
619
+ }
620
+ `;
621
+ export const REMOVE_VARIANTS_FROM_CHANNEL = gql `
622
+ mutation RemoveVariantsFromChannel($input: RemoveProductVariantsFromChannelInput!) {
623
+ removeProductVariantsFromChannel(input: $input) {
624
+ id
625
+ channels {
626
+ id
627
+ code
628
+ }
629
+ }
630
+ }
631
+ `;
632
+ export const GET_PRODUCT_VARIANT = gql `
633
+ query GetProductVariant($id: ID!) {
634
+ productVariant(id: $id) {
635
+ id
636
+ name
637
+ sku
638
+ featuredAsset {
639
+ id
640
+ preview
641
+ focalPoint {
642
+ x
643
+ y
644
+ }
645
+ }
646
+ product {
647
+ id
648
+ featuredAsset {
649
+ id
650
+ preview
651
+ focalPoint {
652
+ x
653
+ y
654
+ }
655
+ }
656
+ }
657
+ }
658
+ }
659
+ `;
660
+ export const GET_PRODUCT_VARIANT_LIST_SIMPLE = gql `
661
+ query GetProductVariantListSimple($options: ProductVariantListOptions!, $productId: ID) {
662
+ productVariants(options: $options, productId: $productId) {
663
+ items {
664
+ id
665
+ name
666
+ sku
667
+ featuredAsset {
668
+ id
669
+ preview
670
+ focalPoint {
671
+ x
672
+ y
673
+ }
674
+ }
675
+ product {
676
+ id
677
+ featuredAsset {
678
+ id
679
+ preview
680
+ focalPoint {
681
+ x
682
+ y
683
+ }
684
+ }
685
+ }
686
+ }
687
+ totalItems
688
+ }
689
+ }
690
+ `;
691
+ export const GET_PRODUCT_VARIANT_LIST = gql `
692
+ query GetProductVariantList($options: ProductVariantListOptions!, $productId: ID) {
693
+ productVariants(options: $options, productId: $productId) {
694
+ items {
695
+ ...ProductVariant
696
+ }
697
+ totalItems
698
+ }
699
+ }
700
+ ${PRODUCT_VARIANT_FRAGMENT}
701
+ `;
702
+ export const GET_TAG_LIST = gql `
703
+ query GetTagList($options: TagListOptions) {
704
+ tags(options: $options) {
705
+ items {
706
+ ...Tag
707
+ }
708
+ totalItems
709
+ }
710
+ }
711
+ ${TAG_FRAGMENT}
712
+ `;
713
+ export const GET_TAG = gql `
714
+ query GetTag($id: ID!) {
715
+ tag(id: $id) {
716
+ ...Tag
717
+ }
718
+ }
719
+ ${TAG_FRAGMENT}
720
+ `;
721
+ export const CREATE_TAG = gql `
722
+ mutation CreateTag($input: CreateTagInput!) {
723
+ createTag(input: $input) {
724
+ ...Tag
725
+ }
726
+ }
727
+ ${TAG_FRAGMENT}
728
+ `;
729
+ export const UPDATE_TAG = gql `
730
+ mutation UpdateTag($input: UpdateTagInput!) {
731
+ updateTag(input: $input) {
732
+ ...Tag
733
+ }
734
+ }
735
+ ${TAG_FRAGMENT}
736
+ `;
737
+ export const DELETE_TAG = gql `
738
+ mutation DeleteTag($id: ID!) {
739
+ deleteTag(id: $id) {
740
+ message
741
+ result
742
+ }
743
+ }
744
+ `;
745
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1kZWZpbml0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29yZS9zcmMvZGF0YS9kZWZpbml0aW9ucy9wcm9kdWN0LWRlZmluaXRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUU3RCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsR0FBRyxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FrQmhDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsR0FBRyxDQUFBOzs7OztDQUs5QixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQUcsR0FBRyxDQUFBOzs7Ozs7Ozs7Ozs7OztDQWMvQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsR0FBRyxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Q0FlekMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLEdBQUcsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O01Bc0RyQyx1QkFBdUI7TUFDdkIsY0FBYztDQUNuQixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsR0FBRyxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O01Bd0NwQyw2QkFBNkI7TUFDN0IsY0FBYztDQUNuQixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sMENBQTBDLEdBQUcsR0FBRyxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBc0I1RCxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLEdBQUcsQ0FBQTs7Ozs7Ozs7Ozs7O01BWTNCLHVCQUF1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LFVBQVUsR0FBRyxHQUFHLENBQUE7Ozs7Ozs7Q0FPNUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdxbCB9IGZyb20gJ2Fwb2xsby1hbmd1bGFyJztcclxuXHJcbmltcG9ydCB7IEVSUk9SX1JFU1VMVF9GUkFHTUVOVCB9IGZyb20gJy4vc2hhcmVkLWRlZmluaXRpb25zJztcclxuXHJcbmV4cG9ydCBjb25zdCBBU1NFVF9GUkFHTUVOVCA9IGdxbGBcclxuICAgIGZyYWdtZW50IEFzc2V0IG9uIEFzc2V0IHtcclxuICAgICAgICBpZFxyXG4gICAgICAgIGNyZWF0ZWRBdFxyXG4gICAgICAgIHVwZGF0ZWRBdFxyXG4gICAgICAgIG5hbWVcclxuICAgICAgICBmaWxlU2l6ZVxyXG4gICAgICAgIG1pbWVUeXBlXHJcbiAgICAgICAgdHlwZVxyXG4gICAgICAgIHByZXZpZXdcclxuICAgICAgICBzb3VyY2VcclxuICAgICAgICB3aWR0aFxyXG4gICAgICAgIGhlaWdodFxyXG4gICAgICAgIGZvY2FsUG9pbnQge1xyXG4gICAgICAgICAgICB4XHJcbiAgICAgICAgICAgIHlcclxuICAgICAgICB9XHJcbiAgICB9XHJcbmA7XHJcblxyXG5leHBvcnQgY29uc3QgVEFHX0ZSQUdNRU5UID0gZ3FsYFxyXG4gICAgZnJhZ21lbnQgVGFnIG9uIFRhZyB7XHJcbiAgICAgICAgaWRcclxuICAgICAgICB2YWx1ZVxyXG4gICAgfVxyXG5gO1xyXG5cclxuZXhwb3J0IGNvbnN0IFBST0RVQ1RfT1BUSU9OX0dST1VQX0ZSQUdNRU5UID0gZ3FsYFxyXG4gICAgZnJhZ21lbnQgUHJvZHVjdE9wdGlvbkdyb3VwIG9uIFByb2R1Y3RPcHRpb25Hcm91cCB7XHJcbiAgICAgICAgaWRcclxuICAgICAgICBjcmVhdGVkQXRcclxuICAgICAgICB1cGRhdGVkQXRcclxuICAgICAgICBjb2RlXHJcbiAgICAgICAgbGFuZ3VhZ2VDb2RlXHJcbiAgICAgICAgbmFtZVxyXG4gICAgICAgIHRyYW5zbGF0aW9ucyB7XHJcbiAgICAgICAgICAgIGlkXHJcbiAgICAgICAgICAgIGxhbmd1YWdlQ29kZVxyXG4gICAgICAgICAgICBuYW1lXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5gO1xyXG5cclxuZXhwb3J0IGNvbnN0IFBST0RVQ1RfT1BUSU9OX0ZSQUdNRU5UID0gZ3FsYFxyXG4gICAgZnJhZ21lbnQgUHJvZHVjdE9wdGlvbiBvbiBQcm9kdWN0T3B0aW9uIHtcclxuICAgICAgICBpZFxyXG4gICAgICAgIGNyZWF0ZWRBdFxyXG4gICAgICAgIHVwZGF0ZWRBdFxyXG4gICAgICAgIGNvZGVcclxuICAgICAgICBsYW5ndWFnZUNvZGVcclxuICAgICAgICBuYW1lXHJcbiAgICAgICAgZ3JvdXBJZFxyXG4gICAgICAgIHRyYW5zbGF0aW9ucyB7XHJcbiAgICAgICAgICAgIGlkXHJcbiAgICAgICAgICAgIGxhbmd1YWdlQ29kZVxyXG4gICAgICAgICAgICBuYW1lXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5gO1xyXG5cclxuZXhwb3J0IGNvbnN0IFBST0RVQ1RfVkFSSUFOVF9GUkFHTUVOVCA9IGdxbGBcclxuICAgIGZyYWdtZW50IFByb2R1Y3RWYXJpYW50IG9uIFByb2R1Y3RWYXJpYW50IHtcclxuICAgICAgICBpZFxyXG4gICAgICAgIGNyZWF0ZWRBdFxyXG4gICAgICAgIHVwZGF0ZWRBdFxyXG4gICAgICAgIGVuYWJsZWRcclxuICAgICAgICBsYW5ndWFnZUNvZGVcclxuICAgICAgICBuYW1lXHJcbiAgICAgICAgcHJpY2VcclxuICAgICAgICBjdXJyZW5jeUNvZGVcclxuICAgICAgICBwcmljZVdpdGhUYXhcclxuICAgICAgICBzdG9ja09uSGFuZFxyXG4gICAgICAgIHN0b2NrQWxsb2NhdGVkXHJcbiAgICAgICAgdHJhY2tJbnZlbnRvcnlcclxuICAgICAgICBvdXRPZlN0b2NrVGhyZXNob2xkXHJcbiAgICAgICAgdXNlR2xvYmFsT3V0T2ZTdG9ja1RocmVzaG9sZFxyXG4gICAgICAgIHRheFJhdGVBcHBsaWVkIHtcclxuICAgICAgICAgICAgaWRcclxuICAgICAgICAgICAgbmFtZVxyXG4gICAgICAgICAgICB2YWx1ZVxyXG4gICAgICAgIH1cclxuICAgICAgICB0YXhDYXRlZ29yeSB7XHJcbiAgICAgICAgICAgIGlkXHJcbiAgICAgICAgICAgIG5hbWVcclxuICAgICAgICB9XHJcbiAgICAgICAgc2t1XHJcbiAgICAgICAgb3B0aW9ucyB7XHJcbiAgICAgICAgICAgIC4uLlByb2R1Y3RPcHRpb25cclxuICAgICAgICB9XHJcbiAgICAgICAgZmFjZXRWYWx1ZXMge1xyXG4gICAgICAgICAgICBpZFxyXG4gICAgICAgICAgICBjb2RlXHJcbiAgICAgICAgICAgIG5hbWVcclxuICAgICAgICAgICAgZmFjZXQge1xyXG4gICAgICAgICAgICAgICAgaWRcclxuICAgICAgICAgICAgICAgIG5hbWVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBmZWF0dXJlZEFzc2V0IHtcclxuICAgICAgICAgICAgLi4uQXNzZXRcclxuICAgICAgICB9XHJcbiAgICAgICAgYXNzZXRzIHtcclxuICAgICAgICAgICAgLi4uQXNzZXRcclxuICAgICAgICB9XHJcbiAgICAgICAgdHJhbnNsYXRpb25zIHtcclxuICAgICAgICAgICAgaWRcclxuICAgICAgICAgICAgbGFuZ3VhZ2VDb2RlXHJcbiAgICAgICAgICAgIG5hbWVcclxuICAgICAgICB9XHJcbiAgICAgICAgY2hhbm5lbHMge1xyXG4gICAgICAgICAgICBpZFxyXG4gICAgICAgICAgICBjb2RlXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgJHtQUk9EVUNUX09QVElPTl9GUkFHTUVOVH1cclxuICAgICR7QVNTRVRfRlJBR01FTlR9XHJcbmA7XHJcblxyXG5leHBvcnQgY29uc3QgUFJPRFVDVF9ERVRBSUxfRlJBR01FTlQgPSBncWxgXHJcbiAgICBmcmFnbWVudCBQcm9kdWN0RGV0YWlsIG9uIFByb2R1Y3Qge1xyXG4gICAgICAgIGlkXHJcbiAgICAgICAgY3JlYXRlZEF0XHJcbiAgICAgICAgdXBkYXRlZEF0XHJcbiAgICAgICAgZW5hYmxlZFxyXG4gICAgICAgIGxhbmd1YWdlQ29kZVxyXG4gICAgICAgIG5hbWVcclxuICAgICAgICBzbHVnXHJcbiAgICAgICAgZGVzY3JpcHRpb25cclxuICAgICAgICBmZWF0dXJlZEFzc2V0IHtcclxuICAgICAgICAgICAgLi4uQXNzZXRcclxuICAgICAgICB9XHJcbiAgICAgICAgYXNzZXRzIHtcclxuICAgICAgICAgICAgLi4uQXNzZXRcclxuICAgICAgICB9XHJcbiAgICAgICAgdHJhbnNsYXRpb25zIHtcclxuICAgICAgICAgICAgaWRcclxuICAgICAgICAgICAgbGFuZ3VhZ2VDb2RlXHJcbiAgICAgICAgICAgIG5hbWVcclxuICAgICAgICAgICAgc2x1Z1xyXG4gICAgICAgICAgICBkZXNjcmlwdGlvblxyXG4gICAgICAgIH1cclxuICAgICAgICBvcHRpb25Hcm91cHMge1xyXG4gICAgICAgICAgICAuLi5Qcm9kdWN0T3B0aW9uR3JvdXBcclxuICAgICAgICB9XHJcbiAgICAgICAgZmFjZXRWYWx1ZXMge1xyXG4gICAgICAgICAgICBpZFxyXG4gICAgICAgICAgICBjb2RlXHJcbiAgICAgICAgICAgIG5hbWVcclxuICAgICAgICAgICAgZmFjZXQge1xyXG4gICAgICAgICAgICAgICAgaWRcclxuICAgICAgICAgICAgICAgIG5hbWVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBjaGFubmVscyB7XHJcbiAgICAgICAgICAgIGlkXHJcbiAgICAgICAgICAgIGNvZGVcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAke1BST0RVQ1RfT1BUSU9OX0dST1VQX0ZSQUdNRU5UfVxyXG4gICAgJHtBU1NFVF9GUkFHTUVOVH1cclxuYDtcclxuXHJcbmV4cG9ydCBjb25zdCBQUk9EVUNUX09QVElPTl9HUk9VUF9XSVRIX09QVElPTlNfRlJBR01FTlQgPSBncWxgXHJcbiAgICBmcmFnbWVudCBQcm9kdWN0T3B0aW9uR3JvdXBXaXRoT3B0aW9ucyBvbiBQcm9kdWN0T3B0aW9uR3JvdXAge1xyXG4gICAgICAgIGlkXHJcbiAgICAgICAgY3JlYXRlZEF0XHJcbiAgICAgICAgdXBkYXRlZEF0XHJcbiAgICAgICAgbGFuZ3VhZ2VDb2RlXHJcbiAgICAgICAgY29kZVxyXG4gICAgICAgIG5hbWVcclxuICAgICAgICB0cmFuc2xhdGlvbnMge1xyXG4gICAgICAgICAgICBpZFxyXG4gICAgICAgICAgICBuYW1lXHJcbiAgICAgICAgfVxyXG4gICAgICAgIG9wdGlvbnMge1xyXG4gICAgICAgICAgICBpZFxyXG4gICAgICAgICAgICBsYW5ndWFnZUNvZGVcclxuICAgICAgICAgICAgbmFtZVxyXG4gICAgICAgICAgICBjb2RlXHJcbiAgICAgICAgICAgIHRyYW5zbGF0aW9ucyB7XHJcbiAgICAgICAgICAgICAgICBuYW1lXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbmA7XHJcblxyXG5leHBvcnQgY29uc3QgVVBEQVRFX1BST0RVQ1QgPSBncWxgXHJcbiAgICBtdXRhdGlvbiBVcGRhdGVQcm9kdWN0KCRpbnB1dDogVXBkYXRlUHJvZHVjdElucHV0ISwgJHZhcmlhbnRMaXN0T3B0aW9uczogUHJvZHVjdFZhcmlhbnRMaXN0T3B0aW9ucykge1xyXG4gICAgICAgIHVwZGF0ZVByb2R1Y3QoaW5wdXQ6ICRpbnB1dCkge1xyXG4gICAgICAgICAgICAuLi5Qcm9kdWN0RGV0YWlsXHJcbiAgICAgICAgICAgIHZhcmlhbnRMaXN0KG9wdGlvbnM6ICR2YXJpYW50TGlzdE9wdGlvbnMpIHtcclxuICAgICAgICAgICAgICAgIGl0ZW1zIHtcclxuICAgICAgICAgICAgICAgICAgICAuLi5Qcm9kdWN0VmFyaWFudFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdG90YWxJdGVtc1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgJHtQUk9EVUNUX0RFVEFJTF9GUkFHTUVOVH1cclxuICAgICR7UFJPRFVDVF9WQVJJQU5UX0ZSQUdNRU5UfVxyXG5gO1xyXG5cclxuZXhwb3J0IGNvbnN0IENSRUFURV9QUk9EVUNUID0gZ3FsYFxyXG4gICAgbXV0YXRpb24gQ3JlYXRlUHJvZHVjdCgkaW5wdXQ6IENyZWF0ZVByb2R1Y3RJbnB1dCEsICR2YXJpYW50TGlzdE9wdGlvbnM6IFByb2R1Y3RWYXJpYW50TGlzdE9wdGlvbnMpIHtcclxuICAgICAgICBjcmVhdGVQcm9kdWN0KGlucHV0OiAkaW5wdXQpIHtcclxuICAgICAgICAgICAgLi4uUHJvZHVjdERldGFpbFxyXG4gICAgICAgICAgICB2YXJpYW50TGlzdChvcHRpb25zOiAkdmFyaWFudExpc3RPcHRpb25zKSB7XHJcbiAgICAgICAgICAgICAgICBpdGVtcyB7XHJcbiAgICAgICAgICAgICAgICAgICAgLi4uUHJvZHVjdFZhcmlhbnRcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRvdGFsSXRlbXNcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgICR7UFJPRFVDVF9ERVRBSUxfRlJBR01FTlR9XHJcbiAgICAke1BST0RVQ1RfVkFSSUFOVF9GUkFHTUVOVH1cclxuYDtcclxuXHJcbmV4cG9ydCBjb25zdCBERUxFVEVfUFJPRFVDVCA9IGdxbGBcclxuICAgIG11dGF0aW9uIERlbGV0ZVByb2R1Y3QoJGlkOiBJRCEpIHtcclxuICAgICAgICBkZWxldGVQcm9kdWN0KGlkOiAkaWQpIHtcclxuICAgICAgICAgICAgcmVzdWx0XHJcbiAgICAgICAgICAgIG1lc3NhZ2VcclxuICAgICAgICB9XHJcbiAgICB9XHJcbmA7XHJcblxyXG5leHBvcnQgY29uc3QgQ1JFQVRFX1BST0RVQ1RfVkFSSUFOVFMgPSBncWxgXHJcbiAgICBtdXRhdGlvbiBDcmVhdGVQcm9kdWN0VmFyaWFudHMoJGlucHV0OiBbQ3JlYXRlUHJvZHVjdFZhcmlhbnRJbnB1dCFdISkge1xyXG4gICAgICAgIGNyZWF0ZVByb2R1Y3RWYXJpYW50cyhpbnB1dDogJGlucHV0KSB7XHJcbiAgICAgICAgICAgIC4uLlByb2R1Y3RWYXJpYW50XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgJHtQUk9EVUNUX1ZBUklBTlRfRlJBR01FTlR9XHJcbmA7XHJcblxyXG5leHBvcnQgY29uc3QgVVBEQVRFX1BST0RVQ1RfVkFSSUFOVFMgPSBncWxgXHJcbiAgICBtdXRhdGlvbiBVcGRhdGVQcm9kdWN0VmFyaWFudHMoJGlucHV0OiBbVXBkYXRlUHJvZHVjdFZhcmlhbnRJbnB1dCFdISkge1xyXG4gICAgICAgIHVwZGF0ZVByb2R1Y3RWYXJpYW50cyhpbnB1dDogJGlucHV0KSB7XHJcbiAgICAgICAgICAgIC4uLlByb2R1Y3RWYXJpYW50XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgJHtQUk9EVUNUX1ZBUklBTlRfRlJBR01FTlR9XHJcbmA7XHJcblxyXG5leHBvcnQgY29uc3QgQ1JFQVRFX1BST0RVQ1RfT1BUSU9OX0dST1VQID0gZ3FsYFxyXG4gICAgbXV0YXRpb24gQ3JlYXRlUHJvZHVjdE9wdGlvbkdyb3VwKCRpbnB1dDogQ3JlYXRlUHJvZHVjdE9wdGlvbkdyb3VwSW5wdXQhKSB7XHJcbiAgICAgICAgY3JlYXRlUHJvZHVjdE9wdGlvbkdyb3VwKGlucHV0OiAkaW5wdXQpIHtcclxuICAgICAgICAgICAgLi4uUHJvZHVjdE9wdGlvbkdyb3VwV2l0aE9wdGlvbnNcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAke1BST0RVQ1RfT1BUSU9OX0dST1VQX1dJVEhfT1BUSU9OU19GUkFHTUVOVH1cclxuYDtcclxuXHJcbmV4cG9ydCBjb25zdCBHRVRfUFJPRFVDVF9PUFRJT05fR1JPVVAgPSBncWxgXHJcbiAgICBxdWVyeSBHZXRQcm9kdWN0T3B0aW9uR3JvdXAoJGlkOiBJRCEpIHtcclxuICAgICAgICBwcm9kdWN0T3B0aW9uR3JvdXAoaWQ6ICRpZCkge1xyXG4gICAgICAgICAgICAuLi5Qcm9kdWN0T3B0aW9uR3JvdXBXaXRoT3B0aW9uc1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgICR7UFJPRFVDVF9PUFRJT05fR1JPVVBfV0lUSF9PUFRJT05TX0ZSQUdNRU5UfVxyXG5gO1xyXG5cclxuZXhwb3J0IGNvbnN0IEFERF9PUFRJT05fVE9fR1JPVVAgPSBncWxgXHJcbiAgICBtdXRhdGlvbiBBZGRPcHRpb25Ub0dyb3VwKCRpbnB1dDogQ3JlYXRlUHJvZHVjdE9wdGlvbklucHV0ISkge1xyXG4gICAgICAgIGNyZWF0ZVByb2R1Y3RPcHRpb24oaW5wdXQ6ICRpbnB1dCkge1xyXG4gICAgICAgICAgICBpZFxyXG4gICAgICAgICAgICBjcmVhdGVkQXRcclxuICAgICAgICAgICAgdXBkYXRlZEF0XHJcbiAgICAgICAgICAgIG5hbWVcclxuICAgICAgICAgICAgY29kZVxyXG4gICAgICAgICAgICBncm91cElkXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5gO1xyXG5cclxuZXhwb3J0IGNvbnN0IEFERF9PUFRJT05fR1JPVVBfVE9fUFJPRFVDVCA9IGdxbGBcclxuICAgIG11dGF0aW9uIEFkZE9wdGlvbkdyb3VwVG9Qcm9kdWN0KCRwcm9kdWN0SWQ6IElEISwgJG9wdGlvbkdyb3VwSWQ6IElEISkge1xyXG4gICAgICAgIGFkZE9wdGlvbkdyb3VwVG9Qcm9kdWN0KHByb2R1Y3RJZDogJHByb2R1Y3RJZCwgb3B0aW9uR3JvdXBJZDogJG9wdGlvbkdyb3VwSWQpIHtcclxuICAgICAgICAgICAgaWRcclxuICAgICAgICAgICAgY3JlYXRlZEF0XHJcbiAgICAgICAgICAgIHVwZGF0ZWRBdFxyXG4gICAgICAgICAgICBvcHRpb25Hcm91cHMge1xyXG4gICAgICAgICAgICAgICAgaWRcclxuICAgICAgICAgICAgICAgIGNyZWF0ZWRBdFxyXG4gICAgICAgICAgICAgICAgdXBkYXRlZEF0XHJcbiAgICAgICAgICAgICAgICBjb2RlXHJcbiAgICAgICAgICAgICAgICBvcHRpb25zIHtcclxuICAgICAgICAgICAgICAgICAgICBpZFxyXG4gICAgICAgICAgICAgICAgICAgIGNyZWF0ZWRBdFxyXG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZWRBdFxyXG4gICAgICAgICAgICAgICAgICAgIGNvZGVcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuYDtcclxuXHJcbmV4cG9ydCBjb25zdCBSRU1PVkVfT1BUSU9OX0dST1VQX0ZST01fUFJPRFVDVCA9IGdxbGBcclxuICAgIG11dGF0aW9uIFJlbW92ZU9wdGlvbkdyb3VwRnJvbVByb2R1Y3QoJHByb2R1Y3RJZDogSUQhLCAkb3B0aW9uR3JvdXBJZDogSUQhKSB7XHJcbiAgICAgICAgcmVtb3ZlT3B0aW9uR3JvdXBGcm9tUHJvZHVjdChwcm9kdWN0SWQ6ICRwcm9kdWN0SWQsIG9wdGlvbkdyb3VwSWQ6ICRvcHRpb25Hcm91cElkKSB7XHJcbiAgICAgICAgICAgIC4uLiBvbiBQcm9kdWN0IHtcclxuICAgICAgICAgICAgICAgIGlkXHJcbiAgICAgICAgICAgICAgICBjcmVhdGVkQXRcclxuICAgICAgICAgICAgICAgIHVwZGF0ZWRBdFxyXG4gICAgICAgICAgICAgICAgb3B0aW9uR3JvdXBzIHtcclxuICAgICAgICAgICAgICAgICAgICBpZFxyXG4gICAgICAgICAgICAgICAgICAgIGNyZWF0ZWRBdFxyXG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZWRBdFxyXG4gICAgICAgICAgICAgICAgICAgIGNvZGVcclxuICAgICAgICAgICAgICAgICAgICBvcHRpb25zIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlZEF0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZWRBdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC4uLkVycm9yUmVzdWx0XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgJHtFUlJPUl9SRVNVTFRfRlJBR01FTlR9XHJcbmA7XHJcblxyXG5leHBvcnQgY29uc3QgR0VUX1BST0RVQ1RfV0lUSF9WQVJJQU5UUyA9IGdxbGBcclxuICAgIHF1ZXJ5IEdldFByb2R1Y3RXaXRoVmFyaWFudHMoJGlkOiBJRCEsICR2YXJpYW50TGlzdE9wdGlvbnM6IFByb2R1Y3RWYXJpYW50TGlzdE9wdGlvbnMpIHtcclxuICAgICAgICBwcm9kdWN0KGlkOiAkaWQpIHtcclxuICAgICAgICAgICAgLi4uUHJvZHVjdERldGFpbFxyXG4gICAgICAgICAgICB2YXJpYW50TGlzdChvcHRpb25zOiAkdmFyaWFudExpc3RPcHRpb25zKSB7XHJcbiAgICAgICAgICAgICAgICBpdGVtcyB7XHJcbiAgICAgICAgICAgICAgICAgICAgLi4uUHJvZHVjdFZhcmlhbnRcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRvdGFsSXRlbXNcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgICR7UFJPRFVDVF9ERVRBSUxfRlJBR01FTlR9XHJcbiAgICAke1BST0RVQ1RfVkFSSUFOVF9GUkFHTUVOVH1cclxuYDtcclxuXHJcbmV4cG9ydCBjb25zdCBHRVRfUFJPRFVDVF9TSU1QTEUgPSBncWxgXHJcbiAgICBxdWVyeSBHZXRQcm9kdWN0U2ltcGxlKCRpZDogSUQhKSB7XHJcbiAgICAgICAgcHJvZHVjdChpZDogJGlkKSB7XHJcbiAgICAgICAgICAgIGlkXHJcbiAgICAgICAgICAgIG5hbWVcclxuICAgICAgICAgICAgZmVhdHVyZWRBc3NldCB7XHJcbiAgICAgICAgICAgICAgICAuLi5Bc3NldFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgJHtBU1NFVF9GUkFHTUVOVH1cclxuYDtcclxuXHJcbmV4cG9ydCBjb25zdCBHRVRfUFJPRFVDVF9MSVNUID0gZ3FsYFxyXG4gICAgcXVlcnkgR2V0UHJvZHVjdExpc3QoJG9wdGlvbnM6IFByb2R1Y3RMaXN0T3B0aW9ucykge1xyXG4gICAgICAgIHByb2R1Y3RzKG9wdGlvbnM6ICRvcHRpb25zKSB7XHJcbiAgICAgICAgICAgIGl0ZW1zIHtcclxuICAgICAgICAgICAgICAgIGlkXHJcbiAgICAgICAgICAgICAgICBjcmVhdGVkQXRcclxuICAgICAgICAgICAgICAgIHVwZGF0ZWRBdFxyXG4gICAgICAgICAgICAgICAgZW5hYmxlZFxyXG4gICAgICAgICAgICAgICAgbGFuZ3VhZ2VDb2RlXHJcbiAgICAgICAgICAgICAgICBuYW1lXHJcbiAgICAgICAgICAgICAgICBzbHVnXHJcbiAgICAgICAgICAgICAgICBmZWF0dXJlZEFzc2V0IHtcclxuICAgICAgICAgICAgICAgICAgICBpZFxyXG4gICAgICAgICAgICAgICAgICAgIGNyZWF0ZWRBdFxyXG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZWRBdFxyXG4gICAgICAgICAgICAgICAgICAgIHByZXZpZXdcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0b3RhbEl0ZW1zXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5gO1xyXG5cclxuZXhwb3J0IGNvbnN0IEdFVF9QUk9EVUNUX09QVElPTl9HUk9VUFMgPSBncWxgXHJcbiAgICBxdWVyeSBHZXRQcm9kdWN0T3B0aW9uR3JvdXBzKCRmaWx0ZXJUZXJtOiBTdHJpbmcpIHtcclxuICAgICAgICBwcm9kdWN0T3B0aW9uR3JvdXBzKGZpbHRlclRlcm06ICRmaWx0ZXJUZXJtKSB7XHJcbiAgICAgICAgICAgIGlkXHJcbiAgICAgICAgICAgIGNyZWF0ZWRBdFxyXG4gICAgICAgICAgICB1cGRhdGVkQXRcclxuICAgICAgICAgICAgbGFuZ3VhZ2VDb2RlXHJcbiAgICAgICAgICAgIGNvZGVcclxuICAgICAgICAgICAgbmFtZVxyXG4gICAgICAgICAgICBvcHRpb25zIHtcclxuICAgICAgICAgICAgICAgIGlkXHJcbiAgICAgICAgICAgICAgICBjcmVhdGVkQXRcclxuICAgICAgICAgICAgICAgIHVwZGF0ZWRBdFxyXG4gICAgICAgICAgICAgICAgbGFuZ3VhZ2VDb2RlXHJcbiAgICAgICAgICAgICAgICBjb2RlXHJcbiAgICAgICAgICAgICAgICBuYW1lXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbmA7XHJcblxyXG5leHBvcnQgY29uc3QgR0VUX0FTU0VUX0xJU1QgPSBncWxgXHJcbiAgICBxdWVyeSBHZXRBc3NldExpc3QoJG9wdGlvbnM6IEFzc2V0TGlzdE9wdGlvbnMpIHtcclxuICAgICAgICBhc3NldHMob3B0aW9uczogJG9wdGlvbnMpIHtcclxuICAgICAgICAgICAgaXRlbXMge1xyXG4gICAgICAgICAgICAgICAgLi4uQXNzZXRcclxuICAgICAgICAgICAgICAgIHRhZ3Mge1xyXG4gICAgICAgICAgICAgICAgICAgIC4uLlRhZ1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRvdGFsSXRlbXNcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAke0FTU0VUX0ZSQUdNRU5UfVxyXG4gICAgJHtUQUdfRlJBR01FTlR9XHJcbmA7XHJcblxyXG5leHBvcnQgY29uc3QgR0VUX0FTU0VUID0gZ3FsYFxyXG4gICAgcXVlcnkgR2V0QXNzZXQoJGlkOiBJRCEpIHtcclxuICAgICAgICBhc3NldChpZDogJGlkKSB7XHJcbiAgICAgICAgICAgIC4uLkFzc2V0XHJcbiAgICAgICAgICAgIHRhZ3Mge1xyXG4gICAgICAgICAgICAgICAgLi4uVGFnXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAke0FTU0VUX0ZSQUdNRU5UfVxyXG4gICAgJHtUQUdfRlJBR01FTlR9XHJcbmA7XHJcblxyXG5leHBvcnQgY29uc3QgQ1JFQVRFX0FTU0VUUyA9IGdxbGBcclxuICAgIG11dGF0aW9uIENyZWF0ZUFzc2V0cygkaW5wdXQ6IFtDcmVhdGVBc3NldElucHV0IV0hKSB7XHJcbiAgICAgICAgY3JlYXRlQXNzZXRzKGlucHV0OiAkaW5wdXQpIHtcclxuICAgICAgICAgICAgLi4uQXNzZXRcclxuICAgICAgICAgICAgLi4uIG9uIEFzc2V0IHtcclxuICAgICAgICAgICAgICAgIHRhZ3Mge1xyXG4gICAgICAgICAgICAgICAgICAgIC4uLlRhZ1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC4uLiBvbiBFcnJvclJlc3VsdCB7XHJcbiAgICAgICAgICAgICAgICBtZXNzYWdlXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAke0FTU0VUX0ZSQUdNRU5UfVxyXG4gICAgJHtUQUdfRlJBR01FTlR9XHJcbmA7XHJcblxyXG5leHBvcnQgY29uc3QgVVBEQVRFX0FTU0VUID0gZ3FsYFxyXG4gICAgbXV0YXRpb24gVXBkYXRlQXNzZXQoJGlucHV0OiBVcGRhdGVBc3NldElucHV0ISkge1xyXG4gICAgICAgIHVwZGF0ZUFzc2V0KGlucHV0OiAkaW5wdXQpIHtcclxuICAgICAgICAgICAgLi4uQXNzZXRcclxuICAgICAgICAgICAgdGFncyB7XHJcbiAgICAgICAgICAgICAgICAuLi5UYWdcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgICR7QVNTRVRfRlJBR01FTlR9XHJcbiAgICAke1RBR19GUkFHTUVOVH1cclxuYDtcclxuXHJcbmV4cG9ydCBjb25zdCBERUxFVEVfQVNTRVRTID0gZ3FsYFxyXG4gICAgbXV0YXRpb24gRGVsZXRlQXNzZXRzKCRpbnB1dDogRGVsZXRlQXNzZXRzSW5wdXQhKSB7XHJcbiAgICAgICAgZGVsZXRlQXNzZXRzKGlucHV0OiAkaW5wdXQpIHtcclxuICAgICAgICAgICAgcmVzdWx0XHJcbiAgICAgICAgICAgIG1lc3NhZ2VcclxuICAgICAgICB9XHJcbiAgICB9XHJcbmA7XHJcblxyXG5leHBvcnQgY29uc3QgU0VBUkNIX1BST0RVQ1RTID0gZ3FsYFxyXG4gICAgcXVlcnkgU2VhcmNoUHJvZHVjdHMoJGlucHV0OiBTZWFyY2hJbnB1dCEpIHtcclxuICAgICAgICBzZWFyY2goaW5wdXQ6ICRpbnB1dCkge1xyXG4gICAgICAgICAgICB0b3RhbEl0ZW1zXHJcbiAgICAgICAgICAgIGl0ZW1zIHtcclxuICAgICAgICAgICAgICAgIGVuYWJsZWRcclxuICAgICAgICAgICAgICAgIHByb2R1Y3RJZFxyXG4gICAgICAgICAgICAgICAgcHJvZHVjdE5hbWVcclxuICAgICAgICAgICAgICAgIHByb2R1Y3RBc3NldCB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWRcclxuICAgICAgICAgICAgICAgICAgICBwcmV2aWV3XHJcbiAgICAgICAgICAgICAgICAgICAgZm9jYWxQb2ludCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHhcclxuICAgICAgICAgICAgICAgICAgICAgICAgeVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHByb2R1Y3RWYXJpYW50SWRcclxuICAgICAgICAgICAgICAgIHByb2R1Y3RWYXJpYW50TmFtZVxyXG4gICAgICAgICAgICAgICAgcHJvZHVjdFZhcmlhbnRBc3NldCB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWRcclxuICAgICAgICAgICAgICAgICAgICBwcmV2aWV3XHJcbiAgICAgICAgICAgICAgICAgICAgZm9jYWxQb2ludCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHhcclxuICAgICAgICAgICAgICAgICAgICAgICAgeVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHNrdVxyXG4gICAgICAgICAgICAgICAgY2hhbm5lbElkc1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGZhY2V0VmFsdWVzIHtcclxuICAgICAgICAgICAgICAgIGNvdW50XHJcbiAgICAgICAgICAgICAgICBmYWNldFZhbHVlIHtcclxuICAgICAgICAgICAgICAgICAgICBpZFxyXG4gICAgICAgICAgICAgICAgICAgIGNyZWF0ZWRBdFxyXG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZWRBdFxyXG4gICAgICAgICAgICAgICAgICAgIG5hbWVcclxuICAgICAgICAgICAgICAgICAgICBmYWNldCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZWRBdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVkQXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuYDtcclxuXHJcbmV4cG9ydCBjb25zdCBQUk9EVUNUX1NFTEVDVE9SX1NFQVJDSCA9IGdxbGBcclxuICAgIHF1ZXJ5IFByb2R1Y3RTZWxlY3RvclNlYXJjaCgkdGVybTogU3RyaW5nISwgJHRha2U6IEludCEpIHtcclxuICAgICAgICBzZWFyY2goaW5wdXQ6IHsgZ3JvdXBCeVByb2R1Y3Q6IGZhbHNlLCB0ZXJtOiAkdGVybSwgdGFrZTogJHRha2UgfSkge1xyXG4gICAgICAgICAgICBpdGVtcyB7XHJcbiAgICAgICAgICAgICAgICBwcm9kdWN0VmFyaWFudElkXHJcbiAgICAgICAgICAgICAgICBwcm9kdWN0VmFyaWFudE5hbWVcclxuICAgICAgICAgICAgICAgIHByb2R1Y3RBc3NldCB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWRcclxuICAgICAgICAgICAgICAgICAgICBwcmV2aWV3XHJcbiAgICAgICAgICAgICAgICAgICAgZm9jYWxQb2ludCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHhcclxuICAgICAgICAgICAgICAgICAgICAgICAgeVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHByaWNlIHtcclxuICAgICAgICAgICAgICAgICAgICAuLi4gb24gU2luZ2xlUHJpY2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHByaWNlV2l0aFRheCB7XHJcbiAgICAgICAgICAgICAgICAgICAgLi4uIG9uIFNpbmdsZVByaWNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBza3VcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuYDtcclxuXHJcbmV4cG9ydCBjb25zdCBVUERBVEVfUFJPRFVDVF9PUFRJT05fR1JPVVAgPSBncWxgXHJcbiAgICBtdXRhdGlvbiBVcGRhdGVQcm9kdWN0T3B0aW9uR3JvdXAoJGlucHV0OiBVcGRhdGVQcm9kdWN0T3B0aW9uR3JvdXBJbnB1dCEpIHtcclxuICAgICAgICB1cGRhdGVQcm9kdWN0T3B0aW9uR3JvdXAoaW5wdXQ6ICRpbnB1dCkge1xyXG4gICAgICAgICAgICAuLi5Qcm9kdWN0T3B0aW9uR3JvdXBcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAke1BST0RVQ1RfT1BUSU9OX0dST1VQX0ZSQUdNRU5UfVxyXG5gO1xyXG5cclxuZXhwb3J0IGNvbnN0IFVQREFURV9QUk9EVUNUX09QVElPTiA9IGdxbGBcclxuICAgIG11dGF0aW9uIFVwZGF0ZVByb2R1Y3RPcHRpb24oJGlucHV0OiBVcGRhdGVQcm9kdWN0T3B0aW9uSW5wdXQhKSB7XHJcbiAgICAgICAgdXBkYXRlUHJvZHVjdE9wdGlvbihpbnB1dDogJGlucHV0KSB7XHJcbiAgICAgICAgICAgIC4uLlByb2R1Y3RPcHRpb25cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAke1BST0RVQ1RfT1BUSU9OX0ZSQUdNRU5UfVxyXG5gO1xyXG5cclxuZXhwb3J0IGNvbnN0IERFTEVURV9QUk9EVUNUX09QVElPTiA9IGdxbGBcclxuICAgIG11dGF0aW9uIERlbGV0ZVByb2R1Y3RPcHRpb24oJGlkOiBJRCEpIHtcclxuICAgICAgICBkZWxldGVQcm9kdWN0T3B0aW9uKGlkOiAkaWQpIHtcclxuICAgICAgICAgICAgcmVzdWx0XHJcbiAgICAgICAgICAgIG1lc3NhZ2VcclxuICAgICAgICB9XHJcbiAgICB9XHJcbmA7XHJcblxyXG5leHBvcnQgY29uc3QgREVMRVRFX1BST0RVQ1RfVkFSSUFOVCA9IGdxbGBcclxuICAgIG11dGF0aW9uIERlbGV0ZVByb2R1Y3RWYXJpYW50KCRpZDogSUQhKSB7XHJcbiAgICAgICAgZGVsZXRlUHJvZHVjdFZhcmlhbnQoaWQ6ICRpZCkge1xyXG4gICAgICAgICAgICByZXN1bHRcclxuICAgICAgICAgICAgbWVzc2FnZVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuYDtcclxuXHJcbmV4cG9ydCBjb25zdCBHRVRfUFJPRFVDVF9WQVJJQU5UX09QVElPTlMgPSBncWxgXHJcbiAgICBxdWVyeSBHZXRQcm9kdWN0VmFyaWFudE9wdGlvbnMoJGlkOiBJRCEpIHtcclxuICAgICAgICBwcm9kdWN0KGlkOiAkaWQpIHtcclxuICAgICAgICAgICAgaWRcclxuICAgICAgICAgICAgY3JlYXRlZEF0XHJcbiAgICAgICAgICAgIHVwZGF0ZWRBdFxyXG4gICAgICAgICAgICBuYW1lXHJcbiAgICAgICAgICAgIG9wdGlvbkdyb3VwcyB7XHJcbiAgICAgICAgICAgICAgICAuLi5Qcm9kdWN0T3B0aW9uR3JvdXBcclxuICAgICAgICAgICAgICAgIG9wdGlvbnMge1xyXG4gICAgICAgICAgICAgICAgICAgIC4uLlByb2R1Y3RPcHRpb25cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB2YXJpYW50cyB7XHJcbiAgICAgICAgICAgICAgICBpZFxyXG4gICAgICAgICAgICAgICAgY3JlYXRlZEF0XHJcbiAgICAgICAgICAgICAgICB1cGRhdGVkQXRcclxuICAgICAgICAgICAgICAgIGVuYWJsZWRcclxuICAgICAgICAgICAgICAgIG5hbWVcclxuICAgICAgICAgICAgICAgIHNrdVxyXG4gICAgICAgICAgICAgICAgcHJpY2VcclxuICAgICAgICAgICAgICAgIHN0b2NrT25IYW5kXHJcbiAgICAgICAgICAgICAgICBlbmFibGVkXHJcbiAgICAgICAgICAgICAgICBvcHRpb25zIHtcclxuICAgICAgICAgICAgICAgICAgICBpZFxyXG4gICAgICAgICAgICAgICAgICAgIGNyZWF0ZWRBdFxyXG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZWRBdFxyXG4gICAgICAgICAgICAgICAgICAgIG5hbWVcclxuICAgICAgICAgICAgICAgICAgICBjb2RlXHJcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXBJZFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgJHtQUk9EVUNUX09QVElPTl9HUk9VUF9GUkFHTUVOVH1cclxuICAgICR7UFJPRFVDVF9PUFRJT05fRlJBR01FTlR9XHJcbmA7XHJcblxyXG5leHBvcnQgY29uc3QgQVNTSUdOX1BST0RVQ1RTX1RPX0NIQU5ORUwgPSBncWxgXHJcbiAgICBtdXRhdGlvbiBBc3NpZ25Qcm9kdWN0c1RvQ2hhbm5lbCgkaW5wdXQ6IEFzc2lnblByb2R1Y3RzVG9DaGFubmVsSW5wdXQhKSB7XHJcbiAgICAgICAgYXNzaWduUHJvZHVjdHNUb0NoYW5uZWwoaW5wdXQ6ICRpbnB1dCkge1xyXG4gICAgICAgICAgICBpZFxyXG4gICAgICAgICAgICBjaGFubmVscyB7XHJcbiAgICAgICAgICAgICAgICBpZFxyXG4gICAgICAgICAgICAgICAgY29kZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5gO1xyXG5cclxuZXhwb3J0IGNvbnN0IEFTU0lHTl9WQVJJQU5UU19UT19DSEFOTkVMID0gZ3FsYFxyXG4gICAgbXV0YXRpb24gQXNzaWduVmFyaWFudHNUb0NoYW5uZWwoJGlucHV0OiBBc3NpZ25Qcm9kdWN0VmFyaWFudHNUb0NoYW5uZWxJbnB1dCEpIHtcclxuICAgICAgICBhc3NpZ25Qcm9kdWN0VmFyaWFudHNUb0NoYW5uZWwoaW5wdXQ6ICRpbnB1dCkge1xyXG4gICAgICAgICAgICBpZFxyXG4gICAgICAgICAgICBjaGFubmVscyB7XHJcbiAgICAgICAgICAgICAgICBpZFxyXG4gICAgICAgICAgICAgICAgY29kZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5gO1xyXG5cclxuZXhwb3J0IGNvbnN0IFJFTU9WRV9QUk9EVUNUU19GUk9NX0NIQU5ORUwgPSBncWxgXHJcbiAgICBtdXRhdGlvbiBSZW1vdmVQcm9kdWN0c0Zyb21DaGFubmVsKCRpbnB1dDogUmVtb3ZlUHJvZHVjdHNGcm9tQ2hhbm5lbElucHV0ISkge1xyXG4gICAgICAgIHJlbW92ZVByb2R1Y3RzRnJvbUNoYW5uZWwoaW5wdXQ6ICRpbnB1dCkge1xyXG4gICAgICAgICAgICBpZFxyXG4gICAgICAgICAgICBjaGFubmVscyB7XHJcbiAgICAgICAgICAgICAgICBpZFxyXG4gICAgICAgICAgICAgICAgY29kZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5gO1xyXG5cclxuZXhwb3J0IGNvbnN0IFJFTU9WRV9WQVJJQU5UU19GUk9NX0NIQU5ORUwgPSBncWxgXHJcbiAgICBtdXRhdGlvbiBSZW1vdmVWYXJpYW50c0Zyb21DaGFubmVsKCRpbnB1dDogUmVtb3ZlUHJvZHVjdFZhcmlhbnRzRnJvbUNoYW5uZWxJbnB1dCEpIHtcclxuICAgICAgICByZW1vdmVQcm9kdWN0VmFyaWFudHNGcm9tQ2hhbm5lbChpbnB1dDogJGlucHV0KSB7XHJcbiAgICAgICAgICAgIGlkXHJcbiAgICAgICAgICAgIGNoYW5uZWxzIHtcclxuICAgICAgICAgICAgICAgIGlkXHJcbiAgICAgICAgICAgICAgICBjb2RlXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbmA7XHJcblxyXG5leHBvcnQgY29uc3QgR0VUX1BST0RVQ1RfVkFSSUFOVCA9IGdxbGBcclxuICAgIHF1ZXJ5IEdldFByb2R1Y3RWYXJpYW50KCRpZDogSUQhKSB7XHJcbiAgICAgICAgcHJvZHVjdFZhcmlhbnQoaWQ6ICRpZCkge1xyXG4gICAgICAgICAgICBpZFxyXG4gICAgICAgICAgICBuYW1lXHJcbiAgICAgICAgICAgIHNrdVxyXG4gICAgICAgICAgICBmZWF0dXJlZEFzc2V0IHtcclxuICAgICAgICAgICAgICAgIGlkXHJcbiAgICAgICAgICAgICAgICBwcmV2aWV3XHJcbiAgICAgICAgICAgICAgICBmb2NhbFBvaW50IHtcclxuICAgICAgICAgICAgICAgICAgICB4XHJcbiAgICAgICAgICAgICAgICAgICAgeVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHByb2R1Y3Qge1xyXG4gICAgICAgICAgICAgICAgaWRcclxuICAgICAgICAgICAgICAgIGZlYXR1cmVkQXNzZXQge1xyXG4gICAgICAgICAgICAgICAgICAgIGlkXHJcbiAgICAgICAgICAgICAgICAgICAgcHJldmlld1xyXG4gICAgICAgICAgICAgICAgICAgIGZvY2FsUG9pbnQge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB4XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHlcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbmA7XHJcblxyXG5leHBvcnQgY29uc3QgR0VUX1BST0RVQ1RfVkFSSUFOVF9MSVNUX1NJTVBMRSA9IGdxbGBcclxuICAgIHF1ZXJ5IEdldFByb2R1Y3RWYXJpYW50TGlzdFNpbXBsZSgkb3B0aW9uczogUHJvZHVjdFZhcmlhbnRMaXN0T3B0aW9ucyEsICRwcm9kdWN0SWQ6IElEKSB7XHJcbiAgICAgICAgcHJvZHVjdFZhcmlhbnRzKG9wdGlvbnM6ICRvcHRpb25zLCBwcm9kdWN0SWQ6ICRwcm9kdWN0SWQpIHtcclxuICAgICAgICAgICAgaXRlbXMge1xyXG4gICAgICAgICAgICAgICAgaWRcclxuICAgICAgICAgICAgICAgIG5hbWVcclxuICAgICAgICAgICAgICAgIHNrdVxyXG4gICAgICAgICAgICAgICAgZmVhdHVyZWRBc3NldCB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWRcclxuICAgICAgICAgICAgICAgICAgICBwcmV2aWV3XHJcbiAgICAgICAgICAgICAgICAgICAgZm9jYWxQb2ludCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHhcclxuICAgICAgICAgICAgICAgICAgICAgICAgeVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHByb2R1Y3Qge1xyXG4gICAgICAgICAgICAgICAgICAgIGlkXHJcbiAgICAgICAgICAgICAgICAgICAgZmVhdHVyZWRBc3NldCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpZXdcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9jYWxQb2ludCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdG90YWxJdGVtc1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuYDtcclxuXHJcbmV4cG9ydCBjb25zdCBHRVRfUFJPRFVDVF9WQVJJQU5UX0xJU1QgPSBncWxgXHJcbiAgICBxdWVyeSBHZXRQcm9kdWN0VmFyaWFudExpc3QoJG9wdGlvbnM6IFByb2R1Y3RWYXJpYW50TGlzdE9wdGlvbnMhLCAkcHJvZHVjdElkOiBJRCkge1xyXG4gICAgICAgIHByb2R1Y3RWYXJpYW50cyhvcHRpb25zOiAkb3B0aW9ucywgcHJvZHVjdElkOiAkcHJvZHVjdElkKSB7XHJcbiAgICAgICAgICAgIGl0ZW1zIHtcclxuICAgICAgICAgICAgICAgIC4uLlByb2R1Y3RWYXJpYW50XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdG90YWxJdGVtc1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgICR7UFJPRFVDVF9WQVJJQU5UX0ZSQUdNRU5UfVxyXG5gO1xyXG5cclxuZXhwb3J0IGNvbnN0IEdFVF9UQUdfTElTVCA9IGdxbGBcclxuICAgIHF1ZXJ5IEdldFRhZ0xpc3QoJG9wdGlvbnM6IFRhZ0xpc3RPcHRpb25zKSB7XHJcbiAgICAgICAgdGFncyhvcHRpb25zOiAkb3B0aW9ucykge1xyXG4gICAgICAgICAgICBpdGVtcyB7XHJcbiAgICAgICAgICAgICAgICAuLi5UYWdcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0b3RhbEl0ZW1zXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgJHtUQUdfRlJBR01FTlR9XHJcbmA7XHJcblxyXG5leHBvcnQgY29uc3QgR0VUX1RBRyA9IGdxbGBcclxuICAgIHF1ZXJ5IEdldFRhZygkaWQ6IElEISkge1xyXG4gICAgICAgIHRhZyhpZDogJGlkKSB7XHJcbiAgICAgICAgICAgIC4uLlRhZ1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgICR7VEFHX0ZSQUdNRU5UfVxyXG5gO1xyXG5cclxuZXhwb3J0IGNvbnN0IENSRUFURV9UQUcgPSBncWxgXHJcbiAgICBtdXRhdGlvbiBDcmVhdGVUYWcoJGlucHV0OiBDcmVhdGVUYWdJbnB1dCEpIHtcclxuICAgICAgICBjcmVhdGVUYWcoaW5wdXQ6ICRpbnB1dCkge1xyXG4gICAgICAgICAgICAuLi5UYWdcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAke1RBR19GUkFHTUVOVH1cclxuYDtcclxuXHJcbmV4cG9ydCBjb25zdCBVUERBVEVfVEFHID0gZ3FsYFxyXG4gICAgbXV0YXRpb24gVXBkYXRlVGFnKCRpbnB1dDogVXBkYXRlVGFnSW5wdXQhKSB7XHJcbiAgICAgICAgdXBkYXRlVGFnKGlucHV0OiAkaW5wdXQpIHtcclxuICAgICAgICAgICAgLi4uVGFnXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgJHtUQUdfRlJBR01FTlR9XHJcbmA7XHJcblxyXG5leHBvcnQgY29uc3QgREVMRVRFX1RBRyA9IGdxbGBcclxuICAgIG11dGF0aW9uIERlbGV0ZVRhZygkaWQ6IElEISkge1xyXG4gICAgICAgIGRlbGV0ZVRhZyhpZDogJGlkKSB7XHJcbiAgICAgICAgICAgIG1lc3NhZ2VcclxuICAgICAgICAgICAgcmVzdWx0XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5gO1xyXG4iXX0=