diff --git a/fluxer_docs/src/content/docs/http-api/users/settings-protobuf.md b/fluxer_docs/src/content/docs/http-api/users/settings-protobuf.md index 1f03d6d5b..00e8228ca 100644 --- a/fluxer_docs/src/content/docs/http-api/users/settings-protobuf.md +++ b/fluxer_docs/src/content/docs/http-api/users/settings-protobuf.md @@ -81,6 +81,7 @@ An over-length string draws two entries for the one path. | keybinds? | [keybind settings](#keybind-settings-object) object | Custom keybinds and transmit mode preferences | | chat_input? | [chat input settings](#chat-input-settings-object) object | Chat composer behaviour preferences | | save_camera_uploads_to_device?4 | bool | Whether a camera upload is also written to the device | +| double_tap_reaction? | [reaction emoji](#reaction-emoji-object) object | Emoji a double tap on a message adds as a reaction | 1 The entries live inside the snapshot, and the account [memes](/http-api/memes/) collection holds none of them @@ -850,3 +851,16 @@ The `chat_input` field controls message composer behaviour. | Field | Type | Description | | --- | --- | --- | | convert_emoticons? | bool | Whether emoticons are converted to emoji | + +## Reaction emoji object + +The `double_tap_reaction` field stores the emoji that a double tap on a message adds as a reaction. It has the same shape as the [reaction emoji object](/gateway/events/#reaction-emoji-object). A Unicode emoji sets only `name`, and a custom emoji sets both `id` and `name`. + +### Structure + +| Field | Type | Description | +| --- | --- | --- | +| id?1 | string | Custom emoji ID, absent for a Unicode emoji | +| name | string | Unicode emoji, or the custom emoji's name | + +1 The decimal form of a [snowflake](/snowflakes/). Fluxer never resolves it, so it can name a custom emoji the account can no longer use diff --git a/packages/schema/proto/fluxer/user/preferences/v1/preferences.proto b/packages/schema/proto/fluxer/user/preferences/v1/preferences.proto index 816d9eb37..cac04e1eb 100644 --- a/packages/schema/proto/fluxer/user/preferences/v1/preferences.proto +++ b/packages/schema/proto/fluxer/user/preferences/v1/preferences.proto @@ -49,6 +49,7 @@ message SyncedPreferences { KeybindSettings keybinds = 111; ChatInputSettings chat_input = 112; optional bool save_camera_uploads_to_device = 113; + ReactionEmoji double_tap_reaction = 114; } @@ -262,3 +263,8 @@ enum MfaMethod { message ChatInputSettings { optional bool convert_emoticons = 1; } + +message ReactionEmoji { + optional string id = 1; + string name = 2; +} diff --git a/packages/schema/src/domains/tests/SyncedPreferencesCodec.test.ts b/packages/schema/src/domains/tests/SyncedPreferencesCodec.test.ts index 7cc72b1d4..8719899ea 100644 --- a/packages/schema/src/domains/tests/SyncedPreferencesCodec.test.ts +++ b/packages/schema/src/domains/tests/SyncedPreferencesCodec.test.ts @@ -19,7 +19,10 @@ import { FavoriteGifSettingsSchema, SoundSettingsSchema, } from '@fluxer/schema/src/gen/fluxer/user/preferences/v1/pickers_pb'; -import {ChatInputSettingsSchema} from '@fluxer/schema/src/gen/fluxer/user/preferences/v1/preferences_pb'; +import { + ChatInputSettingsSchema, + ReactionEmojiSchema, +} from '@fluxer/schema/src/gen/fluxer/user/preferences/v1/preferences_pb'; import {describe, expect, it} from 'vitest'; describe('SyncedPreferencesCodec', () => { @@ -84,6 +87,22 @@ describe('SyncedPreferencesCodec', () => { expect(equals(SyncedPreferencesSchema, decoded, original)).toBe(true); expect(decoded.chatInput?.convertEmoticons).toBe(true); }); + it('round-trips a unicode and a custom double tap reaction', () => { + const unicode = create(SyncedPreferencesSchema, { + doubleTapReaction: create(ReactionEmojiSchema, {name: '👍'}), + }); + const decodedUnicode = decodeSyncedPreferences(encodeSyncedPreferences(unicode)); + expect(equals(SyncedPreferencesSchema, decodedUnicode, unicode)).toBe(true); + expect(decodedUnicode.doubleTapReaction?.id).toBeUndefined(); + expect(decodedUnicode.doubleTapReaction?.name).toBe('👍'); + const custom = create(SyncedPreferencesSchema, { + doubleTapReaction: create(ReactionEmojiSchema, {id: '123456789012345678', name: 'party'}), + }); + const decodedCustom = decodeSyncedPreferences(encodeSyncedPreferences(custom)); + expect(equals(SyncedPreferencesSchema, decodedCustom, custom)).toBe(true); + expect(decodedCustom.doubleTapReaction?.id).toBe('123456789012345678'); + expect(decodedCustom.doubleTapReaction?.name).toBe('party'); + }); it('produces canonical encodings for equal inputs', () => { const a = create(SyncedPreferencesSchema, { accessibility: create(AccessibilitySettingsSchema, {fontSize: 14}), diff --git a/packages/schema/src/gen/fluxer/user/preferences/v1/preferences_pb.ts b/packages/schema/src/gen/fluxer/user/preferences/v1/preferences_pb.ts index ecddcdda4..f3cba18a7 100644 --- a/packages/schema/src/gen/fluxer/user/preferences/v1/preferences_pb.ts +++ b/packages/schema/src/gen/fluxer/user/preferences/v1/preferences_pb.ts @@ -10,7 +10,7 @@ import type { Message } from "@bufbuild/protobuf"; * Describes the file fluxer/user/preferences/v1/preferences.proto. */ export const file_fluxer_user_preferences_v1_preferences: GenFile = /*@__PURE__*/ - fileDesc("CixmbHV4ZXIvdXNlci9wcmVmZXJlbmNlcy92MS9wcmVmZXJlbmNlcy5wcm90bxIaZmx1eGVyLnVzZXIucHJlZmVyZW5jZXMudjEikRQKEVN5bmNlZFByZWZlcmVuY2VzEkgKDWFjY2Vzc2liaWxpdHkYASABKAsyMS5mbHV4ZXIudXNlci5wcmVmZXJlbmNlcy52MS5BY2Nlc3NpYmlsaXR5U2V0dGluZ3MSUwoXYWNjZXNzaWJpbGl0eV9vdmVycmlkZXMYAiABKAsyMi5mbHV4ZXIudXNlci5wcmVmZXJlbmNlcy52MS5BY2Nlc3NpYmlsaXR5T3ZlcnJpZGVzEksKD3RleHR1YWxfcHJldmlldxgDIAEoCzIyLmZsdXhlci51c2VyLnByZWZlcmVuY2VzLnYxLlRleHR1YWxQcmV2aWV3U2V0dGluZ3MSQgoMZW1vamlfcGlja2VyGBQgASgLMiwuZmx1eGVyLnVzZXIucHJlZmVyZW5jZXMudjEuRW1vamlQaWNrZXJTdGF0ZRJGCg5zdGlja2VyX3BpY2tlchgVIAEoCzIuLmZsdXhlci51c2VyLnByZWZlcmVuY2VzLnYxLlN0aWNrZXJQaWNrZXJTdGF0ZRJCCgxtZW1lc19waWNrZXIYFiABKAsyLC5mbHV4ZXIudXNlci5wcmVmZXJlbmNlcy52MS5NZW1lc1BpY2tlclN0YXRlEjUKBWVtb2ppGBcgASgLMiYuZmx1eGVyLnVzZXIucHJlZmVyZW5jZXMudjEuRW1vamlTdGF0ZRJUChRlbW9qaV9zdGlja2VyX2xheW91dBgYIAEoCzI2LmZsdXhlci51c2VyLnByZWZlcmVuY2VzLnYxLkVtb2ppU3RpY2tlckxheW91dFNldHRpbmdzEkYKDWZhdm9yaXRlX2dpZnMYGSABKAsyLy5mbHV4ZXIudXNlci5wcmVmZXJlbmNlcy52MS5GYXZvcml0ZUdpZlNldHRpbmdzEj0KCWZhdm9yaXRlcxgoIAEoCzIqLmZsdXhlci51c2VyLnByZWZlcmVuY2VzLnYxLkZhdm9yaXRlc1N0YXRlEksKD3JlY2VudF9tZW50aW9ucxgpIAEoCzIyLmZsdXhlci51c2VyLnByZWZlcmVuY2VzLnYxLlJlY2VudE1lbnRpb25zU2V0dGluZ3MSPwoHc2lkZWJhchgqIAEoCzIuLmZsdXhlci51c2VyLnByZWZlcmVuY2VzLnYxLlNpZGViYXJQcmVmZXJlbmNlcxJACgttZW1iZXJfbGlzdBgrIAEoCzIrLmZsdXhlci51c2VyLnByZWZlcmVuY2VzLnYxLk1lbWJlckxpc3RTdGF0ZRJICg91bnJlYWRfY2hhbm5lbHMYLCABKAsyLy5mbHV4ZXIudXNlci5wcmVmZXJlbmNlcy52MS5VbnJlYWRDaGFubmVsc1N0YXRlEkoKEG1lbnRpb25fZnJlY2VuY3kYLSABKAsyMC5mbHV4ZXIudXNlci5wcmVmZXJlbmNlcy52MS5NZW50aW9uRnJlY2VuY3lTdGF0ZRI9CgduYWdiYXJzGDwgASgLMiwuZmx1eGVyLnVzZXIucHJlZmVyZW5jZXMudjEuTmFnYmFyRGlzbWlzc2FscxJHChFkaXNtaXNzZWRfdXBzZWxscxg9IAEoCzIsLmZsdXhlci51c2VyLnByZWZlcmVuY2VzLnYxLkRpc21pc3NlZFVwc2VsbHMSTgoVZ3VpbGRfbnNmd19hZ3JlZW1lbnRzGD4gASgLMi8uZmx1eGVyLnVzZXIucHJlZmVyZW5jZXMudjEuR3VpbGROc2Z3QWdyZWVtZW50cxI8Cgl3aGF0c19uZXcYPyABKAsyKS5mbHV4ZXIudXNlci5wcmVmZXJlbmNlcy52MS5XaGF0c05ld1N0YXRlEj8KB3ByaXZhY3kYUCABKAsyLi5mbHV4ZXIudXNlci5wcmVmZXJlbmNlcy52MS5Qcml2YWN5UHJlZmVyZW5jZXMSUAoUbG9jYWxfc3BhbV9vdmVycmlkZXMYUSABKAsyMi5mbHV4ZXIudXNlci5wcmVmZXJlbmNlcy52MS5Mb2NhbFVzZXJTcGFtT3ZlcnJpZGVzEhUKDXNhbml0aXplX3VybHMYUiABKAgSOAoFc291bmQYZCABKAsyKS5mbHV4ZXIudXNlci5wcmVmZXJlbmNlcy52MS5Tb3VuZFNldHRpbmdzEkIKCnNwZWxsY2hlY2sYZSABKAsyLi5mbHV4ZXIudXNlci5wcmVmZXJlbmNlcy52MS5TcGVsbGNoZWNrU2V0dGluZ3MSSAoOc2VhcmNoX2VuZ2luZXMYZiABKAsyMC5mbHV4ZXIudXNlci5wcmVmZXJlbmNlcy52MS5TZWFyY2hFbmdpbmVTZXR0aW5ncxJPChFwZXJtaXNzaW9uX2xheW91dBhnIAEoCzI0LmZsdXhlci51c2VyLnByZWZlcmVuY2VzLnYxLlBlcm1pc3Npb25MYXlvdXRTZXR0aW5ncxJSChNndWlsZF9tZW1iZXJfbGF5b3V0GGggASgLMjUuZmx1eGVyLnVzZXIucHJlZmVyZW5jZXMudjEuR3VpbGRNZW1iZXJMYXlvdXRTZXR0aW5ncxJLCg1ndWlsZF9mb2xkZXJzGGkgASgLMjQuZmx1eGVyLnVzZXIucHJlZmVyZW5jZXMudjEuR3VpbGRGb2xkZXJFeHBhbmRlZFN0YXRlElAKFGhpZGRlbl9ndWlsZF9idXR0b25zGGogASgLMjIuZmx1eGVyLnVzZXIucHJlZmVyZW5jZXMudjEuSGlkZGVuR3VpbGRMaXN0QnV0dG9ucxJPChNrZXlib2FyZF9tb2RlX2ludHJvGGsgASgLMjIuZmx1eGVyLnVzZXIucHJlZmVyZW5jZXMudjEuS2V5Ym9hcmRNb2RlSW50cm9TdGF0ZRJRChBpbnB1dF9tb25pdG9yaW5nGGwgASgLMjcuZmx1eGVyLnVzZXIucHJlZmVyZW5jZXMudjEuSW5wdXRNb25pdG9yaW5nUHJvbXB0c1N0YXRlEkQKDXZvaWNlX3Byb21wdHMYbSABKAsyLS5mbHV4ZXIudXNlci5wcmVmZXJlbmNlcy52MS5Wb2ljZVByb21wdHNTdGF0ZRJACgtzdWRvX3Byb21wdBhuIAEoCzIrLmZsdXhlci51c2VyLnByZWZlcmVuY2VzLnYxLlN1ZG9Qcm9tcHRTdGF0ZRI9CghrZXliaW5kcxhvIAEoCzIrLmZsdXhlci51c2VyLnByZWZlcmVuY2VzLnYxLktleWJpbmRTZXR0aW5ncxJBCgpjaGF0X2lucHV0GHAgASgLMi0uZmx1eGVyLnVzZXIucHJlZmVyZW5jZXMudjEuQ2hhdElucHV0U2V0dGluZ3MSKgodc2F2ZV9jYW1lcmFfdXBsb2Fkc190b19kZXZpY2UYcSABKAhIAIgBAUIgCh5fc2F2ZV9jYW1lcmFfdXBsb2Fkc190b19kZXZpY2UisAEKElNwZWxsY2hlY2tTZXR0aW5ncxIUCgdlbmFibGVkGAEgASgISACIAQESEQoJbGFuZ3VhZ2VzGAIgAygJEhsKE3BlcnNvbmFsX2RpY3Rpb25hcnkYAyADKAkSGAoLYXV0b19kZXRlY3QYBCABKAhIAYgBARITCgZlbmdpbmUYBSABKAlIAogBAUIKCghfZW5hYmxlZEIOCgxfYXV0b19kZXRlY3RCCQoHX2VuZ2luZSLmAQoUU2VhcmNoRW5naW5lU2V0dGluZ3MSIgoVdGV4dF9zZWFyY2hfZW5naW5lX2lkGAEgASgJSACIAQESKwoecmV2ZXJzZV9pbWFnZV9zZWFyY2hfZW5naW5lX2lkGAIgASgJSAGIAQESJAoXdHJhbnNsYXRpb25fcHJvdmlkZXJfaWQYAyABKAlIAogBAUIYChZfdGV4dF9zZWFyY2hfZW5naW5lX2lkQiEKH19yZXZlcnNlX2ltYWdlX3NlYXJjaF9lbmdpbmVfaWRCGgoYX3RyYW5zbGF0aW9uX3Byb3ZpZGVyX2lkIrUBChJQcml2YWN5UHJlZmVyZW5jZXMSHwoXZGlzYWJsZV9zdHJlYW1fcHJldmlld3MYASABKAgSHAoPc2hvd19hY3RpdmVfbm93GAIgASgISACIAQESKgodcHJldXBsb2FkX21lc3NhZ2VfYXR0YWNobWVudHMYAyABKAhIAYgBAUISChBfc2hvd19hY3RpdmVfbm93QiAKHl9wcmV1cGxvYWRfbWVzc2FnZV9hdHRhY2htZW50cyJQChZMb2NhbFVzZXJTcGFtT3ZlcnJpZGVzEhgKEHNwYW1tZXJfdXNlcl9pZHMYASADKAkSHAoUbm90X3NwYW1tZXJfdXNlcl9pZHMYAiADKAkiKwoWVGV4dHVhbFByZXZpZXdTZXR0aW5ncxIRCgl3cmFwX3RleHQYASABKAgi3AEKElNpZGViYXJQcmVmZXJlbmNlcxIcChRpbmxpbmVfZG1zX2NvbGxhcHNlZBgBIAEoCBIsCh9zaG93X2NvbGxhcHNlZF91bnJlYWRfZG1zX2JhZGdlGAIgASgISACIAQESLwoic2hvd19pbmNvbWluZ19mcmllbmRfcmVxdWVzdF9iYWRnZRgDIAEoCEgBiAEBQiIKIF9zaG93X2NvbGxhcHNlZF91bnJlYWRfZG1zX2JhZGdlQiUKI19zaG93X2luY29taW5nX2ZyaWVuZF9yZXF1ZXN0X2JhZGdlIj0KD01lbWJlckxpc3RTdGF0ZRIZCgxtZW1iZXJzX29wZW4YASABKAhIAIgBAUIPCg1fbWVtYmVyc19vcGVuIjQKE1VucmVhZENoYW5uZWxzU3RhdGUSHQoVY29sbGFwc2VkX2NoYW5uZWxfaWRzGAEgAygJIqoBChZSZWNlbnRNZW50aW9uc1NldHRpbmdzEh0KEGluY2x1ZGVfZXZlcnlvbmUYASABKAhIAIgBARIaCg1pbmNsdWRlX3JvbGVzGAIgASgISAGIAQESGwoOaW5jbHVkZV9ndWlsZHMYAyABKAhIAogBAUITChFfaW5jbHVkZV9ldmVyeW9uZUIQCg5faW5jbHVkZV9yb2xlc0IRCg9faW5jbHVkZV9ndWlsZHMi/wEKFE1lbnRpb25GcmVjZW5jeVN0YXRlEkYKBnNjb3BlcxgBIAMoCzI2LmZsdXhlci51c2VyLnByZWZlcmVuY2VzLnYxLk1lbnRpb25GcmVjZW5jeVN0YXRlLlNjb3BlGjsKBUVudHJ5Eg8KB3VzZXJfaWQYASABKAkSDQoFY291bnQYAiABKA0SEgoKbGFzdF9hdF9tcxgDIAEoAxpiCgVTY29wZRIQCghndWlsZF9pZBgBIAEoCRJHCgdlbnRyaWVzGAIgAygLMjYuZmx1eGVyLnVzZXIucHJlZmVyZW5jZXMudjEuTWVudGlvbkZyZWNlbmN5U3RhdGUuRW50cnki3QEKDkZhdm9yaXRlc1N0YXRlEj0KCGNoYW5uZWxzGAEgAygLMisuZmx1eGVyLnVzZXIucHJlZmVyZW5jZXMudjEuRmF2b3JpdGVDaGFubmVsEkAKCmNhdGVnb3JpZXMYAiADKAsyLC5mbHV4ZXIudXNlci5wcmVmZXJlbmNlcy52MS5GYXZvcml0ZUNhdGVnb3J5Eh4KFmNvbGxhcHNlZF9jYXRlZ29yeV9pZHMYAyADKAkSGwoTaGlkZV9tdXRlZF9jaGFubmVscxgEIAEoCBINCgVtdXRlZBgFIAEoCCKTAQoPRmF2b3JpdGVDaGFubmVsEhIKCmNoYW5uZWxfaWQYASABKAkSEAoIZ3VpbGRfaWQYAiABKAkSFgoJcGFyZW50X2lkGAMgASgJSACIAQESEAoIcG9zaXRpb24YBCABKAUSFQoIbmlja25hbWUYBSABKAlIAYgBAUIMCgpfcGFyZW50X2lkQgsKCV9uaWNrbmFtZSI+ChBGYXZvcml0ZUNhdGVnb3J5EgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSEAoIcG9zaXRpb24YAyABKAUi+ggKEE5hZ2JhckRpc21pc3NhbHMSEwoLaW9zX2luc3RhbGwYASABKAgSEwoLcHdhX2luc3RhbGwYAiABKAgSGQoRcHVzaF9ub3RpZmljYXRpb24YAyABKAgSHAoUZGVza3RvcF9ub3RpZmljYXRpb24YBCABKAgSHAoUcHJlbWl1bV9ncmFjZV9wZXJpb2QYBSABKAgSFwoPcHJlbWl1bV9leHBpcmVkGAYgASgIEhoKEnByZW1pdW1fb25ib2FyZGluZxgHIAEoCBIeChZwcmVtaXVtX3RyaWFsX2V4cGlyaW5nGAggASgIEhYKDmdpZnRfaW52ZW50b3J5GAkgASgIEhgKEGRlc2t0b3BfZG93bmxvYWQYCiABKAgSHAoUZ3VpbGRfbWVtYmVyc2hpcF9jdGEYCyABKAgSFQoNdmlzaW9uYXJ5X21mYRgMIAEoCBIbChNsZWdhY3lfcGhvbmVfdW5saW5rGA4gASgIEmQKFXBlbmRpbmdfYnVsa19kZWxldGlvbhgPIAMoCzJFLmZsdXhlci51c2VyLnByZWZlcmVuY2VzLnYxLk5hZ2JhckRpc21pc3NhbHMuUGVuZGluZ0J1bGtEZWxldGlvbkVudHJ5ElsKEGludml0ZXNfZGlzYWJsZWQYECADKAsyQS5mbHV4ZXIudXNlci5wcmVmZXJlbmNlcy52MS5OYWdiYXJEaXNtaXNzYWxzLkludml0ZXNEaXNhYmxlZEVudHJ5EmQKFWd1aWxkX21mYV9yZXF1aXJlbWVudBgRIAMoCzJFLmZsdXhlci51c2VyLnByZWZlcmVuY2VzLnYxLk5hZ2JhckRpc21pc3NhbHMuR3VpbGRNZmFSZXF1aXJlbWVudEVudHJ5El8KEnByaWNlX2Fubm91bmNlbWVudBgSIAMoCzJDLmZsdXhlci51c2VyLnByZWZlcmVuY2VzLnYxLk5hZ2JhckRpc21pc3NhbHMuUHJpY2VBbm5vdW5jZW1lbnRFbnRyeRJfChNsZWdhY3lfcHJpY2Vfb3B0X2luGBMgAygLMkIuZmx1eGVyLnVzZXIucHJlZmVyZW5jZXMudjEuTmFnYmFyRGlzbWlzc2Fscy5MZWdhY3lQcmljZU9wdEluRW50cnkaOgoYUGVuZGluZ0J1bGtEZWxldGlvbkVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCDoCOAEaNgoUSW52aXRlc0Rpc2FibGVkRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgIOgI4ARo6ChhHdWlsZE1mYVJlcXVpcmVtZW50RW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgIOgI4ARo4ChZQcmljZUFubm91bmNlbWVudEVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCDoCOAEaNwoVTGVnYWN5UHJpY2VPcHRJbkVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCDoCOAEiKgoQRGlzbWlzc2VkVXBzZWxscxIWCg5waWNrZXJfcHJlbWl1bRgBIAEoCCJoChNHdWlsZE5zZndBZ3JlZW1lbnRzEhoKEmFncmVlZF9jaGFubmVsX2lkcxgBIAMoCRIYChBhZ3JlZWRfZ3VpbGRfaWRzGAIgAygJEhsKE2FncmVlZF9jYXRlZ29yeV9pZHMYAyADKAkiUQoNV2hhdHNOZXdTdGF0ZRIkChdsYXN0X2Rpc21pc3NlZF9lbnRyeV9pZBgBIAEoCUgAiAEBQhoKGF9sYXN0X2Rpc21pc3NlZF9lbnRyeV9pZCKaAQoYUGVybWlzc2lvbkxheW91dFNldHRpbmdzEkAKBmxheW91dBgBIAEoDjIwLmZsdXhlci51c2VyLnByZWZlcmVuY2VzLnYxLlBlcm1pc3Npb25MYXlvdXRNb2RlEjwKBGdyaWQYAiABKA4yLi5mbHV4ZXIudXNlci5wcmVmZXJlbmNlcy52MS5QZXJtaXNzaW9uR3JpZE1vZGUiWgoZR3VpbGRNZW1iZXJMYXlvdXRTZXR0aW5ncxI9CgRtb2RlGAEgASgOMi8uZmx1eGVyLnVzZXIucHJlZmVyZW5jZXMudjEuR3VpbGRNZW1iZXJWaWV3TW9kZSI3ChhHdWlsZEZvbGRlckV4cGFuZGVkU3RhdGUSGwoTZXhwYW5kZWRfZm9sZGVyX2lkcxgBIAMoBiJGChZIaWRkZW5HdWlsZExpc3RCdXR0b25zEhcKD2Rvd25sb2FkX2J1dHRvbhgBIAEoCBITCgtoZWxwX2J1dHRvbhgCIAEoCCImChZLZXlib2FyZE1vZGVJbnRyb1N0YXRlEgwKBHNlZW4YASABKAgiLwobSW5wdXRNb25pdG9yaW5nUHJvbXB0c1N0YXRlEhAKCHNlZW5fY3RhGAEgASgIImQKEVZvaWNlUHJvbXB0c1N0YXRlEiQKHHNraXBfaGlkZV9vd25fY2FtZXJhX2NvbmZpcm0YASABKAgSKQohc2tpcF9oaWRlX293bl9zY3JlZW5zaGFyZV9jb25maXJtGAIgASgIInQKD1N1ZG9Qcm9tcHRTdGF0ZRJIChRsYXN0X3VzZWRfbWZhX21ldGhvZBgBIAEoDjIlLmZsdXhlci51c2VyLnByZWZlcmVuY2VzLnYxLk1mYU1ldGhvZEgAiAEBQhcKFV9sYXN0X3VzZWRfbWZhX21ldGhvZCK6AQoPS2V5YmluZFNldHRpbmdzEkIKD2N1c3RvbV9rZXliaW5kcxgBIAMoCzIpLmZsdXhlci51c2VyLnByZWZlcmVuY2VzLnYxLkN1c3RvbUtleWJpbmQSFQoNdHJhbnNtaXRfbW9kZRgCIAEoCRIqCh1wdXNoX3RvX3RhbGtfcmVsZWFzZV9kZWxheV9tcxgDIAEoDUgAiAEBQiAKHl9wdXNoX3RvX3RhbGtfcmVsZWFzZV9kZWxheV9tcyKFAQoNQ3VzdG9tS2V5YmluZBIKCgJpZBgBIAEoCRITCgZhY3Rpb24YAiABKAlIAIgBARI3CgVjb21ibxgDIAEoCzIoLmZsdXhlci51c2VyLnByZWZlcmVuY2VzLnYxLktleWJpbmRDb21ibxIPCgdlbmFibGVkGAQgASgIQgkKB19hY3Rpb24izgIKDEtleWJpbmRDb21ibxILCgNrZXkYASABKAkSEQoEY29kZRgCIAEoCUgAiAEBEhQKDGN0cmxfb3JfbWV0YRgDIAEoCBIMCgRjdHJsGAQgASgIEgsKA2FsdBgFIAEoCBINCgVzaGlmdBgGIAEoCBIMCgRtZXRhGAcgASgIEhMKBmdsb2JhbBgIIAEoCEgBiAEBEhQKB2VuYWJsZWQYCSABKAhIAogBARIVCg1tb2RpZmllcl9vbmx5GAogASgIEhIKCmJvdGhfc2lkZXMYCyABKAgSGQoMbW91c2VfYnV0dG9uGAwgASgNSAOIAQESGwoOZ2FtZXBhZF9idXR0b24YDSABKA1IBIgBAUIHCgVfY29kZUIJCgdfZ2xvYmFsQgoKCF9lbmFibGVkQg8KDV9tb3VzZV9idXR0b25CEQoPX2dhbWVwYWRfYnV0dG9uIkkKEUNoYXRJbnB1dFNldHRpbmdzEh4KEWNvbnZlcnRfZW1vdGljb25zGAEgASgISACIAQFCFAoSX2NvbnZlcnRfZW1vdGljb25zKoIBChRQZXJtaXNzaW9uTGF5b3V0TW9kZRImCiJQRVJNSVNTSU9OX0xBWU9VVF9NT0RFX1VOU1BFQ0lGSUVEEAASIAocUEVSTUlTU0lPTl9MQVlPVVRfTU9ERV9DT01GWRABEiAKHFBFUk1JU1NJT05fTEFZT1VUX01PREVfREVOU0UQAip6ChJQZXJtaXNzaW9uR3JpZE1vZGUSJAogUEVSTUlTU0lPTl9HUklEX01PREVfVU5TUEVDSUZJRUQQABIfChtQRVJNSVNTSU9OX0dSSURfTU9ERV9TSU5HTEUQARIdChlQRVJNSVNTSU9OX0dSSURfTU9ERV9HUklEEAIqgAEKE0d1aWxkTWVtYmVyVmlld01vZGUSJgoiR1VJTERfTUVNQkVSX1ZJRVdfTU9ERV9VTlNQRUNJRklFRBAAEiAKHEdVSUxEX01FTUJFUl9WSUVXX01PREVfVEFCTEUQARIfChtHVUlMRF9NRU1CRVJfVklFV19NT0RFX0dSSUQQAipVCglNZmFNZXRob2QSGgoWTUZBX01FVEhPRF9VTlNQRUNJRklFRBAAEhMKD01GQV9NRVRIT0RfVE9UUBABEhcKE01GQV9NRVRIT0RfV0VCQVVUSE4QA2IGcHJvdG8z", [file_fluxer_user_preferences_v1_accessibility, file_fluxer_user_preferences_v1_pickers]); + fileDesc("CixmbHV4ZXIvdXNlci9wcmVmZXJlbmNlcy92MS9wcmVmZXJlbmNlcy5wcm90bxIaZmx1eGVyLnVzZXIucHJlZmVyZW5jZXMudjEi2RQKEVN5bmNlZFByZWZlcmVuY2VzEkgKDWFjY2Vzc2liaWxpdHkYASABKAsyMS5mbHV4ZXIudXNlci5wcmVmZXJlbmNlcy52MS5BY2Nlc3NpYmlsaXR5U2V0dGluZ3MSUwoXYWNjZXNzaWJpbGl0eV9vdmVycmlkZXMYAiABKAsyMi5mbHV4ZXIudXNlci5wcmVmZXJlbmNlcy52MS5BY2Nlc3NpYmlsaXR5T3ZlcnJpZGVzEksKD3RleHR1YWxfcHJldmlldxgDIAEoCzIyLmZsdXhlci51c2VyLnByZWZlcmVuY2VzLnYxLlRleHR1YWxQcmV2aWV3U2V0dGluZ3MSQgoMZW1vamlfcGlja2VyGBQgASgLMiwuZmx1eGVyLnVzZXIucHJlZmVyZW5jZXMudjEuRW1vamlQaWNrZXJTdGF0ZRJGCg5zdGlja2VyX3BpY2tlchgVIAEoCzIuLmZsdXhlci51c2VyLnByZWZlcmVuY2VzLnYxLlN0aWNrZXJQaWNrZXJTdGF0ZRJCCgxtZW1lc19waWNrZXIYFiABKAsyLC5mbHV4ZXIudXNlci5wcmVmZXJlbmNlcy52MS5NZW1lc1BpY2tlclN0YXRlEjUKBWVtb2ppGBcgASgLMiYuZmx1eGVyLnVzZXIucHJlZmVyZW5jZXMudjEuRW1vamlTdGF0ZRJUChRlbW9qaV9zdGlja2VyX2xheW91dBgYIAEoCzI2LmZsdXhlci51c2VyLnByZWZlcmVuY2VzLnYxLkVtb2ppU3RpY2tlckxheW91dFNldHRpbmdzEkYKDWZhdm9yaXRlX2dpZnMYGSABKAsyLy5mbHV4ZXIudXNlci5wcmVmZXJlbmNlcy52MS5GYXZvcml0ZUdpZlNldHRpbmdzEj0KCWZhdm9yaXRlcxgoIAEoCzIqLmZsdXhlci51c2VyLnByZWZlcmVuY2VzLnYxLkZhdm9yaXRlc1N0YXRlEksKD3JlY2VudF9tZW50aW9ucxgpIAEoCzIyLmZsdXhlci51c2VyLnByZWZlcmVuY2VzLnYxLlJlY2VudE1lbnRpb25zU2V0dGluZ3MSPwoHc2lkZWJhchgqIAEoCzIuLmZsdXhlci51c2VyLnByZWZlcmVuY2VzLnYxLlNpZGViYXJQcmVmZXJlbmNlcxJACgttZW1iZXJfbGlzdBgrIAEoCzIrLmZsdXhlci51c2VyLnByZWZlcmVuY2VzLnYxLk1lbWJlckxpc3RTdGF0ZRJICg91bnJlYWRfY2hhbm5lbHMYLCABKAsyLy5mbHV4ZXIudXNlci5wcmVmZXJlbmNlcy52MS5VbnJlYWRDaGFubmVsc1N0YXRlEkoKEG1lbnRpb25fZnJlY2VuY3kYLSABKAsyMC5mbHV4ZXIudXNlci5wcmVmZXJlbmNlcy52MS5NZW50aW9uRnJlY2VuY3lTdGF0ZRI9CgduYWdiYXJzGDwgASgLMiwuZmx1eGVyLnVzZXIucHJlZmVyZW5jZXMudjEuTmFnYmFyRGlzbWlzc2FscxJHChFkaXNtaXNzZWRfdXBzZWxscxg9IAEoCzIsLmZsdXhlci51c2VyLnByZWZlcmVuY2VzLnYxLkRpc21pc3NlZFVwc2VsbHMSTgoVZ3VpbGRfbnNmd19hZ3JlZW1lbnRzGD4gASgLMi8uZmx1eGVyLnVzZXIucHJlZmVyZW5jZXMudjEuR3VpbGROc2Z3QWdyZWVtZW50cxI8Cgl3aGF0c19uZXcYPyABKAsyKS5mbHV4ZXIudXNlci5wcmVmZXJlbmNlcy52MS5XaGF0c05ld1N0YXRlEj8KB3ByaXZhY3kYUCABKAsyLi5mbHV4ZXIudXNlci5wcmVmZXJlbmNlcy52MS5Qcml2YWN5UHJlZmVyZW5jZXMSUAoUbG9jYWxfc3BhbV9vdmVycmlkZXMYUSABKAsyMi5mbHV4ZXIudXNlci5wcmVmZXJlbmNlcy52MS5Mb2NhbFVzZXJTcGFtT3ZlcnJpZGVzEhUKDXNhbml0aXplX3VybHMYUiABKAgSOAoFc291bmQYZCABKAsyKS5mbHV4ZXIudXNlci5wcmVmZXJlbmNlcy52MS5Tb3VuZFNldHRpbmdzEkIKCnNwZWxsY2hlY2sYZSABKAsyLi5mbHV4ZXIudXNlci5wcmVmZXJlbmNlcy52MS5TcGVsbGNoZWNrU2V0dGluZ3MSSAoOc2VhcmNoX2VuZ2luZXMYZiABKAsyMC5mbHV4ZXIudXNlci5wcmVmZXJlbmNlcy52MS5TZWFyY2hFbmdpbmVTZXR0aW5ncxJPChFwZXJtaXNzaW9uX2xheW91dBhnIAEoCzI0LmZsdXhlci51c2VyLnByZWZlcmVuY2VzLnYxLlBlcm1pc3Npb25MYXlvdXRTZXR0aW5ncxJSChNndWlsZF9tZW1iZXJfbGF5b3V0GGggASgLMjUuZmx1eGVyLnVzZXIucHJlZmVyZW5jZXMudjEuR3VpbGRNZW1iZXJMYXlvdXRTZXR0aW5ncxJLCg1ndWlsZF9mb2xkZXJzGGkgASgLMjQuZmx1eGVyLnVzZXIucHJlZmVyZW5jZXMudjEuR3VpbGRGb2xkZXJFeHBhbmRlZFN0YXRlElAKFGhpZGRlbl9ndWlsZF9idXR0b25zGGogASgLMjIuZmx1eGVyLnVzZXIucHJlZmVyZW5jZXMudjEuSGlkZGVuR3VpbGRMaXN0QnV0dG9ucxJPChNrZXlib2FyZF9tb2RlX2ludHJvGGsgASgLMjIuZmx1eGVyLnVzZXIucHJlZmVyZW5jZXMudjEuS2V5Ym9hcmRNb2RlSW50cm9TdGF0ZRJRChBpbnB1dF9tb25pdG9yaW5nGGwgASgLMjcuZmx1eGVyLnVzZXIucHJlZmVyZW5jZXMudjEuSW5wdXRNb25pdG9yaW5nUHJvbXB0c1N0YXRlEkQKDXZvaWNlX3Byb21wdHMYbSABKAsyLS5mbHV4ZXIudXNlci5wcmVmZXJlbmNlcy52MS5Wb2ljZVByb21wdHNTdGF0ZRJACgtzdWRvX3Byb21wdBhuIAEoCzIrLmZsdXhlci51c2VyLnByZWZlcmVuY2VzLnYxLlN1ZG9Qcm9tcHRTdGF0ZRI9CghrZXliaW5kcxhvIAEoCzIrLmZsdXhlci51c2VyLnByZWZlcmVuY2VzLnYxLktleWJpbmRTZXR0aW5ncxJBCgpjaGF0X2lucHV0GHAgASgLMi0uZmx1eGVyLnVzZXIucHJlZmVyZW5jZXMudjEuQ2hhdElucHV0U2V0dGluZ3MSKgodc2F2ZV9jYW1lcmFfdXBsb2Fkc190b19kZXZpY2UYcSABKAhIAIgBARJGChNkb3VibGVfdGFwX3JlYWN0aW9uGHIgASgLMikuZmx1eGVyLnVzZXIucHJlZmVyZW5jZXMudjEuUmVhY3Rpb25FbW9qaUIgCh5fc2F2ZV9jYW1lcmFfdXBsb2Fkc190b19kZXZpY2UisAEKElNwZWxsY2hlY2tTZXR0aW5ncxIUCgdlbmFibGVkGAEgASgISACIAQESEQoJbGFuZ3VhZ2VzGAIgAygJEhsKE3BlcnNvbmFsX2RpY3Rpb25hcnkYAyADKAkSGAoLYXV0b19kZXRlY3QYBCABKAhIAYgBARITCgZlbmdpbmUYBSABKAlIAogBAUIKCghfZW5hYmxlZEIOCgxfYXV0b19kZXRlY3RCCQoHX2VuZ2luZSLmAQoUU2VhcmNoRW5naW5lU2V0dGluZ3MSIgoVdGV4dF9zZWFyY2hfZW5naW5lX2lkGAEgASgJSACIAQESKwoecmV2ZXJzZV9pbWFnZV9zZWFyY2hfZW5naW5lX2lkGAIgASgJSAGIAQESJAoXdHJhbnNsYXRpb25fcHJvdmlkZXJfaWQYAyABKAlIAogBAUIYChZfdGV4dF9zZWFyY2hfZW5naW5lX2lkQiEKH19yZXZlcnNlX2ltYWdlX3NlYXJjaF9lbmdpbmVfaWRCGgoYX3RyYW5zbGF0aW9uX3Byb3ZpZGVyX2lkIrUBChJQcml2YWN5UHJlZmVyZW5jZXMSHwoXZGlzYWJsZV9zdHJlYW1fcHJldmlld3MYASABKAgSHAoPc2hvd19hY3RpdmVfbm93GAIgASgISACIAQESKgodcHJldXBsb2FkX21lc3NhZ2VfYXR0YWNobWVudHMYAyABKAhIAYgBAUISChBfc2hvd19hY3RpdmVfbm93QiAKHl9wcmV1cGxvYWRfbWVzc2FnZV9hdHRhY2htZW50cyJQChZMb2NhbFVzZXJTcGFtT3ZlcnJpZGVzEhgKEHNwYW1tZXJfdXNlcl9pZHMYASADKAkSHAoUbm90X3NwYW1tZXJfdXNlcl9pZHMYAiADKAkiKwoWVGV4dHVhbFByZXZpZXdTZXR0aW5ncxIRCgl3cmFwX3RleHQYASABKAgi3AEKElNpZGViYXJQcmVmZXJlbmNlcxIcChRpbmxpbmVfZG1zX2NvbGxhcHNlZBgBIAEoCBIsCh9zaG93X2NvbGxhcHNlZF91bnJlYWRfZG1zX2JhZGdlGAIgASgISACIAQESLwoic2hvd19pbmNvbWluZ19mcmllbmRfcmVxdWVzdF9iYWRnZRgDIAEoCEgBiAEBQiIKIF9zaG93X2NvbGxhcHNlZF91bnJlYWRfZG1zX2JhZGdlQiUKI19zaG93X2luY29taW5nX2ZyaWVuZF9yZXF1ZXN0X2JhZGdlIj0KD01lbWJlckxpc3RTdGF0ZRIZCgxtZW1iZXJzX29wZW4YASABKAhIAIgBAUIPCg1fbWVtYmVyc19vcGVuIjQKE1VucmVhZENoYW5uZWxzU3RhdGUSHQoVY29sbGFwc2VkX2NoYW5uZWxfaWRzGAEgAygJIqoBChZSZWNlbnRNZW50aW9uc1NldHRpbmdzEh0KEGluY2x1ZGVfZXZlcnlvbmUYASABKAhIAIgBARIaCg1pbmNsdWRlX3JvbGVzGAIgASgISAGIAQESGwoOaW5jbHVkZV9ndWlsZHMYAyABKAhIAogBAUITChFfaW5jbHVkZV9ldmVyeW9uZUIQCg5faW5jbHVkZV9yb2xlc0IRCg9faW5jbHVkZV9ndWlsZHMi/wEKFE1lbnRpb25GcmVjZW5jeVN0YXRlEkYKBnNjb3BlcxgBIAMoCzI2LmZsdXhlci51c2VyLnByZWZlcmVuY2VzLnYxLk1lbnRpb25GcmVjZW5jeVN0YXRlLlNjb3BlGjsKBUVudHJ5Eg8KB3VzZXJfaWQYASABKAkSDQoFY291bnQYAiABKA0SEgoKbGFzdF9hdF9tcxgDIAEoAxpiCgVTY29wZRIQCghndWlsZF9pZBgBIAEoCRJHCgdlbnRyaWVzGAIgAygLMjYuZmx1eGVyLnVzZXIucHJlZmVyZW5jZXMudjEuTWVudGlvbkZyZWNlbmN5U3RhdGUuRW50cnki3QEKDkZhdm9yaXRlc1N0YXRlEj0KCGNoYW5uZWxzGAEgAygLMisuZmx1eGVyLnVzZXIucHJlZmVyZW5jZXMudjEuRmF2b3JpdGVDaGFubmVsEkAKCmNhdGVnb3JpZXMYAiADKAsyLC5mbHV4ZXIudXNlci5wcmVmZXJlbmNlcy52MS5GYXZvcml0ZUNhdGVnb3J5Eh4KFmNvbGxhcHNlZF9jYXRlZ29yeV9pZHMYAyADKAkSGwoTaGlkZV9tdXRlZF9jaGFubmVscxgEIAEoCBINCgVtdXRlZBgFIAEoCCKTAQoPRmF2b3JpdGVDaGFubmVsEhIKCmNoYW5uZWxfaWQYASABKAkSEAoIZ3VpbGRfaWQYAiABKAkSFgoJcGFyZW50X2lkGAMgASgJSACIAQESEAoIcG9zaXRpb24YBCABKAUSFQoIbmlja25hbWUYBSABKAlIAYgBAUIMCgpfcGFyZW50X2lkQgsKCV9uaWNrbmFtZSI+ChBGYXZvcml0ZUNhdGVnb3J5EgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSEAoIcG9zaXRpb24YAyABKAUi+ggKEE5hZ2JhckRpc21pc3NhbHMSEwoLaW9zX2luc3RhbGwYASABKAgSEwoLcHdhX2luc3RhbGwYAiABKAgSGQoRcHVzaF9ub3RpZmljYXRpb24YAyABKAgSHAoUZGVza3RvcF9ub3RpZmljYXRpb24YBCABKAgSHAoUcHJlbWl1bV9ncmFjZV9wZXJpb2QYBSABKAgSFwoPcHJlbWl1bV9leHBpcmVkGAYgASgIEhoKEnByZW1pdW1fb25ib2FyZGluZxgHIAEoCBIeChZwcmVtaXVtX3RyaWFsX2V4cGlyaW5nGAggASgIEhYKDmdpZnRfaW52ZW50b3J5GAkgASgIEhgKEGRlc2t0b3BfZG93bmxvYWQYCiABKAgSHAoUZ3VpbGRfbWVtYmVyc2hpcF9jdGEYCyABKAgSFQoNdmlzaW9uYXJ5X21mYRgMIAEoCBIbChNsZWdhY3lfcGhvbmVfdW5saW5rGA4gASgIEmQKFXBlbmRpbmdfYnVsa19kZWxldGlvbhgPIAMoCzJFLmZsdXhlci51c2VyLnByZWZlcmVuY2VzLnYxLk5hZ2JhckRpc21pc3NhbHMuUGVuZGluZ0J1bGtEZWxldGlvbkVudHJ5ElsKEGludml0ZXNfZGlzYWJsZWQYECADKAsyQS5mbHV4ZXIudXNlci5wcmVmZXJlbmNlcy52MS5OYWdiYXJEaXNtaXNzYWxzLkludml0ZXNEaXNhYmxlZEVudHJ5EmQKFWd1aWxkX21mYV9yZXF1aXJlbWVudBgRIAMoCzJFLmZsdXhlci51c2VyLnByZWZlcmVuY2VzLnYxLk5hZ2JhckRpc21pc3NhbHMuR3VpbGRNZmFSZXF1aXJlbWVudEVudHJ5El8KEnByaWNlX2Fubm91bmNlbWVudBgSIAMoCzJDLmZsdXhlci51c2VyLnByZWZlcmVuY2VzLnYxLk5hZ2JhckRpc21pc3NhbHMuUHJpY2VBbm5vdW5jZW1lbnRFbnRyeRJfChNsZWdhY3lfcHJpY2Vfb3B0X2luGBMgAygLMkIuZmx1eGVyLnVzZXIucHJlZmVyZW5jZXMudjEuTmFnYmFyRGlzbWlzc2Fscy5MZWdhY3lQcmljZU9wdEluRW50cnkaOgoYUGVuZGluZ0J1bGtEZWxldGlvbkVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCDoCOAEaNgoUSW52aXRlc0Rpc2FibGVkRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgIOgI4ARo6ChhHdWlsZE1mYVJlcXVpcmVtZW50RW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgIOgI4ARo4ChZQcmljZUFubm91bmNlbWVudEVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCDoCOAEaNwoVTGVnYWN5UHJpY2VPcHRJbkVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCDoCOAEiKgoQRGlzbWlzc2VkVXBzZWxscxIWCg5waWNrZXJfcHJlbWl1bRgBIAEoCCJoChNHdWlsZE5zZndBZ3JlZW1lbnRzEhoKEmFncmVlZF9jaGFubmVsX2lkcxgBIAMoCRIYChBhZ3JlZWRfZ3VpbGRfaWRzGAIgAygJEhsKE2FncmVlZF9jYXRlZ29yeV9pZHMYAyADKAkiUQoNV2hhdHNOZXdTdGF0ZRIkChdsYXN0X2Rpc21pc3NlZF9lbnRyeV9pZBgBIAEoCUgAiAEBQhoKGF9sYXN0X2Rpc21pc3NlZF9lbnRyeV9pZCKaAQoYUGVybWlzc2lvbkxheW91dFNldHRpbmdzEkAKBmxheW91dBgBIAEoDjIwLmZsdXhlci51c2VyLnByZWZlcmVuY2VzLnYxLlBlcm1pc3Npb25MYXlvdXRNb2RlEjwKBGdyaWQYAiABKA4yLi5mbHV4ZXIudXNlci5wcmVmZXJlbmNlcy52MS5QZXJtaXNzaW9uR3JpZE1vZGUiWgoZR3VpbGRNZW1iZXJMYXlvdXRTZXR0aW5ncxI9CgRtb2RlGAEgASgOMi8uZmx1eGVyLnVzZXIucHJlZmVyZW5jZXMudjEuR3VpbGRNZW1iZXJWaWV3TW9kZSI3ChhHdWlsZEZvbGRlckV4cGFuZGVkU3RhdGUSGwoTZXhwYW5kZWRfZm9sZGVyX2lkcxgBIAMoBiJGChZIaWRkZW5HdWlsZExpc3RCdXR0b25zEhcKD2Rvd25sb2FkX2J1dHRvbhgBIAEoCBITCgtoZWxwX2J1dHRvbhgCIAEoCCImChZLZXlib2FyZE1vZGVJbnRyb1N0YXRlEgwKBHNlZW4YASABKAgiLwobSW5wdXRNb25pdG9yaW5nUHJvbXB0c1N0YXRlEhAKCHNlZW5fY3RhGAEgASgIImQKEVZvaWNlUHJvbXB0c1N0YXRlEiQKHHNraXBfaGlkZV9vd25fY2FtZXJhX2NvbmZpcm0YASABKAgSKQohc2tpcF9oaWRlX293bl9zY3JlZW5zaGFyZV9jb25maXJtGAIgASgIInQKD1N1ZG9Qcm9tcHRTdGF0ZRJIChRsYXN0X3VzZWRfbWZhX21ldGhvZBgBIAEoDjIlLmZsdXhlci51c2VyLnByZWZlcmVuY2VzLnYxLk1mYU1ldGhvZEgAiAEBQhcKFV9sYXN0X3VzZWRfbWZhX21ldGhvZCK6AQoPS2V5YmluZFNldHRpbmdzEkIKD2N1c3RvbV9rZXliaW5kcxgBIAMoCzIpLmZsdXhlci51c2VyLnByZWZlcmVuY2VzLnYxLkN1c3RvbUtleWJpbmQSFQoNdHJhbnNtaXRfbW9kZRgCIAEoCRIqCh1wdXNoX3RvX3RhbGtfcmVsZWFzZV9kZWxheV9tcxgDIAEoDUgAiAEBQiAKHl9wdXNoX3RvX3RhbGtfcmVsZWFzZV9kZWxheV9tcyKFAQoNQ3VzdG9tS2V5YmluZBIKCgJpZBgBIAEoCRITCgZhY3Rpb24YAiABKAlIAIgBARI3CgVjb21ibxgDIAEoCzIoLmZsdXhlci51c2VyLnByZWZlcmVuY2VzLnYxLktleWJpbmRDb21ibxIPCgdlbmFibGVkGAQgASgIQgkKB19hY3Rpb24izgIKDEtleWJpbmRDb21ibxILCgNrZXkYASABKAkSEQoEY29kZRgCIAEoCUgAiAEBEhQKDGN0cmxfb3JfbWV0YRgDIAEoCBIMCgRjdHJsGAQgASgIEgsKA2FsdBgFIAEoCBINCgVzaGlmdBgGIAEoCBIMCgRtZXRhGAcgASgIEhMKBmdsb2JhbBgIIAEoCEgBiAEBEhQKB2VuYWJsZWQYCSABKAhIAogBARIVCg1tb2RpZmllcl9vbmx5GAogASgIEhIKCmJvdGhfc2lkZXMYCyABKAgSGQoMbW91c2VfYnV0dG9uGAwgASgNSAOIAQESGwoOZ2FtZXBhZF9idXR0b24YDSABKA1IBIgBAUIHCgVfY29kZUIJCgdfZ2xvYmFsQgoKCF9lbmFibGVkQg8KDV9tb3VzZV9idXR0b25CEQoPX2dhbWVwYWRfYnV0dG9uIkkKEUNoYXRJbnB1dFNldHRpbmdzEh4KEWNvbnZlcnRfZW1vdGljb25zGAEgASgISACIAQFCFAoSX2NvbnZlcnRfZW1vdGljb25zIjUKDVJlYWN0aW9uRW1vamkSDwoCaWQYASABKAlIAIgBARIMCgRuYW1lGAIgASgJQgUKA19pZCqCAQoUUGVybWlzc2lvbkxheW91dE1vZGUSJgoiUEVSTUlTU0lPTl9MQVlPVVRfTU9ERV9VTlNQRUNJRklFRBAAEiAKHFBFUk1JU1NJT05fTEFZT1VUX01PREVfQ09NRlkQARIgChxQRVJNSVNTSU9OX0xBWU9VVF9NT0RFX0RFTlNFEAIqegoSUGVybWlzc2lvbkdyaWRNb2RlEiQKIFBFUk1JU1NJT05fR1JJRF9NT0RFX1VOU1BFQ0lGSUVEEAASHwobUEVSTUlTU0lPTl9HUklEX01PREVfU0lOR0xFEAESHQoZUEVSTUlTU0lPTl9HUklEX01PREVfR1JJRBACKoABChNHdWlsZE1lbWJlclZpZXdNb2RlEiYKIkdVSUxEX01FTUJFUl9WSUVXX01PREVfVU5TUEVDSUZJRUQQABIgChxHVUlMRF9NRU1CRVJfVklFV19NT0RFX1RBQkxFEAESHwobR1VJTERfTUVNQkVSX1ZJRVdfTU9ERV9HUklEEAIqVQoJTWZhTWV0aG9kEhoKFk1GQV9NRVRIT0RfVU5TUEVDSUZJRUQQABITCg9NRkFfTUVUSE9EX1RPVFAQARIXChNNRkFfTUVUSE9EX1dFQkFVVEhOEANiBnByb3RvMw", [file_fluxer_user_preferences_v1_accessibility, file_fluxer_user_preferences_v1_pickers]); /** * @generated from message fluxer.user.preferences.v1.SyncedPreferences @@ -195,6 +195,11 @@ export type SyncedPreferences = Message<"fluxer.user.preferences.v1.SyncedPrefer * @generated from field: optional bool save_camera_uploads_to_device = 113; */ saveCameraUploadsToDevice?: boolean | undefined; + + /** + * @generated from field: fluxer.user.preferences.v1.ReactionEmoji double_tap_reaction = 114; + */ + doubleTapReaction?: ReactionEmoji | undefined; }; /** @@ -1056,6 +1061,28 @@ export type ChatInputSettings = Message<"fluxer.user.preferences.v1.ChatInputSet export const ChatInputSettingsSchema: GenMessage = /*@__PURE__*/ messageDesc(file_fluxer_user_preferences_v1_preferences, 29); +/** + * @generated from message fluxer.user.preferences.v1.ReactionEmoji + */ +export type ReactionEmoji = Message<"fluxer.user.preferences.v1.ReactionEmoji"> & { + /** + * @generated from field: optional string id = 1; + */ + id?: string | undefined; + + /** + * @generated from field: string name = 2; + */ + name: string; +}; + +/** + * Describes the message fluxer.user.preferences.v1.ReactionEmoji. + * Use `create(ReactionEmojiSchema)` to create a new message. + */ +export const ReactionEmojiSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_fluxer_user_preferences_v1_preferences, 30); + /** * @generated from enum fluxer.user.preferences.v1.PermissionLayoutMode */