@n1xyz/nord-ts 0.7.2 → 0.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.
- package/dist/actions.d.ts +31 -20
- package/dist/client/Nord.d.ts +10 -2
- package/dist/client/NordUser.d.ts +20 -21
- package/dist/gen/nord_pb.d.ts +217 -179
- package/dist/gen/openapi.d.ts +13 -82
- package/dist/index.browser.js +205 -183
- package/dist/index.common.js +208 -186
- package/dist/types.d.ts +7 -8
- package/package.json +1 -1
- package/dist/gen/core_pb.d.ts +0 -120
- package/dist/gen/src/components/rfq/rfq_pb.d.ts +0 -791
package/dist/index.browser.js
CHANGED
|
@@ -25358,6 +25358,8 @@ __export(exports_nord_pb, {
|
|
|
25358
25358
|
RfqTradeActionSchema: () => RfqTradeActionSchema,
|
|
25359
25359
|
RfqPlaceOnlySchema: () => RfqPlaceOnlySchema,
|
|
25360
25360
|
RfqMakersSetSchema: () => RfqMakersSetSchema,
|
|
25361
|
+
RfqFillStatusSchema: () => RfqFillStatusSchema,
|
|
25362
|
+
RfqFillStatus: () => RfqFillStatus,
|
|
25361
25363
|
ReduceOrderLiquidationSchema: () => ReduceOrderLiquidationSchema,
|
|
25362
25364
|
Receipt_WithdrawResultSchema: () => Receipt_WithdrawResultSchema,
|
|
25363
25365
|
Receipt_VaultPlacementReceiptSchema: () => Receipt_VaultPlacementReceiptSchema,
|
|
@@ -25417,11 +25419,13 @@ __export(exports_nord_pb, {
|
|
|
25417
25419
|
Receipt_AccountPlacementReceiptSchema: () => Receipt_AccountPlacementReceiptSchema,
|
|
25418
25420
|
ReceiptSchema: () => ReceiptSchema,
|
|
25419
25421
|
RFQQtyPlaceSchema: () => RFQQtyPlaceSchema,
|
|
25422
|
+
RFQExecutionSchema: () => RFQExecutionSchema,
|
|
25420
25423
|
PythLazerTrustedSignerSchema: () => PythLazerTrustedSignerSchema,
|
|
25421
25424
|
PlacementRoleSchema: () => PlacementRoleSchema,
|
|
25422
25425
|
PlacementRole: () => PlacementRole,
|
|
25423
25426
|
PlaceTypeSchema: () => PlaceTypeSchema,
|
|
25424
25427
|
PlaceRFQResultSchema: () => PlaceRFQResultSchema,
|
|
25428
|
+
PartialFillSchema: () => PartialFillSchema,
|
|
25425
25429
|
OrderLimitSchema: () => OrderLimitSchema,
|
|
25426
25430
|
MarketTypeSchema: () => MarketTypeSchema,
|
|
25427
25431
|
MarketType: () => MarketType,
|
|
@@ -25432,6 +25436,7 @@ __export(exports_nord_pb, {
|
|
|
25432
25436
|
MarketMode: () => MarketMode,
|
|
25433
25437
|
IntentSchema: () => IntentSchema,
|
|
25434
25438
|
Intent: () => Intent,
|
|
25439
|
+
FillTypeSchema: () => FillTypeSchema,
|
|
25435
25440
|
FillRFQResultSchema: () => FillRFQResultSchema,
|
|
25436
25441
|
FillModeSchema: () => FillModeSchema,
|
|
25437
25442
|
FillMode: () => FillMode,
|
|
@@ -25444,14 +25449,11 @@ __export(exports_nord_pb, {
|
|
|
25444
25449
|
CreateRfqMarket_MarginsSchema: () => CreateRfqMarket_MarginsSchema,
|
|
25445
25450
|
CreateRfqMarket_DecimalsSchema: () => CreateRfqMarket_DecimalsSchema,
|
|
25446
25451
|
CreateRfqMarketSchema: () => CreateRfqMarketSchema,
|
|
25447
|
-
AtomicV2Schema: () => AtomicV2Schema,
|
|
25448
25452
|
AtomicV1Schema: () => AtomicV1Schema,
|
|
25449
|
-
AtomicSubactionV2Schema: () => AtomicSubactionV2Schema,
|
|
25450
25453
|
AtomicSubactionSchema: () => AtomicSubactionSchema,
|
|
25451
25454
|
AtomicSubactionKindV1Schema: () => AtomicSubactionKindV1Schema,
|
|
25452
25455
|
AtomicSchema: () => AtomicSchema,
|
|
25453
25456
|
AtomicRemoveTriggerSchema: () => AtomicRemoveTriggerSchema,
|
|
25454
|
-
AtomicPlacementRequestSchema: () => AtomicPlacementRequestSchema,
|
|
25455
25457
|
AtomicEditTriggerSchema: () => AtomicEditTriggerSchema,
|
|
25456
25458
|
AtomicCancelOrderByIdSchema: () => AtomicCancelOrderByIdSchema,
|
|
25457
25459
|
AtomicCancelOrderByClientIdSchema: () => AtomicCancelOrderByClientIdSchema,
|
|
@@ -28741,73 +28743,73 @@ function fileDesc(b64, imports) {
|
|
|
28741
28743
|
}
|
|
28742
28744
|
|
|
28743
28745
|
// src/gen/nord_pb.ts
|
|
28744
|
-
var file_nord = /* @__PURE__ */ fileDesc("Cgpub3JkLnByb3RvEgRub3JkIh4KBFUxMjgSCgoCbG8YASABKAQSCgoCaGkYAiABKAQiiAEKCFJmcVRyYWRlEhsKDnRpbWVvdXRfbWlsbGlzGAEgASgNSACIAQESEQoJbWFya2V0X2lkGAIgASgNEhAKCG9yZGVyX2lkGAMgASgEEg0KBXByaWNlGAQgASgEEhgKEHRpbWVzdGFtcF9taWxsaXMYBSABKANCEQoPX3RpbWVvdXRfbWlsbGlzItQBCgxSZnFQbGFjZU9ubHkSEQoJbWFya2V0X2lkGAcgASgNEhsKDnRpbWVvdXRfbWlsbGlzGAEgASgNSACIAQESHAoPY2xpZW50X29yZGVyX2lkGAIgASgESAGIAQESDQoFcHJpY2UYAyABKAQSGAoEc2lkZRgEIAEoDjIKLm5vcmQuU2lkZRIMCgRiYXNlGAUgASgEEhgKEHRpbWVzdGFtcF9taWxsaXMYBiABKANCEQoPX3RpbWVvdXRfbWlsbGlzQhIKEF9jbGllbnRfb3JkZXJfaWQiIwoMU2V0UmZxTWFrZXJzEhMKC2FjY291bnRfaWRzGAEgAygNIiUKEFNldE1hcmtldE1vZGVSRlESEQoJbWFya2V0X2lkGAEgASgNItMCCg9DcmVhdGVSZnFNYXJrZXQSMAoIZGVjaW1hbHMYASABKAsyHi5ub3JkLkNyZWF0ZVJmcU1hcmtldC5EZWNpbWFscxIuCgdtYXJnaW5zGAIgASgLMh0ubm9yZC5DcmVhdGVSZnFNYXJrZXQuTWFyZ2lucxIuCgdzeW1ib2xzGAMgASgLMh0ubm9yZC5DcmVhdGVSZnFNYXJrZXQuU3ltYm9scxo5CghEZWNpbWFscxIVCg1zaXplX2RlY2ltYWxzGAEgASgNEhYKDnByaWNlX2RlY2ltYWxzGAIgASgNGjwKB01hcmdpbnMSDwoHaW1mX2JwcxgDIAEoDRIPCgdjbWZfYnBzGAQgASgNEg8KB21tZl9icHMYBSABKA0aNQoHU3ltYm9scxITCgt2aWV3X3N5bWJvbBgHIAEoCRIVCg1vcmFjbGVfc3ltYm9sGAggASgJIpQBCg5SZnFUcmFkZUFjdGlvbhIQCghvcmRlcl9pZBgBIAEoBBIRCgltYXJrZXRfaWQYAiABKA0SGAoEc2lkZRgDIAEoDjIKLm5vcmQuU2lkZRIcChRxdW90ZV90aW1lb3V0X21pbGxpcxgEIAEoDRITCgliYXNlX3NpemUYBSABKANIAEIKCghxdWFudGl0eUoECAYQByLbAgoPUmZxVHJhZGVSZWNlaXB0EhAKCG9yZGVyX2lkGAEgASgEEhEKCW1hcmtldF9pZBgCIAEoDRIwCgdzdWNjZXNzGAMgASgLMh0ubm9yZC5SZnFUcmFkZVJlY2VpcHQuU3VjY2Vzc0gAEjYKB2ZhaWx1cmUYBCABKA4yIy5ub3JkLlJmcVRyYWRlUmVjZWlwdC5GYWlsdXJlUmVhc29uSAAaggEKB1N1Y2Nlc3MSEAoIcXVvdGVfaWQYASABKAQSGAoEc2lkZRgCIAEoDjIKLm5vcmQuU2lkZRIYChBmaWxsZWRfYmFzZV9zaXplGAMgASgEEiIKDnF1b3RlX25vdGlvbmFsGAQgASgLMgoubm9yZC5VMTI4Eg0KBXByaWNlGAUgASgEIioKDUZhaWx1cmVSZWFzb24SCwoHVElNRU9VVBAAEgwKCFJFSkVDVEVEEAFCCAoGcmVzdWx0IjoKDlBsYWNlUkZRUmVzdWx0EhAKCG9yZGVyX2lkGAEgASgEEhYKDnRpbWVvdXRfbWlsbGlzGAIgASgNIqMBCg1GaWxsUkZRUmVzdWx0EhAKCG9yZGVyX2lkGAEgASgEEhgKEG1ha2VyX2FjY291bnRfaWQYAiABKA0SGAoQdGFrZXJfYWNjb3VudF9pZBgDIAEoDRIYCgtmaWxsZWRfc2l6ZRgEIAEoBEgAiAEBEhUKCHRyYWRlX2lkGAUgASgESAGIAQFCDgoMX2ZpbGxlZF9zaXplQgsKCV90cmFkZV9pZCIjCgxSZnFNYWtlcnNTZXQSEwoLYWNjb3VudF9pZHMYASADKA0iJgoLUkZRUXR5UGxhY2USFwoDcXR5GAEgASgLMgoubm9yZC5VMTI4Ij0KDUZlZVRpZXJDb25maWcSFQoNbWFrZXJfZmVlX3BwbRgBIAEoDRIVCg10YWtlcl9mZWVfcHBtGAIgASgNIvcBCgZNYXJrZXQSEQoJbWFya2V0X2lkGAEgASgNEhYKDnByaWNlX2RlY2ltYWxzGAIgASgNEhUKDXNpemVfZGVjaW1hbHMYAyABKA0SFQoNYmFzZV90b2tlbl9pZBgEIAEoDRIlCgttYXJrZXRfdHlwZRgFIAEoDjIQLm5vcmQuTWFya2V0VHlwZRIPCgdpbWZfYnBzGAYgASgNEg8KB2NtZl9icHMYByABKA0SDwoHbW1mX2JwcxgIIAEoDRIlCgttYXJrZXRfbW9kZRgJIAEoDjIQLm5vcmQuTWFya2V0TW9kZRITCgt2aWV3X3N5bWJvbBgKIAEoCSJaCgVUb2tlbhIQCgh0b2tlbl9pZBgBIAEoDRIWCg50b2tlbl9kZWNpbWFscxgCIAEoDRISCgp3ZWlnaHRfYnBzGAQgASgNEhMKC3ZpZXdfc3ltYm9sGAUgASgJIrYBCgtWYXVsdEhlYWx0aBIqChFyYXdfYWNjb3VudF92YWx1ZRgBIAEoCzIKLm5vcmQuVTEyOEgAiAEBEisKEnNhZmVfYWNjb3VudF92YWx1ZRgCIAEoCzIKLm5vcmQuVTEyOEgBiAEBEiEKBnN0YXR1cxgDIAEoDjIRLm5vcmQuVmF1bHRTdGF0dXNCFAoSX3Jhd19hY2NvdW50X3ZhbHVlQhUKE19zYWZlX2FjY291bnRfdmFsdWUisAEKC1ZhdWx0Q29uZmlnEh8KC2RlcG9zaXRfY2FwGAEgASgLMgoubm9yZC5VMTI4EiIKGm9wZW5fcG9zaXRpb25fZGlzY291bnRfYnBzGAIgASgNEh8KF2RyYXdkb3duX3Byb3RlY3Rpb25fYnBzGAMgASgNEhsKE2RyYXdkb3duX2ZyZWV6ZV9icHMYBCABKA0SHgoWZXBvY2hfbWluX2R1cmF0aW9uX3NlYxgFIAEoDSLMAgoQVmF1bHRDb25maWdQYXRjaBIkCgtkZXBvc2l0X2NhcBgBIAEoCzIKLm5vcmQuVTEyOEgAiAEBEicKGm9wZW5fcG9zaXRpb25fZGlzY291bnRfYnBzGAIgASgNSAGIAQESJAoXZHJhd2Rvd25fcHJvdGVjdGlvbl9icHMYAyABKA1IAogBARIgChNkcmF3ZG93bl9mcmVlemVfYnBzGAQgASgNSAOIAQESIwoWZXBvY2hfbWluX2R1cmF0aW9uX3NlYxgFIAEoDUgEiAEBQg4KDF9kZXBvc2l0X2NhcEIdChtfb3Blbl9wb3NpdGlvbl9kaXNjb3VudF9icHNCGgoYX2RyYXdkb3duX3Byb3RlY3Rpb25fYnBzQhYKFF9kcmF3ZG93bl9mcmVlemVfYnBzQhkKF19lcG9jaF9taW5fZHVyYXRpb25fc2VjIkgKC0NyZWF0ZVZhdWx0EhYKDm1hbmFnZXJfcHVia2V5GAEgASgMEiEKBmNvbmZpZxgCIAEoCzIRLm5vcmQuVmF1bHRDb25maWciUwoRVXBkYXRlVmF1bHRDb25maWcSEAoIdmF1bHRfaWQYASABKA0SLAoMY29uZmlnX3BhdGNoGAIgASgLMhYubm9yZC5WYXVsdENvbmZpZ1BhdGNoIjsKD1NldFZhdWx0TWFuYWdlchIQCgh2YXVsdF9pZBgBIAEoDRIWCg5tYW5hZ2VyX3B1YmtleRgCIAEoDCI3Cg9WYXVsdFN5bmNFcG9jaHMSEgoKc2Vzc2lvbl9pZBgBIAEoBBIQCgh2YXVsdF9pZBgCIAEoDSJOChFTdGFnZWRBZG1pbkFjdGlvbhIUCgxhZG1pbl9wdWJrZXkYASABKAwSIwoEa2luZBgCIAEoCzIVLm5vcmQuQWRtaW5BY3Rpb25LaW5kIrMECg9BZG1pbkFjdGlvbktpbmQSKQoMY3JlYXRlX3ZhdWx0GAEgASgLMhEubm9yZC5DcmVhdGVWYXVsdEgAEjYKE3VwZGF0ZV92YXVsdF9jb25maWcYAiABKAsyFy5ub3JkLlVwZGF0ZVZhdWx0Q29uZmlnSAASMgoRc2V0X3ZhdWx0X21hbmFnZXIYAyABKAsyFS5ub3JkLlNldFZhdWx0TWFuYWdlckgAEjIKEWNyZWF0ZV9yZnFfbWFya2V0GAQgASgLMhUubm9yZC5DcmVhdGVSZnFNYXJrZXRIABJWCiFzZXRfbWFya2V0X21vZGVfY2xvYl90cmFkaW5nX29ubHkYBSABKAsyKS5ub3JkLkFjdGlvbi5TZXRNYXJrZXRNb2RlQ0xPQlRyYWRpbmdPbmx5SAASNQoTc2V0X21hcmtldF9tb2RlX3JmcRgGIAEoCzIWLm5vcmQuU2V0TWFya2V0TW9kZVJGUUgAElAKHnNldF9tYXJrZXRfbW9kZV9jbG9iX3Bvc3Rfb25seRgHIAEoCzImLm5vcmQuQWN0aW9uLlNldE1hcmtldE1vZGVDTE9CUG9zdE9ubHlIABI+ChRzZXRfbWFya2V0X21vZGVfY2xvYhgIIAEoCzIeLm5vcmQuQWN0aW9uLlNldE1hcmtldE1vZGVDTE9CSAASLAoOc2V0X3JmcV9tYWtlcnMYCSABKAsyEi5ub3JkLlNldFJmcU1ha2Vyc0gAQgYKBGtpbmQiRAoMVmF1bHREZXBvc2l0EhIKCnNlc3Npb25faWQYASABKAQSEAoIdmF1bHRfaWQYAiABKA0SDgoGYW1vdW50GAMgASgEIvUBCg1WYXVsdFdpdGhkcmF3EhIKCnNlc3Npb25faWQYASABKAQSEAoIdmF1bHRfaWQYAiABKA0SLgoHcmVxdWVzdBgDIAEoCzIbLm5vcmQuVmF1bHRXaXRoZHJhdy5SZXF1ZXN0SAASKgoFY2xhaW0YBCABKAsyGS5ub3JkLlZhdWx0V2l0aGRyYXcuQ2xhaW1IABpRCgdSZXF1ZXN0EhgKDnF1b3RlX25vdGlvbmFsGAEgASgESAASIgoMc2hhcmVfYW1vdW50GAIgASgLMgoubm9yZC5VMTI4SABCCAoGYW1vdW50GgcKBUNsYWltQgYKBGtpbmQingEKEkNyZWF0ZVZhdWx0UmVjZWlwdBIQCgh2YXVsdF9pZBgBIAEoDRIYChB2YXVsdF9hY2NvdW50X2lkGAIgASgNEhYKDm1hbmFnZXJfcHVia2V5GAMgASgMEiEKBnN0YXR1cxgEIAEoDjIRLm5vcmQuVmF1bHRTdGF0dXMSIQoGY29uZmlnGAUgASgLMhEubm9yZC5WYXVsdENvbmZpZyJyChhVcGRhdGVWYXVsdENvbmZpZ1JlY2VpcHQSEAoIdmF1bHRfaWQYASABKA0SIQoGY29uZmlnGAIgASgLMhEubm9yZC5WYXVsdENvbmZpZxIhCgZzdGF0dXMYAyABKA4yES5ub3JkLlZhdWx0U3RhdHVzIkIKFlNldFZhdWx0TWFuYWdlclJlY2VpcHQSEAoIdmF1bHRfaWQYASABKA0SFgoObWFuYWdlcl9wdWJrZXkYAiABKAwi4QEKFlZhdWx0U3luY0Vwb2Noc1JlY2VpcHQSEAoIdmF1bHRfaWQYASABKA0SFwoPY2xvc2VkX2Vwb2NoX2lkGAIgASgNEhgKEGNsYWltYWJsZV9hbW91bnQYAyABKAQSIQoGc3RhdHVzGAQgASgOMhEubm9yZC5WYXVsdFN0YXR1cxIhCgZlcG9jaHMYBSABKAsyES5ub3JkLlZhdWx0RXBvY2hzEiUKEWxpdmVfc2hhcmVfc3VwcGx5GAYgASgLMgoubm9yZC5VMTI4EhUKDXF1b3RlX2JhbGFuY2UYByABKAMijwIKE1ZhdWx0RGVwb3NpdFJlY2VpcHQSEAoIdmF1bHRfaWQYASABKA0SFwoPZnJvbV9hY2NvdW50X2lkGAIgASgNEg4KBmFtb3VudBgDIAEoBBIhCg1zaGFyZXNfaXNzdWVkGAQgASgLMgoubm9yZC5VMTI4Eh8KC3VzZXJfc2hhcmVzGAUgASgLMgoubm9yZC5VMTI4EiUKEWxpdmVfc2hhcmVfc3VwcGx5GAYgASgLMgoubm9yZC5VMTI4EiEKBnN0YXR1cxgHIAEoDjIRLm5vcmQuVmF1bHRTdGF0dXMSGAoQdmF1bHRfYWNjb3VudF9pZBgIIAEoDRIVCg1xdW90ZV9iYWxhbmNlGAkgASgDIlUKEVdpdGhkcmF3YWxCdWNrZXRzEhUKDWN1cnJlbnRfZXBvY2gYASABKAQSFgoOcHJldmlvdXNfZXBvY2gYAiABKAQSEQoJY2xhaW1hYmxlGAMgASgEIoUBCgtWYXVsdFBwc1JlZhIQCghlcG9jaF9pZBgBIAEoDRIrChJzYWZlX2FjY291bnRfdmFsdWUYAiABKAsyCi5ub3JkLlUxMjhIAIgBARIgCgxzaGFyZV9zdXBwbHkYAyABKAsyCi5ub3JkLlUxMjhCFQoTX3NhZmVfYWNjb3VudF92YWx1ZSKWAgoLVmF1bHRFcG9jaHMSGAoQY3VycmVudF9lcG9jaF9pZBgBIAEoDRIgChhjdXJyZW50X2Vwb2NoX3N0YXJ0ZWRfYXQYAiABKAMSIgoVcGFpZF90aHJvdWdoX2Vwb2NoX2lkGAMgASgNSACIAQESLAoLd2l0aGRyYXdhbHMYBCABKAsyFy5ub3JkLldpdGhkcmF3YWxCdWNrZXRzEi8KFGxhdGVzdF9lcG9jaF9wcHNfcmVmGAUgASgLMhEubm9yZC5WYXVsdFBwc1JlZhIuChNwcmlvcl9lcG9jaF9wcHNfcmVmGAYgASgLMhEubm9yZC5WYXVsdFBwc1JlZkIYChZfcGFpZF90aHJvdWdoX2Vwb2NoX2lkIo8BCg5WYXVsdFVzZXJTdGF0ZRIaCgZzaGFyZXMYASABKAsyCi5ub3JkLlUxMjgSLAoLd2l0aGRyYXdhbHMYAiABKAsyFy5ub3JkLldpdGhkcmF3YWxCdWNrZXRzEhgKEGN1cnJlbnRfZXBvY2hfaWQYAyABKA0SGQoRcHJldmlvdXNfZXBvY2hfaWQYBCABKA0itgMKFFZhdWx0V2l0aGRyYXdSZWNlaXB0EhAKCHZhdWx0X2lkGAEgASgNEhUKDXRvX2FjY291bnRfaWQYAiABKA0SOQoJcmVxdWVzdGVkGAMgASgLMiQubm9yZC5WYXVsdFdpdGhkcmF3UmVjZWlwdC5SZXF1ZXN0ZWRIABI1CgdjbGFpbWVkGAQgASgLMiIubm9yZC5WYXVsdFdpdGhkcmF3UmVjZWlwdC5DbGFpbWVkSAASLQoPcG9zdF91c2VyX3N0YXRlGAUgASgLMhQubm9yZC5WYXVsdFVzZXJTdGF0ZRIlChFsaXZlX3NoYXJlX3N1cHBseRgGIAEoCzIKLm5vcmQuVTEyOBIhCgZzdGF0dXMYByABKA4yES5ub3JkLlZhdWx0U3RhdHVzEhgKEHZhdWx0X2FjY291bnRfaWQYCCABKA0SFQoNcXVvdGVfYmFsYW5jZRgJIAEoAxo2CglSZXF1ZXN0ZWQSDQoFcXVvdGUYASABKAQSGgoGYnVybmVkGAIgASgLMgoubm9yZC5VMTI4GhkKB0NsYWltZWQSDgoGYW1vdW50GAEgASgEQgYKBGtpbmQiSQoKT3JkZXJMaW1pdBINCgVwcmljZRgGIAEoBBIMCgRzaXplGAcgASgEEh4KCnF1b3RlX3NpemUYCCABKAsyCi5ub3JkLlUxMjgiuQEKCVBsYWNlVHlwZRIYCgRzaWRlGAMgASgOMgoubm9yZC5TaWRlEiEKCWZpbGxfbW9kZRgEIAEoDjIOLm5vcmQuRmlsbE1vZGUSFgoOaXNfcmVkdWNlX29ubHkYBSABKAgSPQoVc2VsZl90cmFkZV9wcmV2ZW50aW9uGAYgASgOMhkubm9yZC5TZWxmVHJhZGVQcmV2ZW50aW9uSACIAQFCGAoWX3NlbGZfdHJhZGVfcHJldmVudGlvbiLJAQoMVHJhZGVPclBsYWNlEhEKCW1hcmtldF9pZBgCIAEoDRIjCgpwbGFjZV90eXBlGAMgASgLMg8ubm9yZC5QbGFjZVR5cGUSHwoFbGltaXQYBiABKAsyEC5ub3JkLk9yZGVyTGltaXQSHAoPY2xpZW50X29yZGVyX2lkGCEgASgESACIAQESIQoIcmVmZXJyZXIYIiABKAsyCi5ub3JkLlUxMjhIAYgBAUISChBfY2xpZW50X29yZGVyX2lkQgsKCV9yZWZlcnJlciIpChVBdG9taWNDYW5jZWxPcmRlckJ5SWQSEAoIb3JkZXJfaWQYAiABKAQiNgobQXRvbWljQ2FuY2VsT3JkZXJCeUNsaWVudElkEhcKD2NsaWVudF9vcmRlcl9pZBgCIAEoBCKGAQoQQXRvbWljQWRkVHJpZ2dlchIkCgd0cmlnZ2VyGAEgASgLMhMubm9yZC5UcmlnZ2VyUmVjb3JkEhwKBmludGVudBgCIAEoDjIMLm5vcmQuSW50ZW50EiEKCHJlZmVycmVyGAMgASgLMgoubm9yZC5VMTI4SACIAQFCCwoJX3JlZmVycmVyIlEKEUF0b21pY0VkaXRUcmlnZ2VyEhIKCnRyaWdnZXJfaWQYASABKAQSKAoLbmV3X3RyaWdnZXIYAiABKAsyEy5ub3JkLlRyaWdnZXJSZWNvcmQiPAoTQXRvbWljUmVtb3ZlVHJpZ2dlchIRCgltYXJrZXRfaWQYASABKA0SEgoKdHJpZ2dlcl9pZBgCIAEoBCJGChZSZWR1Y2VPcmRlckxpcXVpZGF0aW9uEhkKEXRhcmdldF9hY2NvdW50X2lkGAEgASgNEhEKCW1hcmtldF9pZBgCIAEoDSLPAQoVQXRvbWljU3ViYWN0aW9uS2luZFYxEiwKDnRyYWRlX29yX3BsYWNlGAYgASgLMhIubm9yZC5UcmFkZU9yUGxhY2VIABIzCgxjYW5jZWxfb3JkZXIYByABKAsyGy5ub3JkLkF0b21pY0NhbmNlbE9yZGVyQnlJZEgAEkYKGWNhbmNlbF9vcmRlcl9ieV9jbGllbnRfaWQYCCABKAsyIS5ub3JkLkF0b21pY0NhbmNlbE9yZGVyQnlDbGllbnRJZEgAOgIYAUIHCgVpbm5lciKwAQoIQXRvbWljVjESEgoKc2Vzc2lvbl9pZBgBIAEoBBIXCgphY2NvdW50X2lkGAIgASgNSACIAQESHwoSc2VuZGVyX3RyYWNraW5nX2lkGAMgASgESAGIAQESLAoHYWN0aW9ucxgGIAMoCzIbLm5vcmQuQXRvbWljU3ViYWN0aW9uS2luZFYxOgIYAUINCgtfYWNjb3VudF9pZEIVChNfc2VuZGVyX3RyYWNraW5nX2lkIlcKFkF0b21pY1BsYWNlbWVudFJlcXVlc3QSEgoIdmF1bHRfaWQYASABKA1IABIgChZsaXF1aWRhdGlvbl9hY2NvdW50X2lkGAIgASgNSABCBwoFaW5uZXIiqwQKD0F0b21pY1N1YmFjdGlvbhIhChRkZWxlZ2F0b3JfYWNjb3VudF9pZBggIAEoDUgBiAEBEiwKDnRyYWRlX29yX3BsYWNlGAYgASgLMhIubm9yZC5UcmFkZU9yUGxhY2VIABIzCgxjYW5jZWxfb3JkZXIYByABKAsyGy5ub3JkLkF0b21pY0NhbmNlbE9yZGVyQnlJZEgAEkYKGWNhbmNlbF9vcmRlcl9ieV9jbGllbnRfaWQYCCABKAsyIS5ub3JkLkF0b21pY0NhbmNlbE9yZGVyQnlDbGllbnRJZEgAEi0KC2FkZF90cmlnZ2VyGAkgASgLMhYubm9yZC5BdG9taWNBZGRUcmlnZ2VySAASLwoMZWRpdF90cmlnZ2VyGAogASgLMhcubm9yZC5BdG9taWNFZGl0VHJpZ2dlckgAEjMKDnJlbW92ZV90cmlnZ2VyGAsgASgLMhkubm9yZC5BdG9taWNSZW1vdmVUcmlnZ2VySAASQAoYcmVkdWNlX29yZGVyX2xpcXVpZGF0aW9uGAwgASgLMhwubm9yZC5SZWR1Y2VPcmRlckxpcXVpZGF0aW9uSAASLAoOcmZxX3BsYWNlX29ubHkYDSABKAsyEi5ub3JkLlJmcVBsYWNlT25seUgAEiMKCXJmcV90cmFkZRgOIAEoCzIOLm5vcmQuUmZxVHJhZGVIAEIHCgVpbm5lckIXChVfZGVsZWdhdG9yX2FjY291bnRfaWQigQEKEUF0b21pY1N1YmFjdGlvblYyEjQKCXBsYWNlbWVudBgBIAEoCzIcLm5vcmQuQXRvbWljUGxhY2VtZW50UmVxdWVzdEgAiAEBEigKCXN1YmFjdGlvbhgCIAEoCzIVLm5vcmQuQXRvbWljU3ViYWN0aW9uQgwKCl9wbGFjZW1lbnQipAEKBkF0b21pYxISCgpzZXNzaW9uX2lkGAEgASgEEhcKCmFjY291bnRfaWQYAiABKA1IAIgBARIfChJzZW5kZXJfdHJhY2tpbmdfaWQYAyABKARIAYgBARImCgdhY3Rpb25zGAYgAygLMhUubm9yZC5BdG9taWNTdWJhY3Rpb25CDQoLX2FjY291bnRfaWRCFQoTX3NlbmRlcl90cmFja2luZ19pZCKoAQoIQXRvbWljVjISEgoKc2Vzc2lvbl9pZBgBIAEoBBIXCgphY2NvdW50X2lkGAIgASgNSACIAQESHwoSc2VuZGVyX3RyYWNraW5nX2lkGAMgASgESAGIAQESKAoHYWN0aW9ucxgGIAMoCzIXLm5vcmQuQXRvbWljU3ViYWN0aW9uVjJCDQoLX2FjY291bnRfaWRCFQoTX3NlbmRlcl90cmFja2luZ19pZCI8ChZQeXRoTGF6ZXJUcnVzdGVkU2lnbmVyEg4KBnB1YmtleRgBIAEoDBISCgpleHBpcmVzX2F0GAIgASgDIpYBCg1UcmlnZ2VyUmVjb3JkEhUKDXRyaWdnZXJfcHJpY2UYASABKAQSEQoJbWFya2V0X2lkGAIgASgNEiAKBmxpbWl0cxgDIAEoCzIQLm5vcmQuT3JkZXJMaW1pdBIfCgRraW5kGAQgASgOMhEubm9yZC5UcmlnZ2VyS2luZBIYCgRzaWRlGAUgASgOMgoubm9yZC5TaWRlIpsBCgdUcmlnZ2VyEhUKDXRyaWdnZXJfcHJpY2UYASABKAQSHwoEa2luZBgCIAEoDjIRLm5vcmQuVHJpZ2dlcktpbmQSGAoEc2lkZRgDIAEoDjIKLm5vcmQuU2lkZRIgCgZsaW1pdHMYBCABKAsyEC5ub3JkLk9yZGVyTGltaXQSHAoGaW50ZW50GAUgASgOMgwubm9yZC5JbnRlbnQi/zMKBkFjdGlvbhIZChFjdXJyZW50X3RpbWVzdGFtcBgBIAEoAxINCgVub25jZRgCIAEoDRI0Cg5jcmVhdGVfc2Vzc2lvbhgEIAEoCzIaLm5vcmQuQWN0aW9uLkNyZWF0ZVNlc3Npb25IABIwCgxjcmVhdGVfdG9rZW4YBSABKAsyGC5ub3JkLkFjdGlvbi5DcmVhdGVUb2tlbkgAEjIKDWNyZWF0ZV9tYXJrZXQYBiABKAsyGS5ub3JkLkFjdGlvbi5DcmVhdGVNYXJrZXRIABIuCgtwbGFjZV9vcmRlchgHIAEoCzIXLm5vcmQuQWN0aW9uLlBsYWNlT3JkZXJIABI6ChJjYW5jZWxfb3JkZXJfYnlfaWQYCCABKAsyHC5ub3JkLkFjdGlvbi5DYW5jZWxPcmRlckJ5SWRIABInCgdkZXBvc2l0GAkgASgLMhQubm9yZC5BY3Rpb24uRGVwb3NpdEgAEikKCHdpdGhkcmF3GAogASgLMhUubm9yZC5BY3Rpb24uV2l0aGRyYXdIABJMChtweXRoX3NldF93b3JtaG9sZV9ndWFyZGlhbnMYCyABKAsyJS5ub3JkLkFjdGlvbi5QeXRoU2V0V29ybWhvbGVHdWFyZGlhbnNIABI+ChRweXRoX3NldF9zeW1ib2xfZmVlZBgMIAEoCzIeLm5vcmQuQWN0aW9uLlB5dGhTZXRTeW1ib2xGZWVkSAASQgoWcHl0aF9wcmljZV9mZWVkX3VwZGF0ZRgNIAEoCzIgLm5vcmQuQWN0aW9uLlB5dGhQcmljZUZlZWRVcGRhdGVIABI0Cg5yZXZva2Vfc2Vzc2lvbhgPIAEoCzIaLm5vcmQuQWN0aW9uLlJldm9rZVNlc3Npb25IABIjCgVwYXVzZRgQIAEoCzISLm5vcmQuQWN0aW9uLlBhdXNlSAASJwoHdW5wYXVzZRgRIAEoCzIULm5vcmQuQWN0aW9uLlVucGF1c2VIABIpCgh0cmFuc2ZlchgSIAEoCzIVLm5vcmQuQWN0aW9uLlRyYW5zZmVySAASLgoLYWRkX3RyaWdnZXIYICABKAsyFy5ub3JkLkFjdGlvbi5BZGRUcmlnZ2VySAASNAoOcmVtb3ZlX3RyaWdnZXIYISABKAsyGi5ub3JkLkFjdGlvbi5SZW1vdmVUcmlnZ2VySAASJwoJYXRvbWljX3YxGCMgASgLMg4ubm9yZC5BdG9taWNWMUICGAFIABIyCg1mcmVlemVfbWFya2V0GCQgASgLMhkubm9yZC5BY3Rpb24uRnJlZXplTWFya2V0SAASNgoPdW5mcmVlemVfbWFya2V0GCUgASgLMhsubm9yZC5BY3Rpb24uVW5mcmVlemVNYXJrZXRIABIvCgxhZGRfZmVlX3RpZXIYJiABKAsyFy5ub3JkLkFjdGlvbi5BZGRGZWVUaWVySAASNQoPdXBkYXRlX2ZlZV90aWVyGCcgASgLMhoubm9yZC5BY3Rpb24uVXBkYXRlRmVlVGllckgAEj8KFHVwZGF0ZV9hY2NvdW50c190aWVyGCggASgLMh8ubm9yZC5BY3Rpb24uVXBkYXRlQWNjb3VudHNUaWVySAASLAoKdXBkYXRlX2FjbBgpIAEoCzIWLm5vcmQuQWN0aW9uLlVwZGF0ZUFjbEgAEjsKEmZlZV92YXVsdF90cmFuc2ZlchgqIAEoCzIdLm5vcmQuQWN0aW9uLkZlZVZhdWx0VHJhbnNmZXJIABI7ChJ0YWtlX2FsbF9wb3NpdGlvbnMYKyABKAsyHS5ub3JkLkFjdGlvbi5UYWtlQWxsUG9zaXRpb25zSAASRwoZY2FuY2VsX29yZGVyX2J5X2NsaWVudF9pZBgsIAEoCzIiLm5vcmQuQWN0aW9uLkNhbmNlbE9yZGVyQnlDbGllbnRJZEgAEjYKD2V4ZWN1dGVfdHJpZ2dlchgtIAEoCzIbLm5vcmQuQWN0aW9uLkV4ZWN1dGVUcmlnZ2VySAASPwoUc2V0X2JhY2tzdG9wX2FjY291bnQYLiABKAsyHy5ub3JkLkFjdGlvbi5TZXRCYWNrc3RvcEFjY291bnRIABIwCgxlZGl0X3RyaWdnZXIYLyABKAsyGC5ub3JkLkFjdGlvbi5FZGl0VHJpZ2dlckgAEh4KBmF0b21pYxgwIAEoCzIMLm5vcmQuQXRvbWljSAASKAoFYWRtaW4YMSABKAsyFy5ub3JkLlN0YWdlZEFkbWluQWN0aW9uSAASMAoMY2xlYXJfbWFya2V0GDIgASgLMhgubm9yZC5BY3Rpb24uQ2xlYXJNYXJrZXRIABIyChF2YXVsdF9zeW5jX2Vwb2Nocxg1IAEoCzIVLm5vcmQuVmF1bHRTeW5jRXBvY2hzSAASKwoNdmF1bHRfZGVwb3NpdBg2IAEoCzISLm5vcmQuVmF1bHREZXBvc2l0SAASLQoOdmF1bHRfd2l0aGRyYXcYNyABKAsyEy5ub3JkLlZhdWx0V2l0aGRyYXdIABIjCglhdG9taWNfdjIYOCABKAsyDi5ub3JkLkF0b21pY1YySAASUQoecHl0aF9sYXplcl9zZXRfdHJ1c3RlZF9zaWduZXJzGDkgASgLMicubm9yZC5BY3Rpb24uUHl0aExhemVyU2V0VHJ1c3RlZFNpZ25lcnNIABJJChpweXRoX2xhemVyX3NldF9mZWVkX3N5bWJvbBg6IAEoCzIjLm5vcmQuQWN0aW9uLlB5dGhMYXplclNldEZlZWRTeW1ib2xIABJNChxweXRoX2xhemVyX3ByaWNlX2ZlZWRfdXBkYXRlGDsgASgLMiUubm9yZC5BY3Rpb24uUHl0aExhemVyUHJpY2VGZWVkVXBkYXRlSAASNgoPcmVmcmVzaF9zZXNzaW9uGDwgASgLMhsubm9yZC5BY3Rpb24uUmVmcmVzaFNlc3Npb25IABI9ChNzZWxmX3Jldm9rZV9zZXNzaW9uGD0gASgLMh4ubm9yZC5BY3Rpb24uU2VsZlJldm9rZVNlc3Npb25IABrjAQoNQ3JlYXRlU2Vzc2lvbhITCgt1c2VyX3B1YmtleRgBIAEoDBIWCg5zZXNzaW9uX3B1YmtleRgCIAEoDBIYChBleHBpcnlfdGltZXN0YW1wGAMgASgDEkEKEXNpZ25hdHVyZV9mcmFtaW5nGAQgASgOMiEubm9yZC5BY3Rpb24uVXNlclNpZ25hdHVyZUZyYW1pbmdIAIgBARIdChByZWZyZXNoX2RlYWRsaW5lGAUgASgDSAGIAQFCFAoSX3NpZ25hdHVyZV9mcmFtaW5nQhMKEV9yZWZyZXNoX2RlYWRsaW5lGosBCgtDcmVhdGVUb2tlbhIWCg50b2tlbl9kZWNpbWFscxgBIAEoDRISCgp3ZWlnaHRfYnBzGAMgASgNEhMKC3ZpZXdfc3ltYm9sGAQgASgJEhUKDW9yYWNsZV9zeW1ib2wYBSABKAkSEAoIc29sX2FkZHIYBiABKAwSEgoKYWNsX3B1YmtleRgHIAEoDBoxChxTZXRNYXJrZXRNb2RlQ0xPQlRyYWRpbmdPbmx5EhEKCW1hcmtldF9pZBgBIAEoDRouChlTZXRNYXJrZXRNb2RlQ0xPQlBvc3RPbmx5EhEKCW1hcmtldF9pZBgBIAEoDRomChFTZXRNYXJrZXRNb2RlQ0xPQhIRCgltYXJrZXRfaWQYASABKA0a7gEKDENyZWF0ZU1hcmtldBIVCg1zaXplX2RlY2ltYWxzGAEgASgNEhYKDnByaWNlX2RlY2ltYWxzGAIgASgNEg8KB2ltZl9icHMYAyABKA0SDwoHY21mX2JwcxgEIAEoDRIPCgdtbWZfYnBzGAUgASgNEiUKC21hcmtldF90eXBlGAYgASgOMhAubm9yZC5NYXJrZXRUeXBlEhMKC3ZpZXdfc3ltYm9sGAcgASgJEhUKDW9yYWNsZV9zeW1ib2wYCCABKAkSFQoNYmFzZV90b2tlbl9pZBgJIAEoDRISCgphY2xfcHVia2V5GAogASgMGqoECgpQbGFjZU9yZGVyEhIKCnNlc3Npb25faWQYASABKAQSEQoJbWFya2V0X2lkGAIgASgNEhgKBHNpZGUYAyABKA4yCi5ub3JkLlNpZGUSIQoJZmlsbF9tb2RlGAQgASgOMg4ubm9yZC5GaWxsTW9kZRIWCg5pc19yZWR1Y2Vfb25seRgFIAEoCBINCgVwcmljZRgGIAEoBBIMCgRzaXplGAcgASgEEh4KCnF1b3RlX3NpemUYCCABKAsyCi5ub3JkLlUxMjgSIQoUZGVsZWdhdG9yX2FjY291bnRfaWQYICABKA1IAIgBARIcCg9jbGllbnRfb3JkZXJfaWQYISABKARIAYgBARIeChFzZW5kZXJfYWNjb3VudF9pZBgiIAEoDUgCiAEBEh8KEnNlbmRlcl90cmFja2luZ19pZBgjIAEoBEgDiAEBEj0KFXNlbGZfdHJhZGVfcHJldmVudGlvbhgkIAEoDjIZLm5vcmQuU2VsZlRyYWRlUHJldmVudGlvbkgEiAEBEiEKCHJlZmVycmVyGCUgASgLMgoubm9yZC5VMTI4SAWIAQFCFwoVX2RlbGVnYXRvcl9hY2NvdW50X2lkQhIKEF9jbGllbnRfb3JkZXJfaWRCFAoSX3NlbmRlcl9hY2NvdW50X2lkQhUKE19zZW5kZXJfdHJhY2tpbmdfaWRCGAoWX3NlbGZfdHJhZGVfcHJldmVudGlvbkILCglfcmVmZXJyZXIaqQEKD0NhbmNlbE9yZGVyQnlJZBISCgpzZXNzaW9uX2lkGAEgASgEEhAKCG9yZGVyX2lkGAIgASgEEiEKFGRlbGVnYXRvcl9hY2NvdW50X2lkGCAgASgNSACIAQESHgoRc2VuZGVyX2FjY291bnRfaWQYISABKA1IAYgBAUIXChVfZGVsZWdhdG9yX2FjY291bnRfaWRCFAoSX3NlbmRlcl9hY2NvdW50X2lkGnoKFUNhbmNlbE9yZGVyQnlDbGllbnRJZBISCgpzZXNzaW9uX2lkGAEgASgEEhcKD2NsaWVudF9vcmRlcl9pZBgCIAEoBBIeChFzZW5kZXJfYWNjb3VudF9pZBgDIAEoDUgAiAEBQhQKEl9zZW5kZXJfYWNjb3VudF9pZBpvCgdEZXBvc2l0EhQKDGFjdGlvbl9ub25jZRgBIAEoBBISCgp0b2tlbl9hZGRyGAIgASgMEg4KBmFtb3VudBgDIAEoBBITCgt1c2VyX3B1YmtleRgEIAEoDBIVCg1zZW5kZXJfcHVia2V5GAUgASgMGmoKCFdpdGhkcmF3EhAKCHRva2VuX2lkGAEgASgNEhIKCnNlc3Npb25faWQYAiABKAQSDgoGYW1vdW50GAMgASgEEhgKC2Rlc3RfcHVia2V5GAQgASgMSACIAQFCDgoMX2Rlc3RfcHVia2V5Gl0KGFB5dGhTZXRXb3JtaG9sZUd1YXJkaWFucxIaChJndWFyZGlhbl9zZXRfaW5kZXgYASABKA0SEQoJYWRkcmVzc2VzGAIgAygMEhIKCmFjbF9wdWJrZXkYAyABKAwaVQoRUHl0aFNldFN5bWJvbEZlZWQSFQoNb3JhY2xlX3N5bWJvbBgBIAEoCRIVCg1wcmljZV9mZWVkX2lkGAIgASgMEhIKCmFjbF9wdWJrZXkYAyABKAwaLwoTUHl0aFByaWNlRmVlZFVwZGF0ZRIYChByYXdfcHl0aG5ldF9kYXRhGAEgASgMGlIKGFB5dGhMYXplclByaWNlRmVlZFVwZGF0ZRIPCgdwYXlsb2FkGAEgASgMEhEKCXNpZ25hdHVyZRgCIAEoDBISCgpwdWJsaWNfa2V5GAMgASgMGmcKGlB5dGhMYXplclNldFRydXN0ZWRTaWduZXJzEhIKCmFjbF9wdWJrZXkYASABKAwSNQoPdHJ1c3RlZF9zaWduZXJzGAIgAygLMhwubm9yZC5QeXRoTGF6ZXJUcnVzdGVkU2lnbmVyGqsBChZQeXRoTGF6ZXJTZXRGZWVkU3ltYm9sEhIKCmFjbF9wdWJrZXkYASABKAwSQgoFZmVlZHMYAiADKAsyMy5ub3JkLkFjdGlvbi5QeXRoTGF6ZXJTZXRGZWVkU3ltYm9sLkZlZWRTeW1ib2xJbnB1dBo5Cg9GZWVkU3ltYm9sSW5wdXQSDwoHZmVlZF9pZBgBIAEoDRIVCg1vcmFjbGVfc3ltYm9sGAIgASgJGiMKDVJldm9rZVNlc3Npb24SEgoKc2Vzc2lvbl9pZBgBIAEoBBo0Cg5SZWZyZXNoU2Vzc2lvbhISCgpzZXNzaW9uX2lkGAEgASgEEg4KBmV4cGlyeRgCIAEoAxonChFTZWxmUmV2b2tlU2Vzc2lvbhISCgpzZXNzaW9uX2lkGAEgASgEGhsKBVBhdXNlEhIKCmFjbF9wdWJrZXkYASABKAwaHQoHVW5wYXVzZRISCgphY2xfcHVia2V5GAEgASgMGjwKElNldEJhY2tzdG9wQWNjb3VudBISCgphY2xfcHVia2V5GAEgASgMEhIKCmFjY291bnRfaWQYAiABKA0a+QEKCVJlY2lwaWVudBIxCgdzcGVjaWFsGAEgASgLMh4ubm9yZC5BY3Rpb24uUmVjaXBpZW50LlNwZWNpYWxIABItCgVvd25lZBgCIAEoCzIcLm5vcmQuQWN0aW9uLlJlY2lwaWVudC5Pd25lZEgAEjEKB3Vub3duZWQYAyABKAsyHi5ub3JkLkFjdGlvbi5SZWNpcGllbnQuVW5vd25lZEgAGgkKB1NwZWNpYWwaGwoFT3duZWQSEgoKYWNjb3VudF9pZBgBIAEoDRodCgdVbm93bmVkEhIKCmFjY291bnRfaWQYASABKA1CEAoOcmVjaXBpZW50X3R5cGUanwEKCFRyYW5zZmVyEhIKCnNlc3Npb25faWQYASABKAQSFwoPZnJvbV9hY2NvdW50X2lkGAIgASgNEhAKCHRva2VuX2lkGAMgASgNEg4KBmFtb3VudBgEIAEoBBIyCg10b19hY2NvdW50X2lkGAggASgLMhYubm9yZC5BY3Rpb24uUmVjaXBpZW50SACIAQFCEAoOX3RvX2FjY291bnRfaWQaWwoQRmVlVmF1bHRUcmFuc2ZlchISCgphY2xfcHVia2V5GAEgASgMEhEKCXJlY2lwaWVudBgCIAEoDRIQCgh0b2tlbl9pZBgDIAEoDRIOCgZhbW91bnQYBCABKAQavAEKCkFkZFRyaWdnZXISEgoKc2Vzc2lvbl9pZBgBIAEoBBIkCgd0cmlnZ2VyGAIgASgLMhMubm9yZC5UcmlnZ2VyUmVjb3JkEhwKBmludGVudBgDIAEoDjIMLm5vcmQuSW50ZW50EhcKCmFjY291bnRfaWQYCiABKA1IAIgBARIhCghyZWZlcnJlchgLIAEoCzIKLm5vcmQuVTEyOEgBiAEBQg0KC19hY2NvdW50X2lkQgsKCV9yZWZlcnJlchqHAQoLRWRpdFRyaWdnZXISEgoKc2Vzc2lvbl9pZBgBIAEoBBISCgp0cmlnZ2VyX2lkGAIgASgEEigKC25ld190cmlnZ2VyGAMgASgLMhMubm9yZC5UcmlnZ2VyUmVjb3JkEhcKCmFjY291bnRfaWQYCiABKA1IAIgBAUINCgtfYWNjb3VudF9pZBpyCg1SZW1vdmVUcmlnZ2VyEhIKCnNlc3Npb25faWQYASABKAQSEQoJbWFya2V0X2lkGAIgASgNEhIKCnRyaWdnZXJfaWQYAyABKAQSFwoKYWNjb3VudF9pZBgKIAEoDUgAiAEBQg0KC19hY2NvdW50X2lkGkUKCkFkZEZlZVRpZXISEgoKYWNsX3B1YmtleRgBIAEoDBIjCgZjb25maWcYAiABKAsyEy5ub3JkLkZlZVRpZXJDb25maWcaVAoNVXBkYXRlRmVlVGllchIKCgJpZBgBIAEoDRIjCgZjb25maWcYAiABKAsyEy5ub3JkLkZlZVRpZXJDb25maWcSEgoKYWNsX3B1YmtleRgDIAEoDBpLChJVcGRhdGVBY2NvdW50c1RpZXISDwoHdGllcl9pZBgBIAEoDRIQCghhY2NvdW50cxgCIAMoDRISCgphY2xfcHVia2V5GAMgASgMGl8KCVVwZGF0ZUFjbBISCgphY2xfcHVia2V5GAEgASgMEhUKDXRhcmdldF9wdWJrZXkYAiABKAwSEgoKcm9sZXNfbWFzaxgDIAEoDRITCgtyb2xlc192YWx1ZRgEIAEoDRo1CgxGcmVlemVNYXJrZXQSEgoKYWNsX3B1YmtleRgBIAEoDBIRCgltYXJrZXRfaWQYAiABKA0aNwoOVW5mcmVlemVNYXJrZXQSEgoKYWNsX3B1YmtleRgBIAEoDBIRCgltYXJrZXRfaWQYAiABKA0aTQoLQ2xlYXJNYXJrZXQSEgoKYWNsX3B1YmtleRgBIAEoDBIRCgltYXJrZXRfaWQYAiABKA0SFwoPY2xlYXJhbmNlX3ByaWNlGAMgASgEGmEKDkV4ZWN1dGVUcmlnZ2VyEhQKDGV4ZWN1dG9yX3NpZBgBIAEoBBISCgphY2NvdW50X2lkGAIgASgNEhEKCW1hcmtldF9pZBgDIAEoDRISCgp0cmlnZ2VyX2lkGAQgASgEGkEKEFRha2VBbGxQb3NpdGlvbnMSEgoKc2Vzc2lvbl9pZBgBIAEoBBIZChF0YXJnZXRfYWNjb3VudF9pZBgCIAEoDSI3ChRVc2VyU2lnbmF0dXJlRnJhbWluZxIHCgNIRVgQABIWChJTT0xBTkFfVFJBTlNBQ1RJT04QAUIGCgRraW5kIstCCgdSZWNlaXB0EhEKCWFjdGlvbl9pZBgBIAEoBBIaCgNlcnIYICABKA4yCy5ub3JkLkVycm9ySAASQgoVY3JlYXRlX3Nlc3Npb25fcmVzdWx0GCEgASgLMiEubm9yZC5SZWNlaXB0LkNyZWF0ZVNlc3Npb25SZXN1bHRIABI4Cg50cmFkZV9vcl9wbGFjZRgiIAEoCzIeLm5vcmQuUmVjZWlwdC5QbGFjZU9yZGVyUmVzdWx0SAASPgoTY2FuY2VsX29yZGVyX3Jlc3VsdBgjIAEoCzIfLm5vcmQuUmVjZWlwdC5DYW5jZWxPcmRlclJlc3VsdEgAEjUKDmRlcG9zaXRfcmVzdWx0GCQgASgLMhsubm9yZC5SZWNlaXB0LkRlcG9zaXRSZXN1bHRIABI+ChNpbnNlcnRfdG9rZW5fcmVzdWx0GCUgASgLMh8ubm9yZC5SZWNlaXB0Lkluc2VydFRva2VuUmVzdWx0SAASQAoUaW5zZXJ0X21hcmtldF9yZXN1bHQYJiABKAsyIC5ub3JkLlJlY2VpcHQuSW5zZXJ0TWFya2V0UmVzdWx0SAASNwoPd2l0aGRyYXdfcmVzdWx0GCcgASgLMhwubm9yZC5SZWNlaXB0LldpdGhkcmF3UmVzdWx0SAASSQoZb3JhY2xlX3N5bWJvbF9mZWVkX3Jlc3VsdBgoIAEoCzIkLm5vcmQuUmVjZWlwdC5PcmFjbGVTeW1ib2xGZWVkUmVzdWx0SAASQAoUb3JhY2xlX3VwZGF0ZV9yZXN1bHQYKSABKAsyIC5ub3JkLlJlY2VpcHQuT3JhY2xlVXBkYXRlUmVzdWx0SAASSwoadXBkYXRlX2d1YXJkaWFuX3NldF9yZXN1bHQYKiABKAsyJS5ub3JkLlJlY2VpcHQuVXBkYXRlR3VhcmRpYW5TZXRSZXN1bHRIABI3Cg9zZXNzaW9uX3Jldm9rZWQYLCABKAsyHC5ub3JkLlJlY2VpcHQuU2Vzc2lvblJldm9rZWRIABImCgZwYXVzZWQYLSABKAsyFC5ub3JkLlJlY2VpcHQuUGF1c2VkSAASKgoIdW5wYXVzZWQYLiABKAsyFi5ub3JkLlJlY2VpcHQuVW5wYXVzZWRIABIwCgt0cmFuc2ZlcnJlZBgvIAEoCzIZLm5vcmQuUmVjZWlwdC5UcmFuc2ZlcnJlZEgAEjMKDXRyaWdnZXJfYWRkZWQYQCABKAsyGi5ub3JkLlJlY2VpcHQuVHJpZ2dlckFkZGVkSAASNwoPdHJpZ2dlcl9yZW1vdmVkGEEgASgLMhwubm9yZC5SZWNlaXB0LlRyaWdnZXJSZW1vdmVkSAASLAoGYXRvbWljGEMgASgLMhoubm9yZC5SZWNlaXB0LkF0b21pY1Jlc3VsdEgAEkIKFW1hcmtldF9mcmVlemVfdXBkYXRlZBhEIAEoCzIhLm5vcmQuUmVjZWlwdC5NYXJrZXRGcmVlemVVcGRhdGVkSAASNAoOZmVlX3RpZXJfYWRkZWQYRSABKAsyGi5ub3JkLlJlY2VpcHQuRmVlVGllckFkZGVkSAASOAoQZmVlX3RpZXJfdXBkYXRlZBhGIAEoCzIcLm5vcmQuUmVjZWlwdC5GZWVUaWVyVXBkYXRlZEgAEkIKFWFjY291bnRzX3RpZXJfdXBkYXRlZBhHIAEoCzIhLm5vcmQuUmVjZWlwdC5BY2NvdW50c1RpZXJVcGRhdGVkSAASLwoLYWNsX3VwZGF0ZWQYSCABKAsyGC5ub3JkLlJlY2VpcHQuQWNsVXBkYXRlZEgAEkIKFWZlZV92YXVsdF90cmFuc2ZlcnJlZBhJIAEoCzIhLm5vcmQuUmVjZWlwdC5GZWVWYXVsdFRyYW5zZmVycmVkSAASOQoQdHJpZ2dlcl9leGVjdXRlZBhKIAEoCzIdLm5vcmQuUmVjZWlwdC5UcmlnZ2VyRXhlY3V0ZWRIABJJChl0YWtlX2FsbF9wb3NpdGlvbnNfcmVzdWx0GEsgASgLMiQubm9yZC5SZWNlaXB0LlRha2VBbGxQb3NpdGlvbnNSZXN1bHRIABJAChRiYWNrc3RvcF9hY2NvdW50X3NldBhMIAEoCzIgLm5vcmQuUmVjZWlwdC5CYWNrc3RvcEFjY291bnRTZXRIABI1Cg50cmlnZ2VyX2VkaXRlZBhNIAEoCzIbLm5vcmQuUmVjZWlwdC5UcmlnZ2VyRWRpdGVkSAASMQoNdmF1bHRfY3JlYXRlZBhOIAEoCzIYLm5vcmQuQ3JlYXRlVmF1bHRSZWNlaXB0SAASPgoUdmF1bHRfY29uZmlnX3VwZGF0ZWQYTyABKAsyHi5ub3JkLlVwZGF0ZVZhdWx0Q29uZmlnUmVjZWlwdEgAEj0KFXZhdWx0X21hbmFnZXJfdXBkYXRlZBhQIAEoCzIcLm5vcmQuU2V0VmF1bHRNYW5hZ2VyUmVjZWlwdEgAEjsKE3ZhdWx0X2Vwb2Noc19zeW5jZWQYUSABKAsyHC5ub3JkLlZhdWx0U3luY0Vwb2Noc1JlY2VpcHRIABI0Cg92YXVsdF9kZXBvc2l0ZWQYUiABKAsyGS5ub3JkLlZhdWx0RGVwb3NpdFJlY2VpcHRIABI1Cg92YXVsdF93aXRoZHJhd24YUyABKAsyGi5ub3JkLlZhdWx0V2l0aGRyYXdSZWNlaXB0SAASPgoTY2xlYXJfbWFya2V0X3Jlc3VsdBhUIAEoCzIfLm5vcmQuUmVjZWlwdC5DbGVhck1hcmtldFJlc3VsdEgAElQKH3B5dGhfbGF6ZXJfb3JhY2xlX3VwZGF0ZV9yZXN1bHQYVSABKAsyKS5ub3JkLlJlY2VpcHQuUHl0aExhemVyT3JhY2xlVXBkYXRlUmVzdWx0SAASXwolcHl0aF9sYXplcl90cnVzdGVkX3NpZ25lcnNfc2V0X3Jlc3VsdBhWIAEoCzIuLm5vcmQuUmVjZWlwdC5QeXRoTGF6ZXJUcnVzdGVkU2lnbmVyc1NldFJlc3VsdEgAElcKIXB5dGhfbGF6ZXJfZmVlZF9zeW1ib2xfc2V0X3Jlc3VsdBhXIAEoCzIqLm5vcmQuUmVjZWlwdC5QeXRoTGF6ZXJGZWVkU3ltYm9sU2V0UmVzdWx0SAASVQofcmVkdWNlX29yZGVyX2xpcXVpZGF0aW9uX3Jlc3VsdBhYIAEoCzIqLm5vcmQuUmVjZWlwdC5SZWR1Y2VPcmRlckxpcXVpZGF0aW9uUmVzdWx0SAASPgoTbWFya2V0X21vZGVfdXBkYXRlZBhZIAEoCzIfLm5vcmQuUmVjZWlwdC5NYXJrZXRNb2RlVXBkYXRlZEgAEiwKDnJmcV9tYWtlcnNfc2V0GFogASgLMhIubm9yZC5SZnFNYWtlcnNTZXRIABI7ChFzZXNzaW9uX3JlZnJlc2hlZBhbIAEoCzIeLm5vcmQuUmVjZWlwdC5TZXNzaW9uUmVmcmVzaGVkSAASQAoUc2VsZl9zZXNzaW9uX3Jldm9rZWQYXCABKAsyIC5ub3JkLlJlY2VpcHQuU2VsZlNlc3Npb25SZXZva2VkSAAaeAoGUG9zdGVkEhgKBHNpZGUYASABKA4yCi5ub3JkLlNpZGUSEQoJbWFya2V0X2lkGAIgASgNEg0KBXByaWNlGAMgASgEEgwKBHNpemUYBCABKAQSEAoIb3JkZXJfaWQYBSABKAQSEgoKYWNjb3VudF9pZBgGIAEoDRpwCgVUcmFkZRIQCghvcmRlcl9pZBgCIAEoBBINCgVwcmljZRgEIAEoBBIMCgRzaXplGAUgASgEEhIKCmFjY291bnRfaWQYBiABKA0SEQoJbWFrZXJfZmVlGAcgASgEEhEKCXRha2VyX2ZlZRgIIAEoBBptChNDcmVhdGVTZXNzaW9uUmVzdWx0EhIKCnNlc3Npb25faWQYASABKAQSDgoGZXhwaXJ5GAIgASgDEh0KEHJlZnJlc2hfZGVhZGxpbmUYAyABKANIAIgBAUITChFfcmVmcmVzaF9kZWFkbGluZRpMChBDYW5jZWxsZWRUcmlnZ2VyEhIKCmFjY291bnRfaWQYASABKA0SJAoHdHJpZ2dlchgCIAEoCzITLm5vcmQuVHJpZ2dlclJlY29yZBraAQoLT3JkZXJVcGRhdGUSMAoGcmVhc29uGAEgASgOMiAubm9yZC5SZWNlaXB0Lk9yZGVyVXBkYXRlLlJlYXNvbhISCgphY2NvdW50X2lkGAIgASgNEhAKCG9yZGVyX2lkGAMgASgEEhYKDnJlbWFpbmluZ19zaXplGAQgASgEEhYKDmNhbmNlbGxlZF9zaXplGAUgASgEEg0KBXByaWNlGAYgASgEIjQKBlJlYXNvbhIPCgtSRURVQ0VfT05MWRAAEhkKFVNFTEZfVFJBREVfUFJFVkVOVElPThABGvcCChBQbGFjZU9yZGVyUmVzdWx0EikKBnBvc3RlZBgBIAEoCzIULm5vcmQuUmVjZWlwdC5Qb3N0ZWRIAIgBARIiCgVmaWxscxgCIAMoCzITLm5vcmQuUmVjZWlwdC5UcmFkZRIcCg9jbGllbnRfb3JkZXJfaWQYAyABKARIAYgBARIfChJzZW5kZXJfdHJhY2tpbmdfaWQYBCABKARIAogBARI6ChJjYW5jZWxsZWRfdHJpZ2dlcnMYBSADKAsyHi5ub3JkLlJlY2VpcHQuQ2FuY2VsbGVkVHJpZ2dlchIwCg1vcmRlcl91cGRhdGVzGAYgAygLMhkubm9yZC5SZWNlaXB0Lk9yZGVyVXBkYXRlEjEKCXBsYWNlbWVudBgHIAEoCzIeLm5vcmQuUmVjZWlwdC5QbGFjZW1lbnRSZWNlaXB0QgkKB19wb3N0ZWRCEgoQX2NsaWVudF9vcmRlcl9pZEIVChNfc2VuZGVyX3RyYWNraW5nX2lkGnoKHFJlZHVjZU9yZGVyTGlxdWlkYXRpb25SZXN1bHQSNgoOdHJhZGVfb3JfcGxhY2UYASABKAsyHi5ub3JkLlJlY2VpcHQuUGxhY2VPcmRlclJlc3VsdBIiCgZhY3Rpb24YAiABKAsyEi5ub3JkLlRyYWRlT3JQbGFjZRqvAQoQUGxhY2VtZW50UmVjZWlwdBIhCgRyb2xlGAEgASgOMhMubm9yZC5QbGFjZW1lbnRSb2xlEjgKB2FjY291bnQYAiABKAsyJS5ub3JkLlJlY2VpcHQuQWNjb3VudFBsYWNlbWVudFJlY2VpcHRIABI0CgV2YXVsdBgDIAEoCzIjLm5vcmQuUmVjZWlwdC5WYXVsdFBsYWNlbWVudFJlY2VpcHRIAEIICgZ0YXJnZXQaGQoXQWNjb3VudFBsYWNlbWVudFJlY2VpcHQaTAoVVmF1bHRQbGFjZW1lbnRSZWNlaXB0EhAKCHZhdWx0X2lkGAEgASgNEiEKBmhlYWx0aBgCIAEoCzIRLm5vcmQuVmF1bHRIZWFsdGga/gEKD1RyaWdnZXJFeGVjdXRlZBITCgtleGVjdXRvcl9pZBgBIAEoDRISCgphY2NvdW50X2lkGAIgASgNEhEKCW1hcmtldF9pZBgDIAEoDRIeCgd0cmlnZ2VyGAQgASgLMg0ubm9yZC5UcmlnZ2VyEhIKCnRyaWdnZXJfaWQYCCABKAQSMQoHc3VjY2VzcxgFIAEoCzIeLm5vcmQuUmVjZWlwdC5QbGFjZU9yZGVyUmVzdWx0SAASKQoHZmFpbHVyZRgGIAEoDjIWLm5vcmQuVHJpZ2dlckV4ZWNFcnJvckgAEhMKCWNhbmNlbGxlZBgHIAEoCEgAQggKBnN0YXR1cxoyCg5UYWtlQWxsQmFsYW5jZRIQCgh0b2tlbl9pZBgBIAEoDRIOCgZhbW91bnQYAiABKAQadwoPVGFrZUFsbFBvc2l0aW9uEhEKCW1hcmtldF9pZBgBIAEoDRIRCgliYXNlX3NpemUYAiABKAMSGAoQc2V0dGxlbWVudF9wcmljZRgDIAEoBBIkChBiYW5rcnVwdGN5X3F1b3RlGAQgASgLMgoubm9yZC5VMTI4GlMKE1Rha2VBbGxPcmRlclVwZGF0ZXMSEQoJbWFya2V0X2lkGAEgASgNEikKBm9yZGVycxgCIAMoCzIZLm5vcmQuUmVjZWlwdC5PcmRlclVwZGF0ZRraAQoWVGFrZUFsbFBvc2l0aW9uc1Jlc3VsdBIYChB0YWtlcl9hY2NvdW50X2lkGAEgASgNEjQKDnRha2VuX2JhbGFuY2VzGAMgAygLMhwubm9yZC5SZWNlaXB0LlRha2VBbGxCYWxhbmNlEjYKD3Rha2VuX3Bvc2l0aW9ucxgEIAMoCzIdLm5vcmQuUmVjZWlwdC5UYWtlQWxsUG9zaXRpb24SOAoNb3JkZXJfdXBkYXRlcxgFIAMoCzIhLm5vcmQuUmVjZWlwdC5UYWtlQWxsT3JkZXJVcGRhdGVzGnMKGUNsZWFyTWFya2V0Q2FuY2VsbGVkT3JkZXISEgoKYWNjb3VudF9pZBgBIAEoDRIQCghvcmRlcl9pZBgCIAEoBBIcCg9jbGllbnRfb3JkZXJfaWQYAyABKARIAIgBAUISChBfY2xpZW50X29yZGVyX2lkGq0BChlDbGVhck1hcmtldENsb3NlZFBvc2l0aW9uEhIKCmFjY291bnRfaWQYASABKA0SEQoJYmFzZV9zaXplGAIgASgDEhgKEHNldHRsZW1lbnRfcHJpY2UYAyABKAQSGQoFcXVvdGUYBCABKAsyCi5ub3JkLlUxMjgSGQoRdHJhZGluZ19wbmxfZGVsdGEYBSABKAMSGQoRZnVuZGluZ19wbmxfZGVsdGEYBiABKAMaxQEKEUNsZWFyTWFya2V0UmVzdWx0EhEKCW1hcmtldF9pZBgBIAEoDRIXCg9jbGVhcmFuY2VfcHJpY2UYBSABKAQSQQoQY2FuY2VsbGVkX29yZGVycxgDIAMoCzInLm5vcmQuUmVjZWlwdC5DbGVhck1hcmtldENhbmNlbGxlZE9yZGVyEkEKEGNsb3NlZF9wb3NpdGlvbnMYBCADKAsyJy5ub3JkLlJlY2VpcHQuQ2xlYXJNYXJrZXRDbG9zZWRQb3NpdGlvbhqeAQoRQ2FuY2VsT3JkZXJSZXN1bHQSEAoIb3JkZXJfaWQYASABKAQSEgoKYWNjb3VudF9pZBgCIAEoDRIcCg9jbGllbnRfb3JkZXJfaWQYAyABKARIAIgBARIxCglwbGFjZW1lbnQYBCABKAsyHi5ub3JkLlJlY2VpcHQuUGxhY2VtZW50UmVjZWlwdEISChBfY2xpZW50X29yZGVyX2lkGnAKDURlcG9zaXRSZXN1bHQSEAoIdG9rZW5faWQYASABKA0SDgoGYW1vdW50GAIgASgEEhIKCmFjY291bnRfaWQYAyABKA0SFAoMdXNlcl9jcmVhdGVkGAQgASgIEhMKC3VzZXJfcHVia2V5GAUgASgMGkMKEUluc2VydFRva2VuUmVzdWx0EhIKCmNoYWluX2FkZHIYASABKAwSGgoFdG9rZW4YAiABKAsyCy5ub3JkLlRva2VuGjIKEkluc2VydE1hcmtldFJlc3VsdBIcCgZtYXJrZXQYASABKAsyDC5ub3JkLk1hcmtldBp5Cg5XaXRoZHJhd1Jlc3VsdBIQCgh0b2tlbl9pZBgBIAEoDRIOCgZhbW91bnQYAiABKAQSDwoHYmFsYW5jZRgDIAEoBBISCgphY2NvdW50X2lkGAQgASgNEgsKA2ZlZRgFIAEoBBITCgt1c2VyX3B1YmtleRgGIAEoDBpAChZPcmFjbGVTeW1ib2xGZWVkUmVzdWx0EhUKDW9yYWNsZV9zeW1ib2wYASABKAkSDwoHZmVlZF9pZBgCIAEoDBonChJPcmFjbGVVcGRhdGVSZXN1bHQSEQoJdGltZXN0YW1wGAEgASgDGjcKG1B5dGhMYXplck9yYWNsZVVwZGF0ZVJlc3VsdBIYChB0aW1lc3RhbXBfbWlsbGlzGAEgASgEGlkKIFB5dGhMYXplclRydXN0ZWRTaWduZXJzU2V0UmVzdWx0EjUKD3RydXN0ZWRfc2lnbmVycxgBIAMoCzIcLm5vcmQuUHl0aExhemVyVHJ1c3RlZFNpZ25lchqaAQocUHl0aExhemVyRmVlZFN5bWJvbFNldFJlc3VsdBJECgVmZWVkcxgBIAMoCzI1Lm5vcmQuUmVjZWlwdC5QeXRoTGF6ZXJGZWVkU3ltYm9sU2V0UmVzdWx0LkZlZWRTeW1ib2waNAoKRmVlZFN5bWJvbBIPCgdmZWVkX2lkGAEgASgNEhUKDW9yYWNsZV9zeW1ib2wYAiABKAkaSAoXVXBkYXRlR3VhcmRpYW5TZXRSZXN1bHQSGgoSZ3VhcmRpYW5fc2V0X2luZGV4GAEgASgNEhEKCWFkZHJlc3NlcxgCIAMoDBpDCgxQZXJwUG9zaXRpb24SEQoJbWFya2V0X2lkGAEgASgNEhEKCWJhc2Vfc2l6ZRgCIAEoAxINCgVwcmljZRgDIAEoBBoQCg5TZXNzaW9uUmV2b2tlZBoUChJTZWxmU2Vzc2lvblJldm9rZWQaNgoQU2Vzc2lvblJlZnJlc2hlZBISCgpzZXNzaW9uX2lkGAEgASgEEg4KBmV4cGlyeRgCIAEoAxoICgZQYXVzZWQaCgoIVW5wYXVzZWQaKAoSQmFja3N0b3BBY2NvdW50U2V0EhIKCmFjY291bnRfaWQYASABKA0a/AEKCVJlY2lwaWVudBIyCgdzcGVjaWFsGAEgASgLMh8ubm9yZC5SZWNlaXB0LlJlY2lwaWVudC5TcGVjaWFsSAASLgoFb3duZWQYAiABKAsyHS5ub3JkLlJlY2VpcHQuUmVjaXBpZW50Lk93bmVkSAASMgoHdW5vd25lZBgDIAEoCzIfLm5vcmQuUmVjZWlwdC5SZWNpcGllbnQuVW5vd25lZEgAGgkKB1NwZWNpYWwaGwoFT3duZWQSEgoKYWNjb3VudF9pZBgBIAEoDRodCgdVbm93bmVkEhIKCmFjY291bnRfaWQYASABKA1CEAoOcmVjaXBpZW50X3R5cGUaowEKC1RyYW5zZmVycmVkEhcKD2Zyb21fYWNjb3VudF9pZBgBIAEoDRIrCgp0b19hY2NvdW50GAIgASgLMhcubm9yZC5SZWNlaXB0LlJlY2lwaWVudBIQCgh0b2tlbl9pZBgDIAEoDRIOCgZhbW91bnQYBCABKAQSFwoPYWNjb3VudF9jcmVhdGVkGAUgASgIEhMKC3VzZXJfcHVia2V5GAYgASgMGkoKE0ZlZVZhdWx0VHJhbnNmZXJyZWQSEQoJcmVjaXBpZW50GAEgASgNEhAKCHRva2VuX2lkGAIgASgNEg4KBmFtb3VudBgDIAEoBBp6CgxUcmlnZ2VyQWRkZWQSEgoKYWNjb3VudF9pZBgBIAEoDRISCgp0cmlnZ2VyX2lkGAIgASgEEiQKB3RyaWdnZXIYAyABKAsyEy5ub3JkLlRyaWdnZXJSZWNvcmQSHAoGaW50ZW50GAQgASgOMgwubm9yZC5JbnRlbnQafAoOVHJpZ2dlclJlbW92ZWQSEgoKYWNjb3VudF9pZBgBIAEoDRISCgp0cmlnZ2VyX2lkGAIgASgEEiQKB3RyaWdnZXIYAyABKAsyEy5ub3JkLlRyaWdnZXJSZWNvcmQSHAoGaW50ZW50GAQgASgOMgwubm9yZC5JbnRlbnQagAEKDVRyaWdnZXJFZGl0ZWQSEgoKYWNjb3VudF9pZBgBIAEoDRISCgp0cmlnZ2VyX2lkGAIgASgEEicKEHByZXZpb3VzX3RyaWdnZXIYAyABKAsyDS5ub3JkLlRyaWdnZXISHgoHdHJpZ2dlchgEIAEoCzINLm5vcmQuVHJpZ2dlcho4ChNNYXJrZXRGcmVlemVVcGRhdGVkEhEKCW1hcmtldF9pZBgBIAEoDRIOCgZmcm96ZW4YAiABKAgakAEKEU1hcmtldE1vZGVVcGRhdGVkEhEKCW1hcmtldF9pZBgBIAEoDRIlCgttYXJrZXRfbW9kZRgCIAEoDjIQLm5vcmQuTWFya2V0TW9kZRJBChBjYW5jZWxsZWRfb3JkZXJzGAMgAygLMicubm9yZC5SZWNlaXB0LkNsZWFyTWFya2V0Q2FuY2VsbGVkT3JkZXIaPwoMRmVlVGllckFkZGVkEiMKBmNvbmZpZxgBIAEoCzITLm5vcmQuRmVlVGllckNvbmZpZxIKCgJpZBgCIAEoDRpBCg5GZWVUaWVyVXBkYXRlZBIKCgJpZBgBIAEoDRIjCgZjb25maWcYAiABKAsyEy5ub3JkLkZlZVRpZXJDb25maWcaOAoTQWNjb3VudHNUaWVyVXBkYXRlZBIPCgd0aWVyX2lkGAEgASgNEhAKCGFjY291bnRzGAIgAygNGmAKCkFjbFVwZGF0ZWQSEgoKYWNsX3B1YmtleRgBIAEoDBISCgpyb2xlc19tYXNrGAIgASgEEhUKDXRhcmdldF9wdWJrZXkYAyABKAwSEwoLcm9sZXNfdmFsdWUYBCABKAQa7AMKGUF0b21pY1N1YmFjdGlvblJlc3VsdEtpbmQSPAoScGxhY2Vfb3JkZXJfcmVzdWx0GAEgASgLMh4ubm9yZC5SZWNlaXB0LlBsYWNlT3JkZXJSZXN1bHRIABI3CgxjYW5jZWxfb3JkZXIYAiABKAsyHy5ub3JkLlJlY2VpcHQuQ2FuY2VsT3JkZXJSZXN1bHRIABIzCg10cmlnZ2VyX2FkZGVkGAMgASgLMhoubm9yZC5SZWNlaXB0LlRyaWdnZXJBZGRlZEgAEjcKD3RyaWdnZXJfcmVtb3ZlZBgEIAEoCzIcLm5vcmQuUmVjZWlwdC5UcmlnZ2VyUmVtb3ZlZEgAEjUKDnRyaWdnZXJfZWRpdGVkGAUgASgLMhsubm9yZC5SZWNlaXB0LlRyaWdnZXJFZGl0ZWRIABJOChhyZWR1Y2Vfb3JkZXJfbGlxdWlkYXRpb24YBiABKAsyKi5ub3JkLlJlY2VpcHQuUmVkdWNlT3JkZXJMaXF1aWRhdGlvblJlc3VsdEgAEioKCnJmcV9yZXN1bHQYByABKAsyFC5ub3JkLlBsYWNlUkZRUmVzdWx0SAASLgoPcmZxX2ZpbGxfcmVzdWx0GAggASgLMhMubm9yZC5GaWxsUkZRUmVzdWx0SABCBwoFaW5uZXIaSAoMQXRvbWljUmVzdWx0EjgKB3Jlc3VsdHMYASADKAsyJy5ub3JkLlJlY2VpcHQuQXRvbWljU3ViYWN0aW9uUmVzdWx0S2luZEIGCgRraW5kKhgKBFNpZGUSBwoDQVNLEAASBwoDQklEEAEqHwoKTWFya2V0TW9kZRIICgRDTE9CEAASBwoDUkZREAEqYwoMTWFya2V0UmVnaW1lEhgKFE1BUktFVF9SRUdJTUVfTk9STUFMEAASGwoXTUFSS0VUX1JFR0lNRV9QT1NUX09OTFkQARIcChhNQVJLRVRfUkVHSU1FX1RSQURFX09OTFkQAiotCgtUcmlnZ2VyS2luZBINCglTVE9QX0xPU1MQABIPCgtUQUtFX1BST0ZJVBABKiQKBkludGVudBIMCghERUNSRUFTRRAAEgwKCElOQ1JFQVNFEAEqTwoIRmlsbE1vZGUSCQoFTElNSVQQABINCglQT1NUX09OTFkQARIXChNJTU1FRElBVEVfT1JfQ0FOQ0VMEAISEAoMRklMTF9PUl9LSUxMEAMqrgEKDVBsYWNlbWVudFJvbGUSIAocUExBQ0VNRU5UX1JPTEVfQUNDT1VOVF9PV05FUhAAEiAKHFBMQUNFTUVOVF9ST0xFX1ZBVUxUX01BTkFHRVIQARIeChpQTEFDRU1FTlRfUk9MRV9TVVBFUl9BRE1JThACEhoKFlBMQUNFTUVOVF9ST0xFX1RSSUdHRVIQAxIdChlQTEFDRU1FTlRfUk9MRV9MSVFVSURBVE9SEAQqMQoTU2VsZlRyYWRlUHJldmVudGlvbhIICgROT05FEAASEAoMRVhQSVJFX01BS0VSEAEqJgoKTWFya2V0VHlwZRIICgRTUE9UEAASDgoKUEVSUEVUVUFMUxABKn0KEFRyaWdnZXJFeGVjRXJyb3ISDwoLTk9fUE9TSVRJT04QABITCg9QTEFOTklOR19GQUlMRUQQARIOCgpCQU5LUlVQVENZEAISFQoRUklTS19DSEVDS19GQUlMRUQQAxIcChhSRURVQ0VfT05MWV9DSEVDS19GQUlMRUQQBCofCg5TcGVjaWFsQWNjb3VudBINCglGRUVfVkFVTFQQACpdCgtWYXVsdFN0YXR1cxIXChNWQVVMVF9TVEFUVVNfQUNUSVZFEAASHAoYVkFVTFRfU1RBVFVTX0RFUklTS19PTkxZEAESFwoTVkFVTFRfU1RBVFVTX0ZST1pFThACKugpCgVFcnJvchINCglEVVBMSUNBVEUQABIVChFJTlZBTElEX1NJR05BVFVSRRADEhQKEE1BUktFVF9OT1RfRk9VTkQQBBITCg9UT0tFTl9OT1RfRk9VTkQQBRISCg5VU0VSX05PVF9GT1VORBAGEhUKEVNFU1NJT05fTk9UX0ZPVU5EEAcSEwoPT1JERVJfTk9UX0ZPVU5EEAgSEwoPT1JERVJfU0laRV9aRVJPEAkSDgoKQVJJVEhNRVRJQxALEhcKE0FSSVRITUVUSUNfT1ZFUkZMT1cQDBIYChRBUklUSE1FVElDX1VOREVSRkxPVxANEh8KG0FSSVRITUVUSUNfRElWSVNJT05fQllfWkVSTxAOEhoKFktFWV9BTFJFQURZX1JFR0lTVEVSRUQQDxIcChhVUERBVEVfVElNRVNUQU1QX0lOX1BBU1QQERIYChRUT09fTUFOWV9PUEVOX09SREVSUxASEh0KGVdJVEhEUkFXX0FNT1VOVF9UT09fU01BTEwQFRIpCiVTT1VSQ0VfQU5EX1RBUkdFVF9TSE9VTERfTk9UX0JFX0VRVUFMEBgSEgoOREVDT0RFX0ZBSUxVUkUQIBIgChxERUNPREVfRkFJTFVSRV9MRU5HVEhfUFJFRklYECESFgoSREVDT0RFX0ZBSUxVUkVfUkFXECISGQoVREVDT0RFX0ZBSUxVUkVfRE9NQUlOECMSHwobVVBEQVRFX1BVQkxJU0hfVElNRV9JTl9QQVNUECQSCwoHU0VTU0lPThAwEh8KG1NFU1NJT05fUkVGUkVTSF9OT1RfRU5BQkxFRBAxEioKJlNFU1NJT05fUkVGUkVTSF9ERUFETElORV9CRUZPUkVfRVhQSVJZEDISFwoTUFlUSF9GRUVEX05PVF9BRERFRBBdEhUKEVBZVEhfRkVFRF9NSVNTSU5HEF4SGwoXUFlUSF9GRUVEX0FMUkVBRFlfQURERUQQXxIjCh9QWVRIX0dVQVJESUFOX1NFVF9VTklOSVRJQUxJWkVEEGASHQoZUFlUSF9HVUFSRElBTl9TRVRfSU5WQUxJRBBhEiMKH1BZVEhfRkVFRF9ERUNJTUFMU19PVVRfT0ZfUkFOR0UQYhIgChxQWVRIX0ZFRURfUFJJQ0VfT1VUX09GX1JBTkdFEGMSIwofUFlUSF9GRUVEX1ZBUklBTkNFX09VVF9PRl9SQU5HRRBkEjUKMVBZVEhfR1VBUkRJQU5fU0VUX0FORF9QWVRIX1NJR05BVFVSRV9ET19OT1RfTUFUQ0gQZRIcChhJTlZBTElEX1RPS0VOX1BBUkFNRVRFUlMQZhIcChhJTkRFWF9QUklDRV9PVVRfT0ZfUkFOR0UQZxIfChtJTkRFWF9ERUNJTUFMU19PVVRfT0ZfUkFOR0UQaBIZChVJTlZBTElEX1NUQVRFX1ZFUlNJT04QaRITCg9JTlZBTElEX01BUkdJTlMQbBIhCh1NQVJLRVRfREVDSU1BTFNfRVhDRUVEX0xJTUlUUxBtEhMKD1RPT19NQU5ZX1RPS0VOUxBuEggKBFRJRVIQcxIZChVUSUVSX0ZFRV9PVVRfT0ZfUkFOR0UQdBIYChRUSUVSX0lEX09VVF9PRl9SQU5HRRB1EhIKDlRJRVJfTk9UX0ZPVU5EEHYSFAoQRlVORElOR19PVkVSRkxPVxB7EjcKM0NBTl9SRURVQ0VfUE9TSVRJT05fT05MWV9JRl9BTExfT1JERVJTX0FSRV9DQU5DRUxFRBB8EhcKE1VORVhQRUNURURfVE9LRU5fSUQQfxIWChFSRVBFQVRFRF9PUkRFUl9JRBCAARIeChlDTElFTlRfT1JERVJfSURfVE9PX0xBUkdFEIEBEhQKD1RPS0VOX05PVF9SRUFEWRCCARIdChhUT0tFTl9BTFJFQURZX1JFR0lTVEVSRUQQgwESIQocSU1NRURJQVRFX09SREVSX0dPVF9OT19GSUxMUxCFARIZChRGQUlMRURfVE9fRklMTF9MSU1JVBCGARIwCitQT1NUX09OTFlfTVVTVF9OT1RfRklMTF9BTllfT1BQT1NJVEVfT1JERVJTEIcBEgwKB0lOVkFMSUQQiAESEAoLTUFJTlRFTkFOQ0UQiQESGgoVTUlOSU1VTV9TSVpFX0RFQ0lNQUxTEIoBEjIKLVBBUkFNRVRFUlNfV0lMTF9DUkVBVEVfTk9OX09QRVJBVElPTkFMX01BUktFVBCLARIiCh1PTkxZX0lNTUVESUFURV9PUkRFUlNfQUxMT1dFRBCMARIbChZUT09fTUFOWV9VU0VSX0FDQ09VTlRTEI0BEhYKEUFDQ09VTlRfTk9UX0ZPVU5EEI4BEhoKFUFDQ09VTlRfSU5WQUxJRF9PV05FUhCPARIbChZTVUJBQ1RJT05fT1VUX09GX1JBTkdFEJABEhEKDERVU1RfQUNDT1VOVBCRARIMCgdCQUxBTkNFEKABEh0KGEJBTEFOQ0VfREVQT1NJVF9PVkVSRkxPVxChARIcChdCQUxBTkNFX0NIQU5HRV9PVkVSRkxPVxCiARIiCh1CQUxBTkNFX0NIQU5HRV9MSU1JVF9FWENFRURFRBCjARIZChRCQUxBTkNFX0lOU1VGRklDSUVOVBCkARIeChlVTkFVVEhFTlRJQ0FURURfTDFfQUNUSU9OEKUBEh0KGEVOQ09ERURfQUNUSU9OX1RPT19MQVJHRRCmARIMCgdUUklHR0VSEKgBEhoKFVRSSUdHRVJfSU5WQUxJRF9QUklDRRCpARIWChFUUklHR0VSX05PVF9GT1VORBCqARIrCiZUUklHR0VSX09OTFlfREVDUkVBU0VfT1JERVJTX1NVUFBPUlRFRBCrARIoCiNUUklHR0VSX01BWF9TSVpFX1BMQUNFTUVOVF9FWENFRURFRBCsARIYChNUUklHR0VSX05PVF9DSEFOR0VEEK0BEg4KCVRJTUVTVEFNUBCwARIfChpUSU1FU1RBTVBfT1VUX09GX1RIUkVTSE9MRBCxARIUCg9USU1FU1RBTVBfU1RBTEUQsgESHAoYRVhQSVJZX1RJTUVTVEFNUF9JTl9QQVNUEBASJQogQkFOS1JVUFRDWV9JTlNVRkZJQ0lFTlRfQ09WRVJBR0UQuQESGQoUQkFOS1JVUFRDWV9OT1RfRk9VTkQQugESGwoWQkFOS1JVUFRDWV9OT1RfQUxMT1dFRBC7ARIVChBNQVJLRVRfTk9UX1JFQURZEMABEhIKDU1BUktFVF9GUk9aRU4QwQESEQoMTUFSS0VUX0VNUFRZEMIBEjAKK01BUktFVF9NT0RFX0RPRVNfTk9UX1NVUFBPUlRfVEhJU19PUEVSQVRJT04QwwESDQoIUE9TSVRJT04QyAESFwoSUE9TSVRJT05fTk9UX0ZPVU5EEMkBEhkKFFBPU0lUSU9OX1NUQVRFX09SREVSEMoBEh8KGlBPU0lUSU9OX1NUQVRFX09SREVSX1BSSUNFEMsBEh4KGVBPU0lUSU9OX1NUQVRFX09SREVSX1NJWkUQzAESHgoZUE9TSVRJT05fU1RBVEVfT1JERVJfU0lERRDNARIYChNQT1NJVElPTl9TSVpFX0xJTUlUEM4BEhgKE1BPU0lUSU9OX1NUQVRFX1BFUlAQzwESJAofUE9TSVRJT05fU1RBVEVfT1JERVJfREVMRUdBVElPThDQARIKCgVQUklDRRDRARIbChZTSUdOQVRVUkVfVkVSSUZJQ0FUSU9OENkBEjAKK1NJR05BVFVSRV9WRVJJRklDQVRJT05fTUFMRk9STUVEX1BVQkxJQ19LRVkQ2gESKgolU0lHTkFUVVJFX1ZFUklGSUNBVElPTl9JTlZBTElEX0xFTkdUSBDbARIJCgRSSVNLEOABEjQKL1JJU0tfREVMRUdBVElPTl9NRl9UT19CRV9MRVNTX1RIQU5fT1JfRVFVQUxfTU1GEOEBEiQKH1JJU0tfT01GX0xFU1NfVEhBTl9PUl9FUVVBTF9JTUYQ4gESJAofUklTS19PTUZfTEVTU19USEFOX09SX0VRVUFMX0NNRhDjARI1CjBSSVNLX1VOSEVBTFRIWV9NRl9BTkRfUE9OX0FGVEVSX0JFVFRFUl9PRl9CRUZPUkUQ5AESKgolUklTS19UUkFERV9PTUZfTEVTU19USEFOX09SX0VRVUFMX0NNRhDlARIUCg9SSVNLX05PVF9FTk9VR0gQ5gESFAoPT1JERVJfRVhFQ1VUSU9OEPABEhoKFU9SREVSX0VYRUNVVElPTl9FTVBUWRDxARIhChxPUkRFUl9FWEVDVVRJT05fRklMTF9PUl9LSUxMEPIBEiMKHk9SREVSX0VYRUNVVElPTl9NSVNTSU5HX0xJTUlUUxDzARIiCh1PUkRFUl9FWEVDVVRJT05fTUlTU0lOR19QUklDRRD0ARIfChpPUkRFUl9FWEVDVVRJT05fU0laRV9MSU1JVBD1ARIgChtPUkRFUl9FWEVDVVRJT05fTElNSVRfUFJJQ0UQ9gESHgoZT1JERVJfUkVEVUNFX0lTX1BPU1RfT05MWRD3ARIfChpPUkRFUl9FWEVDVVRJT05fU0VMTF9QUklDRRD4ARIlCiBPUkRFUl9TSVpFX0VYQ0VFRFNfUE9TSVRJT05fU0laRRD5ARIMCgdBVE9NSUNTEIACEigKI0FUT01JQ1NfVFJBREVTX0NBTk5PVF9GT0xMT1dfUExBQ0VTEIECEjAKK0FUT01JQ1NfQ0FOQ0VMU19DQU5OT1RfRk9MTE9XX1RSQURFU19QTEFDRVMQggISHQoYQVRPTUlDU19EVVBMSUNBVEVfQ0FOQ0VMEIMCEhgKE1JGUV9PUkRFUl9USU1FT1VURUQQ+gESJgohQUNUSU9OX1BPU0lUSU9OX1NIT1VMRF9CRV9DT1ZFUkVEEJECEhkKFEFDVElPTl9JTlZBTElEX05PTkNFEJICEikKJEFDVElPTl9QUk9QT1NFRF9QUklDRV9NVVNUX0JFX0hJR0hFUhCTAhIcChdBRE1JTl9ST0xFX0lOU1VGRklDSUVOVBCUAhIUCg9BRE1JTl9OT1RfRk9VTkQQlQISKQokVU5JUVVFX1NVUEVSX0FETUlOX0NBTk5PVF9CRV9SRU1PVkVEEJYCEh8KGlNVUEVSX0FETUlOX0FMUkVBRFlfRVhJU1RTEJcCEhUKEFRSSUdHRVJfQ09ORkxJQ1QQmAISGgoVVFJJR0dFUl9FRElUX0NPTkZMSUNUEJkCEhwKF1RSSUdHRVJfUkVNT1ZFX0NPTkZMSUNUEJoCEg0KCFRSQU5TRkVSEKACEi4KKVRSQU5TRkVSX1RPX1VOT1dORURfQUNDT1VOVF9JU19QUk9ISUJJVEVEEKECEiwKJ1RSQU5TRkVSX1RPX09XTkVEX0FDQ09VTlRfV0FTX1JFUVVFU1RFRBCiAhIKCgVWQVVMVBCoAhIUCg9WQVVMVF9OT1RfRk9VTkQQqQISHQoYVkFVTFRfQUNUSU9OX05PVF9BTExPV0VEEKoCEhkKFFZBVUxUX1NUQVRVU19JTlZBTElEEKsCEiUKIFZBVUxUX1JFRFVDRV9PTkxZX09SREVSX1JFUVVJUkVEEKwCEiYKIVZBVUxUX0FDVElPTl9XT1VMRF9ERUdSQURFX1NUQVRVUxCtAhIZChRWQVVMVF9VU0VSX05PVF9GT1VORBCuAhIdChhWQVVMVF9VU0VSX0hBU19OT19TSEFSRVMQrwISHAoXVkFVTFRfUEVSTUlTU0lPTl9ERU5JRUQQtgISEgoNVkFVTFRfREVQT1NJVBCwAhIxCixWQVVMVF9ERVBPU0lUX0JPT1RTVFJBUF9SRVFVSVJFU19FTVBUWV9WQVVMVBCxAhIfChpWQVVMVF9ERVBPU0lUX0NBUF9FWENFRURFRBCyAhIpCiRWQVVMVF9ERVBPU0lUX1JFUVVJUkVTX0FDVElWRV9TVEFUVVMQswISLwoqVkFVTFRfREVQT1NJVF9DQVBfQkVMT1dfQ1VSUkVOVF9SQVdfRVFVSVRZELQCEhwKF1ZBVUxUX0RFUE9TSVRfVE9PX1NNQUxMELUCEhMKDlZBVUxUX1dJVEhEUkFXELgCEh4KGVZBVUxUX0lOU1VGRklDSUVOVF9TSEFSRVMQuQISLgopVkFVTFRfV0lUSERSQVdfUkVRVUlSRVNfTk9OX0ZST1pFTl9TVEFUVVMQugISIgodVkFVTFRfTk9fQ0xBSU1BQkxFX1dJVEhEUkFXQUwQuwISJQogVkFVTFRfV0lUSERSQVdfUVVPVEVfVU5BVkFJTEFCTEUQvAISLQooVkFVTFRfRFVTVF9FWElUX1JFUVVJUkVTX0ZVTExfU0hBUkVfRVhJVBC9AhI1CjBWQVVMVF9MQVNUX1NIQVJFX1dJVEhEUkFXX1JFUVVJUkVTX0VNUFRZX0FDQ09VTlQQvgISKAojVkFVTFRfV0lUSERSQVdfUkVRVUlSRVNfTElWRV9TSEFSRVMQvwISEgoNVkFVTFRfQ09OVFJPTBDAAhIdChhWQVVMVF9FUE9DSF9OT1RfRUxJR0lCTEUQwQISMQosVkFVTFRfUFJFVklPVVNfRVBPQ0hfV0lUSERSQVdBTFNfTk9UX1BBWUFCTEUQwgISMgotVkFVTFRfRlJFRVpFX1RIUkVTSE9MRF9NVVNUX0VYQ0VFRF9QUk9URUNUSU9OEMMCEh0KGFZBVUxUX0NPTkZJR19QQVRDSF9FTVBUWRDEAhIoCiNWQVVMVF9OT19TVEFUVVNfVFJBTlNJVElPTl9SRVFVSVJFRBDFAhItCihWQVVMVF9GUk9aRU5fU1RBVFVTX1JFUVVJUkVTX1NVUEVSX0FETUlOEMYCEioKJVZBVUxUX05FV19DT05GSUdfV09VTERfREVHUkFERV9TVEFUVVMQxwISDgoJUkZRX0VSUk9SEMgCEhAKC1JGUV9USU1FT1VUEMkCEhQKD05PVF9JTVBMRU1FTlRFRBD0AxIXChJBQ1RJT05fTk9UX0FMTE9XRUQQ9QMSGAoTTk9UX1NVUFBPUlRFRF9JTlBVVBD2AxIMCgdEUk9QUEVEEOcHYgZwcm90bzM");
|
|
28746
|
+
var file_nord = /* @__PURE__ */ fileDesc("Cgpub3JkLnByb3RvEgRub3JkIh4KBFUxMjgSCgoCbG8YASABKAQSCgoCaGkYAiABKAQiqwEKCFJmcVRyYWRlEhsKDnRpbWVvdXRfbWlsbGlzGAEgASgNSACIAQESEQoJbWFya2V0X2lkGAIgASgNEhAKCG9yZGVyX2lkGAMgASgEEg0KBXByaWNlGAQgASgEEhgKEHRpbWVzdGFtcF9taWxsaXMYBSABKAMSIQoJZmlsbF90eXBlGAYgASgLMg4ubm9yZC5GaWxsVHlwZUIRCg9fdGltZW91dF9taWxsaXMiOQoLUGFydGlhbEZpbGwSFAoMbWluaW11bV9zaXplGAEgASgEEhQKDG1heGltdW1fc2l6ZRgCIAEoBCJ5CghGaWxsVHlwZRIbCg5pc19yZWR1Y2Vfb25seRgBIAEoCEgAiAEBEiwKDHBhcnRpYWxfZmlsbBgCIAEoCzIRLm5vcmQuUGFydGlhbEZpbGxIAYgBAUIRCg9faXNfcmVkdWNlX29ubHlCDwoNX3BhcnRpYWxfZmlsbCL3AQoMUmZxUGxhY2VPbmx5EhEKCW1hcmtldF9pZBgHIAEoDRIbCg50aW1lb3V0X21pbGxpcxgBIAEoDUgAiAEBEhwKD2NsaWVudF9vcmRlcl9pZBgCIAEoBEgBiAEBEg0KBXByaWNlGAMgASgEEhgKBHNpZGUYBCABKA4yCi5ub3JkLlNpZGUSDAoEYmFzZRgFIAEoBBIYChB0aW1lc3RhbXBfbWlsbGlzGAYgASgDEiEKCWZpbGxfdHlwZRgIIAEoCzIOLm5vcmQuRmlsbFR5cGVCEQoPX3RpbWVvdXRfbWlsbGlzQhIKEF9jbGllbnRfb3JkZXJfaWQiIwoMU2V0UmZxTWFrZXJzEhMKC2FjY291bnRfaWRzGAEgAygNIiUKEFNldE1hcmtldE1vZGVSRlESEQoJbWFya2V0X2lkGAEgASgNItMCCg9DcmVhdGVSZnFNYXJrZXQSMAoIZGVjaW1hbHMYASABKAsyHi5ub3JkLkNyZWF0ZVJmcU1hcmtldC5EZWNpbWFscxIuCgdtYXJnaW5zGAIgASgLMh0ubm9yZC5DcmVhdGVSZnFNYXJrZXQuTWFyZ2lucxIuCgdzeW1ib2xzGAMgASgLMh0ubm9yZC5DcmVhdGVSZnFNYXJrZXQuU3ltYm9scxo5CghEZWNpbWFscxIVCg1zaXplX2RlY2ltYWxzGAEgASgNEhYKDnByaWNlX2RlY2ltYWxzGAIgASgNGjwKB01hcmdpbnMSDwoHaW1mX2JwcxgDIAEoDRIPCgdjbWZfYnBzGAQgASgNEg8KB21tZl9icHMYBSABKA0aNQoHU3ltYm9scxITCgt2aWV3X3N5bWJvbBgHIAEoCRIVCg1vcmFjbGVfc3ltYm9sGAggASgJIpQBCg5SZnFUcmFkZUFjdGlvbhIQCghvcmRlcl9pZBgBIAEoBBIRCgltYXJrZXRfaWQYAiABKA0SGAoEc2lkZRgDIAEoDjIKLm5vcmQuU2lkZRIcChRxdW90ZV90aW1lb3V0X21pbGxpcxgEIAEoDRITCgliYXNlX3NpemUYBSABKANIAEIKCghxdWFudGl0eUoECAYQByLbAgoPUmZxVHJhZGVSZWNlaXB0EhAKCG9yZGVyX2lkGAEgASgEEhEKCW1hcmtldF9pZBgCIAEoDRIwCgdzdWNjZXNzGAMgASgLMh0ubm9yZC5SZnFUcmFkZVJlY2VpcHQuU3VjY2Vzc0gAEjYKB2ZhaWx1cmUYBCABKA4yIy5ub3JkLlJmcVRyYWRlUmVjZWlwdC5GYWlsdXJlUmVhc29uSAAaggEKB1N1Y2Nlc3MSEAoIcXVvdGVfaWQYASABKAQSGAoEc2lkZRgCIAEoDjIKLm5vcmQuU2lkZRIYChBmaWxsZWRfYmFzZV9zaXplGAMgASgEEiIKDnF1b3RlX25vdGlvbmFsGAQgASgLMgoubm9yZC5VMTI4Eg0KBXByaWNlGAUgASgEIioKDUZhaWx1cmVSZWFzb24SCwoHVElNRU9VVBAAEgwKCFJFSkVDVEVEEAFCCAoGcmVzdWx0IjoKDlBsYWNlUkZRUmVzdWx0EhAKCG9yZGVyX2lkGAEgASgEEhYKDnRpbWVvdXRfbWlsbGlzGAIgASgNIk4KDFJGUUV4ZWN1dGlvbhITCgtmaWxsZWRfc2l6ZRgBIAEoBBIQCgh0cmFkZV9pZBgCIAEoBBIXCg9leGVjdXRpb25fcHJpY2UYAyABKAQioQEKDUZpbGxSRlFSZXN1bHQSEAoIb3JkZXJfaWQYASABKAQSGAoQbWFrZXJfYWNjb3VudF9pZBgCIAEoDRIYChB0YWtlcl9hY2NvdW50X2lkGAMgASgNEiUKCWV4ZWN1dGlvbhgEIAEoCzISLm5vcmQuUkZRRXhlY3V0aW9uEiMKBnN0YXR1cxgFIAEoDjITLm5vcmQuUmZxRmlsbFN0YXR1cyIjCgxSZnFNYWtlcnNTZXQSEwoLYWNjb3VudF9pZHMYASADKA0iJgoLUkZRUXR5UGxhY2USFwoDcXR5GAEgASgLMgoubm9yZC5VMTI4Ij0KDUZlZVRpZXJDb25maWcSFQoNbWFrZXJfZmVlX3BwbRgBIAEoDRIVCg10YWtlcl9mZWVfcHBtGAIgASgNIvcBCgZNYXJrZXQSEQoJbWFya2V0X2lkGAEgASgNEhYKDnByaWNlX2RlY2ltYWxzGAIgASgNEhUKDXNpemVfZGVjaW1hbHMYAyABKA0SFQoNYmFzZV90b2tlbl9pZBgEIAEoDRIlCgttYXJrZXRfdHlwZRgFIAEoDjIQLm5vcmQuTWFya2V0VHlwZRIPCgdpbWZfYnBzGAYgASgNEg8KB2NtZl9icHMYByABKA0SDwoHbW1mX2JwcxgIIAEoDRIlCgttYXJrZXRfbW9kZRgJIAEoDjIQLm5vcmQuTWFya2V0TW9kZRITCgt2aWV3X3N5bWJvbBgKIAEoCSJaCgVUb2tlbhIQCgh0b2tlbl9pZBgBIAEoDRIWCg50b2tlbl9kZWNpbWFscxgCIAEoDRISCgp3ZWlnaHRfYnBzGAQgASgNEhMKC3ZpZXdfc3ltYm9sGAUgASgJIrYBCgtWYXVsdEhlYWx0aBIqChFyYXdfYWNjb3VudF92YWx1ZRgBIAEoCzIKLm5vcmQuVTEyOEgAiAEBEisKEnNhZmVfYWNjb3VudF92YWx1ZRgCIAEoCzIKLm5vcmQuVTEyOEgBiAEBEiEKBnN0YXR1cxgDIAEoDjIRLm5vcmQuVmF1bHRTdGF0dXNCFAoSX3Jhd19hY2NvdW50X3ZhbHVlQhUKE19zYWZlX2FjY291bnRfdmFsdWUisAEKC1ZhdWx0Q29uZmlnEh8KC2RlcG9zaXRfY2FwGAEgASgLMgoubm9yZC5VMTI4EiIKGm9wZW5fcG9zaXRpb25fZGlzY291bnRfYnBzGAIgASgNEh8KF2RyYXdkb3duX3Byb3RlY3Rpb25fYnBzGAMgASgNEhsKE2RyYXdkb3duX2ZyZWV6ZV9icHMYBCABKA0SHgoWZXBvY2hfbWluX2R1cmF0aW9uX3NlYxgFIAEoDSLMAgoQVmF1bHRDb25maWdQYXRjaBIkCgtkZXBvc2l0X2NhcBgBIAEoCzIKLm5vcmQuVTEyOEgAiAEBEicKGm9wZW5fcG9zaXRpb25fZGlzY291bnRfYnBzGAIgASgNSAGIAQESJAoXZHJhd2Rvd25fcHJvdGVjdGlvbl9icHMYAyABKA1IAogBARIgChNkcmF3ZG93bl9mcmVlemVfYnBzGAQgASgNSAOIAQESIwoWZXBvY2hfbWluX2R1cmF0aW9uX3NlYxgFIAEoDUgEiAEBQg4KDF9kZXBvc2l0X2NhcEIdChtfb3Blbl9wb3NpdGlvbl9kaXNjb3VudF9icHNCGgoYX2RyYXdkb3duX3Byb3RlY3Rpb25fYnBzQhYKFF9kcmF3ZG93bl9mcmVlemVfYnBzQhkKF19lcG9jaF9taW5fZHVyYXRpb25fc2VjIkgKC0NyZWF0ZVZhdWx0EhYKDm1hbmFnZXJfcHVia2V5GAEgASgMEiEKBmNvbmZpZxgCIAEoCzIRLm5vcmQuVmF1bHRDb25maWciUwoRVXBkYXRlVmF1bHRDb25maWcSEAoIdmF1bHRfaWQYASABKA0SLAoMY29uZmlnX3BhdGNoGAIgASgLMhYubm9yZC5WYXVsdENvbmZpZ1BhdGNoIjsKD1NldFZhdWx0TWFuYWdlchIQCgh2YXVsdF9pZBgBIAEoDRIWCg5tYW5hZ2VyX3B1YmtleRgCIAEoDCI3Cg9WYXVsdFN5bmNFcG9jaHMSEgoKc2Vzc2lvbl9pZBgBIAEoBBIQCgh2YXVsdF9pZBgCIAEoDSJOChFTdGFnZWRBZG1pbkFjdGlvbhIUCgxhZG1pbl9wdWJrZXkYASABKAwSIwoEa2luZBgCIAEoCzIVLm5vcmQuQWRtaW5BY3Rpb25LaW5kIrMECg9BZG1pbkFjdGlvbktpbmQSKQoMY3JlYXRlX3ZhdWx0GAEgASgLMhEubm9yZC5DcmVhdGVWYXVsdEgAEjYKE3VwZGF0ZV92YXVsdF9jb25maWcYAiABKAsyFy5ub3JkLlVwZGF0ZVZhdWx0Q29uZmlnSAASMgoRc2V0X3ZhdWx0X21hbmFnZXIYAyABKAsyFS5ub3JkLlNldFZhdWx0TWFuYWdlckgAEjIKEWNyZWF0ZV9yZnFfbWFya2V0GAQgASgLMhUubm9yZC5DcmVhdGVSZnFNYXJrZXRIABJWCiFzZXRfbWFya2V0X21vZGVfY2xvYl90cmFkaW5nX29ubHkYBSABKAsyKS5ub3JkLkFjdGlvbi5TZXRNYXJrZXRNb2RlQ0xPQlRyYWRpbmdPbmx5SAASNQoTc2V0X21hcmtldF9tb2RlX3JmcRgGIAEoCzIWLm5vcmQuU2V0TWFya2V0TW9kZVJGUUgAElAKHnNldF9tYXJrZXRfbW9kZV9jbG9iX3Bvc3Rfb25seRgHIAEoCzImLm5vcmQuQWN0aW9uLlNldE1hcmtldE1vZGVDTE9CUG9zdE9ubHlIABI+ChRzZXRfbWFya2V0X21vZGVfY2xvYhgIIAEoCzIeLm5vcmQuQWN0aW9uLlNldE1hcmtldE1vZGVDTE9CSAASLAoOc2V0X3JmcV9tYWtlcnMYCSABKAsyEi5ub3JkLlNldFJmcU1ha2Vyc0gAQgYKBGtpbmQiRAoMVmF1bHREZXBvc2l0EhIKCnNlc3Npb25faWQYASABKAQSEAoIdmF1bHRfaWQYAiABKA0SDgoGYW1vdW50GAMgASgEIvUBCg1WYXVsdFdpdGhkcmF3EhIKCnNlc3Npb25faWQYASABKAQSEAoIdmF1bHRfaWQYAiABKA0SLgoHcmVxdWVzdBgDIAEoCzIbLm5vcmQuVmF1bHRXaXRoZHJhdy5SZXF1ZXN0SAASKgoFY2xhaW0YBCABKAsyGS5ub3JkLlZhdWx0V2l0aGRyYXcuQ2xhaW1IABpRCgdSZXF1ZXN0EhgKDnF1b3RlX25vdGlvbmFsGAEgASgESAASIgoMc2hhcmVfYW1vdW50GAIgASgLMgoubm9yZC5VMTI4SABCCAoGYW1vdW50GgcKBUNsYWltQgYKBGtpbmQingEKEkNyZWF0ZVZhdWx0UmVjZWlwdBIQCgh2YXVsdF9pZBgBIAEoDRIYChB2YXVsdF9hY2NvdW50X2lkGAIgASgNEhYKDm1hbmFnZXJfcHVia2V5GAMgASgMEiEKBnN0YXR1cxgEIAEoDjIRLm5vcmQuVmF1bHRTdGF0dXMSIQoGY29uZmlnGAUgASgLMhEubm9yZC5WYXVsdENvbmZpZyJyChhVcGRhdGVWYXVsdENvbmZpZ1JlY2VpcHQSEAoIdmF1bHRfaWQYASABKA0SIQoGY29uZmlnGAIgASgLMhEubm9yZC5WYXVsdENvbmZpZxIhCgZzdGF0dXMYAyABKA4yES5ub3JkLlZhdWx0U3RhdHVzIkIKFlNldFZhdWx0TWFuYWdlclJlY2VpcHQSEAoIdmF1bHRfaWQYASABKA0SFgoObWFuYWdlcl9wdWJrZXkYAiABKAwi+wEKFlZhdWx0U3luY0Vwb2Noc1JlY2VpcHQSEAoIdmF1bHRfaWQYASABKA0SFwoPY2xvc2VkX2Vwb2NoX2lkGAIgASgNEhgKEGNsYWltYWJsZV9hbW91bnQYAyABKAQSIQoGc3RhdHVzGAQgASgOMhEubm9yZC5WYXVsdFN0YXR1cxIhCgZlcG9jaHMYBSABKAsyES5ub3JkLlZhdWx0RXBvY2hzEiUKEWxpdmVfc2hhcmVfc3VwcGx5GAYgASgLMgoubm9yZC5VMTI4EhUKDXF1b3RlX2JhbGFuY2UYByABKAMSGAoQdmF1bHRfYWNjb3VudF9pZBgIIAEoDSKPAgoTVmF1bHREZXBvc2l0UmVjZWlwdBIQCgh2YXVsdF9pZBgBIAEoDRIXCg9mcm9tX2FjY291bnRfaWQYAiABKA0SDgoGYW1vdW50GAMgASgEEiEKDXNoYXJlc19pc3N1ZWQYBCABKAsyCi5ub3JkLlUxMjgSHwoLdXNlcl9zaGFyZXMYBSABKAsyCi5ub3JkLlUxMjgSJQoRbGl2ZV9zaGFyZV9zdXBwbHkYBiABKAsyCi5ub3JkLlUxMjgSIQoGc3RhdHVzGAcgASgOMhEubm9yZC5WYXVsdFN0YXR1cxIYChB2YXVsdF9hY2NvdW50X2lkGAggASgNEhUKDXF1b3RlX2JhbGFuY2UYCSABKAMiVQoRV2l0aGRyYXdhbEJ1Y2tldHMSFQoNY3VycmVudF9lcG9jaBgBIAEoBBIWCg5wcmV2aW91c19lcG9jaBgCIAEoBBIRCgljbGFpbWFibGUYAyABKAQihQEKC1ZhdWx0UHBzUmVmEhAKCGVwb2NoX2lkGAEgASgNEisKEnNhZmVfYWNjb3VudF92YWx1ZRgCIAEoCzIKLm5vcmQuVTEyOEgAiAEBEiAKDHNoYXJlX3N1cHBseRgDIAEoCzIKLm5vcmQuVTEyOEIVChNfc2FmZV9hY2NvdW50X3ZhbHVlIpYCCgtWYXVsdEVwb2NocxIYChBjdXJyZW50X2Vwb2NoX2lkGAEgASgNEiAKGGN1cnJlbnRfZXBvY2hfc3RhcnRlZF9hdBgCIAEoAxIiChVwYWlkX3Rocm91Z2hfZXBvY2hfaWQYAyABKA1IAIgBARIsCgt3aXRoZHJhd2FscxgEIAEoCzIXLm5vcmQuV2l0aGRyYXdhbEJ1Y2tldHMSLwoUbGF0ZXN0X2Vwb2NoX3Bwc19yZWYYBSABKAsyES5ub3JkLlZhdWx0UHBzUmVmEi4KE3ByaW9yX2Vwb2NoX3Bwc19yZWYYBiABKAsyES5ub3JkLlZhdWx0UHBzUmVmQhgKFl9wYWlkX3Rocm91Z2hfZXBvY2hfaWQijwEKDlZhdWx0VXNlclN0YXRlEhoKBnNoYXJlcxgBIAEoCzIKLm5vcmQuVTEyOBIsCgt3aXRoZHJhd2FscxgCIAEoCzIXLm5vcmQuV2l0aGRyYXdhbEJ1Y2tldHMSGAoQY3VycmVudF9lcG9jaF9pZBgDIAEoDRIZChFwcmV2aW91c19lcG9jaF9pZBgEIAEoDSK2AwoUVmF1bHRXaXRoZHJhd1JlY2VpcHQSEAoIdmF1bHRfaWQYASABKA0SFQoNdG9fYWNjb3VudF9pZBgCIAEoDRI5CglyZXF1ZXN0ZWQYAyABKAsyJC5ub3JkLlZhdWx0V2l0aGRyYXdSZWNlaXB0LlJlcXVlc3RlZEgAEjUKB2NsYWltZWQYBCABKAsyIi5ub3JkLlZhdWx0V2l0aGRyYXdSZWNlaXB0LkNsYWltZWRIABItCg9wb3N0X3VzZXJfc3RhdGUYBSABKAsyFC5ub3JkLlZhdWx0VXNlclN0YXRlEiUKEWxpdmVfc2hhcmVfc3VwcGx5GAYgASgLMgoubm9yZC5VMTI4EiEKBnN0YXR1cxgHIAEoDjIRLm5vcmQuVmF1bHRTdGF0dXMSGAoQdmF1bHRfYWNjb3VudF9pZBgIIAEoDRIVCg1xdW90ZV9iYWxhbmNlGAkgASgDGjYKCVJlcXVlc3RlZBINCgVxdW90ZRgBIAEoBBIaCgZidXJuZWQYAiABKAsyCi5ub3JkLlUxMjgaGQoHQ2xhaW1lZBIOCgZhbW91bnQYASABKARCBgoEa2luZCJJCgpPcmRlckxpbWl0Eg0KBXByaWNlGAYgASgEEgwKBHNpemUYByABKAQSHgoKcXVvdGVfc2l6ZRgIIAEoCzIKLm5vcmQuVTEyOCK5AQoJUGxhY2VUeXBlEhgKBHNpZGUYAyABKA4yCi5ub3JkLlNpZGUSIQoJZmlsbF9tb2RlGAQgASgOMg4ubm9yZC5GaWxsTW9kZRIWCg5pc19yZWR1Y2Vfb25seRgFIAEoCBI9ChVzZWxmX3RyYWRlX3ByZXZlbnRpb24YBiABKA4yGS5ub3JkLlNlbGZUcmFkZVByZXZlbnRpb25IAIgBAUIYChZfc2VsZl90cmFkZV9wcmV2ZW50aW9uIskBCgxUcmFkZU9yUGxhY2USEQoJbWFya2V0X2lkGAIgASgNEiMKCnBsYWNlX3R5cGUYAyABKAsyDy5ub3JkLlBsYWNlVHlwZRIfCgVsaW1pdBgGIAEoCzIQLm5vcmQuT3JkZXJMaW1pdBIcCg9jbGllbnRfb3JkZXJfaWQYISABKARIAIgBARIhCghyZWZlcnJlchgiIAEoCzIKLm5vcmQuVTEyOEgBiAEBQhIKEF9jbGllbnRfb3JkZXJfaWRCCwoJX3JlZmVycmVyIikKFUF0b21pY0NhbmNlbE9yZGVyQnlJZBIQCghvcmRlcl9pZBgCIAEoBCI2ChtBdG9taWNDYW5jZWxPcmRlckJ5Q2xpZW50SWQSFwoPY2xpZW50X29yZGVyX2lkGAIgASgEIoYBChBBdG9taWNBZGRUcmlnZ2VyEiQKB3RyaWdnZXIYASABKAsyEy5ub3JkLlRyaWdnZXJSZWNvcmQSHAoGaW50ZW50GAIgASgOMgwubm9yZC5JbnRlbnQSIQoIcmVmZXJyZXIYAyABKAsyCi5ub3JkLlUxMjhIAIgBAUILCglfcmVmZXJyZXIiUQoRQXRvbWljRWRpdFRyaWdnZXISEgoKdHJpZ2dlcl9pZBgBIAEoBBIoCgtuZXdfdHJpZ2dlchgCIAEoCzITLm5vcmQuVHJpZ2dlclJlY29yZCI8ChNBdG9taWNSZW1vdmVUcmlnZ2VyEhEKCW1hcmtldF9pZBgBIAEoDRISCgp0cmlnZ2VyX2lkGAIgASgEIisKFlJlZHVjZU9yZGVyTGlxdWlkYXRpb24SEQoJbWFya2V0X2lkGAIgASgNIs8BChVBdG9taWNTdWJhY3Rpb25LaW5kVjESLAoOdHJhZGVfb3JfcGxhY2UYBiABKAsyEi5ub3JkLlRyYWRlT3JQbGFjZUgAEjMKDGNhbmNlbF9vcmRlchgHIAEoCzIbLm5vcmQuQXRvbWljQ2FuY2VsT3JkZXJCeUlkSAASRgoZY2FuY2VsX29yZGVyX2J5X2NsaWVudF9pZBgIIAEoCzIhLm5vcmQuQXRvbWljQ2FuY2VsT3JkZXJCeUNsaWVudElkSAA6AhgBQgcKBWlubmVyIrABCghBdG9taWNWMRISCgpzZXNzaW9uX2lkGAEgASgEEhcKCmFjY291bnRfaWQYAiABKA1IAIgBARIfChJzZW5kZXJfdHJhY2tpbmdfaWQYAyABKARIAYgBARIsCgdhY3Rpb25zGAYgAygLMhsubm9yZC5BdG9taWNTdWJhY3Rpb25LaW5kVjE6AhgBQg0KC19hY2NvdW50X2lkQhUKE19zZW5kZXJfdHJhY2tpbmdfaWQixwQKD0F0b21pY1N1YmFjdGlvbhIUCgd1c2Vfa2V5GAEgASgISAGIAQESHgoRdGFyZ2V0X2FjY291bnRfaWQYICABKA1IAogBARIsCg50cmFkZV9vcl9wbGFjZRgGIAEoCzISLm5vcmQuVHJhZGVPclBsYWNlSAASMwoMY2FuY2VsX29yZGVyGAcgASgLMhsubm9yZC5BdG9taWNDYW5jZWxPcmRlckJ5SWRIABJGChljYW5jZWxfb3JkZXJfYnlfY2xpZW50X2lkGAggASgLMiEubm9yZC5BdG9taWNDYW5jZWxPcmRlckJ5Q2xpZW50SWRIABItCgthZGRfdHJpZ2dlchgJIAEoCzIWLm5vcmQuQXRvbWljQWRkVHJpZ2dlckgAEi8KDGVkaXRfdHJpZ2dlchgKIAEoCzIXLm5vcmQuQXRvbWljRWRpdFRyaWdnZXJIABIzCg5yZW1vdmVfdHJpZ2dlchgLIAEoCzIZLm5vcmQuQXRvbWljUmVtb3ZlVHJpZ2dlckgAEkAKGHJlZHVjZV9vcmRlcl9saXF1aWRhdGlvbhgMIAEoCzIcLm5vcmQuUmVkdWNlT3JkZXJMaXF1aWRhdGlvbkgAEiwKDnJmcV9wbGFjZV9vbmx5GA0gASgLMhIubm9yZC5SZnFQbGFjZU9ubHlIABIjCglyZnFfdHJhZGUYDiABKAsyDi5ub3JkLlJmcVRyYWRlSABCBwoFaW5uZXJCCgoIX3VzZV9rZXlCFAoSX3RhcmdldF9hY2NvdW50X2lkIqQBCgZBdG9taWMSEgoKc2Vzc2lvbl9pZBgBIAEoBBIXCgphY2NvdW50X2lkGAIgASgNSACIAQESHwoSc2VuZGVyX3RyYWNraW5nX2lkGAMgASgESAGIAQESJgoHYWN0aW9ucxgGIAMoCzIVLm5vcmQuQXRvbWljU3ViYWN0aW9uQg0KC19hY2NvdW50X2lkQhUKE19zZW5kZXJfdHJhY2tpbmdfaWQiPAoWUHl0aExhemVyVHJ1c3RlZFNpZ25lchIOCgZwdWJrZXkYASABKAwSEgoKZXhwaXJlc19hdBgCIAEoAyKWAQoNVHJpZ2dlclJlY29yZBIVCg10cmlnZ2VyX3ByaWNlGAEgASgEEhEKCW1hcmtldF9pZBgCIAEoDRIgCgZsaW1pdHMYAyABKAsyEC5ub3JkLk9yZGVyTGltaXQSHwoEa2luZBgEIAEoDjIRLm5vcmQuVHJpZ2dlcktpbmQSGAoEc2lkZRgFIAEoDjIKLm5vcmQuU2lkZSKbAQoHVHJpZ2dlchIVCg10cmlnZ2VyX3ByaWNlGAEgASgEEh8KBGtpbmQYAiABKA4yES5ub3JkLlRyaWdnZXJLaW5kEhgKBHNpZGUYAyABKA4yCi5ub3JkLlNpZGUSIAoGbGltaXRzGAQgASgLMhAubm9yZC5PcmRlckxpbWl0EhwKBmludGVudBgFIAEoDjIMLm5vcmQuSW50ZW50ItozCgZBY3Rpb24SGQoRY3VycmVudF90aW1lc3RhbXAYASABKAMSDQoFbm9uY2UYAiABKA0SNAoOY3JlYXRlX3Nlc3Npb24YBCABKAsyGi5ub3JkLkFjdGlvbi5DcmVhdGVTZXNzaW9uSAASMAoMY3JlYXRlX3Rva2VuGAUgASgLMhgubm9yZC5BY3Rpb24uQ3JlYXRlVG9rZW5IABIyCg1jcmVhdGVfbWFya2V0GAYgASgLMhkubm9yZC5BY3Rpb24uQ3JlYXRlTWFya2V0SAASLgoLcGxhY2Vfb3JkZXIYByABKAsyFy5ub3JkLkFjdGlvbi5QbGFjZU9yZGVySAASOgoSY2FuY2VsX29yZGVyX2J5X2lkGAggASgLMhwubm9yZC5BY3Rpb24uQ2FuY2VsT3JkZXJCeUlkSAASJwoHZGVwb3NpdBgJIAEoCzIULm5vcmQuQWN0aW9uLkRlcG9zaXRIABIpCgh3aXRoZHJhdxgKIAEoCzIVLm5vcmQuQWN0aW9uLldpdGhkcmF3SAASTAobcHl0aF9zZXRfd29ybWhvbGVfZ3VhcmRpYW5zGAsgASgLMiUubm9yZC5BY3Rpb24uUHl0aFNldFdvcm1ob2xlR3VhcmRpYW5zSAASPgoUcHl0aF9zZXRfc3ltYm9sX2ZlZWQYDCABKAsyHi5ub3JkLkFjdGlvbi5QeXRoU2V0U3ltYm9sRmVlZEgAEkIKFnB5dGhfcHJpY2VfZmVlZF91cGRhdGUYDSABKAsyIC5ub3JkLkFjdGlvbi5QeXRoUHJpY2VGZWVkVXBkYXRlSAASNAoOcmV2b2tlX3Nlc3Npb24YDyABKAsyGi5ub3JkLkFjdGlvbi5SZXZva2VTZXNzaW9uSAASIwoFcGF1c2UYECABKAsyEi5ub3JkLkFjdGlvbi5QYXVzZUgAEicKB3VucGF1c2UYESABKAsyFC5ub3JkLkFjdGlvbi5VbnBhdXNlSAASKQoIdHJhbnNmZXIYEiABKAsyFS5ub3JkLkFjdGlvbi5UcmFuc2ZlckgAEi4KC2FkZF90cmlnZ2VyGCAgASgLMhcubm9yZC5BY3Rpb24uQWRkVHJpZ2dlckgAEjQKDnJlbW92ZV90cmlnZ2VyGCEgASgLMhoubm9yZC5BY3Rpb24uUmVtb3ZlVHJpZ2dlckgAEicKCWF0b21pY192MRgjIAEoCzIOLm5vcmQuQXRvbWljVjFCAhgBSAASMgoNZnJlZXplX21hcmtldBgkIAEoCzIZLm5vcmQuQWN0aW9uLkZyZWV6ZU1hcmtldEgAEjYKD3VuZnJlZXplX21hcmtldBglIAEoCzIbLm5vcmQuQWN0aW9uLlVuZnJlZXplTWFya2V0SAASLwoMYWRkX2ZlZV90aWVyGCYgASgLMhcubm9yZC5BY3Rpb24uQWRkRmVlVGllckgAEjUKD3VwZGF0ZV9mZWVfdGllchgnIAEoCzIaLm5vcmQuQWN0aW9uLlVwZGF0ZUZlZVRpZXJIABI/ChR1cGRhdGVfYWNjb3VudHNfdGllchgoIAEoCzIfLm5vcmQuQWN0aW9uLlVwZGF0ZUFjY291bnRzVGllckgAEiwKCnVwZGF0ZV9hY2wYKSABKAsyFi5ub3JkLkFjdGlvbi5VcGRhdGVBY2xIABI7ChJmZWVfdmF1bHRfdHJhbnNmZXIYKiABKAsyHS5ub3JkLkFjdGlvbi5GZWVWYXVsdFRyYW5zZmVySAASOwoSdGFrZV9hbGxfcG9zaXRpb25zGCsgASgLMh0ubm9yZC5BY3Rpb24uVGFrZUFsbFBvc2l0aW9uc0gAEkcKGWNhbmNlbF9vcmRlcl9ieV9jbGllbnRfaWQYLCABKAsyIi5ub3JkLkFjdGlvbi5DYW5jZWxPcmRlckJ5Q2xpZW50SWRIABI2Cg9leGVjdXRlX3RyaWdnZXIYLSABKAsyGy5ub3JkLkFjdGlvbi5FeGVjdXRlVHJpZ2dlckgAEj8KFHNldF9iYWNrc3RvcF9hY2NvdW50GC4gASgLMh8ubm9yZC5BY3Rpb24uU2V0QmFja3N0b3BBY2NvdW50SAASMAoMZWRpdF90cmlnZ2VyGC8gASgLMhgubm9yZC5BY3Rpb24uRWRpdFRyaWdnZXJIABIeCgZhdG9taWMYMCABKAsyDC5ub3JkLkF0b21pY0gAEigKBWFkbWluGDEgASgLMhcubm9yZC5TdGFnZWRBZG1pbkFjdGlvbkgAEjAKDGNsZWFyX21hcmtldBgyIAEoCzIYLm5vcmQuQWN0aW9uLkNsZWFyTWFya2V0SAASMgoRdmF1bHRfc3luY19lcG9jaHMYNSABKAsyFS5ub3JkLlZhdWx0U3luY0Vwb2Noc0gAEisKDXZhdWx0X2RlcG9zaXQYNiABKAsyEi5ub3JkLlZhdWx0RGVwb3NpdEgAEi0KDnZhdWx0X3dpdGhkcmF3GDcgASgLMhMubm9yZC5WYXVsdFdpdGhkcmF3SAASUQoecHl0aF9sYXplcl9zZXRfdHJ1c3RlZF9zaWduZXJzGDkgASgLMicubm9yZC5BY3Rpb24uUHl0aExhemVyU2V0VHJ1c3RlZFNpZ25lcnNIABJJChpweXRoX2xhemVyX3NldF9mZWVkX3N5bWJvbBg6IAEoCzIjLm5vcmQuQWN0aW9uLlB5dGhMYXplclNldEZlZWRTeW1ib2xIABJNChxweXRoX2xhemVyX3ByaWNlX2ZlZWRfdXBkYXRlGDsgASgLMiUubm9yZC5BY3Rpb24uUHl0aExhemVyUHJpY2VGZWVkVXBkYXRlSAASNgoPcmVmcmVzaF9zZXNzaW9uGDwgASgLMhsubm9yZC5BY3Rpb24uUmVmcmVzaFNlc3Npb25IABI9ChNzZWxmX3Jldm9rZV9zZXNzaW9uGD0gASgLMh4ubm9yZC5BY3Rpb24uU2VsZlJldm9rZVNlc3Npb25IABrjAQoNQ3JlYXRlU2Vzc2lvbhITCgt1c2VyX3B1YmtleRgBIAEoDBIWCg5zZXNzaW9uX3B1YmtleRgCIAEoDBIYChBleHBpcnlfdGltZXN0YW1wGAMgASgDEkEKEXNpZ25hdHVyZV9mcmFtaW5nGAQgASgOMiEubm9yZC5BY3Rpb24uVXNlclNpZ25hdHVyZUZyYW1pbmdIAIgBARIdChByZWZyZXNoX2RlYWRsaW5lGAUgASgDSAGIAQFCFAoSX3NpZ25hdHVyZV9mcmFtaW5nQhMKEV9yZWZyZXNoX2RlYWRsaW5lGosBCgtDcmVhdGVUb2tlbhIWCg50b2tlbl9kZWNpbWFscxgBIAEoDRISCgp3ZWlnaHRfYnBzGAMgASgNEhMKC3ZpZXdfc3ltYm9sGAQgASgJEhUKDW9yYWNsZV9zeW1ib2wYBSABKAkSEAoIc29sX2FkZHIYBiABKAwSEgoKYWNsX3B1YmtleRgHIAEoDBoxChxTZXRNYXJrZXRNb2RlQ0xPQlRyYWRpbmdPbmx5EhEKCW1hcmtldF9pZBgBIAEoDRouChlTZXRNYXJrZXRNb2RlQ0xPQlBvc3RPbmx5EhEKCW1hcmtldF9pZBgBIAEoDRomChFTZXRNYXJrZXRNb2RlQ0xPQhIRCgltYXJrZXRfaWQYASABKA0a7gEKDENyZWF0ZU1hcmtldBIVCg1zaXplX2RlY2ltYWxzGAEgASgNEhYKDnByaWNlX2RlY2ltYWxzGAIgASgNEg8KB2ltZl9icHMYAyABKA0SDwoHY21mX2JwcxgEIAEoDRIPCgdtbWZfYnBzGAUgASgNEiUKC21hcmtldF90eXBlGAYgASgOMhAubm9yZC5NYXJrZXRUeXBlEhMKC3ZpZXdfc3ltYm9sGAcgASgJEhUKDW9yYWNsZV9zeW1ib2wYCCABKAkSFQoNYmFzZV90b2tlbl9pZBgJIAEoDRISCgphY2xfcHVia2V5GAogASgMGqoECgpQbGFjZU9yZGVyEhIKCnNlc3Npb25faWQYASABKAQSEQoJbWFya2V0X2lkGAIgASgNEhgKBHNpZGUYAyABKA4yCi5ub3JkLlNpZGUSIQoJZmlsbF9tb2RlGAQgASgOMg4ubm9yZC5GaWxsTW9kZRIWCg5pc19yZWR1Y2Vfb25seRgFIAEoCBINCgVwcmljZRgGIAEoBBIMCgRzaXplGAcgASgEEh4KCnF1b3RlX3NpemUYCCABKAsyCi5ub3JkLlUxMjgSIQoUZGVsZWdhdG9yX2FjY291bnRfaWQYICABKA1IAIgBARIcCg9jbGllbnRfb3JkZXJfaWQYISABKARIAYgBARIeChFzZW5kZXJfYWNjb3VudF9pZBgiIAEoDUgCiAEBEh8KEnNlbmRlcl90cmFja2luZ19pZBgjIAEoBEgDiAEBEj0KFXNlbGZfdHJhZGVfcHJldmVudGlvbhgkIAEoDjIZLm5vcmQuU2VsZlRyYWRlUHJldmVudGlvbkgEiAEBEiEKCHJlZmVycmVyGCUgASgLMgoubm9yZC5VMTI4SAWIAQFCFwoVX2RlbGVnYXRvcl9hY2NvdW50X2lkQhIKEF9jbGllbnRfb3JkZXJfaWRCFAoSX3NlbmRlcl9hY2NvdW50X2lkQhUKE19zZW5kZXJfdHJhY2tpbmdfaWRCGAoWX3NlbGZfdHJhZGVfcHJldmVudGlvbkILCglfcmVmZXJyZXIaqQEKD0NhbmNlbE9yZGVyQnlJZBISCgpzZXNzaW9uX2lkGAEgASgEEhAKCG9yZGVyX2lkGAIgASgEEiEKFGRlbGVnYXRvcl9hY2NvdW50X2lkGCAgASgNSACIAQESHgoRc2VuZGVyX2FjY291bnRfaWQYISABKA1IAYgBAUIXChVfZGVsZWdhdG9yX2FjY291bnRfaWRCFAoSX3NlbmRlcl9hY2NvdW50X2lkGnoKFUNhbmNlbE9yZGVyQnlDbGllbnRJZBISCgpzZXNzaW9uX2lkGAEgASgEEhcKD2NsaWVudF9vcmRlcl9pZBgCIAEoBBIeChFzZW5kZXJfYWNjb3VudF9pZBgDIAEoDUgAiAEBQhQKEl9zZW5kZXJfYWNjb3VudF9pZBpvCgdEZXBvc2l0EhQKDGFjdGlvbl9ub25jZRgBIAEoBBISCgp0b2tlbl9hZGRyGAIgASgMEg4KBmFtb3VudBgDIAEoBBITCgt1c2VyX3B1YmtleRgEIAEoDBIVCg1zZW5kZXJfcHVia2V5GAUgASgMGmoKCFdpdGhkcmF3EhAKCHRva2VuX2lkGAEgASgNEhIKCnNlc3Npb25faWQYAiABKAQSDgoGYW1vdW50GAMgASgEEhgKC2Rlc3RfcHVia2V5GAQgASgMSACIAQFCDgoMX2Rlc3RfcHVia2V5Gl0KGFB5dGhTZXRXb3JtaG9sZUd1YXJkaWFucxIaChJndWFyZGlhbl9zZXRfaW5kZXgYASABKA0SEQoJYWRkcmVzc2VzGAIgAygMEhIKCmFjbF9wdWJrZXkYAyABKAwaVQoRUHl0aFNldFN5bWJvbEZlZWQSFQoNb3JhY2xlX3N5bWJvbBgBIAEoCRIVCg1wcmljZV9mZWVkX2lkGAIgASgMEhIKCmFjbF9wdWJrZXkYAyABKAwaLwoTUHl0aFByaWNlRmVlZFVwZGF0ZRIYChByYXdfcHl0aG5ldF9kYXRhGAEgASgMGlIKGFB5dGhMYXplclByaWNlRmVlZFVwZGF0ZRIPCgdwYXlsb2FkGAEgASgMEhEKCXNpZ25hdHVyZRgCIAEoDBISCgpwdWJsaWNfa2V5GAMgASgMGmcKGlB5dGhMYXplclNldFRydXN0ZWRTaWduZXJzEhIKCmFjbF9wdWJrZXkYASABKAwSNQoPdHJ1c3RlZF9zaWduZXJzGAIgAygLMhwubm9yZC5QeXRoTGF6ZXJUcnVzdGVkU2lnbmVyGqsBChZQeXRoTGF6ZXJTZXRGZWVkU3ltYm9sEhIKCmFjbF9wdWJrZXkYASABKAwSQgoFZmVlZHMYAiADKAsyMy5ub3JkLkFjdGlvbi5QeXRoTGF6ZXJTZXRGZWVkU3ltYm9sLkZlZWRTeW1ib2xJbnB1dBo5Cg9GZWVkU3ltYm9sSW5wdXQSDwoHZmVlZF9pZBgBIAEoDRIVCg1vcmFjbGVfc3ltYm9sGAIgASgJGiMKDVJldm9rZVNlc3Npb24SEgoKc2Vzc2lvbl9pZBgBIAEoBBo0Cg5SZWZyZXNoU2Vzc2lvbhISCgpzZXNzaW9uX2lkGAEgASgEEg4KBmV4cGlyeRgCIAEoAxonChFTZWxmUmV2b2tlU2Vzc2lvbhISCgpzZXNzaW9uX2lkGAEgASgEGhsKBVBhdXNlEhIKCmFjbF9wdWJrZXkYASABKAwaHQoHVW5wYXVzZRISCgphY2xfcHVia2V5GAEgASgMGjwKElNldEJhY2tzdG9wQWNjb3VudBISCgphY2xfcHVia2V5GAEgASgMEhIKCmFjY291bnRfaWQYAiABKA0a+QEKCVJlY2lwaWVudBIxCgdzcGVjaWFsGAEgASgLMh4ubm9yZC5BY3Rpb24uUmVjaXBpZW50LlNwZWNpYWxIABItCgVvd25lZBgCIAEoCzIcLm5vcmQuQWN0aW9uLlJlY2lwaWVudC5Pd25lZEgAEjEKB3Vub3duZWQYAyABKAsyHi5ub3JkLkFjdGlvbi5SZWNpcGllbnQuVW5vd25lZEgAGgkKB1NwZWNpYWwaGwoFT3duZWQSEgoKYWNjb3VudF9pZBgBIAEoDRodCgdVbm93bmVkEhIKCmFjY291bnRfaWQYASABKA1CEAoOcmVjaXBpZW50X3R5cGUanwEKCFRyYW5zZmVyEhIKCnNlc3Npb25faWQYASABKAQSFwoPZnJvbV9hY2NvdW50X2lkGAIgASgNEhAKCHRva2VuX2lkGAMgASgNEg4KBmFtb3VudBgEIAEoBBIyCg10b19hY2NvdW50X2lkGAggASgLMhYubm9yZC5BY3Rpb24uUmVjaXBpZW50SACIAQFCEAoOX3RvX2FjY291bnRfaWQaWwoQRmVlVmF1bHRUcmFuc2ZlchISCgphY2xfcHVia2V5GAEgASgMEhEKCXJlY2lwaWVudBgCIAEoDRIQCgh0b2tlbl9pZBgDIAEoDRIOCgZhbW91bnQYBCABKAQavAEKCkFkZFRyaWdnZXISEgoKc2Vzc2lvbl9pZBgBIAEoBBIkCgd0cmlnZ2VyGAIgASgLMhMubm9yZC5UcmlnZ2VyUmVjb3JkEhwKBmludGVudBgDIAEoDjIMLm5vcmQuSW50ZW50EhcKCmFjY291bnRfaWQYCiABKA1IAIgBARIhCghyZWZlcnJlchgLIAEoCzIKLm5vcmQuVTEyOEgBiAEBQg0KC19hY2NvdW50X2lkQgsKCV9yZWZlcnJlchqHAQoLRWRpdFRyaWdnZXISEgoKc2Vzc2lvbl9pZBgBIAEoBBISCgp0cmlnZ2VyX2lkGAIgASgEEigKC25ld190cmlnZ2VyGAMgASgLMhMubm9yZC5UcmlnZ2VyUmVjb3JkEhcKCmFjY291bnRfaWQYCiABKA1IAIgBAUINCgtfYWNjb3VudF9pZBpyCg1SZW1vdmVUcmlnZ2VyEhIKCnNlc3Npb25faWQYASABKAQSEQoJbWFya2V0X2lkGAIgASgNEhIKCnRyaWdnZXJfaWQYAyABKAQSFwoKYWNjb3VudF9pZBgKIAEoDUgAiAEBQg0KC19hY2NvdW50X2lkGkUKCkFkZEZlZVRpZXISEgoKYWNsX3B1YmtleRgBIAEoDBIjCgZjb25maWcYAiABKAsyEy5ub3JkLkZlZVRpZXJDb25maWcaVAoNVXBkYXRlRmVlVGllchIKCgJpZBgBIAEoDRIjCgZjb25maWcYAiABKAsyEy5ub3JkLkZlZVRpZXJDb25maWcSEgoKYWNsX3B1YmtleRgDIAEoDBpLChJVcGRhdGVBY2NvdW50c1RpZXISDwoHdGllcl9pZBgBIAEoDRIQCghhY2NvdW50cxgCIAMoDRISCgphY2xfcHVia2V5GAMgASgMGl8KCVVwZGF0ZUFjbBISCgphY2xfcHVia2V5GAEgASgMEhUKDXRhcmdldF9wdWJrZXkYAiABKAwSEgoKcm9sZXNfbWFzaxgDIAEoDRITCgtyb2xlc192YWx1ZRgEIAEoDRo1CgxGcmVlemVNYXJrZXQSEgoKYWNsX3B1YmtleRgBIAEoDBIRCgltYXJrZXRfaWQYAiABKA0aNwoOVW5mcmVlemVNYXJrZXQSEgoKYWNsX3B1YmtleRgBIAEoDBIRCgltYXJrZXRfaWQYAiABKA0aTQoLQ2xlYXJNYXJrZXQSEgoKYWNsX3B1YmtleRgBIAEoDBIRCgltYXJrZXRfaWQYAiABKA0SFwoPY2xlYXJhbmNlX3ByaWNlGAMgASgEGmEKDkV4ZWN1dGVUcmlnZ2VyEhQKDGV4ZWN1dG9yX3NpZBgBIAEoBBISCgphY2NvdW50X2lkGAIgASgNEhEKCW1hcmtldF9pZBgDIAEoDRISCgp0cmlnZ2VyX2lkGAQgASgEGkEKEFRha2VBbGxQb3NpdGlvbnMSEgoKc2Vzc2lvbl9pZBgBIAEoBBIZChF0YXJnZXRfYWNjb3VudF9pZBgCIAEoDSI3ChRVc2VyU2lnbmF0dXJlRnJhbWluZxIHCgNIRVgQABIWChJTT0xBTkFfVFJBTlNBQ1RJT04QAUIGCgRraW5kIstCCgdSZWNlaXB0EhEKCWFjdGlvbl9pZBgBIAEoBBIaCgNlcnIYICABKA4yCy5ub3JkLkVycm9ySAASQgoVY3JlYXRlX3Nlc3Npb25fcmVzdWx0GCEgASgLMiEubm9yZC5SZWNlaXB0LkNyZWF0ZVNlc3Npb25SZXN1bHRIABI4Cg50cmFkZV9vcl9wbGFjZRgiIAEoCzIeLm5vcmQuUmVjZWlwdC5QbGFjZU9yZGVyUmVzdWx0SAASPgoTY2FuY2VsX29yZGVyX3Jlc3VsdBgjIAEoCzIfLm5vcmQuUmVjZWlwdC5DYW5jZWxPcmRlclJlc3VsdEgAEjUKDmRlcG9zaXRfcmVzdWx0GCQgASgLMhsubm9yZC5SZWNlaXB0LkRlcG9zaXRSZXN1bHRIABI+ChNpbnNlcnRfdG9rZW5fcmVzdWx0GCUgASgLMh8ubm9yZC5SZWNlaXB0Lkluc2VydFRva2VuUmVzdWx0SAASQAoUaW5zZXJ0X21hcmtldF9yZXN1bHQYJiABKAsyIC5ub3JkLlJlY2VpcHQuSW5zZXJ0TWFya2V0UmVzdWx0SAASNwoPd2l0aGRyYXdfcmVzdWx0GCcgASgLMhwubm9yZC5SZWNlaXB0LldpdGhkcmF3UmVzdWx0SAASSQoZb3JhY2xlX3N5bWJvbF9mZWVkX3Jlc3VsdBgoIAEoCzIkLm5vcmQuUmVjZWlwdC5PcmFjbGVTeW1ib2xGZWVkUmVzdWx0SAASQAoUb3JhY2xlX3VwZGF0ZV9yZXN1bHQYKSABKAsyIC5ub3JkLlJlY2VpcHQuT3JhY2xlVXBkYXRlUmVzdWx0SAASSwoadXBkYXRlX2d1YXJkaWFuX3NldF9yZXN1bHQYKiABKAsyJS5ub3JkLlJlY2VpcHQuVXBkYXRlR3VhcmRpYW5TZXRSZXN1bHRIABI3Cg9zZXNzaW9uX3Jldm9rZWQYLCABKAsyHC5ub3JkLlJlY2VpcHQuU2Vzc2lvblJldm9rZWRIABImCgZwYXVzZWQYLSABKAsyFC5ub3JkLlJlY2VpcHQuUGF1c2VkSAASKgoIdW5wYXVzZWQYLiABKAsyFi5ub3JkLlJlY2VpcHQuVW5wYXVzZWRIABIwCgt0cmFuc2ZlcnJlZBgvIAEoCzIZLm5vcmQuUmVjZWlwdC5UcmFuc2ZlcnJlZEgAEjMKDXRyaWdnZXJfYWRkZWQYQCABKAsyGi5ub3JkLlJlY2VpcHQuVHJpZ2dlckFkZGVkSAASNwoPdHJpZ2dlcl9yZW1vdmVkGEEgASgLMhwubm9yZC5SZWNlaXB0LlRyaWdnZXJSZW1vdmVkSAASLAoGYXRvbWljGEMgASgLMhoubm9yZC5SZWNlaXB0LkF0b21pY1Jlc3VsdEgAEkIKFW1hcmtldF9mcmVlemVfdXBkYXRlZBhEIAEoCzIhLm5vcmQuUmVjZWlwdC5NYXJrZXRGcmVlemVVcGRhdGVkSAASNAoOZmVlX3RpZXJfYWRkZWQYRSABKAsyGi5ub3JkLlJlY2VpcHQuRmVlVGllckFkZGVkSAASOAoQZmVlX3RpZXJfdXBkYXRlZBhGIAEoCzIcLm5vcmQuUmVjZWlwdC5GZWVUaWVyVXBkYXRlZEgAEkIKFWFjY291bnRzX3RpZXJfdXBkYXRlZBhHIAEoCzIhLm5vcmQuUmVjZWlwdC5BY2NvdW50c1RpZXJVcGRhdGVkSAASLwoLYWNsX3VwZGF0ZWQYSCABKAsyGC5ub3JkLlJlY2VpcHQuQWNsVXBkYXRlZEgAEkIKFWZlZV92YXVsdF90cmFuc2ZlcnJlZBhJIAEoCzIhLm5vcmQuUmVjZWlwdC5GZWVWYXVsdFRyYW5zZmVycmVkSAASOQoQdHJpZ2dlcl9leGVjdXRlZBhKIAEoCzIdLm5vcmQuUmVjZWlwdC5UcmlnZ2VyRXhlY3V0ZWRIABJJChl0YWtlX2FsbF9wb3NpdGlvbnNfcmVzdWx0GEsgASgLMiQubm9yZC5SZWNlaXB0LlRha2VBbGxQb3NpdGlvbnNSZXN1bHRIABJAChRiYWNrc3RvcF9hY2NvdW50X3NldBhMIAEoCzIgLm5vcmQuUmVjZWlwdC5CYWNrc3RvcEFjY291bnRTZXRIABI1Cg50cmlnZ2VyX2VkaXRlZBhNIAEoCzIbLm5vcmQuUmVjZWlwdC5UcmlnZ2VyRWRpdGVkSAASMQoNdmF1bHRfY3JlYXRlZBhOIAEoCzIYLm5vcmQuQ3JlYXRlVmF1bHRSZWNlaXB0SAASPgoUdmF1bHRfY29uZmlnX3VwZGF0ZWQYTyABKAsyHi5ub3JkLlVwZGF0ZVZhdWx0Q29uZmlnUmVjZWlwdEgAEj0KFXZhdWx0X21hbmFnZXJfdXBkYXRlZBhQIAEoCzIcLm5vcmQuU2V0VmF1bHRNYW5hZ2VyUmVjZWlwdEgAEjsKE3ZhdWx0X2Vwb2Noc19zeW5jZWQYUSABKAsyHC5ub3JkLlZhdWx0U3luY0Vwb2Noc1JlY2VpcHRIABI0Cg92YXVsdF9kZXBvc2l0ZWQYUiABKAsyGS5ub3JkLlZhdWx0RGVwb3NpdFJlY2VpcHRIABI1Cg92YXVsdF93aXRoZHJhd24YUyABKAsyGi5ub3JkLlZhdWx0V2l0aGRyYXdSZWNlaXB0SAASPgoTY2xlYXJfbWFya2V0X3Jlc3VsdBhUIAEoCzIfLm5vcmQuUmVjZWlwdC5DbGVhck1hcmtldFJlc3VsdEgAElQKH3B5dGhfbGF6ZXJfb3JhY2xlX3VwZGF0ZV9yZXN1bHQYVSABKAsyKS5ub3JkLlJlY2VpcHQuUHl0aExhemVyT3JhY2xlVXBkYXRlUmVzdWx0SAASXwolcHl0aF9sYXplcl90cnVzdGVkX3NpZ25lcnNfc2V0X3Jlc3VsdBhWIAEoCzIuLm5vcmQuUmVjZWlwdC5QeXRoTGF6ZXJUcnVzdGVkU2lnbmVyc1NldFJlc3VsdEgAElcKIXB5dGhfbGF6ZXJfZmVlZF9zeW1ib2xfc2V0X3Jlc3VsdBhXIAEoCzIqLm5vcmQuUmVjZWlwdC5QeXRoTGF6ZXJGZWVkU3ltYm9sU2V0UmVzdWx0SAASVQofcmVkdWNlX29yZGVyX2xpcXVpZGF0aW9uX3Jlc3VsdBhYIAEoCzIqLm5vcmQuUmVjZWlwdC5SZWR1Y2VPcmRlckxpcXVpZGF0aW9uUmVzdWx0SAASPgoTbWFya2V0X21vZGVfdXBkYXRlZBhZIAEoCzIfLm5vcmQuUmVjZWlwdC5NYXJrZXRNb2RlVXBkYXRlZEgAEiwKDnJmcV9tYWtlcnNfc2V0GFogASgLMhIubm9yZC5SZnFNYWtlcnNTZXRIABI7ChFzZXNzaW9uX3JlZnJlc2hlZBhbIAEoCzIeLm5vcmQuUmVjZWlwdC5TZXNzaW9uUmVmcmVzaGVkSAASQAoUc2VsZl9zZXNzaW9uX3Jldm9rZWQYXCABKAsyIC5ub3JkLlJlY2VpcHQuU2VsZlNlc3Npb25SZXZva2VkSAAaeAoGUG9zdGVkEhgKBHNpZGUYASABKA4yCi5ub3JkLlNpZGUSEQoJbWFya2V0X2lkGAIgASgNEg0KBXByaWNlGAMgASgEEgwKBHNpemUYBCABKAQSEAoIb3JkZXJfaWQYBSABKAQSEgoKYWNjb3VudF9pZBgGIAEoDRpwCgVUcmFkZRIQCghvcmRlcl9pZBgCIAEoBBINCgVwcmljZRgEIAEoBBIMCgRzaXplGAUgASgEEhIKCmFjY291bnRfaWQYBiABKA0SEQoJbWFrZXJfZmVlGAcgASgEEhEKCXRha2VyX2ZlZRgIIAEoBBptChNDcmVhdGVTZXNzaW9uUmVzdWx0EhIKCnNlc3Npb25faWQYASABKAQSDgoGZXhwaXJ5GAIgASgDEh0KEHJlZnJlc2hfZGVhZGxpbmUYAyABKANIAIgBAUITChFfcmVmcmVzaF9kZWFkbGluZRpMChBDYW5jZWxsZWRUcmlnZ2VyEhIKCmFjY291bnRfaWQYASABKA0SJAoHdHJpZ2dlchgCIAEoCzITLm5vcmQuVHJpZ2dlclJlY29yZBraAQoLT3JkZXJVcGRhdGUSMAoGcmVhc29uGAEgASgOMiAubm9yZC5SZWNlaXB0Lk9yZGVyVXBkYXRlLlJlYXNvbhISCgphY2NvdW50X2lkGAIgASgNEhAKCG9yZGVyX2lkGAMgASgEEhYKDnJlbWFpbmluZ19zaXplGAQgASgEEhYKDmNhbmNlbGxlZF9zaXplGAUgASgEEg0KBXByaWNlGAYgASgEIjQKBlJlYXNvbhIPCgtSRURVQ0VfT05MWRAAEhkKFVNFTEZfVFJBREVfUFJFVkVOVElPThABGvcCChBQbGFjZU9yZGVyUmVzdWx0EikKBnBvc3RlZBgBIAEoCzIULm5vcmQuUmVjZWlwdC5Qb3N0ZWRIAIgBARIiCgVmaWxscxgCIAMoCzITLm5vcmQuUmVjZWlwdC5UcmFkZRIcCg9jbGllbnRfb3JkZXJfaWQYAyABKARIAYgBARIfChJzZW5kZXJfdHJhY2tpbmdfaWQYBCABKARIAogBARI6ChJjYW5jZWxsZWRfdHJpZ2dlcnMYBSADKAsyHi5ub3JkLlJlY2VpcHQuQ2FuY2VsbGVkVHJpZ2dlchIwCg1vcmRlcl91cGRhdGVzGAYgAygLMhkubm9yZC5SZWNlaXB0Lk9yZGVyVXBkYXRlEjEKCXBsYWNlbWVudBgHIAEoCzIeLm5vcmQuUmVjZWlwdC5QbGFjZW1lbnRSZWNlaXB0QgkKB19wb3N0ZWRCEgoQX2NsaWVudF9vcmRlcl9pZEIVChNfc2VuZGVyX3RyYWNraW5nX2lkGnoKHFJlZHVjZU9yZGVyTGlxdWlkYXRpb25SZXN1bHQSNgoOdHJhZGVfb3JfcGxhY2UYASABKAsyHi5ub3JkLlJlY2VpcHQuUGxhY2VPcmRlclJlc3VsdBIiCgZhY3Rpb24YAiABKAsyEi5ub3JkLlRyYWRlT3JQbGFjZRqvAQoQUGxhY2VtZW50UmVjZWlwdBIhCgRyb2xlGAEgASgOMhMubm9yZC5QbGFjZW1lbnRSb2xlEjgKB2FjY291bnQYAiABKAsyJS5ub3JkLlJlY2VpcHQuQWNjb3VudFBsYWNlbWVudFJlY2VpcHRIABI0CgV2YXVsdBgDIAEoCzIjLm5vcmQuUmVjZWlwdC5WYXVsdFBsYWNlbWVudFJlY2VpcHRIAEIICgZ0YXJnZXQaGQoXQWNjb3VudFBsYWNlbWVudFJlY2VpcHQaTAoVVmF1bHRQbGFjZW1lbnRSZWNlaXB0EhAKCHZhdWx0X2lkGAEgASgNEiEKBmhlYWx0aBgCIAEoCzIRLm5vcmQuVmF1bHRIZWFsdGga/gEKD1RyaWdnZXJFeGVjdXRlZBITCgtleGVjdXRvcl9pZBgBIAEoDRISCgphY2NvdW50X2lkGAIgASgNEhEKCW1hcmtldF9pZBgDIAEoDRIeCgd0cmlnZ2VyGAQgASgLMg0ubm9yZC5UcmlnZ2VyEhIKCnRyaWdnZXJfaWQYCCABKAQSMQoHc3VjY2VzcxgFIAEoCzIeLm5vcmQuUmVjZWlwdC5QbGFjZU9yZGVyUmVzdWx0SAASKQoHZmFpbHVyZRgGIAEoDjIWLm5vcmQuVHJpZ2dlckV4ZWNFcnJvckgAEhMKCWNhbmNlbGxlZBgHIAEoCEgAQggKBnN0YXR1cxoyCg5UYWtlQWxsQmFsYW5jZRIQCgh0b2tlbl9pZBgBIAEoDRIOCgZhbW91bnQYAiABKAQadwoPVGFrZUFsbFBvc2l0aW9uEhEKCW1hcmtldF9pZBgBIAEoDRIRCgliYXNlX3NpemUYAiABKAMSGAoQc2V0dGxlbWVudF9wcmljZRgDIAEoBBIkChBiYW5rcnVwdGN5X3F1b3RlGAQgASgLMgoubm9yZC5VMTI4GlMKE1Rha2VBbGxPcmRlclVwZGF0ZXMSEQoJbWFya2V0X2lkGAEgASgNEikKBm9yZGVycxgCIAMoCzIZLm5vcmQuUmVjZWlwdC5PcmRlclVwZGF0ZRraAQoWVGFrZUFsbFBvc2l0aW9uc1Jlc3VsdBIYChB0YWtlcl9hY2NvdW50X2lkGAEgASgNEjQKDnRha2VuX2JhbGFuY2VzGAMgAygLMhwubm9yZC5SZWNlaXB0LlRha2VBbGxCYWxhbmNlEjYKD3Rha2VuX3Bvc2l0aW9ucxgEIAMoCzIdLm5vcmQuUmVjZWlwdC5UYWtlQWxsUG9zaXRpb24SOAoNb3JkZXJfdXBkYXRlcxgFIAMoCzIhLm5vcmQuUmVjZWlwdC5UYWtlQWxsT3JkZXJVcGRhdGVzGnMKGUNsZWFyTWFya2V0Q2FuY2VsbGVkT3JkZXISEgoKYWNjb3VudF9pZBgBIAEoDRIQCghvcmRlcl9pZBgCIAEoBBIcCg9jbGllbnRfb3JkZXJfaWQYAyABKARIAIgBAUISChBfY2xpZW50X29yZGVyX2lkGq0BChlDbGVhck1hcmtldENsb3NlZFBvc2l0aW9uEhIKCmFjY291bnRfaWQYASABKA0SEQoJYmFzZV9zaXplGAIgASgDEhgKEHNldHRsZW1lbnRfcHJpY2UYAyABKAQSGQoFcXVvdGUYBCABKAsyCi5ub3JkLlUxMjgSGQoRdHJhZGluZ19wbmxfZGVsdGEYBSABKAMSGQoRZnVuZGluZ19wbmxfZGVsdGEYBiABKAMaxQEKEUNsZWFyTWFya2V0UmVzdWx0EhEKCW1hcmtldF9pZBgBIAEoDRIXCg9jbGVhcmFuY2VfcHJpY2UYBSABKAQSQQoQY2FuY2VsbGVkX29yZGVycxgDIAMoCzInLm5vcmQuUmVjZWlwdC5DbGVhck1hcmtldENhbmNlbGxlZE9yZGVyEkEKEGNsb3NlZF9wb3NpdGlvbnMYBCADKAsyJy5ub3JkLlJlY2VpcHQuQ2xlYXJNYXJrZXRDbG9zZWRQb3NpdGlvbhqeAQoRQ2FuY2VsT3JkZXJSZXN1bHQSEAoIb3JkZXJfaWQYASABKAQSEgoKYWNjb3VudF9pZBgCIAEoDRIcCg9jbGllbnRfb3JkZXJfaWQYAyABKARIAIgBARIxCglwbGFjZW1lbnQYBCABKAsyHi5ub3JkLlJlY2VpcHQuUGxhY2VtZW50UmVjZWlwdEISChBfY2xpZW50X29yZGVyX2lkGnAKDURlcG9zaXRSZXN1bHQSEAoIdG9rZW5faWQYASABKA0SDgoGYW1vdW50GAIgASgEEhIKCmFjY291bnRfaWQYAyABKA0SFAoMdXNlcl9jcmVhdGVkGAQgASgIEhMKC3VzZXJfcHVia2V5GAUgASgMGkMKEUluc2VydFRva2VuUmVzdWx0EhIKCmNoYWluX2FkZHIYASABKAwSGgoFdG9rZW4YAiABKAsyCy5ub3JkLlRva2VuGjIKEkluc2VydE1hcmtldFJlc3VsdBIcCgZtYXJrZXQYASABKAsyDC5ub3JkLk1hcmtldBp5Cg5XaXRoZHJhd1Jlc3VsdBIQCgh0b2tlbl9pZBgBIAEoDRIOCgZhbW91bnQYAiABKAQSDwoHYmFsYW5jZRgDIAEoBBISCgphY2NvdW50X2lkGAQgASgNEgsKA2ZlZRgFIAEoBBITCgt1c2VyX3B1YmtleRgGIAEoDBpAChZPcmFjbGVTeW1ib2xGZWVkUmVzdWx0EhUKDW9yYWNsZV9zeW1ib2wYASABKAkSDwoHZmVlZF9pZBgCIAEoDBonChJPcmFjbGVVcGRhdGVSZXN1bHQSEQoJdGltZXN0YW1wGAEgASgDGjcKG1B5dGhMYXplck9yYWNsZVVwZGF0ZVJlc3VsdBIYChB0aW1lc3RhbXBfbWlsbGlzGAEgASgEGlkKIFB5dGhMYXplclRydXN0ZWRTaWduZXJzU2V0UmVzdWx0EjUKD3RydXN0ZWRfc2lnbmVycxgBIAMoCzIcLm5vcmQuUHl0aExhemVyVHJ1c3RlZFNpZ25lchqaAQocUHl0aExhemVyRmVlZFN5bWJvbFNldFJlc3VsdBJECgVmZWVkcxgBIAMoCzI1Lm5vcmQuUmVjZWlwdC5QeXRoTGF6ZXJGZWVkU3ltYm9sU2V0UmVzdWx0LkZlZWRTeW1ib2waNAoKRmVlZFN5bWJvbBIPCgdmZWVkX2lkGAEgASgNEhUKDW9yYWNsZV9zeW1ib2wYAiABKAkaSAoXVXBkYXRlR3VhcmRpYW5TZXRSZXN1bHQSGgoSZ3VhcmRpYW5fc2V0X2luZGV4GAEgASgNEhEKCWFkZHJlc3NlcxgCIAMoDBpDCgxQZXJwUG9zaXRpb24SEQoJbWFya2V0X2lkGAEgASgNEhEKCWJhc2Vfc2l6ZRgCIAEoAxINCgVwcmljZRgDIAEoBBoQCg5TZXNzaW9uUmV2b2tlZBoUChJTZWxmU2Vzc2lvblJldm9rZWQaNgoQU2Vzc2lvblJlZnJlc2hlZBISCgpzZXNzaW9uX2lkGAEgASgEEg4KBmV4cGlyeRgCIAEoAxoICgZQYXVzZWQaCgoIVW5wYXVzZWQaKAoSQmFja3N0b3BBY2NvdW50U2V0EhIKCmFjY291bnRfaWQYASABKA0a/AEKCVJlY2lwaWVudBIyCgdzcGVjaWFsGAEgASgLMh8ubm9yZC5SZWNlaXB0LlJlY2lwaWVudC5TcGVjaWFsSAASLgoFb3duZWQYAiABKAsyHS5ub3JkLlJlY2VpcHQuUmVjaXBpZW50Lk93bmVkSAASMgoHdW5vd25lZBgDIAEoCzIfLm5vcmQuUmVjZWlwdC5SZWNpcGllbnQuVW5vd25lZEgAGgkKB1NwZWNpYWwaGwoFT3duZWQSEgoKYWNjb3VudF9pZBgBIAEoDRodCgdVbm93bmVkEhIKCmFjY291bnRfaWQYASABKA1CEAoOcmVjaXBpZW50X3R5cGUaowEKC1RyYW5zZmVycmVkEhcKD2Zyb21fYWNjb3VudF9pZBgBIAEoDRIrCgp0b19hY2NvdW50GAIgASgLMhcubm9yZC5SZWNlaXB0LlJlY2lwaWVudBIQCgh0b2tlbl9pZBgDIAEoDRIOCgZhbW91bnQYBCABKAQSFwoPYWNjb3VudF9jcmVhdGVkGAUgASgIEhMKC3VzZXJfcHVia2V5GAYgASgMGkoKE0ZlZVZhdWx0VHJhbnNmZXJyZWQSEQoJcmVjaXBpZW50GAEgASgNEhAKCHRva2VuX2lkGAIgASgNEg4KBmFtb3VudBgDIAEoBBp6CgxUcmlnZ2VyQWRkZWQSEgoKYWNjb3VudF9pZBgBIAEoDRISCgp0cmlnZ2VyX2lkGAIgASgEEiQKB3RyaWdnZXIYAyABKAsyEy5ub3JkLlRyaWdnZXJSZWNvcmQSHAoGaW50ZW50GAQgASgOMgwubm9yZC5JbnRlbnQafAoOVHJpZ2dlclJlbW92ZWQSEgoKYWNjb3VudF9pZBgBIAEoDRISCgp0cmlnZ2VyX2lkGAIgASgEEiQKB3RyaWdnZXIYAyABKAsyEy5ub3JkLlRyaWdnZXJSZWNvcmQSHAoGaW50ZW50GAQgASgOMgwubm9yZC5JbnRlbnQagAEKDVRyaWdnZXJFZGl0ZWQSEgoKYWNjb3VudF9pZBgBIAEoDRISCgp0cmlnZ2VyX2lkGAIgASgEEicKEHByZXZpb3VzX3RyaWdnZXIYAyABKAsyDS5ub3JkLlRyaWdnZXISHgoHdHJpZ2dlchgEIAEoCzINLm5vcmQuVHJpZ2dlcho4ChNNYXJrZXRGcmVlemVVcGRhdGVkEhEKCW1hcmtldF9pZBgBIAEoDRIOCgZmcm96ZW4YAiABKAgakAEKEU1hcmtldE1vZGVVcGRhdGVkEhEKCW1hcmtldF9pZBgBIAEoDRIlCgttYXJrZXRfbW9kZRgCIAEoDjIQLm5vcmQuTWFya2V0TW9kZRJBChBjYW5jZWxsZWRfb3JkZXJzGAMgAygLMicubm9yZC5SZWNlaXB0LkNsZWFyTWFya2V0Q2FuY2VsbGVkT3JkZXIaPwoMRmVlVGllckFkZGVkEiMKBmNvbmZpZxgBIAEoCzITLm5vcmQuRmVlVGllckNvbmZpZxIKCgJpZBgCIAEoDRpBCg5GZWVUaWVyVXBkYXRlZBIKCgJpZBgBIAEoDRIjCgZjb25maWcYAiABKAsyEy5ub3JkLkZlZVRpZXJDb25maWcaOAoTQWNjb3VudHNUaWVyVXBkYXRlZBIPCgd0aWVyX2lkGAEgASgNEhAKCGFjY291bnRzGAIgAygNGmAKCkFjbFVwZGF0ZWQSEgoKYWNsX3B1YmtleRgBIAEoDBISCgpyb2xlc19tYXNrGAIgASgEEhUKDXRhcmdldF9wdWJrZXkYAyABKAwSEwoLcm9sZXNfdmFsdWUYBCABKAQa7AMKGUF0b21pY1N1YmFjdGlvblJlc3VsdEtpbmQSPAoScGxhY2Vfb3JkZXJfcmVzdWx0GAEgASgLMh4ubm9yZC5SZWNlaXB0LlBsYWNlT3JkZXJSZXN1bHRIABI3CgxjYW5jZWxfb3JkZXIYAiABKAsyHy5ub3JkLlJlY2VpcHQuQ2FuY2VsT3JkZXJSZXN1bHRIABIzCg10cmlnZ2VyX2FkZGVkGAMgASgLMhoubm9yZC5SZWNlaXB0LlRyaWdnZXJBZGRlZEgAEjcKD3RyaWdnZXJfcmVtb3ZlZBgEIAEoCzIcLm5vcmQuUmVjZWlwdC5UcmlnZ2VyUmVtb3ZlZEgAEjUKDnRyaWdnZXJfZWRpdGVkGAUgASgLMhsubm9yZC5SZWNlaXB0LlRyaWdnZXJFZGl0ZWRIABJOChhyZWR1Y2Vfb3JkZXJfbGlxdWlkYXRpb24YBiABKAsyKi5ub3JkLlJlY2VpcHQuUmVkdWNlT3JkZXJMaXF1aWRhdGlvblJlc3VsdEgAEioKCnJmcV9yZXN1bHQYByABKAsyFC5ub3JkLlBsYWNlUkZRUmVzdWx0SAASLgoPcmZxX2ZpbGxfcmVzdWx0GAggASgLMhMubm9yZC5GaWxsUkZRUmVzdWx0SABCBwoFaW5uZXIaSAoMQXRvbWljUmVzdWx0EjgKB3Jlc3VsdHMYASADKAsyJy5ub3JkLlJlY2VpcHQuQXRvbWljU3ViYWN0aW9uUmVzdWx0S2luZEIGCgRraW5kKhgKBFNpZGUSBwoDQVNLEAASBwoDQklEEAEqHwoKTWFya2V0TW9kZRIICgRDTE9CEAASBwoDUkZREAEqYwoMTWFya2V0UmVnaW1lEhgKFE1BUktFVF9SRUdJTUVfTk9STUFMEAASGwoXTUFSS0VUX1JFR0lNRV9QT1NUX09OTFkQARIcChhNQVJLRVRfUkVHSU1FX1RSQURFX09OTFkQAipqCg1SZnFGaWxsU3RhdHVzEh0KGVJGUV9GSUxMX1NUQVRVU19DT01QTEVURUQQABIdChlSRlFfRklMTF9TVEFUVVNfVFJVTkNBVEVEEAESGwoXUkZRX0ZJTExfU1RBVFVTX1BBUlRJQUwQAiotCgtUcmlnZ2VyS2luZBINCglTVE9QX0xPU1MQABIPCgtUQUtFX1BST0ZJVBABKiQKBkludGVudBIMCghERUNSRUFTRRAAEgwKCElOQ1JFQVNFEAEqTwoIRmlsbE1vZGUSCQoFTElNSVQQABINCglQT1NUX09OTFkQARIXChNJTU1FRElBVEVfT1JfQ0FOQ0VMEAISEAoMRklMTF9PUl9LSUxMEAMqrgEKDVBsYWNlbWVudFJvbGUSIAocUExBQ0VNRU5UX1JPTEVfQUNDT1VOVF9PV05FUhAAEiAKHFBMQUNFTUVOVF9ST0xFX1ZBVUxUX01BTkFHRVIQARIeChpQTEFDRU1FTlRfUk9MRV9TVVBFUl9BRE1JThACEhoKFlBMQUNFTUVOVF9ST0xFX1RSSUdHRVIQAxIdChlQTEFDRU1FTlRfUk9MRV9MSVFVSURBVE9SEAQqMQoTU2VsZlRyYWRlUHJldmVudGlvbhIICgROT05FEAASEAoMRVhQSVJFX01BS0VSEAEqJgoKTWFya2V0VHlwZRIICgRTUE9UEAASDgoKUEVSUEVUVUFMUxABKn0KEFRyaWdnZXJFeGVjRXJyb3ISDwoLTk9fUE9TSVRJT04QABITCg9QTEFOTklOR19GQUlMRUQQARIOCgpCQU5LUlVQVENZEAISFQoRUklTS19DSEVDS19GQUlMRUQQAxIcChhSRURVQ0VfT05MWV9DSEVDS19GQUlMRUQQBCowCg5TcGVjaWFsQWNjb3VudBINCglGRUVfVkFVTFQQABIPCgtDTEFJTV9WQVVMVBABKl0KC1ZhdWx0U3RhdHVzEhcKE1ZBVUxUX1NUQVRVU19BQ1RJVkUQABIcChhWQVVMVF9TVEFUVVNfREVSSVNLX09OTFkQARIXChNWQVVMVF9TVEFUVVNfRlJPWkVOEAIq4SkKBUVycm9yEg0KCURVUExJQ0FURRAAEhUKEUlOVkFMSURfU0lHTkFUVVJFEAMSFAoQTUFSS0VUX05PVF9GT1VORBAEEhMKD1RPS0VOX05PVF9GT1VORBAFEhIKDlVTRVJfTk9UX0ZPVU5EEAYSFQoRU0VTU0lPTl9OT1RfRk9VTkQQBxITCg9PUkRFUl9OT1RfRk9VTkQQCBITCg9PUkRFUl9TSVpFX1pFUk8QCRIOCgpBUklUSE1FVElDEAsSFwoTQVJJVEhNRVRJQ19PVkVSRkxPVxAMEhgKFEFSSVRITUVUSUNfVU5ERVJGTE9XEA0SHwobQVJJVEhNRVRJQ19ESVZJU0lPTl9CWV9aRVJPEA4SGgoWS0VZX0FMUkVBRFlfUkVHSVNURVJFRBAPEhwKGFVQREFURV9USU1FU1RBTVBfSU5fUEFTVBAREhgKFFRPT19NQU5ZX09QRU5fT1JERVJTEBISHQoZV0lUSERSQVdfQU1PVU5UX1RPT19TTUFMTBAVEikKJVNPVVJDRV9BTkRfVEFSR0VUX1NIT1VMRF9OT1RfQkVfRVFVQUwQGBISCg5ERUNPREVfRkFJTFVSRRAgEiAKHERFQ09ERV9GQUlMVVJFX0xFTkdUSF9QUkVGSVgQIRIWChJERUNPREVfRkFJTFVSRV9SQVcQIhIZChVERUNPREVfRkFJTFVSRV9ET01BSU4QIxIfChtVUERBVEVfUFVCTElTSF9USU1FX0lOX1BBU1QQJBILCgdTRVNTSU9OEDASHwobU0VTU0lPTl9SRUZSRVNIX05PVF9FTkFCTEVEEDESKgomU0VTU0lPTl9SRUZSRVNIX0RFQURMSU5FX0JFRk9SRV9FWFBJUlkQMhIXChNQWVRIX0ZFRURfTk9UX0FEREVEEF0SFQoRUFlUSF9GRUVEX01JU1NJTkcQXhIbChdQWVRIX0ZFRURfQUxSRUFEWV9BRERFRBBfEiMKH1BZVEhfR1VBUkRJQU5fU0VUX1VOSU5JVElBTElaRUQQYBIdChlQWVRIX0dVQVJESUFOX1NFVF9JTlZBTElEEGESIwofUFlUSF9GRUVEX0RFQ0lNQUxTX09VVF9PRl9SQU5HRRBiEiAKHFBZVEhfRkVFRF9QUklDRV9PVVRfT0ZfUkFOR0UQYxIjCh9QWVRIX0ZFRURfVkFSSUFOQ0VfT1VUX09GX1JBTkdFEGQSNQoxUFlUSF9HVUFSRElBTl9TRVRfQU5EX1BZVEhfU0lHTkFUVVJFX0RPX05PVF9NQVRDSBBlEhwKGElOVkFMSURfVE9LRU5fUEFSQU1FVEVSUxBmEhwKGElOREVYX1BSSUNFX09VVF9PRl9SQU5HRRBnEh8KG0lOREVYX0RFQ0lNQUxTX09VVF9PRl9SQU5HRRBoEhkKFUlOVkFMSURfU1RBVEVfVkVSU0lPThBpEhMKD0lOVkFMSURfTUFSR0lOUxBsEiEKHU1BUktFVF9ERUNJTUFMU19FWENFRURfTElNSVRTEG0SEwoPVE9PX01BTllfVE9LRU5TEG4SCAoEVElFUhBzEhkKFVRJRVJfRkVFX09VVF9PRl9SQU5HRRB0EhgKFFRJRVJfSURfT1VUX09GX1JBTkdFEHUSEgoOVElFUl9OT1RfRk9VTkQQdhIUChBGVU5ESU5HX09WRVJGTE9XEHsSNwozQ0FOX1JFRFVDRV9QT1NJVElPTl9PTkxZX0lGX0FMTF9PUkRFUlNfQVJFX0NBTkNFTEVEEHwSFwoTVU5FWFBFQ1RFRF9UT0tFTl9JRBB/EhYKEVJFUEVBVEVEX09SREVSX0lEEIABEh4KGUNMSUVOVF9PUkRFUl9JRF9UT09fTEFSR0UQgQESFAoPVE9LRU5fTk9UX1JFQURZEIIBEh0KGFRPS0VOX0FMUkVBRFlfUkVHSVNURVJFRBCDARIhChxJTU1FRElBVEVfT1JERVJfR09UX05PX0ZJTExTEIUBEhkKFEZBSUxFRF9UT19GSUxMX0xJTUlUEIYBEjAKK1BPU1RfT05MWV9NVVNUX05PVF9GSUxMX0FOWV9PUFBPU0lURV9PUkRFUlMQhwESDAoHSU5WQUxJRBCIARIQCgtNQUlOVEVOQU5DRRCJARIaChVNSU5JTVVNX1NJWkVfREVDSU1BTFMQigESMgotUEFSQU1FVEVSU19XSUxMX0NSRUFURV9OT05fT1BFUkFUSU9OQUxfTUFSS0VUEIsBEiIKHU9OTFlfSU1NRURJQVRFX09SREVSU19BTExPV0VEEIwBEhsKFlRPT19NQU5ZX1VTRVJfQUNDT1VOVFMQjQESFgoRQUNDT1VOVF9OT1RfRk9VTkQQjgESGgoVQUNDT1VOVF9JTlZBTElEX09XTkVSEI8BEhsKFlNVQkFDVElPTl9PVVRfT0ZfUkFOR0UQkAESEQoMRFVTVF9BQ0NPVU5UEJEBEgwKB0JBTEFOQ0UQoAESHQoYQkFMQU5DRV9ERVBPU0lUX09WRVJGTE9XEKEBEhwKF0JBTEFOQ0VfQ0hBTkdFX09WRVJGTE9XEKIBEiIKHUJBTEFOQ0VfQ0hBTkdFX0xJTUlUX0VYQ0VFREVEEKMBEhkKFEJBTEFOQ0VfSU5TVUZGSUNJRU5UEKQBEh4KGVVOQVVUSEVOVElDQVRFRF9MMV9BQ1RJT04QpQESHQoYRU5DT0RFRF9BQ1RJT05fVE9PX0xBUkdFEKYBEgwKB1RSSUdHRVIQqAESGgoVVFJJR0dFUl9JTlZBTElEX1BSSUNFEKkBEhYKEVRSSUdHRVJfTk9UX0ZPVU5EEKoBEisKJlRSSUdHRVJfT05MWV9ERUNSRUFTRV9PUkRFUlNfU1VQUE9SVEVEEKsBEigKI1RSSUdHRVJfTUFYX1NJWkVfUExBQ0VNRU5UX0VYQ0VFREVEEKwBEhgKE1RSSUdHRVJfTk9UX0NIQU5HRUQQrQESDgoJVElNRVNUQU1QELABEh8KGlRJTUVTVEFNUF9PVVRfT0ZfVEhSRVNIT0xEELEBEhQKD1RJTUVTVEFNUF9TVEFMRRCyARIcChhFWFBJUllfVElNRVNUQU1QX0lOX1BBU1QQEBIlCiBCQU5LUlVQVENZX0lOU1VGRklDSUVOVF9DT1ZFUkFHRRC5ARIZChRCQU5LUlVQVENZX05PVF9GT1VORBC6ARIbChZCQU5LUlVQVENZX05PVF9BTExPV0VEELsBEhUKEE1BUktFVF9OT1RfUkVBRFkQwAESEgoNTUFSS0VUX0ZST1pFThDBARIRCgxNQVJLRVRfRU1QVFkQwgESMAorTUFSS0VUX01PREVfRE9FU19OT1RfU1VQUE9SVF9USElTX09QRVJBVElPThDDARINCghQT1NJVElPThDIARIXChJQT1NJVElPTl9OT1RfRk9VTkQQyQESGQoUUE9TSVRJT05fU1RBVEVfT1JERVIQygESHwoaUE9TSVRJT05fU1RBVEVfT1JERVJfUFJJQ0UQywESHgoZUE9TSVRJT05fU1RBVEVfT1JERVJfU0laRRDMARIeChlQT1NJVElPTl9TVEFURV9PUkRFUl9TSURFEM0BEhgKE1BPU0lUSU9OX1NJWkVfTElNSVQQzgESGAoTUE9TSVRJT05fU1RBVEVfUEVSUBDPARIkCh9QT1NJVElPTl9TVEFURV9PUkRFUl9ERUxFR0FUSU9OENABEgoKBVBSSUNFENEBEhsKFlNJR05BVFVSRV9WRVJJRklDQVRJT04Q2QESMAorU0lHTkFUVVJFX1ZFUklGSUNBVElPTl9NQUxGT1JNRURfUFVCTElDX0tFWRDaARIqCiVTSUdOQVRVUkVfVkVSSUZJQ0FUSU9OX0lOVkFMSURfTEVOR1RIENsBEgkKBFJJU0sQ4AESNAovUklTS19ERUxFR0FUSU9OX01GX1RPX0JFX0xFU1NfVEhBTl9PUl9FUVVBTF9NTUYQ4QESJAofUklTS19PTUZfTEVTU19USEFOX09SX0VRVUFMX0lNRhDiARIkCh9SSVNLX09NRl9MRVNTX1RIQU5fT1JfRVFVQUxfQ01GEOMBEjUKMFJJU0tfVU5IRUFMVEhZX01GX0FORF9QT05fQUZURVJfQkVUVEVSX09GX0JFRk9SRRDkARIqCiVSSVNLX1RSQURFX09NRl9MRVNTX1RIQU5fT1JfRVFVQUxfQ01GEOUBEhQKD1JJU0tfTk9UX0VOT1VHSBDmARIUCg9PUkRFUl9FWEVDVVRJT04Q8AESGgoVT1JERVJfRVhFQ1VUSU9OX0VNUFRZEPEBEiEKHE9SREVSX0VYRUNVVElPTl9GSUxMX09SX0tJTEwQ8gESIwoeT1JERVJfRVhFQ1VUSU9OX01JU1NJTkdfTElNSVRTEPMBEiIKHU9SREVSX0VYRUNVVElPTl9NSVNTSU5HX1BSSUNFEPQBEh8KGk9SREVSX0VYRUNVVElPTl9TSVpFX0xJTUlUEPUBEiAKG09SREVSX0VYRUNVVElPTl9MSU1JVF9QUklDRRD2ARIeChlPUkRFUl9SRURVQ0VfSVNfUE9TVF9PTkxZEPcBEh8KGk9SREVSX0VYRUNVVElPTl9TRUxMX1BSSUNFEPgBEiUKIE9SREVSX1NJWkVfRVhDRUVEU19QT1NJVElPTl9TSVpFEPkBEgwKB0FUT01JQ1MQgAISKAojQVRPTUlDU19UUkFERVNfQ0FOTk9UX0ZPTExPV19QTEFDRVMQgQISMAorQVRPTUlDU19DQU5DRUxTX0NBTk5PVF9GT0xMT1dfVFJBREVTX1BMQUNFUxCCAhIdChhBVE9NSUNTX0RVUExJQ0FURV9DQU5DRUwQgwISGAoTUkZRX09SREVSX1RJTUVPVVRFRBD6ARImCiFBQ1RJT05fUE9TSVRJT05fU0hPVUxEX0JFX0NPVkVSRUQQkQISGQoUQUNUSU9OX0lOVkFMSURfTk9OQ0UQkgISKQokQUNUSU9OX1BST1BPU0VEX1BSSUNFX01VU1RfQkVfSElHSEVSEJMCEhwKF0FETUlOX1JPTEVfSU5TVUZGSUNJRU5UEJQCEhQKD0FETUlOX05PVF9GT1VORBCVAhIpCiRVTklRVUVfU1VQRVJfQURNSU5fQ0FOTk9UX0JFX1JFTU9WRUQQlgISHwoaU1VQRVJfQURNSU5fQUxSRUFEWV9FWElTVFMQlwISFQoQVFJJR0dFUl9DT05GTElDVBCYAhIaChVUUklHR0VSX0VESVRfQ09ORkxJQ1QQmQISHAoXVFJJR0dFUl9SRU1PVkVfQ09ORkxJQ1QQmgISDQoIVFJBTlNGRVIQoAISLgopVFJBTlNGRVJfVE9fVU5PV05FRF9BQ0NPVU5UX0lTX1BST0hJQklURUQQoQISLAonVFJBTlNGRVJfVE9fT1dORURfQUNDT1VOVF9XQVNfUkVRVUVTVEVEEKICEioKJVRSQU5TRkVSX1RPX0NMQUlNX1ZBVUxUX0lTX1BST0hJQklURUQQowISCgoFVkFVTFQQqAISFAoPVkFVTFRfTk9UX0ZPVU5EEKkCEh0KGFZBVUxUX0FDVElPTl9OT1RfQUxMT1dFRBCqAhIZChRWQVVMVF9TVEFUVVNfSU5WQUxJRBCrAhIlCiBWQVVMVF9SRURVQ0VfT05MWV9PUkRFUl9SRVFVSVJFRBCsAhImCiFWQVVMVF9BQ1RJT05fV09VTERfREVHUkFERV9TVEFUVVMQrQISGQoUVkFVTFRfVVNFUl9OT1RfRk9VTkQQrgISHQoYVkFVTFRfVVNFUl9IQVNfTk9fU0hBUkVTEK8CEhwKF1ZBVUxUX1BFUk1JU1NJT05fREVOSUVEELYCEhIKDVZBVUxUX0RFUE9TSVQQsAISMQosVkFVTFRfREVQT1NJVF9CT09UU1RSQVBfUkVRVUlSRVNfRU1QVFlfVkFVTFQQsQISHwoaVkFVTFRfREVQT1NJVF9DQVBfRVhDRUVERUQQsgISKQokVkFVTFRfREVQT1NJVF9SRVFVSVJFU19BQ1RJVkVfU1RBVFVTELMCEi8KKlZBVUxUX0RFUE9TSVRfQ0FQX0JFTE9XX0NVUlJFTlRfUkFXX0VRVUlUWRC0AhIcChdWQVVMVF9ERVBPU0lUX1RPT19TTUFMTBC1AhITCg5WQVVMVF9XSVRIRFJBVxC4AhIeChlWQVVMVF9JTlNVRkZJQ0lFTlRfU0hBUkVTELkCEi4KKVZBVUxUX1dJVEhEUkFXX1JFUVVJUkVTX05PTl9GUk9aRU5fU1RBVFVTELoCEiIKHVZBVUxUX05PX0NMQUlNQUJMRV9XSVRIRFJBV0FMELsCEiUKIFZBVUxUX1dJVEhEUkFXX1FVT1RFX1VOQVZBSUxBQkxFELwCEi0KKFZBVUxUX0RVU1RfRVhJVF9SRVFVSVJFU19GVUxMX1NIQVJFX0VYSVQQvQISNQowVkFVTFRfTEFTVF9TSEFSRV9XSVRIRFJBV19SRVFVSVJFU19FTVBUWV9BQ0NPVU5UEL4CEigKI1ZBVUxUX1dJVEhEUkFXX1JFUVVJUkVTX0xJVkVfU0hBUkVTEL8CEhIKDVZBVUxUX0NPTlRST0wQwAISHQoYVkFVTFRfRVBPQ0hfTk9UX0VMSUdJQkxFEMECEjIKLVZBVUxUX0ZSRUVaRV9USFJFU0hPTERfTVVTVF9FWENFRURfUFJPVEVDVElPThDDAhIdChhWQVVMVF9DT05GSUdfUEFUQ0hfRU1QVFkQxAISKAojVkFVTFRfTk9fU1RBVFVTX1RSQU5TSVRJT05fUkVRVUlSRUQQxQISLQooVkFVTFRfRlJPWkVOX1NUQVRVU19SRVFVSVJFU19TVVBFUl9BRE1JThDGAhIqCiVWQVVMVF9ORVdfQ09ORklHX1dPVUxEX0RFR1JBREVfU1RBVFVTEMcCEg4KCVJGUV9FUlJPUhDIAhIQCgtSRlFfVElNRU9VVBDJAhIUCg9OT1RfSU1QTEVNRU5URUQQ9AMSFwoSQUNUSU9OX05PVF9BTExPV0VEEPUDEhgKE05PVF9TVVBQT1JURURfSU5QVVQQ9gMSDAoHRFJPUFBFRBDnB2IGcHJvdG8z");
|
|
28745
28747
|
var U128Schema = /* @__PURE__ */ messageDesc(file_nord, 0);
|
|
28746
28748
|
var RfqTradeSchema = /* @__PURE__ */ messageDesc(file_nord, 1);
|
|
28747
|
-
var
|
|
28748
|
-
var
|
|
28749
|
-
var
|
|
28750
|
-
var
|
|
28751
|
-
var
|
|
28752
|
-
var
|
|
28753
|
-
var
|
|
28754
|
-
var
|
|
28755
|
-
var
|
|
28756
|
-
var
|
|
28749
|
+
var PartialFillSchema = /* @__PURE__ */ messageDesc(file_nord, 2);
|
|
28750
|
+
var FillTypeSchema = /* @__PURE__ */ messageDesc(file_nord, 3);
|
|
28751
|
+
var RfqPlaceOnlySchema = /* @__PURE__ */ messageDesc(file_nord, 4);
|
|
28752
|
+
var SetRfqMakersSchema = /* @__PURE__ */ messageDesc(file_nord, 5);
|
|
28753
|
+
var SetMarketModeRFQSchema = /* @__PURE__ */ messageDesc(file_nord, 6);
|
|
28754
|
+
var CreateRfqMarketSchema = /* @__PURE__ */ messageDesc(file_nord, 7);
|
|
28755
|
+
var CreateRfqMarket_DecimalsSchema = /* @__PURE__ */ messageDesc(file_nord, 7, 0);
|
|
28756
|
+
var CreateRfqMarket_MarginsSchema = /* @__PURE__ */ messageDesc(file_nord, 7, 1);
|
|
28757
|
+
var CreateRfqMarket_SymbolsSchema = /* @__PURE__ */ messageDesc(file_nord, 7, 2);
|
|
28758
|
+
var RfqTradeActionSchema = /* @__PURE__ */ messageDesc(file_nord, 8);
|
|
28759
|
+
var RfqTradeReceiptSchema = /* @__PURE__ */ messageDesc(file_nord, 9);
|
|
28760
|
+
var RfqTradeReceipt_SuccessSchema = /* @__PURE__ */ messageDesc(file_nord, 9, 0);
|
|
28757
28761
|
var RfqTradeReceipt_FailureReason;
|
|
28758
28762
|
((RfqTradeReceipt_FailureReason2) => {
|
|
28759
28763
|
RfqTradeReceipt_FailureReason2[RfqTradeReceipt_FailureReason2["TIMEOUT"] = 0] = "TIMEOUT";
|
|
28760
28764
|
RfqTradeReceipt_FailureReason2[RfqTradeReceipt_FailureReason2["REJECTED"] = 1] = "REJECTED";
|
|
28761
28765
|
})(RfqTradeReceipt_FailureReason ||= {});
|
|
28762
|
-
var RfqTradeReceipt_FailureReasonSchema = /* @__PURE__ */ enumDesc(file_nord,
|
|
28763
|
-
var PlaceRFQResultSchema = /* @__PURE__ */ messageDesc(file_nord,
|
|
28764
|
-
var
|
|
28765
|
-
var
|
|
28766
|
-
var
|
|
28767
|
-
var
|
|
28768
|
-
var
|
|
28769
|
-
var
|
|
28770
|
-
var
|
|
28771
|
-
var
|
|
28772
|
-
var
|
|
28773
|
-
var
|
|
28774
|
-
var
|
|
28775
|
-
var
|
|
28776
|
-
var
|
|
28777
|
-
var
|
|
28778
|
-
var
|
|
28779
|
-
var
|
|
28780
|
-
var
|
|
28781
|
-
var
|
|
28782
|
-
var
|
|
28783
|
-
var
|
|
28784
|
-
var
|
|
28785
|
-
var
|
|
28786
|
-
var
|
|
28787
|
-
var
|
|
28788
|
-
var
|
|
28789
|
-
var
|
|
28790
|
-
var
|
|
28791
|
-
var
|
|
28792
|
-
var
|
|
28793
|
-
var
|
|
28794
|
-
var
|
|
28795
|
-
var
|
|
28796
|
-
var
|
|
28797
|
-
var
|
|
28798
|
-
var
|
|
28799
|
-
var
|
|
28800
|
-
var
|
|
28801
|
-
var
|
|
28802
|
-
var
|
|
28803
|
-
var
|
|
28804
|
-
var
|
|
28805
|
-
var
|
|
28806
|
-
var
|
|
28807
|
-
var AtomicSubactionSchema = /* @__PURE__ */ messageDesc(file_nord,
|
|
28808
|
-
var
|
|
28809
|
-
var AtomicSchema = /* @__PURE__ */ messageDesc(file_nord, 50);
|
|
28810
|
-
var AtomicV2Schema = /* @__PURE__ */ messageDesc(file_nord, 51);
|
|
28766
|
+
var RfqTradeReceipt_FailureReasonSchema = /* @__PURE__ */ enumDesc(file_nord, 9, 0);
|
|
28767
|
+
var PlaceRFQResultSchema = /* @__PURE__ */ messageDesc(file_nord, 10);
|
|
28768
|
+
var RFQExecutionSchema = /* @__PURE__ */ messageDesc(file_nord, 11);
|
|
28769
|
+
var FillRFQResultSchema = /* @__PURE__ */ messageDesc(file_nord, 12);
|
|
28770
|
+
var RfqMakersSetSchema = /* @__PURE__ */ messageDesc(file_nord, 13);
|
|
28771
|
+
var RFQQtyPlaceSchema = /* @__PURE__ */ messageDesc(file_nord, 14);
|
|
28772
|
+
var FeeTierConfigSchema = /* @__PURE__ */ messageDesc(file_nord, 15);
|
|
28773
|
+
var MarketSchema = /* @__PURE__ */ messageDesc(file_nord, 16);
|
|
28774
|
+
var TokenSchema = /* @__PURE__ */ messageDesc(file_nord, 17);
|
|
28775
|
+
var VaultHealthSchema = /* @__PURE__ */ messageDesc(file_nord, 18);
|
|
28776
|
+
var VaultConfigSchema = /* @__PURE__ */ messageDesc(file_nord, 19);
|
|
28777
|
+
var VaultConfigPatchSchema = /* @__PURE__ */ messageDesc(file_nord, 20);
|
|
28778
|
+
var CreateVaultSchema = /* @__PURE__ */ messageDesc(file_nord, 21);
|
|
28779
|
+
var UpdateVaultConfigSchema = /* @__PURE__ */ messageDesc(file_nord, 22);
|
|
28780
|
+
var SetVaultManagerSchema = /* @__PURE__ */ messageDesc(file_nord, 23);
|
|
28781
|
+
var VaultSyncEpochsSchema = /* @__PURE__ */ messageDesc(file_nord, 24);
|
|
28782
|
+
var StagedAdminActionSchema = /* @__PURE__ */ messageDesc(file_nord, 25);
|
|
28783
|
+
var AdminActionKindSchema = /* @__PURE__ */ messageDesc(file_nord, 26);
|
|
28784
|
+
var VaultDepositSchema = /* @__PURE__ */ messageDesc(file_nord, 27);
|
|
28785
|
+
var VaultWithdrawSchema = /* @__PURE__ */ messageDesc(file_nord, 28);
|
|
28786
|
+
var VaultWithdraw_RequestSchema = /* @__PURE__ */ messageDesc(file_nord, 28, 0);
|
|
28787
|
+
var VaultWithdraw_ClaimSchema = /* @__PURE__ */ messageDesc(file_nord, 28, 1);
|
|
28788
|
+
var CreateVaultReceiptSchema = /* @__PURE__ */ messageDesc(file_nord, 29);
|
|
28789
|
+
var UpdateVaultConfigReceiptSchema = /* @__PURE__ */ messageDesc(file_nord, 30);
|
|
28790
|
+
var SetVaultManagerReceiptSchema = /* @__PURE__ */ messageDesc(file_nord, 31);
|
|
28791
|
+
var VaultSyncEpochsReceiptSchema = /* @__PURE__ */ messageDesc(file_nord, 32);
|
|
28792
|
+
var VaultDepositReceiptSchema = /* @__PURE__ */ messageDesc(file_nord, 33);
|
|
28793
|
+
var WithdrawalBucketsSchema = /* @__PURE__ */ messageDesc(file_nord, 34);
|
|
28794
|
+
var VaultPpsRefSchema = /* @__PURE__ */ messageDesc(file_nord, 35);
|
|
28795
|
+
var VaultEpochsSchema = /* @__PURE__ */ messageDesc(file_nord, 36);
|
|
28796
|
+
var VaultUserStateSchema = /* @__PURE__ */ messageDesc(file_nord, 37);
|
|
28797
|
+
var VaultWithdrawReceiptSchema = /* @__PURE__ */ messageDesc(file_nord, 38);
|
|
28798
|
+
var VaultWithdrawReceipt_RequestedSchema = /* @__PURE__ */ messageDesc(file_nord, 38, 0);
|
|
28799
|
+
var VaultWithdrawReceipt_ClaimedSchema = /* @__PURE__ */ messageDesc(file_nord, 38, 1);
|
|
28800
|
+
var OrderLimitSchema = /* @__PURE__ */ messageDesc(file_nord, 39);
|
|
28801
|
+
var PlaceTypeSchema = /* @__PURE__ */ messageDesc(file_nord, 40);
|
|
28802
|
+
var TradeOrPlaceSchema = /* @__PURE__ */ messageDesc(file_nord, 41);
|
|
28803
|
+
var AtomicCancelOrderByIdSchema = /* @__PURE__ */ messageDesc(file_nord, 42);
|
|
28804
|
+
var AtomicCancelOrderByClientIdSchema = /* @__PURE__ */ messageDesc(file_nord, 43);
|
|
28805
|
+
var AtomicAddTriggerSchema = /* @__PURE__ */ messageDesc(file_nord, 44);
|
|
28806
|
+
var AtomicEditTriggerSchema = /* @__PURE__ */ messageDesc(file_nord, 45);
|
|
28807
|
+
var AtomicRemoveTriggerSchema = /* @__PURE__ */ messageDesc(file_nord, 46);
|
|
28808
|
+
var ReduceOrderLiquidationSchema = /* @__PURE__ */ messageDesc(file_nord, 47);
|
|
28809
|
+
var AtomicSubactionKindV1Schema = /* @__PURE__ */ messageDesc(file_nord, 48);
|
|
28810
|
+
var AtomicV1Schema = /* @__PURE__ */ messageDesc(file_nord, 49);
|
|
28811
|
+
var AtomicSubactionSchema = /* @__PURE__ */ messageDesc(file_nord, 50);
|
|
28812
|
+
var AtomicSchema = /* @__PURE__ */ messageDesc(file_nord, 51);
|
|
28811
28813
|
var PythLazerTrustedSignerSchema = /* @__PURE__ */ messageDesc(file_nord, 52);
|
|
28812
28814
|
var TriggerRecordSchema = /* @__PURE__ */ messageDesc(file_nord, 53);
|
|
28813
28815
|
var TriggerSchema = /* @__PURE__ */ messageDesc(file_nord, 54);
|
|
@@ -28940,18 +28942,25 @@ var MarketRegime;
|
|
|
28940
28942
|
MarketRegime2[MarketRegime2["TRADE_ONLY"] = 2] = "TRADE_ONLY";
|
|
28941
28943
|
})(MarketRegime ||= {});
|
|
28942
28944
|
var MarketRegimeSchema = /* @__PURE__ */ enumDesc(file_nord, 2);
|
|
28945
|
+
var RfqFillStatus;
|
|
28946
|
+
((RfqFillStatus2) => {
|
|
28947
|
+
RfqFillStatus2[RfqFillStatus2["COMPLETED"] = 0] = "COMPLETED";
|
|
28948
|
+
RfqFillStatus2[RfqFillStatus2["TRUNCATED"] = 1] = "TRUNCATED";
|
|
28949
|
+
RfqFillStatus2[RfqFillStatus2["PARTIAL"] = 2] = "PARTIAL";
|
|
28950
|
+
})(RfqFillStatus ||= {});
|
|
28951
|
+
var RfqFillStatusSchema = /* @__PURE__ */ enumDesc(file_nord, 3);
|
|
28943
28952
|
var TriggerKind;
|
|
28944
28953
|
((TriggerKind2) => {
|
|
28945
28954
|
TriggerKind2[TriggerKind2["STOP_LOSS"] = 0] = "STOP_LOSS";
|
|
28946
28955
|
TriggerKind2[TriggerKind2["TAKE_PROFIT"] = 1] = "TAKE_PROFIT";
|
|
28947
28956
|
})(TriggerKind ||= {});
|
|
28948
|
-
var TriggerKindSchema = /* @__PURE__ */ enumDesc(file_nord,
|
|
28957
|
+
var TriggerKindSchema = /* @__PURE__ */ enumDesc(file_nord, 4);
|
|
28949
28958
|
var Intent;
|
|
28950
28959
|
((Intent2) => {
|
|
28951
28960
|
Intent2[Intent2["DECREASE"] = 0] = "DECREASE";
|
|
28952
28961
|
Intent2[Intent2["INCREASE"] = 1] = "INCREASE";
|
|
28953
28962
|
})(Intent ||= {});
|
|
28954
|
-
var IntentSchema = /* @__PURE__ */ enumDesc(file_nord,
|
|
28963
|
+
var IntentSchema = /* @__PURE__ */ enumDesc(file_nord, 5);
|
|
28955
28964
|
var FillMode;
|
|
28956
28965
|
((FillMode2) => {
|
|
28957
28966
|
FillMode2[FillMode2["LIMIT"] = 0] = "LIMIT";
|
|
@@ -28959,7 +28968,7 @@ var FillMode;
|
|
|
28959
28968
|
FillMode2[FillMode2["IMMEDIATE_OR_CANCEL"] = 2] = "IMMEDIATE_OR_CANCEL";
|
|
28960
28969
|
FillMode2[FillMode2["FILL_OR_KILL"] = 3] = "FILL_OR_KILL";
|
|
28961
28970
|
})(FillMode ||= {});
|
|
28962
|
-
var FillModeSchema = /* @__PURE__ */ enumDesc(file_nord,
|
|
28971
|
+
var FillModeSchema = /* @__PURE__ */ enumDesc(file_nord, 6);
|
|
28963
28972
|
var PlacementRole;
|
|
28964
28973
|
((PlacementRole2) => {
|
|
28965
28974
|
PlacementRole2[PlacementRole2["ACCOUNT_OWNER"] = 0] = "ACCOUNT_OWNER";
|
|
@@ -28968,19 +28977,19 @@ var PlacementRole;
|
|
|
28968
28977
|
PlacementRole2[PlacementRole2["TRIGGER"] = 3] = "TRIGGER";
|
|
28969
28978
|
PlacementRole2[PlacementRole2["LIQUIDATOR"] = 4] = "LIQUIDATOR";
|
|
28970
28979
|
})(PlacementRole ||= {});
|
|
28971
|
-
var PlacementRoleSchema = /* @__PURE__ */ enumDesc(file_nord,
|
|
28980
|
+
var PlacementRoleSchema = /* @__PURE__ */ enumDesc(file_nord, 7);
|
|
28972
28981
|
var SelfTradePrevention;
|
|
28973
28982
|
((SelfTradePrevention2) => {
|
|
28974
28983
|
SelfTradePrevention2[SelfTradePrevention2["NONE"] = 0] = "NONE";
|
|
28975
28984
|
SelfTradePrevention2[SelfTradePrevention2["EXPIRE_MAKER"] = 1] = "EXPIRE_MAKER";
|
|
28976
28985
|
})(SelfTradePrevention ||= {});
|
|
28977
|
-
var SelfTradePreventionSchema = /* @__PURE__ */ enumDesc(file_nord,
|
|
28986
|
+
var SelfTradePreventionSchema = /* @__PURE__ */ enumDesc(file_nord, 8);
|
|
28978
28987
|
var MarketType;
|
|
28979
28988
|
((MarketType2) => {
|
|
28980
28989
|
MarketType2[MarketType2["SPOT"] = 0] = "SPOT";
|
|
28981
28990
|
MarketType2[MarketType2["PERPETUALS"] = 1] = "PERPETUALS";
|
|
28982
28991
|
})(MarketType ||= {});
|
|
28983
|
-
var MarketTypeSchema = /* @__PURE__ */ enumDesc(file_nord,
|
|
28992
|
+
var MarketTypeSchema = /* @__PURE__ */ enumDesc(file_nord, 9);
|
|
28984
28993
|
var TriggerExecError;
|
|
28985
28994
|
((TriggerExecError2) => {
|
|
28986
28995
|
TriggerExecError2[TriggerExecError2["NO_POSITION"] = 0] = "NO_POSITION";
|
|
@@ -28989,19 +28998,20 @@ var TriggerExecError;
|
|
|
28989
28998
|
TriggerExecError2[TriggerExecError2["RISK_CHECK_FAILED"] = 3] = "RISK_CHECK_FAILED";
|
|
28990
28999
|
TriggerExecError2[TriggerExecError2["REDUCE_ONLY_CHECK_FAILED"] = 4] = "REDUCE_ONLY_CHECK_FAILED";
|
|
28991
29000
|
})(TriggerExecError ||= {});
|
|
28992
|
-
var TriggerExecErrorSchema = /* @__PURE__ */ enumDesc(file_nord,
|
|
29001
|
+
var TriggerExecErrorSchema = /* @__PURE__ */ enumDesc(file_nord, 10);
|
|
28993
29002
|
var SpecialAccount;
|
|
28994
29003
|
((SpecialAccount2) => {
|
|
28995
29004
|
SpecialAccount2[SpecialAccount2["FEE_VAULT"] = 0] = "FEE_VAULT";
|
|
29005
|
+
SpecialAccount2[SpecialAccount2["CLAIM_VAULT"] = 1] = "CLAIM_VAULT";
|
|
28996
29006
|
})(SpecialAccount ||= {});
|
|
28997
|
-
var SpecialAccountSchema = /* @__PURE__ */ enumDesc(file_nord,
|
|
29007
|
+
var SpecialAccountSchema = /* @__PURE__ */ enumDesc(file_nord, 11);
|
|
28998
29008
|
var VaultStatus;
|
|
28999
29009
|
((VaultStatus2) => {
|
|
29000
29010
|
VaultStatus2[VaultStatus2["ACTIVE"] = 0] = "ACTIVE";
|
|
29001
29011
|
VaultStatus2[VaultStatus2["DERISK_ONLY"] = 1] = "DERISK_ONLY";
|
|
29002
29012
|
VaultStatus2[VaultStatus2["FROZEN"] = 2] = "FROZEN";
|
|
29003
29013
|
})(VaultStatus ||= {});
|
|
29004
|
-
var VaultStatusSchema = /* @__PURE__ */ enumDesc(file_nord,
|
|
29014
|
+
var VaultStatusSchema = /* @__PURE__ */ enumDesc(file_nord, 12);
|
|
29005
29015
|
var Error2;
|
|
29006
29016
|
((Error3) => {
|
|
29007
29017
|
Error3[Error3["DUPLICATE"] = 0] = "DUPLICATE";
|
|
@@ -29141,6 +29151,7 @@ var Error2;
|
|
|
29141
29151
|
Error3[Error3["TRANSFER"] = 288] = "TRANSFER";
|
|
29142
29152
|
Error3[Error3["TRANSFER_TO_UNOWNED_ACCOUNT_IS_PROHIBITED"] = 289] = "TRANSFER_TO_UNOWNED_ACCOUNT_IS_PROHIBITED";
|
|
29143
29153
|
Error3[Error3["TRANSFER_TO_OWNED_ACCOUNT_WAS_REQUESTED"] = 290] = "TRANSFER_TO_OWNED_ACCOUNT_WAS_REQUESTED";
|
|
29154
|
+
Error3[Error3["TRANSFER_TO_CLAIM_VAULT_IS_PROHIBITED"] = 291] = "TRANSFER_TO_CLAIM_VAULT_IS_PROHIBITED";
|
|
29144
29155
|
Error3[Error3["VAULT"] = 296] = "VAULT";
|
|
29145
29156
|
Error3[Error3["VAULT_NOT_FOUND"] = 297] = "VAULT_NOT_FOUND";
|
|
29146
29157
|
Error3[Error3["VAULT_ACTION_NOT_ALLOWED"] = 298] = "VAULT_ACTION_NOT_ALLOWED";
|
|
@@ -29166,7 +29177,6 @@ var Error2;
|
|
|
29166
29177
|
Error3[Error3["VAULT_WITHDRAW_REQUIRES_LIVE_SHARES"] = 319] = "VAULT_WITHDRAW_REQUIRES_LIVE_SHARES";
|
|
29167
29178
|
Error3[Error3["VAULT_CONTROL"] = 320] = "VAULT_CONTROL";
|
|
29168
29179
|
Error3[Error3["VAULT_EPOCH_NOT_ELIGIBLE"] = 321] = "VAULT_EPOCH_NOT_ELIGIBLE";
|
|
29169
|
-
Error3[Error3["VAULT_PREVIOUS_EPOCH_WITHDRAWALS_NOT_PAYABLE"] = 322] = "VAULT_PREVIOUS_EPOCH_WITHDRAWALS_NOT_PAYABLE";
|
|
29170
29180
|
Error3[Error3["VAULT_FREEZE_THRESHOLD_MUST_EXCEED_PROTECTION"] = 323] = "VAULT_FREEZE_THRESHOLD_MUST_EXCEED_PROTECTION";
|
|
29171
29181
|
Error3[Error3["VAULT_CONFIG_PATCH_EMPTY"] = 324] = "VAULT_CONFIG_PATCH_EMPTY";
|
|
29172
29182
|
Error3[Error3["VAULT_NO_STATUS_TRANSITION_REQUIRED"] = 325] = "VAULT_NO_STATUS_TRANSITION_REQUIRED";
|
|
@@ -29179,7 +29189,7 @@ var Error2;
|
|
|
29179
29189
|
Error3[Error3["NOT_SUPPORTED_INPUT"] = 502] = "NOT_SUPPORTED_INPUT";
|
|
29180
29190
|
Error3[Error3["DROPPED"] = 999] = "DROPPED";
|
|
29181
29191
|
})(Error2 ||= {});
|
|
29182
|
-
var ErrorSchema = /* @__PURE__ */ enumDesc(file_nord,
|
|
29192
|
+
var ErrorSchema = /* @__PURE__ */ enumDesc(file_nord, 13);
|
|
29183
29193
|
|
|
29184
29194
|
// src/types.ts
|
|
29185
29195
|
var TOPIC_INFO_NAMES = {
|
|
@@ -81727,18 +81737,34 @@ class Nord {
|
|
|
81727
81737
|
markets = [];
|
|
81728
81738
|
tokens = [];
|
|
81729
81739
|
symbolToMarketId = new Map;
|
|
81730
|
-
|
|
81740
|
+
protonConfig;
|
|
81741
|
+
protonClientPromise;
|
|
81731
81742
|
httpClient;
|
|
81732
81743
|
constructor({
|
|
81733
81744
|
solanaConnection,
|
|
81734
81745
|
webServerUrl,
|
|
81735
|
-
|
|
81746
|
+
protonConfig
|
|
81736
81747
|
}) {
|
|
81737
81748
|
this.webServerUrl = webServerUrl;
|
|
81738
81749
|
this.solanaConnection = solanaConnection;
|
|
81739
|
-
this.
|
|
81750
|
+
this.protonConfig = protonConfig;
|
|
81740
81751
|
this.httpClient = createClient({ baseUrl: webServerUrl });
|
|
81741
81752
|
}
|
|
81753
|
+
getProtonClient() {
|
|
81754
|
+
if (this.protonClientPromise === undefined) {
|
|
81755
|
+
const initialization = ProtonClient.init({
|
|
81756
|
+
...this.protonConfig,
|
|
81757
|
+
solConn: this.solanaConnection
|
|
81758
|
+
});
|
|
81759
|
+
this.protonClientPromise = initialization;
|
|
81760
|
+
initialization.catch(() => {
|
|
81761
|
+
if (this.protonClientPromise === initialization) {
|
|
81762
|
+
this.protonClientPromise = undefined;
|
|
81763
|
+
}
|
|
81764
|
+
});
|
|
81765
|
+
}
|
|
81766
|
+
return this.protonClientPromise;
|
|
81767
|
+
}
|
|
81742
81768
|
createWebSocketClient({
|
|
81743
81769
|
trades,
|
|
81744
81770
|
deltas,
|
|
@@ -81865,15 +81891,13 @@ class Nord {
|
|
|
81865
81891
|
webServerUrl,
|
|
81866
81892
|
protonUrl
|
|
81867
81893
|
}) {
|
|
81868
|
-
const protonClient = await ProtonClient.init({
|
|
81869
|
-
protonUrl: protonUrl ?? webServerUrl,
|
|
81870
|
-
app: new PublicKey(app),
|
|
81871
|
-
solConn: solanaConnection
|
|
81872
|
-
});
|
|
81873
81894
|
const nord = new Nord({
|
|
81874
|
-
protonClient,
|
|
81875
81895
|
solanaConnection,
|
|
81876
|
-
webServerUrl
|
|
81896
|
+
webServerUrl,
|
|
81897
|
+
protonConfig: {
|
|
81898
|
+
protonUrl: protonUrl ?? webServerUrl,
|
|
81899
|
+
app: new PublicKey(app)
|
|
81900
|
+
}
|
|
81877
81901
|
});
|
|
81878
81902
|
await nord.init();
|
|
81879
81903
|
return nord;
|
|
@@ -82996,7 +83020,25 @@ function normalizeAtomicReceipt(resp, actionCount) {
|
|
|
82996
83020
|
}
|
|
82997
83021
|
return;
|
|
82998
83022
|
}
|
|
82999
|
-
function
|
|
83023
|
+
function buildFillType(minimumSize, maximumSize, isReduceOnly) {
|
|
83024
|
+
if (minimumSize === undefined && maximumSize === undefined) {
|
|
83025
|
+
return isReduceOnly === undefined ? undefined : create(FillTypeSchema, { isReduceOnly });
|
|
83026
|
+
}
|
|
83027
|
+
assert4(minimumSize !== undefined && maximumSize !== undefined, "partial-fill RFQ requires both minimumSize and maximumSize");
|
|
83028
|
+
const partialFill = create(PartialFillSchema, {
|
|
83029
|
+
minimumSize: BigInt(minimumSize),
|
|
83030
|
+
maximumSize: BigInt(maximumSize)
|
|
83031
|
+
});
|
|
83032
|
+
return create(FillTypeSchema, {
|
|
83033
|
+
isReduceOnly,
|
|
83034
|
+
partialFill
|
|
83035
|
+
});
|
|
83036
|
+
}
|
|
83037
|
+
function atomicSubactionToProto(currentTimestamp, a2) {
|
|
83038
|
+
const target = {
|
|
83039
|
+
targetAccountId: a2.targetAccountId,
|
|
83040
|
+
useKey: a2.useKey
|
|
83041
|
+
};
|
|
83000
83042
|
if (a2.kind === "place") {
|
|
83001
83043
|
const price = toScaledU64(a2.price ?? 0, a2.priceDecimals);
|
|
83002
83044
|
const size = toScaledU64(a2.size ?? 0, a2.sizeDecimals);
|
|
@@ -83018,16 +83060,16 @@ function atomicSubactionToProto(currentTimestamp, a2, omitDelegatorAccountId = f
|
|
|
83018
83060
|
referrer: a2.referrer === undefined ? undefined : toProtoU128(a2.referrer)
|
|
83019
83061
|
});
|
|
83020
83062
|
return create(AtomicSubactionSchema, {
|
|
83021
|
-
|
|
83063
|
+
...target,
|
|
83022
83064
|
inner: { case: "tradeOrPlace", value: tradeOrPlace }
|
|
83023
83065
|
});
|
|
83024
83066
|
}
|
|
83025
83067
|
if (a2.kind === "reduceOrderLiquidation") {
|
|
83026
83068
|
return create(AtomicSubactionSchema, {
|
|
83069
|
+
...target,
|
|
83027
83070
|
inner: {
|
|
83028
83071
|
case: "reduceOrderLiquidation",
|
|
83029
83072
|
value: create(ReduceOrderLiquidationSchema, {
|
|
83030
|
-
targetAccountId: a2.targetAccountId,
|
|
83031
83073
|
marketId: a2.marketId
|
|
83032
83074
|
})
|
|
83033
83075
|
}
|
|
@@ -83037,8 +83079,9 @@ function atomicSubactionToProto(currentTimestamp, a2, omitDelegatorAccountId = f
|
|
|
83037
83079
|
const price = toScaledU64(a2.price, a2.priceDecimals);
|
|
83038
83080
|
const size = toScaledU64(a2.size, a2.sizeDecimals);
|
|
83039
83081
|
const timestampMillis = currentTimestamp * 1000n;
|
|
83082
|
+
const fillType = buildFillType(a2.minimumSize, a2.maximumSize, a2.isReduceOnly);
|
|
83040
83083
|
return create(AtomicSubactionSchema, {
|
|
83041
|
-
|
|
83084
|
+
...target,
|
|
83042
83085
|
inner: {
|
|
83043
83086
|
case: "rfqPlaceOnly",
|
|
83044
83087
|
value: create(RfqPlaceOnlySchema, {
|
|
@@ -83048,7 +83091,8 @@ function atomicSubactionToProto(currentTimestamp, a2, omitDelegatorAccountId = f
|
|
|
83048
83091
|
price,
|
|
83049
83092
|
side: a2.side === "bid" /* Bid */ ? 1 /* BID */ : 0 /* ASK */,
|
|
83050
83093
|
base: size,
|
|
83051
|
-
timestampMillis
|
|
83094
|
+
timestampMillis,
|
|
83095
|
+
fillType
|
|
83052
83096
|
})
|
|
83053
83097
|
}
|
|
83054
83098
|
});
|
|
@@ -83056,8 +83100,9 @@ function atomicSubactionToProto(currentTimestamp, a2, omitDelegatorAccountId = f
|
|
|
83056
83100
|
if (a2.kind === "rfqFill") {
|
|
83057
83101
|
const price = toScaledU64(a2.price, a2.priceDecimals);
|
|
83058
83102
|
const timestampMillis = currentTimestamp * 1000n;
|
|
83103
|
+
const fillType = buildFillType(a2.minimumSize, a2.maximumSize, a2.isReduceOnly);
|
|
83059
83104
|
return create(AtomicSubactionSchema, {
|
|
83060
|
-
|
|
83105
|
+
...target,
|
|
83061
83106
|
inner: {
|
|
83062
83107
|
case: "rfqTrade",
|
|
83063
83108
|
value: create(RfqTradeSchema, {
|
|
@@ -83065,14 +83110,15 @@ function atomicSubactionToProto(currentTimestamp, a2, omitDelegatorAccountId = f
|
|
|
83065
83110
|
marketId: a2.marketId,
|
|
83066
83111
|
orderId: BigInt(a2.orderId),
|
|
83067
83112
|
price,
|
|
83068
|
-
timestampMillis
|
|
83113
|
+
timestampMillis,
|
|
83114
|
+
fillType
|
|
83069
83115
|
})
|
|
83070
83116
|
}
|
|
83071
83117
|
});
|
|
83072
83118
|
}
|
|
83073
83119
|
if (a2.kind === "cancelByClientId") {
|
|
83074
83120
|
return create(AtomicSubactionSchema, {
|
|
83075
|
-
|
|
83121
|
+
...target,
|
|
83076
83122
|
inner: {
|
|
83077
83123
|
case: "cancelOrderByClientId",
|
|
83078
83124
|
value: create(AtomicCancelOrderByClientIdSchema, {
|
|
@@ -83086,6 +83132,7 @@ function atomicSubactionToProto(currentTimestamp, a2, omitDelegatorAccountId = f
|
|
|
83086
83132
|
assert4(triggerPrice > 0n, "Trigger price must be positive");
|
|
83087
83133
|
const limits = buildLimits(a2.priceDecimals, a2.sizeDecimals, a2.limitPrice, a2.limitBaseSize, a2.limitQuoteSize);
|
|
83088
83134
|
return create(AtomicSubactionSchema, {
|
|
83135
|
+
...target,
|
|
83089
83136
|
inner: {
|
|
83090
83137
|
case: "addTrigger",
|
|
83091
83138
|
value: create(AtomicAddTriggerSchema, {
|
|
@@ -83107,6 +83154,7 @@ function atomicSubactionToProto(currentTimestamp, a2, omitDelegatorAccountId = f
|
|
|
83107
83154
|
assert4(triggerPrice > 0n, "Trigger price must be positive");
|
|
83108
83155
|
const limits = buildLimits(a2.priceDecimals, a2.sizeDecimals, a2.limitPrice, a2.limitBaseSize, a2.limitQuoteSize);
|
|
83109
83156
|
return create(AtomicSubactionSchema, {
|
|
83157
|
+
...target,
|
|
83110
83158
|
inner: {
|
|
83111
83159
|
case: "editTrigger",
|
|
83112
83160
|
value: create(AtomicEditTriggerSchema, {
|
|
@@ -83124,6 +83172,7 @@ function atomicSubactionToProto(currentTimestamp, a2, omitDelegatorAccountId = f
|
|
|
83124
83172
|
}
|
|
83125
83173
|
if (a2.kind === "removeTrigger") {
|
|
83126
83174
|
return create(AtomicSubactionSchema, {
|
|
83175
|
+
...target,
|
|
83127
83176
|
inner: {
|
|
83128
83177
|
case: "removeTrigger",
|
|
83129
83178
|
value: create(AtomicRemoveTriggerSchema, {
|
|
@@ -83134,7 +83183,7 @@ function atomicSubactionToProto(currentTimestamp, a2, omitDelegatorAccountId = f
|
|
|
83134
83183
|
});
|
|
83135
83184
|
}
|
|
83136
83185
|
return create(AtomicSubactionSchema, {
|
|
83137
|
-
|
|
83186
|
+
...target,
|
|
83138
83187
|
inner: {
|
|
83139
83188
|
case: "cancelOrder",
|
|
83140
83189
|
value: create(AtomicCancelOrderByIdSchema, {
|
|
@@ -83143,53 +83192,10 @@ function atomicSubactionToProto(currentTimestamp, a2, omitDelegatorAccountId = f
|
|
|
83143
83192
|
}
|
|
83144
83193
|
});
|
|
83145
83194
|
}
|
|
83146
|
-
function
|
|
83147
|
-
return "placement" in a2 ? a2.placement : undefined;
|
|
83148
|
-
}
|
|
83149
|
-
async function atomic(client2, signFn, currentTimestamp, nonce, params) {
|
|
83195
|
+
function createAtomicAction(currentTimestamp, nonce, params) {
|
|
83150
83196
|
assert4(params.actions.length > 0 && params.actions.length <= 10, "Atomic action must contain between 1 and 10 sub-actions");
|
|
83151
|
-
const
|
|
83152
|
-
|
|
83153
|
-
const action = createAction(currentTimestamp, nonce, useAtomicV2 ? {
|
|
83154
|
-
case: "atomicV2",
|
|
83155
|
-
value: create(AtomicV2Schema, {
|
|
83156
|
-
sessionId: BigInt(params.sessionId),
|
|
83157
|
-
accountId: params.accountId,
|
|
83158
|
-
actions: params.actions.map((a2, index) => {
|
|
83159
|
-
const subaction = subactions[index];
|
|
83160
|
-
assert4(subaction !== undefined, "Atomic subaction missing");
|
|
83161
|
-
let placement;
|
|
83162
|
-
const placementRequest = atomicPlacement(a2);
|
|
83163
|
-
if (placementRequest === undefined) {
|
|
83164
|
-
if ("delegatorAccountId" in a2 && a2.delegatorAccountId !== undefined) {
|
|
83165
|
-
placement = create(AtomicPlacementRequestSchema, {
|
|
83166
|
-
inner: {
|
|
83167
|
-
case: "liquidationAccountId",
|
|
83168
|
-
value: a2.delegatorAccountId
|
|
83169
|
-
}
|
|
83170
|
-
});
|
|
83171
|
-
}
|
|
83172
|
-
} else if (placementRequest !== "accountOwner") {
|
|
83173
|
-
if ("vault" in placementRequest) {
|
|
83174
|
-
placement = create(AtomicPlacementRequestSchema, {
|
|
83175
|
-
inner: { case: "vaultId", value: placementRequest.vault }
|
|
83176
|
-
});
|
|
83177
|
-
} else {
|
|
83178
|
-
placement = create(AtomicPlacementRequestSchema, {
|
|
83179
|
-
inner: {
|
|
83180
|
-
case: "liquidationAccountId",
|
|
83181
|
-
value: placementRequest.liquidation
|
|
83182
|
-
}
|
|
83183
|
-
});
|
|
83184
|
-
}
|
|
83185
|
-
}
|
|
83186
|
-
return create(AtomicSubactionV2Schema, {
|
|
83187
|
-
placement,
|
|
83188
|
-
subaction
|
|
83189
|
-
});
|
|
83190
|
-
})
|
|
83191
|
-
})
|
|
83192
|
-
} : {
|
|
83197
|
+
const subactions = params.actions.map((a2) => atomicSubactionToProto(currentTimestamp, a2));
|
|
83198
|
+
return createAction(currentTimestamp, nonce, {
|
|
83193
83199
|
case: "atomic",
|
|
83194
83200
|
value: create(AtomicSchema, {
|
|
83195
83201
|
sessionId: BigInt(params.sessionId),
|
|
@@ -83197,6 +83203,9 @@ async function atomic(client2, signFn, currentTimestamp, nonce, params) {
|
|
|
83197
83203
|
actions: subactions
|
|
83198
83204
|
})
|
|
83199
83205
|
});
|
|
83206
|
+
}
|
|
83207
|
+
async function atomic(client2, signFn, currentTimestamp, nonce, params) {
|
|
83208
|
+
const action = createAtomicAction(currentTimestamp, nonce, params);
|
|
83200
83209
|
const resp = await sendAction(client2, (m2) => sessionSign(signFn, m2), action);
|
|
83201
83210
|
const results = normalizeAtomicReceipt(resp, params.actions.length);
|
|
83202
83211
|
if (results !== undefined) {
|
|
@@ -83209,17 +83218,25 @@ async function atomic(client2, signFn, currentTimestamp, nonce, params) {
|
|
|
83209
83218
|
}
|
|
83210
83219
|
|
|
83211
83220
|
// src/client/NordUser.ts
|
|
83221
|
+
function withAtomicTarget(target, action) {
|
|
83222
|
+
const targetFields = target.targetAccountId === undefined ? {} : target.useKey === true ? { targetAccountId: target.targetAccountId, useKey: true } : { targetAccountId: target.targetAccountId };
|
|
83223
|
+
return { ...targetFields, ...action };
|
|
83224
|
+
}
|
|
83212
83225
|
function decodeRfqFillResult(actionId, result) {
|
|
83213
83226
|
if (result?.case !== "rfqFillResult") {
|
|
83214
83227
|
throw new NordError("RFQ fill did not return an RFQ fill result");
|
|
83215
83228
|
}
|
|
83229
|
+
const execution = result.value.execution;
|
|
83216
83230
|
return {
|
|
83217
83231
|
actionId,
|
|
83218
83232
|
orderId: result.value.orderId,
|
|
83219
83233
|
makerAccountId: result.value.makerAccountId,
|
|
83220
83234
|
takerAccountId: result.value.takerAccountId,
|
|
83221
|
-
|
|
83222
|
-
|
|
83235
|
+
execution: execution === undefined ? null : {
|
|
83236
|
+
filledSize: execution.filledSize,
|
|
83237
|
+
tradeId: execution.tradeId,
|
|
83238
|
+
executionPrice: execution.executionPrice
|
|
83239
|
+
}
|
|
83223
83240
|
};
|
|
83224
83241
|
}
|
|
83225
83242
|
|
|
@@ -83344,7 +83361,8 @@ class NordUser {
|
|
|
83344
83361
|
const mint = new PublicKey(tokenInfo.mint);
|
|
83345
83362
|
const fromAccount = await this.getAssociatedTokenAccount(mint);
|
|
83346
83363
|
const payer = this.publicKey;
|
|
83347
|
-
const
|
|
83364
|
+
const protonClient = await this.nord.getProtonClient();
|
|
83365
|
+
const { ix, extraSigner } = await protonClient.buildDepositIx({
|
|
83348
83366
|
payer,
|
|
83349
83367
|
recipient: recipient ?? payer,
|
|
83350
83368
|
quantAmount: floatToScaledBigIntLossy(amount, tokenInfo.precision),
|
|
@@ -83744,7 +83762,10 @@ class NordUser {
|
|
|
83744
83762
|
price,
|
|
83745
83763
|
timeout,
|
|
83746
83764
|
accountId,
|
|
83747
|
-
clientOrderId
|
|
83765
|
+
clientOrderId,
|
|
83766
|
+
minimumSize,
|
|
83767
|
+
maximumSize,
|
|
83768
|
+
isReduceOnly
|
|
83748
83769
|
}) {
|
|
83749
83770
|
try {
|
|
83750
83771
|
const result = await this.atomic([
|
|
@@ -83755,7 +83776,10 @@ class NordUser {
|
|
|
83755
83776
|
size,
|
|
83756
83777
|
price,
|
|
83757
83778
|
timeout,
|
|
83758
|
-
clientOrderId
|
|
83779
|
+
clientOrderId,
|
|
83780
|
+
minimumSize,
|
|
83781
|
+
maximumSize,
|
|
83782
|
+
isReduceOnly
|
|
83759
83783
|
}
|
|
83760
83784
|
], accountId);
|
|
83761
83785
|
const rfqResult = result.results[0]?.inner;
|
|
@@ -83775,7 +83799,10 @@ class NordUser {
|
|
|
83775
83799
|
orderId,
|
|
83776
83800
|
price,
|
|
83777
83801
|
timeout,
|
|
83778
|
-
accountId
|
|
83802
|
+
accountId,
|
|
83803
|
+
minimumSize,
|
|
83804
|
+
maximumSize,
|
|
83805
|
+
isReduceOnly
|
|
83779
83806
|
}) {
|
|
83780
83807
|
try {
|
|
83781
83808
|
const result = await this.atomic([
|
|
@@ -83784,7 +83811,10 @@ class NordUser {
|
|
|
83784
83811
|
marketId,
|
|
83785
83812
|
orderId,
|
|
83786
83813
|
price,
|
|
83787
|
-
timeout
|
|
83814
|
+
timeout,
|
|
83815
|
+
minimumSize,
|
|
83816
|
+
maximumSize,
|
|
83817
|
+
isReduceOnly
|
|
83788
83818
|
}
|
|
83789
83819
|
], accountId);
|
|
83790
83820
|
return decodeRfqFillResult(result.actionId, result.results[0]?.inner);
|
|
@@ -84114,7 +84144,7 @@ class NordUser {
|
|
|
84114
84144
|
if (!market) {
|
|
84115
84145
|
throw new NordError(`Market ${act.marketId} not found`);
|
|
84116
84146
|
}
|
|
84117
|
-
return {
|
|
84147
|
+
return withAtomicTarget(act, {
|
|
84118
84148
|
kind: "place",
|
|
84119
84149
|
marketId: act.marketId,
|
|
84120
84150
|
side: act.side,
|
|
@@ -84126,34 +84156,27 @@ class NordUser {
|
|
|
84126
84156
|
price: act.price,
|
|
84127
84157
|
quoteSize: act.quoteSize,
|
|
84128
84158
|
clientOrderId: act.clientOrderId,
|
|
84129
|
-
delegatorAccountId: act.delegatorAccountId,
|
|
84130
|
-
placement: act.placement,
|
|
84131
84159
|
referrer: act.referrer
|
|
84132
|
-
};
|
|
84160
|
+
});
|
|
84133
84161
|
}
|
|
84134
84162
|
if (act.kind === "cancel") {
|
|
84135
|
-
return {
|
|
84163
|
+
return withAtomicTarget(act, {
|
|
84136
84164
|
kind: "cancel",
|
|
84137
|
-
orderId: act.orderId
|
|
84138
|
-
|
|
84139
|
-
placement: act.placement
|
|
84140
|
-
};
|
|
84165
|
+
orderId: act.orderId
|
|
84166
|
+
});
|
|
84141
84167
|
}
|
|
84142
84168
|
if (act.kind === "reduceOrderLiquidation") {
|
|
84143
|
-
return {
|
|
84169
|
+
return withAtomicTarget(act, {
|
|
84144
84170
|
kind: "reduceOrderLiquidation",
|
|
84145
|
-
|
|
84146
|
-
|
|
84147
|
-
delegatorAccountId: act.delegatorAccountId,
|
|
84148
|
-
placement: act.placement
|
|
84149
|
-
};
|
|
84171
|
+
marketId: act.marketId
|
|
84172
|
+
});
|
|
84150
84173
|
}
|
|
84151
84174
|
if (act.kind === "rfq") {
|
|
84152
84175
|
const market = findMarket(this.nord.markets, act.marketId);
|
|
84153
84176
|
if (!market) {
|
|
84154
84177
|
throw new NordError(`Market ${act.marketId} not found`);
|
|
84155
84178
|
}
|
|
84156
|
-
return {
|
|
84179
|
+
return withAtomicTarget(act, {
|
|
84157
84180
|
kind: "rfq",
|
|
84158
84181
|
marketId: act.marketId,
|
|
84159
84182
|
side: act.side,
|
|
@@ -84163,30 +84186,34 @@ class NordUser {
|
|
|
84163
84186
|
size: act.size,
|
|
84164
84187
|
timeout: act.timeout,
|
|
84165
84188
|
clientOrderId: act.clientOrderId,
|
|
84166
|
-
|
|
84167
|
-
|
|
84189
|
+
minimumSize: act.minimumSize,
|
|
84190
|
+
maximumSize: act.maximumSize,
|
|
84191
|
+
isReduceOnly: act.isReduceOnly
|
|
84192
|
+
});
|
|
84168
84193
|
}
|
|
84169
84194
|
if (act.kind === "rfqFill") {
|
|
84170
84195
|
const market = findMarket(this.nord.markets, act.marketId);
|
|
84171
84196
|
if (!market) {
|
|
84172
84197
|
throw new NordError(`Market ${act.marketId} not found`);
|
|
84173
84198
|
}
|
|
84174
|
-
return {
|
|
84199
|
+
return withAtomicTarget(act, {
|
|
84175
84200
|
kind: "rfqFill",
|
|
84176
84201
|
marketId: act.marketId,
|
|
84177
84202
|
orderId: act.orderId,
|
|
84178
84203
|
priceDecimals: market.priceDecimals,
|
|
84179
84204
|
price: act.price,
|
|
84180
84205
|
timeout: act.timeout,
|
|
84181
|
-
|
|
84182
|
-
|
|
84206
|
+
minimumSize: act.minimumSize,
|
|
84207
|
+
maximumSize: act.maximumSize,
|
|
84208
|
+
isReduceOnly: act.isReduceOnly
|
|
84209
|
+
});
|
|
84183
84210
|
}
|
|
84184
84211
|
if (act.kind === "addTrigger") {
|
|
84185
84212
|
const market = findMarket(this.nord.markets, act.marketId);
|
|
84186
84213
|
if (!market) {
|
|
84187
84214
|
throw new NordError(`Market ${act.marketId} not found`);
|
|
84188
84215
|
}
|
|
84189
|
-
return {
|
|
84216
|
+
return withAtomicTarget(act, {
|
|
84190
84217
|
kind: "addTrigger",
|
|
84191
84218
|
marketId: act.marketId,
|
|
84192
84219
|
side: act.side,
|
|
@@ -84197,16 +84224,15 @@ class NordUser {
|
|
|
84197
84224
|
limitPrice: act.limitPrice,
|
|
84198
84225
|
limitBaseSize: act.limitBaseSize,
|
|
84199
84226
|
limitQuoteSize: act.limitQuoteSize,
|
|
84200
|
-
placement: act.placement,
|
|
84201
84227
|
referrer: act.referrer
|
|
84202
|
-
};
|
|
84228
|
+
});
|
|
84203
84229
|
}
|
|
84204
84230
|
if (act.kind === "editTrigger") {
|
|
84205
84231
|
const market = findMarket(this.nord.markets, act.marketId);
|
|
84206
84232
|
if (!market) {
|
|
84207
84233
|
throw new NordError(`Market ${act.marketId} not found`);
|
|
84208
84234
|
}
|
|
84209
|
-
return {
|
|
84235
|
+
return withAtomicTarget(act, {
|
|
84210
84236
|
kind: "editTrigger",
|
|
84211
84237
|
triggerId: act.triggerId,
|
|
84212
84238
|
marketId: act.marketId,
|
|
@@ -84217,24 +84243,20 @@ class NordUser {
|
|
|
84217
84243
|
sizeDecimals: market.sizeDecimals,
|
|
84218
84244
|
limitPrice: act.limitPrice,
|
|
84219
84245
|
limitBaseSize: act.limitBaseSize,
|
|
84220
|
-
limitQuoteSize: act.limitQuoteSize
|
|
84221
|
-
|
|
84222
|
-
};
|
|
84246
|
+
limitQuoteSize: act.limitQuoteSize
|
|
84247
|
+
});
|
|
84223
84248
|
}
|
|
84224
84249
|
if (act.kind === "removeTrigger") {
|
|
84225
|
-
return {
|
|
84250
|
+
return withAtomicTarget(act, {
|
|
84226
84251
|
kind: "removeTrigger",
|
|
84227
84252
|
marketId: act.marketId,
|
|
84228
|
-
triggerId: act.triggerId
|
|
84229
|
-
|
|
84230
|
-
};
|
|
84253
|
+
triggerId: act.triggerId
|
|
84254
|
+
});
|
|
84231
84255
|
}
|
|
84232
|
-
return {
|
|
84256
|
+
return withAtomicTarget(act, {
|
|
84233
84257
|
kind: "cancelByClientId",
|
|
84234
|
-
clientOrderId: act.clientOrderId
|
|
84235
|
-
|
|
84236
|
-
placement: act.placement
|
|
84237
|
-
};
|
|
84258
|
+
clientOrderId: act.clientOrderId
|
|
84259
|
+
});
|
|
84238
84260
|
});
|
|
84239
84261
|
const result = await atomic(this.nord.httpClient, this.signSessionMessage, await this.nord.getTimestamp(), this.getNonce(), {
|
|
84240
84262
|
sessionId: optExpect(this.sessionId, "No session"),
|