From 88db99f36e0668e1ae59962d0b2d50391956d1cf Mon Sep 17 00:00:00 2001 From: Denis Rybas <61991100+DenisRybas@users.noreply.github.com> Date: Fri, 6 Sep 2024 15:46:19 +0300 Subject: [PATCH] Model DiscoveryCapabilitiesBitmask field (#589) Added new DiscoveryCapabilitiesBitmask field to model --- docs/transactions.md | 5 +- integration_tests/cli/model-demo.sh | 11 +- integration_tests/constants/constants.go | 2 + integration_tests/grpc_rest/model/helpers.go | 22 +- .../model/model.proto | 2 + .../model/tx.proto | 3 + x/model/client/cli/flags.go | 2 + x/model/client/cli/tx_model.go | 20 + x/model/client/cli/tx_model_test.go | 48 ++- x/model/handler_test.go | 12 +- x/model/keeper/msg_server_model.go | 6 + x/model/types/errors.go | 7 +- x/model/types/messages_model.go | 6 + x/model/types/messages_model_test.go | 25 ++ x/model/types/model.pb.go | 197 +++++++--- x/model/types/tx.pb.go | 346 +++++++++++++----- 16 files changed, 532 insertions(+), 182 deletions(-) diff --git a/docs/transactions.md b/docs/transactions.md index 6da7b09be..4504d31db 100644 --- a/docs/transactions.md +++ b/docs/transactions.md @@ -221,6 +221,8 @@ Not all fields can be edited (see `EDIT_MODEL`). - enhancedSetupFlowTCFileSize: `optional(uint32)` - enhancedSetupFlowTCFileSize SHALL indicate the total size of the Enhanced Setup Flow Terms and Conditions file in bytes, and SHALL be used to ensure the downloaded file size is within the bounds of EnhancedSetupFlowTCFileSize. This field SHALL be present if and only if the EnhancedSetupFlowOptions field has bit 0 set. - maintenanceUrl: `optional(string)` - maintenanceUrl SHALL identify a link to a vendor-specific URL which SHALL provide a manufacturer specific means to resolve any functionality limitations indicated by the TERMS_AND_CONDITIONS_CHANGED status code. This field SHALL be present if and only if the EnhancedSetupFlowOptions field has bit 0 set. - schemaVersion: `optional(uint16)` - Schema version to support backward/forward compatability. Should be equal to 0 (default 0) + - discoveryCapabilitiesBitmask: `optional(uint16)` - Identifies the device's available technologies for device discovery (default 0). This field SHALL be populated if CommissioningFallbackUrl is populated + - commissioningFallbackURL: `optional(string)` - This field SHALL identify a vendor-specific commissioning-fallback URL for the device model, which can be used by a Commissioner in case commissioning fails to direct the user to a manufacturer-provided mechanism to provide resolution to commissioning issues. - In State: - `model/Model/value//` - `model/VendorProducts/value/` @@ -237,7 +239,7 @@ dcld tx model add-model --vid= --pid= --deviceTypeID= -- ```bash dcld tx model add-model --vid= --pid= --deviceTypeID= --productName= --productLabel= --partNumber= --commissioningCustomFlow= --commissioningCustomFlowUrl= --commissioningModeInitialStepsHint= --commissioningModeInitialStepsInstruction= - --commissioningModeSecondaryStepsHint= --commissioningModeSecondaryStepsInstruction= --userManualURL= --supportURL= --productURL= --lsfURL= + --commissioningModeSecondaryStepsHint= --commissioningModeSecondaryStepsInstruction= --userManualURL= --supportURL= --productURL= --lsfURL= --discoveryCapabilitiesBitmask= --commissioningFallbackURL --from= ``` @@ -277,6 +279,7 @@ If one of EnhancedSetupFlow or MaintenanceUrl fields needs to be updated, ALL En - enhancedSetupFlowTCFileSize: `optional(uint32)` - enhancedSetupFlowTCFileSize SHALL indicate the total size of the Enhanced Setup Flow Terms and Conditions file in bytes, and SHALL be used to ensure the downloaded file size is within the bounds of EnhancedSetupFlowTCFileSize. This field SHALL be present if and only if the EnhancedSetupFlowOptions field has bit 0 set. - maintenanceUrl: `optional(string)` - maintenanceUrl SHALL identify a link to a vendor-specific URL which SHALL provide a manufacturer specific means to resolve any functionality limitations indicated by the TERMS_AND_CONDITIONS_CHANGED status code. This field SHALL be present if and only if the EnhancedSetupFlowOptions field has bit 0 set. - schemaVersion: `optional(uint16)` - Schema version to support backward/forward compatability. Should be equal to 0 (default 0) + - commissioningFallbackURL: `optional(string)` - This field SHALL identify a vendor-specific commissioning-fallback URL for the device model, which can be used by a Commissioner in case commissioning fails to direct the user to a manufacturer-provided mechanism to provide resolution to commissioning issues. - In State: `model/Model/value//` - Who can send: - Vendor account associated with the same vid who has created the model diff --git a/integration_tests/cli/model-demo.sh b/integration_tests/cli/model-demo.sh index 3380387aa..29c1e486f 100755 --- a/integration_tests/cli/model-demo.sh +++ b/integration_tests/cli/model-demo.sh @@ -75,9 +75,12 @@ enhancedSetupFlowTCRevision=1 enhancedSetupFlowTCDigest="MWRjNGE0NDA0MWRjYWYxMTU0NWI3NTQzZGZlOTQyZjQ3NDJmNTY4YmU2OGZlZTI3NTQ0MWIwOTJiYjYwZGVlZA==" enhancedSetupFlowTCFileSize=1024 maintenanceUrl="https://example.org" +commissioningFallbackUrl="https://url.commissioningfallbackurl.dclmodel" +discoveryCapabilitiesBitmask=1 echo "Add Model with VID: $vid_with_pids PID: $pid" result=$(echo "test1234" | dcld tx model add-model --vid=$vid_with_pids --pid=$pid --deviceTypeID=1 --productName=TestProduct --productLabel="$productLabel" --partNumber=1 --commissioningCustomFlow=0 --enhancedSetupFlowOptions=$enhancedSetupFlowOptions_1 \ - --enhancedSetupFlowTCUrl=$enhancedSetupFlowTCUrl --enhancedSetupFlowTCRevision=$enhancedSetupFlowTCRevision --enhancedSetupFlowTCDigest=$enhancedSetupFlowTCDigest --enhancedSetupFlowTCFileSize=$enhancedSetupFlowTCFileSize --maintenanceUrl=$maintenanceUrl --from=$vendor_account_with_pids --yes) + --enhancedSetupFlowTCUrl=$enhancedSetupFlowTCUrl --enhancedSetupFlowTCRevision=$enhancedSetupFlowTCRevision --enhancedSetupFlowTCDigest=$enhancedSetupFlowTCDigest --enhancedSetupFlowTCFileSize=$enhancedSetupFlowTCFileSize --maintenanceUrl=$maintenanceUrl \ + --commissioningFallbackUrl=$commissioningFallbackUrl --discoveryCapabilitiesBitmask=$discoveryCapabilitiesBitmask --from=$vendor_account_with_pids --yes) result=$(get_txn_result "$result") check_response "$result" "\"code\": 0" echo "$result" @@ -105,6 +108,8 @@ check_response "$result" "\"enhancedSetupFlowTCRevision\": $enhancedSetupFlowTCR check_response "$result" "\"enhancedSetupFlowTCDigest\": \"$enhancedSetupFlowTCDigest\"" check_response "$result" "\"enhancedSetupFlowTCFileSize\": $enhancedSetupFlowTCFileSize" check_response "$result" "\"maintenanceUrl\": \"$maintenanceUrl\"" +check_response "$result" "\"commissioningFallbackUrl\": \"$commissioningFallbackUrl\"" +check_response "$result" "\"discoveryCapabilitiesBitmask\": $discoveryCapabilitiesBitmask" echo "$result" test_divider @@ -159,9 +164,10 @@ newEnhancedSetupFlowTCRevision=2 newEnhancedSetupFlowTCDigest="MWRjM2E0MTA0MWRjYWYxMTU0NWI3NTQzZGZlOTQyZjQ3NDJmNTY4YmU2OGZlZTI3NTQ0MWIwOTJiYjYxZGVlZA==" newEnhancedSetupFlowTCFileSize=2048 newMaintenanceUrl="https://example2.org" +newCommissioningFallbackUrl="https://url.commissioningfallbackurl2.dclmodel" echo "Update Model with VID: ${vid_with_pids} PID: ${pid} with new description, enhancedSetupFlowTCUrl, enhancedSetupFlowTCRevision, enhancedSetupFlowTCDigest, enhancedSetupFlowTCFileSize and maintenanceUrl" result=$(echo "test1234" | dcld tx model update-model --vid=$vid_with_pids --pid=$pid --from $vendor_account_with_pids --yes --productLabel "$description" --enhancedSetupFlowOptions=$enhancedSetupFlowOptions_1 \ - --enhancedSetupFlowTCUrl=$newEnhancedSetupFlowTCUrl --enhancedSetupFlowTCRevision=$newEnhancedSetupFlowTCRevision --enhancedSetupFlowTCDigest=$newEnhancedSetupFlowTCDigest --enhancedSetupFlowTCFileSize=$newEnhancedSetupFlowTCFileSize --maintenanceUrl=$newMaintenanceUrl --from=$vendor_account_with_pids --yes) + --enhancedSetupFlowTCUrl=$newEnhancedSetupFlowTCUrl --enhancedSetupFlowTCRevision=$newEnhancedSetupFlowTCRevision --enhancedSetupFlowTCDigest=$newEnhancedSetupFlowTCDigest --enhancedSetupFlowTCFileSize=$newEnhancedSetupFlowTCFileSize --maintenanceUrl=$newMaintenanceUrl --commissioningFallbackUrl=$newCommissioningFallbackUrl --from=$vendor_account_with_pids --yes) result=$(get_txn_result "$result") check_response "$result" "\"code\": 0" echo "$result" @@ -189,6 +195,7 @@ check_response "$result" "\"enhancedSetupFlowTCRevision\": $newEnhancedSetupFlow check_response "$result" "\"enhancedSetupFlowTCDigest\": \"$newEnhancedSetupFlowTCDigest\"" check_response "$result" "\"enhancedSetupFlowTCFileSize\": $newEnhancedSetupFlowTCFileSize" check_response "$result" "\"maintenanceUrl\": \"$newMaintenanceUrl\"" +check_response "$result" "\"commissioningFallbackUrl\": \"$newCommissioningFallbackUrl\"" echo "$result" test_divider diff --git a/integration_tests/constants/constants.go b/integration_tests/constants/constants.go index 5736d363f..f0f20007a 100644 --- a/integration_tests/constants/constants.go +++ b/integration_tests/constants/constants.go @@ -87,6 +87,8 @@ var ( EnhancedSetupFlowTCDigest = "MmNmMjRkYmE1ZmIwYTMwZTI2ZTgzYjJhYzViOWUyOWUxYjE2MWU1YzFmYTc0MjVlNzMwNDMzNjI5MzhiOTgyNA==" EnhancedSetupFlowTCFileSize = 1 MaintenanceURL = "https://url.maintenanceurl.dclmodel" + CommissioningFallbackURL = "https://url.commissioningfallbackurl.dclmodel" + DiscoveryCapabilitiesBitmask uint32 = 0 LsfURL = "https://url.lsfurl.dclmodel" DataURL = "https://url.data.dclmodel" DataURL2 = "https://url.data.dclmodel2" diff --git a/integration_tests/grpc_rest/model/helpers.go b/integration_tests/grpc_rest/model/helpers.go index d3bddf3ed..fb356d4e9 100644 --- a/integration_tests/grpc_rest/model/helpers.go +++ b/integration_tests/grpc_rest/model/helpers.go @@ -54,16 +54,18 @@ func NewMsgCreateModel(vid int32, pid int32, signer string) *modeltypes.MsgCreat CommissioningModeInitialStepsInstruction: testconstants.CommissioningModeInitialStepsInstruction, CommissioningModeSecondaryStepsHint: testconstants.CommissioningModeSecondaryStepsHint, CommissioningModeSecondaryStepsInstruction: testconstants.CommissioningModeSecondaryStepsInstruction, - UserManualUrl: testconstants.UserManualURL, - SupportUrl: testconstants.SupportURL, - ProductUrl: testconstants.ProductURL, - LsfUrl: testconstants.LsfURL, - EnhancedSetupFlowOptions: testconstants.EnhancedSetupFlowOptions, - EnhancedSetupFlowTCUrl: testconstants.EnhancedSetupFlowTCURL, - EnhancedSetupFlowTCRevision: int32(testconstants.EnhancedSetupFlowTCRevision), - EnhancedSetupFlowTCDigest: testconstants.EnhancedSetupFlowTCDigest, - EnhancedSetupFlowTCFileSize: uint32(testconstants.EnhancedSetupFlowTCFileSize), - MaintenanceUrl: testconstants.MaintenanceURL, + UserManualUrl: testconstants.UserManualURL, + SupportUrl: testconstants.SupportURL, + ProductUrl: testconstants.ProductURL, + LsfUrl: testconstants.LsfURL, + EnhancedSetupFlowOptions: testconstants.EnhancedSetupFlowOptions, + EnhancedSetupFlowTCUrl: testconstants.EnhancedSetupFlowTCURL, + EnhancedSetupFlowTCRevision: int32(testconstants.EnhancedSetupFlowTCRevision), + EnhancedSetupFlowTCDigest: testconstants.EnhancedSetupFlowTCDigest, + EnhancedSetupFlowTCFileSize: uint32(testconstants.EnhancedSetupFlowTCFileSize), + MaintenanceUrl: testconstants.MaintenanceURL, + CommissioningFallbackUrl: testconstants.CommissioningFallbackURL, + DiscoveryCapabilitiesBitmask: testconstants.DiscoveryCapabilitiesBitmask, } } diff --git a/proto/zigbeealliance/distributedcomplianceledger/model/model.proto b/proto/zigbeealliance/distributedcomplianceledger/model/model.proto index 4cb476ca1..997950a2a 100644 --- a/proto/zigbeealliance/distributedcomplianceledger/model/model.proto +++ b/proto/zigbeealliance/distributedcomplianceledger/model/model.proto @@ -32,6 +32,8 @@ message Model { string enhancedSetupFlowTCDigest = 23 [(gogoproto.moretags) = "validate:\"required_if_bit_0_set=EnhancedSetupFlowOptions,omitempty,max=128\""]; uint32 enhancedSetupFlowTCFileSize = 24 [(gogoproto.moretags) = "validate:\"required_with=EnhancedSetupFlowTCUrl\""];; string maintenanceUrl = 25 [(gogoproto.moretags) = "validate:\"required_if_bit_0_set=EnhancedSetupFlowOptions,omitempty,url,startswith=https:,max=256\""]; + uint32 discoveryCapabilitiesBitmask = 26 [(gogoproto.moretags) = "validate:\"gte=0,lte=14\""]; + string commissioningFallbackUrl = 27 [(gogoproto.moretags) = "validate:\"omitempty,url,startsnotwith=http:,max=256\""]; } diff --git a/proto/zigbeealliance/distributedcomplianceledger/model/tx.proto b/proto/zigbeealliance/distributedcomplianceledger/model/tx.proto index 4b04a11dc..aaca2b2b5 100644 --- a/proto/zigbeealliance/distributedcomplianceledger/model/tx.proto +++ b/proto/zigbeealliance/distributedcomplianceledger/model/tx.proto @@ -47,6 +47,8 @@ message MsgCreateModel { string enhancedSetupFlowTCDigest = 22 [(gogoproto.moretags) = "validate:\"required_if_bit_0_set=EnhancedSetupFlowOptions,omitempty,max=128\""]; uint32 enhancedSetupFlowTCFileSize = 23 [(gogoproto.moretags) = "validate:\"required_with=EnhancedSetupFlowTCUrl\""];; string maintenanceUrl = 24 [(gogoproto.moretags) = "validate:\"required_if_bit_0_set=EnhancedSetupFlowOptions,omitempty,url,startswith=https:,max=256\""]; + uint32 discoveryCapabilitiesBitmask = 25 [(gogoproto.moretags) = "validate:\"gte=0,lte=14\""]; + string commissioningFallbackUrl = 26 [(gogoproto.moretags) = "validate:\"omitempty,url,startsnotwith=http:,max=256\""]; } message MsgCreateModelResponse {} @@ -74,6 +76,7 @@ message MsgUpdateModel { string enhancedSetupFlowTCDigest = 20 [(gogoproto.moretags) = "validate:\"required_if_bit_0_set=EnhancedSetupFlowOptions,omitempty,max=128\""]; uint32 enhancedSetupFlowTCFileSize = 21 [(gogoproto.moretags) = "validate:\"required_with=EnhancedSetupFlowTCUrl\""];; string maintenanceUrl = 22 [(gogoproto.moretags) = "validate:\"required_if_bit_0_set=EnhancedSetupFlowOptions,omitempty,url,startswith=https:,max=256\""]; + string commissioningFallbackUrl = 23 [(gogoproto.moretags) = "validate:\"omitempty,url,startsnotwith=http:,max=256\""]; } message MsgUpdateModelResponse {} diff --git a/x/model/client/cli/flags.go b/x/model/client/cli/flags.go index fd3323c14..4b60c6a07 100644 --- a/x/model/client/cli/flags.go +++ b/x/model/client/cli/flags.go @@ -10,6 +10,7 @@ const ( FlagProductLabel = "productLabel" FlagProductLabelShortcut = "d" FlagPartNumber = "partNumber" + FlagDiscoveryCapabilitiesBitmask = "discoveryCapabilitiesBitmask" FlagCommissioningCustomFlow = "commissioningCustomFlow" FlagCommissioningCustomFlowURL = "commissioningCustomFlowURL" FlagCommissioningModeInitialStepsHint = "commissioningModeInitialStepsHint" @@ -27,6 +28,7 @@ const ( FlagEnhancedSetupFlowTCDigest = "enhancedSetupFlowTCDigest" FlagEnhancedSetupFlowTCFileSize = "enhancedSetupFlowTCFileSize" FlagMaintenanceURL = "maintenanceUrl" + FlagCommissioningFallbackURL = "commissioningFallbackUrl" // Flags for ModelVersion. FlagSoftwareVersion = "softwareVersion" FlagSoftwareVersionShortcut = "v" diff --git a/x/model/client/cli/tx_model.go b/x/model/client/cli/tx_model.go index 8cef36c7c..2d045ff5f 100644 --- a/x/model/client/cli/tx_model.go +++ b/x/model/client/cli/tx_model.go @@ -19,6 +19,7 @@ func CmdCreateModel() *cobra.Command { productName string productLabel string partNumber string + discoveryCapabilitiesBitmask uint32 commissioningCustomFlow int32 commissioningCustomFlowURL string commissioningModeInitialStepsHint uint32 @@ -35,6 +36,7 @@ func CmdCreateModel() *cobra.Command { enhancedSetupFlowTCDigest string enhancedSetupFlowTCFileSize uint32 maintenanceURL string + commissioningFallbackURL string schemaVersion uint32 ) @@ -43,6 +45,13 @@ func CmdCreateModel() *cobra.Command { Short: "Add new Model", Args: cobra.ExactArgs(0), RunE: func(cmd *cobra.Command, args []string) (err error) { + isCommissioningFallbackURLSpecified := cmd.Flags().Changed(FlagCommissioningFallbackURL) + isDiscoveryCapabilitiesBitmaskSpecified := cmd.Flags().Changed(FlagDiscoveryCapabilitiesBitmask) + + if isCommissioningFallbackURLSpecified && !isDiscoveryCapabilitiesBitmaskSpecified { + return types.ErrFallbackURLRequiresBitmask + } + clientCtx, err := client.GetClientTxContext(cmd) if err != nil { return err @@ -61,6 +70,7 @@ func CmdCreateModel() *cobra.Command { productName, productLabel, partNumber, + discoveryCapabilitiesBitmask, commissioningCustomFlow, commissioningCustomFlowURL, commissioningModeInitialStepsHint, @@ -78,6 +88,7 @@ func CmdCreateModel() *cobra.Command { enhancedSetupFlowTCDigest, enhancedSetupFlowTCFileSize, maintenanceURL, + commissioningFallbackURL, ) // validate basic will be called in GenerateOrBroadcastTxCLI @@ -102,6 +113,9 @@ func CmdCreateModel() *cobra.Command { "Model description (string or path to file containing data)") cmd.Flags().StringVar(&partNumber, FlagPartNumber, "", "Model Part Number (or sku)") + cmd.Flags().Uint32Var(&discoveryCapabilitiesBitmask, FlagDiscoveryCapabilitiesBitmask, 0, + `This field identifies the device's available technologies for device discovery. +This field SHALL be populated if CommissioningFallbackUrl is populated`) cmd.Flags().Int32Var(&commissioningCustomFlow, FlagCommissioningCustomFlow, 0, `A value of 1 indicates that user interaction with the device (pressing a button, for example) is required before commissioning can take place. When CommissioningCustomflow is set to a value of 2, @@ -153,6 +167,8 @@ and for these values the commissioningModeSecondaryStepInstruction SHALL be set` "enhancedSetupFlowTCFileSize SHALL indicate the total size of the Enhanced Setup Flow Terms and Conditions file in bytes, and SHALL be used to ensure the downloaded file size is within the bounds of EnhancedSetupFlowTCFileSize. This field SHALL be present if and only if the EnhancedSetupFlowOptions field has bit 0 set.") cmd.Flags().StringVar(&maintenanceURL, FlagMaintenanceURL, "", "maintenanceURL SHALL identify a link to a vendor-specific URL which SHALL provide a manufacturer specific means to resolve any functionality limitations indicated by the TERMS_AND_CONDITIONS_CHANGED status code. This field SHALL be present if and only if the EnhancedSetupFlowOptions field has bit 0 set.") + cmd.Flags().StringVar(&commissioningFallbackURL, FlagCommissioningFallbackURL, "", + "This field SHALL identify a vendor-specific commissioning-fallback URL for the device model, which can be used by a Commissioner in case commissioning fails to direct the user to a manufacturer-provided mechanism to provide resolution to commissioning issues.") _ = cmd.MarkFlagRequired(FlagVid) _ = cmd.MarkFlagRequired(FlagPid) @@ -186,6 +202,7 @@ func CmdUpdateModel() *cobra.Command { enhancedSetupFlowTCDigest string enhancedSetupFlowTCFileSize uint32 maintenanceURL string + commissioningFallbackURL string ) cmd := &cobra.Command{ @@ -226,6 +243,7 @@ func CmdUpdateModel() *cobra.Command { enhancedSetupFlowTCDigest, enhancedSetupFlowTCFileSize, maintenanceURL, + commissioningFallbackURL, ) // validate basic will be called in GenerateOrBroadcastTxCLI @@ -289,6 +307,8 @@ will enter Commissioning Mode upon a power cycle. Note that this value cannot be "enhancedSetupFlowTCFileSize SHALL indicate the total size of the Enhanced Setup Flow Terms and Conditions file in bytes, and SHALL be used to ensure the downloaded file size is within the bounds of EnhancedSetupFlowTCFileSize. This field SHALL be present if and only if the EnhancedSetupFlowOptions field has bit 0 set.") cmd.Flags().StringVar(&maintenanceURL, FlagMaintenanceURL, "", "maintenanceURL SHALL identify a link to a vendor-specific URL which SHALL provide a manufacturer specific means to resolve any functionality limitations indicated by the TERMS_AND_CONDITIONS_CHANGED status code. This field SHALL be present if and only if the EnhancedSetupFlowOptions field has bit 0 set.") + cmd.Flags().StringVar(&commissioningFallbackURL, FlagCommissioningFallbackURL, "", + "This field SHALL identify a vendor-specific commissioning-fallback URL for the device model, which can be used by a Commissioner in case commissioning fails to direct the user to a manufacturer-provided mechanism to provide resolution to commissioning issues.") cli.AddTxFlagsToCmd(cmd) diff --git a/x/model/client/cli/tx_model_test.go b/x/model/client/cli/tx_model_test.go index d21fb3d06..08098d29d 100644 --- a/x/model/client/cli/tx_model_test.go +++ b/x/model/client/cli/tx_model_test.go @@ -6,6 +6,7 @@ import ( "testing" "github.com/cosmos/cosmos-sdk/client/flags" + clitestutil "github.com/cosmos/cosmos-sdk/testutil/cli" authtx "github.com/cosmos/cosmos-sdk/x/auth/tx" "github.com/stretchr/testify/require" @@ -53,12 +54,30 @@ func TestCreateModel(t *testing.T) { } for _, tc := range []struct { - desc string - idVid int32 - idPid int32 + desc string + idVid int32 + idPid int32 + isBitmaskSet bool + commissioningFallbackURL string err error }{ + { + desc: "discoveryCapabilitiesBitmask is provided when commissioningFallbackURL is provided", + idVid: testconstants.Vid, + idPid: testconstants.Pid, + isBitmaskSet: true, + commissioningFallbackURL: testconstants.CommissioningFallbackURL, + }, + { + desc: "discoveryCapabilitiesBitmask is not provided when commissioningFallbackURL is provided", + idVid: testconstants.Vid, + idPid: testconstants.Pid, + isBitmaskSet: false, + commissioningFallbackURL: testconstants.CommissioningFallbackURL, + + err: types.ErrFallbackURLRequiresBitmask, + }, { desc: "valid", idVid: testconstants.Vid, @@ -71,19 +90,21 @@ func TestCreateModel(t *testing.T) { fmt.Sprintf("--%s=%v", cli.FlagVid, tc.idVid), fmt.Sprintf("--%s=%v", cli.FlagPid, tc.idPid), } + + if tc.isBitmaskSet { + args = append(args, fmt.Sprintf("--%s=%v", cli.FlagDiscoveryCapabilitiesBitmask, testconstants.DiscoveryCapabilitiesBitmask)) + } + + if tc.commissioningFallbackURL != "" { + args = append(args, fmt.Sprintf("--%s=%v", cli.FlagCommissioningFallbackURL, tc.commissioningFallbackURL)) + } + args = append(args, fields...) args = append(args, common...) - txResp, err := testcli.ExecTestCLITxCmd(t, ctx, cli.CmdCreateModel(), args) - require.NoError(t, err) + _, err := clitestutil.ExecTestCLICmd(ctx, cli.CmdCreateModel(), args) + require.ErrorIs(t, err, tc.err) err = net.WaitForNextBlock() require.NoError(t, err) - if tc.err != nil { - resp, err := authtx.QueryTx(ctx, txResp.TxHash) - require.NoError(t, err) - require.Contains(t, resp.RawLog, tc.err.Error()) - } else { - require.NoError(t, err) - } }) } } @@ -122,6 +143,8 @@ func TestUpdateModel(t *testing.T) { fmt.Sprintf("--%s=%v", cli.FlagEnhancedSetupFlowTCDigest, testconstants.EnhancedSetupFlowTCDigest), fmt.Sprintf("--%s=%v", cli.FlagEnhancedSetupFlowTCFileSize, testconstants.EnhancedSetupFlowTCFileSize), fmt.Sprintf("--%s=%v", cli.FlagMaintenanceURL, testconstants.MaintenanceURL), + fmt.Sprintf("--%s=%v", cli.FlagCommissioningFallbackURL, testconstants.CommissioningFallbackURL), + fmt.Sprintf("--%s=%v", cli.FlagDiscoveryCapabilitiesBitmask, testconstants.DiscoveryCapabilitiesBitmask), } args = append(args, common...) _, err := testcli.ExecTestCLITxCmd(t, ctx, cli.CmdCreateModel(), args) @@ -147,6 +170,7 @@ func TestUpdateModel(t *testing.T) { fmt.Sprintf("--%s=%v", cli.FlagEnhancedSetupFlowTCDigest, testconstants.EnhancedSetupFlowTCDigest), fmt.Sprintf("--%s=%v", cli.FlagEnhancedSetupFlowTCFileSize, uint32(testconstants.EnhancedSetupFlowTCFileSize+1)), fmt.Sprintf("--%s=%v", cli.FlagMaintenanceURL, testconstants.MaintenanceURL+"/updated"), + fmt.Sprintf("--%s=%v", cli.FlagCommissioningFallbackURL, testconstants.CommissioningFallbackURL+"/updated"), } for _, tc := range []struct { diff --git a/x/model/handler_test.go b/x/model/handler_test.go index 4800e9545..a8b4f46d4 100644 --- a/x/model/handler_test.go +++ b/x/model/handler_test.go @@ -170,6 +170,7 @@ func TestHandler_AddModel(t *testing.T) { require.Equal(t, msgCreateModel.Vid, receivedModel.Vid) require.Equal(t, msgCreateModel.Pid, receivedModel.Pid) require.Equal(t, msgCreateModel.DeviceTypeId, receivedModel.DeviceTypeId) + require.Equal(t, msgCreateModel.CommissioningFallbackUrl, receivedModel.CommissioningFallbackUrl) } func TestHandler_AddModel_CheckCommissioningModeInitialStepsHintHandling(t *testing.T) { @@ -252,6 +253,7 @@ func TestHandler_UpdateModel(t *testing.T) { require.Equal(t, msgUpdateModel.ProductLabel, receivedModel.ProductLabel) require.Equal(t, newCommissioningModeInitialStepsHint, receivedModel.CommissioningModeInitialStepsHint) require.Equal(t, newSchemaVersion, receivedModel.SchemaVersion) + require.Equal(t, msgUpdateModel.CommissioningFallbackUrl, receivedModel.CommissioningFallbackUrl) } func TestHandler_UpdateModelByVendorWithProductIds(t *testing.T) { @@ -1801,10 +1803,11 @@ func NewMsgCreateModel(signer sdk.AccAddress) *types.MsgCreateModel { CommissioningModeInitialStepsInstruction: testconstants.CommissioningModeInitialStepsInstruction, CommissioningModeSecondaryStepsHint: testconstants.CommissioningModeSecondaryStepsHint, CommissioningModeSecondaryStepsInstruction: testconstants.CommissioningModeSecondaryStepsInstruction, - UserManualUrl: testconstants.UserManualURL, - SupportUrl: testconstants.SupportURL, - ProductUrl: testconstants.ProductURL, - LsfUrl: testconstants.LsfURL, + UserManualUrl: testconstants.UserManualURL, + SupportUrl: testconstants.SupportURL, + ProductUrl: testconstants.ProductURL, + LsfUrl: testconstants.LsfURL, + CommissioningFallbackUrl: testconstants.CommissioningFallbackURL, } } @@ -1830,6 +1833,7 @@ func NewMsgUpdateModel(signer sdk.AccAddress) *types.MsgUpdateModel { EnhancedSetupFlowTCDigest: testconstants.EnhancedSetupFlowTCDigest, EnhancedSetupFlowTCFileSize: uint32(testconstants.EnhancedSetupFlowTCFileSize + 1), MaintenanceUrl: testconstants.MaintenanceURL + "/updated", + CommissioningFallbackUrl: testconstants.CommissioningFallbackURL + "/updated", } } diff --git a/x/model/keeper/msg_server_model.go b/x/model/keeper/msg_server_model.go index 446339a75..e29923388 100644 --- a/x/model/keeper/msg_server_model.go +++ b/x/model/keeper/msg_server_model.go @@ -39,6 +39,7 @@ func (k msgServer) CreateModel(goCtx context.Context, msg *types.MsgCreateModel) ProductName: msg.ProductName, ProductLabel: msg.ProductLabel, PartNumber: msg.PartNumber, + DiscoveryCapabilitiesBitmask: msg.DiscoveryCapabilitiesBitmask, CommissioningCustomFlow: msg.CommissioningCustomFlow, CommissioningCustomFlowUrl: msg.CommissioningCustomFlowUrl, CommissioningModeInitialStepsHint: msg.CommissioningModeInitialStepsHint, @@ -51,6 +52,7 @@ func (k msgServer) CreateModel(goCtx context.Context, msg *types.MsgCreateModel) LsfUrl: msg.LsfUrl, EnhancedSetupFlowOptions: msg.EnhancedSetupFlowOptions, SchemaVersion: msg.SchemaVersion, + CommissioningFallbackUrl: msg.CommissioningFallbackUrl, } // if LsfUrl is not empty, we set lsfRevision to default value of 1 @@ -148,6 +150,10 @@ func (k msgServer) UpdateModel(goCtx context.Context, msg *types.MsgUpdateModel) model.ProductUrl = msg.ProductUrl } + if msg.CommissioningFallbackUrl != "" { + model.CommissioningFallbackUrl = msg.CommissioningFallbackUrl + } + model.EnhancedSetupFlowOptions = msg.EnhancedSetupFlowOptions if msg.EnhancedSetupFlowOptions&1 == 1 { model.EnhancedSetupFlowTCUrl = msg.EnhancedSetupFlowTCUrl diff --git a/x/model/types/errors.go b/x/model/types/errors.go index 2a8bc8fe5..36771c8d5 100644 --- a/x/model/types/errors.go +++ b/x/model/types/errors.go @@ -6,9 +6,10 @@ import ( var ( // Model Error Codes. - ErrModelAlreadyExists = errors.Register(ModuleName, 501, "model already exists") - ErrModelDoesNotExist = errors.Register(ModuleName, 502, "model does not exist") - ErrVendorProductsDoNotExist = errors.Register(ModuleName, 504, "vendor products do not exist") + ErrModelAlreadyExists = errors.Register(ModuleName, 501, "model already exists") + ErrModelDoesNotExist = errors.Register(ModuleName, 502, "model does not exist") + ErrVendorProductsDoNotExist = errors.Register(ModuleName, 504, "vendor products do not exist") + ErrFallbackURLRequiresBitmask = errors.Register(ModuleName, 505, "CommissioningFallbackUrl requires DiscoveryCapabilitiesBitmask") // Model Version Error Codes. ErrSoftwareVersionStringInvalid = errors.Register(ModuleName, 511, "software version string invalid") diff --git a/x/model/types/messages_model.go b/x/model/types/messages_model.go index 959a71475..e707ea972 100644 --- a/x/model/types/messages_model.go +++ b/x/model/types/messages_model.go @@ -26,6 +26,7 @@ func NewMsgCreateModel( productName string, productLabel string, partNumber string, + discoveryCapabilitiesBitmask uint32, commissioningCustomFlow int32, commissioningCustomFlowURL string, commissioningModeInitialStepsHint uint32, @@ -43,6 +44,7 @@ func NewMsgCreateModel( enhancedSetupFlowTCDigest string, enhancedSetupFlowTCFileSize uint32, maintenanceURL string, + commissioningFallbackURL string, ) *MsgCreateModel { return &MsgCreateModel{ Creator: creator, @@ -52,6 +54,7 @@ func NewMsgCreateModel( ProductName: productName, ProductLabel: productLabel, PartNumber: partNumber, + DiscoveryCapabilitiesBitmask: discoveryCapabilitiesBitmask, CommissioningCustomFlow: commissioningCustomFlow, CommissioningCustomFlowUrl: commissioningCustomFlowURL, CommissioningModeInitialStepsHint: commissioningModeInitialStepsHint, @@ -69,6 +72,7 @@ func NewMsgCreateModel( EnhancedSetupFlowTCFileSize: enhancedSetupFlowTCFileSize, MaintenanceUrl: maintenanceURL, SchemaVersion: schemaVersion, + CommissioningFallbackUrl: commissioningFallbackURL, } } @@ -141,6 +145,7 @@ func NewMsgUpdateModel( enhancedSetupFlowTCDigest string, enhancedSetupFlowTCFileSize uint32, maintenanceURL string, + commissioningFallbackURL string, ) *MsgUpdateModel { return &MsgUpdateModel{ @@ -166,6 +171,7 @@ func NewMsgUpdateModel( EnhancedSetupFlowTCFileSize: enhancedSetupFlowTCFileSize, MaintenanceUrl: maintenanceURL, SchemaVersion: schemaVersion, + CommissioningFallbackUrl: commissioningFallbackURL, } } diff --git a/x/model/types/messages_model_test.go b/x/model/types/messages_model_test.go index dc969ce29..2f4c11f03 100644 --- a/x/model/types/messages_model_test.go +++ b/x/model/types/messages_model_test.go @@ -143,6 +143,15 @@ func TestMsgCreateModel_ValidateBasic(t *testing.T) { }(validMsgCreateModel()), err: validator.ErrFieldMaxLengthExceeded, }, + { + name: "DiscoveryCapabilitiesBitmask > 14", + msg: func(msg *MsgCreateModel) *MsgCreateModel { + msg.DiscoveryCapabilitiesBitmask = 15 + + return msg + }(validMsgCreateModel()), + err: validator.ErrFieldUpperBoundViolated, + }, { name: "CommissioningCustomFlow < 0", msg: func(msg *MsgCreateModel) *MsgCreateModel { @@ -638,6 +647,22 @@ func TestMsgCreateModel_ValidateBasic(t *testing.T) { return msg }(validMsgCreateModel()), }, + { + name: "DiscoveryCapabilitiesBitmask == 0", + msg: func(msg *MsgCreateModel) *MsgCreateModel { + msg.DiscoveryCapabilitiesBitmask = 0 + + return msg + }(validMsgCreateModel()), + }, + { + name: "DiscoveryCapabilitiesBitmask == 14", + msg: func(msg *MsgCreateModel) *MsgCreateModel { + msg.DiscoveryCapabilitiesBitmask = 14 + + return msg + }(validMsgCreateModel()), + }, { name: "CommissioningCustomFlow == 0", msg: func(msg *MsgCreateModel) *MsgCreateModel { diff --git a/x/model/types/model.pb.go b/x/model/types/model.pb.go index d92244cdb..be8bbd3d1 100644 --- a/x/model/types/model.pb.go +++ b/x/model/types/model.pb.go @@ -50,6 +50,8 @@ type Model struct { EnhancedSetupFlowTCDigest string `protobuf:"bytes,23,opt,name=enhancedSetupFlowTCDigest,proto3" json:"enhancedSetupFlowTCDigest,omitempty" validate:"required_if_bit_0_set=EnhancedSetupFlowOptions,omitempty,max=128"` EnhancedSetupFlowTCFileSize uint32 `protobuf:"varint,24,opt,name=enhancedSetupFlowTCFileSize,proto3" json:"enhancedSetupFlowTCFileSize,omitempty" validate:"required_with=EnhancedSetupFlowTCUrl"` MaintenanceUrl string `protobuf:"bytes,25,opt,name=maintenanceUrl,proto3" json:"maintenanceUrl,omitempty" validate:"required_if_bit_0_set=EnhancedSetupFlowOptions,omitempty,url,startswith=https:,max=256"` + DiscoveryCapabilitiesBitmask uint32 `protobuf:"varint,26,opt,name=discoveryCapabilitiesBitmask,proto3" json:"discoveryCapabilitiesBitmask,omitempty" validate:"gte=0,lte=14"` + CommissioningFallbackUrl string `protobuf:"bytes,27,opt,name=commissioningFallbackUrl,proto3" json:"commissioningFallbackUrl,omitempty" validate:"omitempty,url,startsnotwith=http:,max=256"` } func (m *Model) Reset() { *m = Model{} } @@ -260,6 +262,20 @@ func (m *Model) GetMaintenanceUrl() string { return "" } +func (m *Model) GetDiscoveryCapabilitiesBitmask() uint32 { + if m != nil { + return m.DiscoveryCapabilitiesBitmask + } + return 0 +} + +func (m *Model) GetCommissioningFallbackUrl() string { + if m != nil { + return m.CommissioningFallbackUrl + } + return "" +} + func init() { proto.RegisterType((*Model)(nil), "zigbeealliance.distributedcomplianceledger.model.Model") } @@ -269,57 +285,62 @@ func init() { } var fileDescriptor_363bb1b07b19a129 = []byte{ - // 794 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x55, 0xdd, 0x6e, 0x1b, 0x45, - 0x14, 0xce, 0x52, 0x92, 0xd2, 0x69, 0x5d, 0xca, 0x10, 0xd2, 0x49, 0x90, 0x6c, 0x63, 0x7a, 0x61, - 0x21, 0xff, 0x84, 0x44, 0xae, 0xaa, 0x0a, 0x23, 0xe1, 0xd2, 0x08, 0x8b, 0x26, 0x41, 0xeb, 0xc0, - 0x45, 0x2e, 0x30, 0xe3, 0x9d, 0x93, 0xf5, 0x48, 0xbb, 0x3b, 0xcb, 0xcc, 0xac, 0x13, 0xe7, 0x1d, - 0x10, 0xbc, 0x00, 0x6f, 0x91, 0x87, 0xe0, 0x32, 0xe2, 0x8a, 0x2b, 0x0b, 0x25, 0x6f, 0xe0, 0x27, - 0x40, 0x33, 0xeb, 0xc4, 0x36, 0xb1, 0x9d, 0x80, 0x10, 0x37, 0x96, 0xf7, 0x3b, 0xdf, 0x39, 0xf3, - 0xed, 0x37, 0xdf, 0xea, 0xa0, 0xcf, 0x4e, 0xb9, 0xdf, 0x01, 0xa0, 0x41, 0xc0, 0x69, 0xe4, 0x41, - 0x95, 0x71, 0xa5, 0x25, 0xef, 0x24, 0x1a, 0x98, 0x27, 0xc2, 0x38, 0x45, 0x03, 0x60, 0x3e, 0xc8, - 0x6a, 0x28, 0x18, 0x04, 0xe9, 0x6f, 0x25, 0x96, 0x42, 0x0b, 0xbc, 0x39, 0xdd, 0x5d, 0x59, 0xd0, - 0x5d, 0xb1, 0x7d, 0x1b, 0xeb, 0x9e, 0x50, 0xa1, 0x50, 0x6d, 0xdb, 0x5f, 0x4d, 0x1f, 0xd2, 0x61, - 0x1b, 0xab, 0xbe, 0xf0, 0x45, 0x8a, 0x9b, 0x7f, 0x29, 0x5a, 0x38, 0xcb, 0xa0, 0xe5, 0x5d, 0xd3, - 0x8a, 0x9f, 0xa0, 0x7b, 0x3d, 0xce, 0x88, 0x93, 0x77, 0x8a, 0xcb, 0xae, 0xf9, 0x6b, 0x90, 0x98, - 0x33, 0xf2, 0x56, 0x8a, 0xc4, 0x9c, 0xe1, 0x02, 0x7a, 0xc4, 0xa0, 0xc7, 0x3d, 0x38, 0xe8, 0xc7, - 0xd0, 0x64, 0xe4, 0x9e, 0x2d, 0x4d, 0x61, 0x38, 0x8f, 0x1e, 0xc6, 0x52, 0xb0, 0xc4, 0xd3, 0x7b, - 0x34, 0x04, 0xf2, 0x76, 0xde, 0x29, 0x3e, 0x70, 0x27, 0x21, 0x33, 0x65, 0xf4, 0xf8, 0x86, 0x76, - 0x20, 0x20, 0xcb, 0x96, 0x32, 0x85, 0xe1, 0x2c, 0x42, 0x31, 0x95, 0x7a, 0x2f, 0x09, 0x3b, 0x20, - 0xc9, 0x8a, 0x65, 0x4c, 0x20, 0xf8, 0x05, 0x7a, 0xea, 0x89, 0x30, 0xe4, 0x4a, 0x71, 0x11, 0xf1, - 0xc8, 0x7f, 0x95, 0x28, 0x2d, 0xc2, 0x9d, 0x40, 0x1c, 0x93, 0xfb, 0x56, 0xd4, 0xbc, 0x32, 0xfe, - 0x1c, 0x6d, 0xcc, 0x29, 0x7d, 0x2b, 0x03, 0xf2, 0x8e, 0x3d, 0x69, 0x01, 0x03, 0xbf, 0x41, 0x1f, - 0x4d, 0x55, 0x8d, 0x7b, 0xcd, 0x88, 0x6b, 0x4e, 0x83, 0x96, 0x86, 0x58, 0x7d, 0xc5, 0x23, 0x4d, - 0x1e, 0xe4, 0x9d, 0x62, 0xc6, 0xbd, 0x9d, 0x88, 0x0f, 0x51, 0x71, 0x21, 0xa9, 0x19, 0x29, 0x2d, - 0x13, 0x4f, 0x73, 0x11, 0x11, 0x64, 0xb5, 0xdd, 0x99, 0x8f, 0xbf, 0x41, 0x1f, 0xdf, 0xe0, 0xb6, - 0xc0, 0x13, 0x11, 0xa3, 0xb2, 0x3f, 0xd6, 0xfa, 0xd0, 0x6a, 0xbd, 0x0b, 0x15, 0x7f, 0x8f, 0x3e, - 0xb9, 0x85, 0x36, 0xa9, 0xf7, 0x91, 0xd5, 0xfb, 0x0f, 0x3a, 0xf0, 0x33, 0x94, 0x49, 0x14, 0xc8, - 0x5d, 0x1a, 0x25, 0x34, 0x30, 0xd7, 0x91, 0xb1, 0x23, 0xa6, 0x41, 0x93, 0x0d, 0x95, 0xc4, 0xb1, - 0x90, 0xda, 0x50, 0x1e, 0xa7, 0xd9, 0x18, 0x23, 0x36, 0x3b, 0x69, 0x96, 0x4c, 0xfd, 0xdd, 0x51, - 0x76, 0xae, 0x11, 0xbc, 0x86, 0x56, 0x02, 0x75, 0x64, 0x6a, 0x4f, 0x6c, 0x6d, 0xf4, 0x64, 0x92, - 0x1b, 0xa8, 0x23, 0x17, 0x7a, 0xdc, 0x88, 0x25, 0xef, 0xd9, 0x1c, 0x4d, 0x42, 0x78, 0x0b, 0xdd, - 0xf7, 0x24, 0x50, 0x2d, 0x24, 0xc1, 0xa6, 0xb5, 0x41, 0x7e, 0x3f, 0x2b, 0xaf, 0x8e, 0x3e, 0xb3, - 0x2f, 0x18, 0x93, 0xa0, 0x54, 0x4b, 0x4b, 0x1e, 0xf9, 0xee, 0x15, 0xd1, 0xbc, 0x93, 0xf2, 0xba, - 0x10, 0xd2, 0xef, 0x40, 0xda, 0xb9, 0xef, 0x5b, 0xbf, 0xa7, 0x41, 0xcc, 0x10, 0x81, 0xa8, 0x6b, - 0xbe, 0x67, 0xd6, 0x02, 0x9d, 0xc4, 0x26, 0x6d, 0xfb, 0xb1, 0x31, 0x45, 0x91, 0x55, 0x23, 0xa4, - 0x51, 0x1c, 0x0e, 0x72, 0xcf, 0x7a, 0x34, 0xe0, 0x8c, 0x6a, 0x78, 0x59, 0x10, 0x21, 0xd7, 0x10, - 0xc6, 0xba, 0x5f, 0xf2, 0x35, 0xd4, 0x37, 0x4b, 0x81, 0x86, 0xfa, 0xf3, 0x5a, 0x6d, 0xbb, 0x56, - 0x70, 0xe7, 0x4e, 0xc2, 0xbf, 0x3a, 0x68, 0xed, 0x46, 0xf1, 0xe0, 0x95, 0xb1, 0xe2, 0x03, 0xfb, - 0x3e, 0x30, 0x1c, 0xe4, 0xe8, 0xf8, 0x10, 0x09, 0x3f, 0x26, 0x5c, 0x02, 0x6b, 0xf3, 0xa3, 0x76, - 0x87, 0xeb, 0xf6, 0x66, 0x5b, 0x81, 0xae, 0xbf, 0x9e, 0x33, 0xbe, 0x34, 0xd6, 0x94, 0xc8, 0xa0, - 0xa4, 0x34, 0x95, 0x5a, 0x1d, 0x73, 0xdd, 0xad, 0x77, 0xb5, 0x8e, 0xd5, 0xcb, 0x52, 0x48, 0x4f, - 0xea, 0x5b, 0xb5, 0xe7, 0x05, 0x77, 0x8e, 0x08, 0xfc, 0xb3, 0x83, 0x3e, 0x9c, 0x51, 0xba, 0xbe, - 0x92, 0x35, 0xeb, 0xc4, 0xee, 0x70, 0x90, 0x6b, 0xfe, 0x6b, 0x91, 0x37, 0xec, 0x5a, 0x74, 0x22, - 0xfe, 0xc9, 0x41, 0xeb, 0x33, 0xea, 0x5f, 0x72, 0x1f, 0x94, 0x26, 0x4f, 0xad, 0x69, 0xfb, 0xc3, - 0x41, 0xee, 0xeb, 0xff, 0xc0, 0x34, 0x63, 0xcf, 0xa7, 0x5b, 0x2f, 0x0a, 0xee, 0xfc, 0x13, 0x71, - 0x32, 0xd3, 0xa0, 0x1d, 0x1e, 0x40, 0x8b, 0x9f, 0x02, 0x21, 0x26, 0x5b, 0x8d, 0xed, 0xe1, 0x20, - 0x57, 0x9d, 0x21, 0xc8, 0xde, 0xc5, 0xeb, 0x99, 0xd6, 0xcf, 0xb6, 0xe1, 0x6a, 0xae, 0xb1, 0xe1, - 0x71, 0x48, 0x79, 0xa4, 0x21, 0x32, 0x1c, 0x13, 0x98, 0xf5, 0xff, 0x33, 0x30, 0x7f, 0x3b, 0xbc, - 0xf1, 0xc3, 0x6f, 0x17, 0x59, 0xe7, 0xfc, 0x22, 0xeb, 0xfc, 0x79, 0x91, 0x75, 0x7e, 0xb9, 0xcc, - 0x2e, 0x9d, 0x5f, 0x66, 0x97, 0xfe, 0xb8, 0xcc, 0x2e, 0x1d, 0xee, 0xf8, 0x5c, 0x77, 0x93, 0x4e, - 0xc5, 0x13, 0x61, 0x35, 0x5d, 0x9f, 0xe5, 0x59, 0xdb, 0xb7, 0x3c, 0x5e, 0xa0, 0xe5, 0xd1, 0xfe, - 0x3d, 0x19, 0x6d, 0x60, 0xdd, 0x8f, 0x41, 0x75, 0x56, 0xec, 0x7e, 0xdc, 0xfe, 0x2b, 0x00, 0x00, - 0xff, 0xff, 0xbf, 0x5a, 0x49, 0x1e, 0xc2, 0x07, 0x00, 0x00, + // 874 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x56, 0xd1, 0x6e, 0x1b, 0x45, + 0x14, 0xcd, 0x52, 0x92, 0xd2, 0x69, 0xd3, 0x96, 0x21, 0x24, 0x93, 0x04, 0xd9, 0xc1, 0xf4, 0xc1, + 0x42, 0x4e, 0x9c, 0x26, 0x4d, 0x15, 0x55, 0x18, 0x09, 0x87, 0x46, 0x44, 0x34, 0x2d, 0xb2, 0x0b, + 0x0f, 0x7d, 0xc0, 0x8c, 0x77, 0x6e, 0xec, 0x51, 0x67, 0x77, 0x96, 0x99, 0xbb, 0x6e, 0xdd, 0x5f, + 0x40, 0x08, 0x7e, 0x80, 0xbf, 0xe0, 0x23, 0x78, 0xac, 0x78, 0xe2, 0xc9, 0x42, 0xc9, 0x1f, 0xf8, + 0x0b, 0xd0, 0xcc, 0xba, 0xb1, 0x4d, 0x6c, 0xb7, 0x20, 0xc4, 0x4b, 0xb4, 0x73, 0xee, 0xb9, 0x77, + 0xce, 0x3d, 0x73, 0x27, 0x1e, 0xf2, 0xc9, 0x0b, 0xd9, 0x6a, 0x02, 0x70, 0xa5, 0x24, 0x8f, 0x43, + 0x28, 0x0b, 0x69, 0xd1, 0xc8, 0x66, 0x8a, 0x20, 0x42, 0x1d, 0x25, 0x19, 0xaa, 0x40, 0xb4, 0xc0, + 0x94, 0x23, 0x2d, 0x40, 0x65, 0x7f, 0xb7, 0x12, 0xa3, 0x51, 0xd3, 0xed, 0xf1, 0xec, 0xad, 0x19, + 0xd9, 0x5b, 0x3e, 0x6f, 0x6d, 0x35, 0xd4, 0x36, 0xd2, 0xb6, 0xe1, 0xf3, 0xcb, 0xd9, 0x22, 0x2b, + 0xb6, 0xb6, 0xd4, 0xd2, 0x2d, 0x9d, 0xe1, 0xee, 0x2b, 0x43, 0x0b, 0x3f, 0xdc, 0x20, 0xf3, 0xc7, + 0x2e, 0x95, 0xde, 0x24, 0x97, 0x3a, 0x52, 0xb0, 0x60, 0x23, 0x28, 0xce, 0xd7, 0xdc, 0xa7, 0x43, + 0x12, 0x29, 0xd8, 0x5b, 0x19, 0x92, 0x48, 0x41, 0x0b, 0xe4, 0x9a, 0x80, 0x8e, 0x0c, 0xe1, 0x71, + 0x37, 0x81, 0x23, 0xc1, 0x2e, 0xf9, 0xd0, 0x18, 0x46, 0x37, 0xc8, 0xd5, 0xc4, 0x68, 0x91, 0x86, + 0xf8, 0x90, 0x47, 0xc0, 0xde, 0xde, 0x08, 0x8a, 0x57, 0x6a, 0xa3, 0x90, 0xab, 0x32, 0x58, 0x3e, + 0xe0, 0x4d, 0x50, 0x6c, 0xde, 0x53, 0xc6, 0x30, 0x9a, 0x23, 0x24, 0xe1, 0x06, 0x1f, 0xa6, 0x51, + 0x13, 0x0c, 0x5b, 0xf0, 0x8c, 0x11, 0x84, 0xee, 0x93, 0x95, 0x50, 0x47, 0x91, 0xb4, 0x56, 0xea, + 0x58, 0xc6, 0xad, 0x83, 0xd4, 0xa2, 0x8e, 0x0e, 0x95, 0x7e, 0xc6, 0x2e, 0x7b, 0x51, 0xd3, 0xc2, + 0xf4, 0x53, 0xb2, 0x36, 0x25, 0xf4, 0xb5, 0x51, 0xec, 0x1d, 0xbf, 0xd3, 0x0c, 0x06, 0x7d, 0x40, + 0x3e, 0x1c, 0x8b, 0x3a, 0xf7, 0x8e, 0x62, 0x89, 0x92, 0xab, 0x3a, 0x42, 0x62, 0xbf, 0x90, 0x31, + 0xb2, 0x2b, 0x1b, 0x41, 0x71, 0xb1, 0xf6, 0x7a, 0x22, 0x7d, 0x42, 0x8a, 0x33, 0x49, 0x47, 0xb1, + 0x45, 0x93, 0x86, 0x28, 0x75, 0xcc, 0x88, 0xd7, 0xf6, 0xc6, 0x7c, 0xfa, 0x15, 0xf9, 0xe8, 0x02, + 0xb7, 0x0e, 0xa1, 0x8e, 0x05, 0x37, 0xdd, 0xa1, 0xd6, 0xab, 0x5e, 0xeb, 0x9b, 0x50, 0xe9, 0xb7, + 0xe4, 0xe3, 0xd7, 0xd0, 0x46, 0xf5, 0x5e, 0xf3, 0x7a, 0xff, 0x41, 0x06, 0xbd, 0x45, 0x16, 0x53, + 0x0b, 0xe6, 0x98, 0xc7, 0x29, 0x57, 0xee, 0x38, 0x16, 0x7d, 0x89, 0x71, 0xd0, 0xcd, 0x86, 0x4d, + 0x93, 0x44, 0x1b, 0x74, 0x94, 0xeb, 0xd9, 0x6c, 0x0c, 0x11, 0x3f, 0x3b, 0xd9, 0x2c, 0xb9, 0xf8, + 0x8d, 0xc1, 0xec, 0x9c, 0x23, 0x74, 0x99, 0x2c, 0x28, 0x7b, 0xe2, 0x62, 0x37, 0x7d, 0x6c, 0xb0, + 0x72, 0x93, 0xab, 0xec, 0x49, 0x0d, 0x3a, 0xd2, 0x89, 0x65, 0xef, 0xfa, 0x39, 0x1a, 0x85, 0xe8, + 0x0e, 0xb9, 0x1c, 0x1a, 0xe0, 0xa8, 0x0d, 0xa3, 0x2e, 0xb5, 0xca, 0x7e, 0xff, 0x75, 0x73, 0x69, + 0x70, 0xcd, 0x3e, 0x13, 0xc2, 0x80, 0xb5, 0x75, 0x34, 0x32, 0x6e, 0xd5, 0x5e, 0x11, 0x5d, 0x4f, + 0x36, 0x6c, 0x43, 0xc4, 0xbf, 0x01, 0xe3, 0xeb, 0xbe, 0xe7, 0xfd, 0x1e, 0x07, 0xa9, 0x20, 0x0c, + 0xe2, 0xb6, 0xbb, 0xcf, 0xa2, 0x0e, 0x98, 0x26, 0x6e, 0xda, 0x1e, 0x25, 0xce, 0x14, 0xcb, 0x96, + 0x9c, 0x90, 0x6a, 0xb1, 0xdf, 0xcb, 0xdf, 0xea, 0x70, 0x25, 0x05, 0x47, 0xb8, 0x57, 0xd0, 0x91, + 0x44, 0x88, 0x12, 0xec, 0x96, 0x5a, 0x08, 0x95, 0xed, 0x92, 0x42, 0xa8, 0xdc, 0xdd, 0xdb, 0xdb, + 0xdd, 0x2b, 0xd4, 0xa6, 0x56, 0xa2, 0xbf, 0x04, 0x64, 0xf9, 0x42, 0xf0, 0xf1, 0x81, 0xb3, 0xe2, + 0x7d, 0xdf, 0x0f, 0xf4, 0x7b, 0x79, 0x3e, 0xdc, 0xc4, 0xc0, 0xf7, 0xa9, 0x34, 0x20, 0x1a, 0xf2, + 0xa4, 0xd1, 0x94, 0xd8, 0xd8, 0x6e, 0x58, 0xc0, 0xca, 0xfd, 0x29, 0xe5, 0x4b, 0x43, 0x4d, 0xa9, + 0x51, 0x25, 0x8b, 0xdc, 0xa0, 0x7d, 0x26, 0xb1, 0x5d, 0x69, 0x23, 0x26, 0xf6, 0x5e, 0x29, 0xe2, + 0xcf, 0x2b, 0x3b, 0x7b, 0x77, 0x0b, 0xb5, 0x29, 0x22, 0xe8, 0x4f, 0x01, 0x59, 0x9f, 0x10, 0x3a, + 0x3f, 0x92, 0x65, 0xef, 0xc4, 0x71, 0xbf, 0x97, 0x3f, 0xfa, 0xd7, 0x22, 0x2f, 0xd8, 0x35, 0x6b, + 0x47, 0xfa, 0x63, 0x40, 0x56, 0x27, 0xc4, 0x3f, 0x97, 0x2d, 0xb0, 0xc8, 0x56, 0xbc, 0x69, 0x8f, + 0xfa, 0xbd, 0xfc, 0x97, 0xff, 0x81, 0x69, 0xce, 0x9e, 0xdb, 0x3b, 0xfb, 0x85, 0xda, 0xf4, 0x1d, + 0x69, 0x3a, 0xd1, 0xa0, 0x43, 0xa9, 0xa0, 0x2e, 0x5f, 0x00, 0x63, 0x6e, 0xb6, 0xaa, 0xbb, 0xfd, + 0x5e, 0xbe, 0x3c, 0x41, 0x90, 0x3f, 0x8b, 0xfb, 0x13, 0xad, 0x9f, 0x6c, 0xc3, 0xab, 0xba, 0xce, + 0x86, 0xeb, 0x11, 0x97, 0x31, 0x42, 0xec, 0x38, 0x6e, 0x60, 0x56, 0xff, 0xcf, 0x81, 0xf9, 0xdb, + 0xe6, 0xb4, 0x41, 0x3e, 0x10, 0xd2, 0x86, 0xba, 0x03, 0xa6, 0x7b, 0xc0, 0x13, 0xde, 0x94, 0x4a, + 0xa2, 0x04, 0x5b, 0x95, 0x18, 0x71, 0xfb, 0x94, 0xad, 0x79, 0x1f, 0xd6, 0xfb, 0xbd, 0xfc, 0xca, + 0x50, 0xdc, 0xf0, 0xe4, 0x6f, 0xdf, 0x29, 0xd4, 0x66, 0x16, 0xa0, 0x48, 0xd8, 0xd8, 0xff, 0xad, + 0x43, 0xae, 0x54, 0x93, 0x87, 0x4f, 0x5d, 0xe7, 0xeb, 0xbe, 0xf3, 0xfd, 0x7e, 0x2f, 0x7f, 0x67, + 0xd2, 0x7d, 0x1c, 0xb6, 0x12, 0x6b, 0x3c, 0xef, 0x66, 0xa4, 0x99, 0xa9, 0x95, 0xab, 0xdf, 0xfd, + 0x76, 0x9a, 0x0b, 0x5e, 0x9e, 0xe6, 0x82, 0x3f, 0x4f, 0x73, 0xc1, 0xcf, 0x67, 0xb9, 0xb9, 0x97, + 0x67, 0xb9, 0xb9, 0x3f, 0xce, 0x72, 0x73, 0x4f, 0x0e, 0x5b, 0x12, 0xdb, 0x69, 0x73, 0x2b, 0xd4, + 0x51, 0x39, 0x7b, 0x15, 0x6c, 0x4e, 0x7a, 0x54, 0x6c, 0x0e, 0xdf, 0x05, 0x9b, 0x83, 0x67, 0xc5, + 0xf3, 0xc1, 0xc3, 0x02, 0xbb, 0x09, 0xd8, 0xe6, 0x82, 0xff, 0xd9, 0xdf, 0xfd, 0x2b, 0x00, 0x00, + 0xff, 0xff, 0xee, 0x4b, 0x49, 0xa4, 0x99, 0x08, 0x00, 0x00, } func (m *Model) Marshal() (dAtA []byte, err error) { @@ -342,6 +363,22 @@ func (m *Model) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if len(m.CommissioningFallbackUrl) > 0 { + i -= len(m.CommissioningFallbackUrl) + copy(dAtA[i:], m.CommissioningFallbackUrl) + i = encodeVarintModel(dAtA, i, uint64(len(m.CommissioningFallbackUrl))) + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xda + } + if m.DiscoveryCapabilitiesBitmask != 0 { + i = encodeVarintModel(dAtA, i, uint64(m.DiscoveryCapabilitiesBitmask)) + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xd0 + } if len(m.MaintenanceUrl) > 0 { i -= len(m.MaintenanceUrl) copy(dAtA[i:], m.MaintenanceUrl) @@ -624,6 +661,13 @@ func (m *Model) Size() (n int) { if l > 0 { n += 2 + l + sovModel(uint64(l)) } + if m.DiscoveryCapabilitiesBitmask != 0 { + n += 2 + sovModel(uint64(m.DiscoveryCapabilitiesBitmask)) + } + l = len(m.CommissioningFallbackUrl) + if l > 0 { + n += 2 + l + sovModel(uint64(l)) + } return n } @@ -1319,6 +1363,57 @@ func (m *Model) Unmarshal(dAtA []byte) error { } m.MaintenanceUrl = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 26: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field DiscoveryCapabilitiesBitmask", wireType) + } + m.DiscoveryCapabilitiesBitmask = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowModel + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.DiscoveryCapabilitiesBitmask |= uint32(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 27: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CommissioningFallbackUrl", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowModel + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthModel + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthModel + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CommissioningFallbackUrl = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipModel(dAtA[iNdEx:]) diff --git a/x/model/types/tx.pb.go b/x/model/types/tx.pb.go index 4346f6d91..ec404475c 100644 --- a/x/model/types/tx.pb.go +++ b/x/model/types/tx.pb.go @@ -54,6 +54,8 @@ type MsgCreateModel struct { EnhancedSetupFlowTCDigest string `protobuf:"bytes,22,opt,name=enhancedSetupFlowTCDigest,proto3" json:"enhancedSetupFlowTCDigest,omitempty" validate:"required_if_bit_0_set=EnhancedSetupFlowOptions,omitempty,max=128"` EnhancedSetupFlowTCFileSize uint32 `protobuf:"varint,23,opt,name=enhancedSetupFlowTCFileSize,proto3" json:"enhancedSetupFlowTCFileSize,omitempty" validate:"required_with=EnhancedSetupFlowTCUrl"` MaintenanceUrl string `protobuf:"bytes,24,opt,name=maintenanceUrl,proto3" json:"maintenanceUrl,omitempty" validate:"required_if_bit_0_set=EnhancedSetupFlowOptions,omitempty,url,startswith=https:,max=256"` + DiscoveryCapabilitiesBitmask uint32 `protobuf:"varint,25,opt,name=discoveryCapabilitiesBitmask,proto3" json:"discoveryCapabilitiesBitmask,omitempty" validate:"gte=0,lte=14"` + CommissioningFallbackUrl string `protobuf:"bytes,26,opt,name=commissioningFallbackUrl,proto3" json:"commissioningFallbackUrl,omitempty" validate:"omitempty,url,startsnotwith=http:,max=256"` } func (m *MsgCreateModel) Reset() { *m = MsgCreateModel{} } @@ -257,6 +259,20 @@ func (m *MsgCreateModel) GetMaintenanceUrl() string { return "" } +func (m *MsgCreateModel) GetDiscoveryCapabilitiesBitmask() uint32 { + if m != nil { + return m.DiscoveryCapabilitiesBitmask + } + return 0 +} + +func (m *MsgCreateModel) GetCommissioningFallbackUrl() string { + if m != nil { + return m.CommissioningFallbackUrl + } + return "" +} + type MsgCreateModelResponse struct { } @@ -316,6 +332,7 @@ type MsgUpdateModel struct { EnhancedSetupFlowTCDigest string `protobuf:"bytes,20,opt,name=enhancedSetupFlowTCDigest,proto3" json:"enhancedSetupFlowTCDigest,omitempty" validate:"required_if_bit_0_set=EnhancedSetupFlowOptions,omitempty,max=128"` EnhancedSetupFlowTCFileSize uint32 `protobuf:"varint,21,opt,name=enhancedSetupFlowTCFileSize,proto3" json:"enhancedSetupFlowTCFileSize,omitempty" validate:"required_with=EnhancedSetupFlowTCUrl"` MaintenanceUrl string `protobuf:"bytes,22,opt,name=maintenanceUrl,proto3" json:"maintenanceUrl,omitempty" validate:"required_if_bit_0_set=EnhancedSetupFlowOptions,omitempty,url,startswith=https:,max=256"` + CommissioningFallbackUrl string `protobuf:"bytes,23,opt,name=commissioningFallbackUrl,proto3" json:"commissioningFallbackUrl,omitempty" validate:"omitempty,url,startsnotwith=http:,max=256"` } func (m *MsgUpdateModel) Reset() { *m = MsgUpdateModel{} } @@ -505,6 +522,13 @@ func (m *MsgUpdateModel) GetMaintenanceUrl() string { return "" } +func (m *MsgUpdateModel) GetCommissioningFallbackUrl() string { + if m != nil { + return m.CommissioningFallbackUrl + } + return "" +} + type MsgUpdateModelResponse struct { } @@ -1129,105 +1153,110 @@ func init() { } var fileDescriptor_bc57f11ad3062327 = []byte{ - // 1568 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x5a, 0x4b, 0x6f, 0xdb, 0xc6, - 0x16, 0x0e, 0x6f, 0xfc, 0x1c, 0x3f, 0xe4, 0x8c, 0x1f, 0x61, 0x94, 0x5c, 0xd1, 0x97, 0xb9, 0x28, - 0x8c, 0xc0, 0xb6, 0x1c, 0x39, 0x76, 0x93, 0x20, 0x02, 0x12, 0x39, 0x0f, 0x1b, 0x8d, 0xed, 0x82, - 0x76, 0x82, 0xa2, 0x48, 0xe1, 0x50, 0xe4, 0x48, 0x1e, 0x94, 0xaf, 0x70, 0x86, 0x7e, 0x64, 0x9d, - 0x6d, 0xd1, 0x6e, 0x0b, 0xb4, 0x7f, 0xa0, 0x8b, 0x76, 0x53, 0xa0, 0xcb, 0x6e, 0xbb, 0x0c, 0xba, - 0xea, 0x8a, 0x28, 0x92, 0x6d, 0x17, 0x05, 0x7f, 0x41, 0xc1, 0x11, 0x25, 0x91, 0x12, 0x29, 0xcb, - 0x92, 0x9d, 0xc6, 0xd9, 0x18, 0x26, 0x67, 0xce, 0x37, 0x67, 0xce, 0x9c, 0xf3, 0x9d, 0x4f, 0x24, - 0xc1, 0xad, 0x97, 0xb8, 0x5c, 0x44, 0x48, 0xd6, 0x34, 0x2c, 0x1b, 0x0a, 0xca, 0xaa, 0x98, 0x50, - 0x1b, 0x17, 0x1d, 0x8a, 0x54, 0xc5, 0xd4, 0xad, 0xca, 0x5d, 0x0d, 0xa9, 0x65, 0x64, 0x67, 0x75, - 0x53, 0x45, 0x5a, 0x96, 0x1e, 0xcc, 0x5b, 0xb6, 0x49, 0x4d, 0xb8, 0x10, 0x35, 0x9d, 0x6f, 0x61, - 0x3a, 0xcf, 0x4c, 0xd3, 0x77, 0x8e, 0xbd, 0x18, 0xfb, 0x5b, 0x59, 0x2f, 0x7d, 0xbf, 0x33, 0xeb, - 0x9d, 0x3d, 0x64, 0x13, 0x6c, 0x1a, 0x01, 0xca, 0x44, 0xd9, 0x2c, 0x9b, 0xec, 0xdf, 0xac, 0xff, - 0x5f, 0x70, 0xf7, 0x92, 0x62, 0x12, 0xdd, 0x24, 0x3b, 0x95, 0x81, 0xca, 0x45, 0x65, 0x48, 0x7c, - 0x05, 0xc1, 0xe8, 0x3a, 0x29, 0xaf, 0xd8, 0x48, 0xa6, 0x68, 0xdd, 0x47, 0x84, 0x6b, 0xa0, 0x5f, - 0xf1, 0x2f, 0x4d, 0x9b, 0xe7, 0xa6, 0xb9, 0x99, 0xc1, 0x42, 0xd6, 0x73, 0x85, 0xf1, 0x3d, 0x59, - 0xc3, 0xaa, 0x4c, 0xd1, 0x6d, 0xd1, 0x46, 0x2f, 0x1c, 0x6c, 0x23, 0x55, 0xfc, 0xfd, 0xe7, 0xb9, - 0x89, 0x00, 0xec, 0x9e, 0xaa, 0xda, 0x88, 0x90, 0x2d, 0x6a, 0x63, 0xa3, 0x2c, 0x55, 0xed, 0xe1, - 0x02, 0x38, 0xbf, 0x87, 0x55, 0xfe, 0x3f, 0xd3, 0xdc, 0x4c, 0x6f, 0x21, 0xe3, 0xb9, 0x42, 0xba, - 0x0e, 0x53, 0xa6, 0x28, 0x7f, 0x7d, 0x56, 0xa3, 0x28, 0xbf, 0xbc, 0xb4, 0xb4, 0xb8, 0x24, 0x4a, - 0xfe, 0x54, 0xdf, 0xc2, 0xc2, 0x2a, 0x7f, 0xbe, 0x3d, 0x0b, 0x0b, 0xab, 0xb0, 0x00, 0x86, 0x55, - 0xb4, 0x87, 0x15, 0xb4, 0x7d, 0x68, 0xa1, 0x35, 0x95, 0xef, 0x49, 0x32, 0x5d, 0x08, 0x9b, 0x46, - 0x6c, 0xe0, 0x3d, 0x30, 0x64, 0xd9, 0xa6, 0xea, 0x28, 0x74, 0x43, 0xd6, 0x11, 0xdf, 0xcb, 0xb6, - 0x2d, 0x78, 0xae, 0x70, 0xb9, 0x79, 0xdb, 0xb3, 0xba, 0x7c, 0x90, 0xbf, 0x9e, 0xbb, 0x29, 0x4a, - 0x61, 0x1b, 0x78, 0x1b, 0x0c, 0x07, 0x97, 0x8f, 0xe5, 0x22, 0xd2, 0xf8, 0x3e, 0x86, 0x31, 0xe5, - 0xb9, 0x02, 0xac, 0x63, 0xf8, 0xa6, 0xb9, 0xa5, 0x65, 0x51, 0x8a, 0xcc, 0x85, 0x4b, 0x00, 0x58, - 0xb2, 0x4d, 0x37, 0x1c, 0xbd, 0x88, 0x6c, 0xbe, 0x9f, 0x59, 0x4e, 0x7a, 0xae, 0x70, 0x21, 0x6a, - 0xb9, 0x98, 0x13, 0xa5, 0xd0, 0x44, 0xb8, 0x0d, 0x2e, 0x2a, 0xa6, 0xae, 0x63, 0xe2, 0x27, 0x00, - 0x36, 0xca, 0x2b, 0x0e, 0xa1, 0xa6, 0xfe, 0x50, 0x33, 0xf7, 0xf9, 0x01, 0x16, 0x84, 0xb4, 0xe7, - 0x0a, 0x53, 0x71, 0x41, 0xc8, 0x89, 0x52, 0x92, 0x29, 0xfc, 0x8e, 0x03, 0xe9, 0x84, 0xb1, 0x27, - 0xb6, 0xc6, 0x0f, 0x32, 0xef, 0x9e, 0x79, 0xae, 0xf0, 0x59, 0x73, 0x6c, 0x76, 0x70, 0x29, 0xbf, - 0x12, 0x6f, 0x3b, 0x9d, 0x9b, 0x35, 0x75, 0x4c, 0x91, 0x6e, 0xd1, 0xc3, 0x59, 0xc7, 0xd6, 0x66, - 0x09, 0x95, 0x6d, 0x4a, 0xf6, 0x31, 0xdd, 0xcd, 0xef, 0x52, 0x6a, 0x91, 0xdb, 0xb3, 0xb5, 0xe8, - 0xb4, 0x58, 0x1f, 0x3e, 0x06, 0xff, 0x8b, 0x8c, 0xfa, 0x39, 0xbb, 0x66, 0x60, 0x8a, 0x65, 0x6d, - 0x8b, 0x22, 0x8b, 0xac, 0x62, 0x83, 0xf2, 0x60, 0x9a, 0x9b, 0x19, 0x91, 0x8e, 0x9e, 0x08, 0x09, - 0x98, 0x69, 0x39, 0x69, 0xcd, 0x20, 0xd4, 0x76, 0x14, 0x8a, 0x4d, 0x83, 0x1f, 0x62, 0x3b, 0xbf, - 0x18, 0x2d, 0x06, 0x96, 0x0c, 0x0b, 0xb9, 0x1b, 0xa2, 0xd4, 0x36, 0x10, 0xfc, 0x14, 0x5c, 0x6d, - 0x9a, 0xbb, 0x85, 0x14, 0xd3, 0x50, 0x65, 0xfb, 0xb0, 0xbe, 0x89, 0x61, 0xb6, 0x89, 0x76, 0xa6, - 0xc2, 0x7d, 0x70, 0xed, 0x88, 0x69, 0xe1, 0x8d, 0x8c, 0xb4, 0xde, 0xc8, 0x31, 0xa0, 0xe0, 0x33, - 0x30, 0xe2, 0x10, 0x64, 0xaf, 0xcb, 0x86, 0x23, 0x6b, 0x7e, 0x7a, 0x8c, 0x32, 0xec, 0x65, 0xcf, - 0x15, 0x72, 0x75, 0xec, 0xb6, 0x0f, 0x3e, 0x0a, 0x06, 0x9f, 0x02, 0x40, 0x1c, 0xcb, 0x32, 0x6d, - 0xea, 0x43, 0xa7, 0xba, 0x82, 0x0e, 0x21, 0xf9, 0xb8, 0x41, 0xfd, 0xf9, 0xb8, 0x63, 0xdd, 0xe1, - 0xd6, 0x91, 0xe0, 0x06, 0xe8, 0xd3, 0x48, 0xc9, 0xc7, 0xbc, 0xd0, 0x15, 0x66, 0x80, 0x02, 0x6f, - 0x81, 0x11, 0xa2, 0xec, 0x22, 0x5d, 0x7e, 0x5a, 0x21, 0x79, 0x1e, 0xfa, 0x29, 0x51, 0x18, 0xf7, - 0x5c, 0x21, 0x55, 0x87, 0x45, 0x2f, 0xf2, 0x0b, 0xa2, 0x14, 0x9d, 0x09, 0x55, 0xc0, 0x23, 0x63, - 0xd7, 0xef, 0x19, 0xea, 0x16, 0xa2, 0x8e, 0xe5, 0x97, 0xcf, 0xa6, 0xe5, 0x9f, 0x19, 0xe1, 0xc7, - 0x19, 0x39, 0xcc, 0x78, 0xae, 0xf0, 0xff, 0x38, 0xe7, 0x9a, 0xb8, 0x32, 0x11, 0x09, 0x7e, 0xcf, - 0x81, 0xa9, 0xa6, 0xc1, 0xed, 0x15, 0x3f, 0x02, 0x13, 0x2c, 0x02, 0xc8, 0x73, 0x05, 0x39, 0x96, - 0x27, 0x76, 0x8a, 0x98, 0xee, 0x2c, 0xec, 0x10, 0x44, 0xf3, 0x0f, 0x12, 0xe0, 0xdb, 0x27, 0x8c, - 0x04, 0x27, 0xe0, 0xd7, 0x1c, 0xb8, 0x1c, 0x33, 0x24, 0xa1, 0x3d, 0xcc, 0xe2, 0x39, 0xc9, 0x22, - 0xb1, 0xee, 0xb9, 0xc2, 0x5a, 0xc7, 0x4e, 0x36, 0x85, 0xab, 0xd5, 0x8a, 0xf0, 0x2b, 0x0e, 0x5c, - 0x8a, 0x19, 0xbf, 0x8f, 0xcb, 0x88, 0x50, 0x7e, 0x8a, 0x05, 0x6d, 0xd3, 0x73, 0x85, 0x4f, 0x4e, - 0x20, 0x68, 0xb5, 0x46, 0x95, 0xbc, 0x22, 0x74, 0x62, 0x03, 0xf4, 0x10, 0x6b, 0x68, 0x0b, 0xbf, - 0x44, 0xfc, 0x45, 0x96, 0x70, 0x8b, 0x9e, 0x2b, 0x64, 0x63, 0x1c, 0x62, 0x67, 0xf1, 0x20, 0x36, - 0xf4, 0xf1, 0x61, 0xa8, 0xe2, 0xfa, 0x61, 0x18, 0xd5, 0x65, 0x6c, 0x50, 0x64, 0xf8, 0x73, 0xfc, - 0x84, 0xe1, 0xdf, 0x65, 0xc2, 0x34, 0x2c, 0x2e, 0xf2, 0x60, 0x2a, 0xaa, 0x82, 0x24, 0x44, 0x2c, - 0xd3, 0x20, 0x48, 0xfc, 0x61, 0x8c, 0x09, 0xa4, 0x27, 0x96, 0x7a, 0x56, 0x05, 0xd2, 0xcd, 0xa8, - 0xb8, 0xe9, 0x49, 0x12, 0x26, 0x47, 0x6b, 0x9a, 0xde, 0x8e, 0x35, 0x4d, 0x5f, 0xbb, 0x9a, 0x66, - 0xaf, 0xa5, 0xf8, 0xe8, 0xef, 0x8a, 0x56, 0x5b, 0xc9, 0x8a, 0xe3, 0x08, 0x81, 0x81, 0x93, 0x12, - 0x02, 0xc7, 0x6b, 0xdb, 0x83, 0xa7, 0xd8, 0xb6, 0xc1, 0xe9, 0xb5, 0xed, 0xa1, 0x53, 0x6a, 0xdb, - 0xc3, 0xa7, 0xd0, 0xb6, 0x47, 0x4e, 0xa4, 0x6d, 0xdf, 0x05, 0x43, 0x1a, 0x29, 0xd5, 0x9a, 0xcc, - 0x68, 0x5b, 0x3f, 0x48, 0xc2, 0x26, 0xcd, 0x8d, 0x3f, 0xd5, 0x76, 0xe3, 0x6f, 0x4b, 0x1f, 0x8f, - 0xb5, 0xab, 0x8f, 0x5b, 0xc9, 0x88, 0x0b, 0xef, 0x42, 0x46, 0xc0, 0xb3, 0x20, 0x23, 0xc6, 0xdf, - 0x33, 0x19, 0x31, 0xf1, 0xbe, 0xc9, 0x88, 0xc9, 0x77, 0x27, 0x23, 0xa6, 0xfe, 0x7d, 0x19, 0x11, - 0xd2, 0x0a, 0x35, 0x19, 0xf1, 0x2b, 0xc7, 0x64, 0xc4, 0x7d, 0xa4, 0xa1, 0xb3, 0x29, 0x23, 0x82, - 0xbd, 0x85, 0x36, 0x50, 0xdb, 0xdb, 0x4f, 0x83, 0x60, 0x32, 0xaa, 0x9e, 0xaa, 0x64, 0x74, 0xc6, - 0x94, 0xd2, 0x0c, 0x48, 0x11, 0xb3, 0x44, 0xf7, 0x65, 0x1b, 0x55, 0x89, 0xb7, 0x87, 0x31, 0x65, - 0xe3, 0x6d, 0xb8, 0x0d, 0x26, 0x1b, 0x6e, 0x55, 0xfc, 0x0d, 0x24, 0x52, 0xc3, 0x6a, 0x91, 0x47, - 0x47, 0xcb, 0x37, 0x44, 0x29, 0xde, 0x18, 0xae, 0x82, 0x94, 0xa2, 0x06, 0xb7, 0x42, 0xc2, 0xe9, - 0xe8, 0xe6, 0xd1, 0x68, 0x06, 0x57, 0xc1, 0x78, 0x09, 0xdb, 0xba, 0xbf, 0xc4, 0x9a, 0x51, 0x32, - 0x6d, 0x5d, 0x66, 0x12, 0xa2, 0x3f, 0x49, 0xc0, 0x2d, 0x5d, 0xcf, 0x89, 0x52, 0x9c, 0x09, 0xcc, - 0x81, 0x89, 0x06, 0x67, 0x9f, 0xfa, 0x96, 0x4c, 0x04, 0x0d, 0x48, 0xb1, 0x63, 0x7e, 0x43, 0x35, - 0xa9, 0x5c, 0x7f, 0x5a, 0xd4, 0x71, 0x43, 0xad, 0xa0, 0xc0, 0x07, 0x60, 0xc8, 0xa4, 0x72, 0x8d, - 0x4d, 0x7c, 0xb1, 0xd2, 0x53, 0xb8, 0xea, 0xb9, 0x82, 0x90, 0xc4, 0x26, 0x9b, 0xcc, 0x50, 0x94, - 0xc2, 0x76, 0xf0, 0x31, 0x83, 0x59, 0xd9, 0x45, 0xca, 0x97, 0xc4, 0xd1, 0x03, 0x61, 0x72, 0xcd, - 0x73, 0x85, 0x8f, 0x5a, 0xc3, 0xd4, 0x8e, 0x2d, 0x6c, 0x0e, 0xbf, 0x00, 0xa9, 0xd0, 0xe5, 0xf6, - 0xa1, 0x85, 0x98, 0x24, 0xe9, 0x6d, 0x4d, 0x73, 0x01, 0x62, 0xf3, 0x09, 0x36, 0x60, 0xc1, 0x02, - 0xb8, 0xa2, 0x63, 0xe3, 0x9e, 0x65, 0x69, 0x58, 0x91, 0x8b, 0x1a, 0xda, 0x6a, 0x48, 0xcc, 0x11, - 0x96, 0x98, 0x2d, 0xe7, 0xc0, 0x97, 0xe0, 0x8a, 0x2e, 0x1f, 0x24, 0x63, 0x8c, 0x32, 0x5a, 0x6e, - 0x38, 0x9d, 0x32, 0x45, 0x0a, 0x29, 0x61, 0xa4, 0xa9, 0xf9, 0xf5, 0x16, 0xe0, 0xa2, 0xd4, 0x12, - 0x1b, 0x3e, 0x07, 0x29, 0x1b, 0x69, 0x48, 0x26, 0x68, 0xc3, 0xa4, 0x88, 0x74, 0xff, 0x00, 0xa7, - 0x11, 0xae, 0x59, 0x24, 0x8d, 0xb5, 0x2b, 0x92, 0x44, 0x01, 0xfc, 0x37, 0x96, 0xb0, 0x6a, 0x94, - 0xf6, 0x4b, 0x1f, 0xa3, 0xb4, 0x10, 0x93, 0x7f, 0xf0, 0x94, 0x96, 0x54, 0xe8, 0xbd, 0x6d, 0x15, - 0x7a, 0xdf, 0x89, 0x14, 0xfa, 0x51, 0x49, 0xdf, 0xdf, 0x46, 0xd2, 0xbf, 0xe2, 0x8e, 0xc8, 0xfa, - 0x01, 0x96, 0x26, 0x77, 0x3d, 0x57, 0xb8, 0x93, 0xa0, 0x5b, 0x4f, 0x29, 0xff, 0x07, 0x4f, 0x36, - 0xff, 0xa7, 0x63, 0x58, 0x31, 0x4a, 0x78, 0x1f, 0xc7, 0x11, 0x5e, 0xcc, 0x8f, 0xf0, 0x26, 0x6e, - 0x6b, 0x2a, 0xad, 0xe1, 0x63, 0x96, 0x56, 0x73, 0xe1, 0xd4, 0x4a, 0xeb, 0x6f, 0x8e, 0x95, 0x56, - 0x48, 0x48, 0x7c, 0xe8, 0xa5, 0x15, 0xc4, 0xa4, 0x79, 0xc7, 0xd5, 0x98, 0xe4, 0xfe, 0xea, 0x07, - 0xe7, 0xd7, 0x49, 0x19, 0x7e, 0xcb, 0x81, 0xa1, 0xf0, 0xab, 0xb8, 0xbb, 0xf3, 0xc7, 0x7d, 0x0b, - 0x39, 0x1f, 0xe5, 0xb5, 0xf4, 0x6a, 0xb7, 0x08, 0x55, 0x1f, 0x99, 0x6f, 0xe1, 0xa7, 0x60, 0x9d, - 0xf9, 0x16, 0x42, 0xe8, 0xd0, 0xb7, 0x18, 0x75, 0xcd, 0x7c, 0x0b, 0x4b, 0xeb, 0xce, 0x7c, 0x0b, - 0x21, 0x74, 0xe8, 0x5b, 0x8c, 0x3a, 0x86, 0x3f, 0x72, 0x00, 0xc6, 0x48, 0xe3, 0x47, 0xdd, 0x1e, - 0x4c, 0x00, 0x94, 0xde, 0x3c, 0x21, 0xa0, 0x88, 0xc3, 0x31, 0x8d, 0xef, 0x51, 0xb7, 0xa7, 0xd5, - 0x9d, 0xc3, 0xc9, 0x8c, 0xc2, 0x1c, 0x8e, 0xa1, 0x93, 0x47, 0xdd, 0x1e, 0x61, 0x77, 0x0e, 0x27, - 0x97, 0x7b, 0xe1, 0xf9, 0x6f, 0x6f, 0x32, 0xdc, 0xeb, 0x37, 0x19, 0xee, 0xcf, 0x37, 0x19, 0xee, - 0x9b, 0xb7, 0x99, 0x73, 0xaf, 0xdf, 0x66, 0xce, 0xfd, 0xf1, 0x36, 0x73, 0xee, 0xf3, 0x87, 0x65, - 0x4c, 0x77, 0x9d, 0xe2, 0xbc, 0x62, 0xea, 0xd9, 0xca, 0xa2, 0x73, 0x71, 0x5f, 0x04, 0xcc, 0xd5, - 0x97, 0x9d, 0x0b, 0xbe, 0x09, 0x38, 0xa8, 0x7e, 0xc0, 0x70, 0x68, 0x21, 0x52, 0xec, 0x63, 0x6f, - 0xf7, 0x17, 0xff, 0x09, 0x00, 0x00, 0xff, 0xff, 0xb7, 0xf5, 0x34, 0xde, 0x01, 0x21, 0x00, 0x00, + // 1648 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x9a, 0x4b, 0x6f, 0xdb, 0xc6, + 0x16, 0xc7, 0xc3, 0x1b, 0x3f, 0xc7, 0xaf, 0x78, 0xfc, 0x62, 0x94, 0x5c, 0xd3, 0x97, 0xb9, 0xb8, + 0x30, 0x02, 0x3f, 0xe5, 0xc7, 0x4d, 0x82, 0x08, 0x48, 0xe4, 0xc4, 0xb1, 0xd1, 0xd8, 0x2e, 0x68, + 0x27, 0x28, 0x8a, 0x14, 0xce, 0x88, 0x1c, 0xcb, 0x83, 0xf0, 0x15, 0xce, 0xc8, 0x8f, 0xac, 0xbb, + 0x2d, 0xda, 0x6d, 0x81, 0x16, 0xe8, 0x27, 0x68, 0x37, 0x05, 0xba, 0xec, 0xb6, 0xcb, 0xa0, 0xab, + 0x02, 0x05, 0x88, 0x22, 0xd9, 0x76, 0x51, 0xf0, 0x13, 0x14, 0x1c, 0xbd, 0x48, 0x89, 0xa4, 0x65, + 0xc9, 0x4e, 0xe3, 0x6c, 0x0c, 0x8b, 0x33, 0xe7, 0x3f, 0xe7, 0x9c, 0x39, 0x73, 0xe6, 0x67, 0x99, + 0xe0, 0xf6, 0x2b, 0x92, 0xcf, 0x61, 0x8c, 0x74, 0x9d, 0x20, 0x53, 0xc5, 0xb3, 0x1a, 0xa1, 0xcc, + 0x21, 0xb9, 0x02, 0xc3, 0x9a, 0x6a, 0x19, 0x76, 0xf1, 0xa9, 0x8e, 0xb5, 0x3c, 0x76, 0x66, 0x0d, + 0x4b, 0xc3, 0xfa, 0x2c, 0x3b, 0x9a, 0xb1, 0x1d, 0x8b, 0x59, 0x70, 0x2e, 0x6c, 0x3a, 0x93, 0x60, + 0x3a, 0xc3, 0x4d, 0x53, 0x77, 0x4f, 0xbd, 0x18, 0xff, 0x59, 0x5c, 0x2f, 0xf5, 0xa0, 0x39, 0xeb, + 0xdd, 0x03, 0xec, 0x50, 0x62, 0x99, 0x25, 0x95, 0xe1, 0xbc, 0x95, 0xb7, 0xf8, 0xaf, 0xb3, 0xfe, + 0x6f, 0xa5, 0xa7, 0x57, 0x55, 0x8b, 0x1a, 0x16, 0xdd, 0x2d, 0x0e, 0x14, 0x3f, 0x14, 0x87, 0xe4, + 0xdf, 0x87, 0x40, 0xff, 0x06, 0xcd, 0xaf, 0x38, 0x18, 0x31, 0xbc, 0xe1, 0x2b, 0xc2, 0x75, 0xd0, + 0xa9, 0xfa, 0x1f, 0x2d, 0x47, 0x14, 0x26, 0x84, 0xc9, 0xee, 0xec, 0xac, 0xe7, 0x4a, 0x43, 0x07, + 0x48, 0x27, 0x1a, 0x62, 0xf8, 0x8e, 0xec, 0xe0, 0x97, 0x05, 0xe2, 0x60, 0x4d, 0xfe, 0xf5, 0xc7, + 0xe9, 0xe1, 0x92, 0xd8, 0x7d, 0x4d, 0x73, 0x30, 0xa5, 0xdb, 0xcc, 0x21, 0x66, 0x5e, 0x29, 0xdb, + 0xc3, 0x39, 0x70, 0xf9, 0x80, 0x68, 0xe2, 0xbf, 0x26, 0x84, 0xc9, 0xf6, 0xec, 0xb8, 0xe7, 0x4a, + 0xa9, 0xaa, 0x4c, 0x9e, 0xe1, 0xcc, 0xfc, 0x94, 0xce, 0x70, 0x66, 0x79, 0x69, 0x69, 0x61, 0x49, + 0x56, 0xfc, 0xa9, 0xbe, 0x85, 0x4d, 0x34, 0xf1, 0x72, 0x63, 0x16, 0x36, 0xd1, 0x60, 0x16, 0xf4, + 0x6a, 0xf8, 0x80, 0xa8, 0x78, 0xe7, 0xd8, 0xc6, 0xeb, 0x9a, 0xd8, 0x16, 0x67, 0x3a, 0x17, 0x34, + 0x0d, 0xd9, 0xc0, 0xfb, 0xa0, 0xc7, 0x76, 0x2c, 0xad, 0xa0, 0xb2, 0x4d, 0x64, 0x60, 0xb1, 0x9d, + 0x87, 0x2d, 0x79, 0xae, 0x74, 0xad, 0x3e, 0xec, 0x29, 0x03, 0x1d, 0x65, 0xe6, 0xd3, 0xb7, 0x64, + 0x25, 0x68, 0x03, 0xef, 0x80, 0xde, 0xd2, 0xc7, 0xc7, 0x28, 0x87, 0x75, 0xb1, 0x83, 0x6b, 0x8c, + 0x7a, 0xae, 0x04, 0xab, 0x1a, 0xbe, 0x69, 0x7a, 0x69, 0x59, 0x56, 0x42, 0x73, 0xe1, 0x12, 0x00, + 0x36, 0x72, 0xd8, 0x66, 0xc1, 0xc8, 0x61, 0x47, 0xec, 0xe4, 0x96, 0x23, 0x9e, 0x2b, 0x0d, 0x86, + 0x2d, 0x17, 0xd2, 0xb2, 0x12, 0x98, 0x08, 0x77, 0xc0, 0x98, 0x6a, 0x19, 0x06, 0xa1, 0x7e, 0x01, + 0x10, 0x33, 0xbf, 0x52, 0xa0, 0xcc, 0x32, 0x56, 0x75, 0xeb, 0x50, 0xec, 0xe2, 0x49, 0x48, 0x79, + 0xae, 0x34, 0x1a, 0x95, 0x84, 0xb4, 0xac, 0xc4, 0x99, 0xc2, 0x6f, 0x04, 0x90, 0x8a, 0x19, 0x7b, + 0xe2, 0xe8, 0x62, 0x37, 0xf7, 0xee, 0x99, 0xe7, 0x4a, 0x9f, 0xd4, 0xe7, 0x66, 0x97, 0xec, 0x65, + 0x56, 0xa2, 0x6d, 0x27, 0xd2, 0x53, 0x96, 0x41, 0x18, 0x36, 0x6c, 0x76, 0x3c, 0x55, 0x70, 0xf4, + 0x29, 0xca, 0x90, 0xc3, 0xe8, 0x21, 0x61, 0xfb, 0x99, 0x7d, 0xc6, 0x6c, 0x7a, 0x67, 0xaa, 0x92, + 0x9d, 0x84, 0xf5, 0xe1, 0x63, 0xf0, 0x9f, 0xd0, 0xa8, 0x5f, 0xb3, 0xeb, 0x26, 0x61, 0x04, 0xe9, + 0xdb, 0x0c, 0xdb, 0x74, 0x8d, 0x98, 0x4c, 0x04, 0x13, 0xc2, 0x64, 0x9f, 0x72, 0xf2, 0x44, 0x48, + 0xc1, 0x64, 0xe2, 0xa4, 0x75, 0x93, 0x32, 0xa7, 0xa0, 0x32, 0x62, 0x99, 0x62, 0x0f, 0x8f, 0x7c, + 0x2c, 0x7c, 0x18, 0x78, 0x31, 0xcc, 0xa5, 0x17, 0x65, 0xa5, 0x61, 0x21, 0xf8, 0x31, 0xb8, 0x51, + 0x37, 0x77, 0x1b, 0xab, 0x96, 0xa9, 0x21, 0xe7, 0xb8, 0x1a, 0x44, 0x2f, 0x0f, 0xa2, 0x91, 0xa9, + 0xf0, 0x10, 0xdc, 0x3c, 0x61, 0x5a, 0x30, 0x90, 0xbe, 0xe4, 0x40, 0x4e, 0x21, 0x05, 0x9f, 0x81, + 0xbe, 0x02, 0xc5, 0xce, 0x06, 0x32, 0x0b, 0x48, 0xf7, 0xcb, 0xa3, 0x9f, 0x6b, 0x2f, 0x7b, 0xae, + 0x94, 0xae, 0x6a, 0x37, 0xbc, 0xf1, 0x61, 0x31, 0xf8, 0x14, 0x00, 0x5a, 0xb0, 0x6d, 0xcb, 0x61, + 0xbe, 0xf4, 0x40, 0x4b, 0xd2, 0x01, 0x25, 0x5f, 0xb7, 0x74, 0xfe, 0x7c, 0xdd, 0x2b, 0xad, 0xe9, + 0x56, 0x95, 0xe0, 0x26, 0xe8, 0xd0, 0xe9, 0x9e, 0xaf, 0x39, 0xd8, 0x92, 0x66, 0x49, 0x05, 0xde, + 0x06, 0x7d, 0x54, 0xdd, 0xc7, 0x06, 0x7a, 0x5a, 0x6c, 0xf2, 0x22, 0xf4, 0x4b, 0x22, 0x3b, 0xe4, + 0xb9, 0xd2, 0x40, 0x55, 0x16, 0xbf, 0xcc, 0xcc, 0xc9, 0x4a, 0x78, 0x26, 0xd4, 0x80, 0x88, 0xcd, + 0x7d, 0xff, 0xce, 0xd0, 0xb6, 0x31, 0x2b, 0xd8, 0xfe, 0xf1, 0xd9, 0xb2, 0xfd, 0x3d, 0xa3, 0xe2, + 0x10, 0x6f, 0x0e, 0x93, 0x9e, 0x2b, 0xfd, 0x37, 0xca, 0xb9, 0xba, 0x5e, 0x19, 0xab, 0x04, 0xbf, + 0x15, 0xc0, 0x68, 0xdd, 0xe0, 0xce, 0x8a, 0x9f, 0x81, 0x61, 0x9e, 0x01, 0xec, 0xb9, 0x12, 0x8a, + 0xec, 0x13, 0xbb, 0x39, 0xc2, 0x76, 0xe7, 0x76, 0x29, 0x66, 0x99, 0x87, 0x31, 0xf2, 0x8d, 0x37, + 0x8c, 0x18, 0x27, 0xe0, 0x97, 0x02, 0xb8, 0x16, 0x31, 0xa4, 0xe0, 0x03, 0xc2, 0xf3, 0x39, 0xc2, + 0x33, 0xb1, 0xe1, 0xb9, 0xd2, 0x7a, 0xd3, 0x4e, 0xd6, 0xa5, 0x2b, 0x69, 0x45, 0xf8, 0x85, 0x00, + 0xae, 0x46, 0x8c, 0x3f, 0x20, 0x79, 0x4c, 0x99, 0x38, 0xca, 0x93, 0xb6, 0xe5, 0xb9, 0xd2, 0x47, + 0x67, 0x90, 0xb4, 0xca, 0x45, 0x15, 0xbf, 0x22, 0x2c, 0x44, 0x26, 0x68, 0x95, 0xe8, 0x78, 0x9b, + 0xbc, 0xc2, 0xe2, 0x18, 0x2f, 0xb8, 0x05, 0xcf, 0x95, 0x66, 0x23, 0x1c, 0xe2, 0x7b, 0xf1, 0x30, + 0x32, 0xf5, 0xd1, 0x69, 0x28, 0xeb, 0xfa, 0x69, 0xe8, 0x37, 0x10, 0x31, 0x19, 0x36, 0xfd, 0x39, + 0x7e, 0xc1, 0x88, 0xef, 0xb2, 0x60, 0x6a, 0x16, 0x87, 0xbb, 0xe0, 0xba, 0x46, 0xa8, 0x6a, 0x1d, + 0x60, 0xe7, 0x78, 0x05, 0xd9, 0x28, 0x47, 0x74, 0xc2, 0x08, 0xa6, 0x59, 0xc2, 0x0c, 0x44, 0x5f, + 0x88, 0x57, 0x79, 0x1e, 0xae, 0x79, 0xae, 0x34, 0x16, 0x75, 0x9f, 0xce, 0x2f, 0xca, 0x4a, 0xa2, + 0x00, 0x64, 0x40, 0x0c, 0xb5, 0xd5, 0x55, 0xa4, 0xeb, 0x39, 0xa4, 0xbe, 0xf0, 0x23, 0x4f, 0xf1, + 0xc8, 0x6f, 0x79, 0xae, 0xb4, 0x98, 0xdc, 0x2c, 0x4c, 0x8b, 0x55, 0xa2, 0x09, 0x04, 0x13, 0xab, + 0x2c, 0x8b, 0x60, 0x34, 0x0c, 0x77, 0x0a, 0xa6, 0xb6, 0x65, 0x52, 0x2c, 0x7f, 0x37, 0xc8, 0xb9, + 0xef, 0x89, 0xad, 0x5d, 0x54, 0xee, 0xbb, 0x15, 0x66, 0xb6, 0xb6, 0x38, 0xde, 0x3a, 0x19, 0xd5, + 0xda, 0x9b, 0x46, 0xb5, 0x8e, 0x46, 0x51, 0xed, 0x20, 0x91, 0xa9, 0x3a, 0x5b, 0xba, 0x2d, 0x92, + 0x68, 0xe9, 0x34, 0x7c, 0xd3, 0x75, 0x56, 0x7c, 0x73, 0x3a, 0x1a, 0xe9, 0x3e, 0x47, 0x1a, 0x01, + 0xe7, 0x47, 0x23, 0x3d, 0xe7, 0x44, 0x23, 0xbd, 0xe7, 0x40, 0x23, 0x7d, 0x67, 0x42, 0x23, 0xf7, + 0x40, 0x8f, 0x4e, 0xf7, 0x2a, 0x77, 0x67, 0x7f, 0x43, 0x7f, 0x67, 0x05, 0x4d, 0xea, 0x79, 0x66, + 0xa0, 0x61, 0x9e, 0x69, 0x08, 0xfb, 0xaf, 0x34, 0x8a, 0xfd, 0x49, 0x74, 0x34, 0xf8, 0x2e, 0xe8, + 0x08, 0x5e, 0x04, 0x3a, 0x1a, 0x7a, 0xcf, 0xe8, 0x68, 0xf8, 0x7d, 0xa3, 0xa3, 0x91, 0x77, 0x47, + 0x47, 0xa3, 0xff, 0x24, 0x1d, 0x25, 0xc1, 0xcb, 0xd8, 0x39, 0xc3, 0x4b, 0x80, 0x50, 0x2a, 0xf0, + 0xf2, 0xb3, 0xc0, 0xe1, 0xe5, 0x01, 0xd6, 0xf1, 0xc5, 0x84, 0x97, 0x52, 0x6c, 0x81, 0x00, 0x2a, + 0xb1, 0xfd, 0xd0, 0x0d, 0x46, 0xc2, 0xcc, 0x56, 0x6e, 0x81, 0x17, 0x8c, 0xcf, 0x26, 0xc1, 0x00, + 0xb5, 0xf6, 0xd8, 0x21, 0x72, 0x70, 0xb9, 0xdd, 0xb7, 0xf1, 0xfe, 0x5c, 0xfb, 0x18, 0xee, 0x80, + 0x91, 0x9a, 0x47, 0x45, 0x7f, 0x4b, 0x60, 0x56, 0xb3, 0x5a, 0xe8, 0x7b, 0xb8, 0xe5, 0x45, 0x59, + 0x89, 0x36, 0x86, 0x6b, 0x60, 0x40, 0xd5, 0x4a, 0x8f, 0x02, 0xb8, 0x76, 0xf2, 0x95, 0x55, 0x6b, + 0x06, 0xd7, 0xc0, 0xd0, 0x1e, 0x71, 0x0c, 0x7f, 0x89, 0x75, 0x73, 0xcf, 0x72, 0x0c, 0xc4, 0xc1, + 0xa5, 0x33, 0x0e, 0x1b, 0x97, 0xe6, 0xd3, 0xb2, 0x12, 0x65, 0x02, 0xd3, 0x60, 0xb8, 0xc6, 0xd9, + 0xa7, 0xbe, 0x25, 0x47, 0xaf, 0x2e, 0x25, 0x72, 0xcc, 0xbf, 0xc6, 0x2d, 0x86, 0xaa, 0x5f, 0xbd, + 0x35, 0x7d, 0x8d, 0x17, 0x55, 0xe0, 0x43, 0xd0, 0x63, 0x31, 0x54, 0xe9, 0x61, 0x3e, 0x22, 0xb5, + 0x65, 0x6f, 0x78, 0xae, 0x24, 0xc5, 0xf5, 0xb0, 0x2d, 0x6e, 0x28, 0x2b, 0x41, 0x3b, 0xf8, 0x98, + 0xcb, 0xac, 0xec, 0x63, 0xf5, 0x05, 0x2d, 0x18, 0x25, 0x1c, 0xba, 0xe9, 0xb9, 0xd2, 0xff, 0x92, + 0x65, 0x2a, 0xdb, 0x16, 0x34, 0x87, 0x9f, 0x81, 0x81, 0xc0, 0xc7, 0x9d, 0x63, 0x1b, 0x73, 0x10, + 0x6a, 0x4f, 0x6e, 0xae, 0x25, 0xc5, 0xfa, 0x1d, 0xac, 0xd1, 0x82, 0x59, 0x70, 0xdd, 0x20, 0xe6, + 0x7d, 0xdb, 0xd6, 0x89, 0x8a, 0x72, 0x3a, 0xde, 0xae, 0x29, 0xcc, 0x3e, 0x5e, 0x98, 0x89, 0x73, + 0xe0, 0x2b, 0x70, 0xdd, 0x40, 0x47, 0xf1, 0x1a, 0xfd, 0xfc, 0x32, 0xa8, 0xd9, 0x9d, 0x3c, 0xc3, + 0x2a, 0xdd, 0x23, 0x58, 0xd7, 0x32, 0x1b, 0x09, 0xe2, 0xb2, 0x92, 0xa8, 0x0d, 0x9f, 0x83, 0x01, + 0x07, 0xeb, 0x18, 0x51, 0xbc, 0x69, 0x31, 0x4c, 0x5b, 0xff, 0x36, 0xac, 0x56, 0xae, 0x1e, 0xcd, + 0xae, 0x34, 0x8a, 0x66, 0xb2, 0x04, 0xfe, 0x1d, 0xd9, 0xb0, 0x2a, 0x2d, 0xed, 0xa7, 0x0e, 0xde, + 0xd2, 0x02, 0x9d, 0xfc, 0x83, 0x6f, 0x69, 0x71, 0x07, 0xbd, 0xbd, 0xa1, 0x83, 0xde, 0x71, 0x26, + 0x07, 0xfd, 0xa4, 0xa2, 0xef, 0x6c, 0xa0, 0xe8, 0x3f, 0x17, 0x4e, 0xa8, 0xfa, 0x2e, 0x5e, 0x26, + 0xf7, 0x3c, 0x57, 0xba, 0x1b, 0x43, 0xcb, 0xe7, 0x54, 0xff, 0xdd, 0x67, 0x5b, 0xff, 0x13, 0x11, + 0x5d, 0x31, 0xdc, 0xf0, 0xfe, 0x1f, 0xd5, 0xf0, 0x22, 0xfe, 0xf4, 0xaf, 0xeb, 0x6d, 0x75, 0x47, + 0xab, 0xf7, 0x94, 0x47, 0xab, 0xfe, 0xe0, 0x54, 0x8e, 0xd6, 0x5f, 0x02, 0x3f, 0x5a, 0x01, 0x90, + 0xf8, 0xd0, 0x8f, 0x56, 0x29, 0x27, 0xf5, 0x11, 0x97, 0x73, 0x92, 0xfe, 0xb3, 0x13, 0x5c, 0xde, + 0xa0, 0x79, 0xf8, 0xb5, 0x00, 0x7a, 0x82, 0xff, 0xd7, 0xbc, 0x37, 0x73, 0xda, 0x7f, 0xe9, 0xce, + 0x84, 0xfb, 0x5a, 0x6a, 0xad, 0x55, 0x85, 0xb2, 0x8f, 0xdc, 0xb7, 0xe0, 0x77, 0x6f, 0xcd, 0xf9, + 0x16, 0x50, 0x68, 0xd2, 0xb7, 0x08, 0xba, 0xe6, 0xbe, 0x05, 0xd1, 0xba, 0x39, 0xdf, 0x02, 0x0a, + 0x4d, 0xfa, 0x16, 0x41, 0xc7, 0xf0, 0x7b, 0x01, 0xc0, 0x08, 0x34, 0x7e, 0xd4, 0xea, 0xc6, 0x94, + 0x84, 0x52, 0x5b, 0x67, 0x24, 0x14, 0x72, 0x38, 0xe2, 0xe2, 0x7b, 0xd4, 0xea, 0x6e, 0xb5, 0xe6, + 0x70, 0x7c, 0x47, 0xe1, 0x0e, 0x47, 0xb4, 0x93, 0x47, 0xad, 0x6e, 0x61, 0x6b, 0x0e, 0xc7, 0x1f, + 0xf7, 0xec, 0xf3, 0x5f, 0xde, 0x8c, 0x0b, 0xaf, 0xdf, 0x8c, 0x0b, 0x7f, 0xbc, 0x19, 0x17, 0xbe, + 0x7a, 0x3b, 0x7e, 0xe9, 0xf5, 0xdb, 0xf1, 0x4b, 0xbf, 0xbd, 0x1d, 0xbf, 0xf4, 0xe9, 0x6a, 0x9e, + 0xb0, 0xfd, 0x42, 0x6e, 0x46, 0xb5, 0x8c, 0xd9, 0xe2, 0xa2, 0xd3, 0x51, 0xaf, 0x57, 0x4c, 0x57, + 0x97, 0x9d, 0x2e, 0xbd, 0x60, 0x71, 0x54, 0x7e, 0x1b, 0xe4, 0xd8, 0xc6, 0x34, 0xd7, 0xc1, 0x5f, + 0x95, 0x58, 0xf8, 0x3b, 0x00, 0x00, 0xff, 0xff, 0x08, 0x90, 0xa4, 0x2e, 0x4e, 0x22, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -1510,6 +1539,22 @@ func (m *MsgCreateModel) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if len(m.CommissioningFallbackUrl) > 0 { + i -= len(m.CommissioningFallbackUrl) + copy(dAtA[i:], m.CommissioningFallbackUrl) + i = encodeVarintTx(dAtA, i, uint64(len(m.CommissioningFallbackUrl))) + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xd2 + } + if m.DiscoveryCapabilitiesBitmask != 0 { + i = encodeVarintTx(dAtA, i, uint64(m.DiscoveryCapabilitiesBitmask)) + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xc8 + } if len(m.MaintenanceUrl) > 0 { i -= len(m.MaintenanceUrl) copy(dAtA[i:], m.MaintenanceUrl) @@ -1722,6 +1767,15 @@ func (m *MsgUpdateModel) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if len(m.CommissioningFallbackUrl) > 0 { + i -= len(m.CommissioningFallbackUrl) + copy(dAtA[i:], m.CommissioningFallbackUrl) + i = encodeVarintTx(dAtA, i, uint64(len(m.CommissioningFallbackUrl))) + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xba + } if len(m.MaintenanceUrl) > 0 { i -= len(m.MaintenanceUrl) copy(dAtA[i:], m.MaintenanceUrl) @@ -2398,6 +2452,13 @@ func (m *MsgCreateModel) Size() (n int) { if l > 0 { n += 2 + l + sovTx(uint64(l)) } + if m.DiscoveryCapabilitiesBitmask != 0 { + n += 2 + sovTx(uint64(m.DiscoveryCapabilitiesBitmask)) + } + l = len(m.CommissioningFallbackUrl) + if l > 0 { + n += 2 + l + sovTx(uint64(l)) + } return n } @@ -2496,6 +2557,10 @@ func (m *MsgUpdateModel) Size() (n int) { if l > 0 { n += 2 + l + sovTx(uint64(l)) } + l = len(m.CommissioningFallbackUrl) + if l > 0 { + n += 2 + l + sovTx(uint64(l)) + } return n } @@ -3370,6 +3435,57 @@ func (m *MsgCreateModel) Unmarshal(dAtA []byte) error { } m.MaintenanceUrl = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 25: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field DiscoveryCapabilitiesBitmask", wireType) + } + m.DiscoveryCapabilitiesBitmask = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.DiscoveryCapabilitiesBitmask |= uint32(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 26: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CommissioningFallbackUrl", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CommissioningFallbackUrl = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipTx(dAtA[iNdEx:]) @@ -4070,6 +4186,38 @@ func (m *MsgUpdateModel) Unmarshal(dAtA []byte) error { } m.MaintenanceUrl = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 23: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CommissioningFallbackUrl", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CommissioningFallbackUrl = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipTx(dAtA[iNdEx:])