diff --git a/.buckconfig.d/external_cells/facebook/buck2-shims-meta/external_cell.buckconfig b/.buckconfig.d/external_cells/facebook/buck2-shims-meta/external_cell.buckconfig index c231baf41a8f2..fc570fa061083 100644 --- a/.buckconfig.d/external_cells/facebook/buck2-shims-meta/external_cell.buckconfig +++ b/.buckconfig.d/external_cells/facebook/buck2-shims-meta/external_cell.buckconfig @@ -6,4 +6,4 @@ gh_facebook_buck2_shims_meta = git [external_cell_gh_facebook_buck2_shims_meta] git_origin = https://github.com/facebook/buck2-shims-meta.git -commit_hash = b79235f6447a07f78644ab08261e3acfe4e12604 +commit_hash = 9a7f4d630a0ea37a65175f8e330839d82823a42a diff --git a/CMakeLists.txt b/CMakeLists.txt index 994dd587ee288..bf12e6e7cdb0d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -173,6 +173,7 @@ find_package(fizz CONFIG REQUIRED) find_package(fmt CONFIG REQUIRED) find_package(wangle CONFIG REQUIRED) find_package(FBThrift CONFIG REQUIRED) +find_package(range-v3 REQUIRED) include_directories(${FB303_INCLUDE_DIR}) find_path(FATAL_INCLUDE_DIR NAMES fatal/portability.h) include_directories(${FATAL_INCLUDE_DIR}) diff --git a/buck2 b/buck2 index 01b919544c0e4..5c84145371963 100755 --- a/buck2 +++ b/buck2 @@ -4,62 +4,62 @@ "name": "buck2", "platforms": { "macos-aarch64": { - "size": 24865177, + "size": 24793637, "hash": "blake3", - "digest": "d7cb59045703f709e9fc07de4fc2452f336f0a4aea23b0fbf2630cb74e1ddfc2", + "digest": "bb0035bb305bf3b6bb381b2c98063ab0912f77fcb3603a891cac4c59d17b2795", "format": "zst", "path": "buck2-aarch64-apple-darwin", "providers": [ { - "url": "https://github.com/facebook/buck2/releases/download/2024-11-01/buck2-aarch64-apple-darwin.zst" + "url": "https://github.com/facebook/buck2/releases/download/2024-11-15/buck2-aarch64-apple-darwin.zst" } ] }, "linux-aarch64": { - "size": 27170753, + "size": 27097669, "hash": "blake3", - "digest": "b7524108a18829538ca0f205691bc0b2497fe4c69ac7364f18fb32273bdcb906", + "digest": "70c796a8e7470a497d6251963c1d9da1679266f4ba1fdbf44a252aeac1687d8c", "format": "zst", "path": "buck2-aarch64-unknown-linux-musl", "providers": [ { - "url": "https://github.com/facebook/buck2/releases/download/2024-11-01/buck2-aarch64-unknown-linux-musl.zst" + "url": "https://github.com/facebook/buck2/releases/download/2024-11-15/buck2-aarch64-unknown-linux-musl.zst" } ] }, "macos-x86_64": { - "size": 26626381, + "size": 26566564, "hash": "blake3", - "digest": "46ae3e7a99a4eb220b76f30b56a303ed4d573c91f309bbf82981682c79339201", + "digest": "f2d32397d72a0f3d96dd3265a525a9264ecc5aacc01c9f53ef1be7864f792c6c", "format": "zst", "path": "buck2-x86_64-apple-darwin", "providers": [ { - "url": "https://github.com/facebook/buck2/releases/download/2024-11-01/buck2-x86_64-apple-darwin.zst" + "url": "https://github.com/facebook/buck2/releases/download/2024-11-15/buck2-x86_64-apple-darwin.zst" } ] }, "windows-x86_64": { - "size": 21957913, + "size": 21945285, "hash": "blake3", - "digest": "48f23505b97b405d46919978fee8c2cfd97f75fe2140b197af0ad1ad962d47eb", + "digest": "e0ebb882535cc24439025b39a023ae2148fc9f4733ab3552dbce396f964dd549", "format": "zst", "path": "buck2-x86_64-pc-windows-msvc.exe", "providers": [ { - "url": "https://github.com/facebook/buck2/releases/download/2024-11-01/buck2-x86_64-pc-windows-msvc.exe.zst" + "url": "https://github.com/facebook/buck2/releases/download/2024-11-15/buck2-x86_64-pc-windows-msvc.exe.zst" } ] }, "linux-x86_64": { - "size": 28136456, + "size": 28049273, "hash": "blake3", - "digest": "9530f398d1a74394ab1770716bd942d4c1687fb00f13518bdbf8904e366d4d97", + "digest": "4ce1ccad2e051ac169d165905de2e3de68558a74e90756c71ab04fa78e38d23b", "format": "zst", "path": "buck2-x86_64-unknown-linux-musl", "providers": [ { - "url": "https://github.com/facebook/buck2/releases/download/2024-11-01/buck2-x86_64-unknown-linux-musl.zst" + "url": "https://github.com/facebook/buck2/releases/download/2024-11-15/buck2-x86_64-unknown-linux-musl.zst" } ] } diff --git a/build/deps/github_hashes/facebook/fb303-rev.txt b/build/deps/github_hashes/facebook/fb303-rev.txt index e3ab9e52b2b77..9a2df6dff2355 100644 --- a/build/deps/github_hashes/facebook/fb303-rev.txt +++ b/build/deps/github_hashes/facebook/fb303-rev.txt @@ -1 +1 @@ -Subproject commit d15028627fdd473945f04124f118e17142471f81 +Subproject commit 2e5951c4caf66cf919b88127cc4af4b103e5baa1 diff --git a/build/deps/github_hashes/facebook/fbthrift-rev.txt b/build/deps/github_hashes/facebook/fbthrift-rev.txt index 334bb35fc08bd..1addb57848d39 100644 --- a/build/deps/github_hashes/facebook/fbthrift-rev.txt +++ b/build/deps/github_hashes/facebook/fbthrift-rev.txt @@ -1 +1 @@ -Subproject commit 300f4d5e79e763ef74243da9a1f3b9f649d5addd +Subproject commit 7f33f571ac8c8e43fcbaad99bf18a68774b03edc diff --git a/build/deps/github_hashes/facebook/folly-rev.txt b/build/deps/github_hashes/facebook/folly-rev.txt index f468f6e6834f7..8fc5d4800fa6d 100644 --- a/build/deps/github_hashes/facebook/folly-rev.txt +++ b/build/deps/github_hashes/facebook/folly-rev.txt @@ -1 +1 @@ -Subproject commit 30a4e783a7618f17a5b24048625872e363068887 +Subproject commit 49d920691a609f40e31a0ca8b2d5d23a4def5f38 diff --git a/build/deps/github_hashes/facebook/wangle-rev.txt b/build/deps/github_hashes/facebook/wangle-rev.txt index d94e75e4f27b3..b49525f50a081 100644 --- a/build/deps/github_hashes/facebook/wangle-rev.txt +++ b/build/deps/github_hashes/facebook/wangle-rev.txt @@ -1 +1 @@ -Subproject commit d54405ad3588791be7146a19fe4e914af0807c28 +Subproject commit b496c25312abe5fdde040bc445075b84f43f8d93 diff --git a/build/deps/github_hashes/facebookincubator/fizz-rev.txt b/build/deps/github_hashes/facebookincubator/fizz-rev.txt index d9bd0e292eadb..b6a69233c11a0 100644 --- a/build/deps/github_hashes/facebookincubator/fizz-rev.txt +++ b/build/deps/github_hashes/facebookincubator/fizz-rev.txt @@ -1 +1 @@ -Subproject commit 4664d02b938a34d05918f2817f53afd2ed6b4ca9 +Subproject commit 519ca76f3fc6d108afb317e84342e29b2492c7d6 diff --git a/build/fbcode_builder/manifests/fboss b/build/fbcode_builder/manifests/fboss index 25bae49d7dec9..ec199f83110c1 100644 --- a/build/fbcode_builder/manifests/fboss +++ b/build/fbcode_builder/manifests/fboss @@ -40,6 +40,7 @@ exprtk nlohmann-json libgpiod systemd +range-v3 [shipit.pathmap] fbcode/fboss/github = . diff --git a/build/fbcode_builder/manifests/range-v3 b/build/fbcode_builder/manifests/range-v3 index f96403c83f8c7..e3778a368a558 100644 --- a/build/fbcode_builder/manifests/range-v3 +++ b/build/fbcode_builder/manifests/range-v3 @@ -9,3 +9,6 @@ sha256 = 376376615dbba43d3bef75aa590931431ecb49eb36d07bb726a19f680c75e20c [build] builder = cmake subdir = range-v3-0.11.0 + +[cmake.defines] +RANGE_V3_EXAMPLES=OFF diff --git a/cmake/Agent.cmake b/cmake/Agent.cmake index 2c843db1acdac..26f839c653deb 100644 --- a/cmake/Agent.cmake +++ b/cmake/Agent.cmake @@ -97,6 +97,16 @@ target_link_libraries(switchinfo_utils agent_config_cpp2 ) +add_library(voq_utils + fboss/agent/VoqUtils.cpp +) + +target_link_libraries(voq_utils + Folly::folly + switch_config_cpp2 + agent_features +) + target_link_libraries(address_utils network_address_cpp2 Folly::folly @@ -255,6 +265,7 @@ set(core_libs switchinfo_utils stats utils + voq_utils asic_utils fb303::fb303 capture diff --git a/cmake/AgentHw.cmake b/cmake/AgentHw.cmake index f48167e06c177..57d4b5cdfc699 100644 --- a/cmake/AgentHw.cmake +++ b/cmake/AgentHw.cmake @@ -34,7 +34,6 @@ add_library(hw_port_fb303_stats fboss/agent/hw/HwBasePortFb303Stats.cpp fboss/agent/hw/HwPortFb303Stats.cpp fboss/agent/hw/HwSysPortFb303Stats.cpp - fboss/agent/hw/oss/HwBasePortFb303Stats.cpp ) add_library(hw_cpu_fb303_stats diff --git a/cmake/AgentHwBenchmarks.cmake b/cmake/AgentHwBenchmarks.cmake index 42ba5560999bf..de1b33432d07f 100644 --- a/cmake/AgentHwBenchmarks.cmake +++ b/cmake/AgentHwBenchmarks.cmake @@ -265,6 +265,23 @@ add_library(hw_rx_slow_path_rate fboss/agent/hw/benchmarks/HwRxSlowPathBenchmark.cpp ) +add_library(hw_rx_slow_path_arp_rate + fboss/agent/hw/benchmarks/HwRxSlowPathArpBenchmark.cpp +) + +target_link_libraries(hw_rx_slow_path_arp_rate + config_factory + pkt_factory + copp_test_utils + hw_asic_utils + hw_copp_utils + hw_test_acl_utils + mono_agent_ensemble + mono_agent_benchmarks + Folly::folly + Folly::follybenchmark +) + target_link_libraries(hw_rx_slow_path_rate config_factory copp_test_utils diff --git a/cmake/AgentHwSaiApi.cmake b/cmake/AgentHwSaiApi.cmake index 7d6fb897b770f..82b1364bdf3c4 100644 --- a/cmake/AgentHwSaiApi.cmake +++ b/cmake/AgentHwSaiApi.cmake @@ -93,6 +93,7 @@ if (SAI_TAJO_IMPL) fboss/agent/hw/sai/api/tajo/BufferApi.cpp fboss/agent/hw/sai/api/tajo/QueueApi.cpp fboss/agent/hw/sai/api/tajo/MirrorApi.cpp + fboss/agent/hw/sai/api/tajo/SystemPortApi.cpp ) find_path(SAI_IMPL_DIR NAMES lib/libsai_impl.a) @@ -107,6 +108,7 @@ elseif (SAI_BRCM_IMPL) fboss/agent/hw/sai/api/bcm/BufferApi.cpp fboss/agent/hw/sai/api/bcm/QueueApi.cpp fboss/agent/hw/sai/api/bcm/MirrorApi.cpp + fboss/agent/hw/sai/api/bcm/SystemPortApi.cpp ) find_path(SAI_IMPL_DIR NAMES lib/libsai_impl.a) @@ -121,6 +123,7 @@ elseif (CHENAB_SAI_SDK) fboss/agent/hw/sai/api/oss/BufferApi.cpp fboss/agent/hw/sai/api/oss/QueueApi.cpp fboss/agent/hw/sai/api/oss/MirrorApi.cpp + fboss/agent/hw/sai/api/oss/SystemPortApi.cpp ) find_path(SAI_IMPL_DIR NAMES lib/libsai_impl.a) diff --git a/cmake/AgentHwSaiHwTest.cmake b/cmake/AgentHwSaiHwTest.cmake index 6069031efabf2..6e3f00fdab7da 100644 --- a/cmake/AgentHwSaiHwTest.cmake +++ b/cmake/AgentHwSaiHwTest.cmake @@ -174,6 +174,7 @@ target_link_libraries(agent_hw_test_thrift_handler agent_hw_test_ctrl_cpp2 sai_ecmp_utils diag_shell + wedge_led_utils ) diff --git a/cmake/AgentHwTest.cmake b/cmake/AgentHwTest.cmake index 687bd2d5101ca..48d407eb0374c 100644 --- a/cmake/AgentHwTest.cmake +++ b/cmake/AgentHwTest.cmake @@ -194,7 +194,6 @@ add_fbthrift_cpp_library( ) set(hw_switch_test_srcs - fboss/agent/hw/test/HwEcmpTests.cpp fboss/agent/hw/test/HwTestFabricUtils.cpp fboss/agent/hw/test/HwFlexPortTests.cpp fboss/agent/hw/test/HwIngressBufferTests.cpp @@ -212,7 +211,6 @@ set(hw_switch_test_srcs fboss/agent/hw/test/HwVlanTests.cpp fboss/agent/hw/test/HwVerifyPfcConfigInHwTest.cpp fboss/agent/hw/test/HwAclStatTests.cpp - fboss/agent/hw/test/HwPortLedTests.cpp fboss/agent/hw/test/HwPortProfileTests.cpp fboss/agent/hw/test/HwPortStressTests.cpp fboss/agent/hw/test/HwResourceStatsTests.cpp diff --git a/cmake/AgentTestAgentHwTests.cmake b/cmake/AgentTestAgentHwTests.cmake index 6ba78b67b1341..4dc9eb1b547c4 100644 --- a/cmake/AgentTestAgentHwTests.cmake +++ b/cmake/AgentTestAgentHwTests.cmake @@ -10,6 +10,7 @@ add_library(agent_hw_test_src fboss/agent/test/agent_hw_tests/AgentDscpQueueMappingTests.cpp fboss/agent/test/agent_hw_tests/AgentDeepPacketInspectionTests.cpp fboss/agent/test/agent_hw_tests/AgentDiagShellStressTests.cpp + fboss/agent/test/agent_hw_tests/AgentEcmpTests.cpp fboss/agent/test/agent_hw_tests/AgentEmptyTests.cpp fboss/agent/test/agent_hw_tests/AgentEgressForwardingDiscardCounterTests.cpp fboss/agent/test/agent_hw_tests/AgentRouteOverDifferentAddressFamilyNhopTests.cpp @@ -34,6 +35,7 @@ add_library(agent_hw_test_src fboss/agent/test/agent_hw_tests/AgentVoqSwitchInterruptsTests.cpp fboss/agent/test/agent_hw_tests/AgentFabricSwitchTests.cpp fboss/agent/test/agent_hw_tests/AgentPortBandWidthTests.cpp + fboss/agent/test/agent_hw_tests/AgentPortLedTests.cpp fboss/agent/test/agent_hw_tests/AgentPortTests.cpp fboss/agent/test/agent_hw_tests/AgentPrbsTests.cpp fboss/agent/test/agent_hw_tests/AgentAclCounterTests.cpp diff --git a/cmake/AgentTestLinkTests.cmake b/cmake/AgentTestLinkTests.cmake index 91ae7a3b2d638..114bf875a5c4f 100644 --- a/cmake/AgentTestLinkTests.cmake +++ b/cmake/AgentTestLinkTests.cmake @@ -10,6 +10,7 @@ add_library(link_tests fboss/agent/test/link_tests/LinkSanityTests.cpp fboss/agent/test/link_tests/PtpTests.cpp fboss/agent/test/link_tests/OpticsTest.cpp + fboss/agent/test/link_tests/LacpSanityTests.cpp ) target_link_libraries(link_tests @@ -29,6 +30,7 @@ target_link_libraries(link_tests packet_snooper pkt_test_utils link_test_production_features_cpp2 + trunk_utils ${GTEST} ${LIBGMOCK_LIBRARIES} ) diff --git a/cmake/PlatformPlatformManager.cmake b/cmake/PlatformPlatformManager.cmake index 71debb70b6add..e28e668d77a8a 100644 --- a/cmake/PlatformPlatformManager.cmake +++ b/cmake/PlatformPlatformManager.cmake @@ -140,6 +140,7 @@ target_link_libraries(platform_manager_config_validator platform_manager_i2c_explorer platform_manager_config_cpp2 Folly::folly + range-v3 ) add_executable(platform_manager @@ -173,6 +174,7 @@ target_link_libraries(platform_manager ${LIBGPIOD} ${SYSTEMD} gpiod_line + range-v3 ) install(TARGETS platform_manager) diff --git a/cmake/PlatformSensorService.cmake b/cmake/PlatformSensorService.cmake index ce9579948f842..243e5d68938a1 100644 --- a/cmake/PlatformSensorService.cmake +++ b/cmake/PlatformSensorService.cmake @@ -37,6 +37,7 @@ target_link_libraries(sensor_service_utils platform_name_lib platform_manager_service_cpp2 platform_manager_config_cpp2 + platform_manager_config_validator ${RE2} ) @@ -54,6 +55,7 @@ add_library(sensor_service_lib target_link_libraries(sensor_service_lib log_thrift_call platform_config_lib + platform_manager_config_validator platform_name_lib platform_utils sensor_service_utils diff --git a/cmake/PlatformWeutil.cmake b/cmake/PlatformWeutil.cmake index 21d730822cc95..0dd78baf68b7e 100644 --- a/cmake/PlatformWeutil.cmake +++ b/cmake/PlatformWeutil.cmake @@ -43,7 +43,6 @@ target_link_libraries(ioctl_smbus_eeprom_reader ) target_link_libraries(weutil_lib - product_info platform_utils Folly::folly weutil_config_cpp2 diff --git a/common/stats/DynamicStats.h b/common/stats/DynamicStats.h new file mode 100644 index 0000000000000..41c22ddc8a119 --- /dev/null +++ b/common/stats/DynamicStats.h @@ -0,0 +1,5 @@ +// (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary. + +#pragma once + +#include diff --git a/fboss/agent/AgentFeatures.cpp b/fboss/agent/AgentFeatures.cpp index 2007bcdbb1802..a834d03e12099 100644 --- a/fboss/agent/AgentFeatures.cpp +++ b/fboss/agent/AgentFeatures.cpp @@ -169,3 +169,24 @@ DEFINE_bool( fix_lossless_mode_per_pg, false, "Flag to disruptively update lossless mode per pg"); + +DEFINE_int32(fboss_event_base_queue_limit, 10000, "FbossEventBase queue limit"); + +DEFINE_bool( + dual_stage_rdsw_3q_2q, + false, + "Use platform mapping for dual stage RDSW with 3q and 2q model"); + +DEFINE_bool( + dual_stage_edsw_3q_2q, + false, + "Use platform mapping for dual stage EDSW with 3q and 2q model"); + +bool isDualStage3Q2QMode() { + return FLAGS_dual_stage_rdsw_3q_2q || FLAGS_dual_stage_edsw_3q_2q; +} + +DEFINE_bool( + enable_hw_update_protection, + false, + "Enable Neighbor/MAC table hw update failure protection"); diff --git a/fboss/agent/AgentFeatures.h b/fboss/agent/AgentFeatures.h index 53dac046d07f1..fb4b83c2e73af 100644 --- a/fboss/agent/AgentFeatures.h +++ b/fboss/agent/AgentFeatures.h @@ -67,3 +67,9 @@ DECLARE_bool(skip_buffer_reservation); // TODO(zecheng): Remove this once firmware support is ready DECLARE_bool(conditional_entropy_cpu_seed_test_only); DECLARE_bool(fix_lossless_mode_per_pg); +DECLARE_int32(fboss_event_base_queue_limit); +DECLARE_bool(dual_stage_rdsw_3q_2q); +DECLARE_bool(dual_stage_edsw_3q_2q); + +bool isDualStage3Q2QMode(); +DECLARE_bool(enable_hw_update_protection); diff --git a/fboss/agent/AgentPreStartExec.h b/fboss/agent/AgentPreStartExec.h index b58e1ad02e386..878778b246c0e 100644 --- a/fboss/agent/AgentPreStartExec.h +++ b/fboss/agent/AgentPreStartExec.h @@ -7,7 +7,7 @@ namespace facebook::fboss { class AgentDirectoryUtil; -class AgentConfig; +struct AgentConfig; class AgentCommandExecutor; class AgentNetWhoAmI; diff --git a/fboss/agent/ApplyThriftConfig.cpp b/fboss/agent/ApplyThriftConfig.cpp index 9f4c387eae0ac..eabce92066921 100644 --- a/fboss/agent/ApplyThriftConfig.cpp +++ b/fboss/agent/ApplyThriftConfig.cpp @@ -33,6 +33,7 @@ #include "fboss/agent/SwitchIdScopeResolver.h" #include "fboss/agent/SwitchInfoUtils.h" #include "fboss/agent/Utils.h" +#include "fboss/agent/VoqUtils.h" #include "fboss/agent/gen-cpp2/switch_config_types.h" #include "fboss/agent/if/gen-cpp2/mpls_types.h" #include "fboss/agent/platforms/common/PlatformMapping.h" @@ -402,9 +403,11 @@ class ThriftConfigApplier { const std::set& portDescs); std::shared_ptr updateAclTableGroup( cfg::AclStage aclStage, + const cfg::AclTableGroup& cfgAclTableGroup, const std::shared_ptr& origAclTableGroup); std::shared_ptr updateAclTableGroups(); - flat_map getAllAclsByName(); + flat_map getAllAclsByName( + const cfg::AclTableGroup& cfgAclTableGroup); void checkTrafficPolicyAclsExistInConfig( const cfg::TrafficPolicyConfig& policy, flat_map aclByName); @@ -1004,7 +1007,11 @@ void ThriftConfigApplier::processUpdatedDsfNodes() { asicCore = 1; break; case cfg::AsicType::ASIC_TYPE_JERICHO3: - asicCore = 441; + if (isDualStage3Q2QMode()) { + asicCore = 447; + } else { + asicCore = 441; + } break; case cfg::AsicType::ASIC_TYPE_CHENAB: case cfg::AsicType::ASIC_TYPE_TRIDENT2: @@ -1043,22 +1050,26 @@ void ThriftConfigApplier::processUpdatedDsfNodes() { auto isInterfaceNode = [](const std::shared_ptr& node) { return node->getType() == cfg::DsfNodeType::INTERFACE_NODE; }; - auto getDsfNodeAsic = - [&isInterfaceNode](const std::shared_ptr& node) { - CHECK(isInterfaceNode(node)) - << " Only expect to be called for Interface nodes"; - auto mac = node->getMac() ? *node->getMac() : folly::MacAddress(); - CHECK(!node->getSystemPortRanges().systemPortRanges()->empty()); - return HwAsic::makeAsic( - node->getAsicType(), - cfg::SwitchType::VOQ, - static_cast(node->getSwitchId()), - 0, /* dummy switchIndex*/ - // TODO - get rid of system port range in HwAsic - *node->getSystemPortRanges().systemPortRanges()->begin(), - mac, - std::nullopt); - }; + auto getDsfNodeAsic = [&isInterfaceNode]( + const std::shared_ptr& node) { + CHECK(isInterfaceNode(node)) + << " Only expect to be called for Interface nodes"; + CHECK(node->getLocalSystemPortOffset().has_value()); + CHECK(node->getGlobalSystemPortOffset().has_value()); + CHECK(node->getInbandPortId().has_value()); + CHECK(node->getMac().has_value()); + cfg::SwitchInfo switchInfo; + switchInfo.asicType() = node->getAsicType(); + switchInfo.switchType() = cfg::SwitchType::VOQ; + switchInfo.switchIndex() = 0; /* dummy switchIndex*/ + switchInfo.switchMac() = node->getMac()->toString(); + switchInfo.systemPortRanges() = node->getSystemPortRanges(); + switchInfo.localSystemPortOffset() = *node->getLocalSystemPortOffset(); + switchInfo.globalSystemPortOffset() = *node->getGlobalSystemPortOffset(); + switchInfo.inbandPortId() = *node->getInbandPortId(); + return HwAsic::makeAsic( + static_cast(node->getSwitchId()), switchInfo, std::nullopt); + }; auto processLoopbacks = [&](const std::shared_ptr& node, const HwAsic* dsfNodeAsic) { auto recyclePortId = getInbandSysPortId(node); @@ -1130,9 +1141,9 @@ void ThriftConfigApplier::processUpdatedDsfNodes() { const auto& recyclePortInfo = dsfNodeAsic->getRecyclePortInfo(); sysPort->setCoreIndex(recyclePortInfo.coreId); sysPort->setCorePortIndex(recyclePortInfo.corePortIndex); - sysPort->setSpeedMbps(recyclePortInfo.speedMbps); // 10G - // TODO(daiweix): do not hardcode 8 - sysPort->setNumVoqs(8); + sysPort->setSpeedMbps(recyclePortInfo.speedMbps); + sysPort->setNumVoqs( + getNumVoqs(cfg::PortType::RECYCLE_PORT, cfg::Scope::GLOBAL)); sysPort->setScope(cfg::Scope::GLOBAL); // TODO(daiweix): use voq config of rcy ports, hardcode rcy portID 1 for now sysPort->resetPortQueues(getVoqConfig(PortID(1))); @@ -1604,9 +1615,6 @@ void ThriftConfigApplier::updateVlanInterfaces(const Interface* intf) { shared_ptr ThriftConfigApplier::updateSystemPorts( const std::shared_ptr& ports, const std::shared_ptr& multiSwitchSettings) { - // TODO(daiweix): do not hardcode 8 - const auto kNumVoqs = 8; - static const std::set kCreateSysPortsFor = { cfg::PortType::INTERFACE_PORT, cfg::PortType::RECYCLE_PORT, @@ -1645,7 +1653,8 @@ shared_ptr ThriftConfigApplier::updateSystemPorts( sysPort->setCorePortIndex( platformPort.mapping()->attachedCorePortIndex().value()); sysPort->setSpeedMbps(static_cast(port.second->getSpeed())); - sysPort->setNumVoqs(kNumVoqs); + sysPort->setNumVoqs( + getNumVoqs(port.second->getPortType(), port.second->getScope())); sysPort->setQosPolicy(port.second->getQosPolicy()); sysPort->resetPortQueues(getVoqConfig(port.second->getID())); // TODO(daiweix): remove this CHECK_EQ after verifying scope config is @@ -3100,23 +3109,30 @@ std::shared_ptr ThriftConfigApplier::updateAclTableGroups() { auto origAclTableGroups = orig_->getAclTableGroups(); AclTableGroupMap::NodeContainer newAclTableGroups; - if (!cfg_->aclTableGroup()) { + auto updateAclTableGroupsInternal = + [this, origAclTableGroups, &newAclTableGroups]( + const cfg::AclTableGroup& cfgAclTableGroup) { + auto origAclTableGroup = + origAclTableGroups->getNodeIf(*cfgAclTableGroup.stage()); + auto newAclTableGroup = updateAclTableGroup( + *cfgAclTableGroup.stage(), cfgAclTableGroup, origAclTableGroup); + return updateMap( + &newAclTableGroups, origAclTableGroup, newAclTableGroup); + }; + + bool changed = false; + if (!cfg_->aclTableGroup() && + (!cfg_->aclTableGroups() || cfg_->aclTableGroups()->empty())) { throw FbossError( "ACL Table Group must be specified if Multiple ACL Table support is enabled"); + } else if (auto cfgAclTableGroup = cfg_->aclTableGroup()) { + changed = updateAclTableGroupsInternal(*cfgAclTableGroup); + } else { + for (const auto& entry : *cfg_->aclTableGroups()) { + changed = updateAclTableGroupsInternal(entry); + } } - if (cfg_->aclTableGroup()->stage() != cfg::AclStage::INGRESS) { - throw FbossError("Only ACL Stage INGRESS is supported"); - } - - auto origAclTableGroup = - origAclTableGroups->getNodeIf(cfg::AclStage::INGRESS); - - auto newAclTableGroup = - updateAclTableGroup(*cfg_->aclTableGroup()->stage(), origAclTableGroup); - auto changed = - updateMap(&newAclTableGroups, origAclTableGroup, newAclTableGroup); - if (!changed) { return nullptr; } @@ -3126,12 +3142,12 @@ std::shared_ptr ThriftConfigApplier::updateAclTableGroups() { std::shared_ptr ThriftConfigApplier::updateAclTableGroup( cfg::AclStage aclStage, + const cfg::AclTableGroup& cfgAclTableGroup, const std::shared_ptr& origAclTableGroup) { auto newAclTableMap = std::make_shared(); bool changed = false; int numExistingTablesProcessed = 0; - - auto aclByName = getAllAclsByName(); + auto aclByName = getAllAclsByName(cfgAclTableGroup); // Check for controlPlane traffic acls if (cfg_->cpuTrafficPolicy() && cfg_->cpuTrafficPolicy()->trafficPolicy()) { checkTrafficPolicyAclsExistInConfig( @@ -3143,7 +3159,7 @@ std::shared_ptr ThriftConfigApplier::updateAclTableGroup( } // For each table in the config, update the table entries and priority - for (const auto& aclTable : *cfg_->aclTableGroup()->aclTables()) { + for (const auto& aclTable : *cfgAclTableGroup.aclTables()) { auto newTable = updateAclTable(aclStage, aclTable, &numExistingTablesProcessed); if (newTable) { @@ -3169,17 +3185,18 @@ std::shared_ptr ThriftConfigApplier::updateAclTableGroup( } auto newAclTableGroup = - std::make_shared(*cfg_->aclTableGroup()->stage()); + std::make_shared(*cfgAclTableGroup.stage()); newAclTableGroup->setAclTableMap(newAclTableMap); - newAclTableGroup->setName(*cfg_->aclTableGroup()->name()); + newAclTableGroup->setName(*cfgAclTableGroup.name()); return newAclTableGroup; } flat_map -ThriftConfigApplier::getAllAclsByName() { +ThriftConfigApplier::getAllAclsByName( + const cfg::AclTableGroup& cfgAclTableGroup) { flat_map aclByName; - for (const auto& aclTable : *cfg_->aclTableGroup()->aclTables()) { + for (const auto& aclTable : *cfgAclTableGroup.aclTables()) { auto aclEntries = *(aclTable.aclEntries()); folly::gen::from(aclEntries) | folly::gen::map([](const cfg::AclEntry& acl) { @@ -4604,6 +4621,18 @@ shared_ptr ThriftConfigApplier::updateSwitchSettings( switchSettingsChange = true; } + std::optional newConditionalEntropyRehashPeriodUS; + if (cfg_->switchSettings()->conditionalEntropyRehashPeriodUS()) { + newConditionalEntropyRehashPeriodUS = + *cfg_->switchSettings()->conditionalEntropyRehashPeriodUS(); + } + if (newConditionalEntropyRehashPeriodUS != + origSwitchSettings->getConditionalEntropyRehashPeriodUS()) { + newSwitchSettings->setConditionalEntropyRehashPeriodUS( + newConditionalEntropyRehashPeriodUS); + switchSettingsChange = true; + } + if (origSwitchSettings->getSwitchDrainState() != *cfg_->switchSettings()->switchDrainState()) { auto numVoqSwtitches = @@ -4766,6 +4795,15 @@ shared_ptr ThriftConfigApplier::updateSwitchSettings( } } + std::optional newFirmwarePath; + if (cfg_->switchSettings()->firmwarePath()) { + newFirmwarePath = *cfg_->switchSettings()->firmwarePath(); + } + if (newFirmwarePath != origSwitchSettings->getFirmwarePath()) { + newSwitchSettings->setFirmwarePath(newFirmwarePath); + switchSettingsChange = true; + } + if (switchSettingsChange) { return newSwitchSettings; } @@ -4855,6 +4893,7 @@ shared_ptr ThriftConfigApplier::updateControlPlane() { // check whether queue setting changed QueueConfig newQueues; + QueueConfig newVoqs; auto switchIds = scopeResolver_.scope(origCPU).switchIds(); CHECK(scopeResolver_.hasL3()); CHECK_GT(switchIds.size(), 0); @@ -4869,6 +4908,15 @@ shared_ptr ThriftConfigApplier::updateControlPlane() { qosMap); newQueues.insert( newQueues.begin(), tmpPortQueues.begin(), tmpPortQueues.end()); + if (cfg_->cpuVoqs()) { + auto tmpPortVoqs = updatePortQueues( + origCPU->getVoqsConfig(), + *cfg_->cpuVoqs(), + asic->getDefaultNumPortQueues(streamType, cfg::PortType::CPU_PORT), + streamType, + qosMap); + newVoqs.insert(newVoqs.begin(), tmpPortVoqs.begin(), tmpPortVoqs.end()); + } } bool queuesUnchanged = false; if (origCPU->getQueues()->size() > 0) { @@ -4881,13 +4929,25 @@ shared_ptr ThriftConfigApplier::updateControlPlane() { } } } + bool voqsUnchanged = (newVoqs.size() == origCPU->getVoqs()->size()); + if (origCPU->getVoqs()->size() > 0) { + /* on cold boot original queues are 0 */ + for (int i = 0; i < newVoqs.size() && voqsUnchanged; i++) { + if (*(newVoqs.at(i)) != *(origCPU->getVoqs()->at(i))) { + voqsUnchanged = false; + break; + } + } + } - if (queuesUnchanged && qosPolicyUnchanged && rxReasonToQueueUnchanged) { + if (queuesUnchanged && voqsUnchanged && qosPolicyUnchanged && + rxReasonToQueueUnchanged) { return nullptr; } auto newCPU = origCPU->clone(); newCPU->resetQueues(newQueues); + newCPU->resetVoqs(newVoqs); newCPU->resetQosPolicy(qosPolicy); newCPU->resetRxReasonToQueue(newRxReasonToQueue); auto newMultiSwitchControlPlane = std::make_shared(); diff --git a/fboss/agent/AsicUtils.cpp b/fboss/agent/AsicUtils.cpp index 44a5f7877cb40..b0151daafaa20 100644 --- a/fboss/agent/AsicUtils.cpp +++ b/fboss/agent/AsicUtils.cpp @@ -19,52 +19,29 @@ const HwAsic& getHwAsicForAsicType(const cfg::AsicType& asicType) { * allows us to use static hwAsic objects here. */ int64_t switchId = 0; - int16_t switchIndex = 0; - std::optional systemPortRange = std::nullopt; - folly::MacAddress mac("02:00:00:00:0F:0B"); + cfg::SwitchInfo switchInfo; + switchInfo.switchMac() = "02:00:00:00:0F:0B"; + switchInfo.switchIndex() = 0; switch (asicType) { case cfg::AsicType::ASIC_TYPE_JERICHO2: { - static Jericho2Asic jericho2Asic{ - cfg::SwitchType::VOQ, - switchId, - switchIndex, - systemPortRange, - mac, - std::nullopt}; + switchInfo.switchType() = cfg::SwitchType::VOQ; + static Jericho2Asic jericho2Asic{switchId, switchInfo}; return jericho2Asic; } case cfg::AsicType::ASIC_TYPE_JERICHO3: { - static Jericho3Asic jericho3Asic{ - cfg::SwitchType::VOQ, - switchId, - switchIndex, - systemPortRange, - mac, - std::nullopt}; - + switchInfo.switchType() = cfg::SwitchType::VOQ; + static Jericho3Asic jericho3Asic{switchId, switchInfo}; return jericho3Asic; } case cfg::AsicType::ASIC_TYPE_RAMON: { - static RamonAsic ramonAsic{ - cfg::SwitchType::FABRIC, - switchId, - switchIndex, - systemPortRange, - mac, - std::nullopt}; - + switchInfo.switchType() = cfg::SwitchType::FABRIC; + static RamonAsic ramonAsic{switchId, switchInfo}; return ramonAsic; } case cfg::AsicType::ASIC_TYPE_RAMON3: { - static Ramon3Asic ramon3Asic{ - cfg::SwitchType::FABRIC, - switchId, - switchIndex, - systemPortRange, - mac, - std::nullopt}; - + switchInfo.switchType() = cfg::SwitchType::FABRIC; + static Ramon3Asic ramon3Asic{switchId, switchInfo}; return ramon3Asic; } case cfg::AsicType::ASIC_TYPE_FAKE: diff --git a/fboss/agent/BUCK b/fboss/agent/BUCK index a1e6c3fd84cb8..f01d2fc9aa6a9 100644 --- a/fboss/agent/BUCK +++ b/fboss/agent/BUCK @@ -392,6 +392,20 @@ cpp_library( ], ) +cpp_library( + name = "voq_utils", + srcs = [ + "VoqUtils.cpp", + ], + headers = [ + "VoqUtils.h", + ], + exported_deps = [ + ":agent_features", + ":switch_config-cpp2-types", + ], +) + cpp_library( name = "address_utils", headers = [ @@ -583,6 +597,7 @@ cpp_library( ":switchid_scope_resolver", ":switchinfo_utils", ":utils", + ":voq_utils", "//fboss/agent/hw/switch_asics:switch_asics", "//fboss/agent/if:mpls-cpp2-types", "//fboss/agent/platforms/common:platform_mapping", @@ -734,8 +749,8 @@ cpp_library( ":constants", ":dhcpv4_options_of_interest", ":fboss-error", - ":fboss-event-base", ":fboss-types", + ":fboss_event_base", ":fsdb_adapted_sub_manager", ":hw_switch_handler", ":hwswitchcallback", @@ -758,6 +773,7 @@ cpp_library( ":switchid_scope_resolver", ":switchinfo_utils", ":utils", + ":voq_utils", "//common/fbwhoami:fb_who_am_i", "//common/network:util", "//common/stats:macros", @@ -890,8 +906,8 @@ cpp_library( ":address_utils", ":core", ":fboss-error", - ":fboss-event-base", ":fboss-types", + ":fboss_event_base", ":hw_asic_table", ":packet", ":stats", @@ -971,11 +987,12 @@ cpp_library( ) cpp_library( - name = "fboss-event-base", + name = "fboss_event_base", headers = [ "FbossEventBase.h", ], exported_deps = [ + ":agent_features", "//folly/io/async:async_base", "//folly/logging:logging", ], @@ -1026,8 +1043,8 @@ cpp_library( ":agent_dir_util", ":agent_features", ":fboss-error", - ":fboss-event-base", ":fboss-types", + ":fboss_event_base", ":load_agent_config", ":platform_config-cpp2-types", ":switch_config-cpp2-types", @@ -1234,8 +1251,8 @@ cpp_library( "HwSwitchHandler.h", ], exported_deps = [ - ":fboss-event-base", ":fboss-types", + ":fboss_event_base", ":hwswitchcallback", ":load_agent_config", ":switch_config-cpp2-types", diff --git a/fboss/agent/DHCPv4Handler.h b/fboss/agent/DHCPv4Handler.h index ee03890571da0..0a0f248627959 100644 --- a/fboss/agent/DHCPv4Handler.h +++ b/fboss/agent/DHCPv4Handler.h @@ -19,8 +19,8 @@ namespace facebook::fboss { class SwSwitch; class RxPacket; -class UDPHeader; -class DHCPv4Packet; +struct UDPHeader; +struct DHCPv4Packet; class TxPacket; class IPv4Hdr; diff --git a/fboss/agent/DHCPv6Handler.h b/fboss/agent/DHCPv6Handler.h index 80487cbfb8406..e7082cbe9ed33 100644 --- a/fboss/agent/DHCPv6Handler.h +++ b/fboss/agent/DHCPv6Handler.h @@ -20,7 +20,7 @@ namespace facebook::fboss { class SwSwitch; class RxPacket; -class UDPHeader; +struct UDPHeader; struct DHCPv6Packet; class TxPacket; class IPv6Hdr; diff --git a/fboss/agent/FbossEventBase.h b/fboss/agent/FbossEventBase.h index 8f8059259c56d..86d196370de92 100644 --- a/fboss/agent/FbossEventBase.h +++ b/fboss/agent/FbossEventBase.h @@ -9,12 +9,13 @@ */ #pragma once +#include "fboss/agent/AgentFeatures.h" + #include #include #include namespace facebook::fboss { - class FbossEventBase : public folly::EventBase { public: explicit FbossEventBase(const std::string& name) : eventBaseName_(name) {} @@ -24,6 +25,12 @@ class FbossEventBase : public folly::EventBase { XLOG(ERR) << "runInFbossEventBaseThread to non-running " << eventBaseName_ << " FbossEventBase."; } + if (getNotificationQueueSize() >= FLAGS_fboss_event_base_queue_limit) { + XLOG(ERR) << "Stop enqueuing to " << eventBaseName_ + << ". Queue size greater than limit " + << FLAGS_fboss_event_base_queue_limit; + return; + } runInEventBaseThread(std::move(fn)); } @@ -37,6 +44,12 @@ class FbossEventBase : public folly::EventBase { XLOG(ERR) << "runInFbossEventBaseThreadAndWait for non-running " << eventBaseName_ << " FbossEventBase."; } + if (getNotificationQueueSize() >= FLAGS_fboss_event_base_queue_limit) { + XLOG(ERR) << "Stop enqueuing to " << eventBaseName_ + << ". Queue size greater than limit " + << FLAGS_fboss_event_base_queue_limit; + return; + } runInEventBaseThreadAndWait(std::move(fn)); } @@ -46,6 +59,12 @@ class FbossEventBase : public folly::EventBase { << "runImmediatelyOrRunInFbossEventBaseThreadAndWait for non-running " << eventBaseName_ << " FbossEventBase."; } + if (getNotificationQueueSize() >= FLAGS_fboss_event_base_queue_limit) { + XLOG(ERR) << "Stop enqueuing to " << eventBaseName_ + << ". Queue size greater than limit " + << FLAGS_fboss_event_base_queue_limit; + return; + } runImmediatelyOrRunInEventBaseThreadAndWait(std::move(fn)); } diff --git a/fboss/agent/HwAgentMain.cpp b/fboss/agent/HwAgentMain.cpp index 43ba953fe7aa8..168a15b830e16 100644 --- a/fboss/agent/HwAgentMain.cpp +++ b/fboss/agent/HwAgentMain.cpp @@ -160,6 +160,7 @@ int hwAgentMain( if (FLAGS_thrift_test_utils_thrift_handler || FLAGS_hw_agent_for_testing) { config = getConfigFileForTesting(FLAGS_switchIndex); + initFlagDefaults(*config->thrift.defaultCommandLineArgs()); } auto hwAgent = std::make_unique( diff --git a/fboss/agent/HwAsicTable.cpp b/fboss/agent/HwAsicTable.cpp index 53d26f84896e7..de7bb0fbffdbe 100644 --- a/fboss/agent/HwAsicTable.cpp +++ b/fboss/agent/HwAsicTable.cpp @@ -12,30 +12,18 @@ HwAsicTable::HwAsicTable( const std::map& switchIdToSwitchInfo, std::optional sdkVersion) { for (const auto& switchIdAndSwitchInfo : switchIdToSwitchInfo) { - folly::MacAddress mac; - if (switchIdAndSwitchInfo.second.switchMac()) { - mac = folly::MacAddress(*switchIdAndSwitchInfo.second.switchMac()); - } else { + auto switchInfo = switchIdAndSwitchInfo.second; + if (!switchInfo.switchMac()) { try { - mac = getLocalMacAddress(); + switchInfo.switchMac() = getLocalMacAddress().toString(); } catch (const std::exception&) { // Expected when fake bcm tests run without config + switchInfo.switchMac() = folly::MacAddress().toString(); } } - std::optional systemPortRange; - if (switchIdAndSwitchInfo.second.systemPortRange().has_value()) { - systemPortRange = *switchIdAndSwitchInfo.second.systemPortRange(); - } hwAsics_.emplace( SwitchID(switchIdAndSwitchInfo.first), - HwAsic::makeAsic( - *switchIdAndSwitchInfo.second.asicType(), - *switchIdAndSwitchInfo.second.switchType(), - switchIdAndSwitchInfo.first, - *switchIdAndSwitchInfo.second.switchIndex(), - systemPortRange, - mac, - sdkVersion)); + HwAsic::makeAsic(switchIdAndSwitchInfo.first, switchInfo, sdkVersion)); } } diff --git a/fboss/agent/HwSwitchCallback.h b/fboss/agent/HwSwitchCallback.h index a77ec8ba083f5..970658d78022d 100644 --- a/fboss/agent/HwSwitchCallback.h +++ b/fboss/agent/HwSwitchCallback.h @@ -43,11 +43,13 @@ class HwSwitchCallback { std::optional iPhyFaultStatus = std::nullopt) = 0; /* - * linkActiveStateChanged() is invoked by the HwSwitch whenever the link - * active/inactive status changes on a port. + * linkActiveStateChangedOrFwIsolated() is invoked by the HwSwitch whenever + * the link active/inactive status changes on a port or Fw Isolates. */ - virtual void linkActiveStateChanged( - const std::map& port2IsActive) = 0; + virtual void linkActiveStateChangedOrFwIsolated( + const std::map& port2IsActive, + bool fwIsolated, + const std::optional& numActiveFabricPortsAtFwIsolate) = 0; virtual void linkConnectivityChanged( const std::map& diff --git a/fboss/agent/IPv6Handler.cpp b/fboss/agent/IPv6Handler.cpp index 07c3bd5305a5f..2f0aab8612a75 100644 --- a/fboss/agent/IPv6Handler.cpp +++ b/fboss/agent/IPv6Handler.cpp @@ -598,6 +598,12 @@ void IPv6Handler::handleNeighborAdvertisement( sw_->portStats(pkt)->pktDropped(); return; } + if (pkt->getSrcPort() == PortID(0)) { + XLOG(DBG2) << "ignoring IPv6 neighbor advertisement for " << targetIP + << " received from cpu port"; + sw_->portStats(pkt)->pktDropped(); + return; + } if (!vlanOrIntf) { // Hmm, we don't actually have this VLAN configured. diff --git a/fboss/agent/LacpMachines.h b/fboss/agent/LacpMachines.h index d7a86a75bc63b..9df5f3b91b3ed 100644 --- a/fboss/agent/LacpMachines.h +++ b/fboss/agent/LacpMachines.h @@ -24,7 +24,7 @@ namespace facebook::fboss { class AggregatePort; class LacpController; -class LacpServicerIf; +struct LacpServicerIf; /* * See IEEE 802.3AD-2000 43.4.3 for an overview of each state machine diff --git a/fboss/agent/MirrorManagerImpl.cpp b/fboss/agent/MirrorManagerImpl.cpp index 337221a54abd3..3903dcb3a8d09 100644 --- a/fboss/agent/MirrorManagerImpl.cpp +++ b/fboss/agent/MirrorManagerImpl.cpp @@ -197,6 +197,12 @@ MirrorManagerImpl::resolveMirrorNextHopNeighbor( InterfaceID mirrorEgressInterface = nexthop.intf(); auto interface = state->getInterfaces()->getNodeIf(mirrorEgressInterface); + if (!interface && state->getRemoteInterfaces()) { + XLOG(DBG2) + << "Interface: " << mirrorEgressInterface + << " not found in local interaces, looking up in remote interfaces"; + interface = state->getRemoteInterfaces()->getNodeIf(mirrorEgressInterface); + } if (interface->hasAddress(mirrorNextHopIp)) { /* if mirror destination is directly connected */ neighbor = getNeighborEntryTableHelper(state, interface) @@ -216,7 +222,14 @@ MirrorTunnel MirrorManagerImpl::resolveMirrorTunnel( const NextHop& nextHop, const std::shared_ptr& neighbor, const std::optional& udpPorts) { - const auto interface = state->getInterfaces()->getNodeIf(nextHop.intf()); + InterfaceID mirrorEgressInterface = nextHop.intf(); + auto interface = state->getInterfaces()->getNodeIf(mirrorEgressInterface); + if (!interface && state->getRemoteInterfaces()) { + XLOG(DBG2) + << "Interface: " << mirrorEgressInterface + << " not found in local interaces, looking up in remote interfaces"; + interface = state->getRemoteInterfaces()->getNodeIf(mirrorEgressInterface); + } const auto iter = interface->getAddressToReach(neighbor->getIP()); if (udpPorts.has_value()) { diff --git a/fboss/agent/MultiSwitchThriftHandler.cpp b/fboss/agent/MultiSwitchThriftHandler.cpp index 48f9b7d528448..815e16f5657e1 100644 --- a/fboss/agent/MultiSwitchThriftHandler.cpp +++ b/fboss/agent/MultiSwitchThriftHandler.cpp @@ -87,7 +87,17 @@ void MultiSwitchThriftHandler::processLinkActiveState( *linkChangeEvent.linkActiveEvents()->port2IsActive()) { port2IsActive[PortID(portID)] = isActive; } - sw_->linkActiveStateChanged(port2IsActive); + + auto fwIsolated = *linkChangeEvent.linkActiveEvents()->fwIsolated(); + + std::optional numActiveFabricPortsAtFwIsolate; + if (linkChangeEvent.linkActiveEvents()->numActiveFabricPortsAtFwIsolate()) { + numActiveFabricPortsAtFwIsolate = + *linkChangeEvent.linkActiveEvents()->numActiveFabricPortsAtFwIsolate(); + } + + sw_->linkActiveStateChangedOrFwIsolated( + port2IsActive, fwIsolated, numActiveFabricPortsAtFwIsolate); } void MultiSwitchThriftHandler::processLinkConnectivity( diff --git a/fboss/agent/NeighborCacheImpl-defs.h b/fboss/agent/NeighborCacheImpl-defs.h index 0c3688ceaac15..e2c21c55e553e 100644 --- a/fboss/agent/NeighborCacheImpl-defs.h +++ b/fboss/agent/NeighborCacheImpl-defs.h @@ -17,6 +17,7 @@ #include #include "fboss/agent/ArpHandler.h" #include "fboss/agent/EncapIndexAllocator.h" +#include "fboss/agent/FbossHwUpdateError.h" #include "fboss/agent/HwAsicTable.h" #include "fboss/agent/IPv6Handler.h" #include "fboss/agent/NeighborCacheImpl.h" @@ -82,6 +83,17 @@ inline cfg::PortDescriptor getNeighborPortDescriptor( } // namespace ncachehelpers +template +bool NeighborCacheImpl::isHwUpdateProtected() { + // this API return true if the platform supports hw protection, + // for this we are using transactionsSupported() API + // and return true for SAI switches, failure protection uses transactions + // support in HW switch which is available only in SAI switches + return ( + FLAGS_enable_hw_update_protection && + sw_->getHwSwitchHandler()->transactionsSupported()); +} + template void NeighborCacheImpl::programEntry(Entry* entry) { SwSwitch::StateUpdateFn updateFn; @@ -104,9 +116,22 @@ void NeighborCacheImpl::programEntry(Entry* entry) { "Programming entry is not supported for switch type: ", switchType); } - sw_->updateState( - folly::to("add neighbor ", entry->getFields().ip), - std::move(updateFn)); + if (isHwUpdateProtected()) { + try { + sw_->updateStateWithHwFailureProtection( + folly::to( + "add neighbor with hw protection failure ", + entry->getFields().ip), + std::move(updateFn)); + } catch (const FbossHwUpdateError& e) { + XLOG(ERR) << "Failed to program neighbor entry: " << e.what(); + sw_->stats()->neighborTableUpdateFailure(); + } + } else { + sw_->updateState( + folly::to("add neighbor ", entry->getFields().ip), + std::move(updateFn)); + } } template @@ -299,9 +324,22 @@ void NeighborCacheImpl::programPendingEntry( "Programming entry is not supported for switch type: ", switchType); } - sw_->updateStateNoCoalescing( - folly::to("add pending entry ", entry->getFields().ip), - std::move(updateFn)); + if (isHwUpdateProtected()) { + try { + sw_->updateStateWithHwFailureProtection( + folly::to( + "add pending entry with hw failure protection ", + entry->getFields().ip), + std::move(updateFn)); + } catch (const FbossHwUpdateError& e) { + XLOG(ERR) << "Failed to program pending entry: " << e.what(); + sw_->stats()->neighborTableUpdateFailure(); + } + } else { + sw_->updateStateNoCoalescing( + folly::to("add pending entry ", entry->getFields().ip), + std::move(updateFn)); + } } template @@ -724,7 +762,18 @@ void NeighborCacheImpl::flushEntry(AddressType ip, bool* flushed) { if (flushed) { // need a blocking state update if the caller wants to know if an entry // was actually flushed - sw_->updateStateBlocking("flush neighbor entry", std::move(updateFn)); + if (isHwUpdateProtected()) { + try { + sw_->updateStateWithHwFailureProtection( + "flush neighbor entry with hw failure protection", + std::move(updateFn)); + } catch (const FbossHwUpdateError& e) { + XLOG(ERR) << "Failed to program flush neighbor entry: " << e.what(); + sw_->stats()->neighborTableUpdateFailure(); + } + } else { + sw_->updateStateBlocking("flush neighbor entry", std::move(updateFn)); + } } else { sw_->updateState("remove neighbor entry: " + ip.str(), std::move(updateFn)); } diff --git a/fboss/agent/NeighborCacheImpl.h b/fboss/agent/NeighborCacheImpl.h index a0920cfce18db..36e90991ed2de 100644 --- a/fboss/agent/NeighborCacheImpl.h +++ b/fboss/agent/NeighborCacheImpl.h @@ -127,6 +127,7 @@ class NeighborCacheImpl { std::optional getCacheData(AddressType ip) const; private: + bool isHwUpdateProtected(); // These are used to program entries into the SwitchState void programEntry(Entry* entry); void diff --git a/fboss/agent/Platform.cpp b/fboss/agent/Platform.cpp index 95fa6457d65f3..0d53b7ff62963 100644 --- a/fboss/agent/Platform.cpp +++ b/fboss/agent/Platform.cpp @@ -94,37 +94,27 @@ void Platform::init( setConfig(std::move(config)); auto macStr = getPlatformAttribute(cfg::PlatformAttributes::MAC); const auto switchSettings = *config_->thrift.sw()->switchSettings(); - std::optional switchId; - std::optional systemPortRange; - auto switchType{cfg::SwitchType::NPU}; auto getSwitchInfo = [&switchSettings](int64_t switchIndex) { - for (const auto& switchInfo : *switchSettings.switchIdToSwitchInfo()) { - if (switchInfo.second.switchIndex() == switchIndex) { - return switchInfo; + for (const auto& [switchId, switchInfo] : + *switchSettings.switchIdToSwitchInfo()) { + if (switchInfo.switchIndex() == switchIndex) { + return std::make_pair(switchId, switchInfo); } } throw FbossError("No SwitchInfo found for switchIndex", switchIndex); }; std::optional fabricNodeRole; + std::optional switchId; + cfg::SwitchInfo switchInfo; + switchInfo.switchType() = cfg::SwitchType::NPU; if (switchSettings.switchIdToSwitchInfo()->size()) { - auto switchInfo = getSwitchInfo(switchIndex); - switchId = std::optional(switchInfo.first); - switchType = *switchInfo.second.switchType(); - if (switchType == cfg::SwitchType::VOQ) { - const auto& dsfNodesConfig = *config_->thrift.sw()->dsfNodes(); - const auto& dsfNodeConfig = dsfNodesConfig.find(*switchId); - if (dsfNodeConfig != dsfNodesConfig.end() && - !dsfNodeConfig->second.systemPortRanges() - ->systemPortRanges() - ->empty()) { - // FIXME[2-stage DSF] Pass SystemPortRanges to ASIC - systemPortRange = *dsfNodeConfig->second.systemPortRanges() - ->systemPortRanges() - ->begin(); - } - } else if (switchType == cfg::SwitchType::FABRIC) { + auto switchIdAndInfo = getSwitchInfo(switchIndex); + switchId = switchIdAndInfo.first; + switchInfo = switchIdAndInfo.second; + auto switchType = *switchInfo.switchType(); + if (switchType == cfg::SwitchType::FABRIC) { fabricNodeRole = HwAsic::FabricNodeRole::SINGLE_STAGE_L1; const auto& dsfNodesConfig = *config_->thrift.sw()->dsfNodes(); const auto& dsfNodeConfig = dsfNodesConfig.find(*switchId); @@ -141,8 +131,8 @@ void Platform::init( } } } - if (switchInfo.second.switchMac()) { - macStr = *switchInfo.second.switchMac(); + if (switchInfo.switchMac()) { + macStr = *switchInfo.switchMac(); } } @@ -151,17 +141,12 @@ void Platform::init( XLOG(DBG2) << " Setting platform mac to: " << macStr.value(); localMac_ = folly::MacAddress(*macStr); } + switchInfo.switchMac() = localMac_.toString(); XLOG(DBG2) << "Initializing Platform with switch ID: " << switchId.value_or(0) << " switch Index: " << switchIndex; - setupAsic( - switchType, - switchId, - switchIndex, - systemPortRange, - localMac_, - fabricNodeRole); + setupAsic(switchId, switchInfo, fabricNodeRole); initImpl(hwFeaturesDesired); // We should always initPorts() here instead of leaving the hw/ to call initPorts(); diff --git a/fboss/agent/Platform.h b/fboss/agent/Platform.h index a696496a560e9..84cbdbdc2f0f8 100644 --- a/fboss/agent/Platform.h +++ b/fboss/agent/Platform.h @@ -34,7 +34,7 @@ struct AgentConfig; class HwSwitch; class SwSwitch; class ThriftHandler; -struct ProductInfo; +class ProductInfo; class HwSwitchWarmBootHelper; class PlatformProductInfo; class HwSwitchCallback; @@ -269,11 +269,8 @@ class Platform { */ virtual void initImpl(uint32_t hwFeaturesDesired) = 0; virtual void setupAsic( - cfg::SwitchType switchType, std::optional switchId, - int16_t switchIndex, - std::optional systemPortRange, - folly::MacAddress& mac, + const cfg::SwitchInfo& switchInfo, std::optional role) = 0; std::unique_ptr config_; diff --git a/fboss/agent/SwSwitch.cpp b/fboss/agent/SwSwitch.cpp index 3c884870ec3d3..59b71044d3155 100644 --- a/fboss/agent/SwSwitch.cpp +++ b/fboss/agent/SwSwitch.cpp @@ -272,11 +272,11 @@ std::string getDrainThresholdStr( const SwitchSettings& switchSettings) { if (newState == SwitchDrainState::UNDRAINED) { auto minLinks = switchSettings.getMinLinksToRemainInVOQDomain(); - return "drains when active ports is below " + + return "drains at < " + (minLinks.has_value() ? std::to_string(minLinks.value()) : "N/A") + ")"; } else { auto minLinks = switchSettings.getMinLinksToJoinVOQDomain(); - return "undrains when active ports is above" + + return "undrains at >= " + (minLinks.has_value() ? std::to_string(minLinks.value()) : "N/A") + ")"; } } @@ -1942,7 +1942,8 @@ void SwSwitch::packetReceived(std::unique_ptr pkt) noexcept { handlePacket(std::move(pkt)); } catch (const std::exception& ex) { portStats(port)->pktError(); - XLOG(ERR) << "error processing trapped packet: " << folly::exceptionStr(ex); + XLOG(ERR) << "error processing trapped packet: " << folly::exceptionStr(ex) + << " from port: " << port; // Return normally, without letting the exception propagate to our caller. return; } @@ -2180,8 +2181,10 @@ void SwSwitch::linkStateChanged( } } -void SwSwitch::linkActiveStateChanged( - const std::map& port2IsActive) { +void SwSwitch::linkActiveStateChangedOrFwIsolated( + const std::map& port2IsActive, + bool fwIsolated, + const std::optional& numActiveFabricPortsAtFwIsolate) { if (!isFullyInitialized()) { XLOG(ERR) << "Ignore link active state change event before we are fully initialized..."; @@ -2230,8 +2233,21 @@ void SwSwitch::linkActiveStateChanged( auto matcher = getScopeResolver()->scope(port2IsActive.cbegin()->first); auto switchSettings = state->getSwitchSettings()->getNodeIf(matcher.matcherString()); - auto newActualSwitchDrainState = - computeActualSwitchDrainState(switchSettings, numActiveFabricPorts); + + SwitchDrainState newActualSwitchDrainState; + if (fwIsolated) { + if (isSwitchErrorFirmwareIsolate( + numActiveFabricPortsAtFwIsolate, switchSettings)) { + newActualSwitchDrainState = + cfg::SwitchDrainState::DRAINED_DUE_TO_ASIC_ERROR; + } else { + newActualSwitchDrainState = cfg::SwitchDrainState::DRAINED; + } + } else { + newActualSwitchDrainState = + computeActualSwitchDrainState(switchSettings, numActiveFabricPorts); + } + auto currentActualDrainState = switchSettings->getActualSwitchDrainState(); if (newActualSwitchDrainState != currentActualDrainState) { @@ -2239,10 +2255,16 @@ void SwSwitch::linkActiveStateChanged( newSwitchSettings->setActualSwitchDrainState(newActualSwitchDrainState); } - XLOG(DBG2) << "Switch state: " + XLOG(DBG2) << "SwitchID: " << static_cast(matcher.switchId()) + << " | FwIsolated: " << (fwIsolated ? "Y" : "N") + << " | ActivePortsAtFwIsolate: " + << (numActiveFabricPortsAtFwIsolate.has_value() + ? folly::to( + numActiveFabricPortsAtFwIsolate.value()) + : "--") + << " | " << getDrainStateChangedStr(getState(), newState, matcher) - << " | SwitchIDs: " << matcher.matcherString() - << " | Active ports: " << numActiveFabricPorts << "/" + << " | ActivePorts: " << numActiveFabricPorts << "/" << port2IsActive.size() << " (" << getDrainThresholdStr( newActualSwitchDrainState, switchSettings.get()) @@ -2265,10 +2287,30 @@ void SwSwitch::linkActiveStateChanged( * * Note: On NIF ports, we never coalesce link up/down updates to ensure * expiry of NDP/ARP entries, but that is not applicable for Fabric port. + * + * But, there is an exception, consider the following scenario: + * - A large number of fabric links flap. + * - These links will transition ACTIVE => INACTIVE => ACTIVE. + * - It is possible that the Firmware may isolate the device. + * - Device is isolated, but SwitchState is UNDRAINED(unisolated)..(0) + * - Firmware cb handling will decide to DRAIN (isolate) the device..(1) + * - Switch active/inactive cb processing may decide to UNDRAIN.. (2) + * - If (1) and (2) are coalesced, SwitchState will remain UNDRAINED and + * the device will be isolated i.e. state (0), not what we want. + * + * Prevent this by not coalesing state update on Firmware Isolate. + * + * Firmware Isolate is a rare event, and thus it is OK to not coalesce these + * updates. */ - updateState( - "Port ActiveState (ACTIVE/INACTIVE) Update", - std::move(updateActiveStateFn)); + if (!fwIsolated) { + updateState( + "Port ActiveState (ACTIVE/INACTIVE) Update", + std::move(updateActiveStateFn)); + } else { + updateStateNoCoalescing( + "Fw Isolate Update", std::move(updateActiveStateFn)); + } } void SwSwitch::switchReachabilityChanged( diff --git a/fboss/agent/SwSwitch.h b/fboss/agent/SwSwitch.h index a0e1f825e7413..8fd6000021929 100644 --- a/fboss/agent/SwSwitch.h +++ b/fboss/agent/SwSwitch.h @@ -567,8 +567,10 @@ class SwSwitch : public HwSwitchCallback { cfg::PortType portType, std::optional iPhyFaultStatus = std::nullopt) override; - void linkActiveStateChanged( - const std::map& port2IsActive) override; + void linkActiveStateChangedOrFwIsolated( + const std::map& port2IsActive, + bool fwIsolated, + const std::optional& numActiveFabricPortsAtFwIsolate) override; void linkConnectivityChanged( const std::map& port2OldAndNewConnectivity) override; diff --git a/fboss/agent/SwitchIdScopeResolver.cpp b/fboss/agent/SwitchIdScopeResolver.cpp index f90515682fb24..fe5afa56b0bca 100644 --- a/fboss/agent/SwitchIdScopeResolver.cpp +++ b/fboss/agent/SwitchIdScopeResolver.cpp @@ -84,10 +84,11 @@ const HwSwitchMatcher& SwitchIdScopeResolver::voqSwitchMatcher() const { HwSwitchMatcher SwitchIdScopeResolver::scope(PortID portId) const { for (const auto& switchIdAndSwitchInfo : switchIdToSwitchInfo_) { - if (portId >= - PortID(*switchIdAndSwitchInfo.second.portIdRange()->minimum()) && - portId <= - PortID(*switchIdAndSwitchInfo.second.portIdRange()->maximum())) { + auto switchInfo = switchIdAndSwitchInfo.second; + if (static_cast(portId) >= + *switchIdAndSwitchInfo.second.portIdRange()->minimum() && + static_cast(portId) <= + *switchIdAndSwitchInfo.second.portIdRange()->maximum()) { return HwSwitchMatcher(std::unordered_set( {SwitchID(switchIdAndSwitchInfo.first)})); } diff --git a/fboss/agent/SwitchStats.cpp b/fboss/agent/SwitchStats.cpp index dc9d00f4f35c8..20d20d4d56fe2 100644 --- a/fboss/agent/SwitchStats.cpp +++ b/fboss/agent/SwitchStats.cpp @@ -354,6 +354,11 @@ SwitchStats::SwitchStats(ThreadLocalStatsMap* map, int numSwitches) RATE), loPriPktsDropped_(map, kCounterPrefix + "lo_pri_pkts_dropped", SUM, RATE), multiSwitchStatus_(map, kCounterPrefix + "multi_switch", SUM, RATE), + neighborTableUpdateFailure_( + map, + kCounterPrefix + "neighbor_table_update_failure", + SUM, + RATE), macTableUpdateFailure_( map, kCounterPrefix + "mac_table_update_failure", diff --git a/fboss/agent/SwitchStats.h b/fboss/agent/SwitchStats.h index 5b1f1b6d6a1d2..3bbc145d24d3a 100644 --- a/fboss/agent/SwitchStats.h +++ b/fboss/agent/SwitchStats.h @@ -460,6 +460,14 @@ class SwitchStats : public boost::noncopyable { return getCumulativeValue(macTableUpdateFailure_); } + void neighborTableUpdateFailure() { + neighborTableUpdateFailure_.addValue(1); + } + + int getNeighborTableUpdateFailure() const { + return getCumulativeValue(neighborTableUpdateFailure_); + } + void hiPriPktsReceived() { hiPriPktsReceived_.addValue(1); } @@ -1031,6 +1039,7 @@ class SwitchStats : public boost::noncopyable { // TODO: delete this once multi_switch becomes default TLTimeseries multiSwitchStatus_; + TLTimeseries neighborTableUpdateFailure_; TLTimeseries macTableUpdateFailure_; diff --git a/fboss/agent/ThriftHandler.cpp b/fboss/agent/ThriftHandler.cpp index 193e83b510884..758973214e036 100644 --- a/fboss/agent/ThriftHandler.cpp +++ b/fboss/agent/ThriftHandler.cpp @@ -1174,7 +1174,9 @@ void ThriftHandler::getAclTableGroup(AclTableThrift& aclTableEntry) { } else { std::vector aclTable; getAclTable(aclTable); - aclTableEntry.aclTableEntries_ref()["AclTable1"] = std::move(aclTable); + aclTableEntry.aclTableEntries_ref() + [cfg::switch_config_constants::DEFAULT_INGRESS_ACL_TABLE()] = + std::move(aclTable); } } diff --git a/fboss/agent/ThriftHandler.h b/fboss/agent/ThriftHandler.h index ce408e5812479..4ed2c08251127 100644 --- a/fboss/agent/ThriftHandler.h +++ b/fboss/agent/ThriftHandler.h @@ -37,7 +37,7 @@ class SwSwitch; class Vlan; class SwitchState; class AclEntry; -struct LinkNeighbor; +class LinkNeighbor; class ThriftHandler : virtual public FbossCtrlSvIf, public fb303::FacebookBase2 { diff --git a/fboss/agent/TunManager.cpp b/fboss/agent/TunManager.cpp index 4c61783b11ed9..f386b29b5fcb5 100644 --- a/fboss/agent/TunManager.cpp +++ b/fboss/agent/TunManager.cpp @@ -675,6 +675,10 @@ boost::container::flat_map TunManager::getInterfaceStatus( return statusMap; } +bool TunManager::isValidNlSocket() { + return sock_ ? true : false; +} + bool TunManager::getIntfStatus( std::shared_ptr state, InterfaceID ifID) { diff --git a/fboss/agent/TunManager.h b/fboss/agent/TunManager.h index 87ed5ade417e2..25b5c6365efd0 100644 --- a/fboss/agent/TunManager.h +++ b/fboss/agent/TunManager.h @@ -86,6 +86,8 @@ class TunManager : public StateObserver { */ bool getIntfStatus(std::shared_ptr state, InterfaceID ifID); + bool isValidNlSocket(); + private: // no copy to assign TunManager(const TunManager&) = delete; diff --git a/fboss/agent/Utils.cpp b/fboss/agent/Utils.cpp index ff58d442029ce..7e53acd4e3f95 100644 --- a/fboss/agent/Utils.cpp +++ b/fboss/agent/Utils.cpp @@ -378,13 +378,25 @@ PortID getPortID( throw FbossError( "switchId: ", switchId, " not found in switchToSwitchInfo"); } - auto sysPortRange = switchInfo->second.systemPortRange(); - CHECK(sysPortRange.has_value()); - auto portIdRange = switchInfo->second.portIdRange(); - CHECK(portIdRange.has_value()); - return PortID( - static_cast(sysPortId) - *sysPortRange->minimum() + - *portIdRange->minimum()); + for (const auto& [matcher, ports] : std::as_const(*state->getPorts())) { + if (HwSwitchMatcher(matcher).switchId() != switchId) { + continue; + } + for (const auto& [_, port] : std::as_const(*ports)) { + if (port->getPortType() == cfg::PortType::FABRIC_PORT) { + continue; + } + if (sysPortId == + getSystemPortID( + port->getID(), + port->getScope(), + switchIdToSwitchInfo, + switchId)) { + return port->getID(); + } + } + } + throw FbossError("No port found for sys port: ", sysPortId); } SystemPortID getSystemPortID( @@ -490,14 +502,16 @@ SystemPortID getInbandSystemPortID( *switchInfoItr->second.inbandPortId()); } +// FIXME 2-stage DSF. First sys port range concep does +// not apply for 2-stage DSF cfg::Range64 getFirstSwitchSystemPortIdRange( const std::map& switchToSwitchInfo) { for (const auto& [switchId, switchInfo] : switchToSwitchInfo) { // Only VOQ switches have system ports if (switchInfo.switchType() == cfg::SwitchType::VOQ && switchInfo.switchIndex() == 0) { - CHECK(switchInfo.systemPortRange().has_value()); - return *switchInfo.systemPortRange(); + CHECK(switchInfo.systemPortRanges()->systemPortRanges()->size()); + return *switchInfo.systemPortRanges()->systemPortRanges()->begin(); } } throw FbossError("No VOQ switch with switchIndex 0 found"); @@ -829,6 +843,25 @@ size_t getNumActiveFabricPorts( }); } +bool isSwitchErrorFirmwareIsolate( + const std::optional& numActiveFabricPortsAtFwIsolate, + const std::shared_ptr& switchSettings) { + // This is invoked from Firmware Isolate context, and thus + // numActiveFabricPortsAtFwIsolate must always have value + CHECK(numActiveFabricPortsAtFwIsolate.has_value()); + + // If the Firmware isolated the device even though the number of active + // fabric links is more than the min links to remain in the VOQ domain, + // then treat it as error. This will be implemented unrecoverable error. + // + // If min links to remain in the VOQ domain is not set, allow to recover. + // In practice, this threshold will always be set. + return switchSettings->getMinLinksToRemainInVOQDomain().has_value() + ? numActiveFabricPortsAtFwIsolate.value() > + switchSettings->getMinLinksToRemainInVOQDomain().value() + : false; +} + /* * SwitchDrainState can be modified from configuration. * However, some VOQ switch implementations require that the switch must be @@ -886,7 +919,16 @@ cfg::SwitchDrainState computeActualSwitchDrainState( newSwitchDrainState = cfg::SwitchDrainState::DRAINED; } break; + case cfg::SwitchDrainState::DRAINED_DUE_TO_ASIC_ERROR: + // This is not a recoverable drain state. + newSwitchDrainState = + cfg::SwitchDrainState::DRAINED_DUE_TO_ASIC_ERROR; + break; } + break; + case cfg::SwitchDrainState::DRAINED_DUE_TO_ASIC_ERROR: + throw FbossError("Valid desired DRAINED states are {DRAINED, UNDRAINED}"); + break; } return newSwitchDrainState; diff --git a/fboss/agent/Utils.h b/fboss/agent/Utils.h index 614ac4c36ef91..0f037025cce23 100644 --- a/fboss/agent/Utils.h +++ b/fboss/agent/Utils.h @@ -409,6 +409,10 @@ size_t getNumActiveFabricPorts( const std::shared_ptr& state, const HwSwitchMatcher& matcher); +bool isSwitchErrorFirmwareIsolate( + const std::optional& numActiveFabricPortsAtFwIsolate, + const std::shared_ptr& switchSettings); + cfg::SwitchDrainState computeActualSwitchDrainState( const std::shared_ptr& switchSettings, int numActiveFabricPorts); diff --git a/fboss/agent/VoqUtils.cpp b/fboss/agent/VoqUtils.cpp new file mode 100644 index 0000000000000..2b0a9b4eedfae --- /dev/null +++ b/fboss/agent/VoqUtils.cpp @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2004-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + */ + +#include "fboss/agent/VoqUtils.h" + +#include "fboss/agent/AgentFeatures.h" + +namespace facebook::fboss { + +int getNumVoqs(cfg::PortType portType, cfg::Scope portScope) { + if (!isDualStage3Q2QMode()) { + return 8; + } + if (FLAGS_dual_stage_edsw_3q_2q) { + return 3; + } + CHECK(FLAGS_dual_stage_rdsw_3q_2q); + if (portType == cfg::PortType::MANAGEMENT_PORT || + (portType == cfg::PortType::RECYCLE_PORT && + portScope == cfg::Scope::GLOBAL)) { + return 2; + } + return 3; +} +} // namespace facebook::fboss diff --git a/fboss/agent/hw/oss/HwBasePortFb303Stats.cpp b/fboss/agent/VoqUtils.h similarity index 55% rename from fboss/agent/hw/oss/HwBasePortFb303Stats.cpp rename to fboss/agent/VoqUtils.h index a7d613f929d2f..ae42f594571e4 100644 --- a/fboss/agent/hw/oss/HwBasePortFb303Stats.cpp +++ b/fboss/agent/VoqUtils.h @@ -7,14 +7,12 @@ * of patent rights can be found in the PATENTS file in the same directory. * */ +#pragma once -#include "fboss/agent/hw/HwBasePortFb303Stats.h" +#include "fboss/agent/gen-cpp2/switch_config_types.h" namespace facebook::fboss { -void HwBasePortFb303Stats::updateQueueWatermarkStats( - const std::map& - /*queueWatermarks*/) const {} -void HwBasePortFb303Stats::updateEgressGvoqWatermarkStats( - const std::map& /*gvoqWatermarks*/) const {} +int getNumVoqs(cfg::PortType portType, cfg::Scope portScope); + } // namespace facebook::fboss diff --git a/fboss/agent/hw/BUCK b/fboss/agent/hw/BUCK index 9c610f5579f4d..ebf35231ab5be 100644 --- a/fboss/agent/hw/BUCK +++ b/fboss/agent/hw/BUCK @@ -175,7 +175,6 @@ cpp_library( "HwBasePortFb303Stats.cpp", "HwPortFb303Stats.cpp", "HwSysPortFb303Stats.cpp", - "facebook/HwBasePortFb303Stats.cpp", ], exported_deps = [ ":counter_utils", diff --git a/fboss/agent/hw/HwBasePortFb303Stats.cpp b/fboss/agent/hw/HwBasePortFb303Stats.cpp index 50903a026f2ff..9e760c706a064 100644 --- a/fboss/agent/hw/HwBasePortFb303Stats.cpp +++ b/fboss/agent/hw/HwBasePortFb303Stats.cpp @@ -16,6 +16,24 @@ #include #include +#include "common/stats/DynamicStats.h" + +namespace { + +DEFINE_dynamic_quantile_stat( + buffer_watermark_ucast, + "buffer_watermark_ucast.{}.{}.{}", + facebook::fb303::ExportTypeConsts::kNone, + std::array{{1.0}}); + +DEFINE_dynamic_quantile_stat( + egress_gvoq_watermark, + "egress_gvoq_watermark.{}.{}.{}", + facebook::fb303::ExportTypeConsts::kNone, + std::array{{1.0}}); + +} // unnamed namespace + namespace facebook::fboss { std::string HwBasePortFb303Stats::statName( @@ -225,4 +243,30 @@ void HwBasePortFb303Stats::updateStat( int64_t val) { portCounters_.updateStat(now, statName(statKey, portName_, priority), val); } + +void HwBasePortFb303Stats::updateQueueWatermarkStats( + const std::map& queueWatermarks) const { + for (const auto& [queueId, queueName] : queueId2Name_) { + auto watermarkItr = queueWatermarks.find(queueId); + CHECK(watermarkItr != queueWatermarks.end()); + STATS_buffer_watermark_ucast.addValue( + watermarkItr->second, + portName_, + folly::to("queue", queueId), + queueName); + } +} + +void HwBasePortFb303Stats::updateEgressGvoqWatermarkStats( + const std::map& gvoqWatermarks) const { + for (const auto& [queueId, queueName] : queueId2Name_) { + auto watermarkItr = gvoqWatermarks.find(queueId); + CHECK(watermarkItr != gvoqWatermarks.end()); + STATS_egress_gvoq_watermark.addValue( + watermarkItr->second, + portName_, + folly::to("queue", queueId), + queueName); + } +} } // namespace facebook::fboss diff --git a/fboss/agent/hw/HwPortFb303Stats.cpp b/fboss/agent/hw/HwPortFb303Stats.cpp index fac57cec49f18..a90d6b848ed1a 100644 --- a/fboss/agent/hw/HwPortFb303Stats.cpp +++ b/fboss/agent/hw/HwPortFb303Stats.cpp @@ -52,6 +52,7 @@ HwPortFb303Stats::kPortMonotonicCounterStatKeys() const { kOutForwardingDiscards(), kPqpErrorEgressDroppedPackets(), kFabricLinkDownDroppedCells(), + kLinkLayerFlowControlWatermark(), }; return kPortKeys; } @@ -224,6 +225,12 @@ void HwPortFb303Stats::updateStats( statName(kDataCellsFilterOn(), portName()), *curPortStats.dataCellsFilterOn() ? 1 : 0); } + if (curPortStats.linkLayerFlowControlWatermark_().has_value()) { + updateStat( + timeRetrieved_, + kLinkLayerFlowControlWatermark(), + *curPortStats.linkLayerFlowControlWatermark_()); + } // Update queue stats auto updateQueueStat = [this]( diff --git a/fboss/agent/hw/HwSwitchWarmBootHelper.cpp b/fboss/agent/hw/HwSwitchWarmBootHelper.cpp index 4beb3245cefe2..80658163d79ed 100644 --- a/fboss/agent/hw/HwSwitchWarmBootHelper.cpp +++ b/fboss/agent/hw/HwSwitchWarmBootHelper.cpp @@ -19,8 +19,6 @@ #include #include #include -#include -#include #include "fboss/lib/CommonFileUtils.h" DEFINE_string( diff --git a/fboss/agent/hw/StatsConstants.h b/fboss/agent/hw/StatsConstants.h index e66f57e889a7d..3ce4b9c15b3ff 100644 --- a/fboss/agent/hw/StatsConstants.h +++ b/fboss/agent/hw/StatsConstants.h @@ -307,4 +307,8 @@ inline folly::StringPiece constexpr kCableLengthMeters() { inline folly::StringPiece constexpr kDataCellsFilterOn() { return "data_cells_filter_on"; } + +inline folly::StringPiece constexpr kLinkLayerFlowControlWatermark() { + return "link_layer_flow_control_watermark"; +} } // namespace facebook::fboss diff --git a/fboss/agent/hw/bcm/BcmAclStat.cpp b/fboss/agent/hw/bcm/BcmAclStat.cpp index f71256e17735a..86b6dbacad5a7 100644 --- a/fboss/agent/hw/bcm/BcmAclStat.cpp +++ b/fboss/agent/hw/bcm/BcmAclStat.cpp @@ -16,10 +16,6 @@ #include "fboss/agent/hw/bcm/BcmIngressFieldProcessorFlexCounter.h" #include "fboss/agent/hw/bcm/BcmSwitch.h" #include "fboss/agent/hw/bcm/BcmWarmBootCache.h" -#include "fboss/agent/state/AclEntry.h" - -#include -#include extern "C" { #include diff --git a/fboss/agent/hw/bcm/BcmBstStatsMgr.cpp b/fboss/agent/hw/bcm/BcmBstStatsMgr.cpp index 5c8b365359261..416e58fe5faed 100644 --- a/fboss/agent/hw/bcm/BcmBstStatsMgr.cpp +++ b/fboss/agent/hw/bcm/BcmBstStatsMgr.cpp @@ -18,9 +18,7 @@ #include "fboss/agent/hw/bcm/BcmPortTable.h" #include "fboss/agent/hw/switch_asics/HwAsic.h" -extern "C" { -#include -} +extern "C" {} namespace facebook::fboss { diff --git a/fboss/agent/hw/bcm/BcmControlPlaneQueueManager.cpp b/fboss/agent/hw/bcm/BcmControlPlaneQueueManager.cpp index fb37f7acd82f0..04d3b713265a3 100644 --- a/fboss/agent/hw/bcm/BcmControlPlaneQueueManager.cpp +++ b/fboss/agent/hw/bcm/BcmControlPlaneQueueManager.cpp @@ -9,7 +9,6 @@ */ #include "fboss/agent/hw/bcm/BcmControlPlaneQueueManager.h" -#include #include #include "fboss/agent/hw/StatsConstants.h" @@ -21,7 +20,6 @@ #include "fboss/agent/hw/switch_asics/HwAsic.h" extern "C" { -#include #include } diff --git a/fboss/agent/hw/bcm/BcmCosManager.cpp b/fboss/agent/hw/bcm/BcmCosManager.cpp index 2a344ad80dfa9..cfa4371d67aa8 100644 --- a/fboss/agent/hw/bcm/BcmCosManager.cpp +++ b/fboss/agent/hw/bcm/BcmCosManager.cpp @@ -9,18 +9,13 @@ */ #include "fboss/agent/hw/bcm/BcmCosManager.h" -#include - #include "fboss/agent/hw/bcm/BcmControlPlane.h" #include "fboss/agent/hw/bcm/BcmError.h" -#include "fboss/agent/hw/bcm/BcmPlatform.h" #include "fboss/agent/hw/bcm/BcmPortTable.h" #include "fboss/agent/hw/bcm/BcmSwitch.h" extern "C" { #include -#include -#include #include #include } diff --git a/fboss/agent/hw/bcm/BcmCosManager.h b/fboss/agent/hw/bcm/BcmCosManager.h index 99455e86c722c..839372d39ad17 100644 --- a/fboss/agent/hw/bcm/BcmCosManager.h +++ b/fboss/agent/hw/bcm/BcmCosManager.h @@ -23,7 +23,7 @@ extern "C" { namespace facebook::fboss { -class PortID; +struct PortID; class BcmSwitch; class BcmCosManager { diff --git a/fboss/agent/hw/bcm/BcmCosQueueManagerUtils.cpp b/fboss/agent/hw/bcm/BcmCosQueueManagerUtils.cpp index 11944cd7e2fd2..a9daebee3c3cd 100644 --- a/fboss/agent/hw/bcm/BcmCosQueueManagerUtils.cpp +++ b/fboss/agent/hw/bcm/BcmCosQueueManagerUtils.cpp @@ -179,6 +179,14 @@ PortQueueFields getPortQueueFields( return queue; } +template +AsicT makeAsic() { + cfg::SwitchInfo switchInfo; + switchInfo.switchIndex() = 0; + switchInfo.switchType() = cfg::SwitchType::NPU; + switchInfo.switchMac() = folly::MacAddress().toString(); + return AsicT{0, switchInfo}; +} } // namespace namespace facebook::fboss::utility { @@ -220,9 +228,7 @@ bcm_cosq_stat_t getBcmCosqStatType( const PortQueue& getTD2DefaultUCPortQueueSettings() { // Since the default queue is constant, we can use static to cache this // object here. - folly::MacAddress mac; - static Trident2Asic asic{ - cfg::SwitchType::NPU, std::nullopt, 0, std::nullopt, mac}; + static const auto asic = makeAsic(); static const PortQueue kPortQueue{getPortQueueFields( kDefaultPortQueueId, kDefaultPortQueueScheduling, @@ -244,9 +250,7 @@ const PortQueue& getTD2DefaultUCPortQueueSettings() { } const PortQueue& getTHDefaultUCPortQueueSettings() { - folly::MacAddress mac; - static TomahawkAsic asic{ - cfg::SwitchType::NPU, std::nullopt, 0, std::nullopt, mac}; + static const auto asic = makeAsic(); static const PortQueue kPortQueue{getPortQueueFields( kDefaultPortQueueId, kDefaultPortQueueScheduling, @@ -268,9 +272,7 @@ const PortQueue& getTHDefaultUCPortQueueSettings() { } const PortQueue& getTH3DefaultUCPortQueueSettings() { - folly::MacAddress mac; - static Tomahawk3Asic asic{ - cfg::SwitchType::NPU, std::nullopt, 0, std::nullopt, mac}; + static const auto asic = makeAsic(); static const PortQueue kPortQueue{getPortQueueFields( kDefaultPortQueueId, kDefaultPortQueueScheduling, @@ -292,9 +294,7 @@ const PortQueue& getTH3DefaultUCPortQueueSettings() { } const PortQueue& getTH4DefaultUCPortQueueSettings() { - folly::MacAddress mac; - static Tomahawk4Asic asic{ - cfg::SwitchType::NPU, std::nullopt, 0, std::nullopt, mac}; + static const auto asic = makeAsic(); static const PortQueue kPortQueue{getPortQueueFields( kDefaultPortQueueId, kDefaultPortQueueScheduling, @@ -316,9 +316,7 @@ const PortQueue& getTH4DefaultUCPortQueueSettings() { } const PortQueue& getTD2DefaultMCPortQueueSettings() { - folly::MacAddress mac; - static Trident2Asic asic{ - cfg::SwitchType::NPU, std::nullopt, 0, std::nullopt, mac}; + static const auto asic = makeAsic(); static const PortQueue kPortQueue{getPortQueueFields( kDefaultPortQueueId, kDefaultPortQueueScheduling, @@ -340,9 +338,7 @@ const PortQueue& getTD2DefaultMCPortQueueSettings() { } const PortQueue& getTHDefaultMCPortQueueSettings() { - folly::MacAddress mac; - static TomahawkAsic asic{ - cfg::SwitchType::NPU, std::nullopt, 0, std::nullopt, mac}; + static const auto asic = makeAsic(); static const PortQueue kPortQueue{getPortQueueFields( kDefaultPortQueueId, kDefaultPortQueueScheduling, @@ -364,9 +360,7 @@ const PortQueue& getTHDefaultMCPortQueueSettings() { } const PortQueue& getTH3DefaultMCPortQueueSettings() { - folly::MacAddress mac; - static Tomahawk3Asic asic{ - cfg::SwitchType::NPU, std::nullopt, 0, std::nullopt, mac}; + static const auto asic = makeAsic(); static const PortQueue kPortQueue{getPortQueueFields( kDefaultPortQueueId, kDefaultPortQueueScheduling, @@ -388,9 +382,7 @@ const PortQueue& getTH3DefaultMCPortQueueSettings() { } const PortQueue& getTH4DefaultMCPortQueueSettings() { - folly::MacAddress mac; - static Tomahawk4Asic asic{ - cfg::SwitchType::NPU, std::nullopt, 0, std::nullopt, mac}; + static const auto asic = makeAsic(); static const PortQueue kPortQueue{getPortQueueFields( kDefaultPortQueueId, kDefaultPortQueueScheduling, @@ -447,9 +439,7 @@ const PortQueue& getDefaultPortQueueSettings( } const PortQueue& getTD2DefaultMCCPUQueueSettings() { - folly::MacAddress mac; - static Trident2Asic asic{ - cfg::SwitchType::NPU, std::nullopt, 0, std::nullopt, mac}; + static const auto asic = makeAsic(); static const PortQueue kPortQueue{getPortQueueFields( kDefaultPortQueueId, kDefaultPortQueueScheduling, @@ -471,9 +461,7 @@ const PortQueue& getTD2DefaultMCCPUQueueSettings() { } const PortQueue& getTHDefaultMCCPUQueueSettings() { - folly::MacAddress mac; - static TomahawkAsic asic{ - cfg::SwitchType::NPU, std::nullopt, 0, std::nullopt, mac}; + static const auto asic = makeAsic(); static const PortQueue kPortQueue{getPortQueueFields( kDefaultPortQueueId, kDefaultPortQueueScheduling, @@ -495,9 +483,7 @@ const PortQueue& getTHDefaultMCCPUQueueSettings() { } const PortQueue& getTH3DefaultMCCPUQueueSettings() { - folly::MacAddress mac; - static Tomahawk3Asic asic{ - cfg::SwitchType::NPU, std::nullopt, 0, std::nullopt, mac}; + static const auto asic = makeAsic(); static const PortQueue kPortQueue{getPortQueueFields( kDefaultPortQueueId, kDefaultPortQueueScheduling, @@ -519,9 +505,7 @@ const PortQueue& getTH3DefaultMCCPUQueueSettings() { } const PortQueue& getTH4DefaultMCCPUQueueSettings() { - folly::MacAddress mac; - static Tomahawk4Asic asic{ - cfg::SwitchType::NPU, std::nullopt, 0, std::nullopt, mac}; + static const auto asic = makeAsic(); static const PortQueue kPortQueue{getPortQueueFields( kDefaultPortQueueId, kDefaultPortQueueScheduling, diff --git a/fboss/agent/hw/bcm/BcmEgress.cpp b/fboss/agent/hw/bcm/BcmEgress.cpp index 6f89b560f938f..8d65812951d19 100644 --- a/fboss/agent/hw/bcm/BcmEgress.cpp +++ b/fboss/agent/hw/bcm/BcmEgress.cpp @@ -9,8 +9,6 @@ */ #include "fboss/agent/hw/bcm/BcmEgress.h" -#include "fboss/agent/Constants.h" -#include "fboss/agent/Utils.h" #include "fboss/agent/hw/bcm/BcmEcmpUtils.h" #include "fboss/agent/hw/bcm/BcmEgressManager.h" #include "fboss/agent/hw/bcm/BcmError.h" diff --git a/fboss/agent/hw/bcm/BcmEgressQueueFlexCounter.cpp b/fboss/agent/hw/bcm/BcmEgressQueueFlexCounter.cpp index bc32483b18ae2..bd7b8b0e652c0 100644 --- a/fboss/agent/hw/bcm/BcmEgressQueueFlexCounter.cpp +++ b/fboss/agent/hw/bcm/BcmEgressQueueFlexCounter.cpp @@ -12,7 +12,6 @@ #include "fboss/agent/hw/bcm/BcmCosQueueCounterType.h" #include "fboss/agent/hw/bcm/BcmCosQueueManagerUtils.h" #include "fboss/agent/hw/bcm/BcmError.h" -#include "fboss/agent/hw/bcm/BcmSdkVer.h" #include "fboss/agent/hw/bcm/BcmSwitch.h" #include "fboss/agent/hw/switch_asics/HwAsic.h" diff --git a/fboss/agent/hw/bcm/BcmFlexCounter.cpp b/fboss/agent/hw/bcm/BcmFlexCounter.cpp index 0c8d4df1b9078..081b60bbac2c2 100644 --- a/fboss/agent/hw/bcm/BcmFlexCounter.cpp +++ b/fboss/agent/hw/bcm/BcmFlexCounter.cpp @@ -10,7 +10,6 @@ #include "fboss/agent/hw/bcm/BcmFlexCounter.h" #include "fboss/agent/hw/bcm/BcmError.h" -#include "fboss/agent/hw/bcm/BcmSdkVer.h" extern "C" { #include diff --git a/fboss/agent/hw/bcm/BcmHost.cpp b/fboss/agent/hw/bcm/BcmHost.cpp index 47d9e5b6e6891..770fd55947740 100644 --- a/fboss/agent/hw/bcm/BcmHost.cpp +++ b/fboss/agent/hw/bcm/BcmHost.cpp @@ -13,15 +13,12 @@ #include #include -#include "fboss/agent/Constants.h" #include "fboss/agent/hw/bcm/BcmAclEntry.h" #include "fboss/agent/hw/bcm/BcmClassIDUtil.h" #include "fboss/agent/hw/bcm/BcmEgress.h" #include "fboss/agent/hw/bcm/BcmEgressManager.h" #include "fboss/agent/hw/bcm/BcmError.h" -#include "fboss/agent/hw/bcm/BcmIntf.h" #include "fboss/agent/hw/bcm/BcmMultiPathNextHop.h" -#include "fboss/agent/hw/bcm/BcmNextHop.h" #include "fboss/agent/hw/bcm/BcmPort.h" #include "fboss/agent/hw/bcm/BcmPortTable.h" #include "fboss/agent/hw/bcm/BcmRoute.h" @@ -29,7 +26,6 @@ #include "fboss/agent/hw/bcm/BcmTrunkTable.h" #include "fboss/agent/hw/bcm/BcmWarmBootCache.h" #include "fboss/agent/hw/switch_asics/HwAsic.h" -#include "fboss/agent/state/Interface.h" extern "C" { #include diff --git a/fboss/agent/hw/bcm/BcmIngressFieldProcessorFlexCounter.cpp b/fboss/agent/hw/bcm/BcmIngressFieldProcessorFlexCounter.cpp index 4f1971269adee..ca62466eec140 100644 --- a/fboss/agent/hw/bcm/BcmIngressFieldProcessorFlexCounter.cpp +++ b/fboss/agent/hw/bcm/BcmIngressFieldProcessorFlexCounter.cpp @@ -11,7 +11,6 @@ #include #include "fboss/agent/hw/bcm/BcmError.h" -#include "fboss/agent/hw/bcm/BcmSdkVer.h" extern "C" { #include diff --git a/fboss/agent/hw/bcm/BcmLabeledTunnel.cpp b/fboss/agent/hw/bcm/BcmLabeledTunnel.cpp index 904e4b74591a8..65c47b7396584 100644 --- a/fboss/agent/hw/bcm/BcmLabeledTunnel.cpp +++ b/fboss/agent/hw/bcm/BcmLabeledTunnel.cpp @@ -4,7 +4,6 @@ #include "fboss/agent/hw/bcm/BcmError.h" #include "fboss/agent/hw/bcm/BcmHost.h" -#include "fboss/agent/hw/bcm/BcmHostKey.h" #include "fboss/agent/hw/bcm/BcmIntf.h" #include "fboss/agent/hw/bcm/BcmQosPolicyTable.h" #include "fboss/agent/hw/bcm/BcmSwitch.h" diff --git a/fboss/agent/hw/bcm/BcmMirror.cpp b/fboss/agent/hw/bcm/BcmMirror.cpp index 242544b18390e..6921de25f3b0c 100644 --- a/fboss/agent/hw/bcm/BcmMirror.cpp +++ b/fboss/agent/hw/bcm/BcmMirror.cpp @@ -13,8 +13,6 @@ #include "fboss/agent/hw/switch_asics/HwAsic.h" #include "fboss/agent/state/Mirror.h" -#include - #include #include #include diff --git a/fboss/agent/hw/bcm/BcmPlatform.cpp b/fboss/agent/hw/bcm/BcmPlatform.cpp index 0faab35cf049d..34de0c2992105 100644 --- a/fboss/agent/hw/bcm/BcmPlatform.cpp +++ b/fboss/agent/hw/bcm/BcmPlatform.cpp @@ -15,7 +15,6 @@ #include "fboss/agent/SysError.h" #include "fboss/agent/hw/bcm/BcmAPI.h" -#include "fboss/agent/hw/bcm/BcmConfig.h" #include "fboss/agent/hw/switch_asics/HwAsic.h" DEFINE_bool( diff --git a/fboss/agent/hw/bcm/BcmPortTable.cpp b/fboss/agent/hw/bcm/BcmPortTable.cpp index 40711a0f1bf2f..253e88f38b66a 100644 --- a/fboss/agent/hw/bcm/BcmPortTable.cpp +++ b/fboss/agent/hw/bcm/BcmPortTable.cpp @@ -9,7 +9,6 @@ */ #include "fboss/agent/hw/bcm/BcmPortTable.h" -#include "common/stats/MonotonicCounter.h" #include "fboss/agent/AgentConfig.h" #include "fboss/agent/hw/bcm/BcmError.h" #include "fboss/agent/hw/bcm/BcmPlatform.h" diff --git a/fboss/agent/hw/bcm/BcmPortUtils.cpp b/fboss/agent/hw/bcm/BcmPortUtils.cpp index f671e8c91315b..38af5f587f194 100644 --- a/fboss/agent/hw/bcm/BcmPortUtils.cpp +++ b/fboss/agent/hw/bcm/BcmPortUtils.cpp @@ -12,7 +12,6 @@ #include "fboss/agent/FbossError.h" #include "fboss/agent/hw/bcm/BcmError.h" -#include "fboss/agent/platforms/common/PlatformMapping.h" #include #include diff --git a/fboss/agent/hw/bcm/BcmPtpTcMgr.cpp b/fboss/agent/hw/bcm/BcmPtpTcMgr.cpp index 64d7e879dfd97..c73cece238c7b 100644 --- a/fboss/agent/hw/bcm/BcmPtpTcMgr.cpp +++ b/fboss/agent/hw/bcm/BcmPtpTcMgr.cpp @@ -15,7 +15,6 @@ #include "fboss/agent/hw/bcm/BcmFieldProcessorUtils.h" #include "fboss/agent/hw/bcm/BcmPlatform.h" #include "fboss/agent/hw/bcm/BcmPortTable.h" -#include "fboss/agent/state/SwitchState.h" extern "C" { #include diff --git a/fboss/agent/hw/bcm/BcmQosMap.cpp b/fboss/agent/hw/bcm/BcmQosMap.cpp index d316f76aabdd5..f9fe6ae48786b 100644 --- a/fboss/agent/hw/bcm/BcmQosMap.cpp +++ b/fboss/agent/hw/bcm/BcmQosMap.cpp @@ -13,9 +13,7 @@ #include "fboss/agent/hw/bcm/BcmError.h" #include "fboss/agent/hw/bcm/BcmPortQueueManager.h" #include "fboss/agent/hw/bcm/BcmQosMapEntry.h" -#include "fboss/agent/hw/bcm/BcmQosPolicy.h" #include "fboss/agent/hw/bcm/BcmSwitch.h" -#include "fboss/agent/state/QosPolicy.h" extern "C" { #include diff --git a/fboss/agent/hw/bcm/BcmQosMapEntry.cpp b/fboss/agent/hw/bcm/BcmQosMapEntry.cpp index 6171709f9de96..f6f7b2b465960 100644 --- a/fboss/agent/hw/bcm/BcmQosMapEntry.cpp +++ b/fboss/agent/hw/bcm/BcmQosMapEntry.cpp @@ -11,11 +11,8 @@ #include "fboss/agent/FbossError.h" #include "fboss/agent/hw/bcm/BcmQosMap.h" -#include "fboss/agent/hw/bcm/BcmQosPolicy.h" #include "fboss/agent/hw/bcm/BcmError.h" -#include "fboss/agent/hw/bcm/BcmPortQueueManager.h" -#include "fboss/agent/hw/bcm/BcmSwitch.h" namespace facebook::fboss { diff --git a/fboss/agent/hw/bcm/BcmQosPolicyTable.cpp b/fboss/agent/hw/bcm/BcmQosPolicyTable.cpp index f397a68fb5f8e..19e1fcd517281 100644 --- a/fboss/agent/hw/bcm/BcmQosPolicyTable.cpp +++ b/fboss/agent/hw/bcm/BcmQosPolicyTable.cpp @@ -13,7 +13,6 @@ #include "fboss/agent/hw/bcm/BcmPortQueueManager.h" #include "fboss/agent/hw/bcm/BcmQosPolicy.h" #include "fboss/agent/hw/bcm/BcmSwitch.h" -#include "fboss/agent/hw/bcm/types.h" namespace facebook::fboss { diff --git a/fboss/agent/hw/bcm/BcmRoute.cpp b/fboss/agent/hw/bcm/BcmRoute.cpp index 41c523ea7ab32..aa20ca7d3542e 100644 --- a/fboss/agent/hw/bcm/BcmRoute.cpp +++ b/fboss/agent/hw/bcm/BcmRoute.cpp @@ -17,7 +17,6 @@ extern "C" { #include #include #include -#include "fboss/agent/Constants.h" #include "fboss/agent/hw/bcm/BcmError.h" #include "fboss/agent/hw/bcm/BcmIntf.h" #include "fboss/agent/hw/bcm/BcmMultiPathNextHop.h" diff --git a/fboss/agent/hw/bcm/BcmRouteCounter.cpp b/fboss/agent/hw/bcm/BcmRouteCounter.cpp index 5cc8733c80c14..2ba2a7064f351 100644 --- a/fboss/agent/hw/bcm/BcmRouteCounter.cpp +++ b/fboss/agent/hw/bcm/BcmRouteCounter.cpp @@ -13,7 +13,6 @@ extern "C" { } #include -#include "fboss/agent/Constants.h" #include "fboss/agent/hw/bcm/BcmError.h" #include "fboss/agent/hw/bcm/BcmPlatform.h" #include "fboss/agent/hw/bcm/BcmRouteCounter.h" diff --git a/fboss/agent/hw/bcm/BcmStatUpdater.cpp b/fboss/agent/hw/bcm/BcmStatUpdater.cpp index 1d1cf134f5c53..b5c6c67028435 100644 --- a/fboss/agent/hw/bcm/BcmStatUpdater.cpp +++ b/fboss/agent/hw/bcm/BcmStatUpdater.cpp @@ -23,8 +23,6 @@ #include "fboss/lib/config/PlatformConfigUtils.h" -#include - #include extern "C" { diff --git a/fboss/agent/hw/bcm/BcmTableStats.cpp b/fboss/agent/hw/bcm/BcmTableStats.cpp index 25bf4435b38c3..ea137a1d457fd 100644 --- a/fboss/agent/hw/bcm/BcmTableStats.cpp +++ b/fboss/agent/hw/bcm/BcmTableStats.cpp @@ -16,7 +16,6 @@ #include "fboss/agent/hw/bcm/BcmSwitch.h" #include "fboss/agent/hw/switch_asics/HwAsic.h" -#include #include #include #include "fboss/agent/hw/gen-cpp2/hardware_stats_constants.h" diff --git a/fboss/agent/hw/bcm/BcmTeFlowEntry.cpp b/fboss/agent/hw/bcm/BcmTeFlowEntry.cpp index dde34756f2363..73b3923fb21af 100644 --- a/fboss/agent/hw/bcm/BcmTeFlowEntry.cpp +++ b/fboss/agent/hw/bcm/BcmTeFlowEntry.cpp @@ -14,7 +14,6 @@ #include "fboss/agent/hw/bcm/BcmExactMatchUtils.h" #include "fboss/agent/hw/bcm/BcmFieldProcessorUtils.h" #include "fboss/agent/hw/bcm/BcmMultiPathNextHop.h" -#include "fboss/agent/hw/bcm/BcmPlatform.h" #include "fboss/agent/hw/bcm/BcmSwitch.h" #include "fboss/agent/hw/bcm/BcmTeFlowTable.h" #include "fboss/agent/hw/bcm/BcmWarmBootCache.h" diff --git a/fboss/agent/hw/bcm/BcmTrunkStats.cpp b/fboss/agent/hw/bcm/BcmTrunkStats.cpp index e73cc41726213..dae23cbdad023 100644 --- a/fboss/agent/hw/bcm/BcmTrunkStats.cpp +++ b/fboss/agent/hw/bcm/BcmTrunkStats.cpp @@ -11,7 +11,6 @@ #include "fboss/agent/hw/CounterUtils.h" #include "fboss/agent/hw/HwTrunkCounters.h" -#include "fboss/agent/hw/StatsConstants.h" #include "fboss/agent/hw/bcm/BcmPortTable.h" #include "fboss/agent/hw/bcm/BcmSwitch.h" diff --git a/fboss/agent/hw/bcm/BcmUdfGroup.cpp b/fboss/agent/hw/bcm/BcmUdfGroup.cpp index ea3ad1621568f..7d1b21144730d 100644 --- a/fboss/agent/hw/bcm/BcmUdfGroup.cpp +++ b/fboss/agent/hw/bcm/BcmUdfGroup.cpp @@ -12,7 +12,6 @@ #include "fboss/agent/hw/bcm/BcmFieldProcessorUtils.h" #include "fboss/agent/hw/bcm/BcmSwitch.h" #include "fboss/agent/hw/bcm/BcmWarmBootCache.h" -#include "fboss/agent/hw/switch_asics/HwAsic.h" namespace facebook::fboss { diff --git a/fboss/agent/hw/bcm/BcmWarmBootCache.cpp b/fboss/agent/hw/bcm/BcmWarmBootCache.cpp index 0ba432d3c46b2..b53b36a8e4180 100644 --- a/fboss/agent/hw/bcm/BcmWarmBootCache.cpp +++ b/fboss/agent/hw/bcm/BcmWarmBootCache.cpp @@ -16,7 +16,6 @@ #include #include -#include #include #include @@ -32,12 +31,9 @@ #include "fboss/agent/hw/bcm/BcmError.h" #include "fboss/agent/hw/bcm/BcmExactMatchUtils.h" #include "fboss/agent/hw/bcm/BcmFieldProcessorFBConvertors.h" -#include "fboss/agent/hw/bcm/BcmFieldProcessorUtils.h" #include "fboss/agent/hw/bcm/BcmHost.h" -#include "fboss/agent/hw/bcm/BcmMirrorTable.h" #include "fboss/agent/hw/bcm/BcmMirrorUtils.h" #include "fboss/agent/hw/bcm/BcmPlatform.h" -#include "fboss/agent/hw/bcm/BcmPortQueueManager.h" #include "fboss/agent/hw/bcm/BcmPtpTcMgr.h" #include "fboss/agent/hw/bcm/BcmQosMap.h" #include "fboss/agent/hw/bcm/BcmQosUtils.h" @@ -46,22 +42,16 @@ #include "fboss/agent/hw/bcm/BcmTrunkTable.h" #include "fboss/agent/hw/bcm/BcmTypes.h" #include "fboss/agent/hw/bcm/BcmUdfManager.h" -#include "fboss/agent/hw/bcm/BcmWarmBootHelper.h" #include "fboss/agent/hw/switch_asics/HwAsic.h" #include "fboss/agent/state/ArpTable.h" #include "fboss/agent/state/Interface.h" -#include "fboss/agent/state/InterfaceMap.h" -#include "fboss/agent/state/LoadBalancer.h" -#include "fboss/agent/state/LoadBalancerMap.h" #include "fboss/agent/state/Mirror.h" -#include "fboss/agent/state/MirrorMap.h" #include "fboss/agent/state/NdpTable.h" #include "fboss/agent/state/NeighborEntry.h" #include "fboss/agent/state/Port.h" #include "fboss/agent/state/PortDescriptor.h" #include "fboss/agent/state/SwitchState.h" #include "fboss/agent/state/Vlan.h" -#include "fboss/agent/state/VlanMap.h" extern "C" { #include diff --git a/fboss/agent/hw/bcm/PacketTraceUtils.cpp b/fboss/agent/hw/bcm/PacketTraceUtils.cpp index 2ea992472ccb8..0728bea1312d0 100644 --- a/fboss/agent/hw/bcm/PacketTraceUtils.cpp +++ b/fboss/agent/hw/bcm/PacketTraceUtils.cpp @@ -9,11 +9,9 @@ #include "fboss/agent/hw/bcm/BcmPortTable.h" #include "fboss/agent/hw/bcm/BcmSwitch.h" #include "fboss/agent/hw/bcm/gen-cpp2/packettrace_types.h" -#include "fboss/agent/state/Interface.h" extern "C" { #include -#include } namespace { diff --git a/fboss/agent/hw/bcm/tests/BUCK b/fboss/agent/hw/bcm/tests/BUCK index ebc160a2040c3..ebc5552be9e3c 100644 --- a/fboss/agent/hw/bcm/tests/BUCK +++ b/fboss/agent/hw/bcm/tests/BUCK @@ -24,10 +24,8 @@ cpp_library( "//common/fb303/cpp:fb303", "//fboss/agent:fboss-error", "//fboss/agent/hw/bcm:bcm", - "//fboss/agent/hw/bcm:bcm_sdk_ver", "//fboss/agent/hw/bcm/tests/facebook:if-cpp2-services", "//folly:string", - "//folly/logging:logging", "//thrift/lib/cpp/server:server_event_handler", ], ) @@ -64,7 +62,6 @@ cpp_library( "//fboss/agent/hw/test:config_factory", "//fboss/agent/hw/test:hw_switch_ensemble_factory", "//fboss/agent/platforms/tests/utils:bcm_test_platforms", - "//fboss/agent/state:state", "//fboss/agent/test:linkstate_toggler", "//fboss/agent/test:test_ensemble_if", "//folly/logging:logging", @@ -82,7 +79,6 @@ cpp_library( exported_deps = [ ":bcm_switch_ensemble", "//fboss/agent/hw/bcm:bcm", - "//fboss/agent/state:state", "//fboss/agent/test:linkstate_toggler", "//fboss/agent/test:test_ensemble_if", ], @@ -207,9 +203,6 @@ cpp_library( ], link_whole = True, exported_deps = [ - "//fboss/agent:fboss-error", - "//fboss/agent:lacp_types", - "//fboss/agent:switch_config-cpp2-types", "//fboss/agent/hw/bcm:bcm", "//fboss/agent/hw/test:hw_copp_utils", ], @@ -249,7 +242,6 @@ cpp_unittest( "BcmAddressFBConvertorsTests.cpp", ], deps = [ - ":bcm_unittest_utils", "//fboss/agent/hw/bcm:bcmaddress_fb_convertors", "//folly:network_address", "//folly:range", @@ -484,7 +476,6 @@ cpp_unittest( "BcmCosQueueFBConvertorsTests.cpp", ], deps = [ - ":bcm_unittest_utils", "//fboss/agent:fboss-error", "//fboss/agent/hw/bcm:bcm_cosqueue_fb_convertors", ], @@ -517,7 +508,6 @@ cpp_unittest( "BcmLabelSwitchingUtilsTests.cpp", ], deps = [ - ":bcm_unittest_utils", "//fboss/agent/hw/bcm:bcm_mpls_utils", ], ) @@ -528,7 +518,6 @@ cpp_unittest( "BcmFieldProcessorFBConvertorsTests.cpp", ], deps = [ - ":bcm_unittest_utils", "//fboss/agent:fboss-error", "//fboss/agent/hw/bcm:bcm_fieldprocessor_fb_convertors", ], @@ -543,9 +532,6 @@ cpp_unittest( srcs = [ "GPort.cpp", ], - deps = [ - ":bcm_unittest_utils", - ], external_deps = [ "glog", ("broadcom-xgs-robo", None, "xgs_robo"), diff --git a/fboss/agent/hw/bcm/tests/BcmAclCoppTests.cpp b/fboss/agent/hw/bcm/tests/BcmAclCoppTests.cpp index 0137114744814..973a8d8904fc4 100644 --- a/fboss/agent/hw/bcm/tests/BcmAclCoppTests.cpp +++ b/fboss/agent/hw/bcm/tests/BcmAclCoppTests.cpp @@ -16,7 +16,6 @@ #include "fboss/agent/hw/bcm/BcmFieldProcessorUtils.h" #include "fboss/agent/hw/bcm/BcmSwitch.h" #include "fboss/agent/hw/test/HwTestCoppUtils.h" -#include "fboss/agent/state/StateDelta.h" #include "fboss/agent/state/SwitchState.h" #include "fboss/agent/hw/test/ConfigFactory.h" diff --git a/fboss/agent/hw/bcm/tests/BcmAclNexthopTests.cpp b/fboss/agent/hw/bcm/tests/BcmAclNexthopTests.cpp index e28355b7a75b2..571da4fa40bc7 100644 --- a/fboss/agent/hw/bcm/tests/BcmAclNexthopTests.cpp +++ b/fboss/agent/hw/bcm/tests/BcmAclNexthopTests.cpp @@ -19,7 +19,6 @@ #include "fboss/agent/hw/bcm/tests/BcmTest.h" #include "fboss/agent/hw/bcm/tests/BcmTestUtils.h" #include "fboss/agent/hw/test/ConfigFactory.h" -#include "fboss/agent/state/StateDelta.h" #include "fboss/agent/state/SwitchState.h" extern "C" { diff --git a/fboss/agent/hw/bcm/tests/BcmAclUnitTests.cpp b/fboss/agent/hw/bcm/tests/BcmAclUnitTests.cpp index 6f51f77407e79..ab4d7cc8b4407 100644 --- a/fboss/agent/hw/bcm/tests/BcmAclUnitTests.cpp +++ b/fboss/agent/hw/bcm/tests/BcmAclUnitTests.cpp @@ -14,7 +14,6 @@ #include "fboss/agent/hw/bcm/BcmAddressFBConvertors.h" #include "fboss/agent/hw/bcm/BcmError.h" #include "fboss/agent/hw/bcm/BcmFieldProcessorUtils.h" -#include "fboss/agent/types.h" using facebook::fboss::utility::isBcmQualFieldStateSame; using facebook::fboss::utility::isBcmQualFieldWithMaskStateSame; diff --git a/fboss/agent/hw/bcm/tests/BcmAddDelEcmpTests.cpp b/fboss/agent/hw/bcm/tests/BcmAddDelEcmpTests.cpp index 145941c6f1327..a208ed7ec0b0e 100644 --- a/fboss/agent/hw/bcm/tests/BcmAddDelEcmpTests.cpp +++ b/fboss/agent/hw/bcm/tests/BcmAddDelEcmpTests.cpp @@ -21,9 +21,7 @@ #include "fboss/agent/test/ResourceLibUtil.h" #include -extern "C" { -#include -} +extern "C" {} using folly::CIDRNetwork; using folly::IPAddress; diff --git a/fboss/agent/hw/bcm/tests/BcmAddressFBConvertorsTests.cpp b/fboss/agent/hw/bcm/tests/BcmAddressFBConvertorsTests.cpp index 133943f54deac..9d26da7900a30 100644 --- a/fboss/agent/hw/bcm/tests/BcmAddressFBConvertorsTests.cpp +++ b/fboss/agent/hw/bcm/tests/BcmAddressFBConvertorsTests.cpp @@ -9,7 +9,6 @@ */ #include "fboss/agent/hw/bcm/BcmAddressFBConvertors.h" -#include "fboss/agent/hw/bcm/tests/BcmUnitTestUtils.h" #include #include diff --git a/fboss/agent/hw/bcm/tests/BcmCosQueueFBConvertorsTests.cpp b/fboss/agent/hw/bcm/tests/BcmCosQueueFBConvertorsTests.cpp index bbe0daff7814d..a136b27999838 100644 --- a/fboss/agent/hw/bcm/tests/BcmCosQueueFBConvertorsTests.cpp +++ b/fboss/agent/hw/bcm/tests/BcmCosQueueFBConvertorsTests.cpp @@ -13,7 +13,6 @@ #include "fboss/agent/FbossError.h" #include "fboss/agent/hw/bcm/BcmCosQueueFBConvertors.h" -#include "fboss/agent/hw/bcm/tests/BcmUnitTestUtils.h" // Need to define bde in a single cpp_unittest extern "C" { diff --git a/fboss/agent/hw/bcm/tests/BcmCosQueueManagerTest.cpp b/fboss/agent/hw/bcm/tests/BcmCosQueueManagerTest.cpp index 293bab4215c1b..896668b027c4d 100644 --- a/fboss/agent/hw/bcm/tests/BcmCosQueueManagerTest.cpp +++ b/fboss/agent/hw/bcm/tests/BcmCosQueueManagerTest.cpp @@ -11,8 +11,6 @@ #include "fboss/agent/hw/bcm/tests/BcmCosQueueManagerTest.h" -#include "fboss/agent/platforms/tests/utils/BcmTestPlatform.h" - #include using namespace facebook::fboss; diff --git a/fboss/agent/hw/bcm/tests/BcmDeathTests.cpp b/fboss/agent/hw/bcm/tests/BcmDeathTests.cpp index 1c94f01b49166..3538eb3ddfeaf 100644 --- a/fboss/agent/hw/bcm/tests/BcmDeathTests.cpp +++ b/fboss/agent/hw/bcm/tests/BcmDeathTests.cpp @@ -8,9 +8,7 @@ #include "fboss/agent/hw/test/ConfigFactory.h" -extern "C" { -#include -} +extern "C" {} namespace facebook::fboss { diff --git a/fboss/agent/hw/bcm/tests/BcmEcmpTests.cpp b/fboss/agent/hw/bcm/tests/BcmEcmpTests.cpp index 9346ba4996f0f..00c0874443b0d 100644 --- a/fboss/agent/hw/bcm/tests/BcmEcmpTests.cpp +++ b/fboss/agent/hw/bcm/tests/BcmEcmpTests.cpp @@ -20,7 +20,6 @@ #include "fboss/agent/hw/bcm/BcmRoute.h" #include "fboss/agent/hw/bcm/BcmSwitch.h" #include "fboss/agent/hw/bcm/BcmTrunkTable.h" -#include "fboss/agent/platforms/tests/utils/BcmTestPlatform.h" #include "fboss/agent/test/EcmpSetupHelper.h" #include "fboss/agent/hw/test/ConfigFactory.h" @@ -31,12 +30,10 @@ #include #include -#include #include extern "C" { #include -#include } DECLARE_uint32(ecmp_width); diff --git a/fboss/agent/hw/bcm/tests/BcmEmptyEcmpTests.cpp b/fboss/agent/hw/bcm/tests/BcmEmptyEcmpTests.cpp index e9727f735882f..ee954aeec6ee2 100644 --- a/fboss/agent/hw/bcm/tests/BcmEmptyEcmpTests.cpp +++ b/fboss/agent/hw/bcm/tests/BcmEmptyEcmpTests.cpp @@ -17,9 +17,7 @@ #include "fboss/agent/state/SwitchState.h" #include -extern "C" { -#include -} +extern "C" {} using folly::IPAddressV4; using folly::IPAddressV6; diff --git a/fboss/agent/hw/bcm/tests/BcmFieldProcessorFBConvertorsTests.cpp b/fboss/agent/hw/bcm/tests/BcmFieldProcessorFBConvertorsTests.cpp index c06db66aa9776..7e35520543167 100644 --- a/fboss/agent/hw/bcm/tests/BcmFieldProcessorFBConvertorsTests.cpp +++ b/fboss/agent/hw/bcm/tests/BcmFieldProcessorFBConvertorsTests.cpp @@ -15,7 +15,6 @@ #include "fboss/agent/FbossError.h" #include "fboss/agent/hw/bcm/BcmFieldProcessorFBConvertors.h" -#include "fboss/agent/hw/bcm/tests/BcmUnitTestUtils.h" extern "C" { #include diff --git a/fboss/agent/hw/bcm/tests/BcmInterfaceTests.cpp b/fboss/agent/hw/bcm/tests/BcmInterfaceTests.cpp index 094ce2f0567e8..60fb744ab839f 100644 --- a/fboss/agent/hw/bcm/tests/BcmInterfaceTests.cpp +++ b/fboss/agent/hw/bcm/tests/BcmInterfaceTests.cpp @@ -17,12 +17,8 @@ #include "fboss/agent/hw/bcm/BcmError.h" #include "fboss/agent/hw/bcm/BcmIntf.h" #include "fboss/agent/hw/bcm/BcmSwitch.h" -#include "fboss/agent/platforms/tests/utils/BcmTestPlatform.h" #include "fboss/agent/state/Interface.h" -#include "fboss/agent/state/StateDelta.h" #include "fboss/agent/state/SwitchState.h" -#include "fboss/agent/state/Vlan.h" -#include "fboss/agent/state/VlanMap.h" #include "fboss/agent/hw/test/ConfigFactory.h" diff --git a/fboss/agent/hw/bcm/tests/BcmLabelSwitchingUtilsTests.cpp b/fboss/agent/hw/bcm/tests/BcmLabelSwitchingUtilsTests.cpp index a031233ae5d2b..d8b0776d3a004 100644 --- a/fboss/agent/hw/bcm/tests/BcmLabelSwitchingUtilsTests.cpp +++ b/fboss/agent/hw/bcm/tests/BcmLabelSwitchingUtilsTests.cpp @@ -3,7 +3,6 @@ #include #include "fboss/agent/hw/bcm/BcmLabelSwitchingUtils.h" -#include "fboss/agent/hw/bcm/tests/BcmUnitTestUtils.h" // need to define bde in a cpp_unittest for linking with sdk library extern "C" { diff --git a/fboss/agent/hw/bcm/tests/BcmLabeledEgressTest.cpp b/fboss/agent/hw/bcm/tests/BcmLabeledEgressTest.cpp index 414a814ee17ec..7248a3b4bed02 100644 --- a/fboss/agent/hw/bcm/tests/BcmLabeledEgressTest.cpp +++ b/fboss/agent/hw/bcm/tests/BcmLabeledEgressTest.cpp @@ -6,7 +6,6 @@ #include "fboss/agent/hw/bcm/BcmEgressManager.h" #include "fboss/agent/hw/bcm/BcmHost.h" #include "fboss/agent/hw/bcm/BcmIntf.h" -#include "fboss/agent/hw/bcm/BcmLabeledTunnel.h" #include "fboss/agent/hw/bcm/BcmLabeledTunnelEgress.h" #include "fboss/agent/hw/bcm/BcmPortTable.h" #include "fboss/agent/hw/bcm/tests/BcmTest.h" diff --git a/fboss/agent/hw/bcm/tests/BcmLinkStateDependentTests.cpp b/fboss/agent/hw/bcm/tests/BcmLinkStateDependentTests.cpp index 847177eab4f62..03814ed0d8b5a 100644 --- a/fboss/agent/hw/bcm/tests/BcmLinkStateDependentTests.cpp +++ b/fboss/agent/hw/bcm/tests/BcmLinkStateDependentTests.cpp @@ -11,7 +11,6 @@ #include "fboss/agent/gen-cpp2/switch_config_types.h" #include "fboss/agent/hw/test/HwSwitchEnsemble.h" -#include "fboss/agent/state/Port.h" namespace facebook::fboss { diff --git a/fboss/agent/hw/bcm/tests/BcmLinkStateToggler.cpp b/fboss/agent/hw/bcm/tests/BcmLinkStateToggler.cpp index 50979a6460905..9a2925298e6a1 100644 --- a/fboss/agent/hw/bcm/tests/BcmLinkStateToggler.cpp +++ b/fboss/agent/hw/bcm/tests/BcmLinkStateToggler.cpp @@ -15,7 +15,6 @@ #include "fboss/agent/hw/bcm/BcmPortTable.h" #include "fboss/agent/hw/bcm/BcmSwitch.h" #include "fboss/agent/hw/bcm/tests/BcmSwitchEnsemble.h" -#include "fboss/agent/state/Port.h" #include "fboss/agent/test/TestEnsembleIf.h" #include diff --git a/fboss/agent/hw/bcm/tests/BcmPortUtils.cpp b/fboss/agent/hw/bcm/tests/BcmPortUtils.cpp index 96a453ee3916f..99014e9ffc3f7 100644 --- a/fboss/agent/hw/bcm/tests/BcmPortUtils.cpp +++ b/fboss/agent/hw/bcm/tests/BcmPortUtils.cpp @@ -19,7 +19,6 @@ #include "fboss/agent/hw/bcm/tests/BcmSwitchEnsemble.h" #include "fboss/agent/hw/test/HwSwitchEnsemble.h" -#include "fboss/lib/platforms/PlatformMode.h" extern "C" { #include diff --git a/fboss/agent/hw/bcm/tests/BcmQosMapTests.cpp b/fboss/agent/hw/bcm/tests/BcmQosMapTests.cpp index 3a75798599414..9bd868527447f 100644 --- a/fboss/agent/hw/bcm/tests/BcmQosMapTests.cpp +++ b/fboss/agent/hw/bcm/tests/BcmQosMapTests.cpp @@ -9,7 +9,6 @@ */ #include "fboss/agent/hw/bcm/BcmQosPolicy.h" #include "fboss/agent/hw/bcm/tests/BcmTest.h" -#include "fboss/agent/platforms/tests/utils/BcmTestPlatform.h" #include "fboss/agent/ApplyThriftConfig.h" #include "fboss/agent/hw/bcm/BcmError.h" @@ -19,7 +18,6 @@ extern "C" { #include -#include #include } diff --git a/fboss/agent/hw/bcm/tests/BcmQosPolicyTests.cpp b/fboss/agent/hw/bcm/tests/BcmQosPolicyTests.cpp index 3a8515a26f089..8548bff828820 100644 --- a/fboss/agent/hw/bcm/tests/BcmQosPolicyTests.cpp +++ b/fboss/agent/hw/bcm/tests/BcmQosPolicyTests.cpp @@ -18,16 +18,12 @@ #include "fboss/agent/hw/bcm/BcmQosPolicyTable.h" #include "fboss/agent/hw/bcm/BcmQosUtils.h" #include "fboss/agent/hw/bcm/BcmSwitch.h" -#include "fboss/agent/platforms/tests/utils/BcmTestPlatform.h" -#include "fboss/agent/state/StateDelta.h" #include "fboss/agent/state/SwitchState.h" #include "fboss/agent/test/utils/TrafficPolicyTestUtils.h" #include "fboss/agent/hw/test/ConfigFactory.h" extern "C" { -#include -#include #include } diff --git a/fboss/agent/hw/bcm/tests/BcmRouteTests.cpp b/fboss/agent/hw/bcm/tests/BcmRouteTests.cpp index 25641b92e02af..64deebf418699 100644 --- a/fboss/agent/hw/bcm/tests/BcmRouteTests.cpp +++ b/fboss/agent/hw/bcm/tests/BcmRouteTests.cpp @@ -27,7 +27,6 @@ #include "fboss/agent/platforms/tests/utils/BcmTestPlatform.h" #include "fboss/agent/state/Interface.h" #include "fboss/agent/state/Route.h" -#include "fboss/agent/state/StateDelta.h" #include "fboss/agent/state/SwitchState.h" #include "fboss/agent/state/Vlan.h" #include "fboss/agent/state/VlanMap.h" diff --git a/fboss/agent/hw/bcm/tests/BcmTrunkTests.cpp b/fboss/agent/hw/bcm/tests/BcmTrunkTests.cpp index 12c5174c0841e..b4db887d34d42 100644 --- a/fboss/agent/hw/bcm/tests/BcmTrunkTests.cpp +++ b/fboss/agent/hw/bcm/tests/BcmTrunkTests.cpp @@ -10,11 +10,6 @@ #include "fboss/agent/hw/bcm/tests/BcmTest.h" #include "fboss/agent/ApplyThriftConfig.h" -#include "fboss/agent/packet/Ethertype.h" -#include "fboss/agent/state/AggregatePort.h" -#include "fboss/agent/state/Port.h" -#include "fboss/agent/state/PortMap.h" -#include "fboss/agent/state/StateDelta.h" #include "fboss/agent/state/SwitchState.h" #include "fboss/agent/test/TrunkUtils.h" @@ -22,25 +17,17 @@ #include "fboss/agent/hw/bcm/BcmError.h" #include "fboss/agent/hw/bcm/BcmTrunkTable.h" #include "fboss/agent/hw/bcm/tests/BcmLinkStateDependentTests.h" -#include "fboss/agent/platforms/tests/utils/BcmTestPlatform.h" #include "fboss/agent/hw/test/HwTestPacketUtils.h" -#include "fboss/agent/hw/test/HwTestTrunkUtils.h" #include "fboss/agent/hw/test/ConfigFactory.h" #include -#include #include -#include -#include #include extern "C" { -#include -#include -#include #include } diff --git a/fboss/agent/hw/bcm/tests/GPort.cpp b/fboss/agent/hw/bcm/tests/GPort.cpp index f799f134310b7..98ab56dc26fb0 100644 --- a/fboss/agent/hw/bcm/tests/GPort.cpp +++ b/fboss/agent/hw/bcm/tests/GPort.cpp @@ -15,8 +15,6 @@ extern "C" { #include } -#include "fboss/agent/hw/bcm/tests/BcmUnitTestUtils.h" - extern "C" { struct ibde_t; ibde_t* bde; diff --git a/fboss/agent/hw/bcm/tests/HwTestCoppUtils.cpp b/fboss/agent/hw/bcm/tests/HwTestCoppUtils.cpp index 4ce7119d60cf6..41a603d05fcf0 100644 --- a/fboss/agent/hw/bcm/tests/HwTestCoppUtils.cpp +++ b/fboss/agent/hw/bcm/tests/HwTestCoppUtils.cpp @@ -9,15 +9,9 @@ */ #include "fboss/agent/hw/test/HwTestCoppUtils.h" -#include "fboss/agent/gen-cpp2/switch_config_types.h" #include "fboss/agent/hw/bcm/BcmControlPlane.h" -#include "fboss/agent/hw/bcm/BcmFieldProcessorUtils.h" -#include "fboss/agent/hw/bcm/BcmPlatform.h" #include "fboss/agent/hw/bcm/BcmSwitch.h" -#include "fboss/agent/FbossError.h" -#include "fboss/agent/LacpTypes.h" - namespace facebook::fboss::utility { HwPortStats getCpuQueueStats(HwSwitch* hwSwitch) { diff --git a/fboss/agent/hw/bcm/tests/HwTestEcmpUtilsThriftHandler.cpp b/fboss/agent/hw/bcm/tests/HwTestEcmpUtilsThriftHandler.cpp index 24d81aeaa65ea..be274321cea17 100644 --- a/fboss/agent/hw/bcm/tests/HwTestEcmpUtilsThriftHandler.cpp +++ b/fboss/agent/hw/bcm/tests/HwTestEcmpUtilsThriftHandler.cpp @@ -20,6 +20,27 @@ int HwTestThriftHandler::getHwEcmpSize( return getEcmpMembersInHw(hwSwitch_, ecmpPrefix, rid, sizeInSw).size(); } +void HwTestThriftHandler::getEcmpWeights( + std::map<::std::int32_t, ::std::int32_t>& weights, + std::unique_ptr prefix, + int routerID) { + folly::CIDRNetwork ecmpPrefix = std::make_pair( + folly::IPAddress(prefix->IPAddress_ref().value()), + prefix->mask_ref().value()); + facebook::fboss::RouterID rid = + static_cast(routerID); + auto members = + getEcmpMembersInHw(hwSwitch_, ecmpPrefix, rid, FLAGS_ecmp_width); + std::set uniqueMembers(members.begin(), members.end()); + int index = 0; + for (auto member : uniqueMembers) { + weights.insert( + std::make_pair(index, getEcmpMemberWeight(hwSwitch_, members, member))); + index++; + } + return; +} + } // namespace utility } // namespace fboss } // namespace facebook diff --git a/fboss/agent/hw/bcm/tests/HwTestMplsUtils.cpp b/fboss/agent/hw/bcm/tests/HwTestMplsUtils.cpp index b2ade72052365..bd8a9945d79d7 100644 --- a/fboss/agent/hw/bcm/tests/HwTestMplsUtils.cpp +++ b/fboss/agent/hw/bcm/tests/HwTestMplsUtils.cpp @@ -27,7 +27,6 @@ extern "C" { #include #include -#include } namespace facebook::fboss { diff --git a/fboss/agent/hw/bcm/tests/HwTestPfcUtils.cpp b/fboss/agent/hw/bcm/tests/HwTestPfcUtils.cpp index 0da07525dd4c7..201ccfd24afd6 100644 --- a/fboss/agent/hw/bcm/tests/HwTestPfcUtils.cpp +++ b/fboss/agent/hw/bcm/tests/HwTestPfcUtils.cpp @@ -13,7 +13,6 @@ #include "fboss/agent/hw/bcm/BcmError.h" #include "fboss/agent/hw/bcm/BcmPortUtils.h" #include "fboss/agent/hw/bcm/tests/BcmTest.h" -#include "fboss/agent/platforms/tests/utils/BcmTestPlatform.h" #include "fboss/agent/types.h" namespace { diff --git a/fboss/agent/hw/bcm/tests/HwTestPortUtilsThriftHandler.cpp b/fboss/agent/hw/bcm/tests/HwTestPortUtilsThriftHandler.cpp index 921c9e2a516bf..4fa5388811b30 100644 --- a/fboss/agent/hw/bcm/tests/HwTestPortUtilsThriftHandler.cpp +++ b/fboss/agent/hw/bcm/tests/HwTestPortUtilsThriftHandler.cpp @@ -55,6 +55,10 @@ void HwTestThriftHandler::getPortInfo( return; } +bool HwTestThriftHandler::verifyPortLedStatus(int /*portId*/, bool /*status*/) { + return true; +} + } // namespace utility } // namespace fboss } // namespace facebook diff --git a/fboss/agent/hw/bcm/tests/HwTestRouteUtils.cpp b/fboss/agent/hw/bcm/tests/HwTestRouteUtils.cpp index b90d454db31fb..f1acbdd02d933 100644 --- a/fboss/agent/hw/bcm/tests/HwTestRouteUtils.cpp +++ b/fboss/agent/hw/bcm/tests/HwTestRouteUtils.cpp @@ -12,7 +12,6 @@ #include "fboss/agent/hw/bcm/BcmAddressFBConvertors.h" #include "fboss/agent/hw/bcm/BcmRouteCounter.h" -#include "fboss/agent/hw/bcm/BcmSdkVer.h" #include "fboss/agent/hw/bcm/BcmSwitch.h" #include "fboss/agent/hw/switch_asics/HwAsic.h" diff --git a/fboss/agent/hw/bcm/tests/HwVlanUtils.cpp b/fboss/agent/hw/bcm/tests/HwVlanUtils.cpp index 76e197b91e1b2..b267459309d66 100644 --- a/fboss/agent/hw/bcm/tests/HwVlanUtils.cpp +++ b/fboss/agent/hw/bcm/tests/HwVlanUtils.cpp @@ -16,9 +16,7 @@ #include -extern "C" { -#include -} +extern "C" {} namespace { std::vector getVlans( const facebook::fboss::HwSwitch* hwSwitch) { diff --git a/fboss/agent/hw/benchmarks/AgentTeFlowStatsExportBenchmark.cpp b/fboss/agent/hw/benchmarks/AgentTeFlowStatsExportBenchmark.cpp index 9b753bbf02a37..ef2f4a64616ac 100644 --- a/fboss/agent/hw/benchmarks/AgentTeFlowStatsExportBenchmark.cpp +++ b/fboss/agent/hw/benchmarks/AgentTeFlowStatsExportBenchmark.cpp @@ -17,11 +17,9 @@ #include "fboss/lib/FunctionCallTimeReporter.h" #include "fboss/agent/benchmarks/AgentBenchmarks.h" -#include "fboss/agent/hw/switch_asics/HwAsic.h" #include #include -#include DEFINE_int32(teflow_em_entries, 10000, "TEFlow EM entries"); DEFINE_int32(fsdb_connect_timeout, 60, "FSDB connect timeout in seconds"); diff --git a/fboss/agent/hw/benchmarks/BUCK b/fboss/agent/hw/benchmarks/BUCK index 6462497e7593e..295c81ea1d345 100644 --- a/fboss/agent/hw/benchmarks/BUCK +++ b/fboss/agent/hw/benchmarks/BUCK @@ -28,6 +28,23 @@ agent_benchmark_lib( ], ) +agent_benchmark_lib( + name = "hw_rx_slow_path_arp_rate", + srcs = ["HwRxSlowPathArpBenchmark.cpp"], + extra_deps = [ + "//fboss/agent:core", + "//fboss/agent:packet", + "//fboss/agent/hw/switch_asics:switch_asics", + "//fboss/agent/packet:packet_factory", + "//fboss/agent/test/utils:acl_test_utils", + "//fboss/agent/test/utils:copp_test_utils", + "//fboss/agent/test/utils:qos_test_utils", + "//fboss/agent/test/utils:asic_test_utils", + "//folly:network_address", + "//folly/init:init", + ], +) + cpp_library( name = "hw_route_scale_benchmark_helpers", headers = [ @@ -163,7 +180,6 @@ cpp_library( "//fboss/agent/hw/test:config_factory", "//fboss/agent/hw/test:hw_copp_utils", "//fboss/agent/hw/test:hw_switch_ensemble_factory", - "//fboss/agent/hw/test:load_balancer_utils", "//fboss/agent/hw/test:prod_config_utils", "//fboss/agent/test:agent_ensemble", "//fboss/agent/test:route_distribution_gen", @@ -171,9 +187,7 @@ cpp_library( "//fboss/agent/test/utils:fabric_test_utils", "//fboss/agent/test/utils:voq_test_utils", "//fboss/lib:function_call_time_reporter", - "//fboss/lib/platforms:platform_mode", "//folly:benchmark", - "//folly/logging:logging", ], ) @@ -293,8 +307,6 @@ cpp_library( srcs = ["HwTeFlowScaleBenchmarkHelper.cpp"], undefined_symbols = True, exported_deps = [ - "//fboss/agent:platform_base", - "//fboss/agent:stats", "//fboss/agent:switch_config-cpp2-types", "//fboss/agent/benchmarks:mono_agent_benchmarks", "//fboss/agent/hw/test:config_factory", @@ -305,7 +317,6 @@ cpp_library( "//fboss/lib:function_call_time_reporter", "//folly:benchmark", "//folly:network_address", - "//folly/logging:logging", ], ) diff --git a/fboss/agent/hw/benchmarks/HwEcmpShrinkSpeedBenchmark.cpp b/fboss/agent/hw/benchmarks/HwEcmpShrinkSpeedBenchmark.cpp index 5b017bfe98316..5d1e9fd8e5b99 100644 --- a/fboss/agent/hw/benchmarks/HwEcmpShrinkSpeedBenchmark.cpp +++ b/fboss/agent/hw/benchmarks/HwEcmpShrinkSpeedBenchmark.cpp @@ -10,12 +10,10 @@ #include "fboss/agent/HwAsicTable.h" #include "fboss/agent/SwitchStats.h" -#include "fboss/agent/hw/switch_asics/HwAsic.h" #include "fboss/agent/hw/test/ConfigFactory.h" #include "fboss/agent/hw/test/HwTestEcmpUtils.h" #include "fboss/agent/hw/test/HwTestPortUtils.h" -#include "fboss/agent/state/Port.h" #include "fboss/agent/test/EcmpSetupHelper.h" #include "fboss/lib/FunctionCallTimeReporter.h" diff --git a/fboss/agent/hw/benchmarks/HwEcmpShrinkWithCompetingRouteUpdatesBenchmark.cpp b/fboss/agent/hw/benchmarks/HwEcmpShrinkWithCompetingRouteUpdatesBenchmark.cpp index f9ca9c015d91e..d17fbc1381ac4 100644 --- a/fboss/agent/hw/benchmarks/HwEcmpShrinkWithCompetingRouteUpdatesBenchmark.cpp +++ b/fboss/agent/hw/benchmarks/HwEcmpShrinkWithCompetingRouteUpdatesBenchmark.cpp @@ -9,12 +9,10 @@ */ #include "fboss/agent/HwAsicTable.h" -#include "fboss/agent/hw/switch_asics/HwAsic.h" #include "fboss/agent/hw/test/ConfigFactory.h" #include "fboss/agent/hw/test/HwTestEcmpUtils.h" #include "fboss/agent/hw/test/HwTestPortUtils.h" -#include "fboss/agent/state/Port.h" #include "fboss/agent/test/EcmpSetupHelper.h" #include "fboss/agent/test/RouteScaleGenerators.h" #include "fboss/lib/FunctionCallTimeReporter.h" diff --git a/fboss/agent/hw/benchmarks/HwInitAndExitBenchmarkHelper.cpp b/fboss/agent/hw/benchmarks/HwInitAndExitBenchmarkHelper.cpp index 3c0d6e205f18c..ddb7bdb2c18c2 100644 --- a/fboss/agent/hw/benchmarks/HwInitAndExitBenchmarkHelper.cpp +++ b/fboss/agent/hw/benchmarks/HwInitAndExitBenchmarkHelper.cpp @@ -16,21 +16,15 @@ #include "fboss/agent/Utils.h" #include "fboss/agent/hw/switch_asics/HwAsic.h" #include "fboss/agent/hw/test/ConfigFactory.h" -#include "fboss/agent/hw/test/HwSwitchEnsemble.h" -#include "fboss/agent/hw/test/HwSwitchEnsembleFactory.h" -#include "fboss/agent/hw/test/HwSwitchEnsembleRouteUpdateWrapper.h" #include "fboss/agent/hw/test/HwTestCoppUtils.h" #include "fboss/agent/hw/test/HwTestProdConfigUtils.h" -#include "fboss/agent/hw/test/LoadBalancerUtils.h" #include "fboss/agent/test/RouteDistributionGenerator.h" #include "fboss/agent/test/RouteScaleGenerators.h" #include "fboss/agent/test/utils/FabricTestUtils.h" #include "fboss/agent/test/utils/VoqTestUtils.h" #include "fboss/lib/FunctionCallTimeReporter.h" -#include "fboss/lib/platforms/PlatformMode.h" -#include #include "fboss/agent/gen-cpp2/switch_config_types.h" #include diff --git a/fboss/agent/hw/benchmarks/HwRibResolutionBenchmark.cpp b/fboss/agent/hw/benchmarks/HwRibResolutionBenchmark.cpp index 2b4dfa650a2b3..7b08dc6f72136 100644 --- a/fboss/agent/hw/benchmarks/HwRibResolutionBenchmark.cpp +++ b/fboss/agent/hw/benchmarks/HwRibResolutionBenchmark.cpp @@ -19,7 +19,6 @@ #include "fboss/agent/benchmarks/AgentBenchmarks.h" #include -#include namespace facebook::fboss { diff --git a/fboss/agent/hw/benchmarks/HwRibSyncFibBenchmark.cpp b/fboss/agent/hw/benchmarks/HwRibSyncFibBenchmark.cpp index 3ae107da4df51..4f8517c0ce026 100644 --- a/fboss/agent/hw/benchmarks/HwRibSyncFibBenchmark.cpp +++ b/fboss/agent/hw/benchmarks/HwRibSyncFibBenchmark.cpp @@ -19,7 +19,6 @@ #include "fboss/agent/benchmarks/AgentBenchmarks.h" #include -#include namespace facebook::fboss { diff --git a/fboss/agent/hw/benchmarks/HwRxSlowPathArpBenchmark.cpp b/fboss/agent/hw/benchmarks/HwRxSlowPathArpBenchmark.cpp new file mode 100644 index 0000000000000..8e3d19e4e4d60 --- /dev/null +++ b/fboss/agent/hw/benchmarks/HwRxSlowPathArpBenchmark.cpp @@ -0,0 +1,134 @@ +/* + * Copyright (c) 2004-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + */ + +#include "fboss/agent/HwAsicTable.h" +#include "fboss/agent/IPv4Handler.h" +#include "fboss/agent/IPv6Handler.h" +#include "fboss/agent/TxPacket.h" +#include "fboss/agent/benchmarks/AgentBenchmarks.h" +#include "fboss/agent/hw/test/ConfigFactory.h" +#include "fboss/agent/packet/PktFactory.h" +#include "fboss/agent/test/utils/AclTestUtils.h" +#include "fboss/agent/test/utils/AsicUtils.h" +#include "fboss/agent/test/utils/CoppTestUtils.h" + +#include +#include +#include +#include +#include + +#include +#include + +namespace { +const std::string kSrcIp = "8.8.8.7"; +const std::string kDstIp = "8.8.8.8"; +} // namespace + +namespace facebook::fboss { + +// How to generate linerate arp request packets +// 1. Put all ports under same vlan +// 2. Install CPU trap acl +// 3. Send arp request packets with Broadcast mac. +// It should be broadcast to all the ports to the +// same vlan and hence amplify the traffic. +BENCHMARK(RxSlowPathArpBenchmark) { + AgentEnsembleSwitchConfigFn initialConfigFn = [](const AgentEnsemble& + ensemble) { + FLAGS_sai_user_defined_trap = true; + CHECK_GE( + ensemble.masterLogicalPortIds({cfg::PortType::INTERFACE_PORT}).size(), + 1); + std::vector ports = {ensemble.masterLogicalInterfacePortIds()[0]}; + + auto l3Asics = ensemble.getSw()->getHwAsicTable()->getL3Asics(); + auto asic = utility::checkSameAndGetAsic(l3Asics); + auto config = utility::oneL3IntfNPortConfig( + ensemble.getSw()->getPlatformMapping(), + asic, + ensemble.masterLogicalPortIds(), + ensemble.getSw()->getPlatformSupportsAddRemovePort(), + asic->desiredLoopbackModes()); + + utility::addAclTableGroup( + &config, cfg::AclStage::INGRESS, utility::kDefaultAclTableGroupName()); + utility::addDefaultAclTable(config); + // We don't want to set queue rate that limits the number of rx pkts + utility::addCpuQueueConfig( + config, + ensemble.getL3Asics(), + ensemble.isSai(), + /* setQueueRate */ false); + utility::setDefaultCpuTrafficPolicyConfig( + config, ensemble.getL3Asics(), ensemble.isSai()); + return config; + }; + + auto ensemble = + createAgentEnsemble(initialConfigFn, false /*disableLinkStateToggler*/); + + const auto kSrcMac = folly::MacAddress{"fa:ce:b0:00:00:0c"}; + auto broadcastMac = folly::MacAddress("FF:FF:FF:FF:FF:FF"); + // Send packet + auto vlanId = utility::firstVlanID(ensemble->getProgrammedState()); + auto constexpr kPacketToSend = 10; + for (int i = 0; i < kPacketToSend; i++) { + auto txPacket = utility::makeARPTxPacket( + ensemble->getSw(), + vlanId, + kSrcMac, + broadcastMac, + folly::IPAddressV4(kSrcIp), + folly::IPAddressV4(kDstIp), + ARP_OPER::ARP_OPER_REQUEST); + ensemble->getSw()->sendPacketSwitchedAsync(std::move(txPacket)); + } + + constexpr auto kBurnIntevalInSeconds = 10; + // Let the packet flood warm up + std::this_thread::sleep_for(std::chrono::seconds(kBurnIntevalInSeconds)); + std::map cpuStatsBefore; + ensemble->getSw()->getAllCpuPortStats(cpuStatsBefore); + auto statsBefore = cpuStatsBefore[0]; + auto hwAsic = utility::checkSameAndGetAsic(ensemble->getL3Asics()); + auto [pktsBefore, bytesBefore] = utility::getCpuQueueOutPacketsAndBytes( + *statsBefore.portStats_(), utility::getCoppHighPriQueueId(hwAsic)); + auto timeBefore = std::chrono::steady_clock::now(); + CHECK_NE(pktsBefore, 0); + std::this_thread::sleep_for(std::chrono::seconds(kBurnIntevalInSeconds)); + std::map cpuStatsAfter; + ensemble->getSw()->getAllCpuPortStats(cpuStatsAfter); + auto statsAfter = cpuStatsAfter[0]; + auto [pktsAfter, bytesAfter] = utility::getCpuQueueOutPacketsAndBytes( + *statsAfter.portStats_(), utility::getCoppHighPriQueueId(hwAsic)); + auto timeAfter = std::chrono::steady_clock::now(); + std::chrono::duration durationMillseconds = + timeAfter - timeBefore; + uint32_t pps = (static_cast(pktsAfter - pktsBefore) / + durationMillseconds.count()) * + 1000; + uint32_t bytesPerSec = (static_cast(bytesAfter - bytesBefore) / + durationMillseconds.count()) * + 1000; + + if (FLAGS_json) { + folly::dynamic cpuRxRateJson = folly::dynamic::object; + cpuRxRateJson["cpu_rx_pps"] = pps; + cpuRxRateJson["cpu_rx_bytes_per_sec"] = bytesPerSec; + std::cout << toPrettyJson(cpuRxRateJson) << std::endl; + } else { + XLOG(DBG2) << " Pkts before: " << pktsBefore << " Pkts after: " << pktsAfter + << " interval ms: " << durationMillseconds.count() + << " pps: " << pps << " bytes per sec: " << bytesPerSec; + } +} +} // namespace facebook::fboss diff --git a/fboss/agent/hw/benchmarks/HwRxSlowPathBenchmark.cpp b/fboss/agent/hw/benchmarks/HwRxSlowPathBenchmark.cpp index 55dc585f041d1..deceacd848332 100644 --- a/fboss/agent/hw/benchmarks/HwRxSlowPathBenchmark.cpp +++ b/fboss/agent/hw/benchmarks/HwRxSlowPathBenchmark.cpp @@ -56,7 +56,7 @@ BENCHMARK(RxSlowPathBenchmark) { } auto config = utility::onePortPerInterfaceConfig(ensemble.getSw(), ports); utility::addAclTableGroup( - &config, cfg::AclStage::INGRESS, utility::getAclTableGroupName()); + &config, cfg::AclStage::INGRESS, utility::kDefaultAclTableGroupName()); utility::addDefaultAclTable(config); // We don't want to set queue rate that limits the number of rx pkts utility::addCpuQueueConfig( diff --git a/fboss/agent/hw/benchmarks/HwStatsCollectionBenchmark.cpp b/fboss/agent/hw/benchmarks/HwStatsCollectionBenchmark.cpp index 764a7c98a6d38..5c4a195970c9a 100644 --- a/fboss/agent/hw/benchmarks/HwStatsCollectionBenchmark.cpp +++ b/fboss/agent/hw/benchmarks/HwStatsCollectionBenchmark.cpp @@ -20,7 +20,6 @@ #include #include -#include namespace facebook::fboss { diff --git a/fboss/agent/hw/benchmarks/HwTeFlowScaleBenchmarkHelper.cpp b/fboss/agent/hw/benchmarks/HwTeFlowScaleBenchmarkHelper.cpp index b589c32fe9a85..df78949c3e78a 100644 --- a/fboss/agent/hw/benchmarks/HwTeFlowScaleBenchmarkHelper.cpp +++ b/fboss/agent/hw/benchmarks/HwTeFlowScaleBenchmarkHelper.cpp @@ -9,12 +9,8 @@ */ #include "fboss/agent/hw/benchmarks/HwTeFlowScaleBenchmarkHelper.h" -#include "fboss/agent/Platform.h" -#include "fboss/agent/SwitchStats.h" #include "fboss/agent/benchmarks/AgentBenchmarks.h" -#include "fboss/agent/hw/test/ConfigFactory.h" #include "fboss/agent/hw/test/HwSwitchEnsemble.h" -#include "fboss/agent/hw/test/HwSwitchEnsembleFactory.h" #include "fboss/agent/hw/test/HwTeFlowTestUtils.h" #include "fboss/agent/hw/test/HwTestTeFlowUtils.h" #include "fboss/agent/test/EcmpSetupHelper.h" @@ -22,7 +18,6 @@ #include #include -#include DEFINE_int32(teflow_scale_entries, 9216, "Teflow scale entries"); diff --git a/fboss/agent/hw/benchmarks/HwTeFlowStatsCollectionBenchmark.cpp b/fboss/agent/hw/benchmarks/HwTeFlowStatsCollectionBenchmark.cpp index 9ba81e5bd1879..8b65eafdc8fcc 100644 --- a/fboss/agent/hw/benchmarks/HwTeFlowStatsCollectionBenchmark.cpp +++ b/fboss/agent/hw/benchmarks/HwTeFlowStatsCollectionBenchmark.cpp @@ -21,7 +21,6 @@ #include #include -#include namespace facebook::fboss { diff --git a/fboss/agent/hw/benchmarks/HwTxSlowPathBenchmark.cpp b/fboss/agent/hw/benchmarks/HwTxSlowPathBenchmark.cpp index dd1a4690f788d..dc6e59a608ad9 100644 --- a/fboss/agent/hw/benchmarks/HwTxSlowPathBenchmark.cpp +++ b/fboss/agent/hw/benchmarks/HwTxSlowPathBenchmark.cpp @@ -10,8 +10,6 @@ #include "fboss/agent/hw/test/ConfigFactory.h" #include "fboss/agent/hw/test/HwSwitchEnsemble.h" -#include "fboss/agent/hw/test/HwSwitchEnsembleFactory.h" -#include "fboss/agent/hw/test/HwSwitchEnsembleRouteUpdateWrapper.h" #include "fboss/agent/hw/test/HwTestPacketUtils.h" #include "fboss/agent/test/EcmpSetupHelper.h" diff --git a/fboss/agent/hw/hardware_stats.thrift b/fboss/agent/hw/hardware_stats.thrift index 6631b4c895160..e97aac0fb1b06 100644 --- a/fboss/agent/hw/hardware_stats.thrift +++ b/fboss/agent/hw/hardware_stats.thrift @@ -76,6 +76,7 @@ struct HwPortStats { 37: map fecCodewords_ = {}; 38: optional i64 pqpErrorEgressDroppedPackets_; 39: optional i64 fabricLinkDownDroppedCells_; + 40: optional i64 linkLayerFlowControlWatermark_; // seconds from epoch 50: i64 timestamp_ = STAT_UNINITIALIZED; @@ -305,6 +306,13 @@ struct HwSwitchCreditStats { 1: optional i64 deletedCreditBytes; } +struct HwSwitchEgressCellErrorStats { + 1: i64 rqpFabricCellCorruption; + 2: i64 rqpNonFabricCellCorruption; + 3: i64 rqpNonFabricCellMissing; + 4: i64 rqpParityError; +} + struct HwSwitchFb303GlobalStats { 1: i64 tx_pkt_allocated; 2: i64 tx_pkt_freed; @@ -348,6 +356,10 @@ struct HwSwitchFb303GlobalStats { 27: optional i64 dram_blocked_time_ns; 28: optional i64 deleted_credit_bytes; 29: optional i64 vsq_resource_exhaustion_drops; + 30: optional i64 rqp_fabric_cell_corruption; + 31: optional i64 rqp_non_fabric_cell_corruption; + 32: optional i64 rqp_non_fabric_cell_missing; + 33: optional i64 rqp_parity_error; } struct HwFlowletStats { diff --git a/fboss/agent/hw/mock/BUCK b/fboss/agent/hw/mock/BUCK index ad7eeb853c181..99b039b94701d 100644 --- a/fboss/agent/hw/mock/BUCK +++ b/fboss/agent/hw/mock/BUCK @@ -48,7 +48,6 @@ cpp_library( "//fboss/agent:packet", "//fboss/agent/packet:packet", "//fboss/agent/packet:pktutil", - "//folly:memory", "//folly:range", "//folly/io:iobuf", ], diff --git a/fboss/agent/hw/mock/MockPlatform.cpp b/fboss/agent/hw/mock/MockPlatform.cpp index 4d5026f975066..b53003816ab15 100644 --- a/fboss/agent/hw/mock/MockPlatform.cpp +++ b/fboss/agent/hw/mock/MockPlatform.cpp @@ -12,12 +12,10 @@ #include #include "fboss/agent/Platform.h" #include "fboss/agent/SysError.h" -#include "fboss/agent/ThriftHandler.h" #include "fboss/agent/hw/mock/MockHwSwitch.h" #include "fboss/agent/hw/mock/MockPlatformMapping.h" #include "fboss/agent/hw/mock/MockPlatformPort.h" #include "fboss/agent/hw/mock/MockTestHandle.h" -#include "fboss/agent/test/HwTestHandle.h" #include "fboss/lib/platforms/PlatformProductInfo.h" #include @@ -76,15 +74,12 @@ MockPlatform::MockPlatform() MockPlatform::~MockPlatform() = default; void MockPlatform::setupAsic( - cfg::SwitchType switchType, std::optional switchId, - int16_t switchIndex, - std::optional systemPortRange, - folly::MacAddress& mac, - std::optional fabricNodeRole) { - asic_ = std::make_unique( - switchType, switchId, switchIndex, systemPortRange, mac); + const cfg::SwitchInfo& switchInfo, + std::optional role) { + asic_ = std::make_unique(switchId, switchInfo); } + HwSwitch* MockPlatform::getHwSwitch() const { return hw_.get(); } diff --git a/fboss/agent/hw/mock/MockPlatform.h b/fboss/agent/hw/mock/MockPlatform.h index e71a6fdb87a30..40d6b1534b15e 100644 --- a/fboss/agent/hw/mock/MockPlatform.h +++ b/fboss/agent/hw/mock/MockPlatform.h @@ -65,12 +65,9 @@ class MockPlatform : public Platform { private: void setupAsic( - cfg::SwitchType switchType, std::optional switchId, - int16_t switchIndex, - std::optional systemPortRange, - folly::MacAddress& mac, - std::optional fabricNodeRole) override; + const cfg::SwitchInfo& switchInfo, + std::optional role) override; void createTmpDir(); void cleanupTmpDir(); diff --git a/fboss/agent/hw/mock/MockPlatformMapping.cpp b/fboss/agent/hw/mock/MockPlatformMapping.cpp index 6f201d46371bc..1884ee2e418b3 100644 --- a/fboss/agent/hw/mock/MockPlatformMapping.cpp +++ b/fboss/agent/hw/mock/MockPlatformMapping.cpp @@ -9,8 +9,6 @@ */ #include "fboss/agent/hw/mock/MockPlatformMapping.h" -#include - namespace facebook::fboss { MockPlatformMapping::MockPlatformMapping() : Wedge100PlatformMapping() { diff --git a/fboss/agent/hw/mock/MockRxPacket.cpp b/fboss/agent/hw/mock/MockRxPacket.cpp index 9f2fbe2672eec..9815a19f48666 100644 --- a/fboss/agent/hw/mock/MockRxPacket.cpp +++ b/fboss/agent/hw/mock/MockRxPacket.cpp @@ -9,7 +9,6 @@ */ #include "fboss/agent/hw/mock/MockRxPacket.h" -#include #include #include #include "fboss/agent/packet/PktUtil.h" diff --git a/fboss/agent/hw/mock/MockTestHandle.cpp b/fboss/agent/hw/mock/MockTestHandle.cpp index fdd31f8054afd..177e06dae7b50 100644 --- a/fboss/agent/hw/mock/MockTestHandle.cpp +++ b/fboss/agent/hw/mock/MockTestHandle.cpp @@ -10,7 +10,6 @@ #include "fboss/agent/hw/mock/MockTestHandle.h" #include -#include #include "fboss/agent/hw/mock/MockRxPacket.h" diff --git a/fboss/agent/hw/sai/api/AclApi.h b/fboss/agent/hw/sai/api/AclApi.h index bbdd21ee2a2eb..3923876151914 100644 --- a/fboss/agent/hw/sai/api/AclApi.h +++ b/fboss/agent/hw/sai/api/AclApi.h @@ -27,8 +27,6 @@ namespace facebook::fboss { class AclApi; -inline auto constexpr kAclTable1 = "AclTable1"; - struct SaiAclTableGroupTraits { static constexpr sai_object_type_t ObjectType = SAI_OBJECT_TYPE_ACL_TABLE_GROUP; @@ -198,6 +196,40 @@ struct SaiAclTableTraits { #if !defined(TAJO_SDK) && !defined(BRCM_SAI_SDK_XGS) using FieldIpv6NextHeader = SaiAttribute; +#endif +#if ( \ + (SAI_API_VERSION >= SAI_VERSION(1, 14, 0) || \ + (defined(BRCM_SAI_SDK_GTE_11_0) && defined(BRCM_SAI_SDK_XGS))) && \ + !defined(TAJO_SDK)) + using UserDefinedFieldGroupMin0 = SaiAttribute< + EnumType, + SAI_ACL_TABLE_ATTR_USER_DEFINED_FIELD_GROUP_MIN, + sai_object_id_t, + SaiObjectIdDefault>; + using UserDefinedFieldGroupMin1 = SaiAttribute< + EnumType, + static_cast( + SAI_ACL_TABLE_ATTR_USER_DEFINED_FIELD_GROUP_MIN + 1), + sai_object_id_t, + SaiObjectIdDefault>; + using UserDefinedFieldGroupMin2 = SaiAttribute< + EnumType, + static_cast( + SAI_ACL_TABLE_ATTR_USER_DEFINED_FIELD_GROUP_MIN + 2), + sai_object_id_t, + SaiObjectIdDefault>; + using UserDefinedFieldGroupMin3 = SaiAttribute< + EnumType, + static_cast( + SAI_ACL_TABLE_ATTR_USER_DEFINED_FIELD_GROUP_MIN + 3), + sai_object_id_t, + SaiObjectIdDefault>; + using UserDefinedFieldGroupMin4 = SaiAttribute< + EnumType, + static_cast( + SAI_ACL_TABLE_ATTR_USER_DEFINED_FIELD_GROUP_MIN + 4), + sai_object_id_t, + SaiObjectIdDefault>; #endif }; @@ -237,6 +269,17 @@ struct SaiAclTableTraits { #if !defined(TAJO_SDK) && !defined(BRCM_SAI_SDK_XGS) , std::optional +#endif +#if ( \ + (SAI_API_VERSION >= SAI_VERSION(1, 14, 0) || \ + (defined(BRCM_SAI_SDK_GTE_11_0) && defined(BRCM_SAI_SDK_XGS))) && \ + !defined(TAJO_SDK)) + , + std::optional, + std::optional, + std::optional, + std::optional, + std::optional #endif >; @@ -279,6 +322,16 @@ SAI_ATTRIBUTE_NAME(AclTable, FieldBthOpcode); #if !defined(TAJO_SDK) && !defined(BRCM_SAI_SDK_XGS) SAI_ATTRIBUTE_NAME(AclTable, FieldIpv6NextHeader); #endif +#if ( \ + (SAI_API_VERSION >= SAI_VERSION(1, 14, 0) || \ + (defined(BRCM_SAI_SDK_GTE_11_0) && defined(BRCM_SAI_SDK_XGS))) && \ + !defined(TAJO_SDK)) +SAI_ATTRIBUTE_NAME(AclTable, UserDefinedFieldGroupMin0); +SAI_ATTRIBUTE_NAME(AclTable, UserDefinedFieldGroupMin1); +SAI_ATTRIBUTE_NAME(AclTable, UserDefinedFieldGroupMin2); +SAI_ATTRIBUTE_NAME(AclTable, UserDefinedFieldGroupMin3); +SAI_ATTRIBUTE_NAME(AclTable, UserDefinedFieldGroupMin4); +#endif struct SaiAclEntryTraits { static constexpr sai_object_type_t ObjectType = SAI_OBJECT_TYPE_ACL_ENTRY; @@ -405,6 +458,35 @@ struct SaiAclEntryTraits { EnumType, SAI_ACL_ENTRY_ATTR_FIELD_IPV6_NEXT_HEADER, AclEntryFieldU8>; +#endif +#if ( \ + (SAI_API_VERSION >= SAI_VERSION(1, 14, 0) || \ + (defined(BRCM_SAI_SDK_GTE_11_0) && defined(BRCM_SAI_SDK_XGS))) && \ + !defined(TAJO_SDK)) + using UserDefinedFieldGroupMin0 = SaiAttribute< + EnumType, + SAI_ACL_ENTRY_ATTR_USER_DEFINED_FIELD_GROUP_MIN, + AclEntryFieldU8List>; + using UserDefinedFieldGroupMin1 = SaiAttribute< + EnumType, + static_cast( + SAI_ACL_ENTRY_ATTR_USER_DEFINED_FIELD_GROUP_MIN + 1), + AclEntryFieldU8List>; + using UserDefinedFieldGroupMin2 = SaiAttribute< + EnumType, + static_cast( + SAI_ACL_ENTRY_ATTR_USER_DEFINED_FIELD_GROUP_MIN + 2), + AclEntryFieldU8List>; + using UserDefinedFieldGroupMin3 = SaiAttribute< + EnumType, + static_cast( + SAI_ACL_ENTRY_ATTR_USER_DEFINED_FIELD_GROUP_MIN + 3), + AclEntryFieldU8List>; + using UserDefinedFieldGroupMin4 = SaiAttribute< + EnumType, + static_cast( + SAI_ACL_ENTRY_ATTR_USER_DEFINED_FIELD_GROUP_MIN + 4), + AclEntryFieldU8List>; #endif using ActionPacketAction = SaiAttribute< EnumType, @@ -486,6 +568,16 @@ struct SaiAclEntryTraits { #endif #if !defined(TAJO_SDK) && !defined(BRCM_SAI_SDK_XGS) std::optional, +#endif +#if ( \ + (SAI_API_VERSION >= SAI_VERSION(1, 14, 0) || \ + (defined(BRCM_SAI_SDK_GTE_11_0) && defined(BRCM_SAI_SDK_XGS))) && \ + !defined(TAJO_SDK)) + std::optional, + std::optional, + std::optional, + std::optional, + std::optional, #endif std::optional, std::optional, @@ -538,6 +630,16 @@ SAI_ATTRIBUTE_NAME(AclEntry, FieldBthOpcode); #if !defined(TAJO_SDK) && !defined(BRCM_SAI_SDK_XGS) SAI_ATTRIBUTE_NAME(AclEntry, FieldIpv6NextHeader); #endif +#if ( \ + (SAI_API_VERSION >= SAI_VERSION(1, 14, 0) || \ + (defined(BRCM_SAI_SDK_GTE_11_0) && defined(BRCM_SAI_SDK_XGS))) && \ + !defined(TAJO_SDK)) +SAI_ATTRIBUTE_NAME(AclEntry, UserDefinedFieldGroupMin0); +SAI_ATTRIBUTE_NAME(AclEntry, UserDefinedFieldGroupMin1); +SAI_ATTRIBUTE_NAME(AclEntry, UserDefinedFieldGroupMin2); +SAI_ATTRIBUTE_NAME(AclEntry, UserDefinedFieldGroupMin3); +SAI_ATTRIBUTE_NAME(AclEntry, UserDefinedFieldGroupMin4); +#endif SAI_ATTRIBUTE_NAME(AclEntry, ActionPacketAction); SAI_ATTRIBUTE_NAME(AclEntry, ActionCounter); SAI_ATTRIBUTE_NAME(AclEntry, ActionSetTC); diff --git a/fboss/agent/hw/sai/api/ArsProfileApi.h b/fboss/agent/hw/sai/api/ArsProfileApi.h index e179770a08578..1e78c7083c4fe 100644 --- a/fboss/agent/hw/sai/api/ArsProfileApi.h +++ b/fboss/agent/hw/sai/api/ArsProfileApi.h @@ -134,6 +134,7 @@ SAI_ATTRIBUTE_NAME(ArsProfile, PortLoadCurrent) SAI_ATTRIBUTE_NAME(ArsProfile, PortLoadExponent) SAI_ATTRIBUTE_NAME(ArsProfile, LoadCurrentMinVal) SAI_ATTRIBUTE_NAME(ArsProfile, LoadCurrentMaxVal) +SAI_ATTRIBUTE_NAME(ArsProfile, MaxFlows) class ArsProfileApi : public SaiApi { public: diff --git a/fboss/agent/hw/sai/api/FdbApi.cpp b/fboss/agent/hw/sai/api/FdbApi.cpp index 0d2266f13b513..242be8e58c7b4 100644 --- a/fboss/agent/hw/sai/api/FdbApi.cpp +++ b/fboss/agent/hw/sai/api/FdbApi.cpp @@ -11,8 +11,6 @@ #include "fboss/agent/hw/sai/api/FdbApi.h" #include "fboss/agent/Constants.h" -#include - #include namespace { diff --git a/fboss/agent/hw/sai/api/MirrorApi.h b/fboss/agent/hw/sai/api/MirrorApi.h index 0ede3ad5cc3a9..2db7a66c59f96 100644 --- a/fboss/agent/hw/sai/api/MirrorApi.h +++ b/fboss/agent/hw/sai/api/MirrorApi.h @@ -40,9 +40,16 @@ struct SaiMirrorTraits { EnumType, SAI_MIRROR_SESSION_ATTR_MONITOR_PORT, SaiObjectIdT>; + struct AttributeTcBufferLimit { + std::optional operator()(); + }; + using TcBufferLimit = + SaiExtensionAttribute; }; - using CreateAttributes = - std::tuple; + using CreateAttributes = std::tuple< + Attributes::Type, + Attributes::MonitorPort, + std::optional>; using AdapterHostKey = CreateAttributes; }; @@ -96,6 +103,11 @@ struct SaiMirrorTraits { EnumType, SAI_MIRROR_SESSION_ATTR_SAMPLE_RATE, sai_uint32_t>; + struct AttributeTcBufferLimit { + std::optional operator()(); + }; + using TcBufferLimit = + SaiExtensionAttribute; }; using CreateAttributes = std::tuple< Attributes::Type, @@ -110,7 +122,8 @@ struct SaiMirrorTraits { Attributes::IpHeaderVersion, std::optional, std::optional, - std::optional>; + std::optional, + std::optional>; using AdapterHostKey = std::tuple< Attributes::Type, Attributes::MonitorPort, @@ -241,6 +254,7 @@ using SaiMirrorTraits = ConditionObjectTraits< using SaiMirrorAdapterHostKey = typename SaiMirrorTraits::AdapterHostKey; using SaiMirrorAdaptertKey = typename SaiMirrorTraits::AdapterKey; +SAI_ATTRIBUTE_NAME(LocalMirror, TcBufferLimit) SAI_ATTRIBUTE_NAME(EnhancedRemoteMirror, Type) SAI_ATTRIBUTE_NAME(EnhancedRemoteMirror, MonitorPort) SAI_ATTRIBUTE_NAME(EnhancedRemoteMirror, TruncateSize) @@ -254,6 +268,7 @@ SAI_ATTRIBUTE_NAME(EnhancedRemoteMirror, SrcMacAddress) SAI_ATTRIBUTE_NAME(EnhancedRemoteMirror, DstMacAddress) SAI_ATTRIBUTE_NAME(EnhancedRemoteMirror, IpHeaderVersion) SAI_ATTRIBUTE_NAME(EnhancedRemoteMirror, SampleRate) +SAI_ATTRIBUTE_NAME(EnhancedRemoteMirror, TcBufferLimit) SAI_ATTRIBUTE_NAME(SflowMirror, UdpSrcPort) SAI_ATTRIBUTE_NAME(SflowMirror, UdpDstPort) SAI_ATTRIBUTE_NAME(SflowMirror, TcBufferLimit) diff --git a/fboss/agent/hw/sai/api/NeighborApi.cpp b/fboss/agent/hw/sai/api/NeighborApi.cpp index affe4bb737a27..75e8cc0f9cdc1 100644 --- a/fboss/agent/hw/sai/api/NeighborApi.cpp +++ b/fboss/agent/hw/sai/api/NeighborApi.cpp @@ -12,8 +12,6 @@ #include "fboss/agent/Constants.h" -#include - #include namespace std { diff --git a/fboss/agent/hw/sai/api/PortApi.h b/fboss/agent/hw/sai/api/PortApi.h index 88dde6c95cfd8..4eda989e6b1ac 100644 --- a/fboss/agent/hw/sai/api/PortApi.h +++ b/fboss/agent/hw/sai/api/PortApi.h @@ -445,6 +445,11 @@ struct SaiPortTraits { sai_uint32_t, AttributeCondEntropyRehashSeed, SaiIntDefault>; + struct AttributeShelEnable { + std::optional operator()(); + }; + using ShelEnable = + SaiExtensionAttribute; }; using AdapterKey = PortSaiId; @@ -553,7 +558,8 @@ struct SaiPortTraits { std::optional, std::optional, std::optional, - std::optional>; + std::optional, + std::optional>; static constexpr std::array CounterIdsToRead = { SAI_PORT_STAT_IF_IN_OCTETS, SAI_PORT_STAT_IF_IN_UCAST_PKTS, @@ -708,6 +714,7 @@ SAI_ATTRIBUTE_NAME(Port, ReachabilityGroup) SAI_ATTRIBUTE_NAME(Port, CondEntropyRehashEnable) SAI_ATTRIBUTE_NAME(Port, CondEntropyRehashPeriodUS) SAI_ATTRIBUTE_NAME(Port, CondEntropyRehashSeed) +SAI_ATTRIBUTE_NAME(Port, ShelEnable) template <> struct SaiObjectHasStats : public std::true_type {}; diff --git a/fboss/agent/hw/sai/api/RouteApi.cpp b/fboss/agent/hw/sai/api/RouteApi.cpp index 7a49ebd16e50c..1532b3511fcea 100644 --- a/fboss/agent/hw/sai/api/RouteApi.cpp +++ b/fboss/agent/hw/sai/api/RouteApi.cpp @@ -12,8 +12,6 @@ #include "fboss/agent/Constants.h" -#include - #include namespace { diff --git a/fboss/agent/hw/sai/api/SaiDefaultAttributeValues.h b/fboss/agent/hw/sai/api/SaiDefaultAttributeValues.h index db61d131b4734..e6ad4928690d7 100644 --- a/fboss/agent/hw/sai/api/SaiDefaultAttributeValues.h +++ b/fboss/agent/hw/sai/api/SaiDefaultAttributeValues.h @@ -194,6 +194,12 @@ struct SaiHostifUserDefinedTrapDefaultPriority { } }; +struct SaiIpAddressDefault { + folly::IPAddress operator()() const { + return folly::IPAddressV6("::"); + } +}; + using SaiObjectIdListDefault = SaiListDefault; using SaiU32ListDefault = SaiListDefault; using SaiS8ListDefault = SaiListDefault; diff --git a/fboss/agent/hw/sai/api/SwitchApi.h b/fboss/agent/hw/sai/api/SwitchApi.h index 24751cc549567..f9cce7d76e939 100644 --- a/fboss/agent/hw/sai/api/SwitchApi.h +++ b/fboss/agent/hw/sai/api/SwitchApi.h @@ -576,8 +576,10 @@ struct SaiSwitchTraits { struct AttributeNoAclsForTrapsWrapper { std::optional operator()(); }; - using NoAclsForTraps = - SaiExtensionAttribute; + using NoAclsForTraps = SaiExtensionAttribute< + bool, + AttributeNoAclsForTrapsWrapper, + SaiBoolDefaultFalse>; struct AttributeMaxSystemPortId { std::optional operator()(); }; @@ -620,6 +622,41 @@ struct SaiSwitchTraits { std::vector, AttributeVoqDramBoundThWrapper, SaiU32ListDefault>; + struct AttributeCondEntropyRehashPeriodUS { + std::optional operator()(); + }; + using CondEntropyRehashPeriodUS = SaiExtensionAttribute< + sai_uint32_t, + AttributeCondEntropyRehashPeriodUS, + SaiIntDefault>; + struct AttributeShelSrcIp { + std::optional operator()(); + }; + using ShelSrcIp = SaiExtensionAttribute< + folly::IPAddress, + AttributeShelSrcIp, + SaiIpAddressDefault>; + struct AttributeShelDstIp { + std::optional operator()(); + }; + using ShelDstIp = SaiExtensionAttribute< + folly::IPAddress, + AttributeShelDstIp, + SaiIpAddressDefault>; + struct AttributeShelSrcMac { + std::optional operator()(); + }; + using ShelSrcMac = SaiExtensionAttribute< + folly::MacAddress, + AttributeShelSrcMac, + SaiMacAddressDefault>; + struct AttributeShelPeriodicInterval { + std::optional operator()(); + }; + using ShelPeriodicInterval = SaiExtensionAttribute< + sai_uint32_t, + AttributeShelPeriodicInterval, + SaiIntDefault>; }; using AdapterKey = SwitchSaiId; using AdapterHostKey = std::monostate; @@ -697,7 +734,12 @@ struct SaiSwitchTraits { std::optional, std::optional, std::optional, - std::optional>; + std::optional, + std::optional, + std::optional, + std::optional, + std::optional, + std::optional>; #if SAI_API_VERSION >= SAI_VERSION(1, 12, 0) static constexpr std::array CounterIdsToRead = { @@ -819,12 +861,12 @@ SAI_ATTRIBUTE_NAME(Switch, FabricRemoteReachablePortList) SAI_ATTRIBUTE_NAME(Switch, RouteNoImplicitMetaData) SAI_ATTRIBUTE_NAME(Switch, RouteAllowImplicitMetaData) SAI_ATTRIBUTE_NAME(Switch, MultiStageLocalSwitchIds) -SAI_ATTRIBUTE_NAME(Switch, VoqLatencyMinLocalNs); -SAI_ATTRIBUTE_NAME(Switch, VoqLatencyMaxLocalNs); -SAI_ATTRIBUTE_NAME(Switch, VoqLatencyMinLevel1Ns); -SAI_ATTRIBUTE_NAME(Switch, VoqLatencyMaxLevel1Ns); -SAI_ATTRIBUTE_NAME(Switch, VoqLatencyMinLevel2Ns); -SAI_ATTRIBUTE_NAME(Switch, VoqLatencyMaxLevel2Ns); +SAI_ATTRIBUTE_NAME(Switch, VoqLatencyMinLocalNs) +SAI_ATTRIBUTE_NAME(Switch, VoqLatencyMaxLocalNs) +SAI_ATTRIBUTE_NAME(Switch, VoqLatencyMinLevel1Ns) +SAI_ATTRIBUTE_NAME(Switch, VoqLatencyMaxLevel1Ns) +SAI_ATTRIBUTE_NAME(Switch, VoqLatencyMinLevel2Ns) +SAI_ATTRIBUTE_NAME(Switch, VoqLatencyMaxLevel2Ns) #if SAI_API_VERSION >= SAI_VERSION(1, 14, 0) SAI_ATTRIBUTE_NAME(Switch, ArsProfile) #endif @@ -839,6 +881,11 @@ SAI_ATTRIBUTE_NAME(Switch, MaxSystemPorts); SAI_ATTRIBUTE_NAME(Switch, MaxVoqs); SAI_ATTRIBUTE_NAME(Switch, FabricCllfcTxCreditTh); SAI_ATTRIBUTE_NAME(Switch, VoqDramBoundTh); +SAI_ATTRIBUTE_NAME(Switch, CondEntropyRehashPeriodUS) +SAI_ATTRIBUTE_NAME(Switch, ShelSrcIp) +SAI_ATTRIBUTE_NAME(Switch, ShelDstIp) +SAI_ATTRIBUTE_NAME(Switch, ShelSrcMac) +SAI_ATTRIBUTE_NAME(Switch, ShelPeriodicInterval) template <> struct SaiObjectHasStats : public std::true_type {}; diff --git a/fboss/agent/hw/sai/api/SystemPortApi.h b/fboss/agent/hw/sai/api/SystemPortApi.h index c76eb315e0194..79ff449fce7e1 100644 --- a/fboss/agent/hw/sai/api/SystemPortApi.h +++ b/fboss/agent/hw/sai/api/SystemPortApi.h @@ -65,6 +65,13 @@ struct SaiSystemPortTraits { SAI_SYSTEM_PORT_ATTR_QOS_TC_TO_QUEUE_MAP, SaiObjectIdT, SaiObjectIdDefault>; + struct AttributeShelPktDstEnable { + std::optional operator()(); + }; + using ShelPktDstEnable = SaiExtensionAttribute< + bool, + AttributeShelPktDstEnable, + SaiBoolDefaultFalse>; }; using AdapterKey = SystemPortSaiId; using AdapterHostKey = Attributes::ConfigInfo; @@ -72,7 +79,8 @@ struct SaiSystemPortTraits { using CreateAttributes = std::tuple< Attributes::ConfigInfo, Attributes::AdminState, - std::optional>; + std::optional, + std::optional>; }; SAI_ATTRIBUTE_NAME(SystemPort, Type) @@ -82,6 +90,7 @@ SAI_ATTRIBUTE_NAME(SystemPort, Port) SAI_ATTRIBUTE_NAME(SystemPort, AdminState) SAI_ATTRIBUTE_NAME(SystemPort, ConfigInfo) SAI_ATTRIBUTE_NAME(SystemPort, QosTcToQueueMap) +SAI_ATTRIBUTE_NAME(SystemPort, ShelPktDstEnable) class SystemPortApi : public SaiApi { public: diff --git a/fboss/agent/hw/sai/api/bcm/BufferApi.cpp b/fboss/agent/hw/sai/api/bcm/BufferApi.cpp index 32aa79ee7616d..78f4d7553f145 100644 --- a/fboss/agent/hw/sai/api/bcm/BufferApi.cpp +++ b/fboss/agent/hw/sai/api/bcm/BufferApi.cpp @@ -24,8 +24,7 @@ SaiBufferProfileTraits::Attributes::AttributeSharedFadtMaxTh::operator()() { std::optional SaiBufferProfileTraits::Attributes::AttributeSharedFadtMinTh::operator()() { -// TODO: Change to BRCM_SAI_SDK_DNX_GTE_11_0 once support is available in 12.0 -#if defined(BRCM_SAI_SDK_DNX_GTE_11_0) && !defined(BRCM_SAI_SDK_DNX_GTE_12_0) +#if defined(BRCM_SAI_SDK_DNX_GTE_11_0) return SAI_BUFFER_PROFILE_ATTR_SHARED_FADT_MIN_TH; #else return std::nullopt; @@ -34,8 +33,7 @@ SaiBufferProfileTraits::Attributes::AttributeSharedFadtMinTh::operator()() { std::optional SaiBufferProfileTraits::Attributes::AttributeSramFadtMinTh::operator()() { -// TODO: Change to BRCM_SAI_SDK_DNX_GTE_11_0 once support is available in 12.0 -#if defined(BRCM_SAI_SDK_DNX_GTE_11_0) && !defined(BRCM_SAI_SDK_DNX_GTE_12_0) +#if defined(BRCM_SAI_SDK_DNX_GTE_11_0) return SAI_BUFFER_PROFILE_ATTR_SRAM_FADT_MIN_TH; #else return std::nullopt; @@ -44,8 +42,7 @@ SaiBufferProfileTraits::Attributes::AttributeSramFadtMinTh::operator()() { std::optional SaiBufferProfileTraits::Attributes::AttributeSramFadtMaxTh::operator()() { -// TODO: Change to BRCM_SAI_SDK_DNX_GTE_11_0 once support is available in 12.0 -#if defined(BRCM_SAI_SDK_DNX_GTE_11_0) && !defined(BRCM_SAI_SDK_DNX_GTE_12_0) +#if defined(BRCM_SAI_SDK_DNX_GTE_11_0) return SAI_BUFFER_PROFILE_ATTR_SRAM_FADT_MAX_TH; #else return std::nullopt; @@ -54,8 +51,7 @@ SaiBufferProfileTraits::Attributes::AttributeSramFadtMaxTh::operator()() { std::optional SaiBufferProfileTraits::Attributes::AttributeSramFadtXonOffset::operator()() { -// TODO: Change to BRCM_SAI_SDK_DNX_GTE_11_0 once support is available in 12.0 -#if defined(BRCM_SAI_SDK_DNX_GTE_11_0) && !defined(BRCM_SAI_SDK_DNX_GTE_12_0) +#if defined(BRCM_SAI_SDK_DNX_GTE_11_0) return SAI_BUFFER_PROFILE_ATTR_SRAM_FADT_XON_OFFSET; #else return std::nullopt; diff --git a/fboss/agent/hw/sai/api/bcm/MirrorApi.cpp b/fboss/agent/hw/sai/api/bcm/MirrorApi.cpp index 3b06c27e2abbf..aa64e9f5d583c 100644 --- a/fboss/agent/hw/sai/api/bcm/MirrorApi.cpp +++ b/fboss/agent/hw/sai/api/bcm/MirrorApi.cpp @@ -3,7 +3,7 @@ #include "fboss/agent/hw/sai/api/MirrorApi.h" // TODO: Add support for 12.0 as well -#if defined(BRCM_SAI_SDK_DNX_GTE_11_0) && !defined(BRCM_SAI_SDK_DNX_GTE_12_0) +#if defined(BRCM_SAI_SDK_DNX_GTE_11_0) extern "C" { #ifndef IS_OSS_BRCM_SAI @@ -18,8 +18,25 @@ namespace facebook::fboss { std::optional SaiSflowMirrorTraits::Attributes::AttributeTcBufferLimit::operator()() { -// TODO: Add support for 12.0 as well -#if defined(BRCM_SAI_SDK_DNX_GTE_11_0) && !defined(BRCM_SAI_SDK_DNX_GTE_12_0) +#if defined(BRCM_SAI_SDK_DNX_GTE_11_0) + return SAI_MIRROR_SESSION_ATTR_TC_BUFFER_LIMIT; +#else + return std::nullopt; +#endif +} + +std::optional SaiEnhancedRemoteMirrorTraits::Attributes:: + AttributeTcBufferLimit::operator()() { +#if defined(BRCM_SAI_SDK_DNX_GTE_11_0) + return SAI_MIRROR_SESSION_ATTR_TC_BUFFER_LIMIT; +#else + return std::nullopt; +#endif +} + +std::optional +SaiLocalMirrorTraits::Attributes::AttributeTcBufferLimit::operator()() { +#if defined(BRCM_SAI_SDK_DNX_GTE_11_0) return SAI_MIRROR_SESSION_ATTR_TC_BUFFER_LIMIT; #else return std::nullopt; diff --git a/fboss/agent/hw/sai/api/bcm/PortApi.cpp b/fboss/agent/hw/sai/api/bcm/PortApi.cpp index b2dcccffa822c..6895fd8c1e571 100644 --- a/fboss/agent/hw/sai/api/bcm/PortApi.cpp +++ b/fboss/agent/hw/sai/api/bcm/PortApi.cpp @@ -269,4 +269,14 @@ SaiPortTraits::Attributes::AttributeCondEntropyRehashSeed::operator()() { return std::nullopt; #endif } + +std::optional +SaiPortTraits::Attributes::AttributeShelEnable::operator()() { +// TODO(zecheng): Update flag when new 12.0 release has the attribute +#if defined(SAI_VERSION_11_7_0_0_DNX_ODP) + return SAI_PORT_ATTR_SHEL_ENABLE; +#else + return std::nullopt; +#endif +} } // namespace facebook::fboss diff --git a/fboss/agent/hw/sai/api/bcm/SwitchApi.cpp b/fboss/agent/hw/sai/api/bcm/SwitchApi.cpp index d6f3650d81e61..adeee84f2a3de 100644 --- a/fboss/agent/hw/sai/api/bcm/SwitchApi.cpp +++ b/fboss/agent/hw/sai/api/bcm/SwitchApi.cpp @@ -74,8 +74,7 @@ SaiSwitchTraits::Attributes::AttributeSdkBootTimeWrapper::operator()() { std::optional SaiSwitchTraits::Attributes:: AttributeSramFreePercentXoffThWrapper::operator()() { -// TODO: Support is not yet available in 12.0 -#if defined(BRCM_SAI_SDK_DNX_GTE_11_0) && !defined(BRCM_SAI_SDK_DNX_GTE_12_0) +#if defined(BRCM_SAI_SDK_DNX_GTE_11_0) return SAI_SWITCH_ATTR_SRAM_FREE_PERCENT_XOFF_TH; #else return std::nullopt; @@ -84,8 +83,7 @@ std::optional SaiSwitchTraits::Attributes:: std::optional SaiSwitchTraits::Attributes:: AttributeSramFreePercentXonThWrapper::operator()() { -// TODO: Support is not yet available in 12.0 -#if defined(BRCM_SAI_SDK_DNX_GTE_11_0) && !defined(BRCM_SAI_SDK_DNX_GTE_12_0) +#if defined(BRCM_SAI_SDK_DNX_GTE_11_0) return SAI_SWITCH_ATTR_SRAM_FREE_PERCENT_XON_TH; #else return std::nullopt; @@ -94,8 +92,7 @@ std::optional SaiSwitchTraits::Attributes:: std::optional SaiSwitchTraits::Attributes:: AttributeFabricCllfcTxCreditThWrapper::operator()() { -// TODO: Support is not yet available in 12.0 -#if defined(BRCM_SAI_SDK_DNX_GTE_11_0) && !defined(BRCM_SAI_SDK_DNX_GTE_12_0) +#if defined(BRCM_SAI_SDK_DNX_GTE_11_0) return SAI_SWITCH_ATTR_FABRIC_CLLFC_TX_CREDIT_TH; #else return std::nullopt; @@ -191,7 +188,18 @@ void SwitchApi::registerSwitchEventCallback( rv, ApiType, "Unable to register parity error switch event callback"); // Register switch events -#if defined BRCM_SAI_SDK_GTE_11_0 +#if defined(SAI_VERSION_11_7_0_0_DNX_ODP) + // SAI_SWITCH_EVENT_TYPE_FIRMWARE_CRASHED is not supported on 12.0 yet + std::array events = { + SAI_SWITCH_EVENT_TYPE_PARITY_ERROR, + SAI_SWITCH_EVENT_TYPE_STABLE_FULL, + SAI_SWITCH_EVENT_TYPE_STABLE_ERROR, + SAI_SWITCH_EVENT_TYPE_UNCONTROLLED_SHUTDOWN, + SAI_SWITCH_EVENT_TYPE_WARM_BOOT_DOWNGRADE, + SAI_SWITCH_EVENT_TYPE_INTERRUPT, + SAI_SWITCH_EVENT_TYPE_FABRIC_AUTO_ISOLATE, + SAI_SWITCH_EVENT_TYPE_FIRMWARE_CRASHED}; +#elif defined BRCM_SAI_SDK_GTE_11_0 std::array events = { SAI_SWITCH_EVENT_TYPE_PARITY_ERROR, SAI_SWITCH_EVENT_TYPE_STABLE_FULL, @@ -385,4 +393,48 @@ SaiSwitchTraits::Attributes::AttributeMaxVoqs::operator()() { #endif return std::nullopt; } +std::optional +SaiSwitchTraits::Attributes::AttributeCondEntropyRehashPeriodUS::operator()() { +// TODO(zecheng): Update flag when new 12.0 release has the attribute +#if defined(SAI_VERSION_11_7_0_0_DNX_ODP) + return SAI_SWITCH_ATTR_COND_ENTROPY_REHASH_PERIOD_US; +#endif + return std::nullopt; +} + +std::optional +SaiSwitchTraits::Attributes::AttributeShelSrcIp::operator()() { +// TODO(zecheng): Update flag when new 12.0 release has the attribute +#if defined(SAI_VERSION_11_7_0_0_DNX_ODP) + return SAI_SWITCH_ATTR_SHEL_SRC_IP; +#endif + return std::nullopt; +} + +std::optional +SaiSwitchTraits::Attributes::AttributeShelDstIp::operator()() { +// TODO(zecheng): Update flag when new 12.0 release has the attribute +#if defined(SAI_VERSION_11_7_0_0_DNX_ODP) + return SAI_SWITCH_ATTR_SHEL_DST_IP; +#endif + return std::nullopt; +} + +std::optional +SaiSwitchTraits::Attributes::AttributeShelSrcMac::operator()() { +// TODO(zecheng): Update flag when new 12.0 release has the attribute +#if defined(SAI_VERSION_11_7_0_0_DNX_ODP) + return SAI_SWITCH_ATTR_SHEL_SRC_MAC; +#endif + return std::nullopt; +} + +std::optional +SaiSwitchTraits::Attributes::AttributeShelPeriodicInterval::operator()() { +// TODO(zecheng): Update flag when new 12.0 release has the attribute +#if defined(SAI_VERSION_11_7_0_0_DNX_ODP) + return SAI_SWITCH_ATTR_SHEL_PERIODIC_INTERVAL; +#endif + return std::nullopt; +} } // namespace facebook::fboss diff --git a/fboss/agent/hw/sai/api/bcm/SystemPortApi.cpp b/fboss/agent/hw/sai/api/bcm/SystemPortApi.cpp new file mode 100644 index 0000000000000..ba0d734f85f87 --- /dev/null +++ b/fboss/agent/hw/sai/api/bcm/SystemPortApi.cpp @@ -0,0 +1,27 @@ +// Copyright 2004-present Facebook. All Rights Reserved. + +#include "fboss/agent/hw/sai/api/SystemPortApi.h" + +extern "C" { +#include + +#ifndef IS_OSS_BRCM_SAI +#include +#else +#include +#endif +} + +namespace facebook::fboss { + +std::optional +SaiSystemPortTraits::Attributes::AttributeShelPktDstEnable::operator()() { +// TODO(zecheng): Update flag when new 12.0 release has the attribute +#if defined(SAI_VERSION_11_7_0_0_DNX_ODP) + return SAI_SYSTEM_PORT_ATTR_SHEL_PKT_DEST_ENABLE; +#else + return std::nullopt; +#endif +} + +} // namespace facebook::fboss diff --git a/fboss/agent/hw/sai/api/fake/FakeSaiExtensions.cpp b/fboss/agent/hw/sai/api/fake/FakeSaiExtensions.cpp index 310a487209cfe..c65d7d9f88932 100644 --- a/fboss/agent/hw/sai/api/fake/FakeSaiExtensions.cpp +++ b/fboss/agent/hw/sai/api/fake/FakeSaiExtensions.cpp @@ -6,6 +6,7 @@ #include "fboss/agent/hw/sai/api/PortApi.h" #include "fboss/agent/hw/sai/api/QueueApi.h" #include "fboss/agent/hw/sai/api/SwitchApi.h" +#include "fboss/agent/hw/sai/api/SystemPortApi.h" #include "fboss/agent/hw/sai/api/TamApi.h" extern "C" { @@ -242,6 +243,16 @@ SaiSflowMirrorTraits::Attributes::AttributeTcBufferLimit::operator()() { return std::nullopt; } +std::optional +SaiLocalMirrorTraits::Attributes::AttributeTcBufferLimit::operator()() { + return std::nullopt; +} + +std::optional SaiEnhancedRemoteMirrorTraits::Attributes:: + AttributeTcBufferLimit::operator()() { + return std::nullopt; +} + std::optional SaiSwitchTraits::Attributes::AttributeNoAclsForTrapsWrapper::operator()() { return std::nullopt; @@ -343,6 +354,31 @@ SaiSwitchTraits::Attributes::AttributeVoqDramBoundThWrapper::operator()() { return SAI_SWITCH_ATTR_VOQ_DRAM_BOUND_TH; } +std::optional +SaiSwitchTraits::Attributes::AttributeCondEntropyRehashPeriodUS::operator()() { + return SAI_SWITCH_ATTR_COND_ENTROPY_REHASH_PERIOD_US; +} + +std::optional +SaiSwitchTraits::Attributes::AttributeShelSrcIp::operator()() { + return SAI_SWITCH_ATTR_SHEL_SRC_IP; +} + +std::optional +SaiSwitchTraits::Attributes::AttributeShelDstIp::operator()() { + return SAI_SWITCH_ATTR_SHEL_DST_IP; +} + +std::optional +SaiSwitchTraits::Attributes::AttributeShelSrcMac::operator()() { + return SAI_SWITCH_ATTR_SHEL_SRC_MAC; +} + +std::optional +SaiSwitchTraits::Attributes::AttributeShelPeriodicInterval::operator()() { + return SAI_SWITCH_ATTR_SHEL_PERIODIC_INTERVAL; +} + std::optional SaiPortSerdesTraits::Attributes::AttributeTxDiffEncoderEnWrapper::operator()() { return SAI_PORT_SERDES_ATTR_EXT_TX_DIFF_ENCODER_EN; @@ -503,4 +539,13 @@ SaiSwitchTraits::Attributes::AttributeMaxVoqs::operator()() { return SAI_SWITCH_ATTR_MAX_VOQS; } +std::optional +SaiPortTraits::Attributes::AttributeShelEnable::operator()() { + return std::nullopt; +} + +std::optional +SaiSystemPortTraits::Attributes::AttributeShelPktDstEnable::operator()() { + return std::nullopt; +} } // namespace facebook::fboss diff --git a/fboss/agent/hw/sai/api/fake/saifakeextensions.h b/fboss/agent/hw/sai/api/fake/saifakeextensions.h index cf8e66442dc35..3b1cc56eac3cc 100644 --- a/fboss/agent/hw/sai/api/fake/saifakeextensions.h +++ b/fboss/agent/hw/sai/api/fake/saifakeextensions.h @@ -82,6 +82,11 @@ typedef enum _sai_switch_extensions_attr_t { SAI_SWITCH_ATTR_MAX_VOQS, SAI_SWITCH_ATTR_FABRIC_CLLFC_TX_CREDIT_TH, SAI_SWITCH_ATTR_VOQ_DRAM_BOUND_TH, + SAI_SWITCH_ATTR_COND_ENTROPY_REHASH_PERIOD_US, + SAI_SWITCH_ATTR_SHEL_SRC_IP, + SAI_SWITCH_ATTR_SHEL_DST_IP, + SAI_SWITCH_ATTR_SHEL_SRC_MAC, + SAI_SWITCH_ATTR_SHEL_PERIODIC_INTERVAL, } sai_switch_extensions_attr_t; typedef enum _sai_tam_event_extensions_attr_t { diff --git a/fboss/agent/hw/sai/api/oss/MirrorApi.cpp b/fboss/agent/hw/sai/api/oss/MirrorApi.cpp index 923ba68da9566..4aa903629a470 100644 --- a/fboss/agent/hw/sai/api/oss/MirrorApi.cpp +++ b/fboss/agent/hw/sai/api/oss/MirrorApi.cpp @@ -9,4 +9,14 @@ SaiSflowMirrorTraits::Attributes::AttributeTcBufferLimit::operator()() { return std::nullopt; } +std::optional SaiEnhancedRemoteMirrorTraits::Attributes:: + AttributeTcBufferLimit::operator()() { + return std::nullopt; +} + +std::optional +SaiLocalMirrorTraits::Attributes::AttributeTcBufferLimit::operator()() { + return std::nullopt; +} + } // namespace facebook::fboss diff --git a/fboss/agent/hw/sai/api/oss/PortApi.cpp b/fboss/agent/hw/sai/api/oss/PortApi.cpp index 769eba114bff1..f524b94383109 100644 --- a/fboss/agent/hw/sai/api/oss/PortApi.cpp +++ b/fboss/agent/hw/sai/api/oss/PortApi.cpp @@ -207,4 +207,9 @@ std::optional SaiPortTraits::Attributes::AttributeCondEntropyRehashSeed::operator()() { return std::nullopt; } + +std::optional +SaiPortTraits::Attributes::AttributeShelEnable::operator()() { + return std::nullopt; +} } // namespace facebook::fboss diff --git a/fboss/agent/hw/sai/api/oss/SwitchApi.cpp b/fboss/agent/hw/sai/api/oss/SwitchApi.cpp index 81653e29576da..d12a017fb6836 100644 --- a/fboss/agent/hw/sai/api/oss/SwitchApi.cpp +++ b/fboss/agent/hw/sai/api/oss/SwitchApi.cpp @@ -208,4 +208,28 @@ SaiSwitchTraits::Attributes::AttributeVoqDramBoundThWrapper::operator()() { return std::nullopt; } +std::optional +SaiSwitchTraits::Attributes::AttributeCondEntropyRehashPeriodUS::operator()() { + return std::nullopt; +} +std::optional +SaiSwitchTraits::Attributes::AttributeShelSrcIp::operator()() { + return std::nullopt; +} + +std::optional +SaiSwitchTraits::Attributes::AttributeShelDstIp::operator()() { + return std::nullopt; +} + +std::optional +SaiSwitchTraits::Attributes::AttributeShelSrcMac::operator()() { + return std::nullopt; +} + +std::optional +SaiSwitchTraits::Attributes::AttributeShelPeriodicInterval::operator()() { + return std::nullopt; +} + } // namespace facebook::fboss diff --git a/fboss/agent/hw/sai/api/oss/SystemPortApi.cpp b/fboss/agent/hw/sai/api/oss/SystemPortApi.cpp new file mode 100644 index 0000000000000..2da4f8868ac58 --- /dev/null +++ b/fboss/agent/hw/sai/api/oss/SystemPortApi.cpp @@ -0,0 +1,12 @@ +// Copyright 2004-present Facebook. All Rights Reserved. + +#include "fboss/agent/hw/sai/api/SystemPortApi.h" + +namespace facebook::fboss { + +std::optional +SaiSystemPortTraits::Attributes::AttributeShelPktDstEnable::operator()() { + return std::nullopt; +} + +} // namespace facebook::fboss diff --git a/fboss/agent/hw/sai/api/tajo/MirrorApi.cpp b/fboss/agent/hw/sai/api/tajo/MirrorApi.cpp index 923ba68da9566..4aa903629a470 100644 --- a/fboss/agent/hw/sai/api/tajo/MirrorApi.cpp +++ b/fboss/agent/hw/sai/api/tajo/MirrorApi.cpp @@ -9,4 +9,14 @@ SaiSflowMirrorTraits::Attributes::AttributeTcBufferLimit::operator()() { return std::nullopt; } +std::optional SaiEnhancedRemoteMirrorTraits::Attributes:: + AttributeTcBufferLimit::operator()() { + return std::nullopt; +} + +std::optional +SaiLocalMirrorTraits::Attributes::AttributeTcBufferLimit::operator()() { + return std::nullopt; +} + } // namespace facebook::fboss diff --git a/fboss/agent/hw/sai/api/tajo/PortApi.cpp b/fboss/agent/hw/sai/api/tajo/PortApi.cpp index 28e50027cdc91..6fec0a3b9bea8 100644 --- a/fboss/agent/hw/sai/api/tajo/PortApi.cpp +++ b/fboss/agent/hw/sai/api/tajo/PortApi.cpp @@ -221,4 +221,8 @@ SaiPortTraits::Attributes::AttributeCondEntropyRehashSeed::operator()() { return std::nullopt; } +std::optional +SaiPortTraits::Attributes::AttributeShelEnable::operator()() { + return std::nullopt; +} } // namespace facebook::fboss diff --git a/fboss/agent/hw/sai/api/tajo/SwitchApi.cpp b/fboss/agent/hw/sai/api/tajo/SwitchApi.cpp index c0a30d9c5d086..3ce2ba2d71f69 100644 --- a/fboss/agent/hw/sai/api/tajo/SwitchApi.cpp +++ b/fboss/agent/hw/sai/api/tajo/SwitchApi.cpp @@ -229,4 +229,28 @@ SaiSwitchTraits::Attributes::AttributeVoqDramBoundThWrapper::operator()() { return std::nullopt; } +std::optional +SaiSwitchTraits::Attributes::AttributeCondEntropyRehashPeriodUS::operator()() { + return std::nullopt; +} + +std::optional +SaiSwitchTraits::Attributes::AttributeShelSrcIp::operator()() { + return std::nullopt; +} + +std::optional +SaiSwitchTraits::Attributes::AttributeShelDstIp::operator()() { + return std::nullopt; +} + +std::optional +SaiSwitchTraits::Attributes::AttributeShelSrcMac::operator()() { + return std::nullopt; +} + +std::optional +SaiSwitchTraits::Attributes::AttributeShelPeriodicInterval::operator()() { + return std::nullopt; +} } // namespace facebook::fboss diff --git a/fboss/agent/hw/sai/api/tajo/SystemPortApi.cpp b/fboss/agent/hw/sai/api/tajo/SystemPortApi.cpp new file mode 100644 index 0000000000000..2da4f8868ac58 --- /dev/null +++ b/fboss/agent/hw/sai/api/tajo/SystemPortApi.cpp @@ -0,0 +1,12 @@ +// Copyright 2004-present Facebook. All Rights Reserved. + +#include "fboss/agent/hw/sai/api/SystemPortApi.h" + +namespace facebook::fboss { + +std::optional +SaiSystemPortTraits::Attributes::AttributeShelPktDstEnable::operator()() { + return std::nullopt; +} + +} // namespace facebook::fboss diff --git a/fboss/agent/hw/sai/api/tests/AclApiTest.cpp b/fboss/agent/hw/sai/api/tests/AclApiTest.cpp index 3bdba78828921..cefa8fdb10b7d 100644 --- a/fboss/agent/hw/sai/api/tests/AclApiTest.cpp +++ b/fboss/agent/hw/sai/api/tests/AclApiTest.cpp @@ -21,6 +21,8 @@ using namespace facebook::fboss; class AclApiTest : public ::testing::Test { public: + using UdfGroupData = + std::pair, std::vector>; void SetUp() override { fs = FakeSai::getInstance(); sai_api_initialize(0, nullptr); @@ -247,6 +249,32 @@ class AclApiTest : public ::testing::Test { return std::make_pair(17, 0xFF); } + sai_object_id_t kUserDefinedFieldGroup0() const { + return 100; + } + + sai_object_id_t kUserDefinedFieldGroup1() const { + return 101; + } + + sai_object_id_t kUserDefinedFieldGroup2() const { + return 102; + } + + sai_object_id_t kUserDefinedFieldGroup3() const { + return 103; + } + + sai_object_id_t kUserDefinedFieldGroup4() const { + return 104; + } + + UdfGroupData kUDFGroupData() const { + std::vector data = {0x11, 0x22}; + std::vector mask = {0xFF, 0xFF}; + return std::make_pair(std::move(data), std::move(mask)); + } + sai_uint32_t kPacketAction() const { return SAI_PACKET_ACTION_DROP; } @@ -372,6 +400,11 @@ class AclApiTest : public ::testing::Test { true, // outer vlan id true, // bth opcode true, // ipv6 next header + kUserDefinedFieldGroup0(), // udf group 0 + kUserDefinedFieldGroup1(), // udf group 1 + kUserDefinedFieldGroup2(), // udf group 2 + kUserDefinedFieldGroup3(), // udf group 3 + kUserDefinedFieldGroup4(), // udf group 4 }, kSwitchID()); } @@ -456,6 +489,16 @@ class AclApiTest : public ::testing::Test { AclEntryFieldU8(kBthOpcode())}; SaiAclEntryTraits::Attributes::FieldIpv6NextHeader aclFieldIpv6NextHeaderAttribute{AclEntryFieldU8(kIpv6NextHeader())}; + SaiAclEntryTraits::Attributes::UserDefinedFieldGroupMin0 + aclUserDefinedGroup0{AclEntryFieldU8List{kUDFGroupData()}}; + SaiAclEntryTraits::Attributes::UserDefinedFieldGroupMin1 + aclUserDefinedGroup1{AclEntryFieldU8List{kUDFGroupData()}}; + SaiAclEntryTraits::Attributes::UserDefinedFieldGroupMin2 + aclUserDefinedGroup2{AclEntryFieldU8List{kUDFGroupData()}}; + SaiAclEntryTraits::Attributes::UserDefinedFieldGroupMin3 + aclUserDefinedGroup3{AclEntryFieldU8List{kUDFGroupData()}}; + SaiAclEntryTraits::Attributes::UserDefinedFieldGroupMin4 + aclUserDefinedGroup4{AclEntryFieldU8List{kUDFGroupData()}}; SaiAclEntryTraits::Attributes::ActionPacketAction aclActionPacketAction{ AclEntryActionU32(kPacketAction())}; SaiAclEntryTraits::Attributes::ActionCounter aclActionCounter{ @@ -507,6 +550,11 @@ class AclApiTest : public ::testing::Test { aclFieldOuterVlanIdAttribute, aclFieldBthOpcodeAttribute, aclFieldIpv6NextHeaderAttribute, + aclUserDefinedGroup0, + aclUserDefinedGroup1, + aclUserDefinedGroup2, + aclUserDefinedGroup3, + aclUserDefinedGroup4, aclActionPacketAction, aclActionCounter, aclActionSetTC, @@ -639,6 +687,11 @@ class AclApiTest : public ::testing::Test { const std::pair& outerVlanId, const std::pair& bthOpcode, const std::pair& ipv6NextHeader, + const UdfGroupData& udfGroupData0, + const UdfGroupData& udfGroupData1, + const UdfGroupData& udfGroupData2, + const UdfGroupData& udfGroupData3, + const UdfGroupData& udfGroupData4, sai_uint32_t packetAction, sai_object_id_t counter, sai_uint8_t setTC, @@ -706,6 +759,16 @@ class AclApiTest : public ::testing::Test { aclEntryId, SaiAclEntryTraits::Attributes::FieldBthOpcode()); auto aclFieldIpv6NextHeaderGot = aclApi->getAttribute( aclEntryId, SaiAclEntryTraits::Attributes::FieldIpv6NextHeader()); + auto aclUdfGroupData0Got = aclApi->getAttribute( + aclEntryId, SaiAclEntryTraits::Attributes::UserDefinedFieldGroupMin0()); + auto aclUdfGroupData1Got = aclApi->getAttribute( + aclEntryId, SaiAclEntryTraits::Attributes::UserDefinedFieldGroupMin1()); + auto aclUdfGroupData2Got = aclApi->getAttribute( + aclEntryId, SaiAclEntryTraits::Attributes::UserDefinedFieldGroupMin2()); + auto aclUdfGroupData3Got = aclApi->getAttribute( + aclEntryId, SaiAclEntryTraits::Attributes::UserDefinedFieldGroupMin3()); + auto aclUdfGroupData4Got = aclApi->getAttribute( + aclEntryId, SaiAclEntryTraits::Attributes::UserDefinedFieldGroupMin4()); auto aclActionPacketActionGot = aclApi->getAttribute( aclEntryId, SaiAclEntryTraits::Attributes::ActionPacketAction()); @@ -757,6 +820,11 @@ class AclApiTest : public ::testing::Test { EXPECT_EQ(aclFieldOuterVlanIdGot.getDataAndMask(), outerVlanId); EXPECT_EQ(aclFieldBthOpcodeGot.getDataAndMask(), bthOpcode); EXPECT_EQ(aclFieldIpv6NextHeaderGot.getDataAndMask(), ipv6NextHeader); + EXPECT_EQ(aclUdfGroupData0Got.getDataAndMask(), udfGroupData0); + EXPECT_EQ(aclUdfGroupData1Got.getDataAndMask(), udfGroupData1); + EXPECT_EQ(aclUdfGroupData2Got.getDataAndMask(), udfGroupData2); + EXPECT_EQ(aclUdfGroupData3Got.getDataAndMask(), udfGroupData3); + EXPECT_EQ(aclUdfGroupData4Got.getDataAndMask(), udfGroupData4); EXPECT_EQ(aclActionPacketActionGot.getData(), packetAction); EXPECT_EQ(aclActionCounterGot.getData(), counter); @@ -913,6 +981,16 @@ TEST_F(AclApiTest, getAclTableAttribute) { aclTableId, SaiAclTableTraits::Attributes::FieldRouteDstUserMeta()); auto aclTableFieldNeighborDstUserMetaGot = aclApi->getAttribute( aclTableId, SaiAclTableTraits::Attributes::FieldNeighborDstUserMeta()); + auto aclTableUserDefinedFieldGroup0 = aclApi->getAttribute( + aclTableId, SaiAclTableTraits::Attributes::UserDefinedFieldGroupMin0()); + auto aclTableUserDefinedFieldGroup1 = aclApi->getAttribute( + aclTableId, SaiAclTableTraits::Attributes::UserDefinedFieldGroupMin1()); + auto aclTableUserDefinedFieldGroup2 = aclApi->getAttribute( + aclTableId, SaiAclTableTraits::Attributes::UserDefinedFieldGroupMin2()); + auto aclTableUserDefinedFieldGroup3 = aclApi->getAttribute( + aclTableId, SaiAclTableTraits::Attributes::UserDefinedFieldGroupMin3()); + auto aclTableUserDefinedFieldGroup4 = aclApi->getAttribute( + aclTableId, SaiAclTableTraits::Attributes::UserDefinedFieldGroupMin4()); EXPECT_EQ(aclTableStageGot, SAI_ACL_STAGE_INGRESS); EXPECT_EQ(aclTableBindPointTypeListGot.size(), 1); @@ -944,6 +1022,11 @@ TEST_F(AclApiTest, getAclTableAttribute) { EXPECT_EQ(aclTableFieldFdbDstUserMetaGot, true); EXPECT_EQ(aclTableFieldRouteDstUserMetaGot, true); EXPECT_EQ(aclTableFieldNeighborDstUserMetaGot, true); + EXPECT_EQ(aclTableUserDefinedFieldGroup0, kUserDefinedFieldGroup0()); + EXPECT_EQ(aclTableUserDefinedFieldGroup1, kUserDefinedFieldGroup1()); + EXPECT_EQ(aclTableUserDefinedFieldGroup2, kUserDefinedFieldGroup2()); + EXPECT_EQ(aclTableUserDefinedFieldGroup3, kUserDefinedFieldGroup3()); + EXPECT_EQ(aclTableUserDefinedFieldGroup4, kUserDefinedFieldGroup4()); } TEST_F(AclApiTest, getAclEntryAttribute) { @@ -982,6 +1065,11 @@ TEST_F(AclApiTest, getAclEntryAttribute) { kOuterVlanId(), kBthOpcode(), kIpv6NextHeader(), + kUDFGroupData(), + kUDFGroupData(), + kUDFGroupData(), + kUDFGroupData(), + kUDFGroupData(), kPacketAction(), kCounter(), kSetTC(), @@ -1168,6 +1256,16 @@ TEST_F(AclApiTest, setAclEntryAttribute) { AclEntryFieldU8(kBthOpcode())}; SaiAclEntryTraits::Attributes::FieldIpv6NextHeader aclFieldIpv6NextHeader{ AclEntryFieldU8(kIpv6NextHeader())}; + SaiAclEntryTraits::Attributes::UserDefinedFieldGroupMin0 aclUserDefinedGroup0{ + AclEntryFieldU8List{kUDFGroupData()}}; + SaiAclEntryTraits::Attributes::UserDefinedFieldGroupMin1 aclUserDefinedGroup1{ + AclEntryFieldU8List{kUDFGroupData()}}; + SaiAclEntryTraits::Attributes::UserDefinedFieldGroupMin2 aclUserDefinedGroup2{ + AclEntryFieldU8List{kUDFGroupData()}}; + SaiAclEntryTraits::Attributes::UserDefinedFieldGroupMin3 aclUserDefinedGroup3{ + AclEntryFieldU8List{kUDFGroupData()}}; + SaiAclEntryTraits::Attributes::UserDefinedFieldGroupMin4 aclUserDefinedGroup4{ + AclEntryFieldU8List{kUDFGroupData()}}; SaiAclEntryTraits::Attributes::ActionPacketAction aclActionPacketAction2{ AclEntryActionU32(kPacketAction2())}; @@ -1217,6 +1315,11 @@ TEST_F(AclApiTest, setAclEntryAttribute) { aclApi->setAttribute(aclEntryId, aclFieldOuterVlanId); aclApi->setAttribute(aclEntryId, aclFieldBthOpcode); aclApi->setAttribute(aclEntryId, aclFieldIpv6NextHeader); + aclApi->setAttribute(aclEntryId, aclUserDefinedGroup0); + aclApi->setAttribute(aclEntryId, aclUserDefinedGroup1); + aclApi->setAttribute(aclEntryId, aclUserDefinedGroup2); + aclApi->setAttribute(aclEntryId, aclUserDefinedGroup3); + aclApi->setAttribute(aclEntryId, aclUserDefinedGroup4); aclApi->setAttribute(aclEntryId, aclActionPacketAction2); aclApi->setAttribute(aclEntryId, aclActionCounter2); aclApi->setAttribute(aclEntryId, aclActionSetTC2); @@ -1256,6 +1359,11 @@ TEST_F(AclApiTest, setAclEntryAttribute) { kOuterVlanId(), kBthOpcode(), kIpv6NextHeader(), + kUDFGroupData(), + kUDFGroupData(), + kUDFGroupData(), + kUDFGroupData(), + kUDFGroupData(), kPacketAction2(), kCounter2(), kSetTC2(), diff --git a/fboss/agent/hw/sai/api/tests/AddressUtilTest.cpp b/fboss/agent/hw/sai/api/tests/AddressUtilTest.cpp index 568cdece5d2a3..f4858ad061977 100644 --- a/fboss/agent/hw/sai/api/tests/AddressUtilTest.cpp +++ b/fboss/agent/hw/sai/api/tests/AddressUtilTest.cpp @@ -10,13 +10,9 @@ #include "fboss/agent/hw/sai/api/AddressUtil.h" #include -#include #include -#include -#include - using namespace facebook::fboss; static constexpr folly::StringPiece str4 = "42.42.12.34"; diff --git a/fboss/agent/hw/sai/api/tests/AttributeTest.cpp b/fboss/agent/hw/sai/api/tests/AttributeTest.cpp index 659a0a1db8b23..55dac8726295f 100644 --- a/fboss/agent/hw/sai/api/tests/AttributeTest.cpp +++ b/fboss/agent/hw/sai/api/tests/AttributeTest.cpp @@ -10,8 +10,6 @@ #include "fboss/agent/hw/sai/api/LoggingUtil.h" #include "fboss/agent/hw/sai/api/SaiAttribute.h" -#include - #include #include #include diff --git a/fboss/agent/hw/sai/api/tests/LagApiTest.cpp b/fboss/agent/hw/sai/api/tests/LagApiTest.cpp index e9a25b464a0e8..d6c0bd388baf7 100644 --- a/fboss/agent/hw/sai/api/tests/LagApiTest.cpp +++ b/fboss/agent/hw/sai/api/tests/LagApiTest.cpp @@ -1,7 +1,6 @@ // Copyright 2004-present Facebook. All Rights Reserved. #include "fboss/agent/hw/sai/api/LagApi.h" -#include "fboss/agent/hw/sai/api/PortApi.h" #include "fboss/agent/hw/sai/fake/FakeSai.h" #include diff --git a/fboss/agent/hw/sai/api/tests/MirrorApiTest.cpp b/fboss/agent/hw/sai/api/tests/MirrorApiTest.cpp index 897fe37717fa3..9872f413daa25 100644 --- a/fboss/agent/hw/sai/api/tests/MirrorApiTest.cpp +++ b/fboss/agent/hw/sai/api/tests/MirrorApiTest.cpp @@ -38,7 +38,7 @@ class MirrorApiTest : public ::testing::Test { MirrorSaiId createLocalMirror(const sai_object_id_t portId) const { return mirrorApi->create( - {SAI_MIRROR_SESSION_TYPE_LOCAL, portId}, 0); + {SAI_MIRROR_SESSION_TYPE_LOCAL, portId, std::nullopt}, 0); } MirrorSaiId createEnhancedRemoteMirror( @@ -66,7 +66,8 @@ class MirrorApiTest : public ::testing::Test { ipHeaderVersion, ttl, truncateSize, - samplingRate}, + samplingRate, + std::nullopt}, 0); } diff --git a/fboss/agent/hw/sai/api/tests/NeighborApiTest.cpp b/fboss/agent/hw/sai/api/tests/NeighborApiTest.cpp index 0a70edfa7a63d..d24683d9d0d27 100644 --- a/fboss/agent/hw/sai/api/tests/NeighborApiTest.cpp +++ b/fboss/agent/hw/sai/api/tests/NeighborApiTest.cpp @@ -8,7 +8,6 @@ * */ #include "fboss/agent/hw/sai/api/NeighborApi.h" -#include "fboss/agent/hw/sai/api/MplsApi.h" #include "fboss/agent/hw/sai/fake/FakeSai.h" #include diff --git a/fboss/agent/hw/sai/api/tests/PortApiTest.cpp b/fboss/agent/hw/sai/api/tests/PortApiTest.cpp index eea55e665d8f5..4ec8759845a03 100644 --- a/fboss/agent/hw/sai/api/tests/PortApiTest.cpp +++ b/fboss/agent/hw/sai/api/tests/PortApiTest.cpp @@ -82,6 +82,7 @@ class PortApiTest : public ::testing::Test { std::nullopt, // CondEntropyRehashEnable std::nullopt, // CondEntropyRehashPeriodUS std::nullopt, // CondEntropyRehashSeed + std::nullopt, // ShelEnable }; return portApi->create(a, 0); } diff --git a/fboss/agent/hw/sai/api/tests/SystemPortApiTest.cpp b/fboss/agent/hw/sai/api/tests/SystemPortApiTest.cpp index bd84615c2265c..ce3f17f377123 100644 --- a/fboss/agent/hw/sai/api/tests/SystemPortApiTest.cpp +++ b/fboss/agent/hw/sai/api/tests/SystemPortApiTest.cpp @@ -41,7 +41,7 @@ class SystemPortApiTest : public ::testing::Test { SaiSystemPortTraits::Attributes::ConfigInfo confInfo{config}; SaiSystemPortTraits::Attributes::AdminState admin{enabled}; SaiSystemPortTraits::CreateAttributes sysPort{ - confInfo, admin, std::nullopt}; + confInfo, admin, std::nullopt, std::nullopt}; auto saiId = systemPortApi->create(sysPort, 0); return saiId; } diff --git a/fboss/agent/hw/sai/benchmarks/BUCK b/fboss/agent/hw/sai/benchmarks/BUCK index 05b0fe97fa3e4..d0b31cd12fa17 100644 --- a/fboss/agent/hw/sai/benchmarks/BUCK +++ b/fboss/agent/hw/sai/benchmarks/BUCK @@ -29,6 +29,7 @@ sai_mono_agent_benchmark( "//fboss/agent/hw/benchmarks:hw_init_and_exit_voq", "//fboss/agent/hw/benchmarks:hw_rib_resolution_speed", "//fboss/agent/hw/benchmarks:hw_rib_sync_fib_speed", + "//fboss/agent/hw/benchmarks:hw_rx_slow_path_arp_rate", "//fboss/agent/hw/benchmarks:hw_rx_slow_path_rate", "//fboss/agent/hw/benchmarks:hw_stats_collection_speed", "//fboss/agent/hw/benchmarks:hw_switch_reachability_change_speed", diff --git a/fboss/agent/hw/sai/diag/DiagShell.cpp b/fboss/agent/hw/sai/diag/DiagShell.cpp index e4ed57eb74dc1..89146d3852288 100644 --- a/fboss/agent/hw/sai/diag/DiagShell.cpp +++ b/fboss/agent/hw/sai/diag/DiagShell.cpp @@ -22,7 +22,6 @@ #include #include -#include #include #include diff --git a/fboss/agent/hw/sai/diag/DiagShellClient.cpp b/fboss/agent/hw/sai/diag/DiagShellClient.cpp index ff4443e972b89..76e6f9ba3f886 100644 --- a/fboss/agent/hw/sai/diag/DiagShellClient.cpp +++ b/fboss/agent/hw/sai/diag/DiagShellClient.cpp @@ -16,11 +16,9 @@ #include #include #include -#include #include #include #include -#include #include "fboss/agent/hw/sai/diag/DiagShellClient.h" #include diff --git a/fboss/agent/hw/sai/fake/FakeSai.cpp b/fboss/agent/hw/sai/fake/FakeSai.cpp index 1888dfd83661e..11652a6eb953d 100644 --- a/fboss/agent/hw/sai/fake/FakeSai.cpp +++ b/fboss/agent/hw/sai/fake/FakeSai.cpp @@ -12,8 +12,6 @@ #include #include -#include - namespace { struct singleton_tag_type {}; } // namespace diff --git a/fboss/agent/hw/sai/fake/FakeSaiAcl.cpp b/fboss/agent/hw/sai/fake/FakeSaiAcl.cpp index 4466766ab1238..c7ebaf0b4c2a3 100644 --- a/fboss/agent/hw/sai/fake/FakeSaiAcl.cpp +++ b/fboss/agent/hw/sai/fake/FakeSaiAcl.cpp @@ -837,6 +837,24 @@ sai_status_t set_acl_entry_attribute_fn( return res; } +sai_status_t acl_entry_copy_attr_to_u8list( + std::vector& data, + std::vector& mask, + sai_acl_field_data_t* aclfield) { + if (aclfield->data.u8list.count < data.size() || + aclfield->mask.u8list.count < mask.size()) { + aclfield->data.u8list.count = data.size(); + aclfield->mask.u8list.count = mask.size(); + return SAI_STATUS_BUFFER_OVERFLOW; + } + aclfield->enable = true; + aclfield->data.u8list.count = data.size(); + aclfield->mask.u8list.count = mask.size(); + aclfield->data.u8list.list = data.data(); + aclfield->mask.u8list.list = mask.data(); + return SAI_STATUS_SUCCESS; +} + sai_status_t get_acl_entry_attribute_fn( sai_object_id_t acl_entry_id, uint32_t attr_count, @@ -1011,65 +1029,30 @@ sai_status_t get_acl_entry_attribute_fn( attr_list[i].value.aclfield.mask.u8 = aclEntry.fieldIpv6NextHeaderMask; break; case SAI_ACL_ENTRY_ATTR_USER_DEFINED_FIELD_GROUP_MIN: - attr_list[i].value.aclfield.enable = - aclEntry.userDefinedFieldGroupMinEnable; - attr_list[i].value.aclfield.data.u8list.count = - aclEntry.userDefinedFieldGroupMinData.size(); - attr_list[i].value.aclfield.mask.u8list.count = - aclEntry.userDefinedFieldGroupMinMask.size(); - attr_list[i].value.aclfield.data.u8list.list = - aclEntry.userDefinedFieldGroupMinData.data(); - attr_list[i].value.aclfield.mask.u8list.list = - aclEntry.userDefinedFieldGroupMinMask.data(); - break; + return acl_entry_copy_attr_to_u8list( + aclEntry.userDefinedFieldGroupMinData, + aclEntry.userDefinedFieldGroupMinMask, + &attr_list[i].value.aclfield); case (SAI_ACL_ENTRY_ATTR_USER_DEFINED_FIELD_GROUP_MIN + 1): - attr_list[i].value.aclfield.enable = - aclEntry.userDefinedFieldGroupMin1Enable; - attr_list[i].value.aclfield.data.u8list.count = - aclEntry.userDefinedFieldGroupMin1Data.size(); - attr_list[i].value.aclfield.mask.u8list.count = - aclEntry.userDefinedFieldGroupMin1Mask.size(); - attr_list[i].value.aclfield.data.u8list.list = - aclEntry.userDefinedFieldGroupMin1Data.data(); - attr_list[i].value.aclfield.mask.u8list.list = - aclEntry.userDefinedFieldGroupMin1Mask.data(); - break; + return acl_entry_copy_attr_to_u8list( + aclEntry.userDefinedFieldGroupMin1Data, + aclEntry.userDefinedFieldGroupMin1Mask, + &attr_list[i].value.aclfield); case (SAI_ACL_ENTRY_ATTR_USER_DEFINED_FIELD_GROUP_MIN + 2): - attr_list[i].value.aclfield.enable = - aclEntry.userDefinedFieldGroupMin2Enable; - attr_list[i].value.aclfield.data.u8list.count = - aclEntry.userDefinedFieldGroupMin2Data.size(); - attr_list[i].value.aclfield.mask.u8list.count = - aclEntry.userDefinedFieldGroupMin2Mask.size(); - attr_list[i].value.aclfield.data.u8list.list = - aclEntry.userDefinedFieldGroupMin2Data.data(); - attr_list[i].value.aclfield.mask.u8list.list = - aclEntry.userDefinedFieldGroupMin2Mask.data(); - break; + return acl_entry_copy_attr_to_u8list( + aclEntry.userDefinedFieldGroupMin2Data, + aclEntry.userDefinedFieldGroupMin2Mask, + &attr_list[i].value.aclfield); case (SAI_ACL_ENTRY_ATTR_USER_DEFINED_FIELD_GROUP_MIN + 3): - attr_list[i].value.aclfield.enable = - aclEntry.userDefinedFieldGroupMin3Enable; - attr_list[i].value.aclfield.data.u8list.count = - aclEntry.userDefinedFieldGroupMin3Data.size(); - attr_list[i].value.aclfield.mask.u8list.count = - aclEntry.userDefinedFieldGroupMin3Mask.size(); - attr_list[i].value.aclfield.data.u8list.list = - aclEntry.userDefinedFieldGroupMin3Data.data(); - attr_list[i].value.aclfield.mask.u8list.list = - aclEntry.userDefinedFieldGroupMin3Mask.data(); - break; + return acl_entry_copy_attr_to_u8list( + aclEntry.userDefinedFieldGroupMin3Data, + aclEntry.userDefinedFieldGroupMin3Mask, + &attr_list[i].value.aclfield); case (SAI_ACL_ENTRY_ATTR_USER_DEFINED_FIELD_GROUP_MIN + 4): - attr_list[i].value.aclfield.enable = - aclEntry.userDefinedFieldGroupMin4Enable; - attr_list[i].value.aclfield.data.u8list.count = - aclEntry.userDefinedFieldGroupMin4Data.size(); - attr_list[i].value.aclfield.mask.u8list.count = - aclEntry.userDefinedFieldGroupMin4Mask.size(); - attr_list[i].value.aclfield.data.u8list.list = - aclEntry.userDefinedFieldGroupMin4Data.data(); - attr_list[i].value.aclfield.mask.u8list.list = - aclEntry.userDefinedFieldGroupMin4Mask.data(); - break; + return acl_entry_copy_attr_to_u8list( + aclEntry.userDefinedFieldGroupMin4Data, + aclEntry.userDefinedFieldGroupMin4Mask, + &attr_list[i].value.aclfield); case SAI_ACL_ENTRY_ATTR_ACTION_PACKET_ACTION: attr_list[i].value.aclaction.enable = aclEntry.actionPacketActionEnable; diff --git a/fboss/agent/hw/sai/fake/FakeSaiBridge.cpp b/fboss/agent/hw/sai/fake/FakeSaiBridge.cpp index e0227de485639..7f4aeadbde445 100644 --- a/fboss/agent/hw/sai/fake/FakeSaiBridge.cpp +++ b/fboss/agent/hw/sai/fake/FakeSaiBridge.cpp @@ -11,7 +11,6 @@ #include "fboss/agent/hw/sai/fake/FakeSaiBridge.h" #include "fboss/agent/hw/sai/fake/FakeSai.h" -#include #include using facebook::fboss::FakeSai; diff --git a/fboss/agent/hw/sai/fake/FakeSaiBuffer.cpp b/fboss/agent/hw/sai/fake/FakeSaiBuffer.cpp index fc5b42687b95b..b67913f9b15da 100644 --- a/fboss/agent/hw/sai/fake/FakeSaiBuffer.cpp +++ b/fboss/agent/hw/sai/fake/FakeSaiBuffer.cpp @@ -10,7 +10,6 @@ #include "fboss/agent/hw/sai/fake/FakeSaiBuffer.h" #include "fboss/agent/hw/sai/fake/FakeSai.h" -#include #include using facebook::fboss::FakeQueue; diff --git a/fboss/agent/hw/sai/fake/FakeSaiFdb.cpp b/fboss/agent/hw/sai/fake/FakeSaiFdb.cpp index 92f86853e5455..d46d022c34ddb 100644 --- a/fboss/agent/hw/sai/fake/FakeSaiFdb.cpp +++ b/fboss/agent/hw/sai/fake/FakeSaiFdb.cpp @@ -12,9 +12,6 @@ #include "fboss/agent/hw/sai/api/AddressUtil.h" -#include -#include - using facebook::fboss::FakeFdb; using facebook::fboss::FakeSai; diff --git a/fboss/agent/hw/sai/fake/FakeSaiHostif.cpp b/fboss/agent/hw/sai/fake/FakeSaiHostif.cpp index c9b52bcb00e40..c3686fe0bd4f2 100644 --- a/fboss/agent/hw/sai/fake/FakeSaiHostif.cpp +++ b/fboss/agent/hw/sai/fake/FakeSaiHostif.cpp @@ -8,7 +8,6 @@ * */ #include "fboss/agent/hw/sai/fake/FakeSaiHostif.h" -#include "fboss/agent/hw/sai/api/SaiVersion.h" #include "fboss/agent/hw/sai/fake/FakeSai.h" #include diff --git a/fboss/agent/hw/sai/fake/FakeSaiMirror.cpp b/fboss/agent/hw/sai/fake/FakeSaiMirror.cpp index c7ba80fc55f37..74e3c4edbb0b0 100644 --- a/fboss/agent/hw/sai/fake/FakeSaiMirror.cpp +++ b/fboss/agent/hw/sai/fake/FakeSaiMirror.cpp @@ -8,11 +8,9 @@ * */ #include "fboss/agent/hw/sai/api/AddressUtil.h" -#include "fboss/agent/hw/sai/api/SaiVersion.h" #include "fboss/agent/hw/sai/fake/FakeSai.h" #include "fboss/agent/hw/sai/fake/FakeSaiPort.h" -#include #include using facebook::fboss::FakePort; diff --git a/fboss/agent/hw/sai/fake/FakeSaiNeighbor.cpp b/fboss/agent/hw/sai/fake/FakeSaiNeighbor.cpp index 32fa5cfb394b2..7122c079e9ecd 100644 --- a/fboss/agent/hw/sai/fake/FakeSaiNeighbor.cpp +++ b/fboss/agent/hw/sai/fake/FakeSaiNeighbor.cpp @@ -12,7 +12,6 @@ #include "fboss/agent/hw/sai/api/AddressUtil.h" -#include #include using facebook::fboss::FakeNeighbor; diff --git a/fboss/agent/hw/sai/fake/FakeSaiNextHop.cpp b/fboss/agent/hw/sai/fake/FakeSaiNextHop.cpp index e81f9f2b4b55f..7ccfb8a53ba31 100644 --- a/fboss/agent/hw/sai/fake/FakeSaiNextHop.cpp +++ b/fboss/agent/hw/sai/fake/FakeSaiNextHop.cpp @@ -8,11 +8,9 @@ * */ #include "fboss/agent/hw/sai/api/AddressUtil.h" -#include "fboss/agent/hw/sai/api/SaiVersion.h" #include "fboss/agent/hw/sai/fake/FakeSai.h" #include "fboss/agent/hw/sai/fake/FakeSaiPort.h" -#include #include using facebook::fboss::FakePort; diff --git a/fboss/agent/hw/sai/fake/FakeSaiObject.cpp b/fboss/agent/hw/sai/fake/FakeSaiObject.cpp index d2b7c8573243d..00636dc24b2cb 100644 --- a/fboss/agent/hw/sai/fake/FakeSaiObject.cpp +++ b/fboss/agent/hw/sai/fake/FakeSaiObject.cpp @@ -9,11 +9,8 @@ */ #include "fboss/agent/hw/sai/api/AddressUtil.h" -#include "fboss/agent/hw/sai/api/SaiVersion.h" #include "fboss/agent/hw/sai/fake/FakeSai.h" -#include - sai_status_t sai_get_object_count( sai_object_id_t /* switch_id */, sai_object_type_t object_type, diff --git a/fboss/agent/hw/sai/fake/FakeSaiQosMap.cpp b/fboss/agent/hw/sai/fake/FakeSaiQosMap.cpp index 23c5b964aa7f5..0fe3893270fb1 100644 --- a/fboss/agent/hw/sai/fake/FakeSaiQosMap.cpp +++ b/fboss/agent/hw/sai/fake/FakeSaiQosMap.cpp @@ -11,7 +11,6 @@ #include "fboss/agent/hw/sai/fake/FakeSaiQosMap.h" #include "fboss/agent/hw/sai/fake/FakeSai.h" -#include #include using facebook::fboss::FakeQosMap; diff --git a/fboss/agent/hw/sai/fake/FakeSaiQueue.cpp b/fboss/agent/hw/sai/fake/FakeSaiQueue.cpp index 51324cc319c0a..3546183a1401e 100644 --- a/fboss/agent/hw/sai/fake/FakeSaiQueue.cpp +++ b/fboss/agent/hw/sai/fake/FakeSaiQueue.cpp @@ -10,7 +10,6 @@ #include "fboss/agent/hw/sai/fake/FakeSaiQueue.h" #include "fboss/agent/hw/sai/fake/FakeSai.h" -#include #include using facebook::fboss::FakeQueue; diff --git a/fboss/agent/hw/sai/fake/FakeSaiRoute.cpp b/fboss/agent/hw/sai/fake/FakeSaiRoute.cpp index e737a4d9692c6..8aed86fcc0a4c 100644 --- a/fboss/agent/hw/sai/fake/FakeSaiRoute.cpp +++ b/fboss/agent/hw/sai/fake/FakeSaiRoute.cpp @@ -12,8 +12,6 @@ #include "fboss/agent/hw/sai/api/AddressUtil.h" -#include - using facebook::fboss::FakeRoute; using facebook::fboss::FakeSai; diff --git a/fboss/agent/hw/sai/fake/FakeSaiRouterInterface.cpp b/fboss/agent/hw/sai/fake/FakeSaiRouterInterface.cpp index e0e1712fa6534..759f478478a78 100644 --- a/fboss/agent/hw/sai/fake/FakeSaiRouterInterface.cpp +++ b/fboss/agent/hw/sai/fake/FakeSaiRouterInterface.cpp @@ -11,7 +11,6 @@ #include "fboss/agent/hw/sai/fake/FakeSaiRouterInterface.h" #include "fboss/agent/hw/sai/fake/FakeSai.h" -#include #include using facebook::fboss::FakeRouterInterface; diff --git a/fboss/agent/hw/sai/fake/FakeSaiSamplePacket.cpp b/fboss/agent/hw/sai/fake/FakeSaiSamplePacket.cpp index 44434b1405d20..65a800bb0ae45 100644 --- a/fboss/agent/hw/sai/fake/FakeSaiSamplePacket.cpp +++ b/fboss/agent/hw/sai/fake/FakeSaiSamplePacket.cpp @@ -8,11 +8,9 @@ * */ #include "fboss/agent/hw/sai/api/AddressUtil.h" -#include "fboss/agent/hw/sai/api/SaiVersion.h" #include "fboss/agent/hw/sai/fake/FakeSai.h" #include "fboss/agent/hw/sai/fake/FakeSaiPort.h" -#include #include using facebook::fboss::FakePort; diff --git a/fboss/agent/hw/sai/fake/FakeSaiScheduler.cpp b/fboss/agent/hw/sai/fake/FakeSaiScheduler.cpp index 96982f62a2862..34a10f42e6fa9 100644 --- a/fboss/agent/hw/sai/fake/FakeSaiScheduler.cpp +++ b/fboss/agent/hw/sai/fake/FakeSaiScheduler.cpp @@ -10,7 +10,6 @@ #include "fboss/agent/hw/sai/fake/FakeSaiScheduler.h" #include "fboss/agent/hw/sai/fake/FakeSai.h" -#include #include using facebook::fboss::FakeSai; diff --git a/fboss/agent/hw/sai/fake/FakeSaiSystemPort.cpp b/fboss/agent/hw/sai/fake/FakeSaiSystemPort.cpp index b0fd5f4ba8497..f551b33c0d664 100644 --- a/fboss/agent/hw/sai/fake/FakeSaiSystemPort.cpp +++ b/fboss/agent/hw/sai/fake/FakeSaiSystemPort.cpp @@ -12,9 +12,6 @@ #include "fboss/agent/hw/sai/api/AddressUtil.h" -#include -#include - using facebook::fboss::FakeSai; using facebook::fboss::FakeSystemPort; diff --git a/fboss/agent/hw/sai/fake/FakeSaiVirtualRouter.cpp b/fboss/agent/hw/sai/fake/FakeSaiVirtualRouter.cpp index c18cd5ce851d0..6df1c3ef27d28 100644 --- a/fboss/agent/hw/sai/fake/FakeSaiVirtualRouter.cpp +++ b/fboss/agent/hw/sai/fake/FakeSaiVirtualRouter.cpp @@ -12,8 +12,6 @@ #include "fboss/agent/hw/sai/api/AddressUtil.h" -#include - using facebook::fboss::FakeSai; using facebook::fboss::FakeVirtualRouter; diff --git a/fboss/agent/hw/sai/fake/FakeSaiVlan.cpp b/fboss/agent/hw/sai/fake/FakeSaiVlan.cpp index 5dbff55c2faec..3e00368675e6e 100644 --- a/fboss/agent/hw/sai/fake/FakeSaiVlan.cpp +++ b/fboss/agent/hw/sai/fake/FakeSaiVlan.cpp @@ -11,7 +11,6 @@ #include "fboss/agent/hw/sai/fake/FakeSaiVlan.h" #include "fboss/agent/hw/sai/fake/FakeSai.h" -#include #include using facebook::fboss::FakeSai; diff --git a/fboss/agent/hw/sai/fake/FakeSaiWred.cpp b/fboss/agent/hw/sai/fake/FakeSaiWred.cpp index 1938837d8dafb..0248064d406f1 100644 --- a/fboss/agent/hw/sai/fake/FakeSaiWred.cpp +++ b/fboss/agent/hw/sai/fake/FakeSaiWred.cpp @@ -10,8 +10,6 @@ #include "fboss/agent/hw/sai/fake/FakeSaiWred.h" #include "fboss/agent/hw/sai/fake/FakeSai.h" -#include - using facebook::fboss::FakeSai; sai_status_t set_wred_attribute_fn( diff --git a/fboss/agent/hw/sai/hw_test/HwTestAclUtils.cpp b/fboss/agent/hw/sai/hw_test/HwTestAclUtils.cpp index 72db67b8de271..3c50d4740393e 100644 --- a/fboss/agent/hw/sai/hw_test/HwTestAclUtils.cpp +++ b/fboss/agent/hw/sai/hw_test/HwTestAclUtils.cpp @@ -31,7 +31,9 @@ std::string getActualAclTableName( // single acl table. Now support multiple tables so can accept table name. If // table name not provided we are still using single table, so continue using // kAclTable1. - return aclTableName.has_value() ? aclTableName.value() : kAclTable1; + return aclTableName.has_value() + ? aclTableName.value() + : cfg::switch_config_constants::DEFAULT_INGRESS_ACL_TABLE(); } std::shared_ptr getSwAcl( diff --git a/fboss/agent/hw/sai/hw_test/HwTestAclUtilsThriftHandler.cpp b/fboss/agent/hw/sai/hw_test/HwTestAclUtilsThriftHandler.cpp index 216d101e11331..bae4ae844f754 100644 --- a/fboss/agent/hw/sai/hw_test/HwTestAclUtilsThriftHandler.cpp +++ b/fboss/agent/hw/sai/hw_test/HwTestAclUtilsThriftHandler.cpp @@ -5,6 +5,7 @@ #include "fboss/agent/hw/sai/switch/SaiAclTableManager.h" #include "fboss/agent/hw/sai/switch/SaiSwitch.h" +#include "fboss/agent/gen-cpp2/switch_config_constants.h" #include "fboss/agent/test/utils/AclTestUtils.h" namespace { @@ -14,8 +15,10 @@ std::string getActualAclTableName( // single acl table. Now support multiple tables so can accept table name. If // table name not provided we are still using single table, so continue using // kAclTable1. - return aclTableName.has_value() ? aclTableName.value() - : facebook::fboss::kAclTable1; + return aclTableName.has_value() + ? aclTableName.value() + : facebook::fboss::cfg::switch_config_constants:: + DEFAULT_INGRESS_ACL_TABLE(); } } // namespace @@ -39,8 +42,8 @@ int32_t HwTestThriftHandler::getAclTableNumAclEntries( } bool HwTestThriftHandler::isDefaultAclTableEnabled() { - return isAclTableEnabled( - std::make_unique(facebook::fboss::kAclTable1)); + return isAclTableEnabled(std::make_unique( + cfg::switch_config_constants::DEFAULT_INGRESS_ACL_TABLE())); } bool HwTestThriftHandler::isAclTableEnabled(std::unique_ptr name) { @@ -85,7 +88,8 @@ bool HwTestThriftHandler::isStatProgrammedInDefaultAclTable( std::move(aclEntryNames), std::move(counterName), std::move(types), - std::make_unique(facebook::fboss::kAclTable1)); + std::make_unique( + cfg::switch_config_constants::DEFAULT_INGRESS_ACL_TABLE())); } bool HwTestThriftHandler::isStatProgrammedInAclTable( diff --git a/fboss/agent/hw/sai/hw_test/HwTestCoppUtils.cpp b/fboss/agent/hw/sai/hw_test/HwTestCoppUtils.cpp index a2f57fcc3c1ff..d30cdf043a5c4 100644 --- a/fboss/agent/hw/sai/hw_test/HwTestCoppUtils.cpp +++ b/fboss/agent/hw/sai/hw_test/HwTestCoppUtils.cpp @@ -12,10 +12,6 @@ #include "fboss/agent/hw/sai/switch/SaiHostifManager.h" #include "fboss/agent/hw/sai/switch/SaiManagerTable.h" #include "fboss/agent/hw/sai/switch/SaiSwitch.h" -#include "fboss/agent/hw/switch_asics/HwAsic.h" - -#include "fboss/agent/SwitchStats.h" -#include "fboss/agent/state/ControlPlane.h" namespace facebook::fboss { diff --git a/fboss/agent/hw/sai/hw_test/HwTestEcmpUtilsThriftHandler.cpp b/fboss/agent/hw/sai/hw_test/HwTestEcmpUtilsThriftHandler.cpp index 51ce6b6101ea4..c846d08547c11 100644 --- a/fboss/agent/hw/sai/hw_test/HwTestEcmpUtilsThriftHandler.cpp +++ b/fboss/agent/hw/sai/hw_test/HwTestEcmpUtilsThriftHandler.cpp @@ -19,6 +19,26 @@ int HwTestThriftHandler::getHwEcmpSize( return getEcmpMembersInHw(hwSwitch_, ecmpPrefix, rid, sizeInSw).size(); } +void HwTestThriftHandler::getEcmpWeights( + std::map<::std::int32_t, ::std::int32_t>& weights, + std::unique_ptr prefix, + int routerID) { + folly::CIDRNetwork ecmpPrefix = std::make_pair( + folly::IPAddress(prefix->IPAddress_ref().value()), + prefix->mask_ref().value()); + facebook::fboss::RouterID rid = + static_cast(routerID); + auto members = + getEcmpMembersInHw(hwSwitch_, ecmpPrefix, rid, FLAGS_ecmp_width); + int index = 0; + for (auto member : members) { + weights.insert( + std::make_pair(index, getEcmpMemberWeight(hwSwitch_, members, member))); + index++; + } + return; +} + } // namespace utility } // namespace fboss } // namespace facebook diff --git a/fboss/agent/hw/sai/hw_test/HwTestPacketTrapEntry.cpp b/fboss/agent/hw/sai/hw_test/HwTestPacketTrapEntry.cpp index 8e4ac48620aea..04e99837f3f54 100644 --- a/fboss/agent/hw/sai/hw_test/HwTestPacketTrapEntry.cpp +++ b/fboss/agent/hw/sai/hw_test/HwTestPacketTrapEntry.cpp @@ -81,8 +81,8 @@ HwTestPacketTrapEntry::HwTestPacketTrapEntry( const uint16_t l4DstPort) : hwSwitch_(hwSwitch) { auto saiSwitch = static_cast(hwSwitch_); - int priority = - saiSwitch->managerTable()->aclTableManager().aclEntryCount(kAclTable1); + int priority = saiSwitch->managerTable()->aclTableManager().aclEntryCount( + cfg::switch_config_constants::DEFAULT_INGRESS_ACL_TABLE()); auto aclEntry = std::make_shared( priority, std::string("AclEntry" + folly::to(priority))); @@ -92,7 +92,7 @@ HwTestPacketTrapEntry::HwTestPacketTrapEntry( aclEntry->setAclAction(matchAction); saiSwitch->managerTable()->aclTableManager().addAclEntry( - aclEntry, kAclTable1); + aclEntry, cfg::switch_config_constants::DEFAULT_INGRESS_ACL_TABLE()); aclEntries_.push_back(aclEntry); } @@ -101,11 +101,12 @@ HwTestPacketTrapEntry::HwTestPacketTrapEntry( const std::set& ports) : hwSwitch_(hwSwitch) { auto saiSwitch = static_cast(hwSwitch_); - int priority = getNextFreePriority(saiSwitch, kAclTable1); + int priority = getNextFreePriority( + saiSwitch, cfg::switch_config_constants::DEFAULT_INGRESS_ACL_TABLE()); for (auto port : ports) { auto aclEntry = getTrapAclEntry(true, port, std::nullopt, priority++); saiSwitch->managerTable()->aclTableManager().addAclEntry( - aclEntry, kAclTable1); + aclEntry, cfg::switch_config_constants::DEFAULT_INGRESS_ACL_TABLE()); aclEntries_.push_back(aclEntry); } } @@ -115,11 +116,12 @@ HwTestPacketTrapEntry::HwTestPacketTrapEntry( const std::set& dstPrefixes) : hwSwitch_(hwSwitch) { auto saiSwitch = static_cast(hwSwitch_); - int priority = getNextFreePriority(saiSwitch, kAclTable1); + int priority = getNextFreePriority( + saiSwitch, cfg::switch_config_constants::DEFAULT_INGRESS_ACL_TABLE()); for (const auto& dstPrefix : dstPrefixes) { auto aclEntry = getTrapAclEntry(false, std::nullopt, dstPrefix, priority++); saiSwitch->managerTable()->aclTableManager().addAclEntry( - aclEntry, kAclTable1); + aclEntry, cfg::switch_config_constants::DEFAULT_INGRESS_ACL_TABLE()); aclEntries_.push_back(aclEntry); } } @@ -128,7 +130,7 @@ HwTestPacketTrapEntry::~HwTestPacketTrapEntry() { auto saiSwitch = static_cast(hwSwitch_); for (const auto& aclEntry : aclEntries_) { saiSwitch->managerTable()->aclTableManager().removeAclEntry( - aclEntry, kAclTable1); + aclEntry, cfg::switch_config_constants::DEFAULT_INGRESS_ACL_TABLE()); } } diff --git a/fboss/agent/hw/sai/hw_test/HwTestPortUtilsThriftHandler.cpp b/fboss/agent/hw/sai/hw_test/HwTestPortUtilsThriftHandler.cpp index f6e5e629a5227..045fb16086524 100644 --- a/fboss/agent/hw/sai/hw_test/HwTestPortUtilsThriftHandler.cpp +++ b/fboss/agent/hw/sai/hw_test/HwTestPortUtilsThriftHandler.cpp @@ -4,6 +4,7 @@ #include "fboss/agent/hw/sai/switch/SaiSwitch.h" #include "fboss/agent/hw/switch_asics/HwAsic.h" #include "fboss/agent/hw/test/HwTestThriftHandler.h" +#include "fboss/agent/platforms/common/utils/Wedge100LedUtils.h" #include "folly/testing/TestUtil.h" @@ -92,6 +93,24 @@ void HwTestThriftHandler::getPortInfo( return; } +bool HwTestThriftHandler::verifyPortLedStatus(int portId, bool status) { + SaiPlatform* platform = static_cast(hwSwitch_->getPlatform()); + SaiPlatformPort* platformPort = platform->getPort(PortID(portId)); + uint32_t currentVal = platformPort->getCurrentLedState(); + uint32_t expectedVal = 0; + switch (platform->getType()) { + case PlatformType::PLATFORM_WEDGE100: { + expectedVal = static_cast(Wedge100LedUtils::getExpectedLEDState( + platform->getLaneCount(platformPort->getCurrentProfile()), + status, + status)); + return currentVal == expectedVal; + } + default: + throw FbossError("Unsupported platform type"); + } +} + } // namespace utility } // namespace fboss } // namespace facebook diff --git a/fboss/agent/hw/sai/hw_test/HwTestTamUtils.cpp b/fboss/agent/hw/sai/hw_test/HwTestTamUtils.cpp index 0cd4f49e7c94c..90b2631e98cc9 100644 --- a/fboss/agent/hw/sai/hw_test/HwTestTamUtils.cpp +++ b/fboss/agent/hw/sai/hw_test/HwTestTamUtils.cpp @@ -7,7 +7,6 @@ #include "fboss/agent/hw/test/HwSwitchEnsemble.h" #include "fboss/agent/hw/sai/api/SwitchApi.h" -#include "fboss/agent/hw/sai/api/TamApi.h" namespace facebook::fboss { namespace { diff --git a/fboss/agent/hw/sai/hw_test/SaiAclTableGroupTests.cpp b/fboss/agent/hw/sai/hw_test/SaiAclTableGroupTests.cpp index ce02ef654eab5..468435da75c55 100644 --- a/fboss/agent/hw/sai/hw_test/SaiAclTableGroupTests.cpp +++ b/fboss/agent/hw/sai/hw_test/SaiAclTableGroupTests.cpp @@ -165,6 +165,10 @@ class SaiAclTableGroupTest : public HwTest { return "table1_counter_acl2"; } + std::string kTable1CounterAcl3() const { + return "table1_counter_acl3"; + } + std::string kTable1Counter1Name() const { return "table1_counter1"; } @@ -173,6 +177,10 @@ class SaiAclTableGroupTest : public HwTest { return "table1_counter2"; } + std::string kTable1Counter3Name() const { + return "table1_counter3"; + } + std::string kTable2CounterAcl1() const { return "table2_counter_acl1"; } @@ -197,6 +205,10 @@ class SaiAclTableGroupTest : public HwTest { return "table2_counter3"; } + std::string kAclTableGroup() const { + return "Ingress Table Group"; + } + void addQphDscpAclTable( cfg::SwitchConfig* newCfg, bool addExtraQualifier = false) { @@ -218,7 +230,7 @@ class SaiAclTableGroupTest : public HwTest { * This field is used to modify the properties of the ACL table. * This will force a recreate of the acl table during delta processing. */ - qualifiers.push_back(cfg::AclTableQualifier::OUT_PORT); + qualifiers.push_back(cfg::AclTableQualifier::OUTER_VLAN); } // Table 1: For QPH and Dscp Acl. @@ -244,7 +256,7 @@ class SaiAclTableGroupTest : public HwTest { } void addTwoAclTables(cfg::SwitchConfig* newCfg) { - utility::addAclTableGroup(newCfg, kAclStage(), "Ingress Table Group"); + utility::addAclTableGroup(newCfg, kAclStage(), kAclTableGroup()); // Table 1: Create QPH and DSCP ACLs in the same table. addQphDscpAclTableWithEntry(newCfg); @@ -281,12 +293,12 @@ class SaiAclTableGroupTest : public HwTest { switch (tableAdd) { case tableAddType::table1: - utility::addAclTableGroup(&newCfg, kAclStage(), "Ingress Table Group"); + utility::addAclTableGroup(&newCfg, kAclStage(), kAclTableGroup()); // Add Table 1: Create QPH and DSCP ACLs in the same table. addQphDscpAclTableWithEntry(&newCfg); break; case tableAddType::table2: - utility::addAclTableGroup(&newCfg, kAclStage(), "Ingress Table Group"); + utility::addAclTableGroup(&newCfg, kAclStage(), kAclTableGroup()); // Add Table 2: TtlTable utility::addTtlAclTable(&newCfg, 2 /* priority */); break; @@ -305,12 +317,16 @@ class SaiAclTableGroupTest : public HwTest { const std::string& aclTableName, const std::string& aclEntryName, const std::string& counterName, - uint8_t dscp) { + uint8_t dscp, + bool addVlan = false) { std::vector counterTypes{cfg::CounterType::PACKETS}; auto* counterAcl = utility::addAcl( cfg, aclEntryName, cfg::AclActionType::PERMIT, aclTableName); utility::addAclStat(cfg, aclEntryName, counterName, counterTypes); counterAcl->dscp() = dscp; + if (addVlan) { + counterAcl->vlanID() = 2000; + } } void addCounterAclsToQphTable(cfg::SwitchConfig* cfg) { @@ -372,7 +388,7 @@ class SaiAclTableGroupTest : public HwTest { cfg::SwitchConfig getMultiAclConfig(bool addExtraQualifier = false) { auto newCfg = initialConfig(); - utility::addAclTableGroup(&newCfg, kAclStage(), "Ingress Table Group"); + utility::addAclTableGroup(&newCfg, kAclStage(), kAclTableGroup()); addQphDscpAclTable(&newCfg, addExtraQualifier); utility::addQueuePerHostAclEntry( &newCfg, kQphDscpTable(), getHwSwitchEnsemble()->isSai()); @@ -394,7 +410,18 @@ class SaiAclTableGroupTest : public HwTest { table2EntryCount); } - void verifyAclEntryModificationTestHelper(bool addQualifierDuringWarmboot) { + // This helper has dual functionality and performs canary on/off + // + // The first argument indicates canary on or off. canaryOn=True would add an + // ACL entry (and qualifier depending on the 2nd argument) post warmboot + // and vice-versa for false + // + // The 2nd argument adds an ACL qualifier when moving between canary phases + // - When canaryOn, qualifier=true would add a qualifier post warmboot + // - when canaryOff, qualifier=true would add a qualifier pre warmboot + void verifyAclEntryModificationTestHelper( + bool canaryOn, + bool addRemoveAclQualifier) { ASSERT_TRUE(isSupported()); auto setup = [this]() { @@ -418,7 +445,7 @@ class SaiAclTableGroupTest : public HwTest { }; auto setupPostWarmboot = [=, this]() { - auto newCfg = getMultiAclConfig(addQualifierDuringWarmboot); + auto newCfg = getMultiAclConfig(addRemoveAclQualifier); // Add Dscp acl to table 1 post warmboot utility::addDscpAclEntryWithCounter( &newCfg, kQphDscpTable(), this->getHwSwitchEnsemble()->isSai()); @@ -446,15 +473,29 @@ class SaiAclTableGroupTest : public HwTest { kTable2CounterAcl1(), kTable2Counter1Name(), 4); + // add an ACL entry in table 1 using the new qualifier + addCounterAclToAclTable( + &newCfg, + kQphDscpTable(), + kTable1CounterAcl3(), + kTable1Counter3Name(), + 3, + addRemoveAclQualifier /* addVlan */); applyNewConfig(newCfg); }; auto verifyPostWarmboot = [=, this]() { verifyAclEntryTestHelper( - 37 /* table1EntryCount*/, 3 /* table1EntryCount*/); + 38 /* table1EntryCount*/, 3 /* table1EntryCount*/); }; - verifyAcrossWarmBoots(setup, verify, setupPostWarmboot, verifyPostWarmboot); + if (canaryOn) { + verifyAcrossWarmBoots( + setup, verify, setupPostWarmboot, verifyPostWarmboot); + } else { + verifyAcrossWarmBoots( + setupPostWarmboot, verifyPostWarmboot, setup, verify); + } } }; @@ -464,7 +505,7 @@ TEST_F(SaiAclTableGroupTest, SingleAclTableGroup) { auto setup = [this]() { auto newCfg = initialConfig(); - utility::addAclTableGroup(&newCfg, kAclStage(), "Ingress Table Group"); + utility::addAclTableGroup(&newCfg, kAclStage(), kAclTableGroup()); applyNewConfig(newCfg); }; @@ -482,7 +523,7 @@ TEST_F(SaiAclTableGroupTest, MultipleTablesNoEntries) { auto setup = [this]() { auto newCfg = initialConfig(); - utility::addAclTableGroup(&newCfg, kAclStage(), "Ingress Table Group"); + utility::addAclTableGroup(&newCfg, kAclStage(), kAclTableGroup()); addAclTable1(newCfg); addAclTable2(newCfg); @@ -504,7 +545,7 @@ TEST_F(SaiAclTableGroupTest, MultipleTablesWithEntries) { auto setup = [this]() { auto newCfg = initialConfig(); - utility::addAclTableGroup(&newCfg, kAclStage(), "Ingress Table Group"); + utility::addAclTableGroup(&newCfg, kAclStage(), kAclTableGroup()); addAclTable1(newCfg); addAclTable1Entry1(newCfg, kAclTable1()); addAclTable2(newCfg); @@ -524,7 +565,7 @@ TEST_F(SaiAclTableGroupTest, AddTablesThenEntries) { auto setup = [this]() { auto newCfg = initialConfig(); - utility::addAclTableGroup(&newCfg, kAclStage(), "Ingress Table Group"); + utility::addAclTableGroup(&newCfg, kAclStage(), kAclTableGroup()); addAclTable1(newCfg); addAclTable2(newCfg); applyNewConfig(newCfg); @@ -545,7 +586,7 @@ TEST_F(SaiAclTableGroupTest, RemoveAclTable) { auto setup = [this]() { auto newCfg = initialConfig(); - utility::addAclTableGroup(&newCfg, kAclStage(), "Ingress Table Group"); + utility::addAclTableGroup(&newCfg, kAclStage(), kAclTableGroup()); addAclTable1(newCfg); addAclTable1Entry1(newCfg, kAclTable1()); addAclTable2(newCfg); @@ -742,7 +783,10 @@ TEST_F(SaiAclTableGroupTest, TestAclTableGroupRoundtrip) { auto setup = [this]() { auto newCfg = initialConfig(); - utility::addAclTableGroup(&newCfg, kAclStage(), "ingress-ACL-Table-Group"); + utility::addAclTableGroup( + &newCfg, + kAclStage(), + cfg::switch_config_constants::DEFAULT_INGRESS_ACL_TABLE_GROUP()); utility::addDefaultAclTable(newCfg); applyNewConfig(newCfg); @@ -763,7 +807,7 @@ TEST_F(SaiAclTableGroupTest, RepositionAclEntriesPostWarmboot) { auto setup = [this]() { auto newCfg = initialConfig(); - utility::addAclTableGroup(&newCfg, kAclStage(), "Ingress Table Group"); + utility::addAclTableGroup(&newCfg, kAclStage(), kAclTableGroup()); addAclTable1(newCfg); addAclTable2(newCfg); addDefaultCounterAclsToTable(newCfg, false); @@ -782,7 +826,7 @@ TEST_F(SaiAclTableGroupTest, RepositionAclEntriesPostWarmboot) { auto setupPostWarmboot = [=, this]() { auto newCfg = initialConfig(); - utility::addAclTableGroup(&newCfg, kAclStage(), "Ingress Table Group"); + utility::addAclTableGroup(&newCfg, kAclStage(), kAclTableGroup()); addAclTable1(newCfg); addAclTable2(newCfg); addDefaultCounterAclsToTable(newCfg, true); @@ -807,7 +851,7 @@ TEST_F(SaiAclTableGroupTest, RepositionAclEntriesPostWarmboot) { * Verify that all entries are present. */ TEST_F(SaiAclTableGroupTest, AddAclEntriesToAclTablesPostWarmboot) { - verifyAclEntryModificationTestHelper(false); + verifyAclEntryModificationTestHelper(true, false); } /* @@ -819,6 +863,18 @@ TEST_F(SaiAclTableGroupTest, AddAclEntriesToAclTablesPostWarmboot) { TEST_F( SaiAclTableGroupTest, AddAclEntriesAndQualifiersToAclTablesPostWarmboot) { - verifyAclEntryModificationTestHelper(true); + verifyAclEntryModificationTestHelper(true, true); +} + +// only ACL entry removed, no change to table +TEST_F(SaiAclTableGroupTest, RemoveAclEntriesFromAclTablesPostWarmboot) { + verifyAclEntryModificationTestHelper(false, false); +} + +// ACL entry is removed and table is modified +TEST_F( + SaiAclTableGroupTest, + RemoveAclEntriesAndQualifiersFromAclTablesPostWarmboot) { + verifyAclEntryModificationTestHelper(false, true); } } // namespace facebook::fboss diff --git a/fboss/agent/hw/sai/hw_test/SaiAclTableTests.cpp b/fboss/agent/hw/sai/hw_test/SaiAclTableTests.cpp index e6628e836b301..56b50ff65f217 100644 --- a/fboss/agent/hw/sai/hw_test/SaiAclTableTests.cpp +++ b/fboss/agent/hw/sai/hw_test/SaiAclTableTests.cpp @@ -6,7 +6,6 @@ #include "fboss/agent/hw/sai/switch/SaiSwitch.h" #include "fboss/agent/hw/test/ConfigFactory.h" #include "fboss/agent/hw/test/HwTestAclUtils.h" -#include "fboss/agent/platforms/sai/SaiPlatform.h" namespace facebook::fboss { @@ -41,14 +40,20 @@ TEST_F(SaiAclTableRecreateTests, AclEntryCount) { applyNewConfig(config); const auto* saiSwitch = static_cast(getHwSwitch()); const auto& aclTableManager = saiSwitch->managerTable()->aclTableManager(); - EXPECT_EQ(aclTableManager.aclEntryCount(kAclTable1), 2); + EXPECT_EQ( + aclTableManager.aclEntryCount( + cfg::switch_config_constants::DEFAULT_INGRESS_ACL_TABLE()), + 2); }; auto verify = [=]() { // ensure acl table exists with same number of acl entries after force // recreate. const auto* saiSwitch = static_cast(getHwSwitch()); const auto& aclTableManager = saiSwitch->managerTable()->aclTableManager(); - EXPECT_EQ(aclTableManager.aclEntryCount(kAclTable1), 2); + EXPECT_EQ( + aclTableManager.aclEntryCount( + cfg::switch_config_constants::DEFAULT_INGRESS_ACL_TABLE()), + 2); }; verifyAcrossWarmBoots(setup, verify); } diff --git a/fboss/agent/hw/sai/hw_test/SaiNeighborRollbackTests.cpp b/fboss/agent/hw/sai/hw_test/SaiNeighborRollbackTests.cpp index 65c406a7a771f..f0f881c477a46 100644 --- a/fboss/agent/hw/sai/hw_test/SaiNeighborRollbackTests.cpp +++ b/fboss/agent/hw/sai/hw_test/SaiNeighborRollbackTests.cpp @@ -12,7 +12,6 @@ #include "fboss/agent/hw/test/HwTestEcmpUtils.h" #include "fboss/agent/hw/test/HwTestRouteUtils.h" -#include "fboss/agent/state/Port.h" #include "fboss/agent/state/SwitchState.h" namespace facebook::fboss { diff --git a/fboss/agent/hw/sai/hw_test/SaiNextHopGroupTest.cpp b/fboss/agent/hw/sai/hw_test/SaiNextHopGroupTest.cpp index 9ecf6d3fcca6d..240b3b4a412fd 100644 --- a/fboss/agent/hw/sai/hw_test/SaiNextHopGroupTest.cpp +++ b/fboss/agent/hw/sai/hw_test/SaiNextHopGroupTest.cpp @@ -5,7 +5,6 @@ #include "fboss/agent/test/EcmpSetupHelper.h" #include "fboss/agent/hw/sai/switch/SaiNextHopGroupManager.h" -#include "fboss/agent/hw/sai/switch/SaiPortManager.h" #include "fboss/agent/hw/sai/switch/SaiRouteManager.h" #include "fboss/agent/hw/sai/switch/SaiVirtualRouterManager.h" diff --git a/fboss/agent/hw/sai/hw_test/SaiSwitchEnsemble.cpp b/fboss/agent/hw/sai/hw_test/SaiSwitchEnsemble.cpp index 192e01a539469..0d6898596e94a 100644 --- a/fboss/agent/hw/sai/hw_test/SaiSwitchEnsemble.cpp +++ b/fboss/agent/hw/sai/hw_test/SaiSwitchEnsemble.cpp @@ -12,7 +12,6 @@ #include "fboss/agent/SetupThrift.h" #include "fboss/agent/hw/sai/switch/SaiAclTableManager.h" #include "fboss/agent/hw/sai/switch/SaiLagManager.h" -#include "fboss/agent/hw/sai/switch/SaiPortManager.h" #include #include "fboss/agent/hw/sai/diag/SaiRepl.h" @@ -22,12 +21,9 @@ #include "fboss/agent/test/LinkStateToggler.h" #include "fboss/agent/HwSwitch.h" -#include "fboss/agent/SwitchStats.h" #include -#include - #include #include #include diff --git a/fboss/agent/hw/sai/hw_test/dataplane_tests/SaiAclTableGroupTrafficTests.cpp b/fboss/agent/hw/sai/hw_test/dataplane_tests/SaiAclTableGroupTrafficTests.cpp index e35df6e07a128..cbcd3ccadff8f 100644 --- a/fboss/agent/hw/sai/hw_test/dataplane_tests/SaiAclTableGroupTrafficTests.cpp +++ b/fboss/agent/hw/sai/hw_test/dataplane_tests/SaiAclTableGroupTrafficTests.cpp @@ -56,7 +56,7 @@ class SaiAclTableGroupTrafficTest : public HwLinkStateDependentTest { getAsic()->desiredLoopbackModes()); utility::addAclTableGroup( - &cfg, cfg::AclStage::INGRESS, utility::getAclTableGroupName()); + &cfg, cfg::AclStage::INGRESS, utility::kDefaultAclTableGroupName()); return cfg; } diff --git a/fboss/agent/hw/sai/store/SaiStore.h b/fboss/agent/hw/sai/store/SaiStore.h index 6ca2abaa9cc91..72ec6db9b5a56 100644 --- a/fboss/agent/hw/sai/store/SaiStore.h +++ b/fboss/agent/hw/sai/store/SaiStore.h @@ -10,6 +10,7 @@ #pragma once #include "fboss/agent/FbossError.h" +#include "fboss/agent/gen-cpp2/switch_config_constants.h" #include "fboss/agent/hw/sai/api/AclApi.h" #include "fboss/agent/hw/sai/api/AdapterKeySerializers.h" #include "fboss/agent/hw/sai/api/LagApi.h" @@ -437,7 +438,10 @@ class SaiObjectStore { if constexpr (std::is_same_v) { // TODO(pshaikh): hack to allow warm boot from version which doesn't // save ahk - return ObjectType(key, SaiAclTableTraits::AdapterHostKey{kAclTable1}); + return ObjectType( + key, + SaiAclTableTraits::AdapterHostKey{ + cfg::switch_config_constants::DEFAULT_INGRESS_ACL_TABLE()}); } if constexpr (std::is_same_v) { // a special handling has been added to deal with next hop group to diff --git a/fboss/agent/hw/sai/store/tests/AclTableGroupStoreTest.cpp b/fboss/agent/hw/sai/store/tests/AclTableGroupStoreTest.cpp index a21609cae1e09..cc391ee146835 100644 --- a/fboss/agent/hw/sai/store/tests/AclTableGroupStoreTest.cpp +++ b/fboss/agent/hw/sai/store/tests/AclTableGroupStoreTest.cpp @@ -70,6 +70,11 @@ class AclTableGroupStoreTest : public SaiStoreTest { true, // outer vlan id true, // bth opcode true, // ipv6 next header + 0, // udf group 0 + 1, // udf group 1 + 2, // udf group 2 + 3, // udf group 3 + 4, // udf group 4 }, 0); } diff --git a/fboss/agent/hw/sai/store/tests/AclTableStoreTest.cpp b/fboss/agent/hw/sai/store/tests/AclTableStoreTest.cpp index 3111876385df4..57afb900818b1 100644 --- a/fboss/agent/hw/sai/store/tests/AclTableStoreTest.cpp +++ b/fboss/agent/hw/sai/store/tests/AclTableStoreTest.cpp @@ -208,10 +208,23 @@ class AclTableStoreTest : public SaiStoreTest { return 0; } + sai_object_id_t kUdfGroupId() const { + return 1; + } + + std::pair, std::vector> kUdfGroupData() + const { + std::vector data = {0x11, 0x22}; + std::vector mask = {0xFF, 0xFF}; + return std::make_pair(std::move(data), std::move(mask)); + } + AclTableSaiId createAclTable(sai_int32_t stage) const { return saiApiTable->aclApi().create( { - stage, kBindPointTypeList(), kActionTypeList(), + stage, + kBindPointTypeList(), + kActionTypeList(), true, // srcIpv6 true, // dstIpv6 true, // srcIpv4 @@ -238,6 +251,11 @@ class AclTableStoreTest : public SaiStoreTest { true, // outer vlan id true, // bth opcode true, // ipv6 next header + kUdfGroupId(), // udf group 0 + kUdfGroupId() + 1, // udf group 1 + kUdfGroupId() + 2, // udf group 2 + kUdfGroupId() + 3, // udf group 3 + kUdfGroupId() + 4, // udf group 4 }, 0); } @@ -275,6 +293,11 @@ class AclTableStoreTest : public SaiStoreTest { AclEntryFieldU16(this->kOuterVlanId()), AclEntryFieldU8(this->kBthOpcode()), AclEntryFieldU8(this->kIpv6NextHeader()), + AclEntryFieldU8List(this->kUdfGroupData()), + AclEntryFieldU8List(this->kUdfGroupData()), + AclEntryFieldU8List(this->kUdfGroupData()), + AclEntryFieldU8List(this->kUdfGroupData()), + AclEntryFieldU8List(this->kUdfGroupData()), AclEntryActionU32(this->kPacketAction()), AclEntryActionSaiObjectIdT(this->kCounter()), AclEntryActionU8(this->kSetTC()), @@ -311,7 +334,8 @@ TEST_F(AclTableStoreTest, loadAclTables) { s.reload(); auto& store = s.get(); - SaiAclTableTraits::AdapterHostKey k{"AclTable1"}; + SaiAclTableTraits::AdapterHostKey k{ + cfg::switch_config_constants::DEFAULT_INGRESS_ACL_TABLE()}; auto got = store.get(k); EXPECT_NE(got, nullptr); @@ -358,7 +382,8 @@ TEST_P(AclTableStoreParamTest, loadAclCounter) { TEST_P(AclTableStoreParamTest, aclTableCtorLoad) { auto aclTableId = createAclTable(GetParam()); - auto obj = createObj(aclTableId, "AclTable1"); + auto obj = createObj( + aclTableId, cfg::switch_config_constants::DEFAULT_INGRESS_ACL_TABLE()); EXPECT_EQ(obj.adapterKey(), aclTableId); } @@ -381,7 +406,9 @@ TEST_P(AclTableStoreParamTest, aclCounterLoadCtor) { TEST_P(AclTableStoreParamTest, aclTableCtorCreate) { SaiAclTableTraits::CreateAttributes c{ - GetParam(), this->kBindPointTypeList(), this->kActionTypeList(), + GetParam(), + this->kBindPointTypeList(), + this->kActionTypeList(), true, // srcIpv6 true, // dstIpv6 true, // srcIpv4 @@ -408,9 +435,15 @@ TEST_P(AclTableStoreParamTest, aclTableCtorCreate) { true, // outer vlan id true, // bth opcode true, // ipv6 next header + kUdfGroupId(), // udf group 0 + kUdfGroupId() + 1, // udf group 1 + kUdfGroupId() + 2, // udf group 2 + kUdfGroupId() + 3, // udf group 3 + kUdfGroupId() + 4, // udf group 4 }; - SaiAclTableTraits::AdapterHostKey k{"AclTable1"}; + SaiAclTableTraits::AdapterHostKey k{ + cfg::switch_config_constants::DEFAULT_INGRESS_ACL_TABLE()}; SaiObject obj = createObj(k, c, 0); EXPECT_EQ(GET_ATTR(AclTable, Stage, obj.attributes()), GetParam()); @@ -451,6 +484,11 @@ TEST_P(AclTableStoreParamTest, AclEntryCreateCtor) { this->kOuterVlanId(), this->kBthOpcode(), this->kIpv6NextHeader(), + this->kUdfGroupData(), + this->kUdfGroupData(), + this->kUdfGroupData(), + this->kUdfGroupData(), + this->kUdfGroupData(), this->kPacketAction(), this->kCounter(), this->kSetTC(), diff --git a/fboss/agent/hw/sai/store/tests/MirrorStoreTest.cpp b/fboss/agent/hw/sai/store/tests/MirrorStoreTest.cpp index af2ee360bbc03..c5701804f824e 100644 --- a/fboss/agent/hw/sai/store/tests/MirrorStoreTest.cpp +++ b/fboss/agent/hw/sai/store/tests/MirrorStoreTest.cpp @@ -36,7 +36,7 @@ class MirrorStoreTest : public SaiStoreTest { MirrorSaiId createLocalMirror(int portId) { SaiLocalMirrorTraits::CreateAttributes c{ - SAI_MIRROR_SESSION_TYPE_LOCAL, portId}; + SAI_MIRROR_SESSION_TYPE_LOCAL, portId, std::nullopt}; return saiApiTable->mirrorApi().create(c, 0); } @@ -51,7 +51,8 @@ class MirrorStoreTest : public SaiStoreTest { folly::MacAddress& dstMac, uint8_t ipHeaderVersion, uint16_t greProtocol, - uint32_t samplingRate) { + uint32_t samplingRate, + std::optional tcBufferLimit) { return saiApiTable->mirrorApi().create( {SAI_MIRROR_SESSION_TYPE_ENHANCED_REMOTE, portId, @@ -65,7 +66,8 @@ class MirrorStoreTest : public SaiStoreTest { greProtocol, ttl, truncateSize, - samplingRate}, + samplingRate, + tcBufferLimit}, 0); } }; @@ -73,14 +75,15 @@ class MirrorStoreTest : public SaiStoreTest { TEST_F(MirrorStoreTest, loadMirrorSessions) { auto mirrorId1 = createLocalMirror(0); auto mirrorId2 = createEnhancedRemoteMirror( - 1, 16, 240, 255, srcIp, dstIp, srcMac, dstMac, 4, 2148, 0); + 1, 16, 240, 255, srcIp, dstIp, srcMac, dstMac, 4, 2148, 0, std::nullopt); SaiStore s(0); s.reload(); auto& store1 = s.get(); auto& store2 = s.get(); - SaiLocalMirrorTraits::AdapterHostKey k1{SAI_MIRROR_SESSION_TYPE_LOCAL, 0}; + SaiLocalMirrorTraits::AdapterHostKey k1{ + SAI_MIRROR_SESSION_TYPE_LOCAL, 0, std::nullopt}; SaiEnhancedRemoteMirrorTraits::AdapterHostKey k2{ SAI_MIRROR_SESSION_TYPE_ENHANCED_REMOTE, 1, srcIp, dstIp}; auto got1 = store1.get(k1); @@ -99,8 +102,10 @@ TEST_F(MirrorStoreTest, mirrorLoadCtor) { } TEST_F(MirrorStoreTest, mirrorCreateCtor) { - SaiLocalMirrorTraits::AdapterHostKey k{SAI_MIRROR_SESSION_TYPE_LOCAL, 0}; - SaiLocalMirrorTraits::CreateAttributes c{SAI_MIRROR_SESSION_TYPE_LOCAL, 0}; + SaiLocalMirrorTraits::AdapterHostKey k{ + SAI_MIRROR_SESSION_TYPE_LOCAL, 0, std::nullopt}; + SaiLocalMirrorTraits::CreateAttributes c{ + SAI_MIRROR_SESSION_TYPE_LOCAL, 0, std::nullopt}; auto obj = createObj(k, c, 0); EXPECT_EQ( GET_ATTR(LocalMirror, Type, obj.attributes()), @@ -114,7 +119,7 @@ TEST_F(MirrorStoreTest, localSpanSerDeser) { TEST_F(MirrorStoreTest, erSpanSerDeser) { auto mirrorId = createEnhancedRemoteMirror( - 2, 16, 220, 255, srcIp, dstIp, srcMac, dstMac, 4, 2200, 0); + 2, 16, 220, 255, srcIp, dstIp, srcMac, dstMac, 4, 2200, 0, std::nullopt); verifyAdapterKeySerDeser({mirrorId}); } @@ -122,6 +127,6 @@ TEST_F(MirrorStoreTest, toStr) { std::ignore = createLocalMirror(0); verifyToStr(); std::ignore = createEnhancedRemoteMirror( - 20, 16, 220, 180, srcIp, dstIp, srcMac, dstMac, 4, 2200, 0); + 20, 16, 220, 180, srcIp, dstIp, srcMac, dstMac, 4, 2200, 0, std::nullopt); verifyToStr(); } diff --git a/fboss/agent/hw/sai/store/tests/PortStoreTest.cpp b/fboss/agent/hw/sai/store/tests/PortStoreTest.cpp index 1babf7f64c2ed..bb84fe49cdb1d 100644 --- a/fboss/agent/hw/sai/store/tests/PortStoreTest.cpp +++ b/fboss/agent/hw/sai/store/tests/PortStoreTest.cpp @@ -76,6 +76,7 @@ class PortStoreTest : public SaiStoreTest { std::nullopt, // CondEntropyRehashEnable std::nullopt, // CondEntropyRehashPeriodUS std::nullopt, // CondEntropyRehashSeed + std::nullopt, // ShelEnable }; } diff --git a/fboss/agent/hw/sai/switch/SaiAclTableManager.cpp b/fboss/agent/hw/sai/switch/SaiAclTableManager.cpp index 2659f5a85374a..3a27e47a3761e 100644 --- a/fboss/agent/hw/sai/switch/SaiAclTableManager.cpp +++ b/fboss/agent/hw/sai/switch/SaiAclTableManager.cpp @@ -178,7 +178,9 @@ bool SaiAclTableManager::needsAclTableRecreate( const std::shared_ptr& newAclTable) { if (oldAclTable->getActionTypes() != newAclTable->getActionTypes() || oldAclTable->getPriority() != newAclTable->getPriority() || - oldAclTable->getQualifiers() != newAclTable->getQualifiers()) { + oldAclTable->getQualifiers() != newAclTable->getQualifiers() || + oldAclTable->getUdfGroups()->toThrift() != + newAclTable->getUdfGroups()->toThrift()) { XLOG(DBG2) << "Recreating ACL table"; return true; } @@ -198,8 +200,13 @@ void SaiAclTableManager::removeAclEntriesFromTable( void SaiAclTableManager::addAclEntriesToTable( const std::shared_ptr& aclTable, std::shared_ptr& aclMap) { + auto newAclMap = aclTable->getAclMap().unwrap(); for (auto const& iter : std::as_const(*aclMap)) { const auto& entry = iter.second; + // only re-add the ACL entry if present in new table + if (!newAclMap->getEntryIf(entry->getID())) { + continue; + } auto aclEntry = aclMap->getEntry(entry->getID()); addAclEntry(aclEntry, aclTable->getID()); } @@ -396,6 +403,11 @@ SaiAclTableManager::cfgActionTypeListToSaiActionTypeList( case cfg::AclTableActionType::SET_USER_DEFINED_TRAP: saiActionType = SAI_ACL_ACTION_TYPE_SET_USER_TRAP_ID; break; +#if SAI_API_VERSION >= SAI_VERSION(1, 14, 0) + case cfg::AclTableActionType::DISABLE_ARS_FORWARDING: + saiActionType = SAI_ACL_ACTION_TYPE_DISABLE_ARS_FORWARDING; + break; +#endif default: // should return in one of the cases throw FbossError("Unsupported Acl Table action type"); @@ -1186,6 +1198,16 @@ AclEntrySaiId SaiAclTableManager::addAclEntry( #endif #if !defined(TAJO_SDK) && !defined(BRCM_SAI_SDK_XGS) fieldIpv6NextHeader, +#endif +#if ( \ + (SAI_API_VERSION >= SAI_VERSION(1, 14, 0) || \ + (defined(BRCM_SAI_SDK_GTE_11_0) && defined(BRCM_SAI_SDK_XGS))) && \ + !defined(TAJO_SDK)) + std::nullopt, + std::nullopt, + std::nullopt, + std::nullopt, + std::nullopt, #endif aclActionPacketAction, aclActionCounter, @@ -1244,8 +1266,8 @@ void SaiAclTableManager::removeAclEntry( if (itr == aclTableHandle->aclTableMembers.end()) { // an acl entry that uses cpu port as qualifier may not have been created // even if it exists in switch state. - XLOG(ERR) << "attempted to remove aclEntry which does not exist: ", - removedAclEntry->getID(); + XLOG(ERR) << "attempted to remove aclEntry which does not exist: " + << removedAclEntry->getID(); return; } @@ -1509,22 +1531,28 @@ std::set SaiAclTableManager::getSupportedQualifierSet( return jericho3Qualifiers; } else if (isChenab) { /* TODO(pshaikh): review the qualifiers */ - std::set chenabQualifiers = { - cfg::AclTableQualifier::SRC_IPV6, - cfg::AclTableQualifier::DST_IPV6, - cfg::AclTableQualifier::SRC_IPV4, - cfg::AclTableQualifier::DST_IPV4, - cfg::AclTableQualifier::L4_SRC_PORT, - cfg::AclTableQualifier::L4_DST_PORT, - cfg::AclTableQualifier::IP_PROTOCOL, - cfg::AclTableQualifier::SRC_PORT, - cfg::AclTableQualifier::DSCP, - cfg::AclTableQualifier::TTL, - cfg::AclTableQualifier::OUTER_VLAN, - // TODO(pshaikh): Add UDF? - }; - - return chenabQualifiers; + if (aclStage == SAI_ACL_STAGE_INGRESS) { + return { + cfg::AclTableQualifier::SRC_IPV6, + cfg::AclTableQualifier::DST_IPV6, + cfg::AclTableQualifier::SRC_IPV4, + cfg::AclTableQualifier::DST_IPV4, + cfg::AclTableQualifier::L4_SRC_PORT, + cfg::AclTableQualifier::L4_DST_PORT, + cfg::AclTableQualifier::IP_PROTOCOL, + cfg::AclTableQualifier::SRC_PORT, + cfg::AclTableQualifier::DSCP, + cfg::AclTableQualifier::TTL, + cfg::AclTableQualifier::OUTER_VLAN, + // TODO(pshaikh): Add UDF? + }; + } else { + return { + cfg::AclTableQualifier::OUT_PORT, + cfg::AclTableQualifier::LOOKUP_CLASS_L2, + cfg::AclTableQualifier::LOOKUP_CLASS_ROUTE, + }; + } } else { std::set bcmQualifiers = { cfg::AclTableQualifier::SRC_IPV6, @@ -1598,7 +1626,7 @@ void SaiAclTableManager::removeDefaultAclTable( managerTable_->aclTableGroupManager().removeAclTableGroupMember( saiAclStage, name); } - handles_.erase(kAclTable1); + handles_.erase(cfg::switch_config_constants::DEFAULT_INGRESS_ACL_TABLE()); } bool SaiAclTableManager::isQualifierSupported( @@ -1764,7 +1792,8 @@ bool SaiAclTableManager::areQualifiersSupported( bool SaiAclTableManager::areQualifiersSupportedInDefaultAclTable( const std::set& qualifiers) const { - return areQualifiersSupported(kAclTable1, qualifiers); + return areQualifiersSupported( + cfg::switch_config_constants::DEFAULT_INGRESS_ACL_TABLE(), qualifiers); } void SaiAclTableManager::recreateAclTable( @@ -1888,9 +1917,13 @@ std::shared_ptr SaiAclTableManager::reconstructAclEntry( } void SaiAclTableManager::addDefaultIngressAclTable() { - addDefaultAclTable(cfg::AclStage::INGRESS, kAclTable1); + addDefaultAclTable( + cfg::AclStage::INGRESS, + cfg::switch_config_constants::DEFAULT_INGRESS_ACL_TABLE()); } void SaiAclTableManager::removeDefaultIngressAclTable() { - removeDefaultAclTable(cfg::AclStage::INGRESS, kAclTable1); + removeDefaultAclTable( + cfg::AclStage::INGRESS, + cfg::switch_config_constants::DEFAULT_INGRESS_ACL_TABLE()); } } // namespace facebook::fboss diff --git a/fboss/agent/hw/sai/switch/SaiArsManager.cpp b/fboss/agent/hw/sai/switch/SaiArsManager.cpp index 14aae5f91863e..28fd6989715e9 100644 --- a/fboss/agent/hw/sai/switch/SaiArsManager.cpp +++ b/fboss/agent/hw/sai/switch/SaiArsManager.cpp @@ -29,7 +29,8 @@ SaiArsManager::SaiArsManager( } #if SAI_API_VERSION >= SAI_VERSION(1, 14, 0) -sai_int32_t cfgSwitchingModeToSai(cfg::SwitchingMode switchingMode) { +sai_int32_t SaiArsManager::cfgSwitchingModeToSai( + cfg::SwitchingMode switchingMode) const { switch (switchingMode) { case cfg::SwitchingMode::FLOWLET_QUALITY: return SAI_ARS_MODE_FLOWLET_QUALITY; @@ -55,7 +56,9 @@ void SaiArsManager::addArs( void SaiArsManager::removeArs( const std::shared_ptr& flowletSwitchConfig) { - arsHandle_.reset(); + if (arsHandle_->ars) { + arsHandle_->ars.reset(); + } } void SaiArsManager::changeArs( diff --git a/fboss/agent/hw/sai/switch/SaiArsManager.h b/fboss/agent/hw/sai/switch/SaiArsManager.h index ffa5b8532f1ac..09e5bbfb0738b 100644 --- a/fboss/agent/hw/sai/switch/SaiArsManager.h +++ b/fboss/agent/hw/sai/switch/SaiArsManager.h @@ -22,7 +22,7 @@ namespace facebook::fboss { class SaiManagerTable; class SaiPlatform; -class SaiNextHopGroupHandle; +struct SaiNextHopGroupHandle; class SaiStore; #if SAI_API_VERSION >= SAI_VERSION(1, 14, 0) @@ -50,6 +50,7 @@ class SaiArsManager { const std::shared_ptr& oldFlowletSwitchingConfig, const std::shared_ptr& newFlowletSwitchingConfig); SaiArsHandle* getArsHandle(); + sai_int32_t cfgSwitchingModeToSai(cfg::SwitchingMode switchingMode) const; #endif private: diff --git a/fboss/agent/hw/sai/switch/SaiArsProfileManager.cpp b/fboss/agent/hw/sai/switch/SaiArsProfileManager.cpp index 61cb690e5d4c1..fc8e1cb6147f3 100644 --- a/fboss/agent/hw/sai/switch/SaiArsProfileManager.cpp +++ b/fboss/agent/hw/sai/switch/SaiArsProfileManager.cpp @@ -82,7 +82,9 @@ void SaiArsProfileManager::addArsProfile( void SaiArsProfileManager::removeArsProfile( const std::shared_ptr& flowletSwitchConfig) { - arsProfileHandle_.reset(); + if (arsProfileHandle_->arsProfile) { + arsProfileHandle_->arsProfile.reset(); + } } void SaiArsProfileManager::changeArsProfile( diff --git a/fboss/agent/hw/sai/switch/SaiBufferManager.cpp b/fboss/agent/hw/sai/switch/SaiBufferManager.cpp index a6bd97742288c..de9ee6319d222 100644 --- a/fboss/agent/hw/sai/switch/SaiBufferManager.cpp +++ b/fboss/agent/hw/sai/switch/SaiBufferManager.cpp @@ -540,8 +540,7 @@ SaiBufferProfileTraits::CreateAttributes SaiBufferManager::profileCreateAttrs( sharedFadtMaxTh = 0; } #endif -// TODO: Change to BRCM_SAI_SDK_DNX_GTE_11_0 once support is available in 12.0 -#if defined(BRCM_SAI_SDK_DNX_GTE_11_0) && !defined(BRCM_SAI_SDK_DNX_GTE_12_0) +#if defined(BRCM_SAI_SDK_DNX_GTE_11_0) // Unused, set default value as 0 sharedFadtMinTh = 0; sramFadtMaxTh = 0; @@ -636,9 +635,6 @@ SaiBufferManager::ingressProfileCreateAttrs( sramFadtXonOffset; #if defined(BRCM_SAI_SDK_DNX_GTE_11_0) sharedFadtMaxTh = config.maxSharedXoffThresholdBytes().value_or(0); -#endif -// TODO: Change to BRCM_SAI_SDK_DNX_GTE_11_0 once support is available in 12.0 -#if defined(BRCM_SAI_SDK_DNX_GTE_11_0) && !defined(BRCM_SAI_SDK_DNX_GTE_12_0) sharedFadtMinTh = config.minSharedXoffThresholdBytes().value_or(0); sramFadtMaxTh = config.maxSramXoffThresholdBytes().value_or(0); sramFadtMinTh = config.minSramXoffThresholdBytes().value_or(0); diff --git a/fboss/agent/hw/sai/switch/SaiInSegEntryManager.cpp b/fboss/agent/hw/sai/switch/SaiInSegEntryManager.cpp index 25eb80aafda7f..dbc540ec74ba9 100644 --- a/fboss/agent/hw/sai/switch/SaiInSegEntryManager.cpp +++ b/fboss/agent/hw/sai/switch/SaiInSegEntryManager.cpp @@ -9,7 +9,6 @@ #include "fboss/agent/hw/sai/switch/SaiSwitchManager.h" #include "fboss/agent/FbossError.h" -#include "fboss/agent/state/DeltaFunctions.h" #include "fboss/agent/state/LabelForwardingAction.h" namespace { diff --git a/fboss/agent/hw/sai/switch/SaiMirrorManager.cpp b/fboss/agent/hw/sai/switch/SaiMirrorManager.cpp index d87fcfe2a6e98..e0d343421886d 100644 --- a/fboss/agent/hw/sai/switch/SaiMirrorManager.cpp +++ b/fboss/agent/hw/sai/switch/SaiMirrorManager.cpp @@ -25,8 +25,14 @@ namespace facebook::fboss { SaiMirrorHandle::SaiMirror SaiMirrorManager::addNodeSpan( sai_object_id_t monitorPort) { + std::optional tcBufferLimit; +#if defined(BRCM_SAI_SDK_DNX_GTE_11_0) + // TODO: Fix this to be picked up from eventor VoQ config. + // For now, defaulting to 1M. + tcBufferLimit = 1000000; +#endif SaiLocalMirrorTraits::AdapterHostKey k{ - SAI_MIRROR_SESSION_TYPE_LOCAL, monitorPort}; + SAI_MIRROR_SESSION_TYPE_LOCAL, monitorPort, tcBufferLimit}; SaiLocalMirrorTraits::CreateAttributes attributes = k; auto& store = saiStore_->get(); return store.setObject(k, attributes); @@ -39,6 +45,13 @@ SaiMirrorHandle::SaiMirror SaiMirrorManager::addNodeErSpan( auto headerVersion = mirrorTunnel.srcIp.isV4() ? 4 : 6; auto truncateSize = mirror->getTruncate() ? platform_->getAsic()->getMirrorTruncateSize() : 0; + std::optional + tcBufferLimit; +#if defined(BRCM_SAI_SDK_DNX_GTE_11_0) + // TODO: Fix this to be picked up from eventor VoQ config. + // For now, defaulting to 1M. + tcBufferLimit = 1000000; +#endif SaiEnhancedRemoteMirrorTraits::CreateAttributes attributes{ SAI_MIRROR_SESSION_TYPE_ENHANCED_REMOTE, monitorPort, @@ -52,7 +65,8 @@ SaiMirrorHandle::SaiMirror SaiMirrorManager::addNodeErSpan( headerVersion, mirrorTunnel.ttl, truncateSize, - mirror->getSamplingRate()}; + mirror->getSamplingRate(), + tcBufferLimit}; SaiEnhancedRemoteMirrorTraits::AdapterHostKey k{ SAI_MIRROR_SESSION_TYPE_ENHANCED_REMOTE, monitorPort, @@ -70,7 +84,7 @@ SaiMirrorHandle::SaiMirror SaiMirrorManager::addNodeSflow( auto truncateSize = mirror->getTruncate() ? platform_->getAsic()->getMirrorTruncateSize() : 0; std::optional tcBufferLimit; -#if defined(BRCM_SAI_SDK_DNX_GTE_11_0) && !defined(BRCM_SAI_SDK_DNX_GTE_12_0) +#if defined(BRCM_SAI_SDK_DNX_GTE_11_0) // TODO: Fix this to be picked up from eventor VoQ config. // For now, defaulting to 1M. tcBufferLimit = 1000000; diff --git a/fboss/agent/hw/sai/switch/SaiNeighborManager.cpp b/fboss/agent/hw/sai/switch/SaiNeighborManager.cpp index 23e30c348b61b..9ceab1861a903 100644 --- a/fboss/agent/hw/sai/switch/SaiNeighborManager.cpp +++ b/fboss/agent/hw/sai/switch/SaiNeighborManager.cpp @@ -21,7 +21,6 @@ #include "fboss/agent/hw/switch_asics/HwAsic.h" #include "fboss/agent/platforms/sai/SaiPlatform.h" #include "fboss/agent/state/ArpEntry.h" -#include "fboss/agent/state/DeltaFunctions.h" #include "fboss/agent/state/NdpEntry.h" #include "folly/IPAddress.h" diff --git a/fboss/agent/hw/sai/switch/SaiPortManager.cpp b/fboss/agent/hw/sai/switch/SaiPortManager.cpp index d562a43461b32..ecdf282973a78 100644 --- a/fboss/agent/hw/sai/switch/SaiPortManager.cpp +++ b/fboss/agent/hw/sai/switch/SaiPortManager.cpp @@ -307,6 +307,11 @@ void fillHwPortStats( case SAI_PORT_STAT_IF_IN_LINK_DOWN_CELL_DROP: hwPortStats.fabricLinkDownDroppedCells_() = value; break; +#endif +#if defined(BRCM_SAI_SDK_DNX_GTE_12_0) + case SAI_PORT_STAT_FAST_LLFC_TRIGGER_STATUS: + hwPortStats.linkLayerFlowControlWatermark_() = value; + break; #endif default: auto configuredDebugCounters = @@ -1822,6 +1827,14 @@ void SaiPortManager::updateStats( curPortStats.timestamp_() = now.count(); handle->port->updateStats(supportedStats(portId), SAI_STATS_MODE_READ); +#if defined(BRCM_SAI_SDK_DNX_GTE_12_0) + if (updateWatermarks && + platform_->getAsic()->isSupported(HwAsic::Feature::FAST_LLFC_COUNTER)) { + handle->port->updateStats( + {SAI_PORT_STAT_FAST_LLFC_TRIGGER_STATUS}, + SAI_STATS_MODE_READ_AND_CLEAR); + } +#endif bool updateFecStats = false; auto lastFecReadTimeIt = lastFecCounterReadTime_.find(portId); @@ -2977,4 +2990,61 @@ void SaiPortManager::updateConditionalEntropySeed(PortID portID, uint32_t seed) SaiPortTraits::Attributes::CondEntropyRehashSeed{seed}); #endif } + +void SaiPortManager::changePortFlowletConfig( + const std::shared_ptr& oldPort, + const std::shared_ptr& newPort) { + if (!FLAGS_flowletSwitchingEnable || + !platform_->getAsic()->isSupported(HwAsic::Feature::FLOWLET)) { + return; + } + + auto portHandle = getPortHandle(newPort->getID()); + if (!portHandle) { + throw FbossError( + "Cannot change flowlet cfg on non existent port: ", newPort->getID()); + } + + if (oldPort->getPortFlowletConfig() != newPort->getPortFlowletConfig()) { +#if SAI_API_VERSION >= SAI_VERSION(1, 14, 0) + // SaiPortTraits::Attributes::ArsEnable arsEnable{false}; + bool arsEnable = false; + uint16_t scalingFactor = 0; + uint16_t loadPastWeight = 0; + uint16_t loadFutureWeight = 0; + auto newPortFlowletCfg = newPort->getPortFlowletConfig(); + if (newPortFlowletCfg.has_value()) { + /* + * Sum of old and new weights cannot go beyond 100 + * This is not a problem with native impl since both weights are applied + * with a single API call. An example transtion is + * Load : 60 -> 70 + * Queue : 40 -> 30 + * (70 + 40) > 100 + * Reset both the weights in the SDK once and re-apply new values below + */ + portHandle->port->setOptionalAttribute( + SaiPortTraits::Attributes::ArsPortLoadPastWeight{0}); + portHandle->port->setOptionalAttribute( + SaiPortTraits::Attributes::ArsPortLoadFutureWeight{0}); + + auto newPortFlowletCfgPtr = newPortFlowletCfg.value(); + arsEnable = true; + scalingFactor = newPortFlowletCfgPtr->getScalingFactor(); + loadPastWeight = newPortFlowletCfgPtr->getLoadWeight(); + loadFutureWeight = newPortFlowletCfgPtr->getQueueWeight(); + } + portHandle->port->setOptionalAttribute( + SaiPortTraits::Attributes::ArsEnable{arsEnable}); + portHandle->port->setOptionalAttribute( + SaiPortTraits::Attributes::ArsPortLoadScalingFactor{scalingFactor}); + portHandle->port->setOptionalAttribute( + SaiPortTraits::Attributes::ArsPortLoadPastWeight{loadPastWeight}); + portHandle->port->setOptionalAttribute( + SaiPortTraits::Attributes::ArsPortLoadFutureWeight{loadFutureWeight}); +#endif + } else { + XLOG(DBG4) << "Port flowlet setting unchanged for " << newPort->getName(); + } +} } // namespace facebook::fboss diff --git a/fboss/agent/hw/sai/switch/SaiPortManager.h b/fboss/agent/hw/sai/switch/SaiPortManager.h index 43a84b8f4d2e5..16827826a4e4c 100644 --- a/fboss/agent/hw/sai/switch/SaiPortManager.h +++ b/fboss/agent/hw/sai/switch/SaiPortManager.h @@ -433,6 +433,9 @@ class SaiPortManager { void createSerdesWithZeroPreemphasis( SaiPortHandle* portHandle, const std::vector& pinConfigs); + void changePortFlowletConfig( + const std::shared_ptr& oldPort, + const std::shared_ptr& newPort); SaiStore* saiStore_; SaiManagerTable* managerTable_; diff --git a/fboss/agent/hw/sai/switch/SaiQosMapManager.cpp b/fboss/agent/hw/sai/switch/SaiQosMapManager.cpp index 98784142b8399..3a43df99654bb 100644 --- a/fboss/agent/hw/sai/switch/SaiQosMapManager.cpp +++ b/fboss/agent/hw/sai/switch/SaiQosMapManager.cpp @@ -20,7 +20,6 @@ #include "fboss/agent/hw/sai/switch/SaiSystemPortManager.h" #include "fboss/agent/hw/switch_asics/HwAsic.h" #include "fboss/agent/platforms/sai/SaiPlatform.h" -#include "fboss/agent/state/SwitchState.h" namespace facebook::fboss { diff --git a/fboss/agent/hw/sai/switch/SaiRouteManager.cpp b/fboss/agent/hw/sai/switch/SaiRouteManager.cpp index 83e2832b551f4..bd07f73a74ede 100644 --- a/fboss/agent/hw/sai/switch/SaiRouteManager.cpp +++ b/fboss/agent/hw/sai/switch/SaiRouteManager.cpp @@ -20,6 +20,7 @@ #include "fboss/agent/hw/sai/switch/SaiVirtualRouterManager.h" #include "fboss/agent/hw/switch_asics/HwAsic.h" +#include "fboss/agent/SwitchInfoUtils.h" #include "fboss/agent/platforms/sai/SaiPlatform.h" #include @@ -191,10 +192,10 @@ void SaiRouteManager::addOrUpdateRoute( * TODO - filter these connected routes in switchstate */ if (platform_->getAsic()->getSwitchType() == cfg::SwitchType::VOQ) { - auto systemPortRange = platform_->getAsic()->getSystemPortRange(); - CHECK(systemPortRange); - if (interfaceId < *systemPortRange->minimum() || - interfaceId > *systemPortRange->maximum()) { + const auto& systemPortRanges = + platform_->getAsic()->getSystemPortRanges(); + CHECK(!systemPortRanges.systemPortRanges()->empty()); + if (!withinRange(systemPortRanges, interfaceId)) { packetAction = SAI_PACKET_ACTION_DROP; #if SAI_API_VERSION >= SAI_VERSION(1, 10, 0) attributes = SaiRouteTraits::CreateAttributes{ diff --git a/fboss/agent/hw/sai/switch/SaiSwitch.cpp b/fboss/agent/hw/sai/switch/SaiSwitch.cpp index 4bf7bbf158559..089401a23bd5d 100644 --- a/fboss/agent/hw/sai/switch/SaiSwitch.cpp +++ b/fboss/agent/hw/sai/switch/SaiSwitch.cpp @@ -1119,7 +1119,7 @@ std::shared_ptr SaiSwitch::stateChangedImplLocked( &SaiAclTableManager::changedAclEntry, &SaiAclTableManager::addAclEntry, &SaiAclTableManager::removeAclEntry, - kAclTable1); + cfg::switch_config_constants::DEFAULT_INGRESS_ACL_TABLE()); } processPfcWatchdogGlobalDelta(delta, lockPolicy); @@ -1377,6 +1377,18 @@ void SaiSwitch::processSwitchSettingsChangeSansDrainedEntryLocked( newVoqDramBoundTh.value_or(0)); } } + + { + const auto oldConditionalEntropyRehashPeriodUS = + oldSwitchSettings->getConditionalEntropyRehashPeriodUS(); + const auto newConditionalEntropyRehashPeriodUS = + newSwitchSettings->getConditionalEntropyRehashPeriodUS(); + if (oldConditionalEntropyRehashPeriodUS != + newConditionalEntropyRehashPeriodUS) { + managerTable_->switchManager().setConditionalEntropyRehashPeriodUS( + newConditionalEntropyRehashPeriodUS.value_or(0)); + } + } } template @@ -2174,21 +2186,25 @@ void SaiSwitch::txReadyStatusChangeCallbackTopHalf(SwitchSaiId switchId) { return; } - // When txReadyStatusChangeCallbackBottomHalf runs, it queries for + // When txReadyStatusChangeOrFwIsolateCallbackBottomHalf runs, it queries for // active/inactive link status of all the links at that time. - // Thus, if we txReadyStatusChangeCallbackBottomHalf is already queued for - // run, we can skip scheduling another. - // Note: txReadyStatusChangeCallbackBottomHalf sets changePending to false - // before querying link active/inactive status, so avoid race. + // Thus, if we txReadyStatusChangeOrFwIsolateCallbackBottomHalf is already + // queued for run, we can skip scheduling another. + // Note: txReadyStatusChangeOrFwIsolateCallbackBottomHalf sets changePending + // to false before querying link active/inactive status, so avoid race. auto changePending = txReadyStatusChangePending_.wlock(); if (!(*changePending)) { *changePending = true; txReadyStatusChangeBottomHalfEventBase_.runInFbossEventBaseThread( - [this]() mutable { txReadyStatusChangeCallbackBottomHalf(); }); + [this]() mutable { + txReadyStatusChangeOrFwIsolateCallbackBottomHalf(); + }); } } -void SaiSwitch::txReadyStatusChangeCallbackBottomHalf() { +void SaiSwitch::txReadyStatusChangeOrFwIsolateCallbackBottomHalf( + bool fwIsolated, + const std::optional& numActiveFabricPortsAtFwIsolate) { #if SAI_API_VERSION >= SAI_VERSION(1, 13, 0) { auto changePending = txReadyStatusChangePending_.wlock(); @@ -2221,7 +2237,7 @@ void SaiSwitch::txReadyStatusChangeCallbackBottomHalf() { return; } - auto numActiveFabricLinks = 0, numInactiveFabricLinks = 0; + auto numActiveFabricPorts = 0, numInactiveFabricPorts = 0; std::map port2IsActive; for (auto tuple : boost::combine(adapterKeys, txReadyStatusesGot)) { auto portSaiId = tuple.get<0>(); @@ -2239,18 +2255,25 @@ void SaiSwitch::txReadyStatusChangeCallbackBottomHalf() { port2IsActive[portID] = isActive; if (isActive) { - numActiveFabricLinks++; + numActiveFabricPorts++; } else { - numInactiveFabricLinks++; + numInactiveFabricPorts++; } } - XLOG(DBG2) - << "TX Ready status changed callback received:: NumActiveFabricLinks: " - << numActiveFabricLinks - << " NumInactiveFabricLinks: " << numInactiveFabricLinks; + std::string logPrefix = + fwIsolated ? "Firmware Isolate" : "TX Ready status change"; + XLOG(DBG2) << logPrefix << " callback received:: NumActiveFabricPorts: " + << numActiveFabricPorts + << " NumInactiveFabricPorts: " << numInactiveFabricPorts + << " NumActiveFabricPortsAtFwIsolate: " + << (numActiveFabricPortsAtFwIsolate.has_value() + ? folly::to( + numActiveFabricPortsAtFwIsolate.value()) + : "--"); - callback_->linkActiveStateChanged(port2IsActive); + callback_->linkActiveStateChangedOrFwIsolated( + port2IsActive, fwIsolated, numActiveFabricPortsAtFwIsolate); #endif } @@ -2477,13 +2500,12 @@ HwInitResult SaiSwitch::initLocked( adapterKeys2AdapterHostKeysJson.get()); if (bootType_ != BootType::WARM_BOOT) { if (getSwitchType() == cfg::SwitchType::FABRIC) { - // 11.0 is not honoring isolate attribute during fabric switch create - // We still want the switch to be isolated before we start enabling ports - // after cold boot. This is tracked in CS00012372888. - // TODO: get rid of this call once CS00012372888 is resolved auto& switchApi = SaiApiTable::getInstance()->switchApi(); - switchApi.setAttribute( - saiSwitchId_, SaiSwitchTraits::Attributes::SwitchIsolate{true}); + auto isolated = switchApi.getAttribute( + saiSwitchId_, SaiSwitchTraits::Attributes::SwitchIsolate{}); + XLOG(DBG2) << " Fabric switch on cold boot came up isolated : " + << (isolated ? "yes" : "no"); + CHECK(isolated); } ret.switchState = getColdBootSwitchState(); ret.switchState->publish(); @@ -2685,7 +2707,7 @@ void SaiSwitch::syncLinkActiveStates() { if (platform_->getAsic()->isSupported(HwAsic::Feature::FABRIC_PORTS)) { std::lock_guard lock(saiSwitchMutex_); txReadyStatusChangeBottomHalfEventBase_.runInFbossEventBaseThread( - [=, this]() { txReadyStatusChangeCallbackBottomHalf(); }); + [=, this]() { txReadyStatusChangeOrFwIsolateCallbackBottomHalf(); }); } } @@ -2724,7 +2746,7 @@ void SaiSwitch::initTxReadyStatusChangeLocked( * callback to guarantee that we don't miss any callbacks and those are * always ordered. */ - txReadyStatusChangeCallbackBottomHalf(); + txReadyStatusChangeOrFwIsolateCallbackBottomHalf(); }); #endif } @@ -4224,7 +4246,9 @@ std::shared_ptr SaiSwitch::reconstructMultiSwitchAclMap() for (const auto& [name, aclEntry] : std::as_const(*aclMap)) { auto reconstructedAclEntry = managerTable_->aclTableManager().reconstructAclEntry( - kAclTable1, name, aclEntry->getPriority()); + cfg::switch_config_constants::DEFAULT_INGRESS_ACL_TABLE(), + name, + aclEntry->getPriority()); reconstructedMultiSwitchAclMap->addNode( reconstructedAclEntry, HwSwitchMatcher(matcher)); } diff --git a/fboss/agent/hw/sai/switch/SaiSwitch.h b/fboss/agent/hw/sai/switch/SaiSwitch.h index 1692fd583e10c..347c50c38eed9 100644 --- a/fboss/agent/hw/sai/switch/SaiSwitch.h +++ b/fboss/agent/hw/sai/switch/SaiSwitch.h @@ -386,7 +386,10 @@ class SaiSwitch : public HwSwitch { void linkStateChangedCallbackBottomHalf( std::vector data); - void txReadyStatusChangeCallbackBottomHalf(); + void txReadyStatusChangeOrFwIsolateCallbackBottomHalf( + bool fwIsolated = false, + const std::optional& numActiveFabricPortsAtFwIsolate = + std::nullopt); void switchReachabilityChangeBottomHalf(); std::set getFabricReachabilityPortIds( const std::vector& switchIdAndFabricPortSaiIds) const; diff --git a/fboss/agent/hw/sai/switch/SaiSwitchManager.cpp b/fboss/agent/hw/sai/switch/SaiSwitchManager.cpp index bb19587f1c8af..c0b657ae5ea61 100644 --- a/fboss/agent/hw/sai/switch/SaiSwitchManager.cpp +++ b/fboss/agent/hw/sai/switch/SaiSwitchManager.cpp @@ -1011,7 +1011,7 @@ void SaiSwitchManager::setReachabilityGroupList(int reachabilityGroupListSize) { void SaiSwitchManager::setSramGlobalFreePercentXoffTh( uint8_t sramFreePercentXoffThreshold) { -#if defined(BRCM_SAI_SDK_DNX_GTE_11_0) && !defined(BRCM_SAI_SDK_DNX_GTE_12_0) +#if defined(BRCM_SAI_SDK_DNX_GTE_11_0) switch_->setOptionalAttribute( SaiSwitchTraits::Attributes::SramFreePercentXoffTh{ sramFreePercentXoffThreshold}); @@ -1020,7 +1020,7 @@ void SaiSwitchManager::setSramGlobalFreePercentXoffTh( void SaiSwitchManager::setSramGlobalFreePercentXonTh( uint8_t sramFreePercentXonThreshold) { -#if defined(BRCM_SAI_SDK_DNX_GTE_11_0) && !defined(BRCM_SAI_SDK_DNX_GTE_12_0) +#if defined(BRCM_SAI_SDK_DNX_GTE_11_0) switch_->setOptionalAttribute( SaiSwitchTraits::Attributes::SramFreePercentXonTh{ sramFreePercentXonThreshold}); @@ -1029,7 +1029,7 @@ void SaiSwitchManager::setSramGlobalFreePercentXonTh( void SaiSwitchManager::setLinkFlowControlCreditTh( uint16_t linkFlowControlThreshold) { -#if defined(BRCM_SAI_SDK_DNX_GTE_11_0) && !defined(BRCM_SAI_SDK_DNX_GTE_12_0) +#if defined(BRCM_SAI_SDK_DNX_GTE_11_0) switch_->setOptionalAttribute( SaiSwitchTraits::Attributes::FabricCllfcTxCreditTh{ linkFlowControlThreshold}); @@ -1048,4 +1048,14 @@ void SaiSwitchManager::setVoqDramBoundTh(uint32_t dramBoundThreshold) { #endif } +void SaiSwitchManager::setConditionalEntropyRehashPeriodUS( + int conditionalEntropyRehashPeriodUS) { + // TODO(zecheng): Update flag when new 12.0 release has the attribute +#if defined(SAI_VERSION_11_7_0_0_DNX_ODP) + switch_->setOptionalAttribute( + SaiSwitchTraits::Attributes::CondEntropyRehashPeriodUS{ + conditionalEntropyRehashPeriodUS}); +#endif +} + } // namespace facebook::fboss diff --git a/fboss/agent/hw/sai/switch/SaiSwitchManager.h b/fboss/agent/hw/sai/switch/SaiSwitchManager.h index 3c428fe48cdc4..994a78dd3b2ab 100644 --- a/fboss/agent/hw/sai/switch/SaiSwitchManager.h +++ b/fboss/agent/hw/sai/switch/SaiSwitchManager.h @@ -107,6 +107,8 @@ class SaiSwitchManager { void setSramGlobalFreePercentXonTh(uint8_t sramFreePercentXonThreshold); void setLinkFlowControlCreditTh(uint16_t linkFlowControlThreshold); void setVoqDramBoundTh(uint32_t dramBoundThreshold); + void setConditionalEntropyRehashPeriodUS( + int conditionalEntropyRehashPeriodUS); private: void programEcmpLoadBalancerParams( diff --git a/fboss/agent/hw/sai/switch/SaiSystemPortManager.cpp b/fboss/agent/hw/sai/switch/SaiSystemPortManager.cpp index 88de0cd22ee22..2991a5f85b459 100644 --- a/fboss/agent/hw/sai/switch/SaiSystemPortManager.cpp +++ b/fboss/agent/hw/sai/switch/SaiSystemPortManager.cpp @@ -13,6 +13,7 @@ #include "fboss/agent/FbossError.h" #include "fboss/agent/Utils.h" +#include "fboss/agent/VoqUtils.h" #include "fboss/agent/hw/HwSysPortFb303Stats.h" #include "fboss/agent/hw/gen-cpp2/hardware_stats_constants.h" #include "fboss/agent/hw/sai/store/SaiStore.h" @@ -97,8 +98,10 @@ SaiSystemPortManager::attributesFromSwSystemPort( qosTcToQueueMap = SaiSystemPortTraits::Attributes::QosTcToQueueMap{qosMapId}; } + std::optional + shelPktDstEnable = std::nullopt; return SaiSystemPortTraits::CreateAttributes{ - config, true /*enabled*/, qosTcToQueueMap}; + config, true /*enabled*/, qosTcToQueueMap, shelPktDstEnable}; } SystemPortSaiId SaiSystemPortManager::addSystemPort( @@ -367,7 +370,8 @@ std::shared_ptr SaiSystemPortManager::constructSystemPorts( sysPort->setCoreIndex(*platformPort->getAttachedCoreId()); sysPort->setCorePortIndex(*platformPort->getCorePortIndex()); sysPort->setSpeedMbps(static_cast(port.second->getSpeed())); - sysPort->setNumVoqs(8); + sysPort->setNumVoqs( + getNumVoqs(port.second->getPortType(), port.second->getScope())); sysPort->setScope(platformPort->getScope()); sysPort->setQosPolicy(port.second->getQosPolicy()); sysPortMap->addSystemPort(std::move(sysPort)); diff --git a/fboss/agent/hw/sai/switch/npu/SaiAclTableManager.cpp b/fboss/agent/hw/sai/switch/npu/SaiAclTableManager.cpp index da94af8d2351c..65aea1e6d3675 100644 --- a/fboss/agent/hw/sai/switch/npu/SaiAclTableManager.cpp +++ b/fboss/agent/hw/sai/switch/npu/SaiAclTableManager.cpp @@ -108,6 +108,12 @@ std::vector SaiAclTableManager::getActionTypeList( FLAGS_sai_user_defined_trap) { actionTypeList.push_back(SAI_ACL_ACTION_TYPE_SET_USER_TRAP_ID); } +#if SAI_API_VERSION >= SAI_VERSION(1, 14, 0) + if (platform_->getAsic()->isSupported(HwAsic::Feature::FLOWLET) && + FLAGS_flowletSwitchingEnable) { + actionTypeList.push_back(SAI_ACL_ACTION_TYPE_DISABLE_ARS_FORWARDING); + } +#endif return actionTypeList; } } @@ -180,6 +186,16 @@ std:: #endif #if !defined(TAJO_SDK) && !defined(BRCM_SAI_SDK_XGS) qualifierExistsFn(cfg::AclTableQualifier::IPV6_NEXT_HEADER), +#endif +#if ( \ + (SAI_API_VERSION >= SAI_VERSION(1, 14, 0) || \ + (defined(BRCM_SAI_SDK_GTE_11_0) && defined(BRCM_SAI_SDK_XGS))) && \ + !defined(TAJO_SDK)) + std::nullopt, // UserDefinedFieldGroupMin0 + std::nullopt, // UserDefinedFieldGroupMin1 + std::nullopt, // UserDefinedFieldGroupMin2 + std::nullopt, // UserDefinedFieldGroupMin3 + std::nullopt, // UserDefinedFieldGroupMin4 #endif }; diff --git a/fboss/agent/hw/sai/switch/npu/SaiPortManager.cpp b/fboss/agent/hw/sai/switch/npu/SaiPortManager.cpp index bc0cd5606b6a0..292cf5e0a11aa 100644 --- a/fboss/agent/hw/sai/switch/npu/SaiPortManager.cpp +++ b/fboss/agent/hw/sai/switch/npu/SaiPortManager.cpp @@ -38,7 +38,7 @@ std::optional getSystemPortId( if (platform->getAsic()->getAsicVendor() == HwAsic::AsicVendor::ASIC_VENDOR_TAJO) { return std::optional{ - portId + platform->getAsic()->getSystemPortIDOffset()}; + portId + platform->getAsic()->getSflowPortIDOffset()}; } return std::nullopt; } @@ -388,6 +388,7 @@ void SaiPortManager::changePortImpl( if (newPort->isUp() != oldPort->isUp() && !newPort->isUp()) { resetCableLength(newPort->getID()); } + changePortFlowletConfig(oldPort, newPort); } void SaiPortManager::attributesFromSaiStore( @@ -611,7 +612,7 @@ SaiPortTraits::CreateAttributes SaiPortManager::attributesFromSwPort( auto portPfcInfo = getPortPfcAttributes(swPort); #if SAI_API_VERSION >= SAI_VERSION(1, 14, 0) - std::optional arsEnable = std::nullopt; + std::optional arsEnable = false; std::optional arsPortLoadScalingFactor = std::nullopt; std::optional @@ -715,6 +716,7 @@ SaiPortTraits::CreateAttributes SaiPortManager::attributesFromSwPort( std::nullopt, // CondEntropyRehashEnable std::nullopt, // CondEntropyRehashPeriodUS std::nullopt, // CondEntropyRehashSeed + std::nullopt, // ShelEnable }; } return SaiPortTraits::CreateAttributes{ @@ -787,6 +789,7 @@ SaiPortTraits::CreateAttributes SaiPortManager::attributesFromSwPort( condEntropyRehashEnable, // CondEntropyRehashEnable std::nullopt, // CondEntropyRehashPeriodUS std::nullopt, // CondEntropyRehashSeed + std::nullopt, // ShelEnable }; } diff --git a/fboss/agent/hw/sai/switch/npu/bcm/SaiSwitch.cpp b/fboss/agent/hw/sai/switch/npu/bcm/SaiSwitch.cpp index 55bc2150a09b0..07f8177008a96 100644 --- a/fboss/agent/hw/sai/switch/npu/bcm/SaiSwitch.cpp +++ b/fboss/agent/hw/sai/switch/npu/bcm/SaiSwitch.cpp @@ -224,6 +224,10 @@ std::string errorType(sai_switch_error_type_t type) { return "SAI_SWITCH_ERROR_TYPE_RTP_TABLE_CHANGE"; case SAI_SWITCH_ERROR_TYPE_FABRIC_AUTO_ISOLATION: return "SAI_SWITCH_ERROR_TYPE_FABRIC_AUTO_ISOLATION"; +#endif +#if defined(SAI_VERSION_11_7_0_0_DNX_ODP) + case SAI_SWITCH_ERROR_TYPE_FIRMWARE_CRASH: + return "SAI_SWITCH_ERROR_TYPE_FIRMWARE_CRASH"; #endif default: break; @@ -442,11 +446,43 @@ void SaiSwitch::switchEventCallback( } } break; case SAI_SWITCH_EVENT_TYPE_FABRIC_AUTO_ISOLATE: { - // TODO(skhare) Process the callback - XLOG(ERR) << "Firmware Isolate callback received" - << " error type: " << errorType(eventInfo->error_type) - << " is_isolated: " << static_cast(eventInfo->index) - << " nof_active_links: " << static_cast(eventInfo->index2); + auto isIsolated = eventInfo->index; + auto numActiveFabricPorts = eventInfo->index2; + if (eventInfo->error_type == + SAI_SWITCH_ERROR_TYPE_FABRIC_AUTO_ISOLATION && + isIsolated == 1) { + // Firmware is expected issue callback when it isolates the device. + // We should never get a callback on unisolate. + XLOG(ERR) << "Firmware Isolate callback received" + << " error type: " << errorType(eventInfo->error_type) + << " isIsolated: " << isIsolated + << " numActiveFabricPorts: " << numActiveFabricPorts; + + // We always want to process Firmware Isolate cb and never coalesce it. + // Thus, unconditionally queue to for processing regardless of + // txReadyStatusChangePending_. + txReadyStatusChangeBottomHalfEventBase_.runInFbossEventBaseThread( + [this, numActiveFabricPorts]() mutable { + txReadyStatusChangeOrFwIsolateCallbackBottomHalf( + true /* fwIsolated */, numActiveFabricPorts); + }); + } else { + XLOG(ERR) << "Firmware Isolate callback received with invalid info" + << " error type: " << errorType(eventInfo->error_type) + << " isIsolated: " << isIsolated + << " numActiveFabricPorts: " << numActiveFabricPorts; + } + + break; + } +#endif +#if defined(SAI_VERSION_11_7_0_0_DNX_ODP) + case SAI_SWITCH_EVENT_TYPE_FIRMWARE_CRASHED: { + // TODO(skhare) Process this callback + XLOG(ERR) << "Firmware Crash callback received: " << " error type: " + << errorType(eventInfo->error_type) + << " reload reason: " << static_cast(eventInfo->index) + << " reload status: " << static_cast(eventInfo->index2); break; } #endif diff --git a/fboss/agent/hw/sai/switch/npu/bcm/SaiTamManager.cpp b/fboss/agent/hw/sai/switch/npu/bcm/SaiTamManager.cpp index 8c605342fefa5..77724559a94c0 100644 --- a/fboss/agent/hw/sai/switch/npu/bcm/SaiTamManager.cpp +++ b/fboss/agent/hw/sai/switch/npu/bcm/SaiTamManager.cpp @@ -2,7 +2,6 @@ #include "fboss/agent/hw/sai/switch/SaiTamManager.h" -#include "fboss/agent/hw/sai/api/SwitchApi.h" #include "fboss/agent/hw/sai/store/SaiStore.h" #include "fboss/agent/hw/sai/switch/SaiManagerTable.h" #include "fboss/agent/hw/sai/switch/SaiSwitchManager.h" diff --git a/fboss/agent/hw/sai/switch/oss/SaiSwitch.cpp b/fboss/agent/hw/sai/switch/oss/SaiSwitch.cpp index b12a3e5ddb1ed..19941f3085b08 100644 --- a/fboss/agent/hw/sai/switch/oss/SaiSwitch.cpp +++ b/fboss/agent/hw/sai/switch/oss/SaiSwitch.cpp @@ -2,9 +2,6 @@ #include "fboss/agent/hw/sai/switch/SaiSwitch.h" -#include "fboss/agent/LockPolicy.h" -#include "fboss/agent/state/StateDelta.h" - namespace facebook::fboss { void SaiSwitch::tamEventCallback( sai_object_id_t /*tam_event_id*/, diff --git a/fboss/agent/hw/sai/switch/phy/SaiAclTableManager.cpp b/fboss/agent/hw/sai/switch/phy/SaiAclTableManager.cpp index 610910686d771..1a8b38cbd5999 100644 --- a/fboss/agent/hw/sai/switch/phy/SaiAclTableManager.cpp +++ b/fboss/agent/hw/sai/switch/phy/SaiAclTableManager.cpp @@ -107,6 +107,16 @@ std:: std::nullopt, // fieldOuterVlanId std::nullopt, // fieldBthOpcode std::nullopt, // fieldIpv6NextHeader +#if ( \ + (SAI_API_VERSION >= SAI_VERSION(1, 14, 0) || \ + (defined(BRCM_SAI_SDK_GTE_11_0) && defined(BRCM_SAI_SDK_XGS))) && \ + !defined(TAJO_SDK)) + std::nullopt, // UserDefinedFieldGroupMin0 + std::nullopt, // UserDefinedFieldGroupMin1 + std::nullopt, // UserDefinedFieldGroupMin2 + std::nullopt, // UserDefinedFieldGroupMin3 + std::nullopt, // UserDefinedFieldGroupMin4 +#endif }; SaiAclTableTraits::AdapterHostKey adapterHostKey{addedAclTable->getID()}; diff --git a/fboss/agent/hw/sai/switch/phy/SaiPortManager.cpp b/fboss/agent/hw/sai/switch/phy/SaiPortManager.cpp index cdfb1d92225c5..5fcd72adae928 100644 --- a/fboss/agent/hw/sai/switch/phy/SaiPortManager.cpp +++ b/fboss/agent/hw/sai/switch/phy/SaiPortManager.cpp @@ -290,6 +290,7 @@ SaiPortTraits::CreateAttributes SaiPortManager::attributesFromSwPort( std::nullopt, // CondEntropyRehashEnable std::nullopt, // CondEntropyRehashPeriodUS std::nullopt, // CondEntropyRehashSeed + std::nullopt, // ShelEnable }; } diff --git a/fboss/agent/hw/sai/switch/tests/AclTableGroupManagerTest.cpp b/fboss/agent/hw/sai/switch/tests/AclTableGroupManagerTest.cpp index 61b4a0a301cf5..8a68bc69ce6cc 100644 --- a/fboss/agent/hw/sai/switch/tests/AclTableGroupManagerTest.cpp +++ b/fboss/agent/hw/sai/switch/tests/AclTableGroupManagerTest.cpp @@ -72,9 +72,11 @@ TEST_F(AclTableGroupManagerTest, checkNonExistentAclTableGroup) { } TEST_F(AclTableGroupManagerTest, addAclTableGroupMember) { - auto aclTableId = saiManagerTable->aclTableManager() - .getAclTableHandle(kAclTable1) - ->aclTable->adapterKey(); + auto aclTableId = + saiManagerTable->aclTableManager() + .getAclTableHandle( + cfg::switch_config_constants::DEFAULT_INGRESS_ACL_TABLE()) + ->aclTable->adapterKey(); auto aclTableGroupHandle = saiManagerTable->aclTableGroupManager().getAclTableGroupHandle( SAI_ACL_STAGE_INGRESS); @@ -83,7 +85,8 @@ TEST_F(AclTableGroupManagerTest, addAclTableGroupMember) { auto aclTableGroupMemberHandle = saiManagerTable->aclTableGroupManager().getAclTableGroupMemberHandle( - aclTableGroupHandle, kAclTable1); + aclTableGroupHandle, + cfg::switch_config_constants::DEFAULT_INGRESS_ACL_TABLE()); EXPECT_TRUE(aclTableGroupMemberHandle); EXPECT_TRUE(aclTableGroupMemberHandle->aclTableGroupMember); @@ -122,12 +125,16 @@ TEST_F(AclTableGroupManagerTest, addTwoAclTableGroupMember) { } TEST_F(AclTableGroupManagerTest, addDupAclTableGroupMember) { - auto aclTableId = saiManagerTable->aclTableManager() - .getAclTableHandle(kAclTable1) - ->aclTable->adapterKey(); + auto aclTableId = + saiManagerTable->aclTableManager() + .getAclTableHandle( + cfg::switch_config_constants::DEFAULT_INGRESS_ACL_TABLE()) + ->aclTable->adapterKey(); EXPECT_THROW( saiManagerTable->aclTableGroupManager().addAclTableGroupMember( - SAI_ACL_STAGE_INGRESS, aclTableId, kAclTable1), + SAI_ACL_STAGE_INGRESS, + aclTableId, + cfg::switch_config_constants::DEFAULT_INGRESS_ACL_TABLE()), FbossError); } diff --git a/fboss/agent/hw/sai/switch/tests/AclTableManagerTest.cpp b/fboss/agent/hw/sai/switch/tests/AclTableManagerTest.cpp index e0ccf214a4ff0..215378f0f502c 100644 --- a/fboss/agent/hw/sai/switch/tests/AclTableManagerTest.cpp +++ b/fboss/agent/hw/sai/switch/tests/AclTableManagerTest.cpp @@ -49,9 +49,11 @@ class AclTableManagerTest : public ManagerTestBase { }; TEST_F(AclTableManagerTest, addAclTable) { - auto aclTableId = saiManagerTable->aclTableManager() - .getAclTableHandle(kAclTable1) - ->aclTable->adapterKey(); + auto aclTableId = + saiManagerTable->aclTableManager() + .getAclTableHandle( + cfg::switch_config_constants::DEFAULT_INGRESS_ACL_TABLE()) + ->aclTable->adapterKey(); // Acl table is added as part of sai switch init in test setup auto stageGot = saiApiTable->aclApi().getAttribute( aclTableId, SaiAclTableTraits::Attributes::Stage()); @@ -60,9 +62,11 @@ TEST_F(AclTableManagerTest, addAclTable) { TEST_F(AclTableManagerTest, addTwoAclTable) { // AclTable1 should already be added - auto aclTableId = saiManagerTable->aclTableManager() - .getAclTableHandle(kAclTable1) - ->aclTable->adapterKey(); + auto aclTableId = + saiManagerTable->aclTableManager() + .getAclTableHandle( + cfg::switch_config_constants::DEFAULT_INGRESS_ACL_TABLE()) + ->aclTable->adapterKey(); auto table2 = std::make_shared(0, kAclTable2); AclTableSaiId aclTableId2 = saiManagerTable->aclTableManager().addAclTable( table2, cfg::AclStage::INGRESS); @@ -79,7 +83,7 @@ TEST_F(AclTableManagerTest, addTwoAclTable) { TEST_F(AclTableManagerTest, addDupAclTable) { state::AclTableFields fields{}; fields.priority() = 0; - fields.id() = kAclTable1; + fields.id() = cfg::switch_config_constants::DEFAULT_INGRESS_ACL_TABLE(); auto table1 = std::make_shared(std::move(fields)); EXPECT_THROW( saiManagerTable->aclTableManager().addAclTable( @@ -88,8 +92,8 @@ TEST_F(AclTableManagerTest, addDupAclTable) { } TEST_F(AclTableManagerTest, getAclTable) { - auto handle = - saiManagerTable->aclTableManager().getAclTableHandle(kAclTable1); + auto handle = saiManagerTable->aclTableManager().getAclTableHandle( + cfg::switch_config_constants::DEFAULT_INGRESS_ACL_TABLE()); EXPECT_TRUE(handle); EXPECT_TRUE(handle->aclTable); @@ -103,17 +107,19 @@ TEST_F(AclTableManagerTest, checkNonExistentAclTable) { } TEST_F(AclTableManagerTest, addAclEntry) { - auto aclTableId = saiManagerTable->aclTableManager() - .getAclTableHandle(kAclTable1) - ->aclTable->adapterKey(); + auto aclTableId = + saiManagerTable->aclTableManager() + .getAclTableHandle( + cfg::switch_config_constants::DEFAULT_INGRESS_ACL_TABLE()) + ->aclTable->adapterKey(); auto aclEntry = std::make_shared(kPriority(), std::string("AclEntry1")); aclEntry->setDscp(kDscp()); aclEntry->setActionType(kActionType()); - AclEntrySaiId aclEntryId = - saiManagerTable->aclTableManager().addAclEntry(aclEntry, kAclTable1); + AclEntrySaiId aclEntryId = saiManagerTable->aclTableManager().addAclEntry( + aclEntry, cfg::switch_config_constants::DEFAULT_INGRESS_ACL_TABLE()); auto tableIdGot = saiApiTable->aclApi().getAttribute( aclEntryId, SaiAclEntryTraits::Attributes::TableId()); @@ -121,9 +127,11 @@ TEST_F(AclTableManagerTest, addAclEntry) { } TEST_F(AclTableManagerTest, addAclEntryWithCounter) { - auto aclTableId = saiManagerTable->aclTableManager() - .getAclTableHandle(kAclTable1) - ->aclTable->adapterKey(); + auto aclTableId = + saiManagerTable->aclTableManager() + .getAclTableHandle( + cfg::switch_config_constants::DEFAULT_INGRESS_ACL_TABLE()) + ->aclTable->adapterKey(); auto counter = cfg::TrafficCounter(); *counter.name() = "stat0.c"; @@ -135,8 +143,8 @@ TEST_F(AclTableManagerTest, addAclEntryWithCounter) { aclEntry->setDscp(kDscp()); aclEntry->setAclAction(action); - AclEntrySaiId aclEntryId = - saiManagerTable->aclTableManager().addAclEntry(aclEntry, kAclTable1); + AclEntrySaiId aclEntryId = saiManagerTable->aclTableManager().addAclEntry( + aclEntry, cfg::switch_config_constants::DEFAULT_INGRESS_ACL_TABLE()); auto tableIdGot = saiApiTable->aclApi().getAttribute( aclEntryId, SaiAclEntryTraits::Attributes::TableId()); @@ -155,17 +163,19 @@ TEST_F(AclTableManagerTest, addAclEntryWithCounter) { } TEST_F(AclTableManagerTest, addTwoAclEntry) { - auto aclTableId = saiManagerTable->aclTableManager() - .getAclTableHandle(kAclTable1) - ->aclTable->adapterKey(); + auto aclTableId = + saiManagerTable->aclTableManager() + .getAclTableHandle( + cfg::switch_config_constants::DEFAULT_INGRESS_ACL_TABLE()) + ->aclTable->adapterKey(); auto aclEntry = std::make_shared(kPriority(), std::string("AclEntry1")); aclEntry->setDscp(kDscp()); aclEntry->setActionType(kActionType()); - AclEntrySaiId aclEntryId = - saiManagerTable->aclTableManager().addAclEntry(aclEntry, kAclTable1); + AclEntrySaiId aclEntryId = saiManagerTable->aclTableManager().addAclEntry( + aclEntry, cfg::switch_config_constants::DEFAULT_INGRESS_ACL_TABLE()); auto tableIdGot = saiApiTable->aclApi().getAttribute( aclEntryId, SaiAclEntryTraits::Attributes::TableId()); @@ -176,8 +186,8 @@ TEST_F(AclTableManagerTest, addTwoAclEntry) { aclEntry2->setDscp(kDscp2()); aclEntry2->setActionType(kActionType()); - AclEntrySaiId aclEntryId2 = - saiManagerTable->aclTableManager().addAclEntry(aclEntry2, kAclTable1); + AclEntrySaiId aclEntryId2 = saiManagerTable->aclTableManager().addAclEntry( + aclEntry2, cfg::switch_config_constants::DEFAULT_INGRESS_ACL_TABLE()); auto tableIdGot2 = saiApiTable->aclApi().getAttribute( aclEntryId2, SaiAclEntryTraits::Attributes::TableId()); @@ -190,7 +200,8 @@ TEST_F(AclTableManagerTest, addDupAclEntry) { aclEntry->setDscp(kDscp()); aclEntry->setActionType(kActionType()); - saiManagerTable->aclTableManager().addAclEntry(aclEntry, kAclTable1); + saiManagerTable->aclTableManager().addAclEntry( + aclEntry, cfg::switch_config_constants::DEFAULT_INGRESS_ACL_TABLE()); auto dupAclEntry = std::make_shared(kPriority(), std::string("AclEntry1")); @@ -198,7 +209,9 @@ TEST_F(AclTableManagerTest, addDupAclEntry) { dupAclEntry->setActionType(cfg::AclActionType::DENY); EXPECT_THROW( - saiManagerTable->aclTableManager().addAclEntry(dupAclEntry, kAclTable1), + saiManagerTable->aclTableManager().addAclEntry( + dupAclEntry, + cfg::switch_config_constants::DEFAULT_INGRESS_ACL_TABLE()), FbossError); } @@ -208,10 +221,11 @@ TEST_F(AclTableManagerTest, getAclEntry) { aclEntry->setDscp(kDscp()); aclEntry->setActionType(kActionType()); - saiManagerTable->aclTableManager().addAclEntry(aclEntry, kAclTable1); + saiManagerTable->aclTableManager().addAclEntry( + aclEntry, cfg::switch_config_constants::DEFAULT_INGRESS_ACL_TABLE()); - auto aclTableHandle = - saiManagerTable->aclTableManager().getAclTableHandle(kAclTable1); + auto aclTableHandle = saiManagerTable->aclTableManager().getAclTableHandle( + cfg::switch_config_constants::DEFAULT_INGRESS_ACL_TABLE()); EXPECT_TRUE(aclTableHandle); EXPECT_TRUE(aclTableHandle->aclTable); @@ -224,8 +238,8 @@ TEST_F(AclTableManagerTest, getAclEntry) { } TEST_F(AclTableManagerTest, checkNonExistentAclEntry) { - auto aclTableHandle = - saiManagerTable->aclTableManager().getAclTableHandle(kAclTable1); + auto aclTableHandle = saiManagerTable->aclTableManager().getAclTableHandle( + cfg::switch_config_constants::DEFAULT_INGRESS_ACL_TABLE()); EXPECT_TRUE(aclTableHandle); EXPECT_TRUE(aclTableHandle->aclTable); @@ -250,8 +264,8 @@ TEST_F(AclTableManagerTest, aclMirroring) { MatchAction matchAction = MatchAction(); matchAction.setIngressMirror(mirrorId); aclEntry->setAclAction(matchAction); - AclEntrySaiId aclEntryId = - saiManagerTable->aclTableManager().addAclEntry(aclEntry, kAclTable1); + AclEntrySaiId aclEntryId = saiManagerTable->aclTableManager().addAclEntry( + aclEntry, cfg::switch_config_constants::DEFAULT_INGRESS_ACL_TABLE()); SaiMirrorHandle* mirrorHandle = saiManagerTable->mirrorManager().getMirrorHandle(mirrorId); auto gotMirrorSaiIdList = saiApiTable->aclApi().getAttribute( diff --git a/fboss/agent/hw/sai/switch/tests/HostifManagerTest.cpp b/fboss/agent/hw/sai/switch/tests/HostifManagerTest.cpp index 1888d5162887e..19acb359a9045 100644 --- a/fboss/agent/hw/sai/switch/tests/HostifManagerTest.cpp +++ b/fboss/agent/hw/sai/switch/tests/HostifManagerTest.cpp @@ -13,8 +13,6 @@ #include "fboss/agent/state/StateDelta.h" #include "fboss/agent/state/SwitchState.h" -#include - using namespace facebook::fboss; namespace { diff --git a/fboss/agent/hw/sai/switch/tests/InSegEntryManagerTest.cpp b/fboss/agent/hw/sai/switch/tests/InSegEntryManagerTest.cpp index 0cee546e81e29..ad468014ca128 100644 --- a/fboss/agent/hw/sai/switch/tests/InSegEntryManagerTest.cpp +++ b/fboss/agent/hw/sai/switch/tests/InSegEntryManagerTest.cpp @@ -7,13 +7,8 @@ #include "fboss/agent/hw/sai/switch/SaiSwitchManager.h" #include "fboss/agent/hw/sai/switch/tests/ManagerTestBase.h" -#include "fboss/agent/state/StateDelta.h" #include "fboss/agent/state/SwitchState.h" -#include - -#include - namespace facebook::fboss { namespace { diff --git a/fboss/agent/hw/sai/switch/tests/NeighborManagerTest.cpp b/fboss/agent/hw/sai/switch/tests/NeighborManagerTest.cpp index 06fbe7da2829d..9d94b022fa6d3 100644 --- a/fboss/agent/hw/sai/switch/tests/NeighborManagerTest.cpp +++ b/fboss/agent/hw/sai/switch/tests/NeighborManagerTest.cpp @@ -15,7 +15,6 @@ #include "fboss/agent/hw/sai/switch/SaiNeighborManager.h" #include "fboss/agent/hw/sai/switch/tests/ManagerTestBase.h" #include "fboss/agent/state/ArpEntry.h" -#include "fboss/agent/state/NdpEntry.h" #include "fboss/agent/state/SwitchState.h" #include "fboss/agent/types.h" diff --git a/fboss/agent/hw/sai/switch/tests/NextHopManagerTest.cpp b/fboss/agent/hw/sai/switch/tests/NextHopManagerTest.cpp index 54e2b8bfeb469..ef875850df0cd 100644 --- a/fboss/agent/hw/sai/switch/tests/NextHopManagerTest.cpp +++ b/fboss/agent/hw/sai/switch/tests/NextHopManagerTest.cpp @@ -10,8 +10,6 @@ #include "fboss/agent/hw/sai/switch/SaiNextHopManager.h" #include "fboss/agent/hw/sai/switch/tests/ManagerTestBase.h" -#include "fboss/agent/state/RouteNextHop.h" - using namespace facebook::fboss; class NextHopManagerTest : public ManagerTestBase { diff --git a/fboss/agent/hw/sai/switch/tests/PortManagerTest.cpp b/fboss/agent/hw/sai/switch/tests/PortManagerTest.cpp index c0b8434ac8fc0..29d1de1f7af18 100644 --- a/fboss/agent/hw/sai/switch/tests/PortManagerTest.cpp +++ b/fboss/agent/hw/sai/switch/tests/PortManagerTest.cpp @@ -172,6 +172,7 @@ class PortManagerTest : public ManagerTestBase { std::nullopt, // CondEntropyRehashEnable std::nullopt, // CondEntropyRehashPeriodUS std::nullopt, // CondEntropyRehashSeed + std::nullopt, // ShelEnable }; return portApi.create(a, 0); } diff --git a/fboss/agent/hw/sai/switch/tests/UnsupportedFeatureTest.cpp b/fboss/agent/hw/sai/switch/tests/UnsupportedFeatureTest.cpp index da88d0e95a8f2..afe0f1bc9d60d 100644 --- a/fboss/agent/hw/sai/switch/tests/UnsupportedFeatureTest.cpp +++ b/fboss/agent/hw/sai/switch/tests/UnsupportedFeatureTest.cpp @@ -9,7 +9,6 @@ */ #include "fboss/agent/FbossError.h" #include "fboss/agent/hw/sai/switch/tests/ManagerTestBase.h" -#include "fboss/agent/state/StateDelta.h" #include "fboss/agent/state/SwitchSettings.h" #include "fboss/agent/state/SwitchState.h" #include "fboss/agent/test/TestUtils.h" diff --git a/fboss/agent/hw/sai/switch/tests/VlanManagerTest.cpp b/fboss/agent/hw/sai/switch/tests/VlanManagerTest.cpp index 355ac5c5ee0e2..fd8f1fb56634b 100644 --- a/fboss/agent/hw/sai/switch/tests/VlanManagerTest.cpp +++ b/fboss/agent/hw/sai/switch/tests/VlanManagerTest.cpp @@ -9,7 +9,6 @@ */ #include "fboss/agent/hw/sai/switch/SaiVlanManager.h" #include "fboss/agent/hw/sai/switch/tests/ManagerTestBase.h" -#include "fboss/agent/state/Port.h" #include "fboss/agent/state/Vlan.h" #include "fboss/agent/types.h" diff --git a/fboss/agent/hw/sai/switch/tests/phy/AclTableManagerTest.cpp b/fboss/agent/hw/sai/switch/tests/phy/AclTableManagerTest.cpp index d25d40f9b6bea..1caca7302c9dd 100644 --- a/fboss/agent/hw/sai/switch/tests/phy/AclTableManagerTest.cpp +++ b/fboss/agent/hw/sai/switch/tests/phy/AclTableManagerTest.cpp @@ -48,9 +48,11 @@ class AclTableManagerTest : public ManagerTestBase { }; TEST_F(AclTableManagerTest, addAclTable) { - auto aclTableId = saiManagerTable->aclTableManager() - .getAclTableHandle(kAclTable1) - ->aclTable->adapterKey(); + auto aclTableId = + saiManagerTable->aclTableManager() + .getAclTableHandle( + cfg::switch_config_constants::DEFAULT_INGRESS_ACL_TABLE()) + ->aclTable->adapterKey(); // Acl table is added as part of sai switch init in test setup auto stageGot = saiApiTable->aclApi().getAttribute( aclTableId, SaiAclTableTraits::Attributes::Stage()); @@ -73,9 +75,11 @@ TEST_F(AclTableManagerTest, addAclTable) { TEST_F(AclTableManagerTest, addTwoAclTable) { // AclTable1 should already be added - auto aclTableId = saiManagerTable->aclTableManager() - .getAclTableHandle(kAclTable1) - ->aclTable->adapterKey(); + auto aclTableId = + saiManagerTable->aclTableManager() + .getAclTableHandle( + cfg::switch_config_constants::DEFAULT_INGRESS_ACL_TABLE()) + ->aclTable->adapterKey(); auto table2 = std::make_shared(0, kAclTable2); AclTableSaiId aclTableId2 = saiManagerTable->aclTableManager().addAclTable( table2, cfg::AclStage::INGRESS); @@ -92,7 +96,7 @@ TEST_F(AclTableManagerTest, addTwoAclTable) { TEST_F(AclTableManagerTest, addDupAclTable) { state::AclTableFields fields{}; fields.priority() = 0; - fields.id() = kAclTable1; + fields.id() = cfg::switch_config_constants::DEFAULT_INGRESS_ACL_TABLE(); auto table1 = std::make_shared(std::move(fields)); EXPECT_THROW( saiManagerTable->aclTableManager().addAclTable( @@ -101,8 +105,8 @@ TEST_F(AclTableManagerTest, addDupAclTable) { } TEST_F(AclTableManagerTest, getAclTable) { - auto handle = - saiManagerTable->aclTableManager().getAclTableHandle(kAclTable1); + auto handle = saiManagerTable->aclTableManager().getAclTableHandle( + cfg::switch_config_constants::DEFAULT_INGRESS_ACL_TABLE()); EXPECT_TRUE(handle); EXPECT_TRUE(handle->aclTable); @@ -116,9 +120,11 @@ TEST_F(AclTableManagerTest, checkNonExistentAclTable) { } TEST_F(AclTableManagerTest, addAclEntryDscp) { - auto aclTableId = saiManagerTable->aclTableManager() - .getAclTableHandle(kAclTable1) - ->aclTable->adapterKey(); + auto aclTableId = + saiManagerTable->aclTableManager() + .getAclTableHandle( + cfg::switch_config_constants::DEFAULT_INGRESS_ACL_TABLE()) + ->aclTable->adapterKey(); auto aclEntry = std::make_shared(kPriority(), std::string("AclEntry1")); @@ -127,22 +133,25 @@ TEST_F(AclTableManagerTest, addAclEntryDscp) { // DSCP not supported EXPECT_THROW( - saiManagerTable->aclTableManager().addAclEntry(aclEntry, kAclTable1), + saiManagerTable->aclTableManager().addAclEntry( + aclEntry, cfg::switch_config_constants::DEFAULT_INGRESS_ACL_TABLE()), FbossError); } TEST_F(AclTableManagerTest, addAclEntryDstMac) { - auto aclTableId = saiManagerTable->aclTableManager() - .getAclTableHandle(kAclTable1) - ->aclTable->adapterKey(); + auto aclTableId = + saiManagerTable->aclTableManager() + .getAclTableHandle( + cfg::switch_config_constants::DEFAULT_INGRESS_ACL_TABLE()) + ->aclTable->adapterKey(); auto aclEntry = std::make_shared(kPriority(), std::string("AclEntry1")); aclEntry->setDstMac(kMac()); aclEntry->setActionType(kActionType()); - AclEntrySaiId aclEntryId = - saiManagerTable->aclTableManager().addAclEntry(aclEntry, kAclTable1); + AclEntrySaiId aclEntryId = saiManagerTable->aclTableManager().addAclEntry( + aclEntry, cfg::switch_config_constants::DEFAULT_INGRESS_ACL_TABLE()); auto tableIdGot = saiApiTable->aclApi().getAttribute( aclEntryId, SaiAclEntryTraits::Attributes::TableId()); @@ -150,9 +159,11 @@ TEST_F(AclTableManagerTest, addAclEntryDstMac) { } TEST_F(AclTableManagerTest, addAclEntryWithCounter) { - auto aclTableId = saiManagerTable->aclTableManager() - .getAclTableHandle(kAclTable1) - ->aclTable->adapterKey(); + auto aclTableId = + saiManagerTable->aclTableManager() + .getAclTableHandle( + cfg::switch_config_constants::DEFAULT_INGRESS_ACL_TABLE()) + ->aclTable->adapterKey(); auto counter = cfg::TrafficCounter(); counter.name() = "stat0.c"; @@ -164,8 +175,8 @@ TEST_F(AclTableManagerTest, addAclEntryWithCounter) { aclEntry->setDstMac(kMac()); aclEntry->setAclAction(action); - AclEntrySaiId aclEntryId = - saiManagerTable->aclTableManager().addAclEntry(aclEntry, kAclTable1); + AclEntrySaiId aclEntryId = saiManagerTable->aclTableManager().addAclEntry( + aclEntry, cfg::switch_config_constants::DEFAULT_INGRESS_ACL_TABLE()); auto tableIdGot = saiApiTable->aclApi().getAttribute( aclEntryId, SaiAclEntryTraits::Attributes::TableId()); @@ -184,17 +195,19 @@ TEST_F(AclTableManagerTest, addAclEntryWithCounter) { } TEST_F(AclTableManagerTest, addTwoAclEntry) { - auto aclTableId = saiManagerTable->aclTableManager() - .getAclTableHandle(kAclTable1) - ->aclTable->adapterKey(); + auto aclTableId = + saiManagerTable->aclTableManager() + .getAclTableHandle( + cfg::switch_config_constants::DEFAULT_INGRESS_ACL_TABLE()) + ->aclTable->adapterKey(); auto aclEntry = std::make_shared(kPriority(), std::string("AclEntry1")); aclEntry->setDstMac(kMac()); aclEntry->setActionType(kActionType()); - AclEntrySaiId aclEntryId = - saiManagerTable->aclTableManager().addAclEntry(aclEntry, kAclTable1); + AclEntrySaiId aclEntryId = saiManagerTable->aclTableManager().addAclEntry( + aclEntry, cfg::switch_config_constants::DEFAULT_INGRESS_ACL_TABLE()); auto tableIdGot = saiApiTable->aclApi().getAttribute( aclEntryId, SaiAclEntryTraits::Attributes::TableId()); @@ -205,8 +218,8 @@ TEST_F(AclTableManagerTest, addTwoAclEntry) { aclEntry->setDstMac(kMac2()); aclEntry2->setActionType(kActionType()); - AclEntrySaiId aclEntryId2 = - saiManagerTable->aclTableManager().addAclEntry(aclEntry2, kAclTable1); + AclEntrySaiId aclEntryId2 = saiManagerTable->aclTableManager().addAclEntry( + aclEntry2, cfg::switch_config_constants::DEFAULT_INGRESS_ACL_TABLE()); auto tableIdGot2 = saiApiTable->aclApi().getAttribute( aclEntryId2, SaiAclEntryTraits::Attributes::TableId()); @@ -219,7 +232,8 @@ TEST_F(AclTableManagerTest, addDupAclEntry) { aclEntry->setDstMac(kMac()); aclEntry->setActionType(kActionType()); - saiManagerTable->aclTableManager().addAclEntry(aclEntry, kAclTable1); + saiManagerTable->aclTableManager().addAclEntry( + aclEntry, cfg::switch_config_constants::DEFAULT_INGRESS_ACL_TABLE()); auto dupAclEntry = std::make_shared(kPriority(), std::string("AclEntry1")); @@ -227,7 +241,9 @@ TEST_F(AclTableManagerTest, addDupAclEntry) { dupAclEntry->setActionType(cfg::AclActionType::DENY); EXPECT_THROW( - saiManagerTable->aclTableManager().addAclEntry(dupAclEntry, kAclTable1), + saiManagerTable->aclTableManager().addAclEntry( + dupAclEntry, + cfg::switch_config_constants::DEFAULT_INGRESS_ACL_TABLE()), FbossError); } @@ -237,10 +253,11 @@ TEST_F(AclTableManagerTest, getAclEntry) { aclEntry->setDstMac(kMac()); aclEntry->setActionType(kActionType()); - saiManagerTable->aclTableManager().addAclEntry(aclEntry, kAclTable1); + saiManagerTable->aclTableManager().addAclEntry( + aclEntry, cfg::switch_config_constants::DEFAULT_INGRESS_ACL_TABLE()); - auto aclTableHandle = - saiManagerTable->aclTableManager().getAclTableHandle(kAclTable1); + auto aclTableHandle = saiManagerTable->aclTableManager().getAclTableHandle( + cfg::switch_config_constants::DEFAULT_INGRESS_ACL_TABLE()); EXPECT_TRUE(aclTableHandle); EXPECT_TRUE(aclTableHandle->aclTable); @@ -253,8 +270,8 @@ TEST_F(AclTableManagerTest, getAclEntry) { } TEST_F(AclTableManagerTest, checkNonExistentAclEntry) { - auto aclTableHandle = - saiManagerTable->aclTableManager().getAclTableHandle(kAclTable1); + auto aclTableHandle = saiManagerTable->aclTableManager().getAclTableHandle( + cfg::switch_config_constants::DEFAULT_INGRESS_ACL_TABLE()); EXPECT_TRUE(aclTableHandle); EXPECT_TRUE(aclTableHandle->aclTable); diff --git a/fboss/agent/hw/sai/tracer/AclApiTracer.cpp b/fboss/agent/hw/sai/tracer/AclApiTracer.cpp index b65cae42f3c52..83224213badd1 100644 --- a/fboss/agent/hw/sai/tracer/AclApiTracer.cpp +++ b/fboss/agent/hw/sai/tracer/AclApiTracer.cpp @@ -56,6 +56,16 @@ std::map> _AclTableMap{ #if !defined(TAJO_SDK) && !defined(BRCM_SAI_SDK_XGS) SAI_ATTR_MAP(AclTable, FieldIpv6NextHeader), #endif +#if ( \ + (SAI_API_VERSION >= SAI_VERSION(1, 14, 0) || \ + (defined(BRCM_SAI_SDK_GTE_11_0) && defined(BRCM_SAI_SDK_XGS))) && \ + !defined(TAJO_SDK)) + SAI_ATTR_MAP(AclTable, UserDefinedFieldGroupMin0), + SAI_ATTR_MAP(AclTable, UserDefinedFieldGroupMin1), + SAI_ATTR_MAP(AclTable, UserDefinedFieldGroupMin2), + SAI_ATTR_MAP(AclTable, UserDefinedFieldGroupMin3), + SAI_ATTR_MAP(AclTable, UserDefinedFieldGroupMin4), +#endif }; std::map> _AclCounterMap{ @@ -115,6 +125,16 @@ std::map> _AclEntryMap{ #endif #if !defined(TAJO_SDK) && !defined(BRCM_SAI_SDK_XGS) SAI_ATTR_MAP(AclEntry, FieldIpv6NextHeader), +#endif +#if ( \ + (SAI_API_VERSION >= SAI_VERSION(1, 14, 0) || \ + (defined(BRCM_SAI_SDK_GTE_11_0) && defined(BRCM_SAI_SDK_XGS))) && \ + !defined(TAJO_SDK)) + SAI_ATTR_MAP(AclEntry, UserDefinedFieldGroupMin0), + SAI_ATTR_MAP(AclEntry, UserDefinedFieldGroupMin1), + SAI_ATTR_MAP(AclEntry, UserDefinedFieldGroupMin2), + SAI_ATTR_MAP(AclEntry, UserDefinedFieldGroupMin3), + SAI_ATTR_MAP(AclEntry, UserDefinedFieldGroupMin4), #endif SAI_ATTR_MAP(AclEntry, ActionPacketAction), SAI_ATTR_MAP(AclEntry, ActionCounter), diff --git a/fboss/agent/hw/sai/tracer/MirrorApiTracer.cpp b/fboss/agent/hw/sai/tracer/MirrorApiTracer.cpp index cfedc17767fc3..bc16ec947c1bf 100644 --- a/fboss/agent/hw/sai/tracer/MirrorApiTracer.cpp +++ b/fboss/agent/hw/sai/tracer/MirrorApiTracer.cpp @@ -37,6 +37,7 @@ std::map> _MirrorSessionMap{ }; void handleExtensionAttributes() { + SAI_EXT_ATTR_MAP_2(MirrorSession, EnhancedRemoteMirror, TcBufferLimit) SAI_EXT_ATTR_MAP_2(MirrorSession, SflowMirror, TcBufferLimit) } diff --git a/fboss/agent/hw/sai/tracer/PortApiTracer.cpp b/fboss/agent/hw/sai/tracer/PortApiTracer.cpp index a62ac487d3305..18533126b4bca 100644 --- a/fboss/agent/hw/sai/tracer/PortApiTracer.cpp +++ b/fboss/agent/hw/sai/tracer/PortApiTracer.cpp @@ -175,6 +175,7 @@ void handleExtensionAttributes() { SAI_EXT_ATTR_MAP(Port, CondEntropyRehashEnable) SAI_EXT_ATTR_MAP(Port, CondEntropyRehashPeriodUS) SAI_EXT_ATTR_MAP(Port, CondEntropyRehashSeed) + SAI_EXT_ATTR_MAP(Port, ShelEnable) } } // namespace diff --git a/fboss/agent/hw/sai/tracer/RouterInterfaceApiTracer.cpp b/fboss/agent/hw/sai/tracer/RouterInterfaceApiTracer.cpp index 61ea05def561e..b46c2a4b6b206 100644 --- a/fboss/agent/hw/sai/tracer/RouterInterfaceApiTracer.cpp +++ b/fboss/agent/hw/sai/tracer/RouterInterfaceApiTracer.cpp @@ -13,7 +13,6 @@ #include #include "fboss/agent/hw/sai/api/RouterInterfaceApi.h" -#include "fboss/agent/hw/sai/tracer/PortApiTracer.h" #include "fboss/agent/hw/sai/tracer/Utils.h" using folly::to; diff --git a/fboss/agent/hw/sai/tracer/SaiTracer.h b/fboss/agent/hw/sai/tracer/SaiTracer.h index c61aad37b1725..5c61935bd6a2e 100644 --- a/fboss/agent/hw/sai/tracer/SaiTracer.h +++ b/fboss/agent/hw/sai/tracer/SaiTracer.h @@ -313,6 +313,7 @@ class SaiTracer { {TYPE_INDEX(std::vector), &portFrequencyOffsetPpmListAttr}, {TYPE_INDEX(std::vector), &portSnrListAttr}, + {TYPE_INDEX(AclEntryFieldU8List), &aclEntryFieldU8ListAttr}, #endif }; @@ -871,7 +872,12 @@ class SaiTracer { SaiTracer::getInstance()->listFuncMap_.find(typeIndex); \ if (listFuncMatch != SaiTracer::getInstance()->listFuncMap_.end()) { \ (*listFuncMatch->second)( \ - attr_list, i, listCount++, attrLines, rv == 0); \ + attr_list, i, listCount, attrLines, rv == 0); \ + if (typeIndex == TYPE_INDEX(AclEntryFieldU8List)) { \ + listCount += 2; \ + } else { \ + listCount++; \ + } \ continue; \ } \ } diff --git a/fboss/agent/hw/sai/tracer/SwitchApiTracer.cpp b/fboss/agent/hw/sai/tracer/SwitchApiTracer.cpp index b7f58d80657fe..5ff9da3347db7 100644 --- a/fboss/agent/hw/sai/tracer/SwitchApiTracer.cpp +++ b/fboss/agent/hw/sai/tracer/SwitchApiTracer.cpp @@ -133,6 +133,11 @@ void handleExtensionAttributes() { SAI_EXT_ATTR_MAP(Switch, MaxVoqs); SAI_EXT_ATTR_MAP(Switch, FabricCllfcTxCreditTh); SAI_EXT_ATTR_MAP(Switch, VoqDramBoundTh); + SAI_EXT_ATTR_MAP(Switch, CondEntropyRehashPeriodUS); + SAI_EXT_ATTR_MAP(Switch, ShelSrcIp); + SAI_EXT_ATTR_MAP(Switch, ShelDstIp); + SAI_EXT_ATTR_MAP(Switch, ShelSrcMac); + SAI_EXT_ATTR_MAP(Switch, ShelPeriodicInterval); } } // namespace diff --git a/fboss/agent/hw/sai/tracer/SystemPortApiTracer.cpp b/fboss/agent/hw/sai/tracer/SystemPortApiTracer.cpp index ffcf6b3e74e77..821ad136e0714 100644 --- a/fboss/agent/hw/sai/tracer/SystemPortApiTracer.cpp +++ b/fboss/agent/hw/sai/tracer/SystemPortApiTracer.cpp @@ -27,6 +27,10 @@ std::map> _SystemPortMap{ SAI_ATTR_MAP(SystemPort, ConfigInfo), SAI_ATTR_MAP(SystemPort, QosTcToQueueMap), }; + +void handleExtensionAttributes() { + SAI_EXT_ATTR_MAP(SystemPort, ShelPktDstEnable) +} } // namespace namespace facebook::fboss { @@ -37,6 +41,7 @@ WRAP_SET_ATTR_FUNC(system_port, SAI_OBJECT_TYPE_SYSTEM_PORT, systemPort); WRAP_GET_ATTR_FUNC(system_port, SAI_OBJECT_TYPE_SYSTEM_PORT, systemPort); sai_system_port_api_t* wrappedSystemPortApi() { + handleExtensionAttributes(); static sai_system_port_api_t systemPortWrappers; systemPortWrappers.create_system_port = &wrap_create_system_port; diff --git a/fboss/agent/hw/sai/tracer/TamEventAgingGroupApiTracer.cpp b/fboss/agent/hw/sai/tracer/TamEventAgingGroupApiTracer.cpp index 6049cc4019818..1ce757f362080 100644 --- a/fboss/agent/hw/sai/tracer/TamEventAgingGroupApiTracer.cpp +++ b/fboss/agent/hw/sai/tracer/TamEventAgingGroupApiTracer.cpp @@ -8,16 +8,16 @@ * */ -#if defined(SAI_VERSION_11_3_0_0_DNX_ODP) || \ - defined(SAI_VERSION_11_7_0_0_DNX_ODP) +#include "fboss/agent/hw/sai/tracer/TamEventAgingGroupApiTracer.h" // NOLINT(facebook-unused-include-check) -#include "fboss/agent/hw/sai/tracer/TamEventAgingGroupApiTracer.h" #include #include #include "fboss/agent/hw/sai/api/TamEventAgingGroupApi.h" #include "fboss/agent/hw/sai/tracer/Utils.h" +#if defined(BRCM_SAI_SDK_DNX_GTE_11_0) && !defined(BRCM_SAI_SDK_DNX_GTE_12_0) + using folly::to; namespace { diff --git a/fboss/agent/hw/sai/tracer/TamEventAgingGroupApiTracer.h b/fboss/agent/hw/sai/tracer/TamEventAgingGroupApiTracer.h index 1f06729f8c237..65d5662a83a25 100644 --- a/fboss/agent/hw/sai/tracer/TamEventAgingGroupApiTracer.h +++ b/fboss/agent/hw/sai/tracer/TamEventAgingGroupApiTracer.h @@ -2,11 +2,10 @@ #pragma once -#if defined(SAI_VERSION_11_3_0_0_DNX_ODP) || \ - defined(SAI_VERSION_11_7_0_0_DNX_ODP) - #include "fboss/agent/hw/sai/tracer/SaiTracer.h" +#if defined(BRCM_SAI_SDK_DNX_GTE_11_0) && !defined(BRCM_SAI_SDK_DNX_GTE_12_0) + extern "C" { #include #include diff --git a/fboss/agent/hw/sai/tracer/Utils.cpp b/fboss/agent/hw/sai/tracer/Utils.cpp index dc540f5af8650..5fc264686f3c4 100644 --- a/fboss/agent/hw/sai/tracer/Utils.cpp +++ b/fboss/agent/hw/sai/tracer/Utils.cpp @@ -247,6 +247,62 @@ void aclEntryFieldMacAttr( } } +void aclEntryFieldU8ListAttr( + const sai_attribute_t* attr_list, + int i, + uint32_t listIndex, + vector& attrLines, + bool logEntry) { + uint32_t listLimit = SaiTracer::getInstance()->checkListCount( + listIndex + 1, + sizeof(sai_uint32_t), + attr_list[i].value.aclfield.data.u8list.count); + + string prefix = to("s_a", "[", i, "].value.aclfield."); + attrLines.push_back( + to(prefix, "enable=", attr_list[i].value.aclfield.enable)); + + prefix = to("s_a", "[", i, "].value.aclfield.data.u8list."); + attrLines.push_back(to( + prefix, "count=", attr_list[i].value.aclfield.data.u8list.count)); + if (logEntry && attr_list[i].value.aclfield.data.u8list.list) { + attrLines.push_back( + to(prefix, "list=(sai_uint8_t*)(list_", listIndex, ")")); + for (int j = 0; + j < std::min(attr_list[i].value.aclfield.data.u8list.count, listLimit); + ++j) { + attrLines.push_back(to( + prefix, + "list[", + j, + "]=", + attr_list[i].value.aclfield.data.u8list.list[j])); + } + } else { + attrLines.push_back(to(prefix, "list=NULL")); + } + + prefix = to("s_a", "[", i, "].value.aclfield.mask.u8list."); + attrLines.push_back(to( + prefix, "count=", attr_list[i].value.aclfield.mask.u8list.count)); + if (logEntry && attr_list[i].value.aclfield.mask.u8list.list) { + attrLines.push_back( + to(prefix, "list=(sai_uint8_t*)(list_", listIndex + 1, ")")); + for (int j = 0; + j < std::min(attr_list[i].value.aclfield.mask.u8list.count, listLimit); + ++j) { + attrLines.push_back(to( + prefix, + "list[", + j, + "]=", + attr_list[i].value.aclfield.mask.u8list.list[j])); + } + } else { + attrLines.push_back(to(prefix, "list=NULL")); + } +} + void systemPortConfigAttr( const sai_attribute_t* attr_list, int i, diff --git a/fboss/agent/hw/sai/tracer/Utils.h b/fboss/agent/hw/sai/tracer/Utils.h index 069b017e70f3c..91def9ea567ae 100644 --- a/fboss/agent/hw/sai/tracer/Utils.h +++ b/fboss/agent/hw/sai/tracer/Utils.h @@ -124,6 +124,13 @@ void prbsRxStateAttr( /* List Types */ +void aclEntryFieldU8ListAttr( + const sai_attribute_t* attr_list, + int i, + uint32_t listIndex, + std::vector& attrLines, + bool logEntry = true); + void oidListAttr( const sai_attribute_t* attr_list, int i, diff --git a/fboss/agent/hw/sai/tracer/run/Main.cpp b/fboss/agent/hw/sai/tracer/run/Main.cpp index f5d384fc6f3e4..3c3f3dde2d5aa 100644 --- a/fboss/agent/hw/sai/tracer/run/Main.cpp +++ b/fboss/agent/hw/sai/tracer/run/Main.cpp @@ -10,9 +10,7 @@ #include "fboss/agent/hw/sai/tracer/run/SaiLog.h" -extern "C" { -#include -} +extern "C" {} int main() { facebook::fboss::run_trace(); diff --git a/fboss/agent/hw/sim/SimPlatform.cpp b/fboss/agent/hw/sim/SimPlatform.cpp index f8a710c641412..6d7506095219e 100644 --- a/fboss/agent/hw/sim/SimPlatform.cpp +++ b/fboss/agent/hw/sim/SimPlatform.cpp @@ -16,8 +16,6 @@ #include "fboss/agent/hw/sim/SimSwitch.h" #include "fboss/lib/platforms/PlatformProductInfo.h" -#include - using std::make_unique; using std::unique_ptr; diff --git a/fboss/agent/hw/sim/SimPlatform.h b/fboss/agent/hw/sim/SimPlatform.h index bf8b7c562f03b..cf703ccd161a6 100644 --- a/fboss/agent/hw/sim/SimPlatform.h +++ b/fboss/agent/hw/sim/SimPlatform.h @@ -55,13 +55,9 @@ class SimPlatform : public Platform { private: void setupAsic( - cfg::SwitchType /*switchType*/, std::optional /*switchId*/, - int16_t /*switchIndex*/, - std::optional /*systemPortRange*/, - folly::MacAddress& /*mac*/, - std::optional /*fabricNodeRole) */ - ) override { + const cfg::SwitchInfo& /*switchInfo*/, + std::optional /*role*/) override { // noop - no asic implemented } // Forbidden copy constructor and assignment operator diff --git a/fboss/agent/hw/switch_asics/ChenabAsic.cpp b/fboss/agent/hw/switch_asics/ChenabAsic.cpp index 28a61777b86dd..ec89a5bf993f0 100644 --- a/fboss/agent/hw/switch_asics/ChenabAsic.cpp +++ b/fboss/agent/hw/switch_asics/ChenabAsic.cpp @@ -195,6 +195,7 @@ bool ChenabAsic::isSupportedNonFabric(Feature feature) const { case HwAsic::Feature::INGRESS_PRIORITY_GROUP_SHARED_WATERMARK: case HwAsic::Feature::MULTIPLE_EGRESS_BUFFER_POOL: case HwAsic::Feature::ENABLE_DELAY_DROP_CONGESTION_THRESHOLD: + case HwAsic::Feature::FAST_LLFC_COUNTER: return false; } return false; @@ -324,7 +325,7 @@ uint32_t ChenabAsic::getMaxWideEcmpSize() const { uint32_t ChenabAsic::getMaxLagMemberSize() const { return 512; } -int ChenabAsic::getSystemPortIDOffset() const { +int ChenabAsic::getSflowPortIDOffset() const { return 500; } uint32_t ChenabAsic::getSflowShimHeaderSize() const { diff --git a/fboss/agent/hw/switch_asics/ChenabAsic.h b/fboss/agent/hw/switch_asics/ChenabAsic.h index 3f508d9869286..09d87e50099fb 100644 --- a/fboss/agent/hw/switch_asics/ChenabAsic.h +++ b/fboss/agent/hw/switch_asics/ChenabAsic.h @@ -18,20 +18,11 @@ namespace facebook::fboss { class ChenabAsic : public HwAsic { public: ChenabAsic( - cfg::SwitchType type, - std::optional id, - int16_t index, - std::optional systemPortRange, - const folly::MacAddress& mac, + std::optional switchId, + cfg::SwitchInfo switchInfo, std::optional sdkVersion = std::nullopt) - : HwAsic( - type, - id, - index, - systemPortRange, - mac, - sdkVersion, - {cfg::SwitchType::NPU}) {} + : HwAsic(switchId, switchInfo, sdkVersion, {cfg::SwitchType::NPU}) {} + AsicVendor getAsicVendor() const override; std::string getVendor() const override; bool isSupported(Feature feature) const override; @@ -59,7 +50,7 @@ class ChenabAsic : public HwAsic { uint16_t getMirrorTruncateSize() const override; uint32_t getMaxWideEcmpSize() const override; uint32_t getMaxLagMemberSize() const override; - int getSystemPortIDOffset() const override; + int getSflowPortIDOffset() const override; uint32_t getSflowShimHeaderSize() const override; std::optional getPortSerdesPreemphasis() const override; uint32_t getPacketBufferUnitSize() const override; diff --git a/fboss/agent/hw/switch_asics/CredoPhyAsic.h b/fboss/agent/hw/switch_asics/CredoPhyAsic.h index 4b32e7ec39b77..f8dd303a00023 100644 --- a/fboss/agent/hw/switch_asics/CredoPhyAsic.h +++ b/fboss/agent/hw/switch_asics/CredoPhyAsic.h @@ -9,20 +9,10 @@ namespace facebook::fboss { class CredoPhyAsic : public HwAsic { public: CredoPhyAsic( - cfg::SwitchType type, - std::optional id, - int16_t index, - std::optional systemPortRange, - const folly::MacAddress& mac, + std::optional switchId, + cfg::SwitchInfo switchInfo, std::optional sdkVersion = std::nullopt) - : HwAsic( - type, - id, - index, - systemPortRange, - mac, - sdkVersion, - {cfg::SwitchType::PHY}) {} + : HwAsic(switchId, switchInfo, sdkVersion, {cfg::SwitchType::PHY}) {} bool isSupported(Feature feature) const override; cfg::AsicType getAsicType() const override { return cfg::AsicType::ASIC_TYPE_ELBERT_8DD; diff --git a/fboss/agent/hw/switch_asics/EbroAsic.cpp b/fboss/agent/hw/switch_asics/EbroAsic.cpp index 22d4df180c75a..96f58feaaee5b 100644 --- a/fboss/agent/hw/switch_asics/EbroAsic.cpp +++ b/fboss/agent/hw/switch_asics/EbroAsic.cpp @@ -191,6 +191,7 @@ bool EbroAsic::isSupportedNonFabric(Feature feature) const { case HwAsic::Feature::PORT_MTU_ERROR_TRAP: case HwAsic::Feature::DEDICATED_CPU_BUFFER_POOL: case HwAsic::Feature::EGRESS_ACL_TABLE: + case HwAsic::Feature::FAST_LLFC_COUNTER: return false; case HwAsic::Feature::SAI_ACL_ENTRY_SRC_PORT_QUALIFIER: /* diff --git a/fboss/agent/hw/switch_asics/EbroAsic.h b/fboss/agent/hw/switch_asics/EbroAsic.h index dad07c1cc7e56..1d0f2ebfe4163 100644 --- a/fboss/agent/hw/switch_asics/EbroAsic.h +++ b/fboss/agent/hw/switch_asics/EbroAsic.h @@ -10,22 +10,10 @@ namespace facebook::fboss { class EbroAsic : public TajoAsic { public: EbroAsic( - cfg::SwitchType type, - std::optional id, - int16_t index, - std::optional systemPortRange, - const folly::MacAddress& mac, + std::optional switchId, + cfg::SwitchInfo switchInfo, std::optional sdkVersion = std::nullopt) - : TajoAsic( - type, - id, - index, - systemPortRange, - mac, - sdkVersion, - {cfg::SwitchType::NPU, - cfg::SwitchType::VOQ, - cfg::SwitchType::FABRIC}) { + : TajoAsic(switchId, switchInfo, sdkVersion, {cfg::SwitchType::NPU}) { if (sdkVersion.has_value() && sdkVersion->asicSdk().has_value()) { currentSdkVersion_ = getAsicSdkVersion(sdkVersion->asicSdk().value()); auto p4WarmbootSdkVersion = getAsicSdkVersion(p4WarmbootBaseSdk); @@ -92,7 +80,7 @@ class EbroAsic : public TajoAsic { uint32_t getMaxLagMemberSize() const override { return 512; } - int getSystemPortIDOffset() const override { + int getSflowPortIDOffset() const override { return 1000; } uint32_t getSflowShimHeaderSize() const override { diff --git a/fboss/agent/hw/switch_asics/FakeAsic.h b/fboss/agent/hw/switch_asics/FakeAsic.h index 1bef8be456243..32818d944118e 100644 --- a/fboss/agent/hw/switch_asics/FakeAsic.h +++ b/fboss/agent/hw/switch_asics/FakeAsic.h @@ -13,22 +13,17 @@ namespace facebook::fboss { class FakeAsic : public HwAsic { public: FakeAsic( - cfg::SwitchType switchType, std::optional switchId, - int16_t index, - std::optional systemPortRange, - const folly::MacAddress& mac, + cfg::SwitchInfo switchInfo, std::optional sdkVersion = std::nullopt) : HwAsic( - switchType, switchId, - index, - systemPortRange, - mac, + switchInfo, sdkVersion, {cfg::SwitchType::NPU, cfg::SwitchType::VOQ, cfg::SwitchType::FABRIC}) {} + bool isSupported(Feature feature) const override { switch (feature) { case Feature::HSDK: diff --git a/fboss/agent/hw/switch_asics/HwAsic.cpp b/fboss/agent/hw/switch_asics/HwAsic.cpp index 3f805c42e0879..0d99571c8c08f 100644 --- a/fboss/agent/hw/switch_asics/HwAsic.cpp +++ b/fboss/agent/hw/switch_asics/HwAsic.cpp @@ -38,25 +38,31 @@ constexpr auto kDefaultDropEgressID = 100000; namespace facebook::fboss { HwAsic::HwAsic( - cfg::SwitchType switchType, std::optional switchId, - int16_t switchIndex, - std::optional systemPortRange, - const folly::MacAddress& mac, + const cfg::SwitchInfo& switchInfo, std::optional sdkVersion, std::unordered_set supportedModes) - : switchType_(switchType), + : switchType_(*switchInfo.switchType()), switchId_(switchId), - switchIndex_(switchIndex), - systemPortRange_(systemPortRange), - asicMac_(mac), + switchIndex_(*switchInfo.switchIndex()), + systemPortRanges_(*switchInfo.systemPortRanges()), sdkVersion_(sdkVersion) { + CHECK(switchInfo.switchMac().has_value()); + asicMac_ = folly::MacAddress(*switchInfo.switchMac()); if (supportedModes.find(switchType_) == supportedModes.end()) { throw std::runtime_error( folly::to("Unsupported Mode: ", switchType_)); } + if (switchInfo.globalSystemPortOffset()) { + globalSystemPortOffset_ = *switchInfo.globalSystemPortOffset(); + } + if (switchInfo.localSystemPortOffset()) { + localSystemPortOffset_ = *switchInfo.localSystemPortOffset(); + } + if (switchInfo.inbandPortId()) { + inbandPortId_ = *switchInfo.inbandPortId(); + } } - /* * Default Content Aware Processor group ID for ACLs */ @@ -69,64 +75,45 @@ int HwAsic::getDefaultACLGroupID() const { } std::unique_ptr HwAsic::makeAsic( - cfg::AsicType asicType, - cfg::SwitchType switchType, std::optional switchId, - int16_t switchIndex, - std::optional systemPortRange, - const folly::MacAddress& mac, + const cfg::SwitchInfo& switchInfo, std::optional sdkVersion) { - switch (asicType) { + switch (*switchInfo.asicType()) { case cfg::AsicType::ASIC_TYPE_FAKE: - return std::make_unique( - switchType, switchId, switchIndex, systemPortRange, mac, sdkVersion); + return std::make_unique(switchId, switchInfo, sdkVersion); case cfg::AsicType::ASIC_TYPE_MOCK: - return std::make_unique( - switchType, switchId, switchIndex, systemPortRange, mac, sdkVersion); + return std::make_unique(switchId, switchInfo, sdkVersion); case cfg::AsicType::ASIC_TYPE_TRIDENT2: - return std::make_unique( - switchType, switchId, switchIndex, systemPortRange, mac, sdkVersion); + return std::make_unique(switchId, switchInfo, sdkVersion); case cfg::AsicType::ASIC_TYPE_TOMAHAWK: - return std::make_unique( - switchType, switchId, switchIndex, systemPortRange, mac, sdkVersion); + return std::make_unique(switchId, switchInfo, sdkVersion); case cfg::AsicType::ASIC_TYPE_TOMAHAWK3: - return std::make_unique( - switchType, switchId, switchIndex, systemPortRange, mac, sdkVersion); + return std::make_unique(switchId, switchInfo, sdkVersion); case cfg::AsicType::ASIC_TYPE_TOMAHAWK4: - return std::make_unique( - switchType, switchId, switchIndex, systemPortRange, mac, sdkVersion); + return std::make_unique(switchId, switchInfo, sdkVersion); case cfg::AsicType::ASIC_TYPE_TOMAHAWK5: - return std::make_unique( - switchType, switchId, switchIndex, systemPortRange, mac, sdkVersion); + return std::make_unique(switchId, switchInfo, sdkVersion); case cfg::AsicType::ASIC_TYPE_ELBERT_8DD: - return std::make_unique( - switchType, switchId, switchIndex, systemPortRange, mac, sdkVersion); + return std::make_unique(switchId, switchInfo, sdkVersion); case cfg::AsicType::ASIC_TYPE_EBRO: - return std::make_unique( - switchType, switchId, switchIndex, systemPortRange, mac, sdkVersion); + return std::make_unique(switchId, switchInfo, sdkVersion); case cfg::AsicType::ASIC_TYPE_YUBA: - return std::make_unique( - switchType, switchId, switchIndex, systemPortRange, mac, sdkVersion); + return std::make_unique(switchId, switchInfo, sdkVersion); case cfg::AsicType::ASIC_TYPE_CHENAB: - return std::make_unique( - switchType, switchId, switchIndex, systemPortRange, mac, sdkVersion); + return std::make_unique(switchId, switchInfo, sdkVersion); case cfg::AsicType::ASIC_TYPE_JERICHO2: - return std::make_unique( - switchType, switchId, switchIndex, systemPortRange, mac, sdkVersion); + return std::make_unique(switchId, switchInfo, sdkVersion); case cfg::AsicType::ASIC_TYPE_JERICHO3: - return std::make_unique( - switchType, switchId, switchIndex, systemPortRange, mac, sdkVersion); + return std::make_unique(switchId, switchInfo, sdkVersion); case cfg::AsicType::ASIC_TYPE_RAMON: - return std::make_unique( - switchType, switchId, switchIndex, systemPortRange, mac, sdkVersion); + return std::make_unique(switchId, switchInfo, sdkVersion); case cfg::AsicType::ASIC_TYPE_RAMON3: - return std::make_unique( - switchType, switchId, switchIndex, systemPortRange, mac, sdkVersion); + return std::make_unique(switchId, switchInfo, sdkVersion); case cfg::AsicType::ASIC_TYPE_GARONNE: case cfg::AsicType::ASIC_TYPE_SANDIA_PHY: - throw FbossError("Unexcepted asic type: ", asicType); + throw FbossError("Unexcepted asic type: ", *switchInfo.asicType()); }; - throw FbossError("Unexcepted asic type: ", asicType); + throw FbossError("Unexcepted asic type: ", *switchInfo.asicType()); } /* * Default Content Aware Processor group ID for TeFlows diff --git a/fboss/agent/hw/switch_asics/HwAsic.h b/fboss/agent/hw/switch_asics/HwAsic.h index bc26fdb565b7c..4426deb7e27db 100644 --- a/fboss/agent/hw/switch_asics/HwAsic.h +++ b/fboss/agent/hw/switch_asics/HwAsic.h @@ -11,11 +11,8 @@ namespace facebook::fboss { class HwAsic { public: HwAsic( - cfg::SwitchType switchType, std::optional switchId, - int16_t switchIndex, - std::optional systemPortRange, - const folly::MacAddress& mac, + const cfg::SwitchInfo& switchInfo, std::optional sdkVersion = std::nullopt, std::unordered_set supportedModes = { cfg::SwitchType::NPU}); @@ -200,6 +197,7 @@ class HwAsic { L3_INTF_MTU, DEDICATED_CPU_BUFFER_POOL, EGRESS_ACL_TABLE, + FAST_LLFC_COUNTER, }; enum class AsicMode { @@ -223,12 +221,8 @@ class HwAsic { }; virtual ~HwAsic() {} static std::unique_ptr makeAsic( - cfg::AsicType asicType, - cfg::SwitchType switchType, std::optional switchID, - int16_t switchIndex, - std::optional systemPortRange, - const folly::MacAddress& mac, + const cfg::SwitchInfo& switchInfo, std::optional sdkVersion); virtual bool isSupported(Feature) const = 0; virtual cfg::AsicType getAsicType() const = 0; @@ -310,7 +304,7 @@ class HwAsic { * This will be added to PortID and will be carried in the * sflow shim header */ - virtual int getSystemPortIDOffset() const { + virtual int getSflowPortIDOffset() const { return 0; } @@ -358,8 +352,8 @@ class HwAsic { int16_t getSwitchIndex() const { return switchIndex_; } - std::optional getSystemPortRange() const { - return systemPortRange_; + const cfg::SystemPortRanges& getSystemPortRanges() const { + return systemPortRanges_; } virtual cfg::StreamType getDefaultStreamType() const { @@ -414,6 +408,15 @@ class HwAsic { virtual int getMidPriCpuQueueId() const = 0; virtual int getHiPriCpuQueueId() const = 0; + std::optional getGlobalSystemPortOffset() const { + return globalSystemPortOffset_; + } + std::optional getLocalSystemPortOffset() const { + return localSystemPortOffset_; + } + std::optional getInbandPortId() const { + return inbandPortId_; + } protected: static cfg::Range64 makeRange(int64_t min, int64_t max); @@ -422,10 +425,12 @@ class HwAsic { cfg::SwitchType switchType_; std::optional switchId_; int16_t switchIndex_; - std::optional systemPortRange_; + cfg::SystemPortRanges systemPortRanges_; cfg::StreamType defaultStreamType_{cfg::StreamType::ALL}; folly::MacAddress asicMac_; std::optional sdkVersion_; + std::optional localSystemPortOffset_, globalSystemPortOffset_, + inbandPortId_; }; } // namespace facebook::fboss diff --git a/fboss/agent/hw/switch_asics/Jericho2Asic.cpp b/fboss/agent/hw/switch_asics/Jericho2Asic.cpp index b0a6b828a5d44..1c64b77433d1f 100644 --- a/fboss/agent/hw/switch_asics/Jericho2Asic.cpp +++ b/fboss/agent/hw/switch_asics/Jericho2Asic.cpp @@ -195,6 +195,7 @@ bool Jericho2Asic::isSupported(Feature feature) const { case HwAsic::Feature::PORT_MTU_ERROR_TRAP: case HwAsic::Feature::DEDICATED_CPU_BUFFER_POOL: case HwAsic::Feature::EGRESS_ACL_TABLE: + case HwAsic::Feature::FAST_LLFC_COUNTER: return false; } return false; diff --git a/fboss/agent/hw/switch_asics/Jericho2Asic.h b/fboss/agent/hw/switch_asics/Jericho2Asic.h index 8b1eb631dd7b3..40792c6e9f558 100644 --- a/fboss/agent/hw/switch_asics/Jericho2Asic.h +++ b/fboss/agent/hw/switch_asics/Jericho2Asic.h @@ -9,20 +9,11 @@ namespace facebook::fboss { class Jericho2Asic : public BroadcomAsic { public: Jericho2Asic( - cfg::SwitchType type, - std::optional id, - int16_t switchIndex, - std::optional systemPortRange, - const folly::MacAddress& mac, + std::optional switchId, + cfg::SwitchInfo switchInfo, std::optional sdkVersion = std::nullopt) - : BroadcomAsic( - type, - id, - switchIndex, - systemPortRange, - mac, - sdkVersion, - {cfg::SwitchType::VOQ}) {} + : BroadcomAsic(switchId, switchInfo, sdkVersion, {cfg::SwitchType::VOQ}) { + } bool isSupported(Feature) const override; const std::map& desiredLoopbackModes() const override; diff --git a/fboss/agent/hw/switch_asics/Jericho3Asic.cpp b/fboss/agent/hw/switch_asics/Jericho3Asic.cpp index 24c9328247534..3643155eb0cc8 100644 --- a/fboss/agent/hw/switch_asics/Jericho3Asic.cpp +++ b/fboss/agent/hw/switch_asics/Jericho3Asic.cpp @@ -94,6 +94,7 @@ bool Jericho3Asic::isSupported(Feature feature) const { case HwAsic::Feature::EGRESS_GVOQ_WATERMARK_BYTES: case HwAsic::Feature::INGRESS_PRIORITY_GROUP_SHARED_WATERMARK: case HwAsic::Feature::PORT_MTU_ERROR_TRAP: + case HwAsic::Feature::FAST_LLFC_COUNTER: return true; // Features not expected to work on SIM case HwAsic::Feature::SHARED_INGRESS_EGRESS_BUFFER_POOL: diff --git a/fboss/agent/hw/switch_asics/Jericho3Asic.h b/fboss/agent/hw/switch_asics/Jericho3Asic.h index 47724d04da408..429139fb3962e 100644 --- a/fboss/agent/hw/switch_asics/Jericho3Asic.h +++ b/fboss/agent/hw/switch_asics/Jericho3Asic.h @@ -10,20 +10,11 @@ namespace facebook::fboss { class Jericho3Asic : public BroadcomAsic { public: Jericho3Asic( - cfg::SwitchType type, - std::optional id, - int16_t index, - std::optional systemPortRange, - const folly::MacAddress& mac, + std::optional switchId, + cfg::SwitchInfo switchInfo, std::optional sdkVersion = std::nullopt) - : BroadcomAsic( - type, - id, - index, - systemPortRange, - mac, - sdkVersion, - {cfg::SwitchType::VOQ}) {} + : BroadcomAsic(switchId, switchInfo, sdkVersion, {cfg::SwitchType::VOQ}) { + } bool isSupported(Feature) const override; const std::map& desiredLoopbackModes() const override; diff --git a/fboss/agent/hw/switch_asics/MockAsic.h b/fboss/agent/hw/switch_asics/MockAsic.h index 506b9b065e0ff..0306a16787bf4 100644 --- a/fboss/agent/hw/switch_asics/MockAsic.h +++ b/fboss/agent/hw/switch_asics/MockAsic.h @@ -12,22 +12,17 @@ class MockAsic : public HwAsic { public: static auto constexpr kDefaultNumPortQueues = 10; MockAsic( - cfg::SwitchType switchType, std::optional switchId, - int16_t index, - std::optional systemPortRange, - const folly::MacAddress& mac, + cfg::SwitchInfo switchInfo, std::optional sdkVersion = std::nullopt) : HwAsic( - switchType, switchId, - index, - systemPortRange, - mac, + switchInfo, sdkVersion, {cfg::SwitchType::NPU, cfg::SwitchType::VOQ, cfg::SwitchType::FABRIC}) {} + bool isSupported(Feature feature) const override { switch (feature) { case Feature::HSDK: diff --git a/fboss/agent/hw/switch_asics/Ramon3Asic.h b/fboss/agent/hw/switch_asics/Ramon3Asic.h index 81c642d5f13fb..cf70faf45c4f4 100644 --- a/fboss/agent/hw/switch_asics/Ramon3Asic.h +++ b/fboss/agent/hw/switch_asics/Ramon3Asic.h @@ -9,19 +9,13 @@ namespace facebook::fboss { class Ramon3Asic : public BroadcomAsic { public: Ramon3Asic( - cfg::SwitchType type, - std::optional id, - int16_t index, - std::optional systemPortRange, - const folly::MacAddress& mac, + std::optional switchId, + cfg::SwitchInfo switchInfo, std::optional sdkVersion = std::nullopt, FabricNodeRole fabricNodeRole = FabricNodeRole::SINGLE_STAGE_L1) : BroadcomAsic( - type, - id, - index, - systemPortRange, - mac, + switchId, + switchInfo, sdkVersion, {cfg::SwitchType::FABRIC}), fabricNodeRole_(fabricNodeRole) {} diff --git a/fboss/agent/hw/switch_asics/RamonAsic.h b/fboss/agent/hw/switch_asics/RamonAsic.h index 4280b75fecbaa..38dc05c59e7bb 100644 --- a/fboss/agent/hw/switch_asics/RamonAsic.h +++ b/fboss/agent/hw/switch_asics/RamonAsic.h @@ -9,22 +9,17 @@ namespace facebook::fboss { class RamonAsic : public BroadcomAsic { public: RamonAsic( - cfg::SwitchType type, - std::optional id, - int16_t index, - std::optional systemPortRange, - const folly::MacAddress& mac, + std::optional switchId, + cfg::SwitchInfo switchInfo, std::optional sdkVersion = std::nullopt, FabricNodeRole fabricNodeRole = FabricNodeRole::SINGLE_STAGE_L1) : BroadcomAsic( - type, - id, - index, - systemPortRange, - mac, + switchId, + switchInfo, sdkVersion, {cfg::SwitchType::FABRIC}), fabricNodeRole_(fabricNodeRole) {} + bool isSupported(Feature feature) const override; const std::map& desiredLoopbackModes() const override; diff --git a/fboss/agent/hw/switch_asics/Tomahawk3Asic.cpp b/fboss/agent/hw/switch_asics/Tomahawk3Asic.cpp index da695d4d2e55b..f8aa3372362cc 100644 --- a/fboss/agent/hw/switch_asics/Tomahawk3Asic.cpp +++ b/fboss/agent/hw/switch_asics/Tomahawk3Asic.cpp @@ -184,6 +184,7 @@ bool Tomahawk3Asic::isSupported(Feature feature) const { case HwAsic::Feature::PORT_MTU_ERROR_TRAP: case HwAsic::Feature::DEDICATED_CPU_BUFFER_POOL: case HwAsic::Feature::EGRESS_ACL_TABLE: + case HwAsic::Feature::FAST_LLFC_COUNTER: return false; } return false; diff --git a/fboss/agent/hw/switch_asics/Tomahawk4Asic.cpp b/fboss/agent/hw/switch_asics/Tomahawk4Asic.cpp index f56c555de5efc..2993ec66f23d1 100644 --- a/fboss/agent/hw/switch_asics/Tomahawk4Asic.cpp +++ b/fboss/agent/hw/switch_asics/Tomahawk4Asic.cpp @@ -203,6 +203,7 @@ bool Tomahawk4Asic::isSupported(Feature feature) const { case HwAsic::Feature::PORT_MTU_ERROR_TRAP: case HwAsic::Feature::DEDICATED_CPU_BUFFER_POOL: case HwAsic::Feature::EGRESS_ACL_TABLE: + case HwAsic::Feature::FAST_LLFC_COUNTER: return false; } return false; diff --git a/fboss/agent/hw/switch_asics/Tomahawk5Asic.cpp b/fboss/agent/hw/switch_asics/Tomahawk5Asic.cpp index 608bbe3e03e2c..870a41ae84c39 100644 --- a/fboss/agent/hw/switch_asics/Tomahawk5Asic.cpp +++ b/fboss/agent/hw/switch_asics/Tomahawk5Asic.cpp @@ -186,6 +186,7 @@ bool Tomahawk5Asic::isSupported(Feature feature) const { case HwAsic::Feature::PORT_MTU_ERROR_TRAP: case HwAsic::Feature::DEDICATED_CPU_BUFFER_POOL: case HwAsic::Feature::EGRESS_ACL_TABLE: + case HwAsic::Feature::FAST_LLFC_COUNTER: return false; } return false; diff --git a/fboss/agent/hw/switch_asics/TomahawkAsic.cpp b/fboss/agent/hw/switch_asics/TomahawkAsic.cpp index affb7d52db83d..43de585a212d9 100644 --- a/fboss/agent/hw/switch_asics/TomahawkAsic.cpp +++ b/fboss/agent/hw/switch_asics/TomahawkAsic.cpp @@ -184,6 +184,7 @@ bool TomahawkAsic::isSupported(Feature feature) const { case HwAsic::Feature::PORT_MTU_ERROR_TRAP: case HwAsic::Feature::DEDICATED_CPU_BUFFER_POOL: case HwAsic::Feature::EGRESS_ACL_TABLE: + case HwAsic::Feature::FAST_LLFC_COUNTER: return false; } return false; diff --git a/fboss/agent/hw/switch_asics/Trident2Asic.cpp b/fboss/agent/hw/switch_asics/Trident2Asic.cpp index 2d743b39334f7..9a12d8935d7ee 100644 --- a/fboss/agent/hw/switch_asics/Trident2Asic.cpp +++ b/fboss/agent/hw/switch_asics/Trident2Asic.cpp @@ -184,6 +184,7 @@ bool Trident2Asic::isSupported(Feature feature) const { case HwAsic::Feature::PORT_MTU_ERROR_TRAP: case HwAsic::Feature::DEDICATED_CPU_BUFFER_POOL: case HwAsic::Feature::EGRESS_ACL_TABLE: + case HwAsic::Feature::FAST_LLFC_COUNTER: return false; } return false; diff --git a/fboss/agent/hw/switch_asics/YubaAsic.cpp b/fboss/agent/hw/switch_asics/YubaAsic.cpp index 471fbfab15d00..4d941809fc4f4 100644 --- a/fboss/agent/hw/switch_asics/YubaAsic.cpp +++ b/fboss/agent/hw/switch_asics/YubaAsic.cpp @@ -190,6 +190,7 @@ bool YubaAsic::isSupportedNonFabric(Feature feature) const { case HwAsic::Feature::ENABLE_DELAY_DROP_CONGESTION_THRESHOLD: case HwAsic::Feature::PORT_MTU_ERROR_TRAP: case HwAsic::Feature::EGRESS_ACL_TABLE: + case HwAsic::Feature::FAST_LLFC_COUNTER: return false; } return false; diff --git a/fboss/agent/hw/switch_asics/YubaAsic.h b/fboss/agent/hw/switch_asics/YubaAsic.h index 06b60bd6d1dd4..fc918eb37ab0e 100644 --- a/fboss/agent/hw/switch_asics/YubaAsic.h +++ b/fboss/agent/hw/switch_asics/YubaAsic.h @@ -18,22 +18,10 @@ namespace facebook::fboss { class YubaAsic : public TajoAsic { public: YubaAsic( - cfg::SwitchType type, - std::optional id, - int16_t index, - std::optional systemPortRange, - const folly::MacAddress& mac, + std::optional switchId, + cfg::SwitchInfo switchInfo, std::optional sdkVersion = std::nullopt) - : TajoAsic( - type, - id, - index, - systemPortRange, - mac, - sdkVersion, - {cfg::SwitchType::NPU, - cfg::SwitchType::VOQ, - cfg::SwitchType::FABRIC}) { + : TajoAsic(switchId, switchInfo, sdkVersion, {cfg::SwitchType::NPU}) { HwAsic::setDefaultStreamType(cfg::StreamType::UNICAST); } bool isSupported(Feature feature) const override { @@ -90,7 +78,7 @@ class YubaAsic : public TajoAsic { uint32_t getMaxLagMemberSize() const override { return 512; } - int getSystemPortIDOffset() const override { + int getSflowPortIDOffset() const override { return 0; } uint32_t getSflowShimHeaderSize() const override { @@ -111,6 +99,12 @@ class YubaAsic : public TajoAsic { uint32_t getMaxEcmpSize() const override { return 512; } + std::optional getMaxEcmpGroups() const override { + return 1024; + } + std::optional getMaxEcmpMembers() const override { + return 32768; + } uint32_t getNumCores() const override { return 12; } diff --git a/fboss/agent/hw/switch_asics/tests/Jericho3AsicTests.cpp b/fboss/agent/hw/switch_asics/tests/Jericho3AsicTests.cpp index 9bceee7db92cf..4e4f320f16848 100644 --- a/fboss/agent/hw/switch_asics/tests/Jericho3AsicTests.cpp +++ b/fboss/agent/hw/switch_asics/tests/Jericho3AsicTests.cpp @@ -22,12 +22,12 @@ class Jericho3AsicTest : public ::testing::Test { cfg::Range64 sysPortRange; sysPortRange.minimum() = 100; sysPortRange.maximum() = 144; - asic_ = std::make_unique( - cfg::SwitchType::VOQ, - 0, - 0, - sysPortRange, - folly::MacAddress("02:00:00:00:0F:0B")); + cfg::SwitchInfo switchInfo; + switchInfo.systemPortRanges()->systemPortRanges()->push_back(sysPortRange); + switchInfo.switchType() = cfg::SwitchType::VOQ; + switchInfo.switchMac() = "02:00:00:00:0F:0B"; + switchInfo.switchIndex() = 0; + asic_ = std::make_unique(0, switchInfo); } std::unique_ptr asic_; }; diff --git a/fboss/agent/hw/test/BUCK b/fboss/agent/hw/test/BUCK index 8fa7bd3181069..1a0468f070ef8 100644 --- a/fboss/agent/hw/test/BUCK +++ b/fboss/agent/hw/test/BUCK @@ -1,5 +1,9 @@ load("@fbcode_macros//build_defs:cpp_library.bzl", "cpp_library") load("@fbcode_macros//build_defs:cpp_unittest.bzl", "cpp_unittest") +load( + "@fbsource//arvr/tools/build_defs:embed_resources.bzl", + "embed_resources", +) oncall("fboss_agent_push") @@ -44,18 +48,14 @@ cpp_library( "//fboss/agent/test/utils:asic_test_utils", "//fboss/agent/test/utils:config_utils", "//fboss/agent/test/utils:pkt_test_utils", - "//fboss/agent/test/utils:port_test_utils", "//fboss/lib/config:fboss_config_utils", "//fboss/lib/phy:phy-cpp2-types", - "//fboss/lib/platforms:platform_mode", "//fboss/qsfp_service/if:transceiver-cpp2-types", - "//folly:format", "//folly:network_address", "//folly:synchronized", "//folly/executors:function_scheduler", "//folly/gen:base", "//folly/logging:logging", - "//thrift/lib/cpp/util:enum_utils", ], ) @@ -80,7 +80,6 @@ cpp_unittest( ], deps = [ "//fb303:service_data", - "//fboss/agent/hw:hardware_stats-cpp2-types", "//fboss/agent/hw:hw_port_fb303_stats", "//fboss/agent/hw:stats_constants", "//folly/logging:logging", @@ -145,7 +144,6 @@ cpp_library( "//fboss/agent/test/utils:packet_snooper", "//folly:optional", "//folly/io:iobuf", - "//folly/logging:logging", ], ) @@ -187,15 +185,12 @@ cpp_library( "//fboss/agent/packet:packet", "//fboss/agent/packet:packet_factory", "//fboss/agent/state:state", - "//fboss/agent/state:state_utils", "//fboss/agent/test:resourcelibutil", "//fboss/agent/test:utils", "//fboss/agent/test/utils:pkt_test_utils", "//folly:network_address", "//folly:range", - "//folly:string", "//folly/io:iobuf", - "//folly/logging:logging", ], ) @@ -208,15 +203,12 @@ cpp_library( exported_deps = [ "fbsource//third-party/googletest:gtest", ":hw_packet_utils", - ":hw_test_acl_utils", - "//fboss/agent:fboss-error", "//fboss/agent:fboss-types", "//fboss/agent:hw_switch", "//fboss/agent:switch_config-cpp2-types", "//fboss/agent/hw:hardware_stats-cpp2-types", "//fboss/agent/hw/switch_asics:switch_asics", "//fboss/agent/state:state", - "//fboss/agent/test:resourcelibutil", "//fboss/agent/test/utils:copp_test_utils", "//folly:network_address", "//folly/logging:logging", @@ -265,7 +257,6 @@ cpp_library( "//fboss/agent:platform_base", "//fboss/agent/hw:hardware_stats-cpp2-types", "//fboss/agent/hw/switch_asics:switch_asics", - "//fboss/agent/state:state", "//fboss/agent/test:ecmp_helper", "//fboss/agent/test/utils:qos_test_utils", "//fboss/lib:common_utils", @@ -329,7 +320,6 @@ hw_test_common_srcs = [ "HwLabelSwitchRouteTest.cpp", "HwLinkStateDependentTest.cpp", "HwMirrorTests.cpp", - "HwPortLedTests.cpp", "HwPortProfileTests.cpp", "HwPortStressTests.cpp", "HwPtpTcTests.cpp", @@ -338,7 +328,6 @@ hw_test_common_srcs = [ "HwRouteTests.cpp", "HwTest.cpp", "HwVlanTests.cpp", - "HwEcmpTests.cpp", "HwResourceStatsTests.cpp", "HwSplitAgentTest.cpp", "HwSwitchStateReplayTest.cpp", @@ -355,6 +344,7 @@ hw_test_common_srcs = [ ] hw_test_asic_only_srcs = hw_test_common_srcs + [ + "HwAsicDefaultProgrammingTests.cpp", "HwParityErrorTest.cpp", "dataplane_tests/facebook/HwAlpmStressTests.cpp", ] @@ -379,6 +369,17 @@ hw_dataplane_test_srcs = [ "dataplane_tests/HwRouteStatTests.cpp", ] +embed_resources( + name = "golden_data", + add_map = True, + header_path = "fboss/agent/hw/test", + namespace = None, + resources = glob(["golden/**/*.csv"]), + visibility = [ + "PUBLIC", + ], +) + cpp_library( name = "hw_switch_test", srcs = hw_test_asic_only_srcs + hw_dataplane_test_srcs, @@ -387,9 +388,9 @@ cpp_library( exported_deps = [ "fbsource//third-party/googletest:gtest", ":config_factory", + ":golden_data", ":hw_copp_utils", ":hw_packet_utils", - ":hw_pfc_utils", ":hw_qos_utils", ":hw_switch_ensemble_factory", ":hw_test_acl_utils", @@ -432,7 +433,6 @@ cpp_library( "//fboss/agent:switch_config-cpp2-types", "//fboss/agent:switchid_scope_resolver", "//fboss/agent:validated_shell_commands-cpp2-types", - "//fboss/agent/hw:counter_utils", "//fboss/agent/hw:hardware_stats-cpp2-types", "//fboss/agent/hw:hw_resource_stats_publisher", "//fboss/agent/hw:hw_stat_printers", @@ -444,9 +444,7 @@ cpp_library( "//fboss/agent/packet:packet_factory", "//fboss/agent/packet:pktutil", "//fboss/agent/state:label_forwarding_action", - "//fboss/agent/state:nodebase", "//fboss/agent/state:state", - "//fboss/agent/state:state_utils", "//fboss/agent/test:ecmp_helper", "//fboss/agent/test:linkstate_toggler", "//fboss/agent/test:resourcelibutil", @@ -454,7 +452,6 @@ cpp_library( "//fboss/agent/test/utils:agent_hw_test_constants", "//fboss/agent/test/utils:aqm_test_utils", "//fboss/agent/test/utils:config_utils", - "//fboss/agent/test/utils:copp_test_utils", "//fboss/agent/test/utils:dscp_marking_utils", "//fboss/agent/test/utils:ecmp_dataplane_test_util", "//fboss/agent/test/utils:load_balancer_test_runner_h", @@ -470,16 +467,15 @@ cpp_library( "//folly:format", "//folly:network_address", "//folly:optional", - "//folly:random", "//folly:range", "//folly:singleton", - "//folly:utility", - "//folly/container:array", + "//folly:string", "//folly/io:iobuf", "//folly/json:dynamic", "//folly/logging:logging", ], exported_external_deps = [ + "re2", ("boost", None, "boost_container"), ], ) @@ -523,7 +519,6 @@ cpp_library( "//fboss/agent:platform_base", "//fboss/agent:switch_config-cpp2-types", "//fboss/agent:switchid_scope_resolver", - "//fboss/agent/hw:counter_utils", "//fboss/agent/hw:hardware_stats-cpp2-types", "//fboss/agent/hw:hw_resource_stats_publisher", "//fboss/agent/hw:hw_stat_printers", @@ -533,15 +528,11 @@ cpp_library( "//fboss/agent/packet:packet_factory", "//fboss/agent/packet:pktutil", "//fboss/agent/state:label_forwarding_action", - "//fboss/agent/state:nodebase", "//fboss/agent/state:state", - "//fboss/agent/state:state_utils", "//fboss/agent/test:ecmp_helper", "//fboss/agent/test:linkstate_toggler", "//fboss/agent/test:trunk_utils", "//fboss/agent/test/utils:agent_hw_test_constants", - "//fboss/agent/test/utils:copp_test_utils", - "//fboss/agent/test/utils:olympic_qos_utils", "//fboss/agent/test/utils:port_stats_test_utils", "//fboss/agent/test/utils:queue_per_host_test_utils", "//fboss/agent/test/utils:stats_test_utils", @@ -549,7 +540,6 @@ cpp_library( "//fboss/lib/phy:phy_utils", "//folly:file_util", "//folly:network_address", - "//folly:random", "//folly:range", "//folly:singleton", "//folly/io:iobuf", @@ -583,7 +573,6 @@ cpp_library( ":config_factory", ":hw_copp_utils", ":hw_pfc_utils", - ":load_balancer_utils", "//fboss/agent:fboss-error", "//fboss/agent:hw_switch", "//fboss/agent:switch_config-cpp2-types", @@ -592,7 +581,6 @@ cpp_library( "//fboss/agent/test/utils:load_balancer_test_utils", "//fboss/agent/test/utils:olympic_qos_utils", "//fboss/agent/test/utils:queue_per_host_test_utils", - "//fboss/lib/platforms:platform_mode", ], ) @@ -683,7 +671,6 @@ cpp_library( srcs = ["HwTestAclUtils.cpp"], exported_deps = [ "//fboss/agent:hw_switch", - "//fboss/agent/hw/switch_asics:switch_asics", "//fboss/agent/state:state", "//fboss/agent/test/utils:acl_test_utils", ], @@ -702,15 +689,12 @@ cpp_library( exported_deps = [ "fbsource//third-party/googletest:gtest", ":hw_packet_utils", - ":hw_test_acl_utils", - "//fboss/agent:fboss-error", "//fboss/agent:fboss-types", "//fboss/agent:hw_switch", "//fboss/agent:switch_config-cpp2-types", "//fboss/agent/hw:hardware_stats-cpp2-types", "//fboss/agent/hw/switch_asics:switch_asics", "//fboss/agent/state:state", - "//fboss/agent/test:resourcelibutil", "//fboss/agent/test/utils:copp_test_utils", "//folly:network_address", "//folly/logging:logging", @@ -799,12 +783,10 @@ cpp_library( exported_deps = [ "fbsource//third-party/googletest:gtest", ":config_factory", - ":hw_test_port_utils", "//fboss/agent:fboss-types", "//fboss/agent:switch_config-cpp2-types", "//fboss/agent/hw/switch_asics:switch_asics", "//fboss/agent/test/utils:aqm_test_utils", - "//fboss/lib:common_utils", ], ) diff --git a/fboss/agent/hw/test/ConfigFactory.cpp b/fboss/agent/hw/test/ConfigFactory.cpp index d335422ecdade..54aaf5187b699 100644 --- a/fboss/agent/hw/test/ConfigFactory.cpp +++ b/fboss/agent/hw/test/ConfigFactory.cpp @@ -11,24 +11,15 @@ #include "fboss/agent/FbossError.h" #include "fboss/agent/gen-cpp2/switch_config_types.h" -#include "fboss/agent/hw/switch_asics/EbroAsic.h" #include "fboss/agent/hw/switch_asics/HwAsic.h" -#include "fboss/agent/hw/switch_asics/Jericho2Asic.h" -#include "fboss/agent/hw/switch_asics/Jericho3Asic.h" -#include "fboss/agent/hw/switch_asics/Ramon3Asic.h" -#include "fboss/agent/hw/switch_asics/RamonAsic.h" #include "fboss/agent/hw/test/HwPortUtils.h" #include "fboss/agent/hw/test/HwSwitchEnsemble.h" #include "fboss/agent/state/Port.h" #include "fboss/agent/state/PortMap.h" #include "fboss/agent/test/utils/AsicUtils.h" -#include "fboss/agent/test/utils/PortTestUtils.h" #include "fboss/lib/config/PlatformConfigUtils.h" -#include "fboss/lib/platforms/PlatformMode.h" -#include #include -#include using namespace facebook::fboss; using namespace facebook::fboss::utility; diff --git a/fboss/agent/hw/test/HwAclStatTests.cpp b/fboss/agent/hw/test/HwAclStatTests.cpp index 511f7f6eabbe6..29b82db15a1ed 100644 --- a/fboss/agent/hw/test/HwAclStatTests.cpp +++ b/fboss/agent/hw/test/HwAclStatTests.cpp @@ -9,21 +9,13 @@ */ #include "fboss/agent/hw/test/HwTest.h" -#include -#include "fboss/agent/ApplyThriftConfig.h" -#include "fboss/agent/FbossError.h" #include "fboss/agent/gen-cpp2/switch_config_types.h" -#include "fboss/agent/hw/CounterUtils.h" #include "fboss/agent/hw/test/HwTestAclUtils.h" #include "fboss/agent/hw/test/HwTestCoppUtils.h" -#include "fboss/agent/state/StateDelta.h" #include "fboss/agent/state/SwitchState.h" -#include "fboss/agent/test/utils/QueuePerHostTestUtils.h" #include "fboss/agent/hw/test/ConfigFactory.h" -#include - namespace facebook::fboss { class HwAclStatTest : public HwTest { @@ -48,7 +40,7 @@ class HwAclStatTest : public HwTest { getAsic()->desiredLoopbackModes()); if (FLAGS_enable_acl_table_group) { utility::addAclTableGroup( - &cfg, cfg::AclStage::INGRESS, utility::getAclTableGroupName()); + &cfg, cfg::AclStage::INGRESS, utility::kDefaultAclTableGroupName()); utility::addDefaultAclTable(cfg); } return cfg; diff --git a/fboss/agent/hw/test/HwAsicDefaultProgrammingTests.cpp b/fboss/agent/hw/test/HwAsicDefaultProgrammingTests.cpp new file mode 100644 index 0000000000000..48d8aec85a7f0 --- /dev/null +++ b/fboss/agent/hw/test/HwAsicDefaultProgrammingTests.cpp @@ -0,0 +1,154 @@ +// (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary. + +#include +#include + +#include +#include +#include + +#include "fboss/agent/hw/test/HwTest.h" +#include "fboss/agent/hw/test/golden_data.h" // provides golden_dataMap + +using namespace ::testing; + +DEFINE_string(dump_golden_data, "", "File to dump expected golden data to"); + +namespace facebook::fboss { + +// This test aims to detect unintended ASIC programming changes. It dumps +// default ASIC programming and compares them against a golden data file. If any +// diff is detected, we should manually check and ensure the change is benign. +// +// To refresh the golden data: +// 1. ./sai_test- --config= \ +// --gtest_filter=*verifyDefaultProgramming \ +// --dump_golden_data= +// 2. scp fboss/agent/hw/test/golden/asic +// +class HwAsicDefaultProgrammingTest : public HwTest { + protected: + std::map loadGoldenData(cfg::AsicType asic) { + std::string asicType = apache::thrift::util::enumNameSafe(asic); + asicType = asicType.substr(std::string("ASIC_TYPE_").size()); + folly::toLowerAscii(asicType); + std::string filename = "golden/asic/" + asicType + ".csv"; + + XLOG(INFO) << "Loading golden data file: " << filename; + auto data = golden_dataMap.find(filename); + if (data == golden_dataMap.end()) { + XLOG(WARN) << "Golden data not found. Embedded data:"; + for (const auto& [key, value] : golden_dataMap) { + XLOG(INFO) << "data[" << key << "]: " << value.size() << " bytes"; + } + throw std::invalid_argument("Golden data not found: '" + asicType + "'"); + } + + // Use an ordered map so that errors are sorted and are more readable. + std::map ret; + std::istringstream iss(std::string(data->second)); + std::string line; + while (std::getline(iss, line)) { + std::string type, key, value; + folly::split(',', line, type, key, value); + ret[type + ":" + key] = folly::trimWhitespace(value); + } + return ret; + } + + std::map fetchData(cfg::AsicType asic) { + static const std:: + map>> + kQueries = { + {cfg::AsicType::ASIC_TYPE_JERICHO3, + { + {"mem", "CGM_VOQ_DRAM_BOUND_PRMS"}, + {"mem", "CGM_VOQ_DRAM_RECOVERY_PRMS"}, + {"mem", "CGM_VSQF_FC_PRMS"}, + {"mem", "CGM_VSQE_RJCT_PRMS"}, + {"mem", "CGM_PB_VSQ_RJCT_MASK"}, + {"mem", "IPS_CRBAL_TH"}, + {"mem", "IPS_EMPTY_Q_CRBAL_TH"}, + {"mem", "IPS_QSIZE_TH"}, + {"mem", "SCH_DEVICE_RATE_MEMORY_DRM"}, + {"mem", "SCH_SHARED_DEVICE_RATE_SHARED_DRM"}, + + {"reg", "CIG_RCI_CONFIGS"}, + {"reg", "CIG_RCI_CORE_MAPPING"}, + {"reg", "CIG_RCI_DEVICE_MAPPING"}, + {"reg", "CIG_RCI_FDA_OUT_TH"}, + {"reg", "CIG_RCI_FDA_OUT_TOTAL_TH"}, + {"reg", "FDA_OFM_CORE_FIFO_CONFIG_CORE"}, + {"reg", "FDTS_FDT_SHAPER_CONFIGURATIONS"}, + + // This is not stable, it differs from run to run: + // - FDT_LOAD_BALANCING_SWITCH_CONFIGURATION + }}, + }; + auto queries = kQueries.find(asic); + + // "Prime" the diag shell because sometimes the first command fails. + std::string diagOut; + getHwSwitchEnsemble()->runDiagCommand("h", diagOut); + + std::map ret; + for (const auto& [type, var] : queries->second) { + std::string cmd; + if (type == "mem") { + cmd = "dump raw " + var + "\n"; + } else if (type == "reg") { + cmd = "getreg raw " + var + "\n"; + } + + getHwSwitchEnsemble()->runDiagCommand(cmd, diagOut); + + std::istringstream iss(diagOut); + std::string line; + while (std::getline(iss, line)) { + // Example: CIG_RCI_CONFIGS.CIG0[0x103]=0x5140e101f407d081ac + static const re2::RE2 pattern("([a-zA-Z0-9_\\.\\[\\]]+)\\s*[:=](.*)"); + std::string key, value; + if (re2::RE2::FullMatch(line, pattern, &key, &value)) { + ret[type + ":" + key] = folly::trimWhitespace(value); + } else { + // Ignored any junk echoed by the diag shell. + XLOG(DBG3) << "Ignored unparsable output '" << line << "'"; + } + } + } + getHwSwitchEnsemble()->runDiagCommand("quit\n", diagOut); + return ret; + } +}; + +TEST_F(HwAsicDefaultProgrammingTest, verifyDefaultProgramming) { + auto golden = loadGoldenData(getAsicType()); + auto fetched = fetchData(getAsicType()); + + // Do a manual comparison in order to emit better error messages. + for (const auto& [key, goldenValue] : golden) { + auto fetchedValue = fetched.find(key); + if (fetchedValue != fetched.end()) { + EXPECT_EQ(fetchedValue->second, goldenValue) << "Diff in key: " << key; + } else { + ADD_FAILURE() << "Missing key in fetched data: " << key << "=" + << goldenValue; + } + } + for (const auto& [key, fetchedValue] : fetched) { + EXPECT_TRUE(golden.contains(key)) + << "Extra key in fetched data: " << key << "=" << fetchedValue; + } + + // Dump golden data if requested. + if (!FLAGS_dump_golden_data.empty()) { + std::ofstream ofs(FLAGS_dump_golden_data); + for (const auto& [key, value] : fetched) { + std::string type, var; + folly::split(':', key, type, var); + ofs << type << "," << var << "," << value << "\n"; + } + } +} + +} // namespace facebook::fboss diff --git a/fboss/agent/hw/test/HwCpuFb303StatsTests.cpp b/fboss/agent/hw/test/HwCpuFb303StatsTests.cpp index ff8d2fb43a3ff..81dc701401a99 100644 --- a/fboss/agent/hw/test/HwCpuFb303StatsTests.cpp +++ b/fboss/agent/hw/test/HwCpuFb303StatsTests.cpp @@ -67,6 +67,7 @@ HwPortStats getInitedStats() { {{0, 100}, {1, 10}, {2, 1}}, // fecCodewords 0, // pqpErrorEgressDroppedPackets_ 0, // fabricLinkDownDroppedCells_ + 0, // linkLayerFlowControlWatermark_ 0, // timestamp "test", // portName {}, // macsec stats, diff --git a/fboss/agent/hw/test/HwParityErrorTest.cpp b/fboss/agent/hw/test/HwParityErrorTest.cpp index 2f6b6b8b30812..13e41d0109ed6 100644 --- a/fboss/agent/hw/test/HwParityErrorTest.cpp +++ b/fboss/agent/hw/test/HwParityErrorTest.cpp @@ -7,7 +7,6 @@ #include "fboss/agent/hw/test/HwTestTamUtils.h" #include "fboss/lib/CommonUtils.h" -#include #include namespace facebook::fboss { diff --git a/fboss/agent/hw/test/HwPortFb303StatsTests.cpp b/fboss/agent/hw/test/HwPortFb303StatsTests.cpp index 721033f7ad874..bc9adc8f5c1b8 100644 --- a/fboss/agent/hw/test/HwPortFb303StatsTests.cpp +++ b/fboss/agent/hw/test/HwPortFb303StatsTests.cpp @@ -10,7 +10,6 @@ #include "fboss/agent/hw/HwPortFb303Stats.h" #include "fboss/agent/hw/StatsConstants.h" -#include "fboss/agent/hw/gen-cpp2/hardware_stats_constants.h" #include #include @@ -137,6 +136,7 @@ HwPortStats getInitedStats() { {{0, 100}, {1, 10}, {2, 1}}, // fecCodewords 26, // pqpErrorEgressDroppedPackets_ 27, // fabricLinkDownDroppedCells_ + 28, // linkLayerFlowControlWatermark_ 0, // timestamp "test", // portName macsecStats, diff --git a/fboss/agent/hw/test/HwPortLedTests.cpp b/fboss/agent/hw/test/HwPortLedTests.cpp deleted file mode 100644 index 1d437f56be66c..0000000000000 --- a/fboss/agent/hw/test/HwPortLedTests.cpp +++ /dev/null @@ -1,66 +0,0 @@ -// Copyright 2004-present Facebook. All Rights Reserved. - -#include "fboss/agent/hw/test/HwLinkStateDependentTest.h" - -#include "fboss/agent/hw/test/ConfigFactory.h" -#include "fboss/agent/hw/test/HwPortUtils.h" -#include "fboss/agent/hw/test/HwTestPortUtils.h" -#include "fboss/lib/CommonUtils.h" - -namespace facebook::fboss { - -class HwPortLedTest : public HwLinkStateDependentTest { - protected: - cfg::SwitchConfig initialConfig() const override { - auto lbMode = getPlatform()->getAsic()->desiredLoopbackModes(); - return utility::onePortPerInterfaceConfig( - getHwSwitch(), {masterLogicalPortIds()[0]}, lbMode); - } - - // Pending on D57993788 to land - bool failHwCallsOnWarmboot() const override { - return false; - } -}; - -TEST_F(HwPortLedTest, TestLed) { - auto setup = [=, this]() { applyNewConfig(initialConfig()); }; - auto verify = [=, this]() { - auto portID = masterLogicalPortIds()[0]; - bringUpPort(portID); - WITH_RETRIES({ - EXPECT_EVENTUALLY_TRUE(utility::verifyLedStatus( - getHwSwitchEnsemble(), portID, true /* up */)); - }); - bringDownPort(portID); - WITH_RETRIES({ - EXPECT_EVENTUALLY_TRUE(utility::verifyLedStatus( - getHwSwitchEnsemble(), portID, false /* down */)); - }); - }; - verifyAcrossWarmBoots(setup, verify); -} - -TEST_F(HwPortLedTest, TestLedFromSwitchState) { - auto setup = [=, this]() { applyNewConfig(initialConfig()); }; - auto verify = [=, this]() { - auto portID = masterLogicalPortIds()[0]; - bringUpPort(portID); - WITH_RETRIES({ - EXPECT_EVENTUALLY_TRUE(utility::verifyLedStatus( - getHwSwitchEnsemble(), portID, true /* up */)); - }); - auto state = getProgrammedState(); - auto newState = state->clone(); - auto port = newState->getPorts()->getNode(portID); - auto newPort = port->modify(&newState); - newPort->setLedPortExternalState(PortLedExternalState::EXTERNAL_FORCE_OFF); - applyNewState(newState); - WITH_RETRIES({ - EXPECT_EVENTUALLY_TRUE(utility::verifyLedStatus( - getHwSwitchEnsemble(), portID, false /* down */)); - }); - }; - verifyAcrossWarmBoots(setup, verify); -} -} // namespace facebook::fboss diff --git a/fboss/agent/hw/test/HwResourceStatsTests.cpp b/fboss/agent/hw/test/HwResourceStatsTests.cpp index efb4c9fba70bf..c8d2d11032512 100644 --- a/fboss/agent/hw/test/HwResourceStatsTests.cpp +++ b/fboss/agent/hw/test/HwResourceStatsTests.cpp @@ -40,7 +40,7 @@ class HwResourceStatsTest : public HwLinkStateDependentTest { getHwSwitch(), masterLogicalPortIds()); if (FLAGS_enable_acl_table_group) { utility::addAclTableGroup( - &cfg, cfg::AclStage::INGRESS, utility::getAclTableGroupName()); + &cfg, cfg::AclStage::INGRESS, utility::kDefaultAclTableGroupName()); utility::addDefaultAclTable(cfg); } return cfg; diff --git a/fboss/agent/hw/test/HwSwitchEnsemble.cpp b/fboss/agent/hw/test/HwSwitchEnsemble.cpp index 85e8bfc78242a..2068deea0dd7f 100644 --- a/fboss/agent/hw/test/HwSwitchEnsemble.cpp +++ b/fboss/agent/hw/test/HwSwitchEnsemble.cpp @@ -428,8 +428,10 @@ void HwSwitchEnsemble::linkStateChanged( [port, up](auto observer) { observer->changeLinkState(port, up); }); } -void HwSwitchEnsemble::linkActiveStateChanged( - const std::map& /*port2IsActive */) { +void HwSwitchEnsemble::linkActiveStateChangedOrFwIsolated( + const std::map& /*port2IsActive */, + bool /* fwIsolated */, + const std::optional& /* numActiveFabricPortsAtFwIsolate */) { // TODO } diff --git a/fboss/agent/hw/test/HwSwitchEnsemble.h b/fboss/agent/hw/test/HwSwitchEnsemble.h index f06f0a96da12b..b4ab3700839ee 100644 --- a/fboss/agent/hw/test/HwSwitchEnsemble.h +++ b/fboss/agent/hw/test/HwSwitchEnsemble.h @@ -79,8 +79,11 @@ class HwSwitchEnsemble : public TestEnsembleIf { private: virtual void packetReceived(RxPacket* pkt) noexcept = 0; virtual void linkStateChanged(PortID port, bool up) = 0; - virtual void linkActiveStateChanged( - const std::map& port2IsActive) = 0; + virtual void linkActiveStateChangedOrFwIsolated( + const std::map& port2IsActive, + bool /* fwIsolated */, + const std::optional< + uint32_t>& /* numActiveFabricPortsAtFwIsolate */) = 0; virtual void linkConnectivityChanged( const std::map& port2OldAndNewConnectivity) = 0; @@ -182,8 +185,11 @@ class HwSwitchEnsemble : public TestEnsembleIf { cfg::PortType portType, std::optional iPhyFaultStatus = std::nullopt) override; - void linkActiveStateChanged( - const std::map& /*port2IsActive */) override; + void linkActiveStateChangedOrFwIsolated( + const std::map& /*port2IsActive */, + bool /* fwIsolated */, + const std::optional& /* numActiveFabricPortsAtFwIsolate */ + ) override; void linkConnectivityChanged( const std::map& /*port2OldAndNewConnectivity*/) override { diff --git a/fboss/agent/hw/test/HwSwitchEnsembleRouteUpdateWrapper.cpp b/fboss/agent/hw/test/HwSwitchEnsembleRouteUpdateWrapper.cpp index f2e4f22d0b60e..5ab238592d36a 100644 --- a/fboss/agent/hw/test/HwSwitchEnsembleRouteUpdateWrapper.cpp +++ b/fboss/agent/hw/test/HwSwitchEnsembleRouteUpdateWrapper.cpp @@ -18,7 +18,6 @@ #include "fboss/agent/hw/test/HwSwitchEnsemble.h" -#include #include namespace facebook::fboss { diff --git a/fboss/agent/hw/test/HwSwitchStateReplayTest.cpp b/fboss/agent/hw/test/HwSwitchStateReplayTest.cpp index bd303eb9874af..73774092107c3 100644 --- a/fboss/agent/hw/test/HwSwitchStateReplayTest.cpp +++ b/fboss/agent/hw/test/HwSwitchStateReplayTest.cpp @@ -11,14 +11,12 @@ #include "fboss/agent/SysError.h" #include "fboss/agent/hw/test/HwTest.h" -#include "fboss/agent/ApplyThriftConfig.h" #include "fboss/agent/state/Port.h" #include "fboss/agent/state/SwitchState.h" #include "fboss/agent/hw/test/ConfigFactory.h" #include -#include DEFINE_string( replay_switch_state_file, diff --git a/fboss/agent/hw/test/HwTest.h b/fboss/agent/hw/test/HwTest.h index d624643ef3b04..b060fe4cfbfcd 100644 --- a/fboss/agent/hw/test/HwTest.h +++ b/fboss/agent/hw/test/HwTest.h @@ -65,8 +65,11 @@ class HwTest : public ::testing::Test, void packetReceived(RxPacket* /*pkt*/) noexcept override {} void linkStateChanged(PortID /*port*/, bool /*up*/) override {} - void linkActiveStateChanged( - const std::map& /*port2IsActive */) override {} + void linkActiveStateChangedOrFwIsolated( + const std::map& /*port2IsActive */, + bool /* fwIsolated */, + const std::optional& /* numActiveFabricPortsAtFwIsolate */ + ) override {} void switchReachabilityChanged( const SwitchID /*switchId*/, const std::map>& /*switchReachabilityInfo*/) diff --git a/fboss/agent/hw/test/HwTestAclUtils.cpp b/fboss/agent/hw/test/HwTestAclUtils.cpp index ae32870dfe3df..b9364225a0a26 100644 --- a/fboss/agent/hw/test/HwTestAclUtils.cpp +++ b/fboss/agent/hw/test/HwTestAclUtils.cpp @@ -9,9 +9,6 @@ */ #include "fboss/agent/hw/test/HwTestAclUtils.h" -#include -#include "fboss/agent/hw/switch_asics/HwAsic.h" -#include "fboss/agent/test/utils/AclTestUtils.h" #include "fboss/agent/state/SwitchState.h" diff --git a/fboss/agent/hw/test/HwTestCoppUtils.cpp b/fboss/agent/hw/test/HwTestCoppUtils.cpp index f8575b8981aec..42300f484f5f6 100644 --- a/fboss/agent/hw/test/HwTestCoppUtils.cpp +++ b/fboss/agent/hw/test/HwTestCoppUtils.cpp @@ -8,16 +8,11 @@ * */ #include "fboss/agent/hw/test/HwTestCoppUtils.h" -#include -#include "fboss/agent/FbossError.h" #include "fboss/agent/HwSwitch.h" #include "fboss/agent/hw/switch_asics/HwAsic.h" -#include "fboss/agent/hw/test/HwTestAclUtils.h" #include "fboss/agent/hw/test/HwTestPacketUtils.h" -#include "fboss/agent/state/Interface.h" #include "fboss/agent/state/SwitchState.h" -#include "fboss/agent/test/ResourceLibUtil.h" #include "fboss/agent/test/utils/CoppTestUtils.h" diff --git a/fboss/agent/hw/test/HwTestFabricUtils.cpp b/fboss/agent/hw/test/HwTestFabricUtils.cpp index 7fa3d562e044e..fceca69068a46 100644 --- a/fboss/agent/hw/test/HwTestFabricUtils.cpp +++ b/fboss/agent/hw/test/HwTestFabricUtils.cpp @@ -1,5 +1,3 @@ // (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary. -#include "fboss/agent/hw/test/HwTestFabricUtils.h" - namespace facebook::fboss {} // namespace facebook::fboss diff --git a/fboss/agent/hw/test/HwTestLearningUpdateObserver.h b/fboss/agent/hw/test/HwTestLearningUpdateObserver.h index 5444e8fd29096..62d07848cb2db 100644 --- a/fboss/agent/hw/test/HwTestLearningUpdateObserver.h +++ b/fboss/agent/hw/test/HwTestLearningUpdateObserver.h @@ -34,8 +34,11 @@ class HwTestLearningUpdateObserver private: void packetReceived(RxPacket* /*pkt*/) noexcept override {} void linkStateChanged(PortID /*port*/, bool /*up*/) override {} - void linkActiveStateChanged( - const std::map& /*port2IsActive */) override {} + void linkActiveStateChangedOrFwIsolated( + const std::map& /*port2IsActive */, + bool /* fwIsolated */, + const std::optional& /* numActiveFabricPortsAtFwIsolate */) + override {} void switchReachabilityChanged( const SwitchID /*switchId*/, const std::map>& /*switchReachabilityInfo*/) diff --git a/fboss/agent/hw/test/HwTestLinkScanUpdateObserver.h b/fboss/agent/hw/test/HwTestLinkScanUpdateObserver.h index 83edfbb69263a..49984cdc6d476 100644 --- a/fboss/agent/hw/test/HwTestLinkScanUpdateObserver.h +++ b/fboss/agent/hw/test/HwTestLinkScanUpdateObserver.h @@ -21,8 +21,11 @@ class HwTestLinkScanUpdateObserver void l2LearningUpdateReceived( L2Entry /*l2Entry*/, L2EntryUpdateType /*l2EntryUpdateType*/) override {} - void linkActiveStateChanged( - const std::map& /*port2IsActive */) override {} + void linkActiveStateChangedOrFwIsolated( + const std::map& /*port2IsActive */, + bool /* fwIsolated */, + const std::optional& /* numActiveFabricPortsAtFwIsolate */) + override {} void linkConnectivityChanged( const std::map& /*port2OldAndNewConnectivity*/) override {} diff --git a/fboss/agent/hw/test/HwTestPacketSnooper.cpp b/fboss/agent/hw/test/HwTestPacketSnooper.cpp index ab272b703f474..f8b0bef345203 100644 --- a/fboss/agent/hw/test/HwTestPacketSnooper.cpp +++ b/fboss/agent/hw/test/HwTestPacketSnooper.cpp @@ -4,8 +4,6 @@ #include "fboss/agent/RxPacket.h" #include "fboss/agent/packet/PktUtil.h" -#include - namespace facebook::fboss { HwTestPacketSnooper::HwTestPacketSnooper( diff --git a/fboss/agent/hw/test/HwTestPacketSnooper.h b/fboss/agent/hw/test/HwTestPacketSnooper.h index 9a186729085a5..cbe8af7b37b07 100644 --- a/fboss/agent/hw/test/HwTestPacketSnooper.h +++ b/fboss/agent/hw/test/HwTestPacketSnooper.h @@ -33,8 +33,11 @@ class HwTestPacketSnooper : public HwSwitchEnsemble::HwSwitchEventObserverIf { void l2LearningUpdateReceived( L2Entry /*l2Entry*/, L2EntryUpdateType /*l2EntryUpdateType*/) override {} - void linkActiveStateChanged( - const std::map& /*port2IsActive */) override {} + void linkActiveStateChangedOrFwIsolated( + const std::map& /*port2IsActive */, + bool /* fwIsolated */, + const std::optional& /* numActiveFabricPortsAtFwIsolate */) + override {} void linkConnectivityChanged( const std::map& /*port2OldAndNewConnectivity*/) override {} diff --git a/fboss/agent/hw/test/HwTestPacketUtils.cpp b/fboss/agent/hw/test/HwTestPacketUtils.cpp index 460f6273618b1..3bd5180453fac 100644 --- a/fboss/agent/hw/test/HwTestPacketUtils.cpp +++ b/fboss/agent/hw/test/HwTestPacketUtils.cpp @@ -11,10 +11,6 @@ #include "fboss/agent/hw/test/HwTestPacketUtils.h" #include -#include -#include -#include -#include #include "common/logging/logging.h" @@ -22,10 +18,7 @@ #include "fboss/agent/LldpManager.h" #include "fboss/agent/packet/PktFactory.h" #include "fboss/agent/packet/UDPHeader.h" -#include "fboss/agent/state/Interface.h" -#include "fboss/agent/state/StateUtils.h" #include "fboss/agent/state/SwitchState.h" -#include "fboss/agent/state/Vlan.h" #include "fboss/agent/test/ResourceLibUtil.h" #include "fboss/agent/test/TestUtils.h" diff --git a/fboss/agent/hw/test/HwTestThriftHandler.h b/fboss/agent/hw/test/HwTestThriftHandler.h index 49ee6be01ead9..77098092a6113 100644 --- a/fboss/agent/hw/test/HwTestThriftHandler.h +++ b/fboss/agent/hw/test/HwTestThriftHandler.h @@ -77,6 +77,11 @@ class HwTestThriftHandler : public AgentHwTestCtrlSvIf { int routerID, int sizeInSw) override; + void getEcmpWeights( + std::map<::std::int32_t, ::std::int32_t>& weights, + std::unique_ptr prefix, + int routerID) override; + void injectFecError( std::unique_ptr> hwPorts, bool injectCorrectable) override; @@ -99,6 +104,8 @@ class HwTestThriftHandler : public AgentHwTestCtrlSvIf { ::std::vector<::facebook::fboss::utility::PortInfo>& portInfos, std::unique_ptr<::std::vector<::std::int32_t>> portIds) override; + bool verifyPortLedStatus(int portId, bool status) override; + private: HwSwitch* hwSwitch_; }; diff --git a/fboss/agent/hw/test/HwUdfTests.cpp b/fboss/agent/hw/test/HwUdfTests.cpp index ac2cb598526b2..1174ca9952456 100644 --- a/fboss/agent/hw/test/HwUdfTests.cpp +++ b/fboss/agent/hw/test/HwUdfTests.cpp @@ -12,7 +12,6 @@ #include "fboss/agent/hw/test/HwTestAclUtils.h" #include "fboss/agent/hw/test/HwTestCoppUtils.h" #include "fboss/agent/hw/test/HwTestUdfUtils.h" -#include "fboss/agent/hw/test/LoadBalancerUtils.h" namespace facebook::fboss { diff --git a/fboss/agent/hw/test/PacketUtilTests.cpp b/fboss/agent/hw/test/PacketUtilTests.cpp index bacec8ca96fc4..b4e021562abaf 100644 --- a/fboss/agent/hw/test/PacketUtilTests.cpp +++ b/fboss/agent/hw/test/PacketUtilTests.cpp @@ -5,7 +5,6 @@ #include "fboss/agent/hw/mock/MockHwSwitch.h" #include "fboss/agent/hw/mock/MockPlatform.h" #include "fboss/agent/packet/EthFrame.h" -#include "fboss/agent/packet/PktFactory.h" #include "fboss/agent/packet/PktUtil.h" #include "fboss/agent/packet/UDPHeader.h" #include "fboss/agent/test/TestUtils.h" diff --git a/fboss/agent/hw/test/ProdConfigFactory.cpp b/fboss/agent/hw/test/ProdConfigFactory.cpp index 286309aa6fa73..b7b494db94d7b 100644 --- a/fboss/agent/hw/test/ProdConfigFactory.cpp +++ b/fboss/agent/hw/test/ProdConfigFactory.cpp @@ -12,11 +12,9 @@ #include "fboss/agent/FbossError.h" #include "fboss/agent/hw/switch_asics/HwAsic.h" -#include "fboss/lib/platforms/PlatformMode.h" #include "fboss/agent/hw/test/ConfigFactory.h" #include "fboss/agent/hw/test/HwTestCoppUtils.h" -#include "fboss/agent/hw/test/LoadBalancerUtils.h" #include "fboss/agent/hw/test/dataplane_tests/HwTestPfcUtils.h" #include "fboss/agent/test/utils/DscpMarkingUtils.h" #include "fboss/agent/test/utils/OlympicTestUtils.h" diff --git a/fboss/agent/hw/test/dataplane_tests/HwHashPolarizationTests.cpp b/fboss/agent/hw/test/dataplane_tests/HwHashPolarizationTests.cpp index 26e9e77377553..e3da94ef15aca 100644 --- a/fboss/agent/hw/test/dataplane_tests/HwHashPolarizationTests.cpp +++ b/fboss/agent/hw/test/dataplane_tests/HwHashPolarizationTests.cpp @@ -18,7 +18,6 @@ #include "fboss/agent/RxPacket.h" #include "fboss/agent/packet/PktFactory.h" #include "fboss/agent/packet/PktUtil.h" -#include "fboss/agent/state/LoadBalancer.h" #include "fboss/agent/test/EcmpSetupHelper.h" #include "fboss/agent/hw/test/HwHashPolarizationTestUtils.h" diff --git a/fboss/agent/hw/test/dataplane_tests/HwInPauseDiscardsTests.cpp b/fboss/agent/hw/test/dataplane_tests/HwInPauseDiscardsTests.cpp index 38ece14fee72e..0f29434c9ecb4 100644 --- a/fboss/agent/hw/test/dataplane_tests/HwInPauseDiscardsTests.cpp +++ b/fboss/agent/hw/test/dataplane_tests/HwInPauseDiscardsTests.cpp @@ -14,7 +14,6 @@ #include "fboss/agent/hw/test/HwTestPacketUtils.h" #include "fboss/agent/test/EcmpSetupHelper.h" -#include "fboss/agent/state/Interface.h" #include "fboss/agent/state/Port.h" #include "fboss/agent/state/PortMap.h" #include "fboss/agent/state/SwitchState.h" diff --git a/fboss/agent/hw/test/dataplane_tests/HwIpInIpTunnelTests.cpp b/fboss/agent/hw/test/dataplane_tests/HwIpInIpTunnelTests.cpp index 7f9a9cf655afd..7d4cd7ba19e45 100644 --- a/fboss/agent/hw/test/dataplane_tests/HwIpInIpTunnelTests.cpp +++ b/fboss/agent/hw/test/dataplane_tests/HwIpInIpTunnelTests.cpp @@ -6,18 +6,14 @@ #include "fboss/agent/gen-cpp2/switch_config_types.h" #include "fboss/agent/hw/test/ConfigFactory.h" #include "fboss/agent/hw/test/HwLinkStateDependentTest.h" -#include "fboss/agent/hw/test/HwTestAclUtils.h" #include "fboss/agent/hw/test/HwTestCoppUtils.h" #include "fboss/agent/hw/test/HwTestPacketSnooper.h" #include "fboss/agent/hw/test/HwTestPacketUtils.h" -#include "fboss/agent/packet/PktUtil.h" #include "fboss/agent/test/EcmpSetupHelper.h" #include "fboss/agent/test/ResourceLibUtil.h" #include "fboss/agent/test/utils/TrapPacketUtils.h" -#include "folly/logging/xlog.h" - namespace facebook::fboss { class HwIpInIpTunnelTest : public HwLinkStateDependentTest { diff --git a/fboss/agent/hw/test/dataplane_tests/HwLoadBalancerTestsV6Roce.cpp b/fboss/agent/hw/test/dataplane_tests/HwLoadBalancerTestsV6Roce.cpp index 559f9a07f9608..9ce9dc36a17f7 100644 --- a/fboss/agent/hw/test/dataplane_tests/HwLoadBalancerTestsV6Roce.cpp +++ b/fboss/agent/hw/test/dataplane_tests/HwLoadBalancerTestsV6Roce.cpp @@ -10,7 +10,6 @@ #include "fboss/agent/hw/test/dataplane_tests/HwLoadBalancerTests.h" -#include "fboss/agent/Platform.h" #include "fboss/agent/hw/switch_asics/HwAsic.h" #include "fboss/agent/hw/test/HwTestPacketUtils.h" diff --git a/fboss/agent/hw/test/dataplane_tests/HwPacketSendTests.cpp b/fboss/agent/hw/test/dataplane_tests/HwPacketSendTests.cpp index 7b3765d9c22d7..62628c2c32770 100644 --- a/fboss/agent/hw/test/dataplane_tests/HwPacketSendTests.cpp +++ b/fboss/agent/hw/test/dataplane_tests/HwPacketSendTests.cpp @@ -13,14 +13,10 @@ #include "fboss/agent/hw/test/HwLinkStateDependentTest.h" #include "fboss/agent/hw/test/HwTestCoppUtils.h" #include "fboss/agent/hw/test/HwTestPacketUtils.h" -#include "fboss/agent/hw/test/HwTestPortUtils.h" -#include "fboss/agent/packet/EthHdr.h" #include "fboss/agent/test/ResourceLibUtil.h" #include "fboss/agent/test/TrunkUtils.h" -#include "folly/Utility.h" #include -#include #include using namespace std::chrono_literals; diff --git a/fboss/agent/hw/test/dataplane_tests/HwProdInvariantTests.cpp b/fboss/agent/hw/test/dataplane_tests/HwProdInvariantTests.cpp index 075924be39d43..4cb2acd67180a 100644 --- a/fboss/agent/hw/test/dataplane_tests/HwProdInvariantTests.cpp +++ b/fboss/agent/hw/test/dataplane_tests/HwProdInvariantTests.cpp @@ -19,12 +19,9 @@ #include "fboss/agent/hw/test/dataplane_tests/HwProdInvariantHelper.h" #include "fboss/agent/hw/test/HwTestPacketUtils.h" -#include "fboss/agent/hw/test/dataplane_tests/HwTestPfcUtils.h" #include "fboss/agent/hw/test/dataplane_tests/HwTestQosUtils.h" #include "fboss/agent/test/utils/QueuePerHostTestUtils.h" -#include "fboss/agent/state/Port.h" - DEFINE_bool( dynamic_config, false, diff --git a/fboss/agent/hw/test/dataplane_tests/HwTestAqmUtils.cpp b/fboss/agent/hw/test/dataplane_tests/HwTestAqmUtils.cpp index ba5f042432097..5063c6a5d83e2 100644 --- a/fboss/agent/hw/test/dataplane_tests/HwTestAqmUtils.cpp +++ b/fboss/agent/hw/test/dataplane_tests/HwTestAqmUtils.cpp @@ -11,9 +11,7 @@ #include "fboss/agent/hw/test/dataplane_tests/HwTestAqmUtils.h" #include #include "fboss/agent/hw/test/ConfigFactory.h" -#include "fboss/agent/hw/test/HwTestPortUtils.h" #include "fboss/agent/test/utils/AqmTestUtils.h" -#include "fboss/lib/CommonUtils.h" namespace facebook::fboss::utility { diff --git a/fboss/agent/hw/test/dataplane_tests/HwTestQosUtils.cpp b/fboss/agent/hw/test/dataplane_tests/HwTestQosUtils.cpp index e94330849d3b5..0e7d215e36f18 100644 --- a/fboss/agent/hw/test/dataplane_tests/HwTestQosUtils.cpp +++ b/fboss/agent/hw/test/dataplane_tests/HwTestQosUtils.cpp @@ -11,8 +11,6 @@ #include "fboss/agent/hw/test/dataplane_tests/HwTestQosUtils.h" #include "fboss/agent/hw/test/HwSwitchEnsemble.h" #include "fboss/agent/hw/test/HwTestPacketUtils.h" -#include "fboss/agent/state/Interface.h" -#include "fboss/agent/state/SwitchState.h" #include "fboss/lib/CommonUtils.h" #include diff --git a/fboss/agent/hw/test/golden/asic/jericho3.csv b/fboss/agent/hw/test/golden/asic/jericho3.csv new file mode 100644 index 0000000000000..6af9bcfbd0728 --- /dev/null +++ b/fboss/agent/hw/test/golden/asic/jericho3.csv @@ -0,0 +1,13514 @@ +mem,CGM_PB_VSQ_RJCT_MASK.CGM0[0],0xffffffff 0x0000003f +mem,CGM_PB_VSQ_RJCT_MASK.CGM0[10],0x00000000 0x00000000 +mem,CGM_PB_VSQ_RJCT_MASK.CGM0[11],0x00000000 0x00000000 +mem,CGM_PB_VSQ_RJCT_MASK.CGM0[12],0x00000000 0x00000000 +mem,CGM_PB_VSQ_RJCT_MASK.CGM0[13],0x00000000 0x00000000 +mem,CGM_PB_VSQ_RJCT_MASK.CGM0[14],0x00000000 0x00000000 +mem,CGM_PB_VSQ_RJCT_MASK.CGM0[15],0x00000000 0x00000000 +mem,CGM_PB_VSQ_RJCT_MASK.CGM0[1],0x00000000 0x00000000 +mem,CGM_PB_VSQ_RJCT_MASK.CGM0[2],0x00000000 0x00000000 +mem,CGM_PB_VSQ_RJCT_MASK.CGM0[3],0x00000000 0x00000000 +mem,CGM_PB_VSQ_RJCT_MASK.CGM0[4],0x00000000 0x00000000 +mem,CGM_PB_VSQ_RJCT_MASK.CGM0[5],0x00000000 0x00000000 +mem,CGM_PB_VSQ_RJCT_MASK.CGM0[6],0x00000000 0x00000000 +mem,CGM_PB_VSQ_RJCT_MASK.CGM0[7],0x00000000 0x00000000 +mem,CGM_PB_VSQ_RJCT_MASK.CGM0[8],0x01820880 0x0000003c +mem,CGM_PB_VSQ_RJCT_MASK.CGM0[9],0x00000000 0x00000000 +mem,CGM_PB_VSQ_RJCT_MASK.CGM1[0],0xffffffff 0x0000003f +mem,CGM_PB_VSQ_RJCT_MASK.CGM1[10],0x00000000 0x00000000 +mem,CGM_PB_VSQ_RJCT_MASK.CGM1[11],0x00000000 0x00000000 +mem,CGM_PB_VSQ_RJCT_MASK.CGM1[12],0x00000000 0x00000000 +mem,CGM_PB_VSQ_RJCT_MASK.CGM1[13],0x00000000 0x00000000 +mem,CGM_PB_VSQ_RJCT_MASK.CGM1[14],0x00000000 0x00000000 +mem,CGM_PB_VSQ_RJCT_MASK.CGM1[15],0x00000000 0x00000000 +mem,CGM_PB_VSQ_RJCT_MASK.CGM1[1],0x00000000 0x00000000 +mem,CGM_PB_VSQ_RJCT_MASK.CGM1[2],0x00000000 0x00000000 +mem,CGM_PB_VSQ_RJCT_MASK.CGM1[3],0x00000000 0x00000000 +mem,CGM_PB_VSQ_RJCT_MASK.CGM1[4],0x00000000 0x00000000 +mem,CGM_PB_VSQ_RJCT_MASK.CGM1[5],0x00000000 0x00000000 +mem,CGM_PB_VSQ_RJCT_MASK.CGM1[6],0x00000000 0x00000000 +mem,CGM_PB_VSQ_RJCT_MASK.CGM1[7],0x00000000 0x00000000 +mem,CGM_PB_VSQ_RJCT_MASK.CGM1[8],0x01820880 0x0000003c +mem,CGM_PB_VSQ_RJCT_MASK.CGM1[9],0x00000000 0x00000000 +mem,CGM_PB_VSQ_RJCT_MASK.CGM2[0],0xffffffff 0x0000003f +mem,CGM_PB_VSQ_RJCT_MASK.CGM2[10],0x00000000 0x00000000 +mem,CGM_PB_VSQ_RJCT_MASK.CGM2[11],0x00000000 0x00000000 +mem,CGM_PB_VSQ_RJCT_MASK.CGM2[12],0x00000000 0x00000000 +mem,CGM_PB_VSQ_RJCT_MASK.CGM2[13],0x00000000 0x00000000 +mem,CGM_PB_VSQ_RJCT_MASK.CGM2[14],0x00000000 0x00000000 +mem,CGM_PB_VSQ_RJCT_MASK.CGM2[15],0x00000000 0x00000000 +mem,CGM_PB_VSQ_RJCT_MASK.CGM2[1],0x00000000 0x00000000 +mem,CGM_PB_VSQ_RJCT_MASK.CGM2[2],0x00000000 0x00000000 +mem,CGM_PB_VSQ_RJCT_MASK.CGM2[3],0x00000000 0x00000000 +mem,CGM_PB_VSQ_RJCT_MASK.CGM2[4],0x00000000 0x00000000 +mem,CGM_PB_VSQ_RJCT_MASK.CGM2[5],0x00000000 0x00000000 +mem,CGM_PB_VSQ_RJCT_MASK.CGM2[6],0x00000000 0x00000000 +mem,CGM_PB_VSQ_RJCT_MASK.CGM2[7],0x00000000 0x00000000 +mem,CGM_PB_VSQ_RJCT_MASK.CGM2[8],0x01820880 0x0000003c +mem,CGM_PB_VSQ_RJCT_MASK.CGM2[9],0x00000000 0x00000000 +mem,CGM_PB_VSQ_RJCT_MASK.CGM3[0],0xffffffff 0x0000003f +mem,CGM_PB_VSQ_RJCT_MASK.CGM3[10],0x00000000 0x00000000 +mem,CGM_PB_VSQ_RJCT_MASK.CGM3[11],0x00000000 0x00000000 +mem,CGM_PB_VSQ_RJCT_MASK.CGM3[12],0x00000000 0x00000000 +mem,CGM_PB_VSQ_RJCT_MASK.CGM3[13],0x00000000 0x00000000 +mem,CGM_PB_VSQ_RJCT_MASK.CGM3[14],0x00000000 0x00000000 +mem,CGM_PB_VSQ_RJCT_MASK.CGM3[15],0x00000000 0x00000000 +mem,CGM_PB_VSQ_RJCT_MASK.CGM3[1],0x00000000 0x00000000 +mem,CGM_PB_VSQ_RJCT_MASK.CGM3[2],0x00000000 0x00000000 +mem,CGM_PB_VSQ_RJCT_MASK.CGM3[3],0x00000000 0x00000000 +mem,CGM_PB_VSQ_RJCT_MASK.CGM3[4],0x00000000 0x00000000 +mem,CGM_PB_VSQ_RJCT_MASK.CGM3[5],0x00000000 0x00000000 +mem,CGM_PB_VSQ_RJCT_MASK.CGM3[6],0x00000000 0x00000000 +mem,CGM_PB_VSQ_RJCT_MASK.CGM3[7],0x00000000 0x00000000 +mem,CGM_PB_VSQ_RJCT_MASK.CGM3[8],0x01820880 0x0000003c +mem,CGM_PB_VSQ_RJCT_MASK.CGM3[9],0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[0],0xfc001fff 0xffc000bf 0x7ff80003 0x1e080001 0x02003c00 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[100],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[101],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[102],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[103],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[104],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[105],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[106],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[107],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[108],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[109],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[10],0xfc001fff 0xffc000bf 0x7ff80003 0x1e080001 0x02003c00 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[110],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[111],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[112],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[113],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[114],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[115],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[116],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[117],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[118],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[119],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[11],0xfc001fff 0xffc000bf 0x7ff80003 0x1e080001 0x02003c00 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[120],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[121],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[122],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[123],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[124],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[125],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[126],0xfc001fff 0xffc000bf 0x7ff80003 0x1e080001 0x02003c00 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[127],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[12],0xfc001fff 0xffc000bf 0x7ff80003 0x64080001 0x0200c800 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[13],0xfc001fff 0xffc000bf 0x7ff80003 0x7d080001 0x0200fa00 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[14],0xfc001fff 0xffc000bf 0x7ff80003 0x96080001 0x02012c00 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[15],0xfc001fff 0xffc000bf 0x7ff80003 0x96080001 0x02012c00 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[16],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[17],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[18],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[19],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[1],0xfc001fff 0xffc000bf 0x7ff80003 0x1e080001 0x02003c00 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[20],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[21],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[22],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[23],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[24],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[25],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[26],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[27],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[28],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[29],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[2],0xfc001fff 0xffc000bf 0x7ff80003 0x64080001 0x0200c800 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[30],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[31],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[32],0xfc001fff 0xffc000bf 0x7ff80003 0x1e080001 0x02003c00 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[33],0xfc001fff 0xffc000bf 0x7ff80003 0x64080001 0x0200c800 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[34],0xfc001fff 0xffc000bf 0x7ff80003 0x96080001 0x02012c00 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[35],0xfc001fff 0xffc000bf 0x7ff80003 0x1e080001 0x02003c00 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[36],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[37],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[38],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[39],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[3],0xfc001fff 0xffc000bf 0x7ff80003 0x7d080001 0x0200fa00 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[40],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[41],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[42],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[43],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[44],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[45],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[46],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[47],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[48],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[49],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[4],0xfc001fff 0xffc000bf 0x7ff80003 0x96080001 0x02012c00 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[50],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[51],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[52],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[53],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[54],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[55],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[56],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[57],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[58],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[59],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[5],0xfc001fff 0xffc000bf 0x7ff80003 0x96080001 0x02012c00 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[60],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[61],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[62],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[63],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[64],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[65],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[66],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[67],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[68],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[69],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[6],0xfc001fff 0xffc000bf 0x7ff80003 0x96080001 0x02012c00 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[70],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[71],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[72],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[73],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[74],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[75],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[76],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[77],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[78],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[79],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[7],0xfc001fff 0xffc000bf 0x7ff80003 0x1e080001 0x02003c00 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[80],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[81],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[82],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[83],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[84],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[85],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[86],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[87],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[88],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[89],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[8],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[90],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[91],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[92],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[93],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[94],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[95],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[96],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[97],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[98],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[99],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM0[9],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[0],0xfc001fff 0xffc000bf 0x7ff80003 0x1e080001 0x02003c00 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[100],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[101],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[102],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[103],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[104],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[105],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[106],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[107],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[108],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[109],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[10],0xfc001fff 0xffc000bf 0x7ff80003 0x1e080001 0x02003c00 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[110],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[111],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[112],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[113],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[114],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[115],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[116],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[117],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[118],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[119],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[11],0xfc001fff 0xffc000bf 0x7ff80003 0x1e080001 0x02003c00 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[120],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[121],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[122],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[123],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[124],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[125],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[126],0xfc001fff 0xffc000bf 0x7ff80003 0x1e080001 0x02003c00 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[127],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[12],0xfc001fff 0xffc000bf 0x7ff80003 0x64080001 0x0200c800 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[13],0xfc001fff 0xffc000bf 0x7ff80003 0x7d080001 0x0200fa00 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[14],0xfc001fff 0xffc000bf 0x7ff80003 0x96080001 0x02012c00 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[15],0xfc001fff 0xffc000bf 0x7ff80003 0x96080001 0x02012c00 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[16],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[17],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[18],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[19],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[1],0xfc001fff 0xffc000bf 0x7ff80003 0x1e080001 0x02003c00 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[20],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[21],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[22],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[23],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[24],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[25],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[26],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[27],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[28],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[29],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[2],0xfc001fff 0xffc000bf 0x7ff80003 0x64080001 0x0200c800 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[30],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[31],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[32],0xfc001fff 0xffc000bf 0x7ff80003 0x1e080001 0x02003c00 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[33],0xfc001fff 0xffc000bf 0x7ff80003 0x64080001 0x0200c800 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[34],0xfc001fff 0xffc000bf 0x7ff80003 0x96080001 0x02012c00 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[35],0xfc001fff 0xffc000bf 0x7ff80003 0x1e080001 0x02003c00 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[36],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[37],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[38],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[39],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[3],0xfc001fff 0xffc000bf 0x7ff80003 0x7d080001 0x0200fa00 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[40],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[41],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[42],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[43],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[44],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[45],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[46],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[47],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[48],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[49],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[4],0xfc001fff 0xffc000bf 0x7ff80003 0x96080001 0x02012c00 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[50],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[51],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[52],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[53],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[54],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[55],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[56],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[57],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[58],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[59],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[5],0xfc001fff 0xffc000bf 0x7ff80003 0x96080001 0x02012c00 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[60],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[61],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[62],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[63],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[64],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[65],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[66],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[67],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[68],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[69],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[6],0xfc001fff 0xffc000bf 0x7ff80003 0x96080001 0x02012c00 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[70],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[71],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[72],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[73],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[74],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[75],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[76],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[77],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[78],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[79],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[7],0xfc001fff 0xffc000bf 0x7ff80003 0x1e080001 0x02003c00 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[80],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[81],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[82],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[83],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[84],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[85],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[86],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[87],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[88],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[89],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[8],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[90],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[91],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[92],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[93],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[94],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[95],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[96],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[97],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[98],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[99],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM1[9],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[0],0xfc001fff 0xffc000bf 0x7ff80003 0x1e080001 0x02003c00 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[100],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[101],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[102],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[103],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[104],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[105],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[106],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[107],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[108],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[109],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[10],0xfc001fff 0xffc000bf 0x7ff80003 0x1e080001 0x02003c00 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[110],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[111],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[112],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[113],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[114],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[115],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[116],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[117],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[118],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[119],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[11],0xfc001fff 0xffc000bf 0x7ff80003 0x1e080001 0x02003c00 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[120],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[121],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[122],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[123],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[124],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[125],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[126],0xfc001fff 0xffc000bf 0x7ff80003 0x1e080001 0x02003c00 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[127],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[12],0xfc001fff 0xffc000bf 0x7ff80003 0x64080001 0x0200c800 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[13],0xfc001fff 0xffc000bf 0x7ff80003 0x7d080001 0x0200fa00 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[14],0xfc001fff 0xffc000bf 0x7ff80003 0x96080001 0x02012c00 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[15],0xfc001fff 0xffc000bf 0x7ff80003 0x96080001 0x02012c00 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[16],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[17],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[18],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[19],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[1],0xfc001fff 0xffc000bf 0x7ff80003 0x1e080001 0x02003c00 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[20],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[21],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[22],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[23],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[24],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[25],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[26],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[27],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[28],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[29],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[2],0xfc001fff 0xffc000bf 0x7ff80003 0x64080001 0x0200c800 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[30],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[31],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[32],0xfc001fff 0xffc000bf 0x7ff80003 0x1e080001 0x02003c00 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[33],0xfc001fff 0xffc000bf 0x7ff80003 0x64080001 0x0200c800 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[34],0xfc001fff 0xffc000bf 0x7ff80003 0x96080001 0x02012c00 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[35],0xfc001fff 0xffc000bf 0x7ff80003 0x1e080001 0x02003c00 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[36],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[37],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[38],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[39],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[3],0xfc001fff 0xffc000bf 0x7ff80003 0x7d080001 0x0200fa00 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[40],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[41],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[42],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[43],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[44],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[45],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[46],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[47],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[48],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[49],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[4],0xfc001fff 0xffc000bf 0x7ff80003 0x96080001 0x02012c00 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[50],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[51],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[52],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[53],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[54],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[55],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[56],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[57],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[58],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[59],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[5],0xfc001fff 0xffc000bf 0x7ff80003 0x96080001 0x02012c00 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[60],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[61],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[62],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[63],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[64],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[65],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[66],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[67],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[68],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[69],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[6],0xfc001fff 0xffc000bf 0x7ff80003 0x96080001 0x02012c00 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[70],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[71],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[72],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[73],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[74],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[75],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[76],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[77],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[78],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[79],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[7],0xfc001fff 0xffc000bf 0x7ff80003 0x1e080001 0x02003c00 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[80],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[81],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[82],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[83],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[84],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[85],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[86],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[87],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[88],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[89],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[8],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[90],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[91],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[92],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[93],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[94],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[95],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[96],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[97],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[98],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[99],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM2[9],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[0],0xfc001fff 0xffc000bf 0x7ff80003 0x1e080001 0x02003c00 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[100],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[101],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[102],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[103],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[104],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[105],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[106],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[107],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[108],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[109],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[10],0xfc001fff 0xffc000bf 0x7ff80003 0x1e080001 0x02003c00 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[110],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[111],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[112],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[113],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[114],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[115],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[116],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[117],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[118],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[119],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[11],0xfc001fff 0xffc000bf 0x7ff80003 0x1e080001 0x02003c00 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[120],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[121],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[122],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[123],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[124],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[125],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[126],0xfc001fff 0xffc000bf 0x7ff80003 0x1e080001 0x02003c00 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[127],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[12],0xfc001fff 0xffc000bf 0x7ff80003 0x64080001 0x0200c800 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[13],0xfc001fff 0xffc000bf 0x7ff80003 0x7d080001 0x0200fa00 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[14],0xfc001fff 0xffc000bf 0x7ff80003 0x96080001 0x02012c00 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[15],0xfc001fff 0xffc000bf 0x7ff80003 0x96080001 0x02012c00 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[16],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[17],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[18],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[19],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[1],0xfc001fff 0xffc000bf 0x7ff80003 0x1e080001 0x02003c00 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[20],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[21],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[22],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[23],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[24],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[25],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[26],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[27],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[28],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[29],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[2],0xfc001fff 0xffc000bf 0x7ff80003 0x64080001 0x0200c800 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[30],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[31],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[32],0xfc001fff 0xffc000bf 0x7ff80003 0x1e080001 0x02003c00 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[33],0xfc001fff 0xffc000bf 0x7ff80003 0x64080001 0x0200c800 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[34],0xfc001fff 0xffc000bf 0x7ff80003 0x96080001 0x02012c00 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[35],0xfc001fff 0xffc000bf 0x7ff80003 0x1e080001 0x02003c00 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[36],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[37],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[38],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[39],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[3],0xfc001fff 0xffc000bf 0x7ff80003 0x7d080001 0x0200fa00 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[40],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[41],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[42],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[43],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[44],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[45],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[46],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[47],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[48],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[49],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[4],0xfc001fff 0xffc000bf 0x7ff80003 0x96080001 0x02012c00 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[50],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[51],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[52],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[53],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[54],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[55],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[56],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[57],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[58],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[59],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[5],0xfc001fff 0xffc000bf 0x7ff80003 0x96080001 0x02012c00 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[60],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[61],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[62],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[63],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[64],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[65],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[66],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[67],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[68],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[69],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[6],0xfc001fff 0xffc000bf 0x7ff80003 0x96080001 0x02012c00 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[70],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[71],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[72],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[73],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[74],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[75],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[76],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[77],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[78],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[79],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[7],0xfc001fff 0xffc000bf 0x7ff80003 0x1e080001 0x02003c00 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[80],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[81],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[82],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[83],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[84],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[85],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[86],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[87],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[88],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[89],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[8],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[90],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[91],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[92],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[93],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[94],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[95],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[96],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[97],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[98],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[99],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_BOUND_PRMS.CGM3[9],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[0],0xfc001fff 0xffc000bf 0x7ff80003 0x08a80001 0x001e0000 0x0002003c +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[100],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[101],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[102],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[103],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[104],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[105],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[106],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[107],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[108],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[109],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[10],0xfc001fff 0xffc000bf 0x7ff80003 0x08a80001 0x001e0000 0x0002003c +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[110],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[111],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[112],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[113],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[114],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[115],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[116],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[117],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[118],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[119],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[11],0xfc001fff 0xffc000bf 0x7ff80003 0x08a80001 0x001e0000 0x0002003c +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[120],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[121],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[122],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[123],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[124],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[125],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[126],0xfc001fff 0xffc000bf 0x7ff80003 0x08a80001 0x001e0000 0x0002003c +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[127],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[12],0xfc001fff 0xffc000bf 0x7ff80003 0x0ed80001 0x00640000 0x000200c8 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[13],0xfc001fff 0xffc000bf 0x7ff80003 0x12980001 0x007d0000 0x000200fa +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[14],0xfc001fff 0xffc000bf 0x7ff80003 0x30c80001 0x00960000 0x0002012c +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[15],0xfc001fff 0xffc000bf 0x7ff80003 0x30c80001 0x00960000 0x0002012c +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[16],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[17],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[18],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[19],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[1],0xfc001fff 0xffc000bf 0x7ff80003 0x08a80001 0x001e0000 0x0002003c +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[20],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[21],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[22],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[23],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[24],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[25],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[26],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[27],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[28],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[29],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[2],0xfc001fff 0xffc000bf 0x7ff80003 0x0ed80001 0x00640000 0x000200c8 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[30],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[31],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[32],0xfc001fff 0xffc000bf 0x7ff80003 0x08a80001 0x001e0000 0x0002003c +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[33],0xfc001fff 0xffc000bf 0x7ff80003 0x0ed80001 0x00640000 0x000200c8 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[34],0xfc001fff 0xffc000bf 0x7ff80003 0x30c80001 0x00960000 0x0002012c +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[35],0xfc001fff 0xffc000bf 0x7ff80003 0x08a80001 0x001e0000 0x0002003c +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[36],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[37],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[38],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[39],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[3],0xfc001fff 0xffc000bf 0x7ff80003 0x12980001 0x007d0000 0x000200fa +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[40],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[41],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[42],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[43],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[44],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[45],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[46],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[47],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[48],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[49],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[4],0xfc001fff 0xffc000bf 0x7ff80003 0x30c80001 0x00960000 0x0002012c +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[50],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[51],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[52],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[53],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[54],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[55],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[56],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[57],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[58],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[59],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[5],0xfc001fff 0xffc000bf 0x7ff80003 0x30c80001 0x00960000 0x0002012c +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[60],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[61],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[62],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[63],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[64],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[65],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[66],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[67],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[68],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[69],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[6],0xfc001fff 0xffc000bf 0x7ff80003 0x30c80001 0x00960000 0x0002012c +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[70],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[71],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[72],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[73],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[74],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[75],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[76],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[77],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[78],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[79],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[7],0xfc001fff 0xffc000bf 0x7ff80003 0x08a80001 0x001e0000 0x0002003c +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[80],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[81],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[82],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[83],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[84],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[85],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[86],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[87],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[88],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[89],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[8],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[90],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[91],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[92],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[93],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[94],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[95],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[96],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[97],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[98],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[99],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM0[9],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[0],0xfc001fff 0xffc000bf 0x7ff80003 0x08a80001 0x001e0000 0x0002003c +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[100],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[101],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[102],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[103],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[104],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[105],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[106],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[107],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[108],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[109],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[10],0xfc001fff 0xffc000bf 0x7ff80003 0x08a80001 0x001e0000 0x0002003c +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[110],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[111],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[112],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[113],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[114],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[115],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[116],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[117],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[118],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[119],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[11],0xfc001fff 0xffc000bf 0x7ff80003 0x08a80001 0x001e0000 0x0002003c +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[120],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[121],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[122],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[123],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[124],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[125],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[126],0xfc001fff 0xffc000bf 0x7ff80003 0x08a80001 0x001e0000 0x0002003c +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[127],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[12],0xfc001fff 0xffc000bf 0x7ff80003 0x0ed80001 0x00640000 0x000200c8 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[13],0xfc001fff 0xffc000bf 0x7ff80003 0x12980001 0x007d0000 0x000200fa +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[14],0xfc001fff 0xffc000bf 0x7ff80003 0x30c80001 0x00960000 0x0002012c +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[15],0xfc001fff 0xffc000bf 0x7ff80003 0x30c80001 0x00960000 0x0002012c +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[16],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[17],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[18],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[19],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[1],0xfc001fff 0xffc000bf 0x7ff80003 0x08a80001 0x001e0000 0x0002003c +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[20],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[21],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[22],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[23],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[24],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[25],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[26],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[27],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[28],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[29],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[2],0xfc001fff 0xffc000bf 0x7ff80003 0x0ed80001 0x00640000 0x000200c8 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[30],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[31],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[32],0xfc001fff 0xffc000bf 0x7ff80003 0x08a80001 0x001e0000 0x0002003c +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[33],0xfc001fff 0xffc000bf 0x7ff80003 0x0ed80001 0x00640000 0x000200c8 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[34],0xfc001fff 0xffc000bf 0x7ff80003 0x30c80001 0x00960000 0x0002012c +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[35],0xfc001fff 0xffc000bf 0x7ff80003 0x08a80001 0x001e0000 0x0002003c +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[36],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[37],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[38],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[39],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[3],0xfc001fff 0xffc000bf 0x7ff80003 0x12980001 0x007d0000 0x000200fa +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[40],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[41],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[42],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[43],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[44],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[45],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[46],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[47],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[48],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[49],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[4],0xfc001fff 0xffc000bf 0x7ff80003 0x30c80001 0x00960000 0x0002012c +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[50],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[51],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[52],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[53],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[54],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[55],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[56],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[57],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[58],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[59],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[5],0xfc001fff 0xffc000bf 0x7ff80003 0x30c80001 0x00960000 0x0002012c +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[60],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[61],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[62],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[63],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[64],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[65],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[66],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[67],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[68],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[69],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[6],0xfc001fff 0xffc000bf 0x7ff80003 0x30c80001 0x00960000 0x0002012c +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[70],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[71],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[72],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[73],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[74],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[75],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[76],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[77],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[78],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[79],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[7],0xfc001fff 0xffc000bf 0x7ff80003 0x08a80001 0x001e0000 0x0002003c +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[80],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[81],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[82],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[83],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[84],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[85],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[86],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[87],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[88],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[89],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[8],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[90],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[91],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[92],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[93],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[94],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[95],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[96],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[97],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[98],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[99],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM1[9],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[0],0xfc001fff 0xffc000bf 0x7ff80003 0x08a80001 0x001e0000 0x0002003c +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[100],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[101],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[102],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[103],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[104],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[105],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[106],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[107],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[108],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[109],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[10],0xfc001fff 0xffc000bf 0x7ff80003 0x08a80001 0x001e0000 0x0002003c +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[110],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[111],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[112],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[113],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[114],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[115],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[116],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[117],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[118],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[119],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[11],0xfc001fff 0xffc000bf 0x7ff80003 0x08a80001 0x001e0000 0x0002003c +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[120],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[121],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[122],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[123],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[124],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[125],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[126],0xfc001fff 0xffc000bf 0x7ff80003 0x08a80001 0x001e0000 0x0002003c +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[127],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[12],0xfc001fff 0xffc000bf 0x7ff80003 0x0ed80001 0x00640000 0x000200c8 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[13],0xfc001fff 0xffc000bf 0x7ff80003 0x12980001 0x007d0000 0x000200fa +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[14],0xfc001fff 0xffc000bf 0x7ff80003 0x30c80001 0x00960000 0x0002012c +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[15],0xfc001fff 0xffc000bf 0x7ff80003 0x30c80001 0x00960000 0x0002012c +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[16],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[17],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[18],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[19],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[1],0xfc001fff 0xffc000bf 0x7ff80003 0x08a80001 0x001e0000 0x0002003c +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[20],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[21],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[22],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[23],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[24],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[25],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[26],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[27],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[28],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[29],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[2],0xfc001fff 0xffc000bf 0x7ff80003 0x0ed80001 0x00640000 0x000200c8 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[30],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[31],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[32],0xfc001fff 0xffc000bf 0x7ff80003 0x08a80001 0x001e0000 0x0002003c +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[33],0xfc001fff 0xffc000bf 0x7ff80003 0x0ed80001 0x00640000 0x000200c8 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[34],0xfc001fff 0xffc000bf 0x7ff80003 0x30c80001 0x00960000 0x0002012c +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[35],0xfc001fff 0xffc000bf 0x7ff80003 0x08a80001 0x001e0000 0x0002003c +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[36],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[37],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[38],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[39],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[3],0xfc001fff 0xffc000bf 0x7ff80003 0x12980001 0x007d0000 0x000200fa +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[40],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[41],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[42],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[43],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[44],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[45],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[46],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[47],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[48],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[49],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[4],0xfc001fff 0xffc000bf 0x7ff80003 0x30c80001 0x00960000 0x0002012c +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[50],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[51],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[52],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[53],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[54],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[55],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[56],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[57],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[58],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[59],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[5],0xfc001fff 0xffc000bf 0x7ff80003 0x30c80001 0x00960000 0x0002012c +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[60],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[61],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[62],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[63],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[64],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[65],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[66],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[67],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[68],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[69],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[6],0xfc001fff 0xffc000bf 0x7ff80003 0x30c80001 0x00960000 0x0002012c +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[70],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[71],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[72],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[73],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[74],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[75],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[76],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[77],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[78],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[79],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[7],0xfc001fff 0xffc000bf 0x7ff80003 0x08a80001 0x001e0000 0x0002003c +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[80],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[81],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[82],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[83],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[84],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[85],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[86],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[87],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[88],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[89],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[8],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[90],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[91],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[92],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[93],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[94],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[95],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[96],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[97],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[98],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[99],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM2[9],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[0],0xfc001fff 0xffc000bf 0x7ff80003 0x08a80001 0x001e0000 0x0002003c +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[100],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[101],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[102],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[103],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[104],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[105],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[106],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[107],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[108],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[109],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[10],0xfc001fff 0xffc000bf 0x7ff80003 0x08a80001 0x001e0000 0x0002003c +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[110],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[111],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[112],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[113],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[114],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[115],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[116],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[117],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[118],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[119],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[11],0xfc001fff 0xffc000bf 0x7ff80003 0x08a80001 0x001e0000 0x0002003c +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[120],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[121],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[122],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[123],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[124],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[125],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[126],0xfc001fff 0xffc000bf 0x7ff80003 0x08a80001 0x001e0000 0x0002003c +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[127],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[12],0xfc001fff 0xffc000bf 0x7ff80003 0x0ed80001 0x00640000 0x000200c8 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[13],0xfc001fff 0xffc000bf 0x7ff80003 0x12980001 0x007d0000 0x000200fa +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[14],0xfc001fff 0xffc000bf 0x7ff80003 0x30c80001 0x00960000 0x0002012c +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[15],0xfc001fff 0xffc000bf 0x7ff80003 0x30c80001 0x00960000 0x0002012c +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[16],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[17],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[18],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[19],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[1],0xfc001fff 0xffc000bf 0x7ff80003 0x08a80001 0x001e0000 0x0002003c +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[20],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[21],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[22],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[23],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[24],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[25],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[26],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[27],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[28],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[29],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[2],0xfc001fff 0xffc000bf 0x7ff80003 0x0ed80001 0x00640000 0x000200c8 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[30],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[31],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[32],0xfc001fff 0xffc000bf 0x7ff80003 0x08a80001 0x001e0000 0x0002003c +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[33],0xfc001fff 0xffc000bf 0x7ff80003 0x0ed80001 0x00640000 0x000200c8 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[34],0xfc001fff 0xffc000bf 0x7ff80003 0x30c80001 0x00960000 0x0002012c +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[35],0xfc001fff 0xffc000bf 0x7ff80003 0x08a80001 0x001e0000 0x0002003c +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[36],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[37],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[38],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[39],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[3],0xfc001fff 0xffc000bf 0x7ff80003 0x12980001 0x007d0000 0x000200fa +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[40],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[41],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[42],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[43],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[44],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[45],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[46],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[47],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[48],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[49],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[4],0xfc001fff 0xffc000bf 0x7ff80003 0x30c80001 0x00960000 0x0002012c +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[50],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[51],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[52],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[53],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[54],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[55],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[56],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[57],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[58],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[59],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[5],0xfc001fff 0xffc000bf 0x7ff80003 0x30c80001 0x00960000 0x0002012c +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[60],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[61],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[62],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[63],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[64],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[65],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[66],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[67],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[68],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[69],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[6],0xfc001fff 0xffc000bf 0x7ff80003 0x30c80001 0x00960000 0x0002012c +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[70],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[71],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[72],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[73],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[74],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[75],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[76],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[77],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[78],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[79],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[7],0xfc001fff 0xffc000bf 0x7ff80003 0x08a80001 0x001e0000 0x0002003c +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[80],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[81],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[82],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[83],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[84],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[85],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[86],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[87],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[88],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[89],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[8],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[90],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[91],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[92],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[93],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[94],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[95],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[96],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[97],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[98],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[99],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VOQ_DRAM_RECOVERY_PRMS.CGM3[9],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[0],0x00ffffff 0x1fff0000 0xfc000000 0x000000bf +mem,CGM_VSQE_RJCT_PRMS.CGM0[100],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[101],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[102],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[103],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[104],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[105],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[106],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[107],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[108],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[109],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[10],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[110],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[111],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[112],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[113],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[114],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[115],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[116],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[117],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[118],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[119],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[11],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[120],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[121],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[122],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[123],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[124],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[125],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[126],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[127],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[12],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[13],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[14],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[15],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[16],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[17],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[18],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[19],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[1],0x00ffffff 0x1fff0000 0xfc000000 0x000000bf +mem,CGM_VSQE_RJCT_PRMS.CGM0[20],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[21],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[22],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[23],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[24],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[25],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[26],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[27],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[28],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[29],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[2],0x00ffffff 0x1fff0000 0xfc000000 0x000000bf +mem,CGM_VSQE_RJCT_PRMS.CGM0[30],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[31],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[32],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[33],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[34],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[35],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[36],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[37],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[38],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[39],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[3],0x00ffffff 0x1fff0000 0xfc000000 0x000000bf +mem,CGM_VSQE_RJCT_PRMS.CGM0[40],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[41],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[42],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[43],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[44],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[45],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[46],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[47],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[48],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[49],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[4],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[50],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[51],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[52],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[53],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[54],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[55],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[56],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[57],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[58],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[59],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[5],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[60],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[61],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[62],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[63],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[64],0x00ffffff 0x1fff0000 0xfc000000 0x000000bf +mem,CGM_VSQE_RJCT_PRMS.CGM0[65],0x00ffffff 0x1fff0000 0xfc000000 0x000000bf +mem,CGM_VSQE_RJCT_PRMS.CGM0[66],0x00ffffff 0x1fff0000 0xfc000000 0x000000bf +mem,CGM_VSQE_RJCT_PRMS.CGM0[67],0x00ffffff 0x1fff0000 0xfc000000 0x000000bf +mem,CGM_VSQE_RJCT_PRMS.CGM0[68],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[69],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[6],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[70],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[71],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[72],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[73],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[74],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[75],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[76],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[77],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[78],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[79],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[7],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[80],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[81],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[82],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[83],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[84],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[85],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[86],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[87],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[88],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[89],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[8],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[90],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[91],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[92],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[93],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[94],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[95],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[96],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[97],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[98],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[99],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM0[9],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[0],0x00ffffff 0x1fff0000 0xfc000000 0x000000bf +mem,CGM_VSQE_RJCT_PRMS.CGM1[100],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[101],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[102],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[103],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[104],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[105],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[106],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[107],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[108],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[109],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[10],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[110],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[111],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[112],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[113],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[114],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[115],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[116],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[117],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[118],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[119],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[11],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[120],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[121],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[122],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[123],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[124],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[125],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[126],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[127],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[12],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[13],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[14],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[15],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[16],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[17],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[18],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[19],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[1],0x00ffffff 0x1fff0000 0xfc000000 0x000000bf +mem,CGM_VSQE_RJCT_PRMS.CGM1[20],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[21],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[22],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[23],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[24],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[25],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[26],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[27],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[28],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[29],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[2],0x00ffffff 0x1fff0000 0xfc000000 0x000000bf +mem,CGM_VSQE_RJCT_PRMS.CGM1[30],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[31],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[32],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[33],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[34],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[35],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[36],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[37],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[38],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[39],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[3],0x00ffffff 0x1fff0000 0xfc000000 0x000000bf +mem,CGM_VSQE_RJCT_PRMS.CGM1[40],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[41],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[42],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[43],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[44],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[45],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[46],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[47],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[48],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[49],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[4],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[50],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[51],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[52],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[53],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[54],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[55],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[56],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[57],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[58],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[59],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[5],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[60],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[61],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[62],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[63],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[64],0x00ffffff 0x1fff0000 0xfc000000 0x000000bf +mem,CGM_VSQE_RJCT_PRMS.CGM1[65],0x00ffffff 0x1fff0000 0xfc000000 0x000000bf +mem,CGM_VSQE_RJCT_PRMS.CGM1[66],0x00ffffff 0x1fff0000 0xfc000000 0x000000bf +mem,CGM_VSQE_RJCT_PRMS.CGM1[67],0x00ffffff 0x1fff0000 0xfc000000 0x000000bf +mem,CGM_VSQE_RJCT_PRMS.CGM1[68],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[69],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[6],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[70],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[71],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[72],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[73],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[74],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[75],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[76],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[77],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[78],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[79],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[7],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[80],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[81],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[82],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[83],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[84],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[85],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[86],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[87],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[88],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[89],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[8],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[90],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[91],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[92],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[93],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[94],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[95],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[96],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[97],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[98],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[99],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM1[9],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[0],0x00ffffff 0x1fff0000 0xfc000000 0x000000bf +mem,CGM_VSQE_RJCT_PRMS.CGM2[100],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[101],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[102],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[103],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[104],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[105],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[106],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[107],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[108],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[109],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[10],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[110],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[111],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[112],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[113],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[114],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[115],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[116],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[117],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[118],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[119],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[11],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[120],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[121],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[122],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[123],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[124],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[125],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[126],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[127],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[12],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[13],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[14],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[15],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[16],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[17],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[18],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[19],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[1],0x00ffffff 0x1fff0000 0xfc000000 0x000000bf +mem,CGM_VSQE_RJCT_PRMS.CGM2[20],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[21],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[22],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[23],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[24],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[25],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[26],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[27],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[28],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[29],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[2],0x00ffffff 0x1fff0000 0xfc000000 0x000000bf +mem,CGM_VSQE_RJCT_PRMS.CGM2[30],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[31],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[32],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[33],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[34],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[35],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[36],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[37],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[38],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[39],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[3],0x00ffffff 0x1fff0000 0xfc000000 0x000000bf +mem,CGM_VSQE_RJCT_PRMS.CGM2[40],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[41],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[42],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[43],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[44],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[45],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[46],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[47],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[48],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[49],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[4],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[50],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[51],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[52],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[53],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[54],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[55],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[56],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[57],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[58],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[59],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[5],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[60],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[61],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[62],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[63],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[64],0x00ffffff 0x1fff0000 0xfc000000 0x000000bf +mem,CGM_VSQE_RJCT_PRMS.CGM2[65],0x00ffffff 0x1fff0000 0xfc000000 0x000000bf +mem,CGM_VSQE_RJCT_PRMS.CGM2[66],0x00ffffff 0x1fff0000 0xfc000000 0x000000bf +mem,CGM_VSQE_RJCT_PRMS.CGM2[67],0x00ffffff 0x1fff0000 0xfc000000 0x000000bf +mem,CGM_VSQE_RJCT_PRMS.CGM2[68],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[69],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[6],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[70],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[71],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[72],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[73],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[74],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[75],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[76],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[77],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[78],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[79],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[7],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[80],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[81],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[82],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[83],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[84],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[85],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[86],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[87],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[88],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[89],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[8],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[90],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[91],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[92],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[93],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[94],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[95],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[96],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[97],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[98],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[99],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM2[9],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[0],0x00ffffff 0x1fff0000 0xfc000000 0x000000bf +mem,CGM_VSQE_RJCT_PRMS.CGM3[100],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[101],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[102],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[103],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[104],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[105],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[106],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[107],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[108],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[109],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[10],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[110],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[111],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[112],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[113],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[114],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[115],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[116],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[117],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[118],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[119],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[11],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[120],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[121],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[122],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[123],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[124],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[125],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[126],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[127],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[12],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[13],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[14],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[15],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[16],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[17],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[18],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[19],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[1],0x00ffffff 0x1fff0000 0xfc000000 0x000000bf +mem,CGM_VSQE_RJCT_PRMS.CGM3[20],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[21],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[22],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[23],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[24],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[25],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[26],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[27],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[28],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[29],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[2],0x00ffffff 0x1fff0000 0xfc000000 0x000000bf +mem,CGM_VSQE_RJCT_PRMS.CGM3[30],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[31],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[32],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[33],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[34],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[35],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[36],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[37],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[38],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[39],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[3],0x00ffffff 0x1fff0000 0xfc000000 0x000000bf +mem,CGM_VSQE_RJCT_PRMS.CGM3[40],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[41],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[42],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[43],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[44],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[45],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[46],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[47],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[48],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[49],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[4],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[50],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[51],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[52],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[53],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[54],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[55],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[56],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[57],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[58],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[59],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[5],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[60],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[61],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[62],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[63],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[64],0x00ffffff 0x1fff0000 0xfc000000 0x000000bf +mem,CGM_VSQE_RJCT_PRMS.CGM3[65],0x00ffffff 0x1fff0000 0xfc000000 0x000000bf +mem,CGM_VSQE_RJCT_PRMS.CGM3[66],0x00ffffff 0x1fff0000 0xfc000000 0x000000bf +mem,CGM_VSQE_RJCT_PRMS.CGM3[67],0x00ffffff 0x1fff0000 0xfc000000 0x000000bf +mem,CGM_VSQE_RJCT_PRMS.CGM3[68],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[69],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[6],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[70],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[71],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[72],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[73],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[74],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[75],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[76],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[77],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[78],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[79],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[7],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[80],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[81],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[82],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[83],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[84],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[85],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[86],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[87],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[88],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[89],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[8],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[90],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[91],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[92],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[93],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[94],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[95],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[96],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[97],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[98],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[99],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQE_RJCT_PRMS.CGM3[9],0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQF_FC_PRMS.CGM0[0],0xffffffff 0x0000ffff 0x03fff000 0x00007ffc 0xefff8000 0x20000bff +mem,CGM_VSQF_FC_PRMS.CGM0[10],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQF_FC_PRMS.CGM0[11],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQF_FC_PRMS.CGM0[12],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQF_FC_PRMS.CGM0[13],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQF_FC_PRMS.CGM0[14],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQF_FC_PRMS.CGM0[15],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQF_FC_PRMS.CGM0[1],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQF_FC_PRMS.CGM0[2],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQF_FC_PRMS.CGM0[3],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQF_FC_PRMS.CGM0[4],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQF_FC_PRMS.CGM0[5],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQF_FC_PRMS.CGM0[6],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQF_FC_PRMS.CGM0[7],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQF_FC_PRMS.CGM0[8],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQF_FC_PRMS.CGM0[9],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQF_FC_PRMS.CGM1[0],0xffffffff 0x0000ffff 0x03fff000 0x00007ffc 0xefff8000 0x20000bff +mem,CGM_VSQF_FC_PRMS.CGM1[10],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQF_FC_PRMS.CGM1[11],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQF_FC_PRMS.CGM1[12],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQF_FC_PRMS.CGM1[13],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQF_FC_PRMS.CGM1[14],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQF_FC_PRMS.CGM1[15],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQF_FC_PRMS.CGM1[1],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQF_FC_PRMS.CGM1[2],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQF_FC_PRMS.CGM1[3],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQF_FC_PRMS.CGM1[4],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQF_FC_PRMS.CGM1[5],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQF_FC_PRMS.CGM1[6],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQF_FC_PRMS.CGM1[7],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQF_FC_PRMS.CGM1[8],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQF_FC_PRMS.CGM1[9],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQF_FC_PRMS.CGM2[0],0xffffffff 0x0000ffff 0x03fff000 0x00007ffc 0xefff8000 0x20000bff +mem,CGM_VSQF_FC_PRMS.CGM2[10],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQF_FC_PRMS.CGM2[11],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQF_FC_PRMS.CGM2[12],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQF_FC_PRMS.CGM2[13],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQF_FC_PRMS.CGM2[14],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQF_FC_PRMS.CGM2[15],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQF_FC_PRMS.CGM2[1],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQF_FC_PRMS.CGM2[2],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQF_FC_PRMS.CGM2[3],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQF_FC_PRMS.CGM2[4],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQF_FC_PRMS.CGM2[5],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQF_FC_PRMS.CGM2[6],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQF_FC_PRMS.CGM2[7],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQF_FC_PRMS.CGM2[8],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQF_FC_PRMS.CGM2[9],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQF_FC_PRMS.CGM3[0],0xffffffff 0x0000ffff 0x03fff000 0x00007ffc 0xefff8000 0x20000bff +mem,CGM_VSQF_FC_PRMS.CGM3[10],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQF_FC_PRMS.CGM3[11],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQF_FC_PRMS.CGM3[12],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQF_FC_PRMS.CGM3[13],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQF_FC_PRMS.CGM3[14],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQF_FC_PRMS.CGM3[15],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQF_FC_PRMS.CGM3[1],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQF_FC_PRMS.CGM3[2],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQF_FC_PRMS.CGM3[3],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQF_FC_PRMS.CGM3[4],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQF_FC_PRMS.CGM3[5],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQF_FC_PRMS.CGM3[6],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQF_FC_PRMS.CGM3[7],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQF_FC_PRMS.CGM3[8],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,CGM_VSQF_FC_PRMS.CGM3[9],0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[0],0x00014000 0x00140005 0x00f00050 0x000003c0 +mem,IPS_CRBAL_TH.IPS0[100],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[101],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[102],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[103],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[104],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[105],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[106],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[107],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[108],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[109],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[10],0x00014000 0x00140005 0x00f00050 0x000003c0 +mem,IPS_CRBAL_TH.IPS0[110],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[111],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[112],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[113],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[114],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[115],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[116],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[117],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[118],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[119],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[11],0x00014000 0x00140005 0x00f00050 0x000003c0 +mem,IPS_CRBAL_TH.IPS0[120],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[121],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[122],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[123],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[124],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[125],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[126],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[127],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[12],0x00014000 0x00140005 0x00f00050 0x000003c0 +mem,IPS_CRBAL_TH.IPS0[13],0x00014000 0x00140005 0x00f00050 0x000003c0 +mem,IPS_CRBAL_TH.IPS0[14],0x00014000 0x00140005 0x00f00050 0x000003c0 +mem,IPS_CRBAL_TH.IPS0[15],0x00014000 0x00140005 0x00f00050 0x000003c0 +mem,IPS_CRBAL_TH.IPS0[16],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[17],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[18],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[19],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[1],0x00014000 0x00140005 0x00f00050 0x000003c0 +mem,IPS_CRBAL_TH.IPS0[20],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[21],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[22],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[23],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[24],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[25],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[26],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[27],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[28],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[29],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[2],0x00014000 0x00140005 0x00f00050 0x000003c0 +mem,IPS_CRBAL_TH.IPS0[30],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[31],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[32],0x00014000 0x00140005 0x00f00050 0x000003c0 +mem,IPS_CRBAL_TH.IPS0[33],0x00014000 0x00140005 0x00f00050 0x000003c0 +mem,IPS_CRBAL_TH.IPS0[34],0x00014000 0x00140005 0x00f00050 0x000003c0 +mem,IPS_CRBAL_TH.IPS0[35],0x00014000 0x00140005 0x00f00050 0x000003c0 +mem,IPS_CRBAL_TH.IPS0[36],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[37],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[38],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[39],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[3],0x00014000 0x00140005 0x00f00050 0x000003c0 +mem,IPS_CRBAL_TH.IPS0[40],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[41],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[42],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[43],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[44],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[45],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[46],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[47],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[48],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[49],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[4],0x00014000 0x00140005 0x00f00050 0x000003c0 +mem,IPS_CRBAL_TH.IPS0[50],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[51],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[52],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[53],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[54],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[55],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[56],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[57],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[58],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[59],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[5],0x00014000 0x00140005 0x00f00050 0x000003c0 +mem,IPS_CRBAL_TH.IPS0[60],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[61],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[62],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[63],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[64],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[65],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[66],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[67],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[68],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[69],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[6],0x00018000 0x00180006 0x01200060 0x00000480 +mem,IPS_CRBAL_TH.IPS0[70],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[71],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[72],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[73],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[74],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[75],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[76],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[77],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[78],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[79],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[7],0x50015400 0x40051005 0x01b40014 0x000006d0 +mem,IPS_CRBAL_TH.IPS0[80],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[81],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[82],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[83],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[84],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[85],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[86],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[87],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[88],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[89],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[8],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[90],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[91],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[92],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[93],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[94],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[95],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[96],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[97],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[98],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[99],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS0[9],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[0],0x00014000 0x00140005 0x00f00050 0x000003c0 +mem,IPS_CRBAL_TH.IPS1[100],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[101],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[102],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[103],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[104],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[105],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[106],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[107],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[108],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[109],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[10],0x00014000 0x00140005 0x00f00050 0x000003c0 +mem,IPS_CRBAL_TH.IPS1[110],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[111],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[112],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[113],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[114],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[115],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[116],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[117],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[118],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[119],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[11],0x00014000 0x00140005 0x00f00050 0x000003c0 +mem,IPS_CRBAL_TH.IPS1[120],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[121],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[122],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[123],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[124],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[125],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[126],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[127],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[12],0x00014000 0x00140005 0x00f00050 0x000003c0 +mem,IPS_CRBAL_TH.IPS1[13],0x00014000 0x00140005 0x00f00050 0x000003c0 +mem,IPS_CRBAL_TH.IPS1[14],0x00014000 0x00140005 0x00f00050 0x000003c0 +mem,IPS_CRBAL_TH.IPS1[15],0x00014000 0x00140005 0x00f00050 0x000003c0 +mem,IPS_CRBAL_TH.IPS1[16],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[17],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[18],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[19],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[1],0x00014000 0x00140005 0x00f00050 0x000003c0 +mem,IPS_CRBAL_TH.IPS1[20],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[21],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[22],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[23],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[24],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[25],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[26],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[27],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[28],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[29],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[2],0x00014000 0x00140005 0x00f00050 0x000003c0 +mem,IPS_CRBAL_TH.IPS1[30],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[31],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[32],0x00014000 0x00140005 0x00f00050 0x000003c0 +mem,IPS_CRBAL_TH.IPS1[33],0x00014000 0x00140005 0x00f00050 0x000003c0 +mem,IPS_CRBAL_TH.IPS1[34],0x00014000 0x00140005 0x00f00050 0x000003c0 +mem,IPS_CRBAL_TH.IPS1[35],0x00014000 0x00140005 0x00f00050 0x000003c0 +mem,IPS_CRBAL_TH.IPS1[36],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[37],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[38],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[39],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[3],0x00014000 0x00140005 0x00f00050 0x000003c0 +mem,IPS_CRBAL_TH.IPS1[40],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[41],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[42],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[43],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[44],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[45],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[46],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[47],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[48],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[49],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[4],0x00014000 0x00140005 0x00f00050 0x000003c0 +mem,IPS_CRBAL_TH.IPS1[50],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[51],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[52],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[53],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[54],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[55],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[56],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[57],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[58],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[59],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[5],0x00014000 0x00140005 0x00f00050 0x000003c0 +mem,IPS_CRBAL_TH.IPS1[60],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[61],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[62],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[63],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[64],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[65],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[66],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[67],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[68],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[69],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[6],0x00018000 0x00180006 0x01200060 0x00000480 +mem,IPS_CRBAL_TH.IPS1[70],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[71],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[72],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[73],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[74],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[75],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[76],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[77],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[78],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[79],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[7],0x50015400 0x40051005 0x01b40014 0x000006d0 +mem,IPS_CRBAL_TH.IPS1[80],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[81],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[82],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[83],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[84],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[85],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[86],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[87],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[88],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[89],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[8],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[90],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[91],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[92],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[93],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[94],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[95],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[96],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[97],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[98],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[99],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS1[9],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[0],0x00014000 0x00140005 0x00f00050 0x000003c0 +mem,IPS_CRBAL_TH.IPS2[100],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[101],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[102],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[103],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[104],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[105],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[106],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[107],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[108],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[109],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[10],0x00014000 0x00140005 0x00f00050 0x000003c0 +mem,IPS_CRBAL_TH.IPS2[110],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[111],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[112],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[113],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[114],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[115],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[116],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[117],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[118],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[119],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[11],0x00014000 0x00140005 0x00f00050 0x000003c0 +mem,IPS_CRBAL_TH.IPS2[120],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[121],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[122],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[123],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[124],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[125],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[126],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[127],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[12],0x00014000 0x00140005 0x00f00050 0x000003c0 +mem,IPS_CRBAL_TH.IPS2[13],0x00014000 0x00140005 0x00f00050 0x000003c0 +mem,IPS_CRBAL_TH.IPS2[14],0x00014000 0x00140005 0x00f00050 0x000003c0 +mem,IPS_CRBAL_TH.IPS2[15],0x00014000 0x00140005 0x00f00050 0x000003c0 +mem,IPS_CRBAL_TH.IPS2[16],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[17],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[18],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[19],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[1],0x00014000 0x00140005 0x00f00050 0x000003c0 +mem,IPS_CRBAL_TH.IPS2[20],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[21],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[22],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[23],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[24],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[25],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[26],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[27],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[28],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[29],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[2],0x00014000 0x00140005 0x00f00050 0x000003c0 +mem,IPS_CRBAL_TH.IPS2[30],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[31],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[32],0x00014000 0x00140005 0x00f00050 0x000003c0 +mem,IPS_CRBAL_TH.IPS2[33],0x00014000 0x00140005 0x00f00050 0x000003c0 +mem,IPS_CRBAL_TH.IPS2[34],0x00014000 0x00140005 0x00f00050 0x000003c0 +mem,IPS_CRBAL_TH.IPS2[35],0x00014000 0x00140005 0x00f00050 0x000003c0 +mem,IPS_CRBAL_TH.IPS2[36],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[37],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[38],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[39],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[3],0x00014000 0x00140005 0x00f00050 0x000003c0 +mem,IPS_CRBAL_TH.IPS2[40],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[41],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[42],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[43],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[44],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[45],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[46],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[47],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[48],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[49],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[4],0x00014000 0x00140005 0x00f00050 0x000003c0 +mem,IPS_CRBAL_TH.IPS2[50],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[51],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[52],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[53],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[54],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[55],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[56],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[57],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[58],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[59],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[5],0x00014000 0x00140005 0x00f00050 0x000003c0 +mem,IPS_CRBAL_TH.IPS2[60],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[61],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[62],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[63],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[64],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[65],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[66],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[67],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[68],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[69],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[6],0x00018000 0x00180006 0x01200060 0x00000480 +mem,IPS_CRBAL_TH.IPS2[70],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[71],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[72],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[73],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[74],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[75],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[76],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[77],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[78],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[79],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[7],0x50015400 0x40051005 0x01b40014 0x000006d0 +mem,IPS_CRBAL_TH.IPS2[80],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[81],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[82],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[83],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[84],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[85],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[86],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[87],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[88],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[89],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[8],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[90],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[91],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[92],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[93],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[94],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[95],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[96],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[97],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[98],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[99],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS2[9],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[0],0x00014000 0x00140005 0x00f00050 0x000003c0 +mem,IPS_CRBAL_TH.IPS3[100],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[101],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[102],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[103],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[104],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[105],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[106],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[107],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[108],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[109],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[10],0x00014000 0x00140005 0x00f00050 0x000003c0 +mem,IPS_CRBAL_TH.IPS3[110],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[111],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[112],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[113],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[114],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[115],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[116],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[117],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[118],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[119],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[11],0x00014000 0x00140005 0x00f00050 0x000003c0 +mem,IPS_CRBAL_TH.IPS3[120],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[121],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[122],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[123],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[124],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[125],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[126],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[127],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[12],0x00014000 0x00140005 0x00f00050 0x000003c0 +mem,IPS_CRBAL_TH.IPS3[13],0x00014000 0x00140005 0x00f00050 0x000003c0 +mem,IPS_CRBAL_TH.IPS3[14],0x00014000 0x00140005 0x00f00050 0x000003c0 +mem,IPS_CRBAL_TH.IPS3[15],0x00014000 0x00140005 0x00f00050 0x000003c0 +mem,IPS_CRBAL_TH.IPS3[16],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[17],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[18],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[19],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[1],0x00014000 0x00140005 0x00f00050 0x000003c0 +mem,IPS_CRBAL_TH.IPS3[20],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[21],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[22],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[23],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[24],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[25],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[26],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[27],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[28],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[29],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[2],0x00014000 0x00140005 0x00f00050 0x000003c0 +mem,IPS_CRBAL_TH.IPS3[30],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[31],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[32],0x00014000 0x00140005 0x00f00050 0x000003c0 +mem,IPS_CRBAL_TH.IPS3[33],0x00014000 0x00140005 0x00f00050 0x000003c0 +mem,IPS_CRBAL_TH.IPS3[34],0x00014000 0x00140005 0x00f00050 0x000003c0 +mem,IPS_CRBAL_TH.IPS3[35],0x00014000 0x00140005 0x00f00050 0x000003c0 +mem,IPS_CRBAL_TH.IPS3[36],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[37],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[38],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[39],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[3],0x00014000 0x00140005 0x00f00050 0x000003c0 +mem,IPS_CRBAL_TH.IPS3[40],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[41],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[42],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[43],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[44],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[45],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[46],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[47],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[48],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[49],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[4],0x00014000 0x00140005 0x00f00050 0x000003c0 +mem,IPS_CRBAL_TH.IPS3[50],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[51],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[52],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[53],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[54],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[55],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[56],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[57],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[58],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[59],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[5],0x00014000 0x00140005 0x00f00050 0x000003c0 +mem,IPS_CRBAL_TH.IPS3[60],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[61],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[62],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[63],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[64],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[65],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[66],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[67],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[68],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[69],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[6],0x00018000 0x00180006 0x01200060 0x00000480 +mem,IPS_CRBAL_TH.IPS3[70],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[71],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[72],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[73],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[74],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[75],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[76],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[77],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[78],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[79],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[7],0x50015400 0x40051005 0x01b40014 0x000006d0 +mem,IPS_CRBAL_TH.IPS3[80],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[81],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[82],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[83],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[84],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[85],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[86],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[87],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[88],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[89],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[8],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[90],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[91],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[92],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[93],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[94],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[95],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[96],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[97],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[98],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[99],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_CRBAL_TH.IPS3[9],0x00000000 0x00000000 0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[0],0xa0000000 0x00000010 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[100],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[101],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[102],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[103],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[104],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[105],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[106],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[107],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[108],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[109],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[10],0xa0000000 0x00000010 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[110],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[111],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[112],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[113],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[114],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[115],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[116],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[117],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[118],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[119],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[11],0xa0000000 0x00000010 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[120],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[121],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[122],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[123],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[124],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[125],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[126],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[127],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[12],0xa0000000 0x00000010 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[13],0xa0000000 0x00000010 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[14],0xa0000000 0x00000010 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[15],0xa0000000 0x00000010 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[16],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[17],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[18],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[19],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[1],0xa0000000 0x00000010 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[20],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[21],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[22],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[23],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[24],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[25],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[26],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[27],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[28],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[29],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[2],0xa0000000 0x00000010 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[30],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[31],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[32],0xa0000000 0x00000010 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[33],0xa0000000 0x00000010 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[34],0xa0000000 0x00000010 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[35],0xa0000000 0x00000010 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[36],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[37],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[38],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[39],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[3],0xa0000000 0x00000010 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[40],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[41],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[42],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[43],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[44],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[45],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[46],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[47],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[48],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[49],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[4],0xa0000000 0x00000010 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[50],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[51],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[52],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[53],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[54],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[55],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[56],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[57],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[58],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[59],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[5],0xa0000000 0x00000010 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[60],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[61],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[62],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[63],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[64],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[65],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[66],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[67],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[68],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[69],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[6],0x50000000 0x00000010 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[70],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[71],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[72],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[73],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[74],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[75],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[76],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[77],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[78],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[79],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[7],0x90003c00 0x00000011 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[80],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[81],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[82],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[83],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[84],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[85],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[86],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[87],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[88],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[89],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[8],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[90],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[91],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[92],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[93],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[94],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[95],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[96],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[97],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[98],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[99],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS0[9],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[0],0xa0000000 0x00000010 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[100],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[101],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[102],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[103],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[104],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[105],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[106],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[107],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[108],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[109],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[10],0xa0000000 0x00000010 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[110],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[111],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[112],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[113],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[114],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[115],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[116],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[117],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[118],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[119],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[11],0xa0000000 0x00000010 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[120],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[121],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[122],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[123],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[124],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[125],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[126],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[127],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[12],0xa0000000 0x00000010 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[13],0xa0000000 0x00000010 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[14],0xa0000000 0x00000010 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[15],0xa0000000 0x00000010 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[16],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[17],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[18],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[19],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[1],0xa0000000 0x00000010 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[20],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[21],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[22],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[23],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[24],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[25],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[26],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[27],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[28],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[29],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[2],0xa0000000 0x00000010 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[30],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[31],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[32],0xa0000000 0x00000010 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[33],0xa0000000 0x00000010 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[34],0xa0000000 0x00000010 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[35],0xa0000000 0x00000010 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[36],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[37],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[38],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[39],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[3],0xa0000000 0x00000010 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[40],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[41],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[42],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[43],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[44],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[45],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[46],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[47],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[48],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[49],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[4],0xa0000000 0x00000010 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[50],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[51],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[52],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[53],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[54],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[55],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[56],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[57],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[58],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[59],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[5],0xa0000000 0x00000010 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[60],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[61],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[62],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[63],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[64],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[65],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[66],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[67],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[68],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[69],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[6],0x50000000 0x00000010 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[70],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[71],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[72],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[73],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[74],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[75],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[76],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[77],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[78],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[79],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[7],0x90003c00 0x00000011 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[80],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[81],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[82],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[83],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[84],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[85],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[86],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[87],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[88],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[89],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[8],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[90],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[91],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[92],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[93],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[94],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[95],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[96],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[97],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[98],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[99],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS1[9],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[0],0xa0000000 0x00000010 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[100],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[101],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[102],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[103],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[104],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[105],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[106],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[107],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[108],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[109],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[10],0xa0000000 0x00000010 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[110],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[111],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[112],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[113],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[114],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[115],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[116],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[117],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[118],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[119],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[11],0xa0000000 0x00000010 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[120],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[121],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[122],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[123],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[124],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[125],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[126],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[127],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[12],0xa0000000 0x00000010 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[13],0xa0000000 0x00000010 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[14],0xa0000000 0x00000010 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[15],0xa0000000 0x00000010 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[16],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[17],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[18],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[19],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[1],0xa0000000 0x00000010 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[20],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[21],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[22],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[23],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[24],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[25],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[26],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[27],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[28],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[29],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[2],0xa0000000 0x00000010 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[30],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[31],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[32],0xa0000000 0x00000010 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[33],0xa0000000 0x00000010 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[34],0xa0000000 0x00000010 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[35],0xa0000000 0x00000010 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[36],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[37],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[38],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[39],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[3],0xa0000000 0x00000010 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[40],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[41],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[42],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[43],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[44],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[45],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[46],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[47],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[48],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[49],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[4],0xa0000000 0x00000010 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[50],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[51],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[52],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[53],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[54],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[55],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[56],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[57],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[58],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[59],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[5],0xa0000000 0x00000010 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[60],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[61],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[62],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[63],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[64],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[65],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[66],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[67],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[68],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[69],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[6],0x50000000 0x00000010 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[70],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[71],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[72],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[73],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[74],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[75],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[76],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[77],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[78],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[79],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[7],0x90003c00 0x00000011 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[80],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[81],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[82],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[83],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[84],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[85],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[86],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[87],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[88],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[89],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[8],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[90],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[91],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[92],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[93],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[94],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[95],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[96],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[97],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[98],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[99],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS2[9],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[0],0xa0000000 0x00000010 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[100],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[101],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[102],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[103],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[104],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[105],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[106],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[107],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[108],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[109],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[10],0xa0000000 0x00000010 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[110],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[111],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[112],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[113],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[114],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[115],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[116],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[117],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[118],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[119],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[11],0xa0000000 0x00000010 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[120],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[121],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[122],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[123],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[124],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[125],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[126],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[127],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[12],0xa0000000 0x00000010 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[13],0xa0000000 0x00000010 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[14],0xa0000000 0x00000010 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[15],0xa0000000 0x00000010 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[16],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[17],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[18],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[19],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[1],0xa0000000 0x00000010 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[20],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[21],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[22],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[23],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[24],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[25],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[26],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[27],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[28],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[29],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[2],0xa0000000 0x00000010 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[30],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[31],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[32],0xa0000000 0x00000010 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[33],0xa0000000 0x00000010 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[34],0xa0000000 0x00000010 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[35],0xa0000000 0x00000010 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[36],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[37],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[38],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[39],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[3],0xa0000000 0x00000010 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[40],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[41],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[42],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[43],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[44],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[45],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[46],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[47],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[48],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[49],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[4],0xa0000000 0x00000010 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[50],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[51],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[52],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[53],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[54],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[55],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[56],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[57],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[58],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[59],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[5],0xa0000000 0x00000010 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[60],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[61],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[62],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[63],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[64],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[65],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[66],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[67],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[68],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[69],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[6],0x50000000 0x00000010 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[70],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[71],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[72],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[73],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[74],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[75],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[76],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[77],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[78],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[79],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[7],0x90003c00 0x00000011 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[80],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[81],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[82],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[83],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[84],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[85],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[86],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[87],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[88],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[89],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[8],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[90],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[91],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[92],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[93],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[94],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[95],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[96],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[97],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[98],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[99],0x00000000 0x00000000 +mem,IPS_EMPTY_Q_CRBAL_TH.IPS3[9],0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[0],0x00000000 0x00280005 0x0000b140 +mem,IPS_QSIZE_TH.IPS0[100],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[101],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[102],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[103],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[104],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[105],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[106],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[107],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[108],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[109],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[10],0x00000000 0x00280005 0x0000b140 +mem,IPS_QSIZE_TH.IPS0[110],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[111],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[112],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[113],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[114],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[115],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[116],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[117],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[118],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[119],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[11],0x00000000 0x00280005 0x0000b140 +mem,IPS_QSIZE_TH.IPS0[120],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[121],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[122],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[123],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[124],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[125],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[126],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[127],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[12],0x00000000 0x00280005 0x0000b140 +mem,IPS_QSIZE_TH.IPS0[13],0x00000000 0x00280005 0x0000b140 +mem,IPS_QSIZE_TH.IPS0[14],0x40000000 0x00320006 0x0000b190 +mem,IPS_QSIZE_TH.IPS0[15],0x00000000 0x0050000a 0x0000b280 +mem,IPS_QSIZE_TH.IPS0[16],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[17],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[18],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[19],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[1],0x00000000 0x00280005 0x0000b140 +mem,IPS_QSIZE_TH.IPS0[20],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[21],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[22],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[23],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[24],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[25],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[26],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[27],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[28],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[29],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[2],0x40000000 0x00320006 0x0000b190 +mem,IPS_QSIZE_TH.IPS0[30],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[31],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[32],0x00000000 0x00280005 0x0000b140 +mem,IPS_QSIZE_TH.IPS0[33],0x00000000 0x00280005 0x0000b140 +mem,IPS_QSIZE_TH.IPS0[34],0x00000000 0x0050000a 0x0000b280 +mem,IPS_QSIZE_TH.IPS0[35],0x00000000 0x00280005 0x0000b140 +mem,IPS_QSIZE_TH.IPS0[36],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[37],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[38],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[39],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[3],0xc0000000 0x00460008 0x0000b230 +mem,IPS_QSIZE_TH.IPS0[40],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[41],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[42],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[43],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[44],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[45],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[46],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[47],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[48],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[49],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[4],0x00000000 0x0078000f 0x0000b3c0 +mem,IPS_QSIZE_TH.IPS0[50],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[51],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[52],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[53],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[54],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[55],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[56],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[57],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[58],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[59],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[5],0x40000000 0x00320006 0x0000b190 +mem,IPS_QSIZE_TH.IPS0[60],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[61],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[62],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[63],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[64],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[65],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[66],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[67],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[68],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[69],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[6],0xc0000000 0x006e000d 0x0000b370 +mem,IPS_QSIZE_TH.IPS0[70],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[71],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[72],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[73],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[74],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[75],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[76],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[77],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[78],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[79],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[7],0x20046400 0x01190023 0x0000b8c8 +mem,IPS_QSIZE_TH.IPS0[80],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[81],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[82],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[83],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[84],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[85],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[86],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[87],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[88],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[89],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[8],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[90],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[91],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[92],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[93],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[94],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[95],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[96],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[97],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[98],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[99],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS0[9],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[0],0x00000000 0x00280005 0x0000b140 +mem,IPS_QSIZE_TH.IPS1[100],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[101],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[102],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[103],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[104],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[105],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[106],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[107],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[108],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[109],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[10],0x00000000 0x00280005 0x0000b140 +mem,IPS_QSIZE_TH.IPS1[110],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[111],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[112],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[113],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[114],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[115],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[116],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[117],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[118],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[119],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[11],0x00000000 0x00280005 0x0000b140 +mem,IPS_QSIZE_TH.IPS1[120],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[121],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[122],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[123],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[124],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[125],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[126],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[127],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[12],0x00000000 0x00280005 0x0000b140 +mem,IPS_QSIZE_TH.IPS1[13],0x00000000 0x00280005 0x0000b140 +mem,IPS_QSIZE_TH.IPS1[14],0x40000000 0x00320006 0x0000b190 +mem,IPS_QSIZE_TH.IPS1[15],0x00000000 0x0050000a 0x0000b280 +mem,IPS_QSIZE_TH.IPS1[16],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[17],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[18],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[19],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[1],0x00000000 0x00280005 0x0000b140 +mem,IPS_QSIZE_TH.IPS1[20],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[21],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[22],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[23],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[24],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[25],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[26],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[27],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[28],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[29],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[2],0x40000000 0x00320006 0x0000b190 +mem,IPS_QSIZE_TH.IPS1[30],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[31],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[32],0x00000000 0x00280005 0x0000b140 +mem,IPS_QSIZE_TH.IPS1[33],0x00000000 0x00280005 0x0000b140 +mem,IPS_QSIZE_TH.IPS1[34],0x00000000 0x0050000a 0x0000b280 +mem,IPS_QSIZE_TH.IPS1[35],0x00000000 0x00280005 0x0000b140 +mem,IPS_QSIZE_TH.IPS1[36],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[37],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[38],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[39],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[3],0xc0000000 0x00460008 0x0000b230 +mem,IPS_QSIZE_TH.IPS1[40],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[41],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[42],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[43],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[44],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[45],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[46],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[47],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[48],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[49],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[4],0x00000000 0x0078000f 0x0000b3c0 +mem,IPS_QSIZE_TH.IPS1[50],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[51],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[52],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[53],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[54],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[55],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[56],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[57],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[58],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[59],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[5],0x40000000 0x00320006 0x0000b190 +mem,IPS_QSIZE_TH.IPS1[60],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[61],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[62],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[63],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[64],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[65],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[66],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[67],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[68],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[69],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[6],0xc0000000 0x006e000d 0x0000b370 +mem,IPS_QSIZE_TH.IPS1[70],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[71],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[72],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[73],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[74],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[75],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[76],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[77],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[78],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[79],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[7],0x20046400 0x01190023 0x0000b8c8 +mem,IPS_QSIZE_TH.IPS1[80],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[81],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[82],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[83],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[84],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[85],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[86],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[87],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[88],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[89],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[8],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[90],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[91],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[92],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[93],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[94],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[95],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[96],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[97],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[98],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[99],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS1[9],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[0],0x00000000 0x00280005 0x0000b140 +mem,IPS_QSIZE_TH.IPS2[100],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[101],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[102],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[103],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[104],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[105],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[106],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[107],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[108],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[109],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[10],0x00000000 0x00280005 0x0000b140 +mem,IPS_QSIZE_TH.IPS2[110],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[111],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[112],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[113],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[114],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[115],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[116],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[117],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[118],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[119],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[11],0x00000000 0x00280005 0x0000b140 +mem,IPS_QSIZE_TH.IPS2[120],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[121],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[122],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[123],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[124],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[125],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[126],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[127],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[12],0x00000000 0x00280005 0x0000b140 +mem,IPS_QSIZE_TH.IPS2[13],0x00000000 0x00280005 0x0000b140 +mem,IPS_QSIZE_TH.IPS2[14],0x40000000 0x00320006 0x0000b190 +mem,IPS_QSIZE_TH.IPS2[15],0x00000000 0x0050000a 0x0000b280 +mem,IPS_QSIZE_TH.IPS2[16],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[17],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[18],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[19],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[1],0x00000000 0x00280005 0x0000b140 +mem,IPS_QSIZE_TH.IPS2[20],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[21],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[22],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[23],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[24],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[25],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[26],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[27],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[28],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[29],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[2],0x40000000 0x00320006 0x0000b190 +mem,IPS_QSIZE_TH.IPS2[30],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[31],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[32],0x00000000 0x00280005 0x0000b140 +mem,IPS_QSIZE_TH.IPS2[33],0x00000000 0x00280005 0x0000b140 +mem,IPS_QSIZE_TH.IPS2[34],0x00000000 0x0050000a 0x0000b280 +mem,IPS_QSIZE_TH.IPS2[35],0x00000000 0x00280005 0x0000b140 +mem,IPS_QSIZE_TH.IPS2[36],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[37],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[38],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[39],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[3],0xc0000000 0x00460008 0x0000b230 +mem,IPS_QSIZE_TH.IPS2[40],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[41],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[42],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[43],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[44],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[45],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[46],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[47],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[48],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[49],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[4],0x00000000 0x0078000f 0x0000b3c0 +mem,IPS_QSIZE_TH.IPS2[50],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[51],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[52],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[53],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[54],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[55],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[56],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[57],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[58],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[59],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[5],0x40000000 0x00320006 0x0000b190 +mem,IPS_QSIZE_TH.IPS2[60],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[61],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[62],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[63],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[64],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[65],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[66],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[67],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[68],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[69],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[6],0xc0000000 0x006e000d 0x0000b370 +mem,IPS_QSIZE_TH.IPS2[70],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[71],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[72],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[73],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[74],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[75],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[76],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[77],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[78],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[79],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[7],0x20046400 0x01190023 0x0000b8c8 +mem,IPS_QSIZE_TH.IPS2[80],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[81],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[82],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[83],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[84],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[85],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[86],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[87],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[88],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[89],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[8],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[90],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[91],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[92],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[93],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[94],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[95],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[96],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[97],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[98],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[99],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS2[9],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[0],0x00000000 0x00280005 0x0000b140 +mem,IPS_QSIZE_TH.IPS3[100],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[101],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[102],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[103],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[104],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[105],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[106],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[107],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[108],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[109],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[10],0x00000000 0x00280005 0x0000b140 +mem,IPS_QSIZE_TH.IPS3[110],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[111],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[112],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[113],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[114],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[115],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[116],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[117],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[118],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[119],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[11],0x00000000 0x00280005 0x0000b140 +mem,IPS_QSIZE_TH.IPS3[120],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[121],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[122],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[123],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[124],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[125],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[126],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[127],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[12],0x00000000 0x00280005 0x0000b140 +mem,IPS_QSIZE_TH.IPS3[13],0x00000000 0x00280005 0x0000b140 +mem,IPS_QSIZE_TH.IPS3[14],0x40000000 0x00320006 0x0000b190 +mem,IPS_QSIZE_TH.IPS3[15],0x00000000 0x0050000a 0x0000b280 +mem,IPS_QSIZE_TH.IPS3[16],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[17],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[18],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[19],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[1],0x00000000 0x00280005 0x0000b140 +mem,IPS_QSIZE_TH.IPS3[20],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[21],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[22],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[23],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[24],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[25],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[26],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[27],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[28],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[29],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[2],0x40000000 0x00320006 0x0000b190 +mem,IPS_QSIZE_TH.IPS3[30],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[31],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[32],0x00000000 0x00280005 0x0000b140 +mem,IPS_QSIZE_TH.IPS3[33],0x00000000 0x00280005 0x0000b140 +mem,IPS_QSIZE_TH.IPS3[34],0x00000000 0x0050000a 0x0000b280 +mem,IPS_QSIZE_TH.IPS3[35],0x00000000 0x00280005 0x0000b140 +mem,IPS_QSIZE_TH.IPS3[36],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[37],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[38],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[39],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[3],0xc0000000 0x00460008 0x0000b230 +mem,IPS_QSIZE_TH.IPS3[40],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[41],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[42],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[43],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[44],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[45],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[46],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[47],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[48],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[49],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[4],0x00000000 0x0078000f 0x0000b3c0 +mem,IPS_QSIZE_TH.IPS3[50],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[51],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[52],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[53],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[54],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[55],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[56],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[57],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[58],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[59],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[5],0x40000000 0x00320006 0x0000b190 +mem,IPS_QSIZE_TH.IPS3[60],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[61],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[62],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[63],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[64],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[65],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[66],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[67],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[68],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[69],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[6],0xc0000000 0x006e000d 0x0000b370 +mem,IPS_QSIZE_TH.IPS3[70],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[71],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[72],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[73],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[74],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[75],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[76],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[77],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[78],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[79],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[7],0x20046400 0x01190023 0x0000b8c8 +mem,IPS_QSIZE_TH.IPS3[80],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[81],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[82],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[83],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[84],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[85],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[86],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[87],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[88],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[89],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[8],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[90],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[91],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[92],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[93],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[94],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[95],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[96],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[97],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[98],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[99],0x00000000 0x00000000 0x00000000 +mem,IPS_QSIZE_TH.IPS3[9],0x00000000 0x00000000 0x00000000 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[0],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1000],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1001],0x000012cc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1002],0x00001c32 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1003],0x00002598 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1004],0x00002efe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1005],0x00003864 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1006],0x000041ca +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1007],0x00004b30 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1008],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1009],0x000012a6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[100],0x0001e981 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1010],0x00001bf9 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1011],0x0000254c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1012],0x00002e9f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1013],0x000037f2 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1014],0x00004145 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1015],0x00004a98 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1016],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1017],0x00001281 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1018],0x00001bc1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1019],0x00002501 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[101],0x00024b68 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1020],0x00002e41 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1021],0x00003781 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1022],0x000040c1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1023],0x00004a01 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1024],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1025],0x0000125c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1026],0x00001b89 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1027],0x000024b7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1028],0x00002de4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1029],0x00003712 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[102],0x0002ad4f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1030],0x00004040 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1031],0x0000496d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1032],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1033],0x00001237 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1034],0x00001b53 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1035],0x0000246e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1036],0x00002d89 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1037],0x000036a5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1038],0x00003fc0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1039],0x000048dc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[103],0x00030f36 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1040],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1041],0x00001213 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1042],0x00001b1d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1043],0x00002426 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1044],0x00002d30 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1045],0x00003639 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1046],0x00003f43 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1047],0x0000484c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1048],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1049],0x000011f0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[104],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1050],0x00001ae8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1051],0x000023e0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1052],0x00002cd7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1053],0x000035cf +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1054],0x00003ec7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1055],0x000047bf +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1056],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1057],0x000011cd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1058],0x00001ab4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1059],0x0000239a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[105],0x0000b4be +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1060],0x00002c80 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1061],0x00003567 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1062],0x00003e4d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1063],0x00004734 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1064],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1065],0x000011ab +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1066],0x00001a80 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1067],0x00002356 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1068],0x00002c2b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1069],0x00003500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[106],0x00010f1c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1070],0x00003dd5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1071],0x000046ab +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1072],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1073],0x00001189 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1074],0x00001a4e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1075],0x00002312 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1076],0x00002bd6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1077],0x0000349b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1078],0x00003d5f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1079],0x00004624 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[107],0x0001697b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1080],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1081],0x00001168 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1082],0x00001a1c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1083],0x000022d0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1084],0x00002b83 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1085],0x00003437 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1086],0x00003ceb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1087],0x0000459f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1088],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1089],0x00001147 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[108],0x0001c3d9 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1090],0x000019eb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1091],0x0000228e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1092],0x00002b31 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1093],0x000033d5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1094],0x00003c78 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1095],0x0000451c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1096],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1097],0x00001127 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1098],0x000019ba +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1099],0x0000224d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[109],0x00021e3a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[10],0x000dc4bc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1100],0x00002ae1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1101],0x00003374 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1102],0x00003c07 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1103],0x0000449a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1104],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1105],0x00001107 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1106],0x0000198b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1107],0x0000220e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1108],0x00002a91 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1109],0x00003315 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[110],0x00027898 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1110],0x00003b98 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1111],0x0000441b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1112],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1113],0x000010e8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1114],0x0000195b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1115],0x000021cf +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1116],0x00002a43 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1117],0x000032b6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1118],0x00003b2a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1119],0x0000439e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[111],0x0002d2f5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1120],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1121],0x000010c9 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1122],0x0000192d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1123],0x00002191 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1124],0x000029f6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1125],0x0000325a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1126],0x00003abe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1127],0x00004322 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1128],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1129],0x000010aa +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[112],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1130],0x000018ff +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1131],0x00002154 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1132],0x000029a9 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1133],0x000031fe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1134],0x00003a53 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1135],0x000042a8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1136],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1137],0x0000108c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1138],0x000018d2 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1139],0x00002118 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[113],0x0000a7d5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1140],0x0000295e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1141],0x000031a4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1142],0x000039ea +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1143],0x00004230 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1144],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1145],0x0000106f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1146],0x000018a6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1147],0x000020dd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1148],0x00002914 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1149],0x0000314b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[114],0x0000fbbf +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1150],0x00003982 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1151],0x000041ba +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1152],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1153],0x00001052 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1154],0x0000187a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1155],0x000020a3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1156],0x000028cb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1157],0x000030f4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1158],0x0000391c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1159],0x00004145 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[115],0x00014faa +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1160],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1161],0x00001035 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1162],0x0000184f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1163],0x00002069 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1164],0x00002883 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1165],0x0000309d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1166],0x000038b7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1167],0x000040d2 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1168],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1169],0x00001018 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[116],0x0001a394 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1170],0x00001824 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1171],0x00002030 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1172],0x0000283c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1173],0x00003048 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1174],0x00003854 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1175],0x00004060 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1176],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1177],0x00000ffc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1178],0x000017fa +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1179],0x00001ff8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[117],0x0001f77d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1180],0x000027f6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1181],0x00002ff4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1182],0x000037f2 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1183],0x00003ff0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1184],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1185],0x00000fe1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1186],0x000017d1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1187],0x00001fc1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1188],0x000027b1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1189],0x00002fa1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[118],0x00024b68 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1190],0x00003791 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1191],0x00003f81 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1192],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1193],0x00000fc5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1194],0x000017a8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1195],0x00001f8a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1196],0x0000276d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1197],0x00002f4f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1198],0x00003732 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1199],0x00003f14 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[119],0x00029f55 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[11],0x000fffff +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1200],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1201],0x00000faa +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1202],0x0000177f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1203],0x00001f54 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1204],0x00002729 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1205],0x00002efe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1206],0x000036d3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1207],0x00003ea8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1208],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1209],0x00000f90 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[120],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1210],0x00001758 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1211],0x00001f1f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1212],0x000026e7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1213],0x00002eaf +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1214],0x00003676 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1215],0x00003e3e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1216],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1217],0x00000f76 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1218],0x00001730 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1219],0x00001eeb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[121],0x00009ca4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1220],0x000026a6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1221],0x00002e60 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1222],0x0000361b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1223],0x00003dd5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1224],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1225],0x00000f5c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1226],0x0000170a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1227],0x00001eb7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1228],0x00002665 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1229],0x00002e13 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[122],0x0000eaf6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1230],0x000035c0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1231],0x00003d6e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1232],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1233],0x00000f42 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1234],0x000016e3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1235],0x00001e84 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1236],0x00002625 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1237],0x00002dc6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1238],0x00003567 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1239],0x00003d08 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[123],0x00013948 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1240],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1241],0x00000f29 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1242],0x000016bd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1243],0x00001e52 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1244],0x000025e6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1245],0x00002d7a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1246],0x0000350f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1247],0x00003ca3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1248],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1249],0x00000f10 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[124],0x0001879b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1250],0x00001698 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1251],0x00001e20 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1252],0x000025a8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1253],0x00002d30 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1254],0x000034b8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1255],0x00003c40 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1256],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1257],0x00000ef8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1258],0x00001673 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1259],0x00001def +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[125],0x0001d5ed +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1260],0x0000256a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1261],0x00002ce6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1262],0x00003462 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1263],0x00003bdd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1264],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1265],0x00000edf +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1266],0x0000164f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1267],0x00001dbe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1268],0x0000252e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1269],0x00002c9d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[126],0x0002243f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1270],0x0000340d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1271],0x00003b7c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1272],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1273],0x00000ec8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1274],0x0000162b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1275],0x00001d8f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1276],0x000024f2 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1277],0x00002c56 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1278],0x000033b9 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1279],0x00003b1d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[127],0x00027292 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1280],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1281],0x00000eb0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1282],0x00001608 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1283],0x00001d5f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1284],0x000024b7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1285],0x00002c0f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1286],0x00003366 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1287],0x00003abe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[128],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[129],0x000092da +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[12],0x000fffff +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[130],0x0000dc47 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[131],0x000125b4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[132],0x00016f21 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[133],0x0001b88d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[134],0x000201fb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[135],0x00024b68 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[136],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[137],0x00008a37 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[138],0x0000cf52 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[139],0x0001146d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[13],0x000fffff +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[140],0x00015988 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[141],0x00019ea4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[142],0x0001e3bf +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[143],0x000228da +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[144],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[145],0x00008289 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[146],0x0000c3cd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[147],0x00010512 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[148],0x00014656 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[149],0x0001879b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[14],0x000fffff +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[150],0x0001c8df +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[151],0x00020a23 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[152],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[153],0x00007baa +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[154],0x0000b97f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[155],0x0000f754 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[156],0x00013529 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[157],0x000172fe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[158],0x0001b0d4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[159],0x0001eea9 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[15],0x000fffff +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[160],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[161],0x0000757b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[162],0x0000b039 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[163],0x0000eaf6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[164],0x000125b4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[165],0x00016072 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[166],0x00019b30 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[167],0x0001d5ed +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[168],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[169],0x00006fe3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[16],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[170],0x0000a7d5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[171],0x0000dfc6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[172],0x000117b8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[173],0x00014faa +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[174],0x0001879b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[175],0x0001bf8c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[176],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[177],0x00006acd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[178],0x0000a034 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[179],0x0000d59a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[17],0x000496d0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[180],0x00010b01 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[181],0x00014067 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[182],0x000175ce +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[183],0x0001ab34 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[184],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[185],0x00006629 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[186],0x0000993d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[187],0x0000cc51 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[188],0x0000ff65 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[189],0x00013279 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[18],0x0006e241 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[190],0x0001658e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[191],0x000198a2 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[192],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[193],0x000061e7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[194],0x000092da +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[195],0x0000c3cd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[196],0x0000f4c1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[197],0x000125b4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[198],0x000156a8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[199],0x0001879b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[19],0x00092da0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[1],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[200],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[201],0x00005dfc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[202],0x00008cfa +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[203],0x0000bbf8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[204],0x0000eaf6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[205],0x000119f4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[206],0x000148f3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[207],0x000177f1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[208],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[209],0x00005a5f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[20],0x000b7937 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[210],0x0000878e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[211],0x0000b4be +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[212],0x0000e1ed +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[213],0x00010f1c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[214],0x00013c4c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[215],0x0001697b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[216],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[217],0x00005706 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[218],0x00008289 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[219],0x0000ae0c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[21],0x000dc4bc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[220],0x0000d98f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[221],0x00010512 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[222],0x00013095 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[223],0x00015c17 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[224],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[225],0x000053eb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[226],0x00007de0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[227],0x0000a7d5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[228],0x0000d1ca +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[229],0x0000fbbf +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[22],0x000fffff +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[230],0x000125b4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[231],0x00014faa +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[232],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[233],0x00005106 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[234],0x00007989 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[235],0x0000a20b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[236],0x0000ca8e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[237],0x0000f311 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[238],0x00011b93 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[239],0x00014416 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[23],0x000fffff +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[240],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[241],0x00004e52 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[242],0x0000757b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[243],0x00009ca4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[244],0x0000c3cd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[245],0x0000eaf6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[246],0x0001121f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[247],0x00013948 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[248],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[249],0x00004bcc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[24],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[250],0x000071b1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[251],0x00009797 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[252],0x0000bd7c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[253],0x0000e362 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[254],0x00010947 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[255],0x00012f2d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[256],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[257],0x0000496d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[258],0x00006e24 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[259],0x000092da +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[25],0x00030f36 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[260],0x0000b790 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[261],0x0000dc47 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[262],0x000100fd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[263],0x000125b4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[264],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[265],0x00004734 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[266],0x00006acd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[267],0x00008e67 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[268],0x0000b200 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[269],0x0000d59a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[26],0x000496d0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[270],0x0000f934 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[271],0x00011cce +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[272],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[273],0x0000451c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[274],0x000067a9 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[275],0x00008a37 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[276],0x0000acc4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[277],0x0000cf52 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[278],0x0000f1df +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[279],0x0001146d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[27],0x00061e76 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[280],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[281],0x00004322 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[282],0x000064b3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[283],0x00008644 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[284],0x0000a7d5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[285],0x0000c965 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[286],0x0000eaf6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[287],0x00010c87 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[288],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[289],0x00004145 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[28],0x0007a613 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[290],0x000061e7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[291],0x00008289 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[292],0x0000a32b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[293],0x0000c3cd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[294],0x0000e46f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[295],0x00010512 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[296],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[297],0x00003f81 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[298],0x00005f42 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[299],0x00007f02 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[29],0x00092da0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[2],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[300],0x00009ec2 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[301],0x0000be83 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[302],0x0000de43 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[303],0x0000fe04 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[304],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[305],0x00003dd5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[306],0x00005cc0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[307],0x00007baa +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[308],0x00009a95 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[309],0x0000b97f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[30],0x000ab53a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[310],0x0000d86a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[311],0x0000f754 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[312],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[313],0x00003c40 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[314],0x00005a5f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[315],0x0000787f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[316],0x0000969e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[317],0x0000b4be +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[318],0x0000d2dd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[319],0x0000f0fd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[31],0x000c3ceb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[320],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[321],0x00003abe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[322],0x0000581d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[323],0x0000757b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[324],0x000092da +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[325],0x0000b039 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[326],0x0000cd98 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[327],0x0000eaf6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[328],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[329],0x0000394f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[32],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[330],0x000055f7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[331],0x0000729e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[332],0x00008f45 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[333],0x0000abed +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[334],0x0000c894 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[335],0x0000e53b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[336],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[337],0x000037f2 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[338],0x000053eb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[339],0x00006fe3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[33],0x00024b68 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[340],0x00008bdc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[341],0x0000a7d5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[342],0x0000c3cd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[343],0x0000dfc6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[344],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[345],0x000036a5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[346],0x000051f7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[347],0x00006d49 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[348],0x0000889b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[349],0x0000a3ed +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[34],0x0003711a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[350],0x0000bf40 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[351],0x0000da92 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[352],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[353],0x00003567 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[354],0x0000501a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[355],0x00006acd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[356],0x00008581 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[357],0x0000a034 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[358],0x0000bae7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[359],0x0000d59a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[35],0x000496d0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[360],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[361],0x00003437 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[362],0x00004e52 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[363],0x0000686e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[364],0x00008289 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[365],0x00009ca4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[366],0x0000b6c0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[367],0x0000d0db +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[368],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[369],0x00003315 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[36],0x0005bc88 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[370],0x00004c9f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[371],0x00006629 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[372],0x00007fb3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[373],0x0000993d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[374],0x0000b2c7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[375],0x0000cc51 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[376],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[377],0x000031fe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[378],0x00004afd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[379],0x000063fc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[37],0x0006e241 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[380],0x00007cfb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[381],0x000095fa +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[382],0x0000aef9 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[383],0x0000c7f8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[384],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[385],0x000030f4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[386],0x0000496d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[387],0x000061e7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[388],0x00007a61 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[389],0x000092da +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[38],0x000807ec +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[390],0x0000ab54 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[391],0x0000c3cd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[392],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[393],0x00002ff4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[394],0x000047ee +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[395],0x00005fe7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[396],0x000077e1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[397],0x00008fdb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[398],0x0000a7d5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[399],0x0000bfce +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[39],0x00092da0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[3],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[400],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[401],0x00002efe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[402],0x0000467d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[403],0x00005dfc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[404],0x0000757b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[405],0x00008cfa +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[406],0x0000a479 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[407],0x0000bbf8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[408],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[409],0x00002e13 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[40],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[410],0x0000451c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[411],0x00005c25 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[412],0x0000732e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[413],0x00008a37 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[414],0x0000a140 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[415],0x0000b849 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[416],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[417],0x00002d30 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[418],0x000043c7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[419],0x00005a5f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[41],0x0001d5ed +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[420],0x000070f7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[421],0x0000878e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[422],0x00009e26 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[423],0x0000b4be +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[424],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[425],0x00002c56 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[426],0x00004280 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[427],0x000058ab +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[428],0x00006ed5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[429],0x00008500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[42],0x0002c0e5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[430],0x00009b2a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[431],0x0000b155 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[432],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[433],0x00002b83 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[434],0x00004145 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[435],0x00005706 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[436],0x00006cc8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[437],0x00008289 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[438],0x0000984b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[439],0x0000ae0c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[43],0x0003abde +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[440],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[441],0x00002ab9 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[442],0x00004015 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[443],0x00005571 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[444],0x00006acd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[445],0x0000802a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[446],0x00009586 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[447],0x0000aae2 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[448],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[449],0x000029f6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[44],0x000496d0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[450],0x00003ef0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[451],0x000053eb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[452],0x000068e5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[453],0x00007de0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[454],0x000092da +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[455],0x0000a7d5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[456],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[457],0x00002939 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[458],0x00003dd5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[459],0x00005272 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[45],0x000581d3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[460],0x0000670e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[461],0x00007baa +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[462],0x00009047 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[463],0x0000a4e3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[464],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[465],0x00002883 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[466],0x00003cc4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[467],0x00005106 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[468],0x00006547 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[469],0x00007989 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[46],0x00066cbd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[470],0x00008dca +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[471],0x0000a20b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[472],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[473],0x000027d3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[474],0x00003bbd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[475],0x00004fa6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[476],0x00006390 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[477],0x00007779 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[478],0x00008b63 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[479],0x00009f4c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[47],0x000757cc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[480],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[481],0x00002729 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[482],0x00003abe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[483],0x00004e52 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[484],0x000061e7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[485],0x0000757b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[486],0x00008910 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[487],0x00009ca4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[488],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[489],0x00002685 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[48],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[490],0x000039c7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[491],0x00004d0a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[492],0x0000604c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[493],0x0000738e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[494],0x000086d1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[495],0x00009a13 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[496],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[497],0x000025e6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[498],0x000038d9 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[499],0x00004bcc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[49],0x0001879b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[4],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[500],0x00005ebe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[501],0x000071b1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[502],0x000084a4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[503],0x00009797 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[504],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[505],0x0000254c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[506],0x000037f2 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[507],0x00004a98 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[508],0x00005d3d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[509],0x00006fe3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[50],0x00024b68 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[510],0x00008289 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[511],0x0000952f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[512],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[513],0x000024b7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[514],0x00003712 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[515],0x0000496d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[516],0x00005bc8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[517],0x00006e24 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[518],0x0000807f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[519],0x000092da +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[51],0x00030f36 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[520],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[521],0x00002426 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[522],0x00003639 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[523],0x0000484c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[524],0x00005a5f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[525],0x00006c72 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[526],0x00007e85 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[527],0x00009098 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[528],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[529],0x0000239a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[52],0x0003d301 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[530],0x00003567 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[531],0x00004734 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[532],0x00005900 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[533],0x00006acd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[534],0x00007c9a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[535],0x00008e67 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[536],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[537],0x00002312 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[538],0x0000349b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[539],0x00004624 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[53],0x000496d0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[540],0x000057ac +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[541],0x00006935 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[542],0x00007abe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[543],0x00008c47 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[544],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[545],0x0000228e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[546],0x000033d5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[547],0x0000451c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[548],0x00005662 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[549],0x000067a9 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[54],0x00055a9d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[550],0x000078f0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[551],0x00008a37 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[552],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[553],0x0000220e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[554],0x00003315 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[555],0x0000441b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[556],0x00005522 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[557],0x00006629 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[558],0x0000772f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[559],0x00008836 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[55],0x00061e76 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[560],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[561],0x00002191 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[562],0x0000325a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[563],0x00004322 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[564],0x000053eb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[565],0x000064b3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[566],0x0000757b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[567],0x00008644 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[568],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[569],0x00002118 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[56],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[570],0x000031a4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[571],0x00004230 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[572],0x000052bc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[573],0x00006348 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[574],0x000073d4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[575],0x00008460 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[576],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[577],0x000020a3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[578],0x000030f4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[579],0x00004145 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[57],0x00014faa +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[580],0x00005196 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[581],0x000061e7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[582],0x00007238 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[583],0x00008289 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[584],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[585],0x00002030 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[586],0x00003048 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[587],0x00004060 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[588],0x00005078 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[589],0x00006090 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[58],0x0001f77d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[590],0x000070a7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[591],0x000080bf +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[592],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[593],0x00001fc1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[594],0x00002fa1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[595],0x00003f81 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[596],0x00004f61 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[597],0x00005f42 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[598],0x00006f22 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[599],0x00007f02 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[59],0x00029f55 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[5],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[600],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[601],0x00001f54 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[602],0x00002efe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[603],0x00003ea8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[604],0x00004e52 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[605],0x00005dfc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[606],0x00006da6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[607],0x00007d50 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[608],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[609],0x00001eeb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[60],0x0003472b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[610],0x00002e60 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[611],0x00003dd5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[612],0x00004d4b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[613],0x00005cc0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[614],0x00006c35 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[615],0x00007baa +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[616],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[617],0x00001e84 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[618],0x00002dc6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[619],0x00003d08 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[61],0x0003eeff +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[620],0x00004c4a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[621],0x00005b8c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[622],0x00006acd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[623],0x00007a0f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[624],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[625],0x00001e20 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[626],0x00002d30 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[627],0x00003c40 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[628],0x00004b4f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[629],0x00005a5f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[62],0x000496d0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[630],0x0000696f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[631],0x0000787f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[632],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[633],0x00001dbe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[634],0x00002c9d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[635],0x00003b7c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[636],0x00004a5b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[637],0x0000593a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[638],0x00006819 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[639],0x000076f8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[63],0x00053ea9 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[640],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[641],0x00001d5f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[642],0x00002c0f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[643],0x00003abe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[644],0x0000496d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[645],0x0000581d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[646],0x000066cc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[647],0x0000757b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[648],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[649],0x00001d02 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[64],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[650],0x00002b83 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[651],0x00003a04 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[652],0x00004885 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[653],0x00005706 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[654],0x00006587 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[655],0x00007408 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[656],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[657],0x00001ca8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[658],0x00002afb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[659],0x0000394f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[65],0x000125b4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[660],0x000047a3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[661],0x000055f7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[662],0x0000644a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[663],0x0000729e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[664],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[665],0x00001c4f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[666],0x00002a77 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[667],0x0000389e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[668],0x000046c6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[669],0x000054ed +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[66],0x0001b88d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[670],0x00006315 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[671],0x0000713c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[672],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[673],0x00001bf9 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[674],0x000029f6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[675],0x000037f2 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[676],0x000045ee +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[677],0x000053eb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[678],0x000061e7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[679],0x00006fe3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[67],0x00024b68 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[680],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[681],0x00001ba5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[682],0x00002977 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[683],0x00003749 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[684],0x0000451c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[685],0x000052ee +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[686],0x000060c0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[687],0x00006e92 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[688],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[689],0x00001b53 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[68],0x0002de44 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[690],0x000028fc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[691],0x000036a5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[692],0x0000444e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[693],0x000051f7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[694],0x00005fa0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[695],0x00006d49 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[696],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[697],0x00001b02 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[698],0x00002883 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[699],0x00003604 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[69],0x0003711a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[6],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[700],0x00004385 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[701],0x00005106 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[702],0x00005e87 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[703],0x00006c08 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[704],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[705],0x00001ab4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[706],0x0000280d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[707],0x00003567 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[708],0x000042c1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[709],0x0000501a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[70],0x000403f6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[710],0x00005d74 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[711],0x00006acd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[712],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[713],0x00001a67 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[714],0x0000279a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[715],0x000034cd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[716],0x00004201 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[717],0x00004f34 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[718],0x00005c67 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[719],0x0000699a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[71],0x000496d0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[720],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[721],0x00001a1c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[722],0x00002729 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[723],0x00003437 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[724],0x00004145 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[725],0x00004e52 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[726],0x00005b60 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[727],0x0000686e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[728],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[729],0x000019d2 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[72],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[730],0x000026bb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[731],0x000033a4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[732],0x0000408d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[733],0x00004d76 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[734],0x00005a5f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[735],0x00006748 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[736],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[737],0x0000198b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[738],0x00002650 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[739],0x00003315 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[73],0x00010512 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[740],0x00003fda +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[741],0x00004c9f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[742],0x00005964 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[743],0x00006629 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[744],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[745],0x00001944 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[746],0x000025e6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[747],0x00003288 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[748],0x00003f2a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[749],0x00004bcc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[74],0x0001879b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[750],0x0000586d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[751],0x0000650f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[752],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[753],0x000018ff +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[754],0x0000257f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[755],0x000031fe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[756],0x00003e7e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[757],0x00004afd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[758],0x0000577d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[759],0x000063fc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[75],0x00020a23 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[760],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[761],0x000018bc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[762],0x0000251a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[763],0x00003178 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[764],0x00003dd5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[765],0x00004a33 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[766],0x00005691 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[767],0x000062ef +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[768],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[769],0x0000187a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[76],0x00028cae +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[770],0x000024b7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[771],0x000030f4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[772],0x00003d30 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[773],0x0000496d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[774],0x000055aa +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[775],0x000061e7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[776],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[777],0x00001839 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[778],0x00002456 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[779],0x00003073 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[77],0x00030f36 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[780],0x00003c8f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[781],0x000048ac +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[782],0x000054c8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[783],0x000060e5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[784],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[785],0x000017fa +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[786],0x000023f7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[787],0x00002ff4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[788],0x00003bf1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[789],0x000047ee +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[78],0x000391be +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[790],0x000053eb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[791],0x00005fe7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[792],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[793],0x000017bc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[794],0x0000239a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[795],0x00002f78 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[796],0x00003b56 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[797],0x00004734 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[798],0x00005312 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[799],0x00005eef +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[79],0x00041445 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[7],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[800],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[801],0x0000177f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[802],0x0000233f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[803],0x00002efe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[804],0x00003abe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[805],0x0000467d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[806],0x0000523d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[807],0x00005dfc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[808],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[809],0x00001744 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[80],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[810],0x000022e6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[811],0x00002e87 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[812],0x00003a29 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[813],0x000045cb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[814],0x0000516c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[815],0x00005d0e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[816],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[817],0x0000170a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[818],0x0000228e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[819],0x00002e13 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[81],0x0000eaf6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[820],0x00003997 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[821],0x0000451c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[822],0x000050a0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[823],0x00005c25 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[824],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[825],0x000016d0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[826],0x00002238 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[827],0x00002da0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[828],0x00003908 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[829],0x00004470 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[82],0x00016072 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[830],0x00004fd8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[831],0x00005b40 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[832],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[833],0x00001698 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[834],0x000021e4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[835],0x00002d30 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[836],0x0000387c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[837],0x000043c7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[838],0x00004f13 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[839],0x00005a5f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[83],0x0001d5ed +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[840],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[841],0x00001661 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[842],0x00002191 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[843],0x00002cc2 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[844],0x000037f2 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[845],0x00004322 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[846],0x00004e52 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[847],0x00005983 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[848],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[849],0x0000162b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[84],0x00024b68 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[850],0x00002140 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[851],0x00002c56 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[852],0x0000376b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[853],0x00004280 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[854],0x00004d95 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[855],0x000058ab +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[856],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[857],0x000015f6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[858],0x000020f1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[859],0x00002beb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[85],0x0002c0e5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[860],0x000036e6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[861],0x000041e1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[862],0x00004cdc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[863],0x000057d6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[864],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[865],0x000015c2 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[866],0x000020a3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[867],0x00002b83 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[868],0x00003664 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[869],0x00004145 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[86],0x0003365f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[870],0x00004c25 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[871],0x00005706 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[872],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[873],0x0000158f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[874],0x00002056 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[875],0x00002b1d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[876],0x000035e4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[877],0x000040ab +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[878],0x00004b73 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[879],0x0000563a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[87],0x0003abde +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[880],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[881],0x0000155d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[882],0x0000200b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[883],0x00002ab9 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[884],0x00003567 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[885],0x00004015 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[886],0x00004ac3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[887],0x00005571 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[888],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[889],0x0000152b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[88],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[890],0x00001fc1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[891],0x00002a56 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[892],0x000034ec +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[893],0x00003f81 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[894],0x00004a17 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[895],0x000054ac +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[896],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[897],0x000014fb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[898],0x00001f78 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[899],0x000029f6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[89],0x0000d59a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[8],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[900],0x00003473 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[901],0x00003ef0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[902],0x0000496d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[903],0x000053eb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[904],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[905],0x000014cb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[906],0x00001f31 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[907],0x00002996 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[908],0x000033fc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[909],0x00003e61 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[90],0x00014067 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[910],0x000048c7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[911],0x0000532c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[912],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[913],0x0000149d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[914],0x00001eeb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[915],0x00002939 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[916],0x00003387 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[917],0x00003dd5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[918],0x00004824 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[919],0x00005272 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[91],0x0001ab34 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[920],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[921],0x0000146f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[922],0x00001ea6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[923],0x000028dd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[924],0x00003315 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[925],0x00003d4c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[926],0x00004783 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[927],0x000051ba +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[928],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[929],0x00001442 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[92],0x00021601 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[930],0x00001e62 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[931],0x00002883 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[932],0x000032a4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[933],0x00003cc4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[934],0x000046e5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[935],0x00005106 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[936],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[937],0x00001416 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[938],0x00001e20 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[939],0x0000282b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[93],0x000280ce +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[940],0x00003235 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[941],0x00003c40 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[942],0x0000464a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[943],0x00005055 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[944],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[945],0x000013ea +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[946],0x00001ddf +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[947],0x000027d3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[948],0x000031c8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[949],0x00003bbd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[94],0x0002eb9c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[950],0x000045b2 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[951],0x00004fa6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[952],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[953],0x000013bf +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[954],0x00001d9e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[955],0x0000277e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[956],0x0000315d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[957],0x00003b3c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[958],0x0000451c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[959],0x00004efb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[95],0x0003566b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[960],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[961],0x00001395 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[962],0x00001d5f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[963],0x00002729 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[964],0x000030f4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[965],0x00003abe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[966],0x00004488 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[967],0x00004e52 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[968],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[969],0x0000136c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[96],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[970],0x00001d21 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[971],0x000026d7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[972],0x0000308c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[973],0x00003a42 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[974],0x000043f7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[975],0x00004dad +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[976],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[977],0x00001343 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[978],0x00001ce4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[979],0x00002685 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[97],0x0000c3cd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[980],0x00003026 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[981],0x000039c7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[982],0x00004369 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[983],0x00004d0a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[984],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[985],0x0000131b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[986],0x00001ca8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[987],0x00002635 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[988],0x00002fc2 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[989],0x0000394f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[98],0x000125b4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[990],0x000042dc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[991],0x00004c69 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[992],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[993],0x000012f3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[994],0x00001c6d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[995],0x000025e6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[996],0x00002f5f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[997],0x000038d9 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[998],0x00004252 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[999],0x00004bcc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[99],0x0001879b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH0[9],0x00092da0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[0],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1000],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1001],0x000012cc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1002],0x00001c32 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1003],0x00002598 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1004],0x00002efe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1005],0x00003864 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1006],0x000041ca +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1007],0x00004b30 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1008],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1009],0x000012a6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[100],0x0001e981 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1010],0x00001bf9 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1011],0x0000254c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1012],0x00002e9f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1013],0x000037f2 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1014],0x00004145 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1015],0x00004a98 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1016],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1017],0x00001281 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1018],0x00001bc1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1019],0x00002501 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[101],0x00024b68 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1020],0x00002e41 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1021],0x00003781 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1022],0x000040c1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1023],0x00004a01 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1024],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1025],0x0000125c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1026],0x00001b89 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1027],0x000024b7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1028],0x00002de4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1029],0x00003712 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[102],0x0002ad4f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1030],0x00004040 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1031],0x0000496d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1032],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1033],0x00001237 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1034],0x00001b53 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1035],0x0000246e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1036],0x00002d89 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1037],0x000036a5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1038],0x00003fc0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1039],0x000048dc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[103],0x00030f36 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1040],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1041],0x00001213 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1042],0x00001b1d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1043],0x00002426 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1044],0x00002d30 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1045],0x00003639 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1046],0x00003f43 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1047],0x0000484c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1048],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1049],0x000011f0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[104],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1050],0x00001ae8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1051],0x000023e0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1052],0x00002cd7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1053],0x000035cf +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1054],0x00003ec7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1055],0x000047bf +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1056],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1057],0x000011cd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1058],0x00001ab4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1059],0x0000239a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[105],0x0000b4be +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1060],0x00002c80 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1061],0x00003567 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1062],0x00003e4d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1063],0x00004734 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1064],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1065],0x000011ab +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1066],0x00001a80 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1067],0x00002356 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1068],0x00002c2b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1069],0x00003500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[106],0x00010f1c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1070],0x00003dd5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1071],0x000046ab +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1072],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1073],0x00001189 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1074],0x00001a4e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1075],0x00002312 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1076],0x00002bd6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1077],0x0000349b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1078],0x00003d5f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1079],0x00004624 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[107],0x0001697b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1080],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1081],0x00001168 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1082],0x00001a1c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1083],0x000022d0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1084],0x00002b83 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1085],0x00003437 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1086],0x00003ceb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1087],0x0000459f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1088],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1089],0x00001147 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[108],0x0001c3d9 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1090],0x000019eb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1091],0x0000228e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1092],0x00002b31 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1093],0x000033d5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1094],0x00003c78 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1095],0x0000451c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1096],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1097],0x00001127 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1098],0x000019ba +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1099],0x0000224d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[109],0x00021e3a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[10],0x000dc4bc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1100],0x00002ae1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1101],0x00003374 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1102],0x00003c07 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1103],0x0000449a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1104],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1105],0x00001107 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1106],0x0000198b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1107],0x0000220e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1108],0x00002a91 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1109],0x00003315 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[110],0x00027898 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1110],0x00003b98 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1111],0x0000441b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1112],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1113],0x000010e8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1114],0x0000195b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1115],0x000021cf +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1116],0x00002a43 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1117],0x000032b6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1118],0x00003b2a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1119],0x0000439e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[111],0x0002d2f5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1120],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1121],0x000010c9 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1122],0x0000192d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1123],0x00002191 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1124],0x000029f6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1125],0x0000325a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1126],0x00003abe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1127],0x00004322 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1128],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1129],0x000010aa +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[112],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1130],0x000018ff +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1131],0x00002154 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1132],0x000029a9 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1133],0x000031fe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1134],0x00003a53 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1135],0x000042a8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1136],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1137],0x0000108c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1138],0x000018d2 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1139],0x00002118 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[113],0x0000a7d5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1140],0x0000295e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1141],0x000031a4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1142],0x000039ea +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1143],0x00004230 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1144],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1145],0x0000106f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1146],0x000018a6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1147],0x000020dd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1148],0x00002914 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1149],0x0000314b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[114],0x0000fbbf +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1150],0x00003982 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1151],0x000041ba +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1152],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1153],0x00001052 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1154],0x0000187a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1155],0x000020a3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1156],0x000028cb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1157],0x000030f4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1158],0x0000391c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1159],0x00004145 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[115],0x00014faa +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1160],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1161],0x00001035 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1162],0x0000184f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1163],0x00002069 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1164],0x00002883 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1165],0x0000309d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1166],0x000038b7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1167],0x000040d2 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1168],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1169],0x00001018 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[116],0x0001a394 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1170],0x00001824 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1171],0x00002030 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1172],0x0000283c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1173],0x00003048 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1174],0x00003854 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1175],0x00004060 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1176],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1177],0x00000ffc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1178],0x000017fa +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1179],0x00001ff8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[117],0x0001f77d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1180],0x000027f6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1181],0x00002ff4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1182],0x000037f2 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1183],0x00003ff0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1184],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1185],0x00000fe1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1186],0x000017d1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1187],0x00001fc1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1188],0x000027b1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1189],0x00002fa1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[118],0x00024b68 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1190],0x00003791 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1191],0x00003f81 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1192],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1193],0x00000fc5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1194],0x000017a8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1195],0x00001f8a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1196],0x0000276d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1197],0x00002f4f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1198],0x00003732 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1199],0x00003f14 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[119],0x00029f55 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[11],0x000fffff +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1200],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1201],0x00000faa +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1202],0x0000177f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1203],0x00001f54 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1204],0x00002729 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1205],0x00002efe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1206],0x000036d3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1207],0x00003ea8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1208],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1209],0x00000f90 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[120],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1210],0x00001758 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1211],0x00001f1f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1212],0x000026e7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1213],0x00002eaf +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1214],0x00003676 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1215],0x00003e3e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1216],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1217],0x00000f76 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1218],0x00001730 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1219],0x00001eeb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[121],0x00009ca4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1220],0x000026a6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1221],0x00002e60 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1222],0x0000361b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1223],0x00003dd5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1224],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1225],0x00000f5c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1226],0x0000170a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1227],0x00001eb7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1228],0x00002665 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1229],0x00002e13 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[122],0x0000eaf6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1230],0x000035c0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1231],0x00003d6e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1232],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1233],0x00000f42 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1234],0x000016e3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1235],0x00001e84 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1236],0x00002625 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1237],0x00002dc6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1238],0x00003567 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1239],0x00003d08 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[123],0x00013948 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1240],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1241],0x00000f29 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1242],0x000016bd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1243],0x00001e52 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1244],0x000025e6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1245],0x00002d7a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1246],0x0000350f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1247],0x00003ca3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1248],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1249],0x00000f10 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[124],0x0001879b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1250],0x00001698 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1251],0x00001e20 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1252],0x000025a8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1253],0x00002d30 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1254],0x000034b8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1255],0x00003c40 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1256],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1257],0x00000ef8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1258],0x00001673 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1259],0x00001def +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[125],0x0001d5ed +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1260],0x0000256a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1261],0x00002ce6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1262],0x00003462 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1263],0x00003bdd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1264],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1265],0x00000edf +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1266],0x0000164f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1267],0x00001dbe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1268],0x0000252e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1269],0x00002c9d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[126],0x0002243f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1270],0x0000340d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1271],0x00003b7c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1272],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1273],0x00000ec8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1274],0x0000162b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1275],0x00001d8f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1276],0x000024f2 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1277],0x00002c56 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1278],0x000033b9 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1279],0x00003b1d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[127],0x00027292 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1280],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1281],0x00000eb0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1282],0x00001608 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1283],0x00001d5f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1284],0x000024b7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1285],0x00002c0f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1286],0x00003366 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1287],0x00003abe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[128],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[129],0x000092da +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[12],0x000fffff +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[130],0x0000dc47 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[131],0x000125b4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[132],0x00016f21 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[133],0x0001b88d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[134],0x000201fb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[135],0x00024b68 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[136],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[137],0x00008a37 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[138],0x0000cf52 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[139],0x0001146d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[13],0x000fffff +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[140],0x00015988 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[141],0x00019ea4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[142],0x0001e3bf +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[143],0x000228da +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[144],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[145],0x00008289 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[146],0x0000c3cd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[147],0x00010512 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[148],0x00014656 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[149],0x0001879b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[14],0x000fffff +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[150],0x0001c8df +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[151],0x00020a23 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[152],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[153],0x00007baa +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[154],0x0000b97f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[155],0x0000f754 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[156],0x00013529 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[157],0x000172fe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[158],0x0001b0d4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[159],0x0001eea9 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[15],0x000fffff +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[160],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[161],0x0000757b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[162],0x0000b039 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[163],0x0000eaf6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[164],0x000125b4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[165],0x00016072 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[166],0x00019b30 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[167],0x0001d5ed +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[168],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[169],0x00006fe3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[16],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[170],0x0000a7d5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[171],0x0000dfc6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[172],0x000117b8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[173],0x00014faa +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[174],0x0001879b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[175],0x0001bf8c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[176],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[177],0x00006acd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[178],0x0000a034 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[179],0x0000d59a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[17],0x000496d0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[180],0x00010b01 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[181],0x00014067 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[182],0x000175ce +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[183],0x0001ab34 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[184],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[185],0x00006629 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[186],0x0000993d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[187],0x0000cc51 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[188],0x0000ff65 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[189],0x00013279 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[18],0x0006e241 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[190],0x0001658e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[191],0x000198a2 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[192],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[193],0x000061e7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[194],0x000092da +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[195],0x0000c3cd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[196],0x0000f4c1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[197],0x000125b4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[198],0x000156a8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[199],0x0001879b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[19],0x00092da0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[1],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[200],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[201],0x00005dfc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[202],0x00008cfa +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[203],0x0000bbf8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[204],0x0000eaf6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[205],0x000119f4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[206],0x000148f3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[207],0x000177f1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[208],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[209],0x00005a5f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[20],0x000b7937 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[210],0x0000878e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[211],0x0000b4be +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[212],0x0000e1ed +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[213],0x00010f1c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[214],0x00013c4c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[215],0x0001697b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[216],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[217],0x00005706 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[218],0x00008289 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[219],0x0000ae0c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[21],0x000dc4bc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[220],0x0000d98f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[221],0x00010512 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[222],0x00013095 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[223],0x00015c17 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[224],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[225],0x000053eb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[226],0x00007de0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[227],0x0000a7d5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[228],0x0000d1ca +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[229],0x0000fbbf +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[22],0x000fffff +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[230],0x000125b4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[231],0x00014faa +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[232],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[233],0x00005106 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[234],0x00007989 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[235],0x0000a20b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[236],0x0000ca8e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[237],0x0000f311 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[238],0x00011b93 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[239],0x00014416 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[23],0x000fffff +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[240],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[241],0x00004e52 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[242],0x0000757b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[243],0x00009ca4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[244],0x0000c3cd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[245],0x0000eaf6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[246],0x0001121f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[247],0x00013948 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[248],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[249],0x00004bcc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[24],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[250],0x000071b1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[251],0x00009797 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[252],0x0000bd7c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[253],0x0000e362 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[254],0x00010947 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[255],0x00012f2d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[256],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[257],0x0000496d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[258],0x00006e24 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[259],0x000092da +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[25],0x00030f36 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[260],0x0000b790 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[261],0x0000dc47 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[262],0x000100fd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[263],0x000125b4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[264],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[265],0x00004734 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[266],0x00006acd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[267],0x00008e67 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[268],0x0000b200 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[269],0x0000d59a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[26],0x000496d0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[270],0x0000f934 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[271],0x00011cce +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[272],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[273],0x0000451c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[274],0x000067a9 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[275],0x00008a37 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[276],0x0000acc4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[277],0x0000cf52 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[278],0x0000f1df +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[279],0x0001146d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[27],0x00061e76 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[280],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[281],0x00004322 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[282],0x000064b3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[283],0x00008644 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[284],0x0000a7d5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[285],0x0000c965 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[286],0x0000eaf6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[287],0x00010c87 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[288],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[289],0x00004145 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[28],0x0007a613 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[290],0x000061e7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[291],0x00008289 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[292],0x0000a32b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[293],0x0000c3cd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[294],0x0000e46f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[295],0x00010512 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[296],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[297],0x00003f81 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[298],0x00005f42 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[299],0x00007f02 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[29],0x00092da0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[2],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[300],0x00009ec2 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[301],0x0000be83 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[302],0x0000de43 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[303],0x0000fe04 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[304],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[305],0x00003dd5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[306],0x00005cc0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[307],0x00007baa +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[308],0x00009a95 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[309],0x0000b97f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[30],0x000ab53a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[310],0x0000d86a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[311],0x0000f754 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[312],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[313],0x00003c40 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[314],0x00005a5f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[315],0x0000787f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[316],0x0000969e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[317],0x0000b4be +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[318],0x0000d2dd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[319],0x0000f0fd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[31],0x000c3ceb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[320],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[321],0x00003abe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[322],0x0000581d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[323],0x0000757b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[324],0x000092da +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[325],0x0000b039 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[326],0x0000cd98 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[327],0x0000eaf6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[328],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[329],0x0000394f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[32],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[330],0x000055f7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[331],0x0000729e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[332],0x00008f45 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[333],0x0000abed +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[334],0x0000c894 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[335],0x0000e53b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[336],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[337],0x000037f2 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[338],0x000053eb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[339],0x00006fe3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[33],0x00024b68 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[340],0x00008bdc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[341],0x0000a7d5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[342],0x0000c3cd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[343],0x0000dfc6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[344],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[345],0x000036a5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[346],0x000051f7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[347],0x00006d49 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[348],0x0000889b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[349],0x0000a3ed +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[34],0x0003711a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[350],0x0000bf40 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[351],0x0000da92 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[352],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[353],0x00003567 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[354],0x0000501a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[355],0x00006acd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[356],0x00008581 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[357],0x0000a034 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[358],0x0000bae7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[359],0x0000d59a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[35],0x000496d0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[360],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[361],0x00003437 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[362],0x00004e52 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[363],0x0000686e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[364],0x00008289 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[365],0x00009ca4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[366],0x0000b6c0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[367],0x0000d0db +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[368],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[369],0x00003315 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[36],0x0005bc88 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[370],0x00004c9f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[371],0x00006629 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[372],0x00007fb3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[373],0x0000993d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[374],0x0000b2c7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[375],0x0000cc51 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[376],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[377],0x000031fe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[378],0x00004afd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[379],0x000063fc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[37],0x0006e241 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[380],0x00007cfb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[381],0x000095fa +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[382],0x0000aef9 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[383],0x0000c7f8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[384],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[385],0x000030f4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[386],0x0000496d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[387],0x000061e7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[388],0x00007a61 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[389],0x000092da +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[38],0x000807ec +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[390],0x0000ab54 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[391],0x0000c3cd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[392],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[393],0x00002ff4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[394],0x000047ee +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[395],0x00005fe7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[396],0x000077e1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[397],0x00008fdb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[398],0x0000a7d5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[399],0x0000bfce +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[39],0x00092da0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[3],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[400],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[401],0x00002efe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[402],0x0000467d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[403],0x00005dfc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[404],0x0000757b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[405],0x00008cfa +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[406],0x0000a479 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[407],0x0000bbf8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[408],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[409],0x00002e13 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[40],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[410],0x0000451c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[411],0x00005c25 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[412],0x0000732e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[413],0x00008a37 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[414],0x0000a140 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[415],0x0000b849 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[416],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[417],0x00002d30 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[418],0x000043c7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[419],0x00005a5f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[41],0x0001d5ed +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[420],0x000070f7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[421],0x0000878e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[422],0x00009e26 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[423],0x0000b4be +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[424],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[425],0x00002c56 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[426],0x00004280 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[427],0x000058ab +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[428],0x00006ed5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[429],0x00008500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[42],0x0002c0e5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[430],0x00009b2a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[431],0x0000b155 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[432],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[433],0x00002b83 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[434],0x00004145 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[435],0x00005706 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[436],0x00006cc8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[437],0x00008289 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[438],0x0000984b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[439],0x0000ae0c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[43],0x0003abde +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[440],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[441],0x00002ab9 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[442],0x00004015 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[443],0x00005571 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[444],0x00006acd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[445],0x0000802a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[446],0x00009586 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[447],0x0000aae2 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[448],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[449],0x000029f6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[44],0x000496d0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[450],0x00003ef0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[451],0x000053eb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[452],0x000068e5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[453],0x00007de0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[454],0x000092da +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[455],0x0000a7d5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[456],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[457],0x00002939 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[458],0x00003dd5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[459],0x00005272 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[45],0x000581d3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[460],0x0000670e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[461],0x00007baa +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[462],0x00009047 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[463],0x0000a4e3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[464],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[465],0x00002883 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[466],0x00003cc4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[467],0x00005106 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[468],0x00006547 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[469],0x00007989 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[46],0x00066cbd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[470],0x00008dca +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[471],0x0000a20b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[472],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[473],0x000027d3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[474],0x00003bbd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[475],0x00004fa6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[476],0x00006390 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[477],0x00007779 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[478],0x00008b63 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[479],0x00009f4c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[47],0x000757cc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[480],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[481],0x00002729 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[482],0x00003abe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[483],0x00004e52 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[484],0x000061e7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[485],0x0000757b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[486],0x00008910 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[487],0x00009ca4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[488],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[489],0x00002685 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[48],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[490],0x000039c7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[491],0x00004d0a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[492],0x0000604c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[493],0x0000738e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[494],0x000086d1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[495],0x00009a13 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[496],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[497],0x000025e6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[498],0x000038d9 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[499],0x00004bcc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[49],0x0001879b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[4],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[500],0x00005ebe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[501],0x000071b1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[502],0x000084a4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[503],0x00009797 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[504],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[505],0x0000254c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[506],0x000037f2 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[507],0x00004a98 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[508],0x00005d3d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[509],0x00006fe3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[50],0x00024b68 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[510],0x00008289 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[511],0x0000952f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[512],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[513],0x000024b7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[514],0x00003712 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[515],0x0000496d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[516],0x00005bc8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[517],0x00006e24 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[518],0x0000807f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[519],0x000092da +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[51],0x00030f36 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[520],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[521],0x00002426 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[522],0x00003639 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[523],0x0000484c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[524],0x00005a5f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[525],0x00006c72 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[526],0x00007e85 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[527],0x00009098 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[528],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[529],0x0000239a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[52],0x0003d301 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[530],0x00003567 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[531],0x00004734 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[532],0x00005900 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[533],0x00006acd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[534],0x00007c9a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[535],0x00008e67 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[536],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[537],0x00002312 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[538],0x0000349b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[539],0x00004624 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[53],0x000496d0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[540],0x000057ac +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[541],0x00006935 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[542],0x00007abe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[543],0x00008c47 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[544],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[545],0x0000228e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[546],0x000033d5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[547],0x0000451c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[548],0x00005662 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[549],0x000067a9 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[54],0x00055a9d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[550],0x000078f0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[551],0x00008a37 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[552],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[553],0x0000220e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[554],0x00003315 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[555],0x0000441b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[556],0x00005522 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[557],0x00006629 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[558],0x0000772f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[559],0x00008836 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[55],0x00061e76 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[560],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[561],0x00002191 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[562],0x0000325a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[563],0x00004322 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[564],0x000053eb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[565],0x000064b3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[566],0x0000757b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[567],0x00008644 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[568],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[569],0x00002118 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[56],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[570],0x000031a4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[571],0x00004230 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[572],0x000052bc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[573],0x00006348 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[574],0x000073d4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[575],0x00008460 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[576],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[577],0x000020a3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[578],0x000030f4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[579],0x00004145 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[57],0x00014faa +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[580],0x00005196 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[581],0x000061e7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[582],0x00007238 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[583],0x00008289 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[584],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[585],0x00002030 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[586],0x00003048 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[587],0x00004060 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[588],0x00005078 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[589],0x00006090 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[58],0x0001f77d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[590],0x000070a7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[591],0x000080bf +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[592],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[593],0x00001fc1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[594],0x00002fa1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[595],0x00003f81 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[596],0x00004f61 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[597],0x00005f42 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[598],0x00006f22 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[599],0x00007f02 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[59],0x00029f55 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[5],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[600],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[601],0x00001f54 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[602],0x00002efe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[603],0x00003ea8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[604],0x00004e52 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[605],0x00005dfc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[606],0x00006da6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[607],0x00007d50 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[608],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[609],0x00001eeb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[60],0x0003472b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[610],0x00002e60 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[611],0x00003dd5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[612],0x00004d4b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[613],0x00005cc0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[614],0x00006c35 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[615],0x00007baa +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[616],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[617],0x00001e84 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[618],0x00002dc6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[619],0x00003d08 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[61],0x0003eeff +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[620],0x00004c4a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[621],0x00005b8c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[622],0x00006acd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[623],0x00007a0f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[624],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[625],0x00001e20 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[626],0x00002d30 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[627],0x00003c40 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[628],0x00004b4f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[629],0x00005a5f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[62],0x000496d0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[630],0x0000696f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[631],0x0000787f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[632],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[633],0x00001dbe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[634],0x00002c9d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[635],0x00003b7c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[636],0x00004a5b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[637],0x0000593a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[638],0x00006819 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[639],0x000076f8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[63],0x00053ea9 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[640],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[641],0x00001d5f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[642],0x00002c0f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[643],0x00003abe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[644],0x0000496d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[645],0x0000581d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[646],0x000066cc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[647],0x0000757b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[648],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[649],0x00001d02 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[64],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[650],0x00002b83 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[651],0x00003a04 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[652],0x00004885 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[653],0x00005706 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[654],0x00006587 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[655],0x00007408 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[656],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[657],0x00001ca8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[658],0x00002afb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[659],0x0000394f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[65],0x000125b4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[660],0x000047a3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[661],0x000055f7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[662],0x0000644a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[663],0x0000729e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[664],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[665],0x00001c4f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[666],0x00002a77 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[667],0x0000389e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[668],0x000046c6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[669],0x000054ed +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[66],0x0001b88d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[670],0x00006315 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[671],0x0000713c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[672],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[673],0x00001bf9 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[674],0x000029f6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[675],0x000037f2 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[676],0x000045ee +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[677],0x000053eb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[678],0x000061e7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[679],0x00006fe3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[67],0x00024b68 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[680],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[681],0x00001ba5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[682],0x00002977 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[683],0x00003749 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[684],0x0000451c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[685],0x000052ee +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[686],0x000060c0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[687],0x00006e92 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[688],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[689],0x00001b53 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[68],0x0002de44 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[690],0x000028fc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[691],0x000036a5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[692],0x0000444e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[693],0x000051f7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[694],0x00005fa0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[695],0x00006d49 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[696],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[697],0x00001b02 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[698],0x00002883 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[699],0x00003604 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[69],0x0003711a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[6],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[700],0x00004385 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[701],0x00005106 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[702],0x00005e87 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[703],0x00006c08 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[704],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[705],0x00001ab4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[706],0x0000280d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[707],0x00003567 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[708],0x000042c1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[709],0x0000501a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[70],0x000403f6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[710],0x00005d74 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[711],0x00006acd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[712],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[713],0x00001a67 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[714],0x0000279a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[715],0x000034cd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[716],0x00004201 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[717],0x00004f34 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[718],0x00005c67 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[719],0x0000699a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[71],0x000496d0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[720],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[721],0x00001a1c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[722],0x00002729 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[723],0x00003437 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[724],0x00004145 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[725],0x00004e52 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[726],0x00005b60 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[727],0x0000686e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[728],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[729],0x000019d2 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[72],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[730],0x000026bb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[731],0x000033a4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[732],0x0000408d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[733],0x00004d76 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[734],0x00005a5f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[735],0x00006748 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[736],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[737],0x0000198b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[738],0x00002650 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[739],0x00003315 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[73],0x00010512 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[740],0x00003fda +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[741],0x00004c9f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[742],0x00005964 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[743],0x00006629 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[744],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[745],0x00001944 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[746],0x000025e6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[747],0x00003288 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[748],0x00003f2a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[749],0x00004bcc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[74],0x0001879b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[750],0x0000586d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[751],0x0000650f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[752],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[753],0x000018ff +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[754],0x0000257f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[755],0x000031fe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[756],0x00003e7e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[757],0x00004afd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[758],0x0000577d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[759],0x000063fc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[75],0x00020a23 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[760],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[761],0x000018bc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[762],0x0000251a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[763],0x00003178 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[764],0x00003dd5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[765],0x00004a33 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[766],0x00005691 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[767],0x000062ef +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[768],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[769],0x0000187a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[76],0x00028cae +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[770],0x000024b7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[771],0x000030f4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[772],0x00003d30 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[773],0x0000496d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[774],0x000055aa +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[775],0x000061e7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[776],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[777],0x00001839 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[778],0x00002456 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[779],0x00003073 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[77],0x00030f36 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[780],0x00003c8f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[781],0x000048ac +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[782],0x000054c8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[783],0x000060e5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[784],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[785],0x000017fa +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[786],0x000023f7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[787],0x00002ff4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[788],0x00003bf1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[789],0x000047ee +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[78],0x000391be +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[790],0x000053eb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[791],0x00005fe7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[792],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[793],0x000017bc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[794],0x0000239a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[795],0x00002f78 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[796],0x00003b56 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[797],0x00004734 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[798],0x00005312 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[799],0x00005eef +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[79],0x00041445 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[7],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[800],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[801],0x0000177f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[802],0x0000233f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[803],0x00002efe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[804],0x00003abe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[805],0x0000467d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[806],0x0000523d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[807],0x00005dfc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[808],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[809],0x00001744 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[80],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[810],0x000022e6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[811],0x00002e87 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[812],0x00003a29 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[813],0x000045cb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[814],0x0000516c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[815],0x00005d0e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[816],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[817],0x0000170a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[818],0x0000228e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[819],0x00002e13 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[81],0x0000eaf6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[820],0x00003997 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[821],0x0000451c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[822],0x000050a0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[823],0x00005c25 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[824],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[825],0x000016d0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[826],0x00002238 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[827],0x00002da0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[828],0x00003908 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[829],0x00004470 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[82],0x00016072 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[830],0x00004fd8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[831],0x00005b40 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[832],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[833],0x00001698 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[834],0x000021e4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[835],0x00002d30 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[836],0x0000387c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[837],0x000043c7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[838],0x00004f13 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[839],0x00005a5f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[83],0x0001d5ed +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[840],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[841],0x00001661 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[842],0x00002191 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[843],0x00002cc2 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[844],0x000037f2 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[845],0x00004322 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[846],0x00004e52 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[847],0x00005983 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[848],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[849],0x0000162b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[84],0x00024b68 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[850],0x00002140 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[851],0x00002c56 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[852],0x0000376b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[853],0x00004280 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[854],0x00004d95 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[855],0x000058ab +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[856],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[857],0x000015f6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[858],0x000020f1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[859],0x00002beb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[85],0x0002c0e5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[860],0x000036e6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[861],0x000041e1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[862],0x00004cdc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[863],0x000057d6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[864],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[865],0x000015c2 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[866],0x000020a3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[867],0x00002b83 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[868],0x00003664 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[869],0x00004145 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[86],0x0003365f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[870],0x00004c25 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[871],0x00005706 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[872],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[873],0x0000158f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[874],0x00002056 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[875],0x00002b1d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[876],0x000035e4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[877],0x000040ab +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[878],0x00004b73 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[879],0x0000563a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[87],0x0003abde +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[880],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[881],0x0000155d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[882],0x0000200b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[883],0x00002ab9 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[884],0x00003567 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[885],0x00004015 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[886],0x00004ac3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[887],0x00005571 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[888],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[889],0x0000152b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[88],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[890],0x00001fc1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[891],0x00002a56 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[892],0x000034ec +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[893],0x00003f81 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[894],0x00004a17 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[895],0x000054ac +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[896],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[897],0x000014fb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[898],0x00001f78 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[899],0x000029f6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[89],0x0000d59a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[8],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[900],0x00003473 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[901],0x00003ef0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[902],0x0000496d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[903],0x000053eb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[904],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[905],0x000014cb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[906],0x00001f31 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[907],0x00002996 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[908],0x000033fc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[909],0x00003e61 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[90],0x00014067 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[910],0x000048c7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[911],0x0000532c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[912],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[913],0x0000149d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[914],0x00001eeb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[915],0x00002939 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[916],0x00003387 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[917],0x00003dd5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[918],0x00004824 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[919],0x00005272 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[91],0x0001ab34 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[920],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[921],0x0000146f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[922],0x00001ea6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[923],0x000028dd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[924],0x00003315 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[925],0x00003d4c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[926],0x00004783 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[927],0x000051ba +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[928],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[929],0x00001442 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[92],0x00021601 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[930],0x00001e62 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[931],0x00002883 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[932],0x000032a4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[933],0x00003cc4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[934],0x000046e5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[935],0x00005106 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[936],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[937],0x00001416 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[938],0x00001e20 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[939],0x0000282b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[93],0x000280ce +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[940],0x00003235 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[941],0x00003c40 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[942],0x0000464a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[943],0x00005055 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[944],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[945],0x000013ea +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[946],0x00001ddf +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[947],0x000027d3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[948],0x000031c8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[949],0x00003bbd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[94],0x0002eb9c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[950],0x000045b2 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[951],0x00004fa6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[952],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[953],0x000013bf +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[954],0x00001d9e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[955],0x0000277e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[956],0x0000315d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[957],0x00003b3c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[958],0x0000451c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[959],0x00004efb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[95],0x0003566b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[960],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[961],0x00001395 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[962],0x00001d5f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[963],0x00002729 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[964],0x000030f4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[965],0x00003abe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[966],0x00004488 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[967],0x00004e52 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[968],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[969],0x0000136c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[96],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[970],0x00001d21 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[971],0x000026d7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[972],0x0000308c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[973],0x00003a42 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[974],0x000043f7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[975],0x00004dad +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[976],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[977],0x00001343 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[978],0x00001ce4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[979],0x00002685 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[97],0x0000c3cd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[980],0x00003026 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[981],0x000039c7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[982],0x00004369 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[983],0x00004d0a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[984],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[985],0x0000131b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[986],0x00001ca8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[987],0x00002635 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[988],0x00002fc2 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[989],0x0000394f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[98],0x000125b4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[990],0x000042dc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[991],0x00004c69 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[992],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[993],0x000012f3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[994],0x00001c6d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[995],0x000025e6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[996],0x00002f5f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[997],0x000038d9 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[998],0x00004252 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[999],0x00004bcc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[99],0x0001879b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH1[9],0x00092da0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[0],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1000],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1001],0x000012cc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1002],0x00001c32 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1003],0x00002598 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1004],0x00002efe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1005],0x00003864 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1006],0x000041ca +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1007],0x00004b30 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1008],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1009],0x000012a6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[100],0x0001e981 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1010],0x00001bf9 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1011],0x0000254c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1012],0x00002e9f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1013],0x000037f2 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1014],0x00004145 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1015],0x00004a98 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1016],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1017],0x00001281 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1018],0x00001bc1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1019],0x00002501 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[101],0x00024b68 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1020],0x00002e41 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1021],0x00003781 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1022],0x000040c1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1023],0x00004a01 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1024],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1025],0x0000125c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1026],0x00001b89 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1027],0x000024b7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1028],0x00002de4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1029],0x00003712 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[102],0x0002ad4f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1030],0x00004040 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1031],0x0000496d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1032],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1033],0x00001237 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1034],0x00001b53 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1035],0x0000246e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1036],0x00002d89 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1037],0x000036a5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1038],0x00003fc0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1039],0x000048dc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[103],0x00030f36 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1040],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1041],0x00001213 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1042],0x00001b1d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1043],0x00002426 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1044],0x00002d30 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1045],0x00003639 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1046],0x00003f43 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1047],0x0000484c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1048],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1049],0x000011f0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[104],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1050],0x00001ae8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1051],0x000023e0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1052],0x00002cd7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1053],0x000035cf +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1054],0x00003ec7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1055],0x000047bf +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1056],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1057],0x000011cd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1058],0x00001ab4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1059],0x0000239a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[105],0x0000b4be +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1060],0x00002c80 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1061],0x00003567 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1062],0x00003e4d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1063],0x00004734 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1064],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1065],0x000011ab +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1066],0x00001a80 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1067],0x00002356 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1068],0x00002c2b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1069],0x00003500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[106],0x00010f1c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1070],0x00003dd5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1071],0x000046ab +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1072],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1073],0x00001189 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1074],0x00001a4e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1075],0x00002312 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1076],0x00002bd6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1077],0x0000349b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1078],0x00003d5f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1079],0x00004624 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[107],0x0001697b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1080],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1081],0x00001168 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1082],0x00001a1c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1083],0x000022d0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1084],0x00002b83 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1085],0x00003437 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1086],0x00003ceb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1087],0x0000459f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1088],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1089],0x00001147 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[108],0x0001c3d9 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1090],0x000019eb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1091],0x0000228e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1092],0x00002b31 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1093],0x000033d5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1094],0x00003c78 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1095],0x0000451c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1096],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1097],0x00001127 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1098],0x000019ba +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1099],0x0000224d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[109],0x00021e3a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[10],0x000dc4bc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1100],0x00002ae1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1101],0x00003374 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1102],0x00003c07 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1103],0x0000449a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1104],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1105],0x00001107 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1106],0x0000198b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1107],0x0000220e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1108],0x00002a91 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1109],0x00003315 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[110],0x00027898 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1110],0x00003b98 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1111],0x0000441b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1112],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1113],0x000010e8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1114],0x0000195b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1115],0x000021cf +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1116],0x00002a43 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1117],0x000032b6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1118],0x00003b2a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1119],0x0000439e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[111],0x0002d2f5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1120],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1121],0x000010c9 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1122],0x0000192d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1123],0x00002191 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1124],0x000029f6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1125],0x0000325a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1126],0x00003abe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1127],0x00004322 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1128],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1129],0x000010aa +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[112],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1130],0x000018ff +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1131],0x00002154 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1132],0x000029a9 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1133],0x000031fe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1134],0x00003a53 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1135],0x000042a8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1136],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1137],0x0000108c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1138],0x000018d2 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1139],0x00002118 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[113],0x0000a7d5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1140],0x0000295e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1141],0x000031a4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1142],0x000039ea +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1143],0x00004230 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1144],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1145],0x0000106f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1146],0x000018a6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1147],0x000020dd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1148],0x00002914 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1149],0x0000314b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[114],0x0000fbbf +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1150],0x00003982 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1151],0x000041ba +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1152],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1153],0x00001052 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1154],0x0000187a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1155],0x000020a3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1156],0x000028cb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1157],0x000030f4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1158],0x0000391c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1159],0x00004145 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[115],0x00014faa +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1160],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1161],0x00001035 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1162],0x0000184f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1163],0x00002069 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1164],0x00002883 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1165],0x0000309d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1166],0x000038b7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1167],0x000040d2 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1168],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1169],0x00001018 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[116],0x0001a394 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1170],0x00001824 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1171],0x00002030 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1172],0x0000283c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1173],0x00003048 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1174],0x00003854 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1175],0x00004060 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1176],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1177],0x00000ffc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1178],0x000017fa +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1179],0x00001ff8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[117],0x0001f77d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1180],0x000027f6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1181],0x00002ff4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1182],0x000037f2 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1183],0x00003ff0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1184],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1185],0x00000fe1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1186],0x000017d1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1187],0x00001fc1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1188],0x000027b1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1189],0x00002fa1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[118],0x00024b68 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1190],0x00003791 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1191],0x00003f81 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1192],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1193],0x00000fc5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1194],0x000017a8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1195],0x00001f8a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1196],0x0000276d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1197],0x00002f4f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1198],0x00003732 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1199],0x00003f14 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[119],0x00029f55 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[11],0x000fffff +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1200],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1201],0x00000faa +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1202],0x0000177f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1203],0x00001f54 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1204],0x00002729 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1205],0x00002efe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1206],0x000036d3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1207],0x00003ea8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1208],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1209],0x00000f90 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[120],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1210],0x00001758 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1211],0x00001f1f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1212],0x000026e7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1213],0x00002eaf +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1214],0x00003676 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1215],0x00003e3e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1216],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1217],0x00000f76 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1218],0x00001730 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1219],0x00001eeb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[121],0x00009ca4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1220],0x000026a6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1221],0x00002e60 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1222],0x0000361b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1223],0x00003dd5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1224],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1225],0x00000f5c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1226],0x0000170a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1227],0x00001eb7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1228],0x00002665 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1229],0x00002e13 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[122],0x0000eaf6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1230],0x000035c0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1231],0x00003d6e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1232],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1233],0x00000f42 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1234],0x000016e3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1235],0x00001e84 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1236],0x00002625 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1237],0x00002dc6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1238],0x00003567 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1239],0x00003d08 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[123],0x00013948 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1240],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1241],0x00000f29 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1242],0x000016bd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1243],0x00001e52 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1244],0x000025e6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1245],0x00002d7a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1246],0x0000350f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1247],0x00003ca3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1248],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1249],0x00000f10 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[124],0x0001879b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1250],0x00001698 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1251],0x00001e20 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1252],0x000025a8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1253],0x00002d30 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1254],0x000034b8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1255],0x00003c40 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1256],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1257],0x00000ef8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1258],0x00001673 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1259],0x00001def +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[125],0x0001d5ed +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1260],0x0000256a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1261],0x00002ce6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1262],0x00003462 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1263],0x00003bdd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1264],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1265],0x00000edf +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1266],0x0000164f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1267],0x00001dbe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1268],0x0000252e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1269],0x00002c9d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[126],0x0002243f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1270],0x0000340d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1271],0x00003b7c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1272],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1273],0x00000ec8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1274],0x0000162b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1275],0x00001d8f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1276],0x000024f2 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1277],0x00002c56 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1278],0x000033b9 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1279],0x00003b1d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[127],0x00027292 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1280],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1281],0x00000eb0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1282],0x00001608 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1283],0x00001d5f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1284],0x000024b7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1285],0x00002c0f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1286],0x00003366 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1287],0x00003abe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[128],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[129],0x000092da +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[12],0x000fffff +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[130],0x0000dc47 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[131],0x000125b4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[132],0x00016f21 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[133],0x0001b88d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[134],0x000201fb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[135],0x00024b68 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[136],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[137],0x00008a37 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[138],0x0000cf52 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[139],0x0001146d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[13],0x000fffff +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[140],0x00015988 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[141],0x00019ea4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[142],0x0001e3bf +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[143],0x000228da +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[144],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[145],0x00008289 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[146],0x0000c3cd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[147],0x00010512 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[148],0x00014656 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[149],0x0001879b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[14],0x000fffff +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[150],0x0001c8df +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[151],0x00020a23 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[152],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[153],0x00007baa +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[154],0x0000b97f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[155],0x0000f754 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[156],0x00013529 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[157],0x000172fe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[158],0x0001b0d4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[159],0x0001eea9 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[15],0x000fffff +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[160],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[161],0x0000757b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[162],0x0000b039 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[163],0x0000eaf6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[164],0x000125b4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[165],0x00016072 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[166],0x00019b30 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[167],0x0001d5ed +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[168],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[169],0x00006fe3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[16],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[170],0x0000a7d5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[171],0x0000dfc6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[172],0x000117b8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[173],0x00014faa +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[174],0x0001879b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[175],0x0001bf8c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[176],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[177],0x00006acd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[178],0x0000a034 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[179],0x0000d59a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[17],0x000496d0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[180],0x00010b01 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[181],0x00014067 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[182],0x000175ce +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[183],0x0001ab34 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[184],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[185],0x00006629 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[186],0x0000993d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[187],0x0000cc51 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[188],0x0000ff65 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[189],0x00013279 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[18],0x0006e241 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[190],0x0001658e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[191],0x000198a2 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[192],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[193],0x000061e7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[194],0x000092da +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[195],0x0000c3cd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[196],0x0000f4c1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[197],0x000125b4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[198],0x000156a8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[199],0x0001879b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[19],0x00092da0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[1],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[200],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[201],0x00005dfc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[202],0x00008cfa +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[203],0x0000bbf8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[204],0x0000eaf6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[205],0x000119f4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[206],0x000148f3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[207],0x000177f1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[208],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[209],0x00005a5f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[20],0x000b7937 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[210],0x0000878e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[211],0x0000b4be +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[212],0x0000e1ed +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[213],0x00010f1c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[214],0x00013c4c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[215],0x0001697b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[216],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[217],0x00005706 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[218],0x00008289 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[219],0x0000ae0c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[21],0x000dc4bc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[220],0x0000d98f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[221],0x00010512 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[222],0x00013095 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[223],0x00015c17 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[224],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[225],0x000053eb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[226],0x00007de0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[227],0x0000a7d5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[228],0x0000d1ca +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[229],0x0000fbbf +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[22],0x000fffff +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[230],0x000125b4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[231],0x00014faa +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[232],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[233],0x00005106 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[234],0x00007989 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[235],0x0000a20b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[236],0x0000ca8e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[237],0x0000f311 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[238],0x00011b93 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[239],0x00014416 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[23],0x000fffff +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[240],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[241],0x00004e52 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[242],0x0000757b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[243],0x00009ca4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[244],0x0000c3cd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[245],0x0000eaf6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[246],0x0001121f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[247],0x00013948 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[248],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[249],0x00004bcc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[24],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[250],0x000071b1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[251],0x00009797 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[252],0x0000bd7c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[253],0x0000e362 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[254],0x00010947 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[255],0x00012f2d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[256],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[257],0x0000496d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[258],0x00006e24 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[259],0x000092da +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[25],0x00030f36 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[260],0x0000b790 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[261],0x0000dc47 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[262],0x000100fd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[263],0x000125b4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[264],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[265],0x00004734 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[266],0x00006acd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[267],0x00008e67 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[268],0x0000b200 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[269],0x0000d59a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[26],0x000496d0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[270],0x0000f934 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[271],0x00011cce +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[272],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[273],0x0000451c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[274],0x000067a9 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[275],0x00008a37 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[276],0x0000acc4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[277],0x0000cf52 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[278],0x0000f1df +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[279],0x0001146d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[27],0x00061e76 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[280],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[281],0x00004322 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[282],0x000064b3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[283],0x00008644 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[284],0x0000a7d5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[285],0x0000c965 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[286],0x0000eaf6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[287],0x00010c87 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[288],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[289],0x00004145 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[28],0x0007a613 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[290],0x000061e7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[291],0x00008289 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[292],0x0000a32b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[293],0x0000c3cd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[294],0x0000e46f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[295],0x00010512 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[296],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[297],0x00003f81 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[298],0x00005f42 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[299],0x00007f02 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[29],0x00092da0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[2],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[300],0x00009ec2 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[301],0x0000be83 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[302],0x0000de43 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[303],0x0000fe04 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[304],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[305],0x00003dd5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[306],0x00005cc0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[307],0x00007baa +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[308],0x00009a95 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[309],0x0000b97f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[30],0x000ab53a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[310],0x0000d86a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[311],0x0000f754 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[312],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[313],0x00003c40 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[314],0x00005a5f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[315],0x0000787f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[316],0x0000969e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[317],0x0000b4be +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[318],0x0000d2dd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[319],0x0000f0fd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[31],0x000c3ceb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[320],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[321],0x00003abe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[322],0x0000581d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[323],0x0000757b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[324],0x000092da +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[325],0x0000b039 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[326],0x0000cd98 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[327],0x0000eaf6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[328],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[329],0x0000394f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[32],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[330],0x000055f7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[331],0x0000729e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[332],0x00008f45 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[333],0x0000abed +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[334],0x0000c894 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[335],0x0000e53b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[336],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[337],0x000037f2 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[338],0x000053eb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[339],0x00006fe3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[33],0x00024b68 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[340],0x00008bdc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[341],0x0000a7d5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[342],0x0000c3cd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[343],0x0000dfc6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[344],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[345],0x000036a5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[346],0x000051f7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[347],0x00006d49 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[348],0x0000889b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[349],0x0000a3ed +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[34],0x0003711a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[350],0x0000bf40 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[351],0x0000da92 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[352],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[353],0x00003567 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[354],0x0000501a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[355],0x00006acd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[356],0x00008581 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[357],0x0000a034 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[358],0x0000bae7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[359],0x0000d59a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[35],0x000496d0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[360],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[361],0x00003437 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[362],0x00004e52 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[363],0x0000686e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[364],0x00008289 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[365],0x00009ca4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[366],0x0000b6c0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[367],0x0000d0db +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[368],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[369],0x00003315 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[36],0x0005bc88 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[370],0x00004c9f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[371],0x00006629 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[372],0x00007fb3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[373],0x0000993d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[374],0x0000b2c7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[375],0x0000cc51 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[376],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[377],0x000031fe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[378],0x00004afd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[379],0x000063fc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[37],0x0006e241 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[380],0x00007cfb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[381],0x000095fa +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[382],0x0000aef9 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[383],0x0000c7f8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[384],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[385],0x000030f4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[386],0x0000496d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[387],0x000061e7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[388],0x00007a61 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[389],0x000092da +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[38],0x000807ec +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[390],0x0000ab54 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[391],0x0000c3cd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[392],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[393],0x00002ff4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[394],0x000047ee +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[395],0x00005fe7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[396],0x000077e1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[397],0x00008fdb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[398],0x0000a7d5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[399],0x0000bfce +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[39],0x00092da0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[3],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[400],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[401],0x00002efe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[402],0x0000467d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[403],0x00005dfc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[404],0x0000757b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[405],0x00008cfa +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[406],0x0000a479 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[407],0x0000bbf8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[408],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[409],0x00002e13 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[40],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[410],0x0000451c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[411],0x00005c25 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[412],0x0000732e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[413],0x00008a37 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[414],0x0000a140 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[415],0x0000b849 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[416],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[417],0x00002d30 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[418],0x000043c7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[419],0x00005a5f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[41],0x0001d5ed +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[420],0x000070f7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[421],0x0000878e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[422],0x00009e26 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[423],0x0000b4be +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[424],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[425],0x00002c56 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[426],0x00004280 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[427],0x000058ab +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[428],0x00006ed5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[429],0x00008500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[42],0x0002c0e5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[430],0x00009b2a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[431],0x0000b155 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[432],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[433],0x00002b83 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[434],0x00004145 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[435],0x00005706 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[436],0x00006cc8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[437],0x00008289 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[438],0x0000984b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[439],0x0000ae0c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[43],0x0003abde +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[440],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[441],0x00002ab9 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[442],0x00004015 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[443],0x00005571 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[444],0x00006acd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[445],0x0000802a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[446],0x00009586 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[447],0x0000aae2 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[448],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[449],0x000029f6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[44],0x000496d0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[450],0x00003ef0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[451],0x000053eb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[452],0x000068e5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[453],0x00007de0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[454],0x000092da +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[455],0x0000a7d5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[456],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[457],0x00002939 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[458],0x00003dd5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[459],0x00005272 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[45],0x000581d3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[460],0x0000670e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[461],0x00007baa +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[462],0x00009047 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[463],0x0000a4e3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[464],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[465],0x00002883 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[466],0x00003cc4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[467],0x00005106 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[468],0x00006547 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[469],0x00007989 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[46],0x00066cbd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[470],0x00008dca +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[471],0x0000a20b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[472],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[473],0x000027d3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[474],0x00003bbd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[475],0x00004fa6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[476],0x00006390 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[477],0x00007779 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[478],0x00008b63 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[479],0x00009f4c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[47],0x000757cc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[480],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[481],0x00002729 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[482],0x00003abe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[483],0x00004e52 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[484],0x000061e7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[485],0x0000757b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[486],0x00008910 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[487],0x00009ca4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[488],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[489],0x00002685 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[48],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[490],0x000039c7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[491],0x00004d0a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[492],0x0000604c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[493],0x0000738e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[494],0x000086d1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[495],0x00009a13 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[496],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[497],0x000025e6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[498],0x000038d9 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[499],0x00004bcc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[49],0x0001879b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[4],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[500],0x00005ebe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[501],0x000071b1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[502],0x000084a4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[503],0x00009797 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[504],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[505],0x0000254c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[506],0x000037f2 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[507],0x00004a98 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[508],0x00005d3d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[509],0x00006fe3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[50],0x00024b68 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[510],0x00008289 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[511],0x0000952f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[512],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[513],0x000024b7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[514],0x00003712 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[515],0x0000496d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[516],0x00005bc8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[517],0x00006e24 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[518],0x0000807f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[519],0x000092da +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[51],0x00030f36 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[520],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[521],0x00002426 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[522],0x00003639 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[523],0x0000484c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[524],0x00005a5f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[525],0x00006c72 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[526],0x00007e85 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[527],0x00009098 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[528],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[529],0x0000239a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[52],0x0003d301 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[530],0x00003567 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[531],0x00004734 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[532],0x00005900 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[533],0x00006acd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[534],0x00007c9a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[535],0x00008e67 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[536],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[537],0x00002312 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[538],0x0000349b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[539],0x00004624 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[53],0x000496d0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[540],0x000057ac +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[541],0x00006935 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[542],0x00007abe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[543],0x00008c47 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[544],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[545],0x0000228e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[546],0x000033d5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[547],0x0000451c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[548],0x00005662 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[549],0x000067a9 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[54],0x00055a9d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[550],0x000078f0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[551],0x00008a37 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[552],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[553],0x0000220e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[554],0x00003315 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[555],0x0000441b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[556],0x00005522 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[557],0x00006629 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[558],0x0000772f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[559],0x00008836 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[55],0x00061e76 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[560],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[561],0x00002191 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[562],0x0000325a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[563],0x00004322 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[564],0x000053eb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[565],0x000064b3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[566],0x0000757b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[567],0x00008644 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[568],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[569],0x00002118 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[56],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[570],0x000031a4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[571],0x00004230 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[572],0x000052bc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[573],0x00006348 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[574],0x000073d4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[575],0x00008460 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[576],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[577],0x000020a3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[578],0x000030f4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[579],0x00004145 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[57],0x00014faa +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[580],0x00005196 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[581],0x000061e7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[582],0x00007238 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[583],0x00008289 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[584],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[585],0x00002030 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[586],0x00003048 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[587],0x00004060 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[588],0x00005078 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[589],0x00006090 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[58],0x0001f77d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[590],0x000070a7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[591],0x000080bf +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[592],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[593],0x00001fc1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[594],0x00002fa1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[595],0x00003f81 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[596],0x00004f61 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[597],0x00005f42 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[598],0x00006f22 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[599],0x00007f02 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[59],0x00029f55 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[5],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[600],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[601],0x00001f54 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[602],0x00002efe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[603],0x00003ea8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[604],0x00004e52 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[605],0x00005dfc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[606],0x00006da6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[607],0x00007d50 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[608],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[609],0x00001eeb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[60],0x0003472b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[610],0x00002e60 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[611],0x00003dd5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[612],0x00004d4b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[613],0x00005cc0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[614],0x00006c35 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[615],0x00007baa +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[616],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[617],0x00001e84 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[618],0x00002dc6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[619],0x00003d08 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[61],0x0003eeff +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[620],0x00004c4a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[621],0x00005b8c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[622],0x00006acd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[623],0x00007a0f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[624],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[625],0x00001e20 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[626],0x00002d30 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[627],0x00003c40 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[628],0x00004b4f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[629],0x00005a5f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[62],0x000496d0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[630],0x0000696f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[631],0x0000787f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[632],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[633],0x00001dbe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[634],0x00002c9d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[635],0x00003b7c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[636],0x00004a5b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[637],0x0000593a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[638],0x00006819 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[639],0x000076f8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[63],0x00053ea9 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[640],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[641],0x00001d5f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[642],0x00002c0f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[643],0x00003abe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[644],0x0000496d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[645],0x0000581d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[646],0x000066cc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[647],0x0000757b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[648],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[649],0x00001d02 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[64],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[650],0x00002b83 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[651],0x00003a04 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[652],0x00004885 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[653],0x00005706 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[654],0x00006587 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[655],0x00007408 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[656],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[657],0x00001ca8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[658],0x00002afb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[659],0x0000394f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[65],0x000125b4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[660],0x000047a3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[661],0x000055f7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[662],0x0000644a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[663],0x0000729e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[664],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[665],0x00001c4f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[666],0x00002a77 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[667],0x0000389e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[668],0x000046c6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[669],0x000054ed +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[66],0x0001b88d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[670],0x00006315 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[671],0x0000713c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[672],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[673],0x00001bf9 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[674],0x000029f6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[675],0x000037f2 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[676],0x000045ee +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[677],0x000053eb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[678],0x000061e7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[679],0x00006fe3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[67],0x00024b68 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[680],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[681],0x00001ba5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[682],0x00002977 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[683],0x00003749 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[684],0x0000451c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[685],0x000052ee +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[686],0x000060c0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[687],0x00006e92 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[688],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[689],0x00001b53 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[68],0x0002de44 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[690],0x000028fc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[691],0x000036a5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[692],0x0000444e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[693],0x000051f7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[694],0x00005fa0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[695],0x00006d49 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[696],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[697],0x00001b02 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[698],0x00002883 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[699],0x00003604 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[69],0x0003711a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[6],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[700],0x00004385 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[701],0x00005106 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[702],0x00005e87 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[703],0x00006c08 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[704],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[705],0x00001ab4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[706],0x0000280d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[707],0x00003567 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[708],0x000042c1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[709],0x0000501a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[70],0x000403f6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[710],0x00005d74 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[711],0x00006acd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[712],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[713],0x00001a67 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[714],0x0000279a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[715],0x000034cd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[716],0x00004201 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[717],0x00004f34 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[718],0x00005c67 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[719],0x0000699a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[71],0x000496d0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[720],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[721],0x00001a1c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[722],0x00002729 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[723],0x00003437 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[724],0x00004145 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[725],0x00004e52 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[726],0x00005b60 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[727],0x0000686e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[728],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[729],0x000019d2 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[72],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[730],0x000026bb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[731],0x000033a4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[732],0x0000408d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[733],0x00004d76 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[734],0x00005a5f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[735],0x00006748 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[736],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[737],0x0000198b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[738],0x00002650 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[739],0x00003315 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[73],0x00010512 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[740],0x00003fda +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[741],0x00004c9f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[742],0x00005964 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[743],0x00006629 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[744],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[745],0x00001944 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[746],0x000025e6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[747],0x00003288 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[748],0x00003f2a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[749],0x00004bcc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[74],0x0001879b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[750],0x0000586d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[751],0x0000650f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[752],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[753],0x000018ff +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[754],0x0000257f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[755],0x000031fe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[756],0x00003e7e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[757],0x00004afd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[758],0x0000577d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[759],0x000063fc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[75],0x00020a23 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[760],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[761],0x000018bc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[762],0x0000251a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[763],0x00003178 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[764],0x00003dd5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[765],0x00004a33 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[766],0x00005691 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[767],0x000062ef +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[768],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[769],0x0000187a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[76],0x00028cae +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[770],0x000024b7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[771],0x000030f4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[772],0x00003d30 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[773],0x0000496d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[774],0x000055aa +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[775],0x000061e7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[776],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[777],0x00001839 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[778],0x00002456 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[779],0x00003073 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[77],0x00030f36 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[780],0x00003c8f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[781],0x000048ac +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[782],0x000054c8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[783],0x000060e5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[784],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[785],0x000017fa +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[786],0x000023f7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[787],0x00002ff4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[788],0x00003bf1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[789],0x000047ee +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[78],0x000391be +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[790],0x000053eb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[791],0x00005fe7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[792],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[793],0x000017bc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[794],0x0000239a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[795],0x00002f78 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[796],0x00003b56 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[797],0x00004734 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[798],0x00005312 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[799],0x00005eef +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[79],0x00041445 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[7],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[800],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[801],0x0000177f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[802],0x0000233f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[803],0x00002efe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[804],0x00003abe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[805],0x0000467d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[806],0x0000523d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[807],0x00005dfc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[808],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[809],0x00001744 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[80],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[810],0x000022e6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[811],0x00002e87 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[812],0x00003a29 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[813],0x000045cb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[814],0x0000516c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[815],0x00005d0e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[816],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[817],0x0000170a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[818],0x0000228e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[819],0x00002e13 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[81],0x0000eaf6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[820],0x00003997 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[821],0x0000451c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[822],0x000050a0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[823],0x00005c25 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[824],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[825],0x000016d0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[826],0x00002238 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[827],0x00002da0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[828],0x00003908 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[829],0x00004470 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[82],0x00016072 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[830],0x00004fd8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[831],0x00005b40 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[832],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[833],0x00001698 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[834],0x000021e4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[835],0x00002d30 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[836],0x0000387c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[837],0x000043c7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[838],0x00004f13 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[839],0x00005a5f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[83],0x0001d5ed +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[840],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[841],0x00001661 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[842],0x00002191 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[843],0x00002cc2 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[844],0x000037f2 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[845],0x00004322 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[846],0x00004e52 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[847],0x00005983 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[848],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[849],0x0000162b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[84],0x00024b68 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[850],0x00002140 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[851],0x00002c56 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[852],0x0000376b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[853],0x00004280 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[854],0x00004d95 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[855],0x000058ab +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[856],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[857],0x000015f6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[858],0x000020f1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[859],0x00002beb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[85],0x0002c0e5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[860],0x000036e6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[861],0x000041e1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[862],0x00004cdc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[863],0x000057d6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[864],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[865],0x000015c2 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[866],0x000020a3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[867],0x00002b83 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[868],0x00003664 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[869],0x00004145 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[86],0x0003365f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[870],0x00004c25 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[871],0x00005706 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[872],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[873],0x0000158f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[874],0x00002056 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[875],0x00002b1d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[876],0x000035e4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[877],0x000040ab +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[878],0x00004b73 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[879],0x0000563a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[87],0x0003abde +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[880],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[881],0x0000155d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[882],0x0000200b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[883],0x00002ab9 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[884],0x00003567 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[885],0x00004015 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[886],0x00004ac3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[887],0x00005571 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[888],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[889],0x0000152b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[88],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[890],0x00001fc1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[891],0x00002a56 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[892],0x000034ec +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[893],0x00003f81 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[894],0x00004a17 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[895],0x000054ac +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[896],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[897],0x000014fb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[898],0x00001f78 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[899],0x000029f6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[89],0x0000d59a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[8],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[900],0x00003473 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[901],0x00003ef0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[902],0x0000496d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[903],0x000053eb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[904],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[905],0x000014cb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[906],0x00001f31 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[907],0x00002996 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[908],0x000033fc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[909],0x00003e61 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[90],0x00014067 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[910],0x000048c7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[911],0x0000532c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[912],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[913],0x0000149d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[914],0x00001eeb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[915],0x00002939 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[916],0x00003387 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[917],0x00003dd5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[918],0x00004824 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[919],0x00005272 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[91],0x0001ab34 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[920],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[921],0x0000146f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[922],0x00001ea6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[923],0x000028dd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[924],0x00003315 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[925],0x00003d4c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[926],0x00004783 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[927],0x000051ba +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[928],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[929],0x00001442 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[92],0x00021601 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[930],0x00001e62 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[931],0x00002883 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[932],0x000032a4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[933],0x00003cc4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[934],0x000046e5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[935],0x00005106 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[936],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[937],0x00001416 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[938],0x00001e20 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[939],0x0000282b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[93],0x000280ce +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[940],0x00003235 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[941],0x00003c40 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[942],0x0000464a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[943],0x00005055 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[944],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[945],0x000013ea +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[946],0x00001ddf +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[947],0x000027d3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[948],0x000031c8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[949],0x00003bbd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[94],0x0002eb9c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[950],0x000045b2 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[951],0x00004fa6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[952],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[953],0x000013bf +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[954],0x00001d9e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[955],0x0000277e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[956],0x0000315d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[957],0x00003b3c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[958],0x0000451c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[959],0x00004efb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[95],0x0003566b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[960],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[961],0x00001395 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[962],0x00001d5f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[963],0x00002729 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[964],0x000030f4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[965],0x00003abe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[966],0x00004488 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[967],0x00004e52 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[968],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[969],0x0000136c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[96],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[970],0x00001d21 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[971],0x000026d7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[972],0x0000308c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[973],0x00003a42 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[974],0x000043f7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[975],0x00004dad +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[976],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[977],0x00001343 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[978],0x00001ce4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[979],0x00002685 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[97],0x0000c3cd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[980],0x00003026 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[981],0x000039c7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[982],0x00004369 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[983],0x00004d0a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[984],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[985],0x0000131b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[986],0x00001ca8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[987],0x00002635 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[988],0x00002fc2 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[989],0x0000394f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[98],0x000125b4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[990],0x000042dc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[991],0x00004c69 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[992],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[993],0x000012f3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[994],0x00001c6d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[995],0x000025e6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[996],0x00002f5f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[997],0x000038d9 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[998],0x00004252 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[999],0x00004bcc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[99],0x0001879b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH2[9],0x00092da0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[0],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1000],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1001],0x000012cc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1002],0x00001c32 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1003],0x00002598 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1004],0x00002efe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1005],0x00003864 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1006],0x000041ca +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1007],0x00004b30 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1008],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1009],0x000012a6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[100],0x0001e981 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1010],0x00001bf9 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1011],0x0000254c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1012],0x00002e9f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1013],0x000037f2 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1014],0x00004145 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1015],0x00004a98 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1016],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1017],0x00001281 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1018],0x00001bc1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1019],0x00002501 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[101],0x00024b68 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1020],0x00002e41 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1021],0x00003781 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1022],0x000040c1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1023],0x00004a01 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1024],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1025],0x0000125c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1026],0x00001b89 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1027],0x000024b7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1028],0x00002de4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1029],0x00003712 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[102],0x0002ad4f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1030],0x00004040 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1031],0x0000496d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1032],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1033],0x00001237 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1034],0x00001b53 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1035],0x0000246e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1036],0x00002d89 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1037],0x000036a5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1038],0x00003fc0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1039],0x000048dc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[103],0x00030f36 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1040],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1041],0x00001213 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1042],0x00001b1d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1043],0x00002426 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1044],0x00002d30 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1045],0x00003639 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1046],0x00003f43 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1047],0x0000484c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1048],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1049],0x000011f0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[104],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1050],0x00001ae8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1051],0x000023e0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1052],0x00002cd7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1053],0x000035cf +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1054],0x00003ec7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1055],0x000047bf +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1056],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1057],0x000011cd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1058],0x00001ab4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1059],0x0000239a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[105],0x0000b4be +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1060],0x00002c80 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1061],0x00003567 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1062],0x00003e4d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1063],0x00004734 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1064],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1065],0x000011ab +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1066],0x00001a80 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1067],0x00002356 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1068],0x00002c2b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1069],0x00003500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[106],0x00010f1c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1070],0x00003dd5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1071],0x000046ab +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1072],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1073],0x00001189 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1074],0x00001a4e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1075],0x00002312 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1076],0x00002bd6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1077],0x0000349b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1078],0x00003d5f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1079],0x00004624 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[107],0x0001697b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1080],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1081],0x00001168 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1082],0x00001a1c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1083],0x000022d0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1084],0x00002b83 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1085],0x00003437 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1086],0x00003ceb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1087],0x0000459f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1088],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1089],0x00001147 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[108],0x0001c3d9 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1090],0x000019eb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1091],0x0000228e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1092],0x00002b31 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1093],0x000033d5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1094],0x00003c78 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1095],0x0000451c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1096],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1097],0x00001127 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1098],0x000019ba +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1099],0x0000224d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[109],0x00021e3a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[10],0x000dc4bc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1100],0x00002ae1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1101],0x00003374 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1102],0x00003c07 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1103],0x0000449a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1104],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1105],0x00001107 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1106],0x0000198b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1107],0x0000220e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1108],0x00002a91 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1109],0x00003315 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[110],0x00027898 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1110],0x00003b98 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1111],0x0000441b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1112],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1113],0x000010e8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1114],0x0000195b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1115],0x000021cf +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1116],0x00002a43 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1117],0x000032b6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1118],0x00003b2a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1119],0x0000439e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[111],0x0002d2f5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1120],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1121],0x000010c9 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1122],0x0000192d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1123],0x00002191 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1124],0x000029f6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1125],0x0000325a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1126],0x00003abe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1127],0x00004322 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1128],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1129],0x000010aa +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[112],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1130],0x000018ff +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1131],0x00002154 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1132],0x000029a9 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1133],0x000031fe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1134],0x00003a53 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1135],0x000042a8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1136],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1137],0x0000108c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1138],0x000018d2 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1139],0x00002118 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[113],0x0000a7d5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1140],0x0000295e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1141],0x000031a4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1142],0x000039ea +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1143],0x00004230 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1144],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1145],0x0000106f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1146],0x000018a6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1147],0x000020dd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1148],0x00002914 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1149],0x0000314b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[114],0x0000fbbf +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1150],0x00003982 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1151],0x000041ba +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1152],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1153],0x00001052 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1154],0x0000187a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1155],0x000020a3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1156],0x000028cb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1157],0x000030f4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1158],0x0000391c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1159],0x00004145 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[115],0x00014faa +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1160],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1161],0x00001035 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1162],0x0000184f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1163],0x00002069 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1164],0x00002883 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1165],0x0000309d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1166],0x000038b7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1167],0x000040d2 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1168],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1169],0x00001018 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[116],0x0001a394 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1170],0x00001824 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1171],0x00002030 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1172],0x0000283c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1173],0x00003048 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1174],0x00003854 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1175],0x00004060 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1176],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1177],0x00000ffc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1178],0x000017fa +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1179],0x00001ff8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[117],0x0001f77d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1180],0x000027f6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1181],0x00002ff4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1182],0x000037f2 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1183],0x00003ff0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1184],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1185],0x00000fe1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1186],0x000017d1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1187],0x00001fc1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1188],0x000027b1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1189],0x00002fa1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[118],0x00024b68 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1190],0x00003791 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1191],0x00003f81 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1192],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1193],0x00000fc5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1194],0x000017a8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1195],0x00001f8a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1196],0x0000276d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1197],0x00002f4f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1198],0x00003732 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1199],0x00003f14 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[119],0x00029f55 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[11],0x000fffff +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1200],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1201],0x00000faa +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1202],0x0000177f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1203],0x00001f54 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1204],0x00002729 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1205],0x00002efe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1206],0x000036d3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1207],0x00003ea8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1208],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1209],0x00000f90 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[120],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1210],0x00001758 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1211],0x00001f1f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1212],0x000026e7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1213],0x00002eaf +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1214],0x00003676 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1215],0x00003e3e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1216],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1217],0x00000f76 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1218],0x00001730 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1219],0x00001eeb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[121],0x00009ca4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1220],0x000026a6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1221],0x00002e60 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1222],0x0000361b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1223],0x00003dd5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1224],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1225],0x00000f5c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1226],0x0000170a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1227],0x00001eb7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1228],0x00002665 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1229],0x00002e13 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[122],0x0000eaf6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1230],0x000035c0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1231],0x00003d6e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1232],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1233],0x00000f42 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1234],0x000016e3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1235],0x00001e84 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1236],0x00002625 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1237],0x00002dc6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1238],0x00003567 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1239],0x00003d08 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[123],0x00013948 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1240],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1241],0x00000f29 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1242],0x000016bd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1243],0x00001e52 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1244],0x000025e6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1245],0x00002d7a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1246],0x0000350f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1247],0x00003ca3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1248],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1249],0x00000f10 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[124],0x0001879b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1250],0x00001698 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1251],0x00001e20 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1252],0x000025a8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1253],0x00002d30 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1254],0x000034b8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1255],0x00003c40 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1256],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1257],0x00000ef8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1258],0x00001673 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1259],0x00001def +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[125],0x0001d5ed +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1260],0x0000256a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1261],0x00002ce6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1262],0x00003462 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1263],0x00003bdd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1264],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1265],0x00000edf +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1266],0x0000164f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1267],0x00001dbe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1268],0x0000252e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1269],0x00002c9d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[126],0x0002243f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1270],0x0000340d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1271],0x00003b7c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1272],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1273],0x00000ec8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1274],0x0000162b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1275],0x00001d8f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1276],0x000024f2 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1277],0x00002c56 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1278],0x000033b9 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1279],0x00003b1d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[127],0x00027292 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1280],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1281],0x00000eb0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1282],0x00001608 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1283],0x00001d5f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1284],0x000024b7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1285],0x00002c0f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1286],0x00003366 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1287],0x00003abe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[128],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[129],0x000092da +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[12],0x000fffff +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[130],0x0000dc47 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[131],0x000125b4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[132],0x00016f21 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[133],0x0001b88d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[134],0x000201fb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[135],0x00024b68 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[136],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[137],0x00008a37 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[138],0x0000cf52 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[139],0x0001146d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[13],0x000fffff +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[140],0x00015988 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[141],0x00019ea4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[142],0x0001e3bf +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[143],0x000228da +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[144],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[145],0x00008289 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[146],0x0000c3cd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[147],0x00010512 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[148],0x00014656 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[149],0x0001879b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[14],0x000fffff +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[150],0x0001c8df +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[151],0x00020a23 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[152],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[153],0x00007baa +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[154],0x0000b97f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[155],0x0000f754 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[156],0x00013529 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[157],0x000172fe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[158],0x0001b0d4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[159],0x0001eea9 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[15],0x000fffff +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[160],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[161],0x0000757b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[162],0x0000b039 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[163],0x0000eaf6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[164],0x000125b4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[165],0x00016072 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[166],0x00019b30 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[167],0x0001d5ed +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[168],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[169],0x00006fe3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[16],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[170],0x0000a7d5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[171],0x0000dfc6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[172],0x000117b8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[173],0x00014faa +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[174],0x0001879b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[175],0x0001bf8c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[176],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[177],0x00006acd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[178],0x0000a034 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[179],0x0000d59a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[17],0x000496d0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[180],0x00010b01 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[181],0x00014067 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[182],0x000175ce +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[183],0x0001ab34 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[184],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[185],0x00006629 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[186],0x0000993d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[187],0x0000cc51 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[188],0x0000ff65 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[189],0x00013279 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[18],0x0006e241 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[190],0x0001658e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[191],0x000198a2 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[192],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[193],0x000061e7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[194],0x000092da +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[195],0x0000c3cd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[196],0x0000f4c1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[197],0x000125b4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[198],0x000156a8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[199],0x0001879b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[19],0x00092da0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[1],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[200],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[201],0x00005dfc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[202],0x00008cfa +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[203],0x0000bbf8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[204],0x0000eaf6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[205],0x000119f4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[206],0x000148f3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[207],0x000177f1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[208],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[209],0x00005a5f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[20],0x000b7937 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[210],0x0000878e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[211],0x0000b4be +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[212],0x0000e1ed +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[213],0x00010f1c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[214],0x00013c4c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[215],0x0001697b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[216],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[217],0x00005706 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[218],0x00008289 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[219],0x0000ae0c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[21],0x000dc4bc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[220],0x0000d98f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[221],0x00010512 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[222],0x00013095 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[223],0x00015c17 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[224],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[225],0x000053eb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[226],0x00007de0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[227],0x0000a7d5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[228],0x0000d1ca +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[229],0x0000fbbf +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[22],0x000fffff +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[230],0x000125b4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[231],0x00014faa +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[232],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[233],0x00005106 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[234],0x00007989 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[235],0x0000a20b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[236],0x0000ca8e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[237],0x0000f311 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[238],0x00011b93 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[239],0x00014416 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[23],0x000fffff +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[240],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[241],0x00004e52 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[242],0x0000757b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[243],0x00009ca4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[244],0x0000c3cd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[245],0x0000eaf6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[246],0x0001121f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[247],0x00013948 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[248],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[249],0x00004bcc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[24],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[250],0x000071b1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[251],0x00009797 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[252],0x0000bd7c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[253],0x0000e362 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[254],0x00010947 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[255],0x00012f2d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[256],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[257],0x0000496d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[258],0x00006e24 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[259],0x000092da +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[25],0x00030f36 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[260],0x0000b790 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[261],0x0000dc47 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[262],0x000100fd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[263],0x000125b4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[264],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[265],0x00004734 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[266],0x00006acd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[267],0x00008e67 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[268],0x0000b200 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[269],0x0000d59a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[26],0x000496d0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[270],0x0000f934 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[271],0x00011cce +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[272],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[273],0x0000451c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[274],0x000067a9 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[275],0x00008a37 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[276],0x0000acc4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[277],0x0000cf52 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[278],0x0000f1df +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[279],0x0001146d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[27],0x00061e76 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[280],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[281],0x00004322 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[282],0x000064b3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[283],0x00008644 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[284],0x0000a7d5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[285],0x0000c965 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[286],0x0000eaf6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[287],0x00010c87 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[288],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[289],0x00004145 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[28],0x0007a613 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[290],0x000061e7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[291],0x00008289 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[292],0x0000a32b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[293],0x0000c3cd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[294],0x0000e46f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[295],0x00010512 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[296],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[297],0x00003f81 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[298],0x00005f42 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[299],0x00007f02 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[29],0x00092da0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[2],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[300],0x00009ec2 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[301],0x0000be83 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[302],0x0000de43 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[303],0x0000fe04 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[304],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[305],0x00003dd5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[306],0x00005cc0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[307],0x00007baa +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[308],0x00009a95 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[309],0x0000b97f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[30],0x000ab53a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[310],0x0000d86a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[311],0x0000f754 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[312],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[313],0x00003c40 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[314],0x00005a5f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[315],0x0000787f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[316],0x0000969e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[317],0x0000b4be +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[318],0x0000d2dd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[319],0x0000f0fd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[31],0x000c3ceb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[320],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[321],0x00003abe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[322],0x0000581d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[323],0x0000757b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[324],0x000092da +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[325],0x0000b039 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[326],0x0000cd98 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[327],0x0000eaf6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[328],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[329],0x0000394f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[32],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[330],0x000055f7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[331],0x0000729e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[332],0x00008f45 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[333],0x0000abed +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[334],0x0000c894 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[335],0x0000e53b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[336],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[337],0x000037f2 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[338],0x000053eb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[339],0x00006fe3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[33],0x00024b68 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[340],0x00008bdc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[341],0x0000a7d5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[342],0x0000c3cd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[343],0x0000dfc6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[344],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[345],0x000036a5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[346],0x000051f7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[347],0x00006d49 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[348],0x0000889b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[349],0x0000a3ed +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[34],0x0003711a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[350],0x0000bf40 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[351],0x0000da92 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[352],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[353],0x00003567 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[354],0x0000501a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[355],0x00006acd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[356],0x00008581 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[357],0x0000a034 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[358],0x0000bae7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[359],0x0000d59a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[35],0x000496d0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[360],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[361],0x00003437 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[362],0x00004e52 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[363],0x0000686e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[364],0x00008289 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[365],0x00009ca4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[366],0x0000b6c0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[367],0x0000d0db +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[368],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[369],0x00003315 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[36],0x0005bc88 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[370],0x00004c9f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[371],0x00006629 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[372],0x00007fb3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[373],0x0000993d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[374],0x0000b2c7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[375],0x0000cc51 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[376],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[377],0x000031fe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[378],0x00004afd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[379],0x000063fc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[37],0x0006e241 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[380],0x00007cfb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[381],0x000095fa +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[382],0x0000aef9 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[383],0x0000c7f8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[384],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[385],0x000030f4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[386],0x0000496d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[387],0x000061e7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[388],0x00007a61 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[389],0x000092da +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[38],0x000807ec +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[390],0x0000ab54 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[391],0x0000c3cd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[392],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[393],0x00002ff4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[394],0x000047ee +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[395],0x00005fe7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[396],0x000077e1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[397],0x00008fdb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[398],0x0000a7d5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[399],0x0000bfce +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[39],0x00092da0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[3],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[400],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[401],0x00002efe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[402],0x0000467d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[403],0x00005dfc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[404],0x0000757b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[405],0x00008cfa +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[406],0x0000a479 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[407],0x0000bbf8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[408],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[409],0x00002e13 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[40],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[410],0x0000451c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[411],0x00005c25 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[412],0x0000732e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[413],0x00008a37 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[414],0x0000a140 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[415],0x0000b849 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[416],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[417],0x00002d30 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[418],0x000043c7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[419],0x00005a5f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[41],0x0001d5ed +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[420],0x000070f7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[421],0x0000878e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[422],0x00009e26 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[423],0x0000b4be +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[424],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[425],0x00002c56 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[426],0x00004280 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[427],0x000058ab +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[428],0x00006ed5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[429],0x00008500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[42],0x0002c0e5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[430],0x00009b2a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[431],0x0000b155 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[432],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[433],0x00002b83 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[434],0x00004145 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[435],0x00005706 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[436],0x00006cc8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[437],0x00008289 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[438],0x0000984b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[439],0x0000ae0c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[43],0x0003abde +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[440],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[441],0x00002ab9 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[442],0x00004015 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[443],0x00005571 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[444],0x00006acd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[445],0x0000802a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[446],0x00009586 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[447],0x0000aae2 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[448],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[449],0x000029f6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[44],0x000496d0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[450],0x00003ef0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[451],0x000053eb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[452],0x000068e5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[453],0x00007de0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[454],0x000092da +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[455],0x0000a7d5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[456],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[457],0x00002939 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[458],0x00003dd5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[459],0x00005272 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[45],0x000581d3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[460],0x0000670e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[461],0x00007baa +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[462],0x00009047 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[463],0x0000a4e3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[464],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[465],0x00002883 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[466],0x00003cc4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[467],0x00005106 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[468],0x00006547 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[469],0x00007989 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[46],0x00066cbd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[470],0x00008dca +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[471],0x0000a20b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[472],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[473],0x000027d3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[474],0x00003bbd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[475],0x00004fa6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[476],0x00006390 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[477],0x00007779 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[478],0x00008b63 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[479],0x00009f4c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[47],0x000757cc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[480],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[481],0x00002729 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[482],0x00003abe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[483],0x00004e52 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[484],0x000061e7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[485],0x0000757b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[486],0x00008910 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[487],0x00009ca4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[488],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[489],0x00002685 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[48],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[490],0x000039c7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[491],0x00004d0a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[492],0x0000604c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[493],0x0000738e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[494],0x000086d1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[495],0x00009a13 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[496],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[497],0x000025e6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[498],0x000038d9 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[499],0x00004bcc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[49],0x0001879b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[4],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[500],0x00005ebe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[501],0x000071b1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[502],0x000084a4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[503],0x00009797 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[504],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[505],0x0000254c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[506],0x000037f2 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[507],0x00004a98 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[508],0x00005d3d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[509],0x00006fe3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[50],0x00024b68 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[510],0x00008289 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[511],0x0000952f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[512],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[513],0x000024b7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[514],0x00003712 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[515],0x0000496d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[516],0x00005bc8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[517],0x00006e24 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[518],0x0000807f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[519],0x000092da +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[51],0x00030f36 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[520],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[521],0x00002426 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[522],0x00003639 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[523],0x0000484c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[524],0x00005a5f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[525],0x00006c72 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[526],0x00007e85 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[527],0x00009098 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[528],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[529],0x0000239a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[52],0x0003d301 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[530],0x00003567 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[531],0x00004734 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[532],0x00005900 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[533],0x00006acd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[534],0x00007c9a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[535],0x00008e67 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[536],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[537],0x00002312 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[538],0x0000349b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[539],0x00004624 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[53],0x000496d0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[540],0x000057ac +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[541],0x00006935 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[542],0x00007abe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[543],0x00008c47 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[544],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[545],0x0000228e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[546],0x000033d5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[547],0x0000451c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[548],0x00005662 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[549],0x000067a9 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[54],0x00055a9d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[550],0x000078f0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[551],0x00008a37 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[552],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[553],0x0000220e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[554],0x00003315 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[555],0x0000441b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[556],0x00005522 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[557],0x00006629 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[558],0x0000772f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[559],0x00008836 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[55],0x00061e76 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[560],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[561],0x00002191 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[562],0x0000325a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[563],0x00004322 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[564],0x000053eb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[565],0x000064b3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[566],0x0000757b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[567],0x00008644 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[568],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[569],0x00002118 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[56],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[570],0x000031a4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[571],0x00004230 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[572],0x000052bc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[573],0x00006348 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[574],0x000073d4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[575],0x00008460 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[576],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[577],0x000020a3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[578],0x000030f4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[579],0x00004145 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[57],0x00014faa +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[580],0x00005196 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[581],0x000061e7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[582],0x00007238 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[583],0x00008289 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[584],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[585],0x00002030 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[586],0x00003048 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[587],0x00004060 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[588],0x00005078 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[589],0x00006090 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[58],0x0001f77d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[590],0x000070a7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[591],0x000080bf +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[592],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[593],0x00001fc1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[594],0x00002fa1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[595],0x00003f81 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[596],0x00004f61 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[597],0x00005f42 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[598],0x00006f22 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[599],0x00007f02 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[59],0x00029f55 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[5],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[600],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[601],0x00001f54 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[602],0x00002efe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[603],0x00003ea8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[604],0x00004e52 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[605],0x00005dfc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[606],0x00006da6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[607],0x00007d50 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[608],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[609],0x00001eeb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[60],0x0003472b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[610],0x00002e60 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[611],0x00003dd5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[612],0x00004d4b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[613],0x00005cc0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[614],0x00006c35 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[615],0x00007baa +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[616],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[617],0x00001e84 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[618],0x00002dc6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[619],0x00003d08 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[61],0x0003eeff +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[620],0x00004c4a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[621],0x00005b8c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[622],0x00006acd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[623],0x00007a0f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[624],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[625],0x00001e20 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[626],0x00002d30 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[627],0x00003c40 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[628],0x00004b4f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[629],0x00005a5f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[62],0x000496d0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[630],0x0000696f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[631],0x0000787f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[632],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[633],0x00001dbe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[634],0x00002c9d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[635],0x00003b7c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[636],0x00004a5b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[637],0x0000593a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[638],0x00006819 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[639],0x000076f8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[63],0x00053ea9 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[640],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[641],0x00001d5f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[642],0x00002c0f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[643],0x00003abe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[644],0x0000496d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[645],0x0000581d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[646],0x000066cc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[647],0x0000757b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[648],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[649],0x00001d02 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[64],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[650],0x00002b83 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[651],0x00003a04 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[652],0x00004885 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[653],0x00005706 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[654],0x00006587 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[655],0x00007408 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[656],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[657],0x00001ca8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[658],0x00002afb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[659],0x0000394f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[65],0x000125b4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[660],0x000047a3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[661],0x000055f7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[662],0x0000644a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[663],0x0000729e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[664],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[665],0x00001c4f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[666],0x00002a77 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[667],0x0000389e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[668],0x000046c6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[669],0x000054ed +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[66],0x0001b88d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[670],0x00006315 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[671],0x0000713c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[672],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[673],0x00001bf9 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[674],0x000029f6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[675],0x000037f2 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[676],0x000045ee +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[677],0x000053eb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[678],0x000061e7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[679],0x00006fe3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[67],0x00024b68 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[680],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[681],0x00001ba5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[682],0x00002977 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[683],0x00003749 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[684],0x0000451c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[685],0x000052ee +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[686],0x000060c0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[687],0x00006e92 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[688],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[689],0x00001b53 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[68],0x0002de44 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[690],0x000028fc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[691],0x000036a5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[692],0x0000444e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[693],0x000051f7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[694],0x00005fa0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[695],0x00006d49 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[696],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[697],0x00001b02 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[698],0x00002883 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[699],0x00003604 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[69],0x0003711a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[6],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[700],0x00004385 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[701],0x00005106 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[702],0x00005e87 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[703],0x00006c08 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[704],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[705],0x00001ab4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[706],0x0000280d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[707],0x00003567 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[708],0x000042c1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[709],0x0000501a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[70],0x000403f6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[710],0x00005d74 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[711],0x00006acd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[712],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[713],0x00001a67 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[714],0x0000279a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[715],0x000034cd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[716],0x00004201 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[717],0x00004f34 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[718],0x00005c67 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[719],0x0000699a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[71],0x000496d0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[720],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[721],0x00001a1c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[722],0x00002729 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[723],0x00003437 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[724],0x00004145 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[725],0x00004e52 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[726],0x00005b60 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[727],0x0000686e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[728],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[729],0x000019d2 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[72],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[730],0x000026bb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[731],0x000033a4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[732],0x0000408d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[733],0x00004d76 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[734],0x00005a5f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[735],0x00006748 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[736],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[737],0x0000198b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[738],0x00002650 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[739],0x00003315 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[73],0x00010512 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[740],0x00003fda +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[741],0x00004c9f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[742],0x00005964 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[743],0x00006629 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[744],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[745],0x00001944 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[746],0x000025e6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[747],0x00003288 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[748],0x00003f2a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[749],0x00004bcc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[74],0x0001879b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[750],0x0000586d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[751],0x0000650f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[752],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[753],0x000018ff +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[754],0x0000257f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[755],0x000031fe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[756],0x00003e7e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[757],0x00004afd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[758],0x0000577d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[759],0x000063fc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[75],0x00020a23 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[760],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[761],0x000018bc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[762],0x0000251a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[763],0x00003178 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[764],0x00003dd5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[765],0x00004a33 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[766],0x00005691 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[767],0x000062ef +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[768],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[769],0x0000187a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[76],0x00028cae +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[770],0x000024b7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[771],0x000030f4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[772],0x00003d30 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[773],0x0000496d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[774],0x000055aa +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[775],0x000061e7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[776],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[777],0x00001839 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[778],0x00002456 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[779],0x00003073 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[77],0x00030f36 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[780],0x00003c8f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[781],0x000048ac +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[782],0x000054c8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[783],0x000060e5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[784],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[785],0x000017fa +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[786],0x000023f7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[787],0x00002ff4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[788],0x00003bf1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[789],0x000047ee +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[78],0x000391be +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[790],0x000053eb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[791],0x00005fe7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[792],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[793],0x000017bc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[794],0x0000239a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[795],0x00002f78 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[796],0x00003b56 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[797],0x00004734 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[798],0x00005312 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[799],0x00005eef +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[79],0x00041445 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[7],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[800],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[801],0x0000177f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[802],0x0000233f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[803],0x00002efe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[804],0x00003abe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[805],0x0000467d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[806],0x0000523d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[807],0x00005dfc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[808],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[809],0x00001744 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[80],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[810],0x000022e6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[811],0x00002e87 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[812],0x00003a29 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[813],0x000045cb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[814],0x0000516c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[815],0x00005d0e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[816],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[817],0x0000170a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[818],0x0000228e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[819],0x00002e13 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[81],0x0000eaf6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[820],0x00003997 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[821],0x0000451c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[822],0x000050a0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[823],0x00005c25 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[824],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[825],0x000016d0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[826],0x00002238 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[827],0x00002da0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[828],0x00003908 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[829],0x00004470 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[82],0x00016072 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[830],0x00004fd8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[831],0x00005b40 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[832],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[833],0x00001698 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[834],0x000021e4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[835],0x00002d30 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[836],0x0000387c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[837],0x000043c7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[838],0x00004f13 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[839],0x00005a5f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[83],0x0001d5ed +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[840],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[841],0x00001661 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[842],0x00002191 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[843],0x00002cc2 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[844],0x000037f2 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[845],0x00004322 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[846],0x00004e52 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[847],0x00005983 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[848],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[849],0x0000162b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[84],0x00024b68 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[850],0x00002140 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[851],0x00002c56 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[852],0x0000376b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[853],0x00004280 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[854],0x00004d95 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[855],0x000058ab +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[856],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[857],0x000015f6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[858],0x000020f1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[859],0x00002beb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[85],0x0002c0e5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[860],0x000036e6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[861],0x000041e1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[862],0x00004cdc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[863],0x000057d6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[864],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[865],0x000015c2 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[866],0x000020a3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[867],0x00002b83 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[868],0x00003664 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[869],0x00004145 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[86],0x0003365f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[870],0x00004c25 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[871],0x00005706 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[872],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[873],0x0000158f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[874],0x00002056 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[875],0x00002b1d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[876],0x000035e4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[877],0x000040ab +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[878],0x00004b73 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[879],0x0000563a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[87],0x0003abde +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[880],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[881],0x0000155d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[882],0x0000200b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[883],0x00002ab9 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[884],0x00003567 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[885],0x00004015 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[886],0x00004ac3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[887],0x00005571 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[888],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[889],0x0000152b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[88],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[890],0x00001fc1 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[891],0x00002a56 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[892],0x000034ec +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[893],0x00003f81 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[894],0x00004a17 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[895],0x000054ac +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[896],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[897],0x000014fb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[898],0x00001f78 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[899],0x000029f6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[89],0x0000d59a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[8],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[900],0x00003473 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[901],0x00003ef0 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[902],0x0000496d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[903],0x000053eb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[904],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[905],0x000014cb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[906],0x00001f31 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[907],0x00002996 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[908],0x000033fc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[909],0x00003e61 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[90],0x00014067 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[910],0x000048c7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[911],0x0000532c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[912],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[913],0x0000149d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[914],0x00001eeb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[915],0x00002939 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[916],0x00003387 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[917],0x00003dd5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[918],0x00004824 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[919],0x00005272 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[91],0x0001ab34 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[920],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[921],0x0000146f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[922],0x00001ea6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[923],0x000028dd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[924],0x00003315 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[925],0x00003d4c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[926],0x00004783 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[927],0x000051ba +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[928],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[929],0x00001442 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[92],0x00021601 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[930],0x00001e62 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[931],0x00002883 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[932],0x000032a4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[933],0x00003cc4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[934],0x000046e5 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[935],0x00005106 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[936],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[937],0x00001416 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[938],0x00001e20 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[939],0x0000282b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[93],0x000280ce +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[940],0x00003235 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[941],0x00003c40 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[942],0x0000464a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[943],0x00005055 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[944],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[945],0x000013ea +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[946],0x00001ddf +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[947],0x000027d3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[948],0x000031c8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[949],0x00003bbd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[94],0x0002eb9c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[950],0x000045b2 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[951],0x00004fa6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[952],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[953],0x000013bf +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[954],0x00001d9e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[955],0x0000277e +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[956],0x0000315d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[957],0x00003b3c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[958],0x0000451c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[959],0x00004efb +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[95],0x0003566b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[960],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[961],0x00001395 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[962],0x00001d5f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[963],0x00002729 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[964],0x000030f4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[965],0x00003abe +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[966],0x00004488 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[967],0x00004e52 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[968],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[969],0x0000136c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[96],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[970],0x00001d21 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[971],0x000026d7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[972],0x0000308c +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[973],0x00003a42 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[974],0x000043f7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[975],0x00004dad +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[976],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[977],0x00001343 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[978],0x00001ce4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[979],0x00002685 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[97],0x0000c3cd +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[980],0x00003026 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[981],0x000039c7 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[982],0x00004369 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[983],0x00004d0a +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[984],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[985],0x0000131b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[986],0x00001ca8 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[987],0x00002635 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[988],0x00002fc2 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[989],0x0000394f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[98],0x000125b4 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[990],0x000042dc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[991],0x00004c69 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[992],0x00000500 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[993],0x000012f3 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[994],0x00001c6d +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[995],0x000025e6 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[996],0x00002f5f +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[997],0x000038d9 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[998],0x00004252 +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[999],0x00004bcc +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[99],0x0001879b +mem,SCH_DEVICE_RATE_MEMORY_DRM.SCH3[9],0x00092da0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[0],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1000],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1001],0x000012cc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1002],0x00001c32 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1003],0x00002598 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1004],0x00002efe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1005],0x00003864 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1006],0x000041ca +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1007],0x00004b30 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1008],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1009],0x000012a6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[100],0x0001e981 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1010],0x00001bf9 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1011],0x0000254c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1012],0x00002e9f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1013],0x000037f2 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1014],0x00004145 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1015],0x00004a98 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1016],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1017],0x00001281 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1018],0x00001bc1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1019],0x00002501 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[101],0x00024b68 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1020],0x00002e41 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1021],0x00003781 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1022],0x000040c1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1023],0x00004a01 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1024],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1025],0x0000125c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1026],0x00001b89 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1027],0x000024b7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1028],0x00002de4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1029],0x00003712 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[102],0x0002ad4f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1030],0x00004040 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1031],0x0000496d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1032],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1033],0x00001237 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1034],0x00001b53 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1035],0x0000246e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1036],0x00002d89 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1037],0x000036a5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1038],0x00003fc0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1039],0x000048dc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[103],0x00030f36 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1040],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1041],0x00001213 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1042],0x00001b1d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1043],0x00002426 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1044],0x00002d30 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1045],0x00003639 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1046],0x00003f43 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1047],0x0000484c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1048],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1049],0x000011f0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[104],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1050],0x00001ae8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1051],0x000023e0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1052],0x00002cd7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1053],0x000035cf +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1054],0x00003ec7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1055],0x000047bf +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1056],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1057],0x000011cd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1058],0x00001ab4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1059],0x0000239a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[105],0x0000b4be +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1060],0x00002c80 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1061],0x00003567 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1062],0x00003e4d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1063],0x00004734 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1064],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1065],0x000011ab +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1066],0x00001a80 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1067],0x00002356 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1068],0x00002c2b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1069],0x00003500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[106],0x00010f1c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1070],0x00003dd5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1071],0x000046ab +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1072],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1073],0x00001189 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1074],0x00001a4e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1075],0x00002312 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1076],0x00002bd6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1077],0x0000349b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1078],0x00003d5f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1079],0x00004624 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[107],0x0001697b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1080],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1081],0x00001168 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1082],0x00001a1c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1083],0x000022d0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1084],0x00002b83 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1085],0x00003437 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1086],0x00003ceb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1087],0x0000459f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1088],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1089],0x00001147 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[108],0x0001c3d9 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1090],0x000019eb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1091],0x0000228e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1092],0x00002b31 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1093],0x000033d5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1094],0x00003c78 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1095],0x0000451c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1096],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1097],0x00001127 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1098],0x000019ba +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1099],0x0000224d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[109],0x00021e3a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[10],0x000dc4bc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1100],0x00002ae1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1101],0x00003374 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1102],0x00003c07 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1103],0x0000449a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1104],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1105],0x00001107 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1106],0x0000198b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1107],0x0000220e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1108],0x00002a91 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1109],0x00003315 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[110],0x00027898 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1110],0x00003b98 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1111],0x0000441b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1112],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1113],0x000010e8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1114],0x0000195b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1115],0x000021cf +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1116],0x00002a43 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1117],0x000032b6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1118],0x00003b2a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1119],0x0000439e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[111],0x0002d2f5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1120],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1121],0x000010c9 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1122],0x0000192d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1123],0x00002191 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1124],0x000029f6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1125],0x0000325a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1126],0x00003abe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1127],0x00004322 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1128],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1129],0x000010aa +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[112],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1130],0x000018ff +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1131],0x00002154 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1132],0x000029a9 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1133],0x000031fe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1134],0x00003a53 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1135],0x000042a8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1136],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1137],0x0000108c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1138],0x000018d2 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1139],0x00002118 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[113],0x0000a7d5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1140],0x0000295e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1141],0x000031a4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1142],0x000039ea +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1143],0x00004230 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1144],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1145],0x0000106f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1146],0x000018a6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1147],0x000020dd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1148],0x00002914 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1149],0x0000314b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[114],0x0000fbbf +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1150],0x00003982 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1151],0x000041ba +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1152],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1153],0x00001052 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1154],0x0000187a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1155],0x000020a3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1156],0x000028cb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1157],0x000030f4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1158],0x0000391c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1159],0x00004145 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[115],0x00014faa +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1160],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1161],0x00001035 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1162],0x0000184f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1163],0x00002069 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1164],0x00002883 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1165],0x0000309d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1166],0x000038b7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1167],0x000040d2 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1168],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1169],0x00001018 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[116],0x0001a394 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1170],0x00001824 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1171],0x00002030 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1172],0x0000283c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1173],0x00003048 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1174],0x00003854 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1175],0x00004060 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1176],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1177],0x00000ffc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1178],0x000017fa +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1179],0x00001ff8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[117],0x0001f77d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1180],0x000027f6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1181],0x00002ff4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1182],0x000037f2 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1183],0x00003ff0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1184],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1185],0x00000fe1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1186],0x000017d1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1187],0x00001fc1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1188],0x000027b1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1189],0x00002fa1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[118],0x00024b68 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1190],0x00003791 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1191],0x00003f81 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1192],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1193],0x00000fc5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1194],0x000017a8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1195],0x00001f8a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1196],0x0000276d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1197],0x00002f4f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1198],0x00003732 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1199],0x00003f14 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[119],0x00029f55 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[11],0x000fffff +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1200],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1201],0x00000faa +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1202],0x0000177f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1203],0x00001f54 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1204],0x00002729 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1205],0x00002efe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1206],0x000036d3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1207],0x00003ea8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1208],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1209],0x00000f90 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[120],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1210],0x00001758 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1211],0x00001f1f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1212],0x000026e7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1213],0x00002eaf +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1214],0x00003676 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1215],0x00003e3e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1216],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1217],0x00000f76 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1218],0x00001730 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1219],0x00001eeb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[121],0x00009ca4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1220],0x000026a6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1221],0x00002e60 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1222],0x0000361b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1223],0x00003dd5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1224],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1225],0x00000f5c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1226],0x0000170a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1227],0x00001eb7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1228],0x00002665 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1229],0x00002e13 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[122],0x0000eaf6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1230],0x000035c0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1231],0x00003d6e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1232],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1233],0x00000f42 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1234],0x000016e3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1235],0x00001e84 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1236],0x00002625 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1237],0x00002dc6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1238],0x00003567 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1239],0x00003d08 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[123],0x00013948 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1240],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1241],0x00000f29 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1242],0x000016bd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1243],0x00001e52 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1244],0x000025e6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1245],0x00002d7a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1246],0x0000350f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1247],0x00003ca3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1248],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1249],0x00000f10 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[124],0x0001879b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1250],0x00001698 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1251],0x00001e20 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1252],0x000025a8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1253],0x00002d30 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1254],0x000034b8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1255],0x00003c40 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1256],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1257],0x00000ef8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1258],0x00001673 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1259],0x00001def +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[125],0x0001d5ed +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1260],0x0000256a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1261],0x00002ce6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1262],0x00003462 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1263],0x00003bdd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1264],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1265],0x00000edf +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1266],0x0000164f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1267],0x00001dbe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1268],0x0000252e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1269],0x00002c9d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[126],0x0002243f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1270],0x0000340d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1271],0x00003b7c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1272],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1273],0x00000ec8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1274],0x0000162b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1275],0x00001d8f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1276],0x000024f2 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1277],0x00002c56 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1278],0x000033b9 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1279],0x00003b1d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[127],0x00027292 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1280],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1281],0x00000eb0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1282],0x00001608 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1283],0x00001d5f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1284],0x000024b7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1285],0x00002c0f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1286],0x00003366 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1287],0x00003abe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[128],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[129],0x000092da +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[12],0x000fffff +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[130],0x0000dc47 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[131],0x000125b4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[132],0x00016f21 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[133],0x0001b88d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[134],0x000201fb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[135],0x00024b68 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[136],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[137],0x00008a37 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[138],0x0000cf52 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[139],0x0001146d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[13],0x000fffff +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[140],0x00015988 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[141],0x00019ea4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[142],0x0001e3bf +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[143],0x000228da +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[144],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[145],0x00008289 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[146],0x0000c3cd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[147],0x00010512 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[148],0x00014656 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[149],0x0001879b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[14],0x000fffff +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[150],0x0001c8df +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[151],0x00020a23 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[152],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[153],0x00007baa +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[154],0x0000b97f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[155],0x0000f754 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[156],0x00013529 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[157],0x000172fe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[158],0x0001b0d4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[159],0x0001eea9 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[15],0x000fffff +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[160],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[161],0x0000757b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[162],0x0000b039 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[163],0x0000eaf6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[164],0x000125b4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[165],0x00016072 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[166],0x00019b30 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[167],0x0001d5ed +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[168],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[169],0x00006fe3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[16],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[170],0x0000a7d5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[171],0x0000dfc6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[172],0x000117b8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[173],0x00014faa +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[174],0x0001879b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[175],0x0001bf8c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[176],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[177],0x00006acd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[178],0x0000a034 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[179],0x0000d59a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[17],0x000496d0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[180],0x00010b01 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[181],0x00014067 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[182],0x000175ce +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[183],0x0001ab34 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[184],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[185],0x00006629 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[186],0x0000993d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[187],0x0000cc51 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[188],0x0000ff65 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[189],0x00013279 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[18],0x0006e241 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[190],0x0001658e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[191],0x000198a2 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[192],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[193],0x000061e7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[194],0x000092da +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[195],0x0000c3cd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[196],0x0000f4c1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[197],0x000125b4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[198],0x000156a8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[199],0x0001879b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[19],0x00092da0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[1],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[200],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[201],0x00005dfc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[202],0x00008cfa +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[203],0x0000bbf8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[204],0x0000eaf6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[205],0x000119f4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[206],0x000148f3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[207],0x000177f1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[208],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[209],0x00005a5f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[20],0x000b7937 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[210],0x0000878e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[211],0x0000b4be +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[212],0x0000e1ed +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[213],0x00010f1c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[214],0x00013c4c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[215],0x0001697b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[216],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[217],0x00005706 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[218],0x00008289 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[219],0x0000ae0c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[21],0x000dc4bc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[220],0x0000d98f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[221],0x00010512 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[222],0x00013095 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[223],0x00015c17 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[224],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[225],0x000053eb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[226],0x00007de0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[227],0x0000a7d5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[228],0x0000d1ca +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[229],0x0000fbbf +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[22],0x000fffff +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[230],0x000125b4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[231],0x00014faa +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[232],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[233],0x00005106 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[234],0x00007989 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[235],0x0000a20b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[236],0x0000ca8e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[237],0x0000f311 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[238],0x00011b93 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[239],0x00014416 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[23],0x000fffff +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[240],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[241],0x00004e52 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[242],0x0000757b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[243],0x00009ca4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[244],0x0000c3cd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[245],0x0000eaf6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[246],0x0001121f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[247],0x00013948 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[248],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[249],0x00004bcc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[24],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[250],0x000071b1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[251],0x00009797 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[252],0x0000bd7c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[253],0x0000e362 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[254],0x00010947 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[255],0x00012f2d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[256],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[257],0x0000496d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[258],0x00006e24 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[259],0x000092da +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[25],0x00030f36 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[260],0x0000b790 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[261],0x0000dc47 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[262],0x000100fd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[263],0x000125b4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[264],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[265],0x00004734 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[266],0x00006acd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[267],0x00008e67 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[268],0x0000b200 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[269],0x0000d59a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[26],0x000496d0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[270],0x0000f934 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[271],0x00011cce +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[272],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[273],0x0000451c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[274],0x000067a9 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[275],0x00008a37 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[276],0x0000acc4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[277],0x0000cf52 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[278],0x0000f1df +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[279],0x0001146d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[27],0x00061e76 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[280],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[281],0x00004322 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[282],0x000064b3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[283],0x00008644 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[284],0x0000a7d5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[285],0x0000c965 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[286],0x0000eaf6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[287],0x00010c87 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[288],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[289],0x00004145 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[28],0x0007a613 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[290],0x000061e7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[291],0x00008289 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[292],0x0000a32b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[293],0x0000c3cd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[294],0x0000e46f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[295],0x00010512 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[296],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[297],0x00003f81 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[298],0x00005f42 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[299],0x00007f02 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[29],0x00092da0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[2],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[300],0x00009ec2 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[301],0x0000be83 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[302],0x0000de43 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[303],0x0000fe04 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[304],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[305],0x00003dd5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[306],0x00005cc0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[307],0x00007baa +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[308],0x00009a95 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[309],0x0000b97f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[30],0x000ab53a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[310],0x0000d86a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[311],0x0000f754 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[312],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[313],0x00003c40 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[314],0x00005a5f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[315],0x0000787f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[316],0x0000969e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[317],0x0000b4be +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[318],0x0000d2dd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[319],0x0000f0fd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[31],0x000c3ceb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[320],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[321],0x00003abe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[322],0x0000581d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[323],0x0000757b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[324],0x000092da +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[325],0x0000b039 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[326],0x0000cd98 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[327],0x0000eaf6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[328],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[329],0x0000394f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[32],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[330],0x000055f7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[331],0x0000729e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[332],0x00008f45 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[333],0x0000abed +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[334],0x0000c894 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[335],0x0000e53b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[336],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[337],0x000037f2 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[338],0x000053eb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[339],0x00006fe3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[33],0x00024b68 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[340],0x00008bdc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[341],0x0000a7d5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[342],0x0000c3cd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[343],0x0000dfc6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[344],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[345],0x000036a5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[346],0x000051f7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[347],0x00006d49 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[348],0x0000889b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[349],0x0000a3ed +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[34],0x0003711a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[350],0x0000bf40 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[351],0x0000da92 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[352],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[353],0x00003567 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[354],0x0000501a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[355],0x00006acd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[356],0x00008581 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[357],0x0000a034 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[358],0x0000bae7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[359],0x0000d59a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[35],0x000496d0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[360],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[361],0x00003437 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[362],0x00004e52 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[363],0x0000686e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[364],0x00008289 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[365],0x00009ca4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[366],0x0000b6c0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[367],0x0000d0db +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[368],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[369],0x00003315 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[36],0x0005bc88 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[370],0x00004c9f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[371],0x00006629 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[372],0x00007fb3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[373],0x0000993d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[374],0x0000b2c7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[375],0x0000cc51 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[376],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[377],0x000031fe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[378],0x00004afd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[379],0x000063fc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[37],0x0006e241 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[380],0x00007cfb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[381],0x000095fa +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[382],0x0000aef9 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[383],0x0000c7f8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[384],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[385],0x000030f4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[386],0x0000496d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[387],0x000061e7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[388],0x00007a61 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[389],0x000092da +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[38],0x000807ec +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[390],0x0000ab54 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[391],0x0000c3cd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[392],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[393],0x00002ff4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[394],0x000047ee +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[395],0x00005fe7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[396],0x000077e1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[397],0x00008fdb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[398],0x0000a7d5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[399],0x0000bfce +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[39],0x00092da0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[3],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[400],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[401],0x00002efe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[402],0x0000467d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[403],0x00005dfc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[404],0x0000757b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[405],0x00008cfa +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[406],0x0000a479 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[407],0x0000bbf8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[408],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[409],0x00002e13 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[40],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[410],0x0000451c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[411],0x00005c25 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[412],0x0000732e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[413],0x00008a37 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[414],0x0000a140 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[415],0x0000b849 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[416],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[417],0x00002d30 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[418],0x000043c7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[419],0x00005a5f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[41],0x0001d5ed +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[420],0x000070f7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[421],0x0000878e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[422],0x00009e26 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[423],0x0000b4be +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[424],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[425],0x00002c56 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[426],0x00004280 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[427],0x000058ab +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[428],0x00006ed5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[429],0x00008500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[42],0x0002c0e5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[430],0x00009b2a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[431],0x0000b155 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[432],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[433],0x00002b83 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[434],0x00004145 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[435],0x00005706 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[436],0x00006cc8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[437],0x00008289 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[438],0x0000984b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[439],0x0000ae0c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[43],0x0003abde +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[440],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[441],0x00002ab9 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[442],0x00004015 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[443],0x00005571 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[444],0x00006acd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[445],0x0000802a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[446],0x00009586 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[447],0x0000aae2 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[448],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[449],0x000029f6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[44],0x000496d0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[450],0x00003ef0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[451],0x000053eb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[452],0x000068e5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[453],0x00007de0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[454],0x000092da +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[455],0x0000a7d5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[456],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[457],0x00002939 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[458],0x00003dd5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[459],0x00005272 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[45],0x000581d3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[460],0x0000670e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[461],0x00007baa +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[462],0x00009047 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[463],0x0000a4e3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[464],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[465],0x00002883 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[466],0x00003cc4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[467],0x00005106 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[468],0x00006547 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[469],0x00007989 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[46],0x00066cbd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[470],0x00008dca +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[471],0x0000a20b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[472],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[473],0x000027d3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[474],0x00003bbd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[475],0x00004fa6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[476],0x00006390 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[477],0x00007779 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[478],0x00008b63 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[479],0x00009f4c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[47],0x000757cc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[480],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[481],0x00002729 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[482],0x00003abe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[483],0x00004e52 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[484],0x000061e7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[485],0x0000757b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[486],0x00008910 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[487],0x00009ca4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[488],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[489],0x00002685 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[48],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[490],0x000039c7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[491],0x00004d0a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[492],0x0000604c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[493],0x0000738e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[494],0x000086d1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[495],0x00009a13 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[496],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[497],0x000025e6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[498],0x000038d9 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[499],0x00004bcc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[49],0x0001879b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[4],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[500],0x00005ebe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[501],0x000071b1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[502],0x000084a4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[503],0x00009797 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[504],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[505],0x0000254c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[506],0x000037f2 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[507],0x00004a98 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[508],0x00005d3d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[509],0x00006fe3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[50],0x00024b68 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[510],0x00008289 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[511],0x0000952f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[512],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[513],0x000024b7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[514],0x00003712 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[515],0x0000496d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[516],0x00005bc8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[517],0x00006e24 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[518],0x0000807f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[519],0x000092da +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[51],0x00030f36 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[520],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[521],0x00002426 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[522],0x00003639 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[523],0x0000484c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[524],0x00005a5f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[525],0x00006c72 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[526],0x00007e85 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[527],0x00009098 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[528],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[529],0x0000239a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[52],0x0003d301 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[530],0x00003567 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[531],0x00004734 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[532],0x00005900 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[533],0x00006acd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[534],0x00007c9a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[535],0x00008e67 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[536],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[537],0x00002312 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[538],0x0000349b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[539],0x00004624 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[53],0x000496d0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[540],0x000057ac +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[541],0x00006935 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[542],0x00007abe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[543],0x00008c47 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[544],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[545],0x0000228e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[546],0x000033d5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[547],0x0000451c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[548],0x00005662 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[549],0x000067a9 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[54],0x00055a9d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[550],0x000078f0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[551],0x00008a37 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[552],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[553],0x0000220e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[554],0x00003315 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[555],0x0000441b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[556],0x00005522 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[557],0x00006629 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[558],0x0000772f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[559],0x00008836 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[55],0x00061e76 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[560],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[561],0x00002191 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[562],0x0000325a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[563],0x00004322 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[564],0x000053eb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[565],0x000064b3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[566],0x0000757b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[567],0x00008644 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[568],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[569],0x00002118 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[56],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[570],0x000031a4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[571],0x00004230 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[572],0x000052bc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[573],0x00006348 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[574],0x000073d4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[575],0x00008460 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[576],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[577],0x000020a3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[578],0x000030f4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[579],0x00004145 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[57],0x00014faa +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[580],0x00005196 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[581],0x000061e7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[582],0x00007238 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[583],0x00008289 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[584],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[585],0x00002030 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[586],0x00003048 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[587],0x00004060 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[588],0x00005078 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[589],0x00006090 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[58],0x0001f77d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[590],0x000070a7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[591],0x000080bf +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[592],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[593],0x00001fc1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[594],0x00002fa1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[595],0x00003f81 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[596],0x00004f61 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[597],0x00005f42 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[598],0x00006f22 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[599],0x00007f02 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[59],0x00029f55 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[5],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[600],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[601],0x00001f54 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[602],0x00002efe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[603],0x00003ea8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[604],0x00004e52 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[605],0x00005dfc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[606],0x00006da6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[607],0x00007d50 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[608],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[609],0x00001eeb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[60],0x0003472b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[610],0x00002e60 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[611],0x00003dd5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[612],0x00004d4b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[613],0x00005cc0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[614],0x00006c35 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[615],0x00007baa +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[616],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[617],0x00001e84 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[618],0x00002dc6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[619],0x00003d08 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[61],0x0003eeff +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[620],0x00004c4a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[621],0x00005b8c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[622],0x00006acd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[623],0x00007a0f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[624],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[625],0x00001e20 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[626],0x00002d30 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[627],0x00003c40 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[628],0x00004b4f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[629],0x00005a5f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[62],0x000496d0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[630],0x0000696f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[631],0x0000787f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[632],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[633],0x00001dbe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[634],0x00002c9d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[635],0x00003b7c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[636],0x00004a5b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[637],0x0000593a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[638],0x00006819 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[639],0x000076f8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[63],0x00053ea9 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[640],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[641],0x00001d5f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[642],0x00002c0f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[643],0x00003abe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[644],0x0000496d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[645],0x0000581d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[646],0x000066cc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[647],0x0000757b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[648],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[649],0x00001d02 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[64],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[650],0x00002b83 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[651],0x00003a04 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[652],0x00004885 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[653],0x00005706 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[654],0x00006587 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[655],0x00007408 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[656],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[657],0x00001ca8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[658],0x00002afb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[659],0x0000394f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[65],0x000125b4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[660],0x000047a3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[661],0x000055f7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[662],0x0000644a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[663],0x0000729e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[664],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[665],0x00001c4f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[666],0x00002a77 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[667],0x0000389e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[668],0x000046c6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[669],0x000054ed +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[66],0x0001b88d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[670],0x00006315 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[671],0x0000713c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[672],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[673],0x00001bf9 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[674],0x000029f6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[675],0x000037f2 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[676],0x000045ee +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[677],0x000053eb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[678],0x000061e7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[679],0x00006fe3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[67],0x00024b68 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[680],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[681],0x00001ba5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[682],0x00002977 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[683],0x00003749 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[684],0x0000451c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[685],0x000052ee +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[686],0x000060c0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[687],0x00006e92 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[688],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[689],0x00001b53 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[68],0x0002de44 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[690],0x000028fc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[691],0x000036a5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[692],0x0000444e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[693],0x000051f7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[694],0x00005fa0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[695],0x00006d49 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[696],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[697],0x00001b02 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[698],0x00002883 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[699],0x00003604 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[69],0x0003711a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[6],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[700],0x00004385 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[701],0x00005106 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[702],0x00005e87 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[703],0x00006c08 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[704],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[705],0x00001ab4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[706],0x0000280d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[707],0x00003567 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[708],0x000042c1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[709],0x0000501a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[70],0x000403f6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[710],0x00005d74 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[711],0x00006acd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[712],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[713],0x00001a67 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[714],0x0000279a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[715],0x000034cd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[716],0x00004201 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[717],0x00004f34 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[718],0x00005c67 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[719],0x0000699a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[71],0x000496d0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[720],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[721],0x00001a1c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[722],0x00002729 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[723],0x00003437 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[724],0x00004145 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[725],0x00004e52 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[726],0x00005b60 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[727],0x0000686e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[728],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[729],0x000019d2 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[72],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[730],0x000026bb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[731],0x000033a4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[732],0x0000408d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[733],0x00004d76 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[734],0x00005a5f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[735],0x00006748 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[736],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[737],0x0000198b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[738],0x00002650 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[739],0x00003315 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[73],0x00010512 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[740],0x00003fda +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[741],0x00004c9f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[742],0x00005964 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[743],0x00006629 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[744],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[745],0x00001944 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[746],0x000025e6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[747],0x00003288 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[748],0x00003f2a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[749],0x00004bcc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[74],0x0001879b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[750],0x0000586d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[751],0x0000650f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[752],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[753],0x000018ff +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[754],0x0000257f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[755],0x000031fe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[756],0x00003e7e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[757],0x00004afd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[758],0x0000577d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[759],0x000063fc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[75],0x00020a23 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[760],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[761],0x000018bc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[762],0x0000251a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[763],0x00003178 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[764],0x00003dd5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[765],0x00004a33 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[766],0x00005691 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[767],0x000062ef +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[768],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[769],0x0000187a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[76],0x00028cae +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[770],0x000024b7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[771],0x000030f4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[772],0x00003d30 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[773],0x0000496d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[774],0x000055aa +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[775],0x000061e7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[776],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[777],0x00001839 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[778],0x00002456 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[779],0x00003073 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[77],0x00030f36 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[780],0x00003c8f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[781],0x000048ac +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[782],0x000054c8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[783],0x000060e5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[784],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[785],0x000017fa +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[786],0x000023f7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[787],0x00002ff4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[788],0x00003bf1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[789],0x000047ee +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[78],0x000391be +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[790],0x000053eb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[791],0x00005fe7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[792],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[793],0x000017bc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[794],0x0000239a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[795],0x00002f78 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[796],0x00003b56 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[797],0x00004734 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[798],0x00005312 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[799],0x00005eef +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[79],0x00041445 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[7],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[800],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[801],0x0000177f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[802],0x0000233f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[803],0x00002efe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[804],0x00003abe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[805],0x0000467d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[806],0x0000523d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[807],0x00005dfc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[808],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[809],0x00001744 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[80],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[810],0x000022e6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[811],0x00002e87 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[812],0x00003a29 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[813],0x000045cb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[814],0x0000516c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[815],0x00005d0e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[816],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[817],0x0000170a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[818],0x0000228e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[819],0x00002e13 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[81],0x0000eaf6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[820],0x00003997 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[821],0x0000451c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[822],0x000050a0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[823],0x00005c25 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[824],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[825],0x000016d0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[826],0x00002238 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[827],0x00002da0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[828],0x00003908 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[829],0x00004470 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[82],0x00016072 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[830],0x00004fd8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[831],0x00005b40 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[832],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[833],0x00001698 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[834],0x000021e4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[835],0x00002d30 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[836],0x0000387c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[837],0x000043c7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[838],0x00004f13 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[839],0x00005a5f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[83],0x0001d5ed +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[840],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[841],0x00001661 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[842],0x00002191 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[843],0x00002cc2 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[844],0x000037f2 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[845],0x00004322 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[846],0x00004e52 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[847],0x00005983 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[848],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[849],0x0000162b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[84],0x00024b68 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[850],0x00002140 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[851],0x00002c56 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[852],0x0000376b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[853],0x00004280 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[854],0x00004d95 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[855],0x000058ab +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[856],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[857],0x000015f6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[858],0x000020f1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[859],0x00002beb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[85],0x0002c0e5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[860],0x000036e6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[861],0x000041e1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[862],0x00004cdc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[863],0x000057d6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[864],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[865],0x000015c2 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[866],0x000020a3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[867],0x00002b83 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[868],0x00003664 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[869],0x00004145 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[86],0x0003365f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[870],0x00004c25 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[871],0x00005706 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[872],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[873],0x0000158f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[874],0x00002056 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[875],0x00002b1d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[876],0x000035e4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[877],0x000040ab +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[878],0x00004b73 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[879],0x0000563a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[87],0x0003abde +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[880],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[881],0x0000155d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[882],0x0000200b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[883],0x00002ab9 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[884],0x00003567 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[885],0x00004015 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[886],0x00004ac3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[887],0x00005571 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[888],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[889],0x0000152b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[88],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[890],0x00001fc1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[891],0x00002a56 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[892],0x000034ec +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[893],0x00003f81 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[894],0x00004a17 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[895],0x000054ac +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[896],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[897],0x000014fb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[898],0x00001f78 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[899],0x000029f6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[89],0x0000d59a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[8],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[900],0x00003473 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[901],0x00003ef0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[902],0x0000496d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[903],0x000053eb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[904],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[905],0x000014cb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[906],0x00001f31 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[907],0x00002996 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[908],0x000033fc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[909],0x00003e61 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[90],0x00014067 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[910],0x000048c7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[911],0x0000532c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[912],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[913],0x0000149d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[914],0x00001eeb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[915],0x00002939 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[916],0x00003387 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[917],0x00003dd5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[918],0x00004824 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[919],0x00005272 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[91],0x0001ab34 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[920],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[921],0x0000146f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[922],0x00001ea6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[923],0x000028dd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[924],0x00003315 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[925],0x00003d4c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[926],0x00004783 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[927],0x000051ba +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[928],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[929],0x00001442 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[92],0x00021601 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[930],0x00001e62 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[931],0x00002883 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[932],0x000032a4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[933],0x00003cc4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[934],0x000046e5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[935],0x00005106 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[936],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[937],0x00001416 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[938],0x00001e20 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[939],0x0000282b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[93],0x000280ce +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[940],0x00003235 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[941],0x00003c40 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[942],0x0000464a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[943],0x00005055 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[944],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[945],0x000013ea +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[946],0x00001ddf +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[947],0x000027d3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[948],0x000031c8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[949],0x00003bbd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[94],0x0002eb9c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[950],0x000045b2 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[951],0x00004fa6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[952],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[953],0x000013bf +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[954],0x00001d9e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[955],0x0000277e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[956],0x0000315d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[957],0x00003b3c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[958],0x0000451c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[959],0x00004efb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[95],0x0003566b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[960],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[961],0x00001395 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[962],0x00001d5f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[963],0x00002729 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[964],0x000030f4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[965],0x00003abe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[966],0x00004488 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[967],0x00004e52 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[968],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[969],0x0000136c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[96],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[970],0x00001d21 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[971],0x000026d7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[972],0x0000308c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[973],0x00003a42 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[974],0x000043f7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[975],0x00004dad +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[976],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[977],0x00001343 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[978],0x00001ce4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[979],0x00002685 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[97],0x0000c3cd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[980],0x00003026 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[981],0x000039c7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[982],0x00004369 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[983],0x00004d0a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[984],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[985],0x0000131b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[986],0x00001ca8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[987],0x00002635 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[988],0x00002fc2 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[989],0x0000394f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[98],0x000125b4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[990],0x000042dc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[991],0x00004c69 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[992],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[993],0x000012f3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[994],0x00001c6d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[995],0x000025e6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[996],0x00002f5f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[997],0x000038d9 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[998],0x00004252 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[999],0x00004bcc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[99],0x0001879b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH0[9],0x00092da0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[0],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1000],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1001],0x000012cc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1002],0x00001c32 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1003],0x00002598 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1004],0x00002efe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1005],0x00003864 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1006],0x000041ca +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1007],0x00004b30 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1008],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1009],0x000012a6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[100],0x0001e981 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1010],0x00001bf9 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1011],0x0000254c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1012],0x00002e9f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1013],0x000037f2 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1014],0x00004145 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1015],0x00004a98 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1016],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1017],0x00001281 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1018],0x00001bc1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1019],0x00002501 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[101],0x00024b68 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1020],0x00002e41 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1021],0x00003781 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1022],0x000040c1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1023],0x00004a01 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1024],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1025],0x0000125c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1026],0x00001b89 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1027],0x000024b7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1028],0x00002de4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1029],0x00003712 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[102],0x0002ad4f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1030],0x00004040 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1031],0x0000496d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1032],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1033],0x00001237 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1034],0x00001b53 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1035],0x0000246e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1036],0x00002d89 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1037],0x000036a5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1038],0x00003fc0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1039],0x000048dc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[103],0x00030f36 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1040],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1041],0x00001213 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1042],0x00001b1d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1043],0x00002426 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1044],0x00002d30 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1045],0x00003639 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1046],0x00003f43 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1047],0x0000484c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1048],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1049],0x000011f0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[104],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1050],0x00001ae8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1051],0x000023e0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1052],0x00002cd7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1053],0x000035cf +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1054],0x00003ec7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1055],0x000047bf +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1056],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1057],0x000011cd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1058],0x00001ab4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1059],0x0000239a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[105],0x0000b4be +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1060],0x00002c80 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1061],0x00003567 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1062],0x00003e4d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1063],0x00004734 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1064],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1065],0x000011ab +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1066],0x00001a80 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1067],0x00002356 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1068],0x00002c2b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1069],0x00003500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[106],0x00010f1c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1070],0x00003dd5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1071],0x000046ab +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1072],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1073],0x00001189 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1074],0x00001a4e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1075],0x00002312 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1076],0x00002bd6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1077],0x0000349b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1078],0x00003d5f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1079],0x00004624 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[107],0x0001697b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1080],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1081],0x00001168 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1082],0x00001a1c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1083],0x000022d0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1084],0x00002b83 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1085],0x00003437 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1086],0x00003ceb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1087],0x0000459f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1088],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1089],0x00001147 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[108],0x0001c3d9 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1090],0x000019eb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1091],0x0000228e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1092],0x00002b31 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1093],0x000033d5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1094],0x00003c78 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1095],0x0000451c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1096],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1097],0x00001127 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1098],0x000019ba +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1099],0x0000224d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[109],0x00021e3a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[10],0x000dc4bc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1100],0x00002ae1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1101],0x00003374 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1102],0x00003c07 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1103],0x0000449a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1104],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1105],0x00001107 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1106],0x0000198b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1107],0x0000220e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1108],0x00002a91 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1109],0x00003315 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[110],0x00027898 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1110],0x00003b98 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1111],0x0000441b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1112],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1113],0x000010e8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1114],0x0000195b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1115],0x000021cf +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1116],0x00002a43 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1117],0x000032b6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1118],0x00003b2a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1119],0x0000439e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[111],0x0002d2f5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1120],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1121],0x000010c9 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1122],0x0000192d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1123],0x00002191 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1124],0x000029f6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1125],0x0000325a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1126],0x00003abe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1127],0x00004322 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1128],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1129],0x000010aa +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[112],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1130],0x000018ff +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1131],0x00002154 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1132],0x000029a9 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1133],0x000031fe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1134],0x00003a53 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1135],0x000042a8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1136],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1137],0x0000108c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1138],0x000018d2 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1139],0x00002118 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[113],0x0000a7d5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1140],0x0000295e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1141],0x000031a4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1142],0x000039ea +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1143],0x00004230 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1144],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1145],0x0000106f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1146],0x000018a6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1147],0x000020dd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1148],0x00002914 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1149],0x0000314b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[114],0x0000fbbf +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1150],0x00003982 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1151],0x000041ba +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1152],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1153],0x00001052 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1154],0x0000187a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1155],0x000020a3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1156],0x000028cb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1157],0x000030f4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1158],0x0000391c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1159],0x00004145 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[115],0x00014faa +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1160],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1161],0x00001035 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1162],0x0000184f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1163],0x00002069 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1164],0x00002883 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1165],0x0000309d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1166],0x000038b7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1167],0x000040d2 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1168],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1169],0x00001018 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[116],0x0001a394 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1170],0x00001824 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1171],0x00002030 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1172],0x0000283c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1173],0x00003048 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1174],0x00003854 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1175],0x00004060 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1176],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1177],0x00000ffc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1178],0x000017fa +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1179],0x00001ff8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[117],0x0001f77d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1180],0x000027f6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1181],0x00002ff4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1182],0x000037f2 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1183],0x00003ff0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1184],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1185],0x00000fe1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1186],0x000017d1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1187],0x00001fc1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1188],0x000027b1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1189],0x00002fa1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[118],0x00024b68 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1190],0x00003791 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1191],0x00003f81 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1192],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1193],0x00000fc5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1194],0x000017a8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1195],0x00001f8a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1196],0x0000276d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1197],0x00002f4f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1198],0x00003732 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1199],0x00003f14 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[119],0x00029f55 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[11],0x000fffff +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1200],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1201],0x00000faa +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1202],0x0000177f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1203],0x00001f54 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1204],0x00002729 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1205],0x00002efe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1206],0x000036d3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1207],0x00003ea8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1208],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1209],0x00000f90 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[120],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1210],0x00001758 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1211],0x00001f1f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1212],0x000026e7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1213],0x00002eaf +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1214],0x00003676 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1215],0x00003e3e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1216],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1217],0x00000f76 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1218],0x00001730 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1219],0x00001eeb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[121],0x00009ca4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1220],0x000026a6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1221],0x00002e60 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1222],0x0000361b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1223],0x00003dd5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1224],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1225],0x00000f5c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1226],0x0000170a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1227],0x00001eb7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1228],0x00002665 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1229],0x00002e13 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[122],0x0000eaf6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1230],0x000035c0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1231],0x00003d6e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1232],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1233],0x00000f42 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1234],0x000016e3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1235],0x00001e84 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1236],0x00002625 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1237],0x00002dc6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1238],0x00003567 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1239],0x00003d08 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[123],0x00013948 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1240],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1241],0x00000f29 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1242],0x000016bd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1243],0x00001e52 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1244],0x000025e6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1245],0x00002d7a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1246],0x0000350f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1247],0x00003ca3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1248],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1249],0x00000f10 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[124],0x0001879b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1250],0x00001698 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1251],0x00001e20 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1252],0x000025a8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1253],0x00002d30 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1254],0x000034b8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1255],0x00003c40 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1256],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1257],0x00000ef8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1258],0x00001673 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1259],0x00001def +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[125],0x0001d5ed +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1260],0x0000256a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1261],0x00002ce6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1262],0x00003462 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1263],0x00003bdd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1264],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1265],0x00000edf +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1266],0x0000164f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1267],0x00001dbe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1268],0x0000252e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1269],0x00002c9d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[126],0x0002243f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1270],0x0000340d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1271],0x00003b7c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1272],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1273],0x00000ec8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1274],0x0000162b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1275],0x00001d8f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1276],0x000024f2 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1277],0x00002c56 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1278],0x000033b9 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1279],0x00003b1d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[127],0x00027292 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1280],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1281],0x00000eb0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1282],0x00001608 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1283],0x00001d5f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1284],0x000024b7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1285],0x00002c0f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1286],0x00003366 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1287],0x00003abe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[128],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[129],0x000092da +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[12],0x000fffff +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[130],0x0000dc47 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[131],0x000125b4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[132],0x00016f21 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[133],0x0001b88d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[134],0x000201fb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[135],0x00024b68 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[136],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[137],0x00008a37 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[138],0x0000cf52 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[139],0x0001146d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[13],0x000fffff +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[140],0x00015988 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[141],0x00019ea4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[142],0x0001e3bf +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[143],0x000228da +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[144],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[145],0x00008289 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[146],0x0000c3cd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[147],0x00010512 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[148],0x00014656 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[149],0x0001879b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[14],0x000fffff +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[150],0x0001c8df +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[151],0x00020a23 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[152],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[153],0x00007baa +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[154],0x0000b97f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[155],0x0000f754 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[156],0x00013529 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[157],0x000172fe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[158],0x0001b0d4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[159],0x0001eea9 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[15],0x000fffff +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[160],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[161],0x0000757b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[162],0x0000b039 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[163],0x0000eaf6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[164],0x000125b4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[165],0x00016072 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[166],0x00019b30 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[167],0x0001d5ed +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[168],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[169],0x00006fe3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[16],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[170],0x0000a7d5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[171],0x0000dfc6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[172],0x000117b8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[173],0x00014faa +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[174],0x0001879b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[175],0x0001bf8c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[176],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[177],0x00006acd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[178],0x0000a034 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[179],0x0000d59a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[17],0x000496d0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[180],0x00010b01 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[181],0x00014067 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[182],0x000175ce +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[183],0x0001ab34 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[184],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[185],0x00006629 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[186],0x0000993d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[187],0x0000cc51 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[188],0x0000ff65 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[189],0x00013279 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[18],0x0006e241 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[190],0x0001658e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[191],0x000198a2 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[192],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[193],0x000061e7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[194],0x000092da +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[195],0x0000c3cd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[196],0x0000f4c1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[197],0x000125b4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[198],0x000156a8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[199],0x0001879b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[19],0x00092da0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[1],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[200],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[201],0x00005dfc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[202],0x00008cfa +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[203],0x0000bbf8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[204],0x0000eaf6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[205],0x000119f4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[206],0x000148f3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[207],0x000177f1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[208],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[209],0x00005a5f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[20],0x000b7937 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[210],0x0000878e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[211],0x0000b4be +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[212],0x0000e1ed +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[213],0x00010f1c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[214],0x00013c4c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[215],0x0001697b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[216],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[217],0x00005706 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[218],0x00008289 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[219],0x0000ae0c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[21],0x000dc4bc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[220],0x0000d98f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[221],0x00010512 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[222],0x00013095 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[223],0x00015c17 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[224],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[225],0x000053eb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[226],0x00007de0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[227],0x0000a7d5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[228],0x0000d1ca +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[229],0x0000fbbf +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[22],0x000fffff +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[230],0x000125b4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[231],0x00014faa +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[232],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[233],0x00005106 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[234],0x00007989 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[235],0x0000a20b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[236],0x0000ca8e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[237],0x0000f311 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[238],0x00011b93 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[239],0x00014416 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[23],0x000fffff +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[240],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[241],0x00004e52 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[242],0x0000757b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[243],0x00009ca4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[244],0x0000c3cd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[245],0x0000eaf6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[246],0x0001121f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[247],0x00013948 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[248],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[249],0x00004bcc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[24],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[250],0x000071b1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[251],0x00009797 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[252],0x0000bd7c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[253],0x0000e362 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[254],0x00010947 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[255],0x00012f2d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[256],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[257],0x0000496d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[258],0x00006e24 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[259],0x000092da +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[25],0x00030f36 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[260],0x0000b790 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[261],0x0000dc47 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[262],0x000100fd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[263],0x000125b4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[264],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[265],0x00004734 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[266],0x00006acd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[267],0x00008e67 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[268],0x0000b200 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[269],0x0000d59a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[26],0x000496d0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[270],0x0000f934 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[271],0x00011cce +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[272],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[273],0x0000451c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[274],0x000067a9 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[275],0x00008a37 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[276],0x0000acc4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[277],0x0000cf52 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[278],0x0000f1df +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[279],0x0001146d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[27],0x00061e76 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[280],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[281],0x00004322 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[282],0x000064b3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[283],0x00008644 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[284],0x0000a7d5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[285],0x0000c965 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[286],0x0000eaf6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[287],0x00010c87 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[288],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[289],0x00004145 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[28],0x0007a613 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[290],0x000061e7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[291],0x00008289 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[292],0x0000a32b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[293],0x0000c3cd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[294],0x0000e46f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[295],0x00010512 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[296],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[297],0x00003f81 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[298],0x00005f42 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[299],0x00007f02 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[29],0x00092da0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[2],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[300],0x00009ec2 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[301],0x0000be83 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[302],0x0000de43 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[303],0x0000fe04 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[304],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[305],0x00003dd5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[306],0x00005cc0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[307],0x00007baa +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[308],0x00009a95 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[309],0x0000b97f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[30],0x000ab53a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[310],0x0000d86a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[311],0x0000f754 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[312],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[313],0x00003c40 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[314],0x00005a5f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[315],0x0000787f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[316],0x0000969e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[317],0x0000b4be +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[318],0x0000d2dd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[319],0x0000f0fd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[31],0x000c3ceb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[320],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[321],0x00003abe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[322],0x0000581d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[323],0x0000757b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[324],0x000092da +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[325],0x0000b039 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[326],0x0000cd98 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[327],0x0000eaf6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[328],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[329],0x0000394f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[32],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[330],0x000055f7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[331],0x0000729e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[332],0x00008f45 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[333],0x0000abed +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[334],0x0000c894 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[335],0x0000e53b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[336],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[337],0x000037f2 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[338],0x000053eb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[339],0x00006fe3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[33],0x00024b68 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[340],0x00008bdc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[341],0x0000a7d5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[342],0x0000c3cd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[343],0x0000dfc6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[344],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[345],0x000036a5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[346],0x000051f7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[347],0x00006d49 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[348],0x0000889b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[349],0x0000a3ed +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[34],0x0003711a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[350],0x0000bf40 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[351],0x0000da92 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[352],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[353],0x00003567 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[354],0x0000501a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[355],0x00006acd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[356],0x00008581 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[357],0x0000a034 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[358],0x0000bae7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[359],0x0000d59a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[35],0x000496d0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[360],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[361],0x00003437 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[362],0x00004e52 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[363],0x0000686e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[364],0x00008289 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[365],0x00009ca4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[366],0x0000b6c0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[367],0x0000d0db +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[368],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[369],0x00003315 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[36],0x0005bc88 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[370],0x00004c9f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[371],0x00006629 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[372],0x00007fb3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[373],0x0000993d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[374],0x0000b2c7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[375],0x0000cc51 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[376],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[377],0x000031fe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[378],0x00004afd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[379],0x000063fc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[37],0x0006e241 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[380],0x00007cfb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[381],0x000095fa +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[382],0x0000aef9 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[383],0x0000c7f8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[384],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[385],0x000030f4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[386],0x0000496d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[387],0x000061e7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[388],0x00007a61 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[389],0x000092da +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[38],0x000807ec +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[390],0x0000ab54 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[391],0x0000c3cd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[392],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[393],0x00002ff4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[394],0x000047ee +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[395],0x00005fe7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[396],0x000077e1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[397],0x00008fdb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[398],0x0000a7d5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[399],0x0000bfce +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[39],0x00092da0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[3],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[400],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[401],0x00002efe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[402],0x0000467d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[403],0x00005dfc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[404],0x0000757b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[405],0x00008cfa +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[406],0x0000a479 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[407],0x0000bbf8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[408],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[409],0x00002e13 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[40],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[410],0x0000451c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[411],0x00005c25 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[412],0x0000732e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[413],0x00008a37 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[414],0x0000a140 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[415],0x0000b849 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[416],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[417],0x00002d30 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[418],0x000043c7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[419],0x00005a5f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[41],0x0001d5ed +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[420],0x000070f7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[421],0x0000878e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[422],0x00009e26 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[423],0x0000b4be +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[424],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[425],0x00002c56 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[426],0x00004280 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[427],0x000058ab +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[428],0x00006ed5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[429],0x00008500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[42],0x0002c0e5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[430],0x00009b2a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[431],0x0000b155 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[432],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[433],0x00002b83 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[434],0x00004145 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[435],0x00005706 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[436],0x00006cc8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[437],0x00008289 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[438],0x0000984b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[439],0x0000ae0c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[43],0x0003abde +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[440],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[441],0x00002ab9 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[442],0x00004015 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[443],0x00005571 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[444],0x00006acd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[445],0x0000802a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[446],0x00009586 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[447],0x0000aae2 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[448],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[449],0x000029f6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[44],0x000496d0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[450],0x00003ef0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[451],0x000053eb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[452],0x000068e5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[453],0x00007de0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[454],0x000092da +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[455],0x0000a7d5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[456],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[457],0x00002939 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[458],0x00003dd5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[459],0x00005272 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[45],0x000581d3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[460],0x0000670e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[461],0x00007baa +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[462],0x00009047 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[463],0x0000a4e3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[464],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[465],0x00002883 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[466],0x00003cc4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[467],0x00005106 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[468],0x00006547 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[469],0x00007989 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[46],0x00066cbd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[470],0x00008dca +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[471],0x0000a20b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[472],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[473],0x000027d3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[474],0x00003bbd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[475],0x00004fa6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[476],0x00006390 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[477],0x00007779 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[478],0x00008b63 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[479],0x00009f4c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[47],0x000757cc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[480],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[481],0x00002729 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[482],0x00003abe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[483],0x00004e52 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[484],0x000061e7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[485],0x0000757b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[486],0x00008910 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[487],0x00009ca4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[488],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[489],0x00002685 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[48],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[490],0x000039c7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[491],0x00004d0a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[492],0x0000604c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[493],0x0000738e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[494],0x000086d1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[495],0x00009a13 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[496],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[497],0x000025e6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[498],0x000038d9 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[499],0x00004bcc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[49],0x0001879b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[4],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[500],0x00005ebe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[501],0x000071b1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[502],0x000084a4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[503],0x00009797 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[504],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[505],0x0000254c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[506],0x000037f2 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[507],0x00004a98 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[508],0x00005d3d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[509],0x00006fe3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[50],0x00024b68 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[510],0x00008289 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[511],0x0000952f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[512],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[513],0x000024b7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[514],0x00003712 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[515],0x0000496d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[516],0x00005bc8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[517],0x00006e24 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[518],0x0000807f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[519],0x000092da +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[51],0x00030f36 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[520],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[521],0x00002426 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[522],0x00003639 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[523],0x0000484c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[524],0x00005a5f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[525],0x00006c72 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[526],0x00007e85 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[527],0x00009098 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[528],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[529],0x0000239a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[52],0x0003d301 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[530],0x00003567 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[531],0x00004734 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[532],0x00005900 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[533],0x00006acd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[534],0x00007c9a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[535],0x00008e67 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[536],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[537],0x00002312 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[538],0x0000349b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[539],0x00004624 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[53],0x000496d0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[540],0x000057ac +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[541],0x00006935 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[542],0x00007abe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[543],0x00008c47 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[544],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[545],0x0000228e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[546],0x000033d5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[547],0x0000451c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[548],0x00005662 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[549],0x000067a9 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[54],0x00055a9d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[550],0x000078f0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[551],0x00008a37 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[552],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[553],0x0000220e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[554],0x00003315 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[555],0x0000441b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[556],0x00005522 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[557],0x00006629 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[558],0x0000772f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[559],0x00008836 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[55],0x00061e76 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[560],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[561],0x00002191 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[562],0x0000325a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[563],0x00004322 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[564],0x000053eb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[565],0x000064b3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[566],0x0000757b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[567],0x00008644 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[568],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[569],0x00002118 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[56],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[570],0x000031a4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[571],0x00004230 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[572],0x000052bc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[573],0x00006348 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[574],0x000073d4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[575],0x00008460 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[576],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[577],0x000020a3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[578],0x000030f4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[579],0x00004145 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[57],0x00014faa +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[580],0x00005196 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[581],0x000061e7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[582],0x00007238 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[583],0x00008289 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[584],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[585],0x00002030 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[586],0x00003048 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[587],0x00004060 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[588],0x00005078 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[589],0x00006090 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[58],0x0001f77d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[590],0x000070a7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[591],0x000080bf +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[592],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[593],0x00001fc1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[594],0x00002fa1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[595],0x00003f81 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[596],0x00004f61 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[597],0x00005f42 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[598],0x00006f22 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[599],0x00007f02 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[59],0x00029f55 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[5],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[600],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[601],0x00001f54 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[602],0x00002efe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[603],0x00003ea8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[604],0x00004e52 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[605],0x00005dfc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[606],0x00006da6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[607],0x00007d50 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[608],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[609],0x00001eeb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[60],0x0003472b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[610],0x00002e60 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[611],0x00003dd5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[612],0x00004d4b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[613],0x00005cc0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[614],0x00006c35 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[615],0x00007baa +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[616],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[617],0x00001e84 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[618],0x00002dc6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[619],0x00003d08 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[61],0x0003eeff +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[620],0x00004c4a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[621],0x00005b8c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[622],0x00006acd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[623],0x00007a0f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[624],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[625],0x00001e20 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[626],0x00002d30 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[627],0x00003c40 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[628],0x00004b4f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[629],0x00005a5f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[62],0x000496d0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[630],0x0000696f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[631],0x0000787f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[632],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[633],0x00001dbe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[634],0x00002c9d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[635],0x00003b7c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[636],0x00004a5b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[637],0x0000593a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[638],0x00006819 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[639],0x000076f8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[63],0x00053ea9 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[640],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[641],0x00001d5f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[642],0x00002c0f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[643],0x00003abe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[644],0x0000496d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[645],0x0000581d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[646],0x000066cc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[647],0x0000757b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[648],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[649],0x00001d02 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[64],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[650],0x00002b83 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[651],0x00003a04 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[652],0x00004885 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[653],0x00005706 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[654],0x00006587 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[655],0x00007408 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[656],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[657],0x00001ca8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[658],0x00002afb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[659],0x0000394f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[65],0x000125b4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[660],0x000047a3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[661],0x000055f7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[662],0x0000644a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[663],0x0000729e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[664],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[665],0x00001c4f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[666],0x00002a77 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[667],0x0000389e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[668],0x000046c6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[669],0x000054ed +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[66],0x0001b88d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[670],0x00006315 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[671],0x0000713c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[672],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[673],0x00001bf9 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[674],0x000029f6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[675],0x000037f2 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[676],0x000045ee +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[677],0x000053eb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[678],0x000061e7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[679],0x00006fe3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[67],0x00024b68 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[680],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[681],0x00001ba5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[682],0x00002977 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[683],0x00003749 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[684],0x0000451c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[685],0x000052ee +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[686],0x000060c0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[687],0x00006e92 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[688],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[689],0x00001b53 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[68],0x0002de44 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[690],0x000028fc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[691],0x000036a5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[692],0x0000444e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[693],0x000051f7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[694],0x00005fa0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[695],0x00006d49 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[696],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[697],0x00001b02 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[698],0x00002883 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[699],0x00003604 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[69],0x0003711a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[6],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[700],0x00004385 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[701],0x00005106 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[702],0x00005e87 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[703],0x00006c08 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[704],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[705],0x00001ab4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[706],0x0000280d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[707],0x00003567 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[708],0x000042c1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[709],0x0000501a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[70],0x000403f6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[710],0x00005d74 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[711],0x00006acd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[712],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[713],0x00001a67 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[714],0x0000279a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[715],0x000034cd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[716],0x00004201 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[717],0x00004f34 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[718],0x00005c67 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[719],0x0000699a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[71],0x000496d0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[720],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[721],0x00001a1c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[722],0x00002729 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[723],0x00003437 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[724],0x00004145 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[725],0x00004e52 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[726],0x00005b60 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[727],0x0000686e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[728],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[729],0x000019d2 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[72],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[730],0x000026bb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[731],0x000033a4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[732],0x0000408d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[733],0x00004d76 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[734],0x00005a5f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[735],0x00006748 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[736],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[737],0x0000198b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[738],0x00002650 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[739],0x00003315 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[73],0x00010512 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[740],0x00003fda +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[741],0x00004c9f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[742],0x00005964 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[743],0x00006629 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[744],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[745],0x00001944 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[746],0x000025e6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[747],0x00003288 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[748],0x00003f2a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[749],0x00004bcc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[74],0x0001879b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[750],0x0000586d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[751],0x0000650f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[752],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[753],0x000018ff +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[754],0x0000257f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[755],0x000031fe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[756],0x00003e7e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[757],0x00004afd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[758],0x0000577d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[759],0x000063fc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[75],0x00020a23 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[760],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[761],0x000018bc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[762],0x0000251a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[763],0x00003178 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[764],0x00003dd5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[765],0x00004a33 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[766],0x00005691 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[767],0x000062ef +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[768],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[769],0x0000187a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[76],0x00028cae +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[770],0x000024b7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[771],0x000030f4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[772],0x00003d30 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[773],0x0000496d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[774],0x000055aa +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[775],0x000061e7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[776],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[777],0x00001839 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[778],0x00002456 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[779],0x00003073 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[77],0x00030f36 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[780],0x00003c8f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[781],0x000048ac +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[782],0x000054c8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[783],0x000060e5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[784],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[785],0x000017fa +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[786],0x000023f7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[787],0x00002ff4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[788],0x00003bf1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[789],0x000047ee +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[78],0x000391be +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[790],0x000053eb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[791],0x00005fe7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[792],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[793],0x000017bc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[794],0x0000239a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[795],0x00002f78 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[796],0x00003b56 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[797],0x00004734 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[798],0x00005312 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[799],0x00005eef +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[79],0x00041445 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[7],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[800],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[801],0x0000177f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[802],0x0000233f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[803],0x00002efe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[804],0x00003abe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[805],0x0000467d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[806],0x0000523d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[807],0x00005dfc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[808],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[809],0x00001744 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[80],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[810],0x000022e6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[811],0x00002e87 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[812],0x00003a29 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[813],0x000045cb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[814],0x0000516c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[815],0x00005d0e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[816],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[817],0x0000170a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[818],0x0000228e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[819],0x00002e13 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[81],0x0000eaf6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[820],0x00003997 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[821],0x0000451c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[822],0x000050a0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[823],0x00005c25 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[824],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[825],0x000016d0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[826],0x00002238 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[827],0x00002da0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[828],0x00003908 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[829],0x00004470 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[82],0x00016072 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[830],0x00004fd8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[831],0x00005b40 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[832],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[833],0x00001698 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[834],0x000021e4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[835],0x00002d30 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[836],0x0000387c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[837],0x000043c7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[838],0x00004f13 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[839],0x00005a5f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[83],0x0001d5ed +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[840],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[841],0x00001661 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[842],0x00002191 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[843],0x00002cc2 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[844],0x000037f2 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[845],0x00004322 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[846],0x00004e52 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[847],0x00005983 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[848],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[849],0x0000162b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[84],0x00024b68 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[850],0x00002140 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[851],0x00002c56 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[852],0x0000376b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[853],0x00004280 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[854],0x00004d95 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[855],0x000058ab +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[856],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[857],0x000015f6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[858],0x000020f1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[859],0x00002beb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[85],0x0002c0e5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[860],0x000036e6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[861],0x000041e1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[862],0x00004cdc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[863],0x000057d6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[864],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[865],0x000015c2 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[866],0x000020a3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[867],0x00002b83 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[868],0x00003664 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[869],0x00004145 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[86],0x0003365f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[870],0x00004c25 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[871],0x00005706 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[872],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[873],0x0000158f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[874],0x00002056 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[875],0x00002b1d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[876],0x000035e4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[877],0x000040ab +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[878],0x00004b73 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[879],0x0000563a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[87],0x0003abde +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[880],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[881],0x0000155d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[882],0x0000200b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[883],0x00002ab9 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[884],0x00003567 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[885],0x00004015 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[886],0x00004ac3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[887],0x00005571 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[888],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[889],0x0000152b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[88],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[890],0x00001fc1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[891],0x00002a56 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[892],0x000034ec +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[893],0x00003f81 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[894],0x00004a17 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[895],0x000054ac +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[896],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[897],0x000014fb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[898],0x00001f78 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[899],0x000029f6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[89],0x0000d59a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[8],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[900],0x00003473 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[901],0x00003ef0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[902],0x0000496d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[903],0x000053eb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[904],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[905],0x000014cb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[906],0x00001f31 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[907],0x00002996 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[908],0x000033fc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[909],0x00003e61 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[90],0x00014067 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[910],0x000048c7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[911],0x0000532c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[912],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[913],0x0000149d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[914],0x00001eeb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[915],0x00002939 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[916],0x00003387 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[917],0x00003dd5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[918],0x00004824 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[919],0x00005272 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[91],0x0001ab34 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[920],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[921],0x0000146f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[922],0x00001ea6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[923],0x000028dd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[924],0x00003315 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[925],0x00003d4c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[926],0x00004783 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[927],0x000051ba +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[928],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[929],0x00001442 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[92],0x00021601 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[930],0x00001e62 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[931],0x00002883 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[932],0x000032a4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[933],0x00003cc4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[934],0x000046e5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[935],0x00005106 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[936],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[937],0x00001416 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[938],0x00001e20 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[939],0x0000282b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[93],0x000280ce +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[940],0x00003235 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[941],0x00003c40 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[942],0x0000464a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[943],0x00005055 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[944],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[945],0x000013ea +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[946],0x00001ddf +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[947],0x000027d3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[948],0x000031c8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[949],0x00003bbd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[94],0x0002eb9c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[950],0x000045b2 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[951],0x00004fa6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[952],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[953],0x000013bf +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[954],0x00001d9e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[955],0x0000277e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[956],0x0000315d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[957],0x00003b3c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[958],0x0000451c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[959],0x00004efb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[95],0x0003566b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[960],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[961],0x00001395 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[962],0x00001d5f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[963],0x00002729 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[964],0x000030f4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[965],0x00003abe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[966],0x00004488 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[967],0x00004e52 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[968],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[969],0x0000136c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[96],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[970],0x00001d21 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[971],0x000026d7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[972],0x0000308c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[973],0x00003a42 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[974],0x000043f7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[975],0x00004dad +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[976],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[977],0x00001343 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[978],0x00001ce4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[979],0x00002685 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[97],0x0000c3cd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[980],0x00003026 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[981],0x000039c7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[982],0x00004369 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[983],0x00004d0a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[984],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[985],0x0000131b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[986],0x00001ca8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[987],0x00002635 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[988],0x00002fc2 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[989],0x0000394f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[98],0x000125b4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[990],0x000042dc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[991],0x00004c69 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[992],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[993],0x000012f3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[994],0x00001c6d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[995],0x000025e6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[996],0x00002f5f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[997],0x000038d9 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[998],0x00004252 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[999],0x00004bcc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[99],0x0001879b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH1[9],0x00092da0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[0],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1000],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1001],0x000012cc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1002],0x00001c32 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1003],0x00002598 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1004],0x00002efe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1005],0x00003864 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1006],0x000041ca +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1007],0x00004b30 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1008],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1009],0x000012a6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[100],0x0001e981 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1010],0x00001bf9 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1011],0x0000254c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1012],0x00002e9f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1013],0x000037f2 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1014],0x00004145 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1015],0x00004a98 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1016],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1017],0x00001281 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1018],0x00001bc1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1019],0x00002501 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[101],0x00024b68 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1020],0x00002e41 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1021],0x00003781 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1022],0x000040c1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1023],0x00004a01 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1024],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1025],0x0000125c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1026],0x00001b89 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1027],0x000024b7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1028],0x00002de4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1029],0x00003712 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[102],0x0002ad4f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1030],0x00004040 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1031],0x0000496d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1032],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1033],0x00001237 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1034],0x00001b53 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1035],0x0000246e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1036],0x00002d89 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1037],0x000036a5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1038],0x00003fc0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1039],0x000048dc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[103],0x00030f36 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1040],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1041],0x00001213 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1042],0x00001b1d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1043],0x00002426 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1044],0x00002d30 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1045],0x00003639 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1046],0x00003f43 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1047],0x0000484c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1048],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1049],0x000011f0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[104],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1050],0x00001ae8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1051],0x000023e0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1052],0x00002cd7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1053],0x000035cf +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1054],0x00003ec7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1055],0x000047bf +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1056],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1057],0x000011cd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1058],0x00001ab4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1059],0x0000239a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[105],0x0000b4be +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1060],0x00002c80 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1061],0x00003567 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1062],0x00003e4d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1063],0x00004734 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1064],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1065],0x000011ab +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1066],0x00001a80 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1067],0x00002356 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1068],0x00002c2b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1069],0x00003500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[106],0x00010f1c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1070],0x00003dd5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1071],0x000046ab +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1072],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1073],0x00001189 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1074],0x00001a4e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1075],0x00002312 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1076],0x00002bd6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1077],0x0000349b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1078],0x00003d5f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1079],0x00004624 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[107],0x0001697b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1080],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1081],0x00001168 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1082],0x00001a1c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1083],0x000022d0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1084],0x00002b83 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1085],0x00003437 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1086],0x00003ceb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1087],0x0000459f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1088],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1089],0x00001147 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[108],0x0001c3d9 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1090],0x000019eb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1091],0x0000228e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1092],0x00002b31 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1093],0x000033d5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1094],0x00003c78 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1095],0x0000451c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1096],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1097],0x00001127 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1098],0x000019ba +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1099],0x0000224d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[109],0x00021e3a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[10],0x000dc4bc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1100],0x00002ae1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1101],0x00003374 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1102],0x00003c07 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1103],0x0000449a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1104],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1105],0x00001107 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1106],0x0000198b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1107],0x0000220e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1108],0x00002a91 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1109],0x00003315 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[110],0x00027898 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1110],0x00003b98 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1111],0x0000441b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1112],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1113],0x000010e8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1114],0x0000195b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1115],0x000021cf +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1116],0x00002a43 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1117],0x000032b6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1118],0x00003b2a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1119],0x0000439e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[111],0x0002d2f5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1120],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1121],0x000010c9 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1122],0x0000192d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1123],0x00002191 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1124],0x000029f6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1125],0x0000325a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1126],0x00003abe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1127],0x00004322 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1128],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1129],0x000010aa +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[112],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1130],0x000018ff +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1131],0x00002154 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1132],0x000029a9 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1133],0x000031fe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1134],0x00003a53 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1135],0x000042a8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1136],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1137],0x0000108c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1138],0x000018d2 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1139],0x00002118 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[113],0x0000a7d5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1140],0x0000295e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1141],0x000031a4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1142],0x000039ea +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1143],0x00004230 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1144],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1145],0x0000106f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1146],0x000018a6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1147],0x000020dd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1148],0x00002914 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1149],0x0000314b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[114],0x0000fbbf +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1150],0x00003982 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1151],0x000041ba +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1152],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1153],0x00001052 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1154],0x0000187a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1155],0x000020a3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1156],0x000028cb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1157],0x000030f4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1158],0x0000391c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1159],0x00004145 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[115],0x00014faa +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1160],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1161],0x00001035 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1162],0x0000184f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1163],0x00002069 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1164],0x00002883 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1165],0x0000309d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1166],0x000038b7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1167],0x000040d2 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1168],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1169],0x00001018 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[116],0x0001a394 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1170],0x00001824 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1171],0x00002030 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1172],0x0000283c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1173],0x00003048 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1174],0x00003854 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1175],0x00004060 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1176],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1177],0x00000ffc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1178],0x000017fa +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1179],0x00001ff8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[117],0x0001f77d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1180],0x000027f6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1181],0x00002ff4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1182],0x000037f2 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1183],0x00003ff0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1184],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1185],0x00000fe1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1186],0x000017d1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1187],0x00001fc1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1188],0x000027b1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1189],0x00002fa1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[118],0x00024b68 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1190],0x00003791 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1191],0x00003f81 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1192],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1193],0x00000fc5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1194],0x000017a8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1195],0x00001f8a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1196],0x0000276d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1197],0x00002f4f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1198],0x00003732 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1199],0x00003f14 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[119],0x00029f55 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[11],0x000fffff +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1200],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1201],0x00000faa +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1202],0x0000177f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1203],0x00001f54 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1204],0x00002729 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1205],0x00002efe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1206],0x000036d3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1207],0x00003ea8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1208],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1209],0x00000f90 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[120],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1210],0x00001758 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1211],0x00001f1f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1212],0x000026e7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1213],0x00002eaf +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1214],0x00003676 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1215],0x00003e3e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1216],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1217],0x00000f76 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1218],0x00001730 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1219],0x00001eeb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[121],0x00009ca4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1220],0x000026a6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1221],0x00002e60 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1222],0x0000361b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1223],0x00003dd5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1224],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1225],0x00000f5c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1226],0x0000170a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1227],0x00001eb7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1228],0x00002665 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1229],0x00002e13 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[122],0x0000eaf6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1230],0x000035c0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1231],0x00003d6e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1232],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1233],0x00000f42 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1234],0x000016e3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1235],0x00001e84 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1236],0x00002625 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1237],0x00002dc6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1238],0x00003567 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1239],0x00003d08 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[123],0x00013948 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1240],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1241],0x00000f29 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1242],0x000016bd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1243],0x00001e52 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1244],0x000025e6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1245],0x00002d7a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1246],0x0000350f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1247],0x00003ca3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1248],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1249],0x00000f10 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[124],0x0001879b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1250],0x00001698 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1251],0x00001e20 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1252],0x000025a8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1253],0x00002d30 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1254],0x000034b8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1255],0x00003c40 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1256],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1257],0x00000ef8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1258],0x00001673 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1259],0x00001def +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[125],0x0001d5ed +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1260],0x0000256a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1261],0x00002ce6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1262],0x00003462 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1263],0x00003bdd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1264],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1265],0x00000edf +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1266],0x0000164f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1267],0x00001dbe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1268],0x0000252e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1269],0x00002c9d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[126],0x0002243f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1270],0x0000340d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1271],0x00003b7c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1272],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1273],0x00000ec8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1274],0x0000162b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1275],0x00001d8f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1276],0x000024f2 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1277],0x00002c56 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1278],0x000033b9 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1279],0x00003b1d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[127],0x00027292 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1280],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1281],0x00000eb0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1282],0x00001608 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1283],0x00001d5f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1284],0x000024b7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1285],0x00002c0f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1286],0x00003366 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1287],0x00003abe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[128],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[129],0x000092da +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[12],0x000fffff +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[130],0x0000dc47 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[131],0x000125b4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[132],0x00016f21 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[133],0x0001b88d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[134],0x000201fb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[135],0x00024b68 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[136],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[137],0x00008a37 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[138],0x0000cf52 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[139],0x0001146d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[13],0x000fffff +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[140],0x00015988 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[141],0x00019ea4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[142],0x0001e3bf +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[143],0x000228da +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[144],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[145],0x00008289 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[146],0x0000c3cd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[147],0x00010512 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[148],0x00014656 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[149],0x0001879b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[14],0x000fffff +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[150],0x0001c8df +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[151],0x00020a23 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[152],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[153],0x00007baa +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[154],0x0000b97f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[155],0x0000f754 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[156],0x00013529 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[157],0x000172fe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[158],0x0001b0d4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[159],0x0001eea9 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[15],0x000fffff +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[160],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[161],0x0000757b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[162],0x0000b039 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[163],0x0000eaf6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[164],0x000125b4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[165],0x00016072 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[166],0x00019b30 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[167],0x0001d5ed +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[168],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[169],0x00006fe3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[16],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[170],0x0000a7d5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[171],0x0000dfc6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[172],0x000117b8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[173],0x00014faa +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[174],0x0001879b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[175],0x0001bf8c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[176],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[177],0x00006acd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[178],0x0000a034 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[179],0x0000d59a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[17],0x000496d0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[180],0x00010b01 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[181],0x00014067 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[182],0x000175ce +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[183],0x0001ab34 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[184],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[185],0x00006629 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[186],0x0000993d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[187],0x0000cc51 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[188],0x0000ff65 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[189],0x00013279 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[18],0x0006e241 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[190],0x0001658e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[191],0x000198a2 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[192],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[193],0x000061e7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[194],0x000092da +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[195],0x0000c3cd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[196],0x0000f4c1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[197],0x000125b4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[198],0x000156a8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[199],0x0001879b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[19],0x00092da0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[1],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[200],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[201],0x00005dfc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[202],0x00008cfa +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[203],0x0000bbf8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[204],0x0000eaf6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[205],0x000119f4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[206],0x000148f3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[207],0x000177f1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[208],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[209],0x00005a5f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[20],0x000b7937 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[210],0x0000878e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[211],0x0000b4be +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[212],0x0000e1ed +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[213],0x00010f1c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[214],0x00013c4c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[215],0x0001697b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[216],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[217],0x00005706 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[218],0x00008289 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[219],0x0000ae0c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[21],0x000dc4bc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[220],0x0000d98f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[221],0x00010512 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[222],0x00013095 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[223],0x00015c17 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[224],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[225],0x000053eb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[226],0x00007de0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[227],0x0000a7d5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[228],0x0000d1ca +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[229],0x0000fbbf +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[22],0x000fffff +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[230],0x000125b4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[231],0x00014faa +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[232],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[233],0x00005106 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[234],0x00007989 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[235],0x0000a20b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[236],0x0000ca8e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[237],0x0000f311 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[238],0x00011b93 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[239],0x00014416 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[23],0x000fffff +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[240],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[241],0x00004e52 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[242],0x0000757b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[243],0x00009ca4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[244],0x0000c3cd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[245],0x0000eaf6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[246],0x0001121f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[247],0x00013948 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[248],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[249],0x00004bcc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[24],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[250],0x000071b1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[251],0x00009797 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[252],0x0000bd7c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[253],0x0000e362 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[254],0x00010947 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[255],0x00012f2d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[256],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[257],0x0000496d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[258],0x00006e24 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[259],0x000092da +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[25],0x00030f36 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[260],0x0000b790 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[261],0x0000dc47 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[262],0x000100fd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[263],0x000125b4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[264],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[265],0x00004734 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[266],0x00006acd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[267],0x00008e67 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[268],0x0000b200 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[269],0x0000d59a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[26],0x000496d0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[270],0x0000f934 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[271],0x00011cce +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[272],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[273],0x0000451c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[274],0x000067a9 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[275],0x00008a37 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[276],0x0000acc4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[277],0x0000cf52 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[278],0x0000f1df +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[279],0x0001146d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[27],0x00061e76 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[280],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[281],0x00004322 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[282],0x000064b3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[283],0x00008644 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[284],0x0000a7d5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[285],0x0000c965 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[286],0x0000eaf6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[287],0x00010c87 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[288],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[289],0x00004145 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[28],0x0007a613 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[290],0x000061e7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[291],0x00008289 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[292],0x0000a32b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[293],0x0000c3cd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[294],0x0000e46f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[295],0x00010512 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[296],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[297],0x00003f81 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[298],0x00005f42 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[299],0x00007f02 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[29],0x00092da0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[2],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[300],0x00009ec2 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[301],0x0000be83 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[302],0x0000de43 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[303],0x0000fe04 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[304],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[305],0x00003dd5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[306],0x00005cc0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[307],0x00007baa +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[308],0x00009a95 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[309],0x0000b97f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[30],0x000ab53a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[310],0x0000d86a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[311],0x0000f754 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[312],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[313],0x00003c40 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[314],0x00005a5f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[315],0x0000787f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[316],0x0000969e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[317],0x0000b4be +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[318],0x0000d2dd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[319],0x0000f0fd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[31],0x000c3ceb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[320],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[321],0x00003abe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[322],0x0000581d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[323],0x0000757b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[324],0x000092da +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[325],0x0000b039 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[326],0x0000cd98 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[327],0x0000eaf6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[328],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[329],0x0000394f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[32],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[330],0x000055f7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[331],0x0000729e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[332],0x00008f45 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[333],0x0000abed +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[334],0x0000c894 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[335],0x0000e53b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[336],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[337],0x000037f2 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[338],0x000053eb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[339],0x00006fe3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[33],0x00024b68 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[340],0x00008bdc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[341],0x0000a7d5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[342],0x0000c3cd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[343],0x0000dfc6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[344],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[345],0x000036a5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[346],0x000051f7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[347],0x00006d49 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[348],0x0000889b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[349],0x0000a3ed +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[34],0x0003711a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[350],0x0000bf40 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[351],0x0000da92 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[352],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[353],0x00003567 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[354],0x0000501a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[355],0x00006acd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[356],0x00008581 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[357],0x0000a034 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[358],0x0000bae7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[359],0x0000d59a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[35],0x000496d0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[360],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[361],0x00003437 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[362],0x00004e52 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[363],0x0000686e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[364],0x00008289 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[365],0x00009ca4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[366],0x0000b6c0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[367],0x0000d0db +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[368],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[369],0x00003315 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[36],0x0005bc88 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[370],0x00004c9f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[371],0x00006629 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[372],0x00007fb3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[373],0x0000993d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[374],0x0000b2c7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[375],0x0000cc51 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[376],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[377],0x000031fe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[378],0x00004afd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[379],0x000063fc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[37],0x0006e241 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[380],0x00007cfb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[381],0x000095fa +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[382],0x0000aef9 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[383],0x0000c7f8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[384],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[385],0x000030f4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[386],0x0000496d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[387],0x000061e7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[388],0x00007a61 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[389],0x000092da +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[38],0x000807ec +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[390],0x0000ab54 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[391],0x0000c3cd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[392],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[393],0x00002ff4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[394],0x000047ee +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[395],0x00005fe7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[396],0x000077e1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[397],0x00008fdb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[398],0x0000a7d5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[399],0x0000bfce +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[39],0x00092da0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[3],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[400],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[401],0x00002efe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[402],0x0000467d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[403],0x00005dfc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[404],0x0000757b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[405],0x00008cfa +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[406],0x0000a479 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[407],0x0000bbf8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[408],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[409],0x00002e13 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[40],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[410],0x0000451c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[411],0x00005c25 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[412],0x0000732e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[413],0x00008a37 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[414],0x0000a140 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[415],0x0000b849 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[416],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[417],0x00002d30 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[418],0x000043c7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[419],0x00005a5f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[41],0x0001d5ed +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[420],0x000070f7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[421],0x0000878e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[422],0x00009e26 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[423],0x0000b4be +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[424],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[425],0x00002c56 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[426],0x00004280 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[427],0x000058ab +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[428],0x00006ed5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[429],0x00008500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[42],0x0002c0e5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[430],0x00009b2a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[431],0x0000b155 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[432],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[433],0x00002b83 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[434],0x00004145 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[435],0x00005706 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[436],0x00006cc8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[437],0x00008289 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[438],0x0000984b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[439],0x0000ae0c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[43],0x0003abde +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[440],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[441],0x00002ab9 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[442],0x00004015 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[443],0x00005571 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[444],0x00006acd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[445],0x0000802a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[446],0x00009586 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[447],0x0000aae2 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[448],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[449],0x000029f6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[44],0x000496d0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[450],0x00003ef0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[451],0x000053eb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[452],0x000068e5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[453],0x00007de0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[454],0x000092da +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[455],0x0000a7d5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[456],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[457],0x00002939 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[458],0x00003dd5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[459],0x00005272 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[45],0x000581d3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[460],0x0000670e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[461],0x00007baa +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[462],0x00009047 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[463],0x0000a4e3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[464],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[465],0x00002883 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[466],0x00003cc4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[467],0x00005106 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[468],0x00006547 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[469],0x00007989 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[46],0x00066cbd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[470],0x00008dca +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[471],0x0000a20b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[472],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[473],0x000027d3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[474],0x00003bbd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[475],0x00004fa6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[476],0x00006390 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[477],0x00007779 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[478],0x00008b63 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[479],0x00009f4c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[47],0x000757cc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[480],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[481],0x00002729 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[482],0x00003abe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[483],0x00004e52 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[484],0x000061e7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[485],0x0000757b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[486],0x00008910 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[487],0x00009ca4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[488],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[489],0x00002685 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[48],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[490],0x000039c7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[491],0x00004d0a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[492],0x0000604c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[493],0x0000738e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[494],0x000086d1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[495],0x00009a13 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[496],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[497],0x000025e6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[498],0x000038d9 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[499],0x00004bcc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[49],0x0001879b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[4],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[500],0x00005ebe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[501],0x000071b1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[502],0x000084a4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[503],0x00009797 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[504],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[505],0x0000254c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[506],0x000037f2 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[507],0x00004a98 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[508],0x00005d3d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[509],0x00006fe3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[50],0x00024b68 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[510],0x00008289 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[511],0x0000952f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[512],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[513],0x000024b7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[514],0x00003712 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[515],0x0000496d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[516],0x00005bc8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[517],0x00006e24 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[518],0x0000807f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[519],0x000092da +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[51],0x00030f36 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[520],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[521],0x00002426 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[522],0x00003639 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[523],0x0000484c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[524],0x00005a5f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[525],0x00006c72 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[526],0x00007e85 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[527],0x00009098 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[528],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[529],0x0000239a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[52],0x0003d301 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[530],0x00003567 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[531],0x00004734 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[532],0x00005900 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[533],0x00006acd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[534],0x00007c9a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[535],0x00008e67 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[536],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[537],0x00002312 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[538],0x0000349b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[539],0x00004624 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[53],0x000496d0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[540],0x000057ac +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[541],0x00006935 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[542],0x00007abe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[543],0x00008c47 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[544],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[545],0x0000228e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[546],0x000033d5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[547],0x0000451c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[548],0x00005662 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[549],0x000067a9 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[54],0x00055a9d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[550],0x000078f0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[551],0x00008a37 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[552],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[553],0x0000220e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[554],0x00003315 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[555],0x0000441b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[556],0x00005522 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[557],0x00006629 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[558],0x0000772f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[559],0x00008836 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[55],0x00061e76 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[560],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[561],0x00002191 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[562],0x0000325a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[563],0x00004322 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[564],0x000053eb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[565],0x000064b3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[566],0x0000757b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[567],0x00008644 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[568],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[569],0x00002118 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[56],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[570],0x000031a4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[571],0x00004230 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[572],0x000052bc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[573],0x00006348 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[574],0x000073d4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[575],0x00008460 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[576],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[577],0x000020a3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[578],0x000030f4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[579],0x00004145 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[57],0x00014faa +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[580],0x00005196 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[581],0x000061e7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[582],0x00007238 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[583],0x00008289 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[584],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[585],0x00002030 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[586],0x00003048 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[587],0x00004060 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[588],0x00005078 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[589],0x00006090 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[58],0x0001f77d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[590],0x000070a7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[591],0x000080bf +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[592],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[593],0x00001fc1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[594],0x00002fa1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[595],0x00003f81 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[596],0x00004f61 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[597],0x00005f42 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[598],0x00006f22 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[599],0x00007f02 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[59],0x00029f55 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[5],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[600],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[601],0x00001f54 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[602],0x00002efe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[603],0x00003ea8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[604],0x00004e52 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[605],0x00005dfc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[606],0x00006da6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[607],0x00007d50 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[608],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[609],0x00001eeb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[60],0x0003472b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[610],0x00002e60 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[611],0x00003dd5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[612],0x00004d4b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[613],0x00005cc0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[614],0x00006c35 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[615],0x00007baa +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[616],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[617],0x00001e84 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[618],0x00002dc6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[619],0x00003d08 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[61],0x0003eeff +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[620],0x00004c4a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[621],0x00005b8c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[622],0x00006acd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[623],0x00007a0f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[624],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[625],0x00001e20 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[626],0x00002d30 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[627],0x00003c40 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[628],0x00004b4f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[629],0x00005a5f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[62],0x000496d0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[630],0x0000696f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[631],0x0000787f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[632],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[633],0x00001dbe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[634],0x00002c9d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[635],0x00003b7c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[636],0x00004a5b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[637],0x0000593a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[638],0x00006819 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[639],0x000076f8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[63],0x00053ea9 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[640],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[641],0x00001d5f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[642],0x00002c0f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[643],0x00003abe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[644],0x0000496d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[645],0x0000581d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[646],0x000066cc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[647],0x0000757b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[648],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[649],0x00001d02 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[64],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[650],0x00002b83 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[651],0x00003a04 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[652],0x00004885 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[653],0x00005706 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[654],0x00006587 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[655],0x00007408 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[656],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[657],0x00001ca8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[658],0x00002afb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[659],0x0000394f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[65],0x000125b4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[660],0x000047a3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[661],0x000055f7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[662],0x0000644a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[663],0x0000729e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[664],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[665],0x00001c4f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[666],0x00002a77 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[667],0x0000389e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[668],0x000046c6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[669],0x000054ed +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[66],0x0001b88d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[670],0x00006315 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[671],0x0000713c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[672],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[673],0x00001bf9 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[674],0x000029f6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[675],0x000037f2 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[676],0x000045ee +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[677],0x000053eb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[678],0x000061e7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[679],0x00006fe3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[67],0x00024b68 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[680],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[681],0x00001ba5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[682],0x00002977 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[683],0x00003749 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[684],0x0000451c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[685],0x000052ee +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[686],0x000060c0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[687],0x00006e92 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[688],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[689],0x00001b53 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[68],0x0002de44 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[690],0x000028fc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[691],0x000036a5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[692],0x0000444e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[693],0x000051f7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[694],0x00005fa0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[695],0x00006d49 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[696],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[697],0x00001b02 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[698],0x00002883 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[699],0x00003604 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[69],0x0003711a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[6],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[700],0x00004385 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[701],0x00005106 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[702],0x00005e87 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[703],0x00006c08 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[704],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[705],0x00001ab4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[706],0x0000280d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[707],0x00003567 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[708],0x000042c1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[709],0x0000501a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[70],0x000403f6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[710],0x00005d74 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[711],0x00006acd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[712],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[713],0x00001a67 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[714],0x0000279a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[715],0x000034cd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[716],0x00004201 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[717],0x00004f34 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[718],0x00005c67 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[719],0x0000699a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[71],0x000496d0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[720],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[721],0x00001a1c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[722],0x00002729 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[723],0x00003437 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[724],0x00004145 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[725],0x00004e52 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[726],0x00005b60 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[727],0x0000686e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[728],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[729],0x000019d2 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[72],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[730],0x000026bb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[731],0x000033a4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[732],0x0000408d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[733],0x00004d76 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[734],0x00005a5f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[735],0x00006748 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[736],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[737],0x0000198b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[738],0x00002650 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[739],0x00003315 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[73],0x00010512 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[740],0x00003fda +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[741],0x00004c9f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[742],0x00005964 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[743],0x00006629 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[744],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[745],0x00001944 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[746],0x000025e6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[747],0x00003288 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[748],0x00003f2a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[749],0x00004bcc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[74],0x0001879b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[750],0x0000586d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[751],0x0000650f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[752],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[753],0x000018ff +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[754],0x0000257f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[755],0x000031fe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[756],0x00003e7e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[757],0x00004afd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[758],0x0000577d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[759],0x000063fc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[75],0x00020a23 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[760],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[761],0x000018bc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[762],0x0000251a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[763],0x00003178 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[764],0x00003dd5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[765],0x00004a33 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[766],0x00005691 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[767],0x000062ef +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[768],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[769],0x0000187a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[76],0x00028cae +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[770],0x000024b7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[771],0x000030f4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[772],0x00003d30 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[773],0x0000496d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[774],0x000055aa +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[775],0x000061e7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[776],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[777],0x00001839 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[778],0x00002456 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[779],0x00003073 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[77],0x00030f36 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[780],0x00003c8f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[781],0x000048ac +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[782],0x000054c8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[783],0x000060e5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[784],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[785],0x000017fa +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[786],0x000023f7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[787],0x00002ff4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[788],0x00003bf1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[789],0x000047ee +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[78],0x000391be +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[790],0x000053eb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[791],0x00005fe7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[792],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[793],0x000017bc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[794],0x0000239a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[795],0x00002f78 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[796],0x00003b56 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[797],0x00004734 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[798],0x00005312 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[799],0x00005eef +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[79],0x00041445 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[7],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[800],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[801],0x0000177f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[802],0x0000233f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[803],0x00002efe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[804],0x00003abe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[805],0x0000467d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[806],0x0000523d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[807],0x00005dfc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[808],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[809],0x00001744 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[80],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[810],0x000022e6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[811],0x00002e87 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[812],0x00003a29 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[813],0x000045cb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[814],0x0000516c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[815],0x00005d0e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[816],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[817],0x0000170a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[818],0x0000228e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[819],0x00002e13 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[81],0x0000eaf6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[820],0x00003997 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[821],0x0000451c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[822],0x000050a0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[823],0x00005c25 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[824],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[825],0x000016d0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[826],0x00002238 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[827],0x00002da0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[828],0x00003908 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[829],0x00004470 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[82],0x00016072 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[830],0x00004fd8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[831],0x00005b40 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[832],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[833],0x00001698 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[834],0x000021e4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[835],0x00002d30 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[836],0x0000387c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[837],0x000043c7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[838],0x00004f13 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[839],0x00005a5f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[83],0x0001d5ed +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[840],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[841],0x00001661 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[842],0x00002191 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[843],0x00002cc2 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[844],0x000037f2 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[845],0x00004322 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[846],0x00004e52 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[847],0x00005983 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[848],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[849],0x0000162b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[84],0x00024b68 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[850],0x00002140 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[851],0x00002c56 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[852],0x0000376b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[853],0x00004280 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[854],0x00004d95 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[855],0x000058ab +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[856],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[857],0x000015f6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[858],0x000020f1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[859],0x00002beb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[85],0x0002c0e5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[860],0x000036e6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[861],0x000041e1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[862],0x00004cdc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[863],0x000057d6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[864],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[865],0x000015c2 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[866],0x000020a3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[867],0x00002b83 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[868],0x00003664 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[869],0x00004145 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[86],0x0003365f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[870],0x00004c25 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[871],0x00005706 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[872],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[873],0x0000158f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[874],0x00002056 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[875],0x00002b1d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[876],0x000035e4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[877],0x000040ab +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[878],0x00004b73 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[879],0x0000563a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[87],0x0003abde +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[880],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[881],0x0000155d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[882],0x0000200b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[883],0x00002ab9 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[884],0x00003567 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[885],0x00004015 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[886],0x00004ac3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[887],0x00005571 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[888],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[889],0x0000152b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[88],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[890],0x00001fc1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[891],0x00002a56 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[892],0x000034ec +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[893],0x00003f81 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[894],0x00004a17 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[895],0x000054ac +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[896],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[897],0x000014fb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[898],0x00001f78 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[899],0x000029f6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[89],0x0000d59a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[8],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[900],0x00003473 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[901],0x00003ef0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[902],0x0000496d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[903],0x000053eb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[904],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[905],0x000014cb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[906],0x00001f31 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[907],0x00002996 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[908],0x000033fc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[909],0x00003e61 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[90],0x00014067 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[910],0x000048c7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[911],0x0000532c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[912],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[913],0x0000149d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[914],0x00001eeb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[915],0x00002939 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[916],0x00003387 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[917],0x00003dd5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[918],0x00004824 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[919],0x00005272 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[91],0x0001ab34 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[920],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[921],0x0000146f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[922],0x00001ea6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[923],0x000028dd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[924],0x00003315 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[925],0x00003d4c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[926],0x00004783 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[927],0x000051ba +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[928],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[929],0x00001442 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[92],0x00021601 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[930],0x00001e62 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[931],0x00002883 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[932],0x000032a4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[933],0x00003cc4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[934],0x000046e5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[935],0x00005106 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[936],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[937],0x00001416 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[938],0x00001e20 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[939],0x0000282b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[93],0x000280ce +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[940],0x00003235 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[941],0x00003c40 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[942],0x0000464a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[943],0x00005055 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[944],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[945],0x000013ea +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[946],0x00001ddf +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[947],0x000027d3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[948],0x000031c8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[949],0x00003bbd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[94],0x0002eb9c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[950],0x000045b2 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[951],0x00004fa6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[952],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[953],0x000013bf +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[954],0x00001d9e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[955],0x0000277e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[956],0x0000315d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[957],0x00003b3c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[958],0x0000451c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[959],0x00004efb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[95],0x0003566b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[960],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[961],0x00001395 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[962],0x00001d5f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[963],0x00002729 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[964],0x000030f4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[965],0x00003abe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[966],0x00004488 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[967],0x00004e52 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[968],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[969],0x0000136c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[96],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[970],0x00001d21 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[971],0x000026d7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[972],0x0000308c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[973],0x00003a42 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[974],0x000043f7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[975],0x00004dad +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[976],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[977],0x00001343 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[978],0x00001ce4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[979],0x00002685 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[97],0x0000c3cd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[980],0x00003026 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[981],0x000039c7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[982],0x00004369 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[983],0x00004d0a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[984],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[985],0x0000131b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[986],0x00001ca8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[987],0x00002635 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[988],0x00002fc2 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[989],0x0000394f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[98],0x000125b4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[990],0x000042dc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[991],0x00004c69 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[992],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[993],0x000012f3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[994],0x00001c6d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[995],0x000025e6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[996],0x00002f5f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[997],0x000038d9 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[998],0x00004252 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[999],0x00004bcc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[99],0x0001879b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH2[9],0x00092da0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[0],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1000],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1001],0x000012cc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1002],0x00001c32 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1003],0x00002598 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1004],0x00002efe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1005],0x00003864 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1006],0x000041ca +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1007],0x00004b30 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1008],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1009],0x000012a6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[100],0x0001e981 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1010],0x00001bf9 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1011],0x0000254c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1012],0x00002e9f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1013],0x000037f2 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1014],0x00004145 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1015],0x00004a98 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1016],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1017],0x00001281 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1018],0x00001bc1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1019],0x00002501 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[101],0x00024b68 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1020],0x00002e41 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1021],0x00003781 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1022],0x000040c1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1023],0x00004a01 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1024],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1025],0x0000125c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1026],0x00001b89 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1027],0x000024b7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1028],0x00002de4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1029],0x00003712 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[102],0x0002ad4f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1030],0x00004040 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1031],0x0000496d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1032],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1033],0x00001237 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1034],0x00001b53 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1035],0x0000246e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1036],0x00002d89 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1037],0x000036a5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1038],0x00003fc0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1039],0x000048dc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[103],0x00030f36 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1040],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1041],0x00001213 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1042],0x00001b1d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1043],0x00002426 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1044],0x00002d30 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1045],0x00003639 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1046],0x00003f43 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1047],0x0000484c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1048],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1049],0x000011f0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[104],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1050],0x00001ae8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1051],0x000023e0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1052],0x00002cd7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1053],0x000035cf +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1054],0x00003ec7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1055],0x000047bf +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1056],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1057],0x000011cd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1058],0x00001ab4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1059],0x0000239a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[105],0x0000b4be +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1060],0x00002c80 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1061],0x00003567 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1062],0x00003e4d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1063],0x00004734 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1064],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1065],0x000011ab +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1066],0x00001a80 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1067],0x00002356 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1068],0x00002c2b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1069],0x00003500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[106],0x00010f1c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1070],0x00003dd5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1071],0x000046ab +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1072],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1073],0x00001189 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1074],0x00001a4e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1075],0x00002312 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1076],0x00002bd6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1077],0x0000349b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1078],0x00003d5f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1079],0x00004624 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[107],0x0001697b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1080],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1081],0x00001168 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1082],0x00001a1c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1083],0x000022d0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1084],0x00002b83 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1085],0x00003437 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1086],0x00003ceb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1087],0x0000459f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1088],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1089],0x00001147 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[108],0x0001c3d9 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1090],0x000019eb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1091],0x0000228e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1092],0x00002b31 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1093],0x000033d5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1094],0x00003c78 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1095],0x0000451c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1096],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1097],0x00001127 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1098],0x000019ba +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1099],0x0000224d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[109],0x00021e3a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[10],0x000dc4bc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1100],0x00002ae1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1101],0x00003374 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1102],0x00003c07 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1103],0x0000449a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1104],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1105],0x00001107 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1106],0x0000198b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1107],0x0000220e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1108],0x00002a91 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1109],0x00003315 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[110],0x00027898 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1110],0x00003b98 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1111],0x0000441b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1112],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1113],0x000010e8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1114],0x0000195b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1115],0x000021cf +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1116],0x00002a43 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1117],0x000032b6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1118],0x00003b2a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1119],0x0000439e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[111],0x0002d2f5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1120],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1121],0x000010c9 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1122],0x0000192d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1123],0x00002191 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1124],0x000029f6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1125],0x0000325a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1126],0x00003abe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1127],0x00004322 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1128],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1129],0x000010aa +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[112],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1130],0x000018ff +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1131],0x00002154 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1132],0x000029a9 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1133],0x000031fe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1134],0x00003a53 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1135],0x000042a8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1136],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1137],0x0000108c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1138],0x000018d2 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1139],0x00002118 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[113],0x0000a7d5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1140],0x0000295e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1141],0x000031a4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1142],0x000039ea +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1143],0x00004230 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1144],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1145],0x0000106f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1146],0x000018a6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1147],0x000020dd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1148],0x00002914 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1149],0x0000314b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[114],0x0000fbbf +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1150],0x00003982 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1151],0x000041ba +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1152],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1153],0x00001052 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1154],0x0000187a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1155],0x000020a3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1156],0x000028cb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1157],0x000030f4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1158],0x0000391c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1159],0x00004145 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[115],0x00014faa +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1160],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1161],0x00001035 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1162],0x0000184f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1163],0x00002069 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1164],0x00002883 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1165],0x0000309d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1166],0x000038b7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1167],0x000040d2 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1168],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1169],0x00001018 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[116],0x0001a394 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1170],0x00001824 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1171],0x00002030 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1172],0x0000283c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1173],0x00003048 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1174],0x00003854 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1175],0x00004060 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1176],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1177],0x00000ffc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1178],0x000017fa +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1179],0x00001ff8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[117],0x0001f77d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1180],0x000027f6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1181],0x00002ff4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1182],0x000037f2 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1183],0x00003ff0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1184],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1185],0x00000fe1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1186],0x000017d1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1187],0x00001fc1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1188],0x000027b1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1189],0x00002fa1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[118],0x00024b68 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1190],0x00003791 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1191],0x00003f81 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1192],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1193],0x00000fc5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1194],0x000017a8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1195],0x00001f8a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1196],0x0000276d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1197],0x00002f4f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1198],0x00003732 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1199],0x00003f14 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[119],0x00029f55 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[11],0x000fffff +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1200],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1201],0x00000faa +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1202],0x0000177f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1203],0x00001f54 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1204],0x00002729 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1205],0x00002efe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1206],0x000036d3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1207],0x00003ea8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1208],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1209],0x00000f90 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[120],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1210],0x00001758 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1211],0x00001f1f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1212],0x000026e7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1213],0x00002eaf +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1214],0x00003676 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1215],0x00003e3e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1216],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1217],0x00000f76 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1218],0x00001730 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1219],0x00001eeb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[121],0x00009ca4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1220],0x000026a6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1221],0x00002e60 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1222],0x0000361b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1223],0x00003dd5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1224],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1225],0x00000f5c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1226],0x0000170a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1227],0x00001eb7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1228],0x00002665 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1229],0x00002e13 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[122],0x0000eaf6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1230],0x000035c0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1231],0x00003d6e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1232],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1233],0x00000f42 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1234],0x000016e3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1235],0x00001e84 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1236],0x00002625 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1237],0x00002dc6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1238],0x00003567 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1239],0x00003d08 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[123],0x00013948 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1240],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1241],0x00000f29 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1242],0x000016bd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1243],0x00001e52 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1244],0x000025e6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1245],0x00002d7a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1246],0x0000350f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1247],0x00003ca3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1248],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1249],0x00000f10 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[124],0x0001879b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1250],0x00001698 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1251],0x00001e20 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1252],0x000025a8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1253],0x00002d30 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1254],0x000034b8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1255],0x00003c40 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1256],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1257],0x00000ef8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1258],0x00001673 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1259],0x00001def +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[125],0x0001d5ed +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1260],0x0000256a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1261],0x00002ce6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1262],0x00003462 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1263],0x00003bdd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1264],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1265],0x00000edf +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1266],0x0000164f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1267],0x00001dbe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1268],0x0000252e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1269],0x00002c9d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[126],0x0002243f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1270],0x0000340d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1271],0x00003b7c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1272],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1273],0x00000ec8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1274],0x0000162b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1275],0x00001d8f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1276],0x000024f2 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1277],0x00002c56 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1278],0x000033b9 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1279],0x00003b1d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[127],0x00027292 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1280],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1281],0x00000eb0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1282],0x00001608 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1283],0x00001d5f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1284],0x000024b7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1285],0x00002c0f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1286],0x00003366 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1287],0x00003abe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[128],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[129],0x000092da +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[12],0x000fffff +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[130],0x0000dc47 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[131],0x000125b4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[132],0x00016f21 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[133],0x0001b88d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[134],0x000201fb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[135],0x00024b68 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[136],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[137],0x00008a37 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[138],0x0000cf52 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[139],0x0001146d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[13],0x000fffff +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[140],0x00015988 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[141],0x00019ea4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[142],0x0001e3bf +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[143],0x000228da +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[144],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[145],0x00008289 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[146],0x0000c3cd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[147],0x00010512 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[148],0x00014656 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[149],0x0001879b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[14],0x000fffff +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[150],0x0001c8df +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[151],0x00020a23 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[152],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[153],0x00007baa +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[154],0x0000b97f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[155],0x0000f754 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[156],0x00013529 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[157],0x000172fe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[158],0x0001b0d4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[159],0x0001eea9 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[15],0x000fffff +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[160],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[161],0x0000757b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[162],0x0000b039 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[163],0x0000eaf6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[164],0x000125b4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[165],0x00016072 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[166],0x00019b30 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[167],0x0001d5ed +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[168],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[169],0x00006fe3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[16],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[170],0x0000a7d5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[171],0x0000dfc6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[172],0x000117b8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[173],0x00014faa +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[174],0x0001879b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[175],0x0001bf8c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[176],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[177],0x00006acd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[178],0x0000a034 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[179],0x0000d59a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[17],0x000496d0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[180],0x00010b01 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[181],0x00014067 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[182],0x000175ce +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[183],0x0001ab34 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[184],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[185],0x00006629 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[186],0x0000993d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[187],0x0000cc51 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[188],0x0000ff65 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[189],0x00013279 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[18],0x0006e241 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[190],0x0001658e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[191],0x000198a2 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[192],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[193],0x000061e7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[194],0x000092da +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[195],0x0000c3cd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[196],0x0000f4c1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[197],0x000125b4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[198],0x000156a8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[199],0x0001879b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[19],0x00092da0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[1],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[200],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[201],0x00005dfc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[202],0x00008cfa +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[203],0x0000bbf8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[204],0x0000eaf6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[205],0x000119f4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[206],0x000148f3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[207],0x000177f1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[208],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[209],0x00005a5f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[20],0x000b7937 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[210],0x0000878e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[211],0x0000b4be +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[212],0x0000e1ed +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[213],0x00010f1c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[214],0x00013c4c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[215],0x0001697b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[216],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[217],0x00005706 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[218],0x00008289 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[219],0x0000ae0c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[21],0x000dc4bc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[220],0x0000d98f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[221],0x00010512 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[222],0x00013095 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[223],0x00015c17 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[224],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[225],0x000053eb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[226],0x00007de0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[227],0x0000a7d5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[228],0x0000d1ca +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[229],0x0000fbbf +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[22],0x000fffff +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[230],0x000125b4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[231],0x00014faa +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[232],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[233],0x00005106 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[234],0x00007989 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[235],0x0000a20b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[236],0x0000ca8e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[237],0x0000f311 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[238],0x00011b93 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[239],0x00014416 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[23],0x000fffff +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[240],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[241],0x00004e52 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[242],0x0000757b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[243],0x00009ca4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[244],0x0000c3cd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[245],0x0000eaf6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[246],0x0001121f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[247],0x00013948 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[248],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[249],0x00004bcc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[24],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[250],0x000071b1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[251],0x00009797 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[252],0x0000bd7c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[253],0x0000e362 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[254],0x00010947 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[255],0x00012f2d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[256],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[257],0x0000496d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[258],0x00006e24 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[259],0x000092da +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[25],0x00030f36 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[260],0x0000b790 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[261],0x0000dc47 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[262],0x000100fd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[263],0x000125b4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[264],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[265],0x00004734 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[266],0x00006acd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[267],0x00008e67 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[268],0x0000b200 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[269],0x0000d59a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[26],0x000496d0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[270],0x0000f934 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[271],0x00011cce +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[272],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[273],0x0000451c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[274],0x000067a9 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[275],0x00008a37 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[276],0x0000acc4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[277],0x0000cf52 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[278],0x0000f1df +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[279],0x0001146d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[27],0x00061e76 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[280],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[281],0x00004322 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[282],0x000064b3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[283],0x00008644 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[284],0x0000a7d5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[285],0x0000c965 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[286],0x0000eaf6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[287],0x00010c87 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[288],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[289],0x00004145 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[28],0x0007a613 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[290],0x000061e7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[291],0x00008289 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[292],0x0000a32b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[293],0x0000c3cd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[294],0x0000e46f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[295],0x00010512 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[296],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[297],0x00003f81 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[298],0x00005f42 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[299],0x00007f02 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[29],0x00092da0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[2],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[300],0x00009ec2 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[301],0x0000be83 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[302],0x0000de43 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[303],0x0000fe04 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[304],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[305],0x00003dd5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[306],0x00005cc0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[307],0x00007baa +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[308],0x00009a95 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[309],0x0000b97f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[30],0x000ab53a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[310],0x0000d86a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[311],0x0000f754 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[312],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[313],0x00003c40 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[314],0x00005a5f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[315],0x0000787f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[316],0x0000969e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[317],0x0000b4be +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[318],0x0000d2dd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[319],0x0000f0fd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[31],0x000c3ceb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[320],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[321],0x00003abe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[322],0x0000581d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[323],0x0000757b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[324],0x000092da +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[325],0x0000b039 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[326],0x0000cd98 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[327],0x0000eaf6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[328],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[329],0x0000394f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[32],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[330],0x000055f7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[331],0x0000729e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[332],0x00008f45 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[333],0x0000abed +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[334],0x0000c894 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[335],0x0000e53b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[336],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[337],0x000037f2 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[338],0x000053eb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[339],0x00006fe3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[33],0x00024b68 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[340],0x00008bdc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[341],0x0000a7d5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[342],0x0000c3cd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[343],0x0000dfc6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[344],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[345],0x000036a5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[346],0x000051f7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[347],0x00006d49 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[348],0x0000889b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[349],0x0000a3ed +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[34],0x0003711a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[350],0x0000bf40 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[351],0x0000da92 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[352],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[353],0x00003567 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[354],0x0000501a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[355],0x00006acd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[356],0x00008581 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[357],0x0000a034 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[358],0x0000bae7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[359],0x0000d59a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[35],0x000496d0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[360],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[361],0x00003437 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[362],0x00004e52 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[363],0x0000686e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[364],0x00008289 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[365],0x00009ca4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[366],0x0000b6c0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[367],0x0000d0db +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[368],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[369],0x00003315 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[36],0x0005bc88 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[370],0x00004c9f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[371],0x00006629 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[372],0x00007fb3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[373],0x0000993d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[374],0x0000b2c7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[375],0x0000cc51 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[376],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[377],0x000031fe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[378],0x00004afd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[379],0x000063fc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[37],0x0006e241 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[380],0x00007cfb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[381],0x000095fa +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[382],0x0000aef9 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[383],0x0000c7f8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[384],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[385],0x000030f4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[386],0x0000496d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[387],0x000061e7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[388],0x00007a61 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[389],0x000092da +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[38],0x000807ec +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[390],0x0000ab54 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[391],0x0000c3cd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[392],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[393],0x00002ff4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[394],0x000047ee +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[395],0x00005fe7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[396],0x000077e1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[397],0x00008fdb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[398],0x0000a7d5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[399],0x0000bfce +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[39],0x00092da0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[3],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[400],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[401],0x00002efe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[402],0x0000467d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[403],0x00005dfc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[404],0x0000757b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[405],0x00008cfa +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[406],0x0000a479 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[407],0x0000bbf8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[408],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[409],0x00002e13 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[40],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[410],0x0000451c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[411],0x00005c25 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[412],0x0000732e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[413],0x00008a37 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[414],0x0000a140 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[415],0x0000b849 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[416],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[417],0x00002d30 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[418],0x000043c7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[419],0x00005a5f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[41],0x0001d5ed +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[420],0x000070f7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[421],0x0000878e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[422],0x00009e26 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[423],0x0000b4be +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[424],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[425],0x00002c56 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[426],0x00004280 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[427],0x000058ab +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[428],0x00006ed5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[429],0x00008500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[42],0x0002c0e5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[430],0x00009b2a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[431],0x0000b155 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[432],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[433],0x00002b83 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[434],0x00004145 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[435],0x00005706 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[436],0x00006cc8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[437],0x00008289 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[438],0x0000984b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[439],0x0000ae0c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[43],0x0003abde +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[440],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[441],0x00002ab9 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[442],0x00004015 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[443],0x00005571 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[444],0x00006acd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[445],0x0000802a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[446],0x00009586 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[447],0x0000aae2 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[448],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[449],0x000029f6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[44],0x000496d0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[450],0x00003ef0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[451],0x000053eb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[452],0x000068e5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[453],0x00007de0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[454],0x000092da +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[455],0x0000a7d5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[456],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[457],0x00002939 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[458],0x00003dd5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[459],0x00005272 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[45],0x000581d3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[460],0x0000670e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[461],0x00007baa +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[462],0x00009047 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[463],0x0000a4e3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[464],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[465],0x00002883 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[466],0x00003cc4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[467],0x00005106 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[468],0x00006547 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[469],0x00007989 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[46],0x00066cbd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[470],0x00008dca +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[471],0x0000a20b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[472],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[473],0x000027d3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[474],0x00003bbd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[475],0x00004fa6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[476],0x00006390 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[477],0x00007779 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[478],0x00008b63 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[479],0x00009f4c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[47],0x000757cc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[480],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[481],0x00002729 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[482],0x00003abe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[483],0x00004e52 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[484],0x000061e7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[485],0x0000757b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[486],0x00008910 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[487],0x00009ca4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[488],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[489],0x00002685 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[48],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[490],0x000039c7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[491],0x00004d0a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[492],0x0000604c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[493],0x0000738e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[494],0x000086d1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[495],0x00009a13 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[496],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[497],0x000025e6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[498],0x000038d9 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[499],0x00004bcc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[49],0x0001879b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[4],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[500],0x00005ebe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[501],0x000071b1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[502],0x000084a4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[503],0x00009797 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[504],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[505],0x0000254c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[506],0x000037f2 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[507],0x00004a98 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[508],0x00005d3d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[509],0x00006fe3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[50],0x00024b68 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[510],0x00008289 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[511],0x0000952f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[512],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[513],0x000024b7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[514],0x00003712 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[515],0x0000496d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[516],0x00005bc8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[517],0x00006e24 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[518],0x0000807f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[519],0x000092da +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[51],0x00030f36 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[520],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[521],0x00002426 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[522],0x00003639 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[523],0x0000484c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[524],0x00005a5f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[525],0x00006c72 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[526],0x00007e85 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[527],0x00009098 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[528],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[529],0x0000239a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[52],0x0003d301 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[530],0x00003567 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[531],0x00004734 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[532],0x00005900 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[533],0x00006acd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[534],0x00007c9a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[535],0x00008e67 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[536],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[537],0x00002312 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[538],0x0000349b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[539],0x00004624 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[53],0x000496d0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[540],0x000057ac +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[541],0x00006935 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[542],0x00007abe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[543],0x00008c47 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[544],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[545],0x0000228e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[546],0x000033d5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[547],0x0000451c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[548],0x00005662 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[549],0x000067a9 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[54],0x00055a9d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[550],0x000078f0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[551],0x00008a37 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[552],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[553],0x0000220e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[554],0x00003315 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[555],0x0000441b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[556],0x00005522 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[557],0x00006629 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[558],0x0000772f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[559],0x00008836 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[55],0x00061e76 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[560],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[561],0x00002191 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[562],0x0000325a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[563],0x00004322 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[564],0x000053eb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[565],0x000064b3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[566],0x0000757b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[567],0x00008644 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[568],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[569],0x00002118 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[56],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[570],0x000031a4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[571],0x00004230 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[572],0x000052bc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[573],0x00006348 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[574],0x000073d4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[575],0x00008460 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[576],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[577],0x000020a3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[578],0x000030f4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[579],0x00004145 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[57],0x00014faa +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[580],0x00005196 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[581],0x000061e7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[582],0x00007238 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[583],0x00008289 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[584],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[585],0x00002030 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[586],0x00003048 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[587],0x00004060 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[588],0x00005078 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[589],0x00006090 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[58],0x0001f77d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[590],0x000070a7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[591],0x000080bf +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[592],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[593],0x00001fc1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[594],0x00002fa1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[595],0x00003f81 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[596],0x00004f61 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[597],0x00005f42 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[598],0x00006f22 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[599],0x00007f02 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[59],0x00029f55 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[5],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[600],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[601],0x00001f54 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[602],0x00002efe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[603],0x00003ea8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[604],0x00004e52 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[605],0x00005dfc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[606],0x00006da6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[607],0x00007d50 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[608],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[609],0x00001eeb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[60],0x0003472b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[610],0x00002e60 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[611],0x00003dd5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[612],0x00004d4b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[613],0x00005cc0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[614],0x00006c35 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[615],0x00007baa +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[616],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[617],0x00001e84 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[618],0x00002dc6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[619],0x00003d08 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[61],0x0003eeff +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[620],0x00004c4a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[621],0x00005b8c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[622],0x00006acd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[623],0x00007a0f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[624],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[625],0x00001e20 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[626],0x00002d30 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[627],0x00003c40 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[628],0x00004b4f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[629],0x00005a5f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[62],0x000496d0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[630],0x0000696f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[631],0x0000787f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[632],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[633],0x00001dbe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[634],0x00002c9d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[635],0x00003b7c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[636],0x00004a5b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[637],0x0000593a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[638],0x00006819 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[639],0x000076f8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[63],0x00053ea9 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[640],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[641],0x00001d5f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[642],0x00002c0f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[643],0x00003abe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[644],0x0000496d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[645],0x0000581d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[646],0x000066cc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[647],0x0000757b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[648],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[649],0x00001d02 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[64],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[650],0x00002b83 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[651],0x00003a04 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[652],0x00004885 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[653],0x00005706 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[654],0x00006587 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[655],0x00007408 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[656],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[657],0x00001ca8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[658],0x00002afb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[659],0x0000394f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[65],0x000125b4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[660],0x000047a3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[661],0x000055f7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[662],0x0000644a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[663],0x0000729e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[664],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[665],0x00001c4f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[666],0x00002a77 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[667],0x0000389e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[668],0x000046c6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[669],0x000054ed +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[66],0x0001b88d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[670],0x00006315 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[671],0x0000713c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[672],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[673],0x00001bf9 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[674],0x000029f6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[675],0x000037f2 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[676],0x000045ee +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[677],0x000053eb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[678],0x000061e7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[679],0x00006fe3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[67],0x00024b68 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[680],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[681],0x00001ba5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[682],0x00002977 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[683],0x00003749 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[684],0x0000451c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[685],0x000052ee +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[686],0x000060c0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[687],0x00006e92 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[688],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[689],0x00001b53 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[68],0x0002de44 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[690],0x000028fc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[691],0x000036a5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[692],0x0000444e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[693],0x000051f7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[694],0x00005fa0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[695],0x00006d49 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[696],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[697],0x00001b02 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[698],0x00002883 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[699],0x00003604 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[69],0x0003711a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[6],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[700],0x00004385 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[701],0x00005106 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[702],0x00005e87 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[703],0x00006c08 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[704],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[705],0x00001ab4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[706],0x0000280d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[707],0x00003567 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[708],0x000042c1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[709],0x0000501a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[70],0x000403f6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[710],0x00005d74 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[711],0x00006acd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[712],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[713],0x00001a67 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[714],0x0000279a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[715],0x000034cd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[716],0x00004201 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[717],0x00004f34 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[718],0x00005c67 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[719],0x0000699a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[71],0x000496d0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[720],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[721],0x00001a1c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[722],0x00002729 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[723],0x00003437 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[724],0x00004145 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[725],0x00004e52 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[726],0x00005b60 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[727],0x0000686e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[728],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[729],0x000019d2 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[72],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[730],0x000026bb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[731],0x000033a4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[732],0x0000408d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[733],0x00004d76 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[734],0x00005a5f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[735],0x00006748 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[736],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[737],0x0000198b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[738],0x00002650 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[739],0x00003315 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[73],0x00010512 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[740],0x00003fda +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[741],0x00004c9f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[742],0x00005964 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[743],0x00006629 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[744],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[745],0x00001944 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[746],0x000025e6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[747],0x00003288 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[748],0x00003f2a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[749],0x00004bcc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[74],0x0001879b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[750],0x0000586d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[751],0x0000650f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[752],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[753],0x000018ff +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[754],0x0000257f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[755],0x000031fe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[756],0x00003e7e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[757],0x00004afd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[758],0x0000577d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[759],0x000063fc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[75],0x00020a23 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[760],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[761],0x000018bc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[762],0x0000251a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[763],0x00003178 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[764],0x00003dd5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[765],0x00004a33 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[766],0x00005691 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[767],0x000062ef +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[768],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[769],0x0000187a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[76],0x00028cae +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[770],0x000024b7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[771],0x000030f4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[772],0x00003d30 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[773],0x0000496d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[774],0x000055aa +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[775],0x000061e7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[776],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[777],0x00001839 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[778],0x00002456 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[779],0x00003073 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[77],0x00030f36 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[780],0x00003c8f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[781],0x000048ac +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[782],0x000054c8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[783],0x000060e5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[784],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[785],0x000017fa +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[786],0x000023f7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[787],0x00002ff4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[788],0x00003bf1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[789],0x000047ee +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[78],0x000391be +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[790],0x000053eb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[791],0x00005fe7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[792],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[793],0x000017bc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[794],0x0000239a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[795],0x00002f78 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[796],0x00003b56 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[797],0x00004734 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[798],0x00005312 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[799],0x00005eef +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[79],0x00041445 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[7],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[800],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[801],0x0000177f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[802],0x0000233f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[803],0x00002efe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[804],0x00003abe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[805],0x0000467d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[806],0x0000523d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[807],0x00005dfc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[808],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[809],0x00001744 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[80],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[810],0x000022e6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[811],0x00002e87 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[812],0x00003a29 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[813],0x000045cb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[814],0x0000516c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[815],0x00005d0e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[816],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[817],0x0000170a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[818],0x0000228e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[819],0x00002e13 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[81],0x0000eaf6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[820],0x00003997 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[821],0x0000451c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[822],0x000050a0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[823],0x00005c25 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[824],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[825],0x000016d0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[826],0x00002238 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[827],0x00002da0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[828],0x00003908 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[829],0x00004470 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[82],0x00016072 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[830],0x00004fd8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[831],0x00005b40 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[832],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[833],0x00001698 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[834],0x000021e4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[835],0x00002d30 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[836],0x0000387c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[837],0x000043c7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[838],0x00004f13 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[839],0x00005a5f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[83],0x0001d5ed +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[840],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[841],0x00001661 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[842],0x00002191 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[843],0x00002cc2 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[844],0x000037f2 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[845],0x00004322 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[846],0x00004e52 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[847],0x00005983 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[848],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[849],0x0000162b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[84],0x00024b68 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[850],0x00002140 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[851],0x00002c56 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[852],0x0000376b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[853],0x00004280 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[854],0x00004d95 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[855],0x000058ab +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[856],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[857],0x000015f6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[858],0x000020f1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[859],0x00002beb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[85],0x0002c0e5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[860],0x000036e6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[861],0x000041e1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[862],0x00004cdc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[863],0x000057d6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[864],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[865],0x000015c2 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[866],0x000020a3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[867],0x00002b83 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[868],0x00003664 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[869],0x00004145 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[86],0x0003365f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[870],0x00004c25 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[871],0x00005706 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[872],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[873],0x0000158f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[874],0x00002056 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[875],0x00002b1d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[876],0x000035e4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[877],0x000040ab +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[878],0x00004b73 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[879],0x0000563a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[87],0x0003abde +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[880],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[881],0x0000155d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[882],0x0000200b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[883],0x00002ab9 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[884],0x00003567 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[885],0x00004015 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[886],0x00004ac3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[887],0x00005571 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[888],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[889],0x0000152b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[88],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[890],0x00001fc1 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[891],0x00002a56 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[892],0x000034ec +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[893],0x00003f81 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[894],0x00004a17 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[895],0x000054ac +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[896],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[897],0x000014fb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[898],0x00001f78 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[899],0x000029f6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[89],0x0000d59a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[8],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[900],0x00003473 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[901],0x00003ef0 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[902],0x0000496d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[903],0x000053eb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[904],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[905],0x000014cb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[906],0x00001f31 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[907],0x00002996 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[908],0x000033fc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[909],0x00003e61 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[90],0x00014067 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[910],0x000048c7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[911],0x0000532c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[912],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[913],0x0000149d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[914],0x00001eeb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[915],0x00002939 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[916],0x00003387 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[917],0x00003dd5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[918],0x00004824 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[919],0x00005272 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[91],0x0001ab34 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[920],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[921],0x0000146f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[922],0x00001ea6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[923],0x000028dd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[924],0x00003315 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[925],0x00003d4c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[926],0x00004783 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[927],0x000051ba +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[928],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[929],0x00001442 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[92],0x00021601 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[930],0x00001e62 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[931],0x00002883 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[932],0x000032a4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[933],0x00003cc4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[934],0x000046e5 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[935],0x00005106 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[936],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[937],0x00001416 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[938],0x00001e20 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[939],0x0000282b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[93],0x000280ce +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[940],0x00003235 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[941],0x00003c40 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[942],0x0000464a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[943],0x00005055 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[944],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[945],0x000013ea +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[946],0x00001ddf +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[947],0x000027d3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[948],0x000031c8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[949],0x00003bbd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[94],0x0002eb9c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[950],0x000045b2 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[951],0x00004fa6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[952],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[953],0x000013bf +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[954],0x00001d9e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[955],0x0000277e +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[956],0x0000315d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[957],0x00003b3c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[958],0x0000451c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[959],0x00004efb +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[95],0x0003566b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[960],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[961],0x00001395 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[962],0x00001d5f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[963],0x00002729 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[964],0x000030f4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[965],0x00003abe +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[966],0x00004488 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[967],0x00004e52 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[968],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[969],0x0000136c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[96],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[970],0x00001d21 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[971],0x000026d7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[972],0x0000308c +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[973],0x00003a42 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[974],0x000043f7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[975],0x00004dad +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[976],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[977],0x00001343 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[978],0x00001ce4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[979],0x00002685 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[97],0x0000c3cd +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[980],0x00003026 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[981],0x000039c7 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[982],0x00004369 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[983],0x00004d0a +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[984],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[985],0x0000131b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[986],0x00001ca8 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[987],0x00002635 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[988],0x00002fc2 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[989],0x0000394f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[98],0x000125b4 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[990],0x000042dc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[991],0x00004c69 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[992],0x00000500 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[993],0x000012f3 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[994],0x00001c6d +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[995],0x000025e6 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[996],0x00002f5f +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[997],0x000038d9 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[998],0x00004252 +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[999],0x00004bcc +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[99],0x0001879b +mem,SCH_SHARED_DEVICE_RATE_SHARED_DRM.SCH3[9],0x00092da0 +reg,CIG_RCI_CONFIGS.CIG0[0x103],0x5140e101f407d081ac +reg,CIG_RCI_CORE_MAPPING.CIG0[0x104],0x32002bc025801f40190012c00c8 +reg,CIG_RCI_DEVICE_MAPPING.CIG0[0x105],0x32002bc025801f40190012c00c8 +reg,CIG_RCI_FDA_OUT_TH.CIG0[0x107],0x18008008006405143e8 +reg,CIG_RCI_FDA_OUT_TOTAL_TH.CIG0[0x108],0x800200080017704e20fa0 +reg,FDA_OFM_CORE_FIFO_CONFIG_CORE.FDA0[0x166],0x875b7d0 +reg,FDA_OFM_CORE_FIFO_CONFIG_CORE.FDA1[0x166],0x875b7d0 +reg,FDA_OFM_CORE_FIFO_CONFIG_CORE.FDA2[0x166],0x875b7d0 +reg,FDA_OFM_CORE_FIFO_CONFIG_CORE.FDA3[0x166],0x875b7d0 +reg,FDTS_FDT_SHAPER_CONFIGURATIONS.FDTS0[0x104],0x500a0006428080a4176004e601 diff --git a/fboss/agent/if/agent_hw_test_ctrl.thrift b/fboss/agent/if/agent_hw_test_ctrl.thrift index b44ac11168cf9..f3d8618118d85 100644 --- a/fboss/agent/if/agent_hw_test_ctrl.thrift +++ b/fboss/agent/if/agent_hw_test_ctrl.thrift @@ -78,6 +78,7 @@ service AgentHwTestCtrl { NeighborInfo getNeighborInfo(1: ctrl.IfAndIP neighbor); i32 getHwEcmpSize(1: CIDRNetwork prefix, 2: i32 routerID, 3: i32 sizeInSw); + map getEcmpWeights(1: CIDRNetwork prefix, 2: i32 routerID); void injectFecError(1: list hwPorts, 2: bool injectCorrectable); @@ -100,4 +101,5 @@ service AgentHwTestCtrl { // port utils list getPortInfo(1: list portIds); + bool verifyPortLedStatus(1: i32 port, 2: bool status); } diff --git a/fboss/agent/if/multiswitch_ctrl.thrift b/fboss/agent/if/multiswitch_ctrl.thrift index b53da510f366c..a5467fbf42bf8 100644 --- a/fboss/agent/if/multiswitch_ctrl.thrift +++ b/fboss/agent/if/multiswitch_ctrl.thrift @@ -26,6 +26,8 @@ struct LinkEvent { struct LinkActiveEvent { 1: map port2IsActive; + 2: bool fwIsolated; + 3: optional i32 numActiveFabricPortsAtFwIsolate; } struct FabricConnectivityDelta { diff --git a/fboss/agent/mnpu/SplitAgentThriftSyncer.cpp b/fboss/agent/mnpu/SplitAgentThriftSyncer.cpp index d11f981430495..ead1489dde330 100644 --- a/fboss/agent/mnpu/SplitAgentThriftSyncer.cpp +++ b/fboss/agent/mnpu/SplitAgentThriftSyncer.cpp @@ -107,14 +107,21 @@ void SplitAgentThriftSyncer::linkStateChanged( linkChangeEventSinkClient_->enqueue(std::move(changeEvent)); } -void SplitAgentThriftSyncer::linkActiveStateChanged( - const std::map& port2IsActive) { +void SplitAgentThriftSyncer::linkActiveStateChangedOrFwIsolated( + const std::map& port2IsActive, + bool fwIsolated, + const std::optional& numActiveFabricPortsAtFwIsolate) { multiswitch::LinkActiveEvent event; for (const auto& [portID, isActive] : port2IsActive) { event.port2IsActive()[portID] = isActive; } + event.fwIsolated() = fwIsolated; + if (numActiveFabricPortsAtFwIsolate) { + event.numActiveFabricPortsAtFwIsolate() = *numActiveFabricPortsAtFwIsolate; + } + multiswitch::LinkChangeEvent changeEvent; changeEvent.linkActiveEvents() = event; linkChangeEventSinkClient_->enqueue(std::move(changeEvent)); diff --git a/fboss/agent/mnpu/SplitAgentThriftSyncer.h b/fboss/agent/mnpu/SplitAgentThriftSyncer.h index 8710ae1b9e7cd..2877882943e09 100644 --- a/fboss/agent/mnpu/SplitAgentThriftSyncer.h +++ b/fboss/agent/mnpu/SplitAgentThriftSyncer.h @@ -48,8 +48,10 @@ class SplitAgentThriftSyncer : public HwSwitchCallback { cfg::PortType portType, std::optional iPhyFaultStatus = std::nullopt) override; - void linkActiveStateChanged( - const std::map& port2IsActive) override; + void linkActiveStateChangedOrFwIsolated( + const std::map& port2IsActive, + bool fwIsolated, + const std::optional& numActiveFabricPortsAtFwIsolate) override; void linkConnectivityChanged( const std::map& port2OldAndNewConnectivity) override; diff --git a/fboss/agent/platforms/common/meru800bfa/Meru800bfaP1PlatformMapping.cpp b/fboss/agent/platforms/common/meru800bfa/Meru800bfaP1PlatformMapping.cpp index fefda41047450..adaddd06a8709 100644 --- a/fboss/agent/platforms/common/meru800bfa/Meru800bfaP1PlatformMapping.cpp +++ b/fboss/agent/platforms/common/meru800bfa/Meru800bfaP1PlatformMapping.cpp @@ -49429,7 +49429,7 @@ constexpr auto kJsonPlatformMappingStr = R"( "numLanes": 1, "modulation": 2, "fec": 544, - "medium": 2, + "medium": 3, "interfaceType": 41 } } @@ -49459,7 +49459,7 @@ constexpr auto kJsonPlatformMappingStr = R"( "numLanes": 1, "modulation": 2, "fec": 545, - "medium": 2, + "medium": 3, "interfaceType": 41 } } @@ -147021,7 +147021,7 @@ constexpr auto kJsonMultiNpuPlatformMappingStr = R"( "numLanes": 1, "modulation": 2, "fec": 544, - "medium": 2, + "medium": 3, "interfaceType": 41 } } @@ -147051,7 +147051,7 @@ constexpr auto kJsonMultiNpuPlatformMappingStr = R"( "numLanes": 1, "modulation": 2, "fec": 545, - "medium": 2, + "medium": 3, "interfaceType": 41 } } diff --git a/fboss/agent/platforms/common/meru800bfa/Meru800bfaP2PlatformMapping.h b/fboss/agent/platforms/common/meru800bfa/Meru800bfaP2PlatformMapping.h index 658c8967d72bb..315b97f224c5c 100644 --- a/fboss/agent/platforms/common/meru800bfa/Meru800bfaP2PlatformMapping.h +++ b/fboss/agent/platforms/common/meru800bfa/Meru800bfaP2PlatformMapping.h @@ -49940,7 +49940,7 @@ constexpr auto kJsonSingleNpuP2PlatformMappingStr = R"( "numLanes": 1, "modulation": 2, "fec": 544, - "medium": 2, + "medium": 3, "interfaceType": 41 } } @@ -49970,7 +49970,7 @@ constexpr auto kJsonSingleNpuP2PlatformMappingStr = R"( "numLanes": 1, "modulation": 2, "fec": 545, - "medium": 2, + "medium": 3, "interfaceType": 41 } } @@ -148557,7 +148557,7 @@ constexpr auto kJsonMultiNpuP2PlatformMappingStr = R"( "numLanes": 1, "modulation": 2, "fec": 544, - "medium": 2, + "medium": 3, "interfaceType": 41 } } @@ -148587,7 +148587,7 @@ constexpr auto kJsonMultiNpuP2PlatformMappingStr = R"( "numLanes": 1, "modulation": 2, "fec": 545, - "medium": 2, + "medium": 3, "interfaceType": 41 } } diff --git a/fboss/agent/platforms/common/meru800bfa/Meru800bfaProdPlatformMapping.h b/fboss/agent/platforms/common/meru800bfa/Meru800bfaProdPlatformMapping.h index 1e11050a2b69c..f4fe52648cc73 100644 --- a/fboss/agent/platforms/common/meru800bfa/Meru800bfaProdPlatformMapping.h +++ b/fboss/agent/platforms/common/meru800bfa/Meru800bfaProdPlatformMapping.h @@ -49942,7 +49942,7 @@ constexpr auto kJsonSingleNpuProdPlatformMappingStr = R"( "numLanes": 1, "modulation": 2, "fec": 544, - "medium": 2, + "medium": 3, "interfaceType": 41 } } @@ -49972,7 +49972,7 @@ constexpr auto kJsonSingleNpuProdPlatformMappingStr = R"( "numLanes": 1, "modulation": 2, "fec": 545, - "medium": 2, + "medium": 3, "interfaceType": 41 } } @@ -148559,7 +148559,7 @@ constexpr auto kJsonMultiNpuProdPlatformMappingStr = R"( "numLanes": 1, "modulation": 2, "fec": 544, - "medium": 2, + "medium": 3, "interfaceType": 41 } } @@ -148589,7 +148589,7 @@ constexpr auto kJsonMultiNpuProdPlatformMappingStr = R"( "numLanes": 1, "modulation": 2, "fec": 545, - "medium": 2, + "medium": 3, "interfaceType": 41 } } diff --git a/fboss/agent/platforms/common/meru800bia/Meru800biaPlatformMapping.cpp b/fboss/agent/platforms/common/meru800bia/Meru800biaPlatformMapping.cpp index 329ef29f6285c..b1c195b00f40a 100644 --- a/fboss/agent/platforms/common/meru800bia/Meru800biaPlatformMapping.cpp +++ b/fboss/agent/platforms/common/meru800bia/Meru800biaPlatformMapping.cpp @@ -43032,7 +43032,7 @@ constexpr auto kJsonPlatformMappingStr = R"( "numLanes": 1, "modulation": 2, "fec": 545, - "medium": 2, + "medium": 3, "interfaceType": 41 } } @@ -43047,7 +43047,7 @@ constexpr auto kJsonPlatformMappingStr = R"( "numLanes": 4, "modulation": 2, "fec": 11, - "medium": 2, + "medium": 3, "interfaceType": 21 } } @@ -43062,7 +43062,7 @@ constexpr auto kJsonPlatformMappingStr = R"( "numLanes": 8, "modulation": 2, "fec": 11, - "medium": 2, + "medium": 3, "interfaceType": 23 } } @@ -43092,7 +43092,7 @@ constexpr auto kJsonPlatformMappingStr = R"( "numLanes": 1, "modulation": 2, "fec": 11, - "medium": 2, + "medium": 3, "interfaceType": 41 } } @@ -43152,7 +43152,7 @@ constexpr auto kJsonPlatformMappingStr = R"( "numLanes": 4, "modulation": 1, "fec": 528, - "medium": 2, + "medium": 3, "interfaceType": 21 } } @@ -71672,7 +71672,7 @@ constexpr auto kJsonDsfJ3ScaleTestPlatformMappingStr = R"( "numLanes": 1, "modulation": 2, "fec": 545, - "medium": 2, + "medium": 3, "interfaceType": 41 } } @@ -71687,7 +71687,7 @@ constexpr auto kJsonDsfJ3ScaleTestPlatformMappingStr = R"( "numLanes": 4, "modulation": 2, "fec": 11, - "medium": 2, + "medium": 3, "interfaceType": 21 } } @@ -71717,7 +71717,7 @@ constexpr auto kJsonDsfJ3ScaleTestPlatformMappingStr = R"( "numLanes": 1, "modulation": 2, "fec": 11, - "medium": 2, + "medium": 3, "interfaceType": 41 } } @@ -71732,7 +71732,7 @@ constexpr auto kJsonDsfJ3ScaleTestPlatformMappingStr = R"( "numLanes": 1, "modulation": 2, "fec": 11, - "medium": 2, + "medium": 3, "interfaceType": 41 } } @@ -71777,7 +71777,7 @@ constexpr auto kJsonDsfJ3ScaleTestPlatformMappingStr = R"( "numLanes": 4, "modulation": 1, "fec": 528, - "medium": 2, + "medium": 3, "interfaceType": 21 } } @@ -97402,7 +97402,7 @@ constexpr auto kJsonEdswPlatformMappingStr = R"( "numLanes": 1, "modulation": 2, "fec": 545, - "medium": 2, + "medium": 3, "interfaceType": 41 } } @@ -97417,7 +97417,7 @@ constexpr auto kJsonEdswPlatformMappingStr = R"( "numLanes": 8, "modulation": 2, "fec": 11, - "medium": 2, + "medium": 3, "interfaceType": 23 } } @@ -97447,7 +97447,7 @@ constexpr auto kJsonEdswPlatformMappingStr = R"( "numLanes": 1, "modulation": 2, "fec": 11, - "medium": 2, + "medium": 3, "interfaceType": 41 } } @@ -97492,7 +97492,7 @@ constexpr auto kJsonEdswPlatformMappingStr = R"( "numLanes": 4, "modulation": 1, "fec": 528, - "medium": 2, + "medium": 3, "interfaceType": 21 } } @@ -97500,11 +97500,43181 @@ constexpr auto kJsonEdswPlatformMappingStr = R"( ] } )"; + +constexpr auto kJsonDualStageRdsw3q2qPlatformMappingStr = R"( +{ + "ports": { + "1": { + "mapping": { + "id": 1, + "name": "eth1/11/1", + "controllingPort": 1, + "pins": [ + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core6", + "lane": 0 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip11", + "lane": 0 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core6", + "lane": 1 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip11", + "lane": 1 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core6", + "lane": 2 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip11", + "lane": 2 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core6", + "lane": 3 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip11", + "lane": 3 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core6", + "lane": 4 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip11", + "lane": 4 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core6", + "lane": 5 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip11", + "lane": 5 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core6", + "lane": 6 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip11", + "lane": 6 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core6", + "lane": 7 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip11", + "lane": 7 + } + } + } + ], + "portType": 0, + "attachedCoreId": 0, + "attachedCorePortIndex": 0, + "virtualDeviceId": 0, + "scope": 1 + }, + "supportedProfiles": { + "23": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core6", + "lane": 0 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core6", + "lane": 1 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core6", + "lane": 2 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core6", + "lane": 3 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip11", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip11", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip11", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip11", + "lane": 3 + } + } + ] + } + }, + "24": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core6", + "lane": 0 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core6", + "lane": 1 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core6", + "lane": 2 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core6", + "lane": 3 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip11", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip11", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip11", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip11", + "lane": 3 + } + } + ] + } + }, + "35": { + "subsumedPorts": [ + 16385 + ], + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core6", + "lane": 0 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core6", + "lane": 1 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core6", + "lane": 2 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core6", + "lane": 3 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core6", + "lane": 4 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core6", + "lane": 5 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core6", + "lane": 6 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core6", + "lane": 7 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip11", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip11", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip11", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip11", + "lane": 3 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip11", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip11", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip11", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip11", + "lane": 7 + } + } + ] + } + }, + "38": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core6", + "lane": 0 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core6", + "lane": 1 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core6", + "lane": 2 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core6", + "lane": 3 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip11", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip11", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip11", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip11", + "lane": 3 + } + } + ] + } + }, + "39": { + "subsumedPorts": [ + 16385 + ], + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core6", + "lane": 0 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core6", + "lane": 1 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core6", + "lane": 2 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core6", + "lane": 3 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core6", + "lane": 4 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core6", + "lane": 5 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core6", + "lane": 6 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core6", + "lane": 7 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip11", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip11", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip11", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip11", + "lane": 3 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip11", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip11", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip11", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip11", + "lane": 7 + } + } + ] + } + }, + "45": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core6", + "lane": 0 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core6", + "lane": 1 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core6", + "lane": 2 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core6", + "lane": 3 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip11", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip11", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip11", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip11", + "lane": 3 + } + } + ] + } + } + } + }, + "2": { + "mapping": { + "id": 2, + "name": "eth1/12/1", + "controllingPort": 2, + "pins": [ + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core8", + "lane": 0 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip12", + "lane": 0 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core8", + "lane": 1 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip12", + "lane": 1 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core8", + "lane": 2 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip12", + "lane": 2 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core8", + "lane": 3 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip12", + "lane": 3 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core8", + "lane": 4 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip12", + "lane": 4 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core8", + "lane": 5 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip12", + "lane": 5 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core8", + "lane": 6 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip12", + "lane": 6 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core8", + "lane": 7 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip12", + "lane": 7 + } + } + } + ], + "portType": 0, + "attachedCoreId": 0, + "attachedCorePortIndex": 2, + "virtualDeviceId": 0, + "scope": 1 + }, + "supportedProfiles": { + "23": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core8", + "lane": 0 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core8", + "lane": 1 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core8", + "lane": 2 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core8", + "lane": 3 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip12", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip12", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip12", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip12", + "lane": 3 + } + } + ] + } + }, + "24": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core8", + "lane": 0 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core8", + "lane": 1 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core8", + "lane": 2 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core8", + "lane": 3 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip12", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip12", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip12", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip12", + "lane": 3 + } + } + ] + } + }, + "35": { + "subsumedPorts": [ + 3 + ], + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core8", + "lane": 0 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core8", + "lane": 1 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core8", + "lane": 2 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core8", + "lane": 3 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core8", + "lane": 4 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core8", + "lane": 5 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core8", + "lane": 6 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core8", + "lane": 7 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip12", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip12", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip12", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip12", + "lane": 3 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip12", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip12", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip12", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip12", + "lane": 7 + } + } + ] + } + }, + "38": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core8", + "lane": 0 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core8", + "lane": 1 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core8", + "lane": 2 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core8", + "lane": 3 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip12", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip12", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip12", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip12", + "lane": 3 + } + } + ] + } + }, + "39": { + "subsumedPorts": [ + 3 + ], + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core8", + "lane": 0 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core8", + "lane": 1 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core8", + "lane": 2 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core8", + "lane": 3 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core8", + "lane": 4 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core8", + "lane": 5 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core8", + "lane": 6 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core8", + "lane": 7 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip12", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip12", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip12", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip12", + "lane": 3 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip12", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip12", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip12", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip12", + "lane": 7 + } + } + ] + } + }, + "45": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core8", + "lane": 0 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core8", + "lane": 1 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core8", + "lane": 2 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core8", + "lane": 3 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip12", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip12", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip12", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip12", + "lane": 3 + } + } + ] + } + } + } + }, + "3": { + "mapping": { + "id": 3, + "name": "eth1/12/5", + "controllingPort": 2, + "pins": [ + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core8", + "lane": 4 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip12", + "lane": 4 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core8", + "lane": 5 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip12", + "lane": 5 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core8", + "lane": 6 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip12", + "lane": 6 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core8", + "lane": 7 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip12", + "lane": 7 + } + } + } + ], + "portType": 0, + "attachedCoreId": 0, + "attachedCorePortIndex": 4, + "virtualDeviceId": 0, + "scope": 1 + }, + "supportedProfiles": { + "23": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core8", + "lane": 4 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core8", + "lane": 5 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core8", + "lane": 6 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core8", + "lane": 7 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip12", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip12", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip12", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip12", + "lane": 7 + } + } + ] + } + }, + "24": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core8", + "lane": 4 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core8", + "lane": 5 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core8", + "lane": 6 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core8", + "lane": 7 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip12", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip12", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip12", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip12", + "lane": 7 + } + } + ] + } + }, + "38": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core8", + "lane": 4 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core8", + "lane": 5 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core8", + "lane": 6 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core8", + "lane": 7 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip12", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip12", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip12", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip12", + "lane": 7 + } + } + ] + } + }, + "45": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core8", + "lane": 4 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core8", + "lane": 5 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core8", + "lane": 6 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core8", + "lane": 7 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip12", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip12", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip12", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip12", + "lane": 7 + } + } + ] + } + } + } + }, + "4": { + "mapping": { + "id": 4, + "name": "eth1/13/1", + "controllingPort": 4, + "pins": [ + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core5", + "lane": 0 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip13", + "lane": 0 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core5", + "lane": 1 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip13", + "lane": 1 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core5", + "lane": 2 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip13", + "lane": 2 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core5", + "lane": 3 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip13", + "lane": 3 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core5", + "lane": 4 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip13", + "lane": 4 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core5", + "lane": 5 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip13", + "lane": 5 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core5", + "lane": 6 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip13", + "lane": 6 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core5", + "lane": 7 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip13", + "lane": 7 + } + } + } + ], + "portType": 0, + "attachedCoreId": 0, + "attachedCorePortIndex": 6, + "virtualDeviceId": 0, + "scope": 1 + }, + "supportedProfiles": { + "23": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core5", + "lane": 0 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core5", + "lane": 1 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core5", + "lane": 2 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core5", + "lane": 3 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip13", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip13", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip13", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip13", + "lane": 3 + } + } + ] + } + }, + "24": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core5", + "lane": 0 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core5", + "lane": 1 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core5", + "lane": 2 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core5", + "lane": 3 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip13", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip13", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip13", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip13", + "lane": 3 + } + } + ] + } + }, + "35": { + "subsumedPorts": [ + 16388 + ], + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core5", + "lane": 0 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core5", + "lane": 1 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core5", + "lane": 2 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core5", + "lane": 3 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core5", + "lane": 4 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core5", + "lane": 5 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core5", + "lane": 6 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core5", + "lane": 7 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip13", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip13", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip13", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip13", + "lane": 3 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip13", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip13", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip13", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip13", + "lane": 7 + } + } + ] + } + }, + "38": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core5", + "lane": 0 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core5", + "lane": 1 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core5", + "lane": 2 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core5", + "lane": 3 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip13", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip13", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip13", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip13", + "lane": 3 + } + } + ] + } + }, + "39": { + "subsumedPorts": [ + 16388 + ], + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core5", + "lane": 0 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core5", + "lane": 1 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core5", + "lane": 2 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core5", + "lane": 3 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core5", + "lane": 4 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core5", + "lane": 5 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core5", + "lane": 6 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core5", + "lane": 7 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip13", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip13", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip13", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip13", + "lane": 3 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip13", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip13", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip13", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip13", + "lane": 7 + } + } + ] + } + }, + "45": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core5", + "lane": 0 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core5", + "lane": 1 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core5", + "lane": 2 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core5", + "lane": 3 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip13", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip13", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip13", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip13", + "lane": 3 + } + } + ] + } + } + } + }, + "5": { + "mapping": { + "id": 5, + "name": "eth1/14/1", + "controllingPort": 5, + "pins": [ + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core7", + "lane": 0 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip14", + "lane": 0 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core7", + "lane": 1 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip14", + "lane": 1 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core7", + "lane": 2 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip14", + "lane": 2 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core7", + "lane": 3 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip14", + "lane": 3 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core7", + "lane": 4 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip14", + "lane": 4 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core7", + "lane": 5 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip14", + "lane": 5 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core7", + "lane": 6 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip14", + "lane": 6 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core7", + "lane": 7 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip14", + "lane": 7 + } + } + } + ], + "portType": 0, + "attachedCoreId": 0, + "attachedCorePortIndex": 8, + "virtualDeviceId": 0, + "scope": 1 + }, + "supportedProfiles": { + "23": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core7", + "lane": 0 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core7", + "lane": 1 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core7", + "lane": 2 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core7", + "lane": 3 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip14", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip14", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip14", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip14", + "lane": 3 + } + } + ] + } + }, + "24": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core7", + "lane": 0 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core7", + "lane": 1 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core7", + "lane": 2 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core7", + "lane": 3 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip14", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip14", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip14", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip14", + "lane": 3 + } + } + ] + } + }, + "35": { + "subsumedPorts": [ + 6 + ], + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core7", + "lane": 0 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core7", + "lane": 1 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core7", + "lane": 2 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core7", + "lane": 3 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core7", + "lane": 4 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core7", + "lane": 5 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core7", + "lane": 6 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core7", + "lane": 7 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip14", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip14", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip14", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip14", + "lane": 3 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip14", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip14", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip14", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip14", + "lane": 7 + } + } + ] + } + }, + "38": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core7", + "lane": 0 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core7", + "lane": 1 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core7", + "lane": 2 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core7", + "lane": 3 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip14", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip14", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip14", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip14", + "lane": 3 + } + } + ] + } + }, + "39": { + "subsumedPorts": [ + 6 + ], + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core7", + "lane": 0 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core7", + "lane": 1 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core7", + "lane": 2 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core7", + "lane": 3 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core7", + "lane": 4 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core7", + "lane": 5 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core7", + "lane": 6 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core7", + "lane": 7 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip14", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip14", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip14", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip14", + "lane": 3 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip14", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip14", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip14", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip14", + "lane": 7 + } + } + ] + } + }, + "45": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core7", + "lane": 0 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core7", + "lane": 1 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core7", + "lane": 2 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core7", + "lane": 3 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip14", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip14", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip14", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip14", + "lane": 3 + } + } + ] + } + } + } + }, + "6": { + "mapping": { + "id": 6, + "name": "eth1/14/5", + "controllingPort": 5, + "pins": [ + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core7", + "lane": 4 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip14", + "lane": 4 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core7", + "lane": 5 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip14", + "lane": 5 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core7", + "lane": 6 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip14", + "lane": 6 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core7", + "lane": 7 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip14", + "lane": 7 + } + } + } + ], + "portType": 0, + "attachedCoreId": 0, + "attachedCorePortIndex": 10, + "virtualDeviceId": 0, + "scope": 1 + }, + "supportedProfiles": { + "23": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core7", + "lane": 4 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core7", + "lane": 5 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core7", + "lane": 6 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core7", + "lane": 7 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip14", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip14", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip14", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip14", + "lane": 7 + } + } + ] + } + }, + "24": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core7", + "lane": 4 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core7", + "lane": 5 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core7", + "lane": 6 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core7", + "lane": 7 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip14", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip14", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip14", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip14", + "lane": 7 + } + } + ] + } + }, + "38": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core7", + "lane": 4 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core7", + "lane": 5 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core7", + "lane": 6 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core7", + "lane": 7 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip14", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip14", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip14", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip14", + "lane": 7 + } + } + ] + } + }, + "45": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core7", + "lane": 4 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core7", + "lane": 5 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core7", + "lane": 6 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core7", + "lane": 7 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip14", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip14", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip14", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip14", + "lane": 7 + } + } + ] + } + } + } + }, + "7": { + "mapping": { + "id": 7, + "name": "eth1/15/1", + "controllingPort": 7, + "pins": [ + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core3", + "lane": 0 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip15", + "lane": 0 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core3", + "lane": 1 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip15", + "lane": 1 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core3", + "lane": 2 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip15", + "lane": 2 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core3", + "lane": 3 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip15", + "lane": 3 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core3", + "lane": 4 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip15", + "lane": 4 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core3", + "lane": 5 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip15", + "lane": 5 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core3", + "lane": 6 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip15", + "lane": 6 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core3", + "lane": 7 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip15", + "lane": 7 + } + } + } + ], + "portType": 0, + "attachedCoreId": 0, + "attachedCorePortIndex": 12, + "virtualDeviceId": 0, + "scope": 1 + }, + "supportedProfiles": { + "23": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core3", + "lane": 0 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core3", + "lane": 1 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core3", + "lane": 2 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core3", + "lane": 3 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip15", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip15", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip15", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip15", + "lane": 3 + } + } + ] + } + }, + "24": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core3", + "lane": 0 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core3", + "lane": 1 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core3", + "lane": 2 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core3", + "lane": 3 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip15", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip15", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip15", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip15", + "lane": 3 + } + } + ] + } + }, + "35": { + "subsumedPorts": [ + 8 + ], + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core3", + "lane": 0 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core3", + "lane": 1 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core3", + "lane": 2 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core3", + "lane": 3 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core3", + "lane": 4 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core3", + "lane": 5 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core3", + "lane": 6 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core3", + "lane": 7 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip15", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip15", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip15", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip15", + "lane": 3 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip15", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip15", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip15", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip15", + "lane": 7 + } + } + ] + } + }, + "38": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core3", + "lane": 0 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core3", + "lane": 1 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core3", + "lane": 2 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core3", + "lane": 3 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip15", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip15", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip15", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip15", + "lane": 3 + } + } + ] + } + }, + "39": { + "subsumedPorts": [ + 8 + ], + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core3", + "lane": 0 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core3", + "lane": 1 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core3", + "lane": 2 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core3", + "lane": 3 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core3", + "lane": 4 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core3", + "lane": 5 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core3", + "lane": 6 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core3", + "lane": 7 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip15", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip15", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip15", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip15", + "lane": 3 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip15", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip15", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip15", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip15", + "lane": 7 + } + } + ] + } + }, + "45": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core3", + "lane": 0 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core3", + "lane": 1 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core3", + "lane": 2 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core3", + "lane": 3 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip15", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip15", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip15", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip15", + "lane": 3 + } + } + ] + } + } + } + }, + "8": { + "mapping": { + "id": 8, + "name": "eth1/15/5", + "controllingPort": 7, + "pins": [ + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core3", + "lane": 4 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip15", + "lane": 4 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core3", + "lane": 5 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip15", + "lane": 5 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core3", + "lane": 6 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip15", + "lane": 6 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core3", + "lane": 7 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip15", + "lane": 7 + } + } + } + ], + "portType": 0, + "attachedCoreId": 0, + "attachedCorePortIndex": 14, + "virtualDeviceId": 0, + "scope": 1 + }, + "supportedProfiles": { + "23": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core3", + "lane": 4 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core3", + "lane": 5 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core3", + "lane": 6 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core3", + "lane": 7 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip15", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip15", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip15", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip15", + "lane": 7 + } + } + ] + } + }, + "24": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core3", + "lane": 4 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core3", + "lane": 5 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core3", + "lane": 6 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core3", + "lane": 7 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip15", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip15", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip15", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip15", + "lane": 7 + } + } + ] + } + }, + "38": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core3", + "lane": 4 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core3", + "lane": 5 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core3", + "lane": 6 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core3", + "lane": 7 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip15", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip15", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip15", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip15", + "lane": 7 + } + } + ] + } + }, + "45": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core3", + "lane": 4 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core3", + "lane": 5 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core3", + "lane": 6 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core3", + "lane": 7 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip15", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip15", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip15", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip15", + "lane": 7 + } + } + ] + } + } + } + }, + "9": { + "mapping": { + "id": 9, + "name": "eth1/16/1", + "controllingPort": 9, + "pins": [ + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core1", + "lane": 0 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip16", + "lane": 0 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core1", + "lane": 1 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip16", + "lane": 1 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core1", + "lane": 2 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip16", + "lane": 2 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core1", + "lane": 3 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip16", + "lane": 3 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core1", + "lane": 4 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip16", + "lane": 4 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core1", + "lane": 5 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip16", + "lane": 5 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core1", + "lane": 6 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip16", + "lane": 6 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core1", + "lane": 7 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip16", + "lane": 7 + } + } + } + ], + "portType": 0, + "attachedCoreId": 1, + "attachedCorePortIndex": 0, + "virtualDeviceId": 0, + "scope": 1 + }, + "supportedProfiles": { + "23": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core1", + "lane": 0 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core1", + "lane": 1 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core1", + "lane": 2 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core1", + "lane": 3 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip16", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip16", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip16", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip16", + "lane": 3 + } + } + ] + } + }, + "24": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core1", + "lane": 0 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core1", + "lane": 1 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core1", + "lane": 2 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core1", + "lane": 3 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip16", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip16", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip16", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip16", + "lane": 3 + } + } + ] + } + }, + "35": { + "subsumedPorts": [ + 16393 + ], + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core1", + "lane": 0 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core1", + "lane": 1 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core1", + "lane": 2 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core1", + "lane": 3 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core1", + "lane": 4 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core1", + "lane": 5 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core1", + "lane": 6 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core1", + "lane": 7 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip16", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip16", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip16", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip16", + "lane": 3 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip16", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip16", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip16", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip16", + "lane": 7 + } + } + ] + } + }, + "38": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core1", + "lane": 0 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core1", + "lane": 1 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core1", + "lane": 2 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core1", + "lane": 3 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip16", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip16", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip16", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip16", + "lane": 3 + } + } + ] + } + }, + "39": { + "subsumedPorts": [ + 16393 + ], + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core1", + "lane": 0 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core1", + "lane": 1 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core1", + "lane": 2 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core1", + "lane": 3 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core1", + "lane": 4 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core1", + "lane": 5 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core1", + "lane": 6 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core1", + "lane": 7 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip16", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip16", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip16", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip16", + "lane": 3 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip16", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip16", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip16", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip16", + "lane": 7 + } + } + ] + } + }, + "45": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core1", + "lane": 0 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core1", + "lane": 1 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core1", + "lane": 2 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core1", + "lane": 3 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip16", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip16", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip16", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip16", + "lane": 3 + } + } + ] + } + } + } + }, + "10": { + "mapping": { + "id": 10, + "name": "eth1/17/1", + "controllingPort": 10, + "pins": [ + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core4", + "lane": 0 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip17", + "lane": 0 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core4", + "lane": 1 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip17", + "lane": 1 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core4", + "lane": 2 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip17", + "lane": 2 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core4", + "lane": 3 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip17", + "lane": 3 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core4", + "lane": 4 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip17", + "lane": 4 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core4", + "lane": 5 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip17", + "lane": 5 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core4", + "lane": 6 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip17", + "lane": 6 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core4", + "lane": 7 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip17", + "lane": 7 + } + } + } + ], + "portType": 0, + "attachedCoreId": 1, + "attachedCorePortIndex": 2, + "virtualDeviceId": 0, + "scope": 1 + }, + "supportedProfiles": { + "23": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core4", + "lane": 0 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core4", + "lane": 1 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core4", + "lane": 2 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core4", + "lane": 3 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip17", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip17", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip17", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip17", + "lane": 3 + } + } + ] + } + }, + "24": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core4", + "lane": 0 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core4", + "lane": 1 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core4", + "lane": 2 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core4", + "lane": 3 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip17", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip17", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip17", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip17", + "lane": 3 + } + } + ] + } + }, + "35": { + "subsumedPorts": [ + 11 + ], + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core4", + "lane": 0 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core4", + "lane": 1 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core4", + "lane": 2 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core4", + "lane": 3 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core4", + "lane": 4 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core4", + "lane": 5 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core4", + "lane": 6 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core4", + "lane": 7 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip17", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip17", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip17", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip17", + "lane": 3 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip17", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip17", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip17", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip17", + "lane": 7 + } + } + ] + } + }, + "38": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core4", + "lane": 0 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core4", + "lane": 1 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core4", + "lane": 2 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core4", + "lane": 3 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip17", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip17", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip17", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip17", + "lane": 3 + } + } + ] + } + }, + "39": { + "subsumedPorts": [ + 11 + ], + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core4", + "lane": 0 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core4", + "lane": 1 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core4", + "lane": 2 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core4", + "lane": 3 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core4", + "lane": 4 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core4", + "lane": 5 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core4", + "lane": 6 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core4", + "lane": 7 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip17", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip17", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip17", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip17", + "lane": 3 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip17", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip17", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip17", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip17", + "lane": 7 + } + } + ] + } + }, + "45": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core4", + "lane": 0 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core4", + "lane": 1 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core4", + "lane": 2 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core4", + "lane": 3 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip17", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip17", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip17", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip17", + "lane": 3 + } + } + ] + } + } + } + }, + "11": { + "mapping": { + "id": 11, + "name": "eth1/17/5", + "controllingPort": 10, + "pins": [ + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core4", + "lane": 4 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip17", + "lane": 4 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core4", + "lane": 5 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip17", + "lane": 5 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core4", + "lane": 6 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip17", + "lane": 6 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core4", + "lane": 7 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip17", + "lane": 7 + } + } + } + ], + "portType": 0, + "attachedCoreId": 1, + "attachedCorePortIndex": 4, + "virtualDeviceId": 0, + "scope": 1 + }, + "supportedProfiles": { + "23": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core4", + "lane": 4 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core4", + "lane": 5 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core4", + "lane": 6 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core4", + "lane": 7 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip17", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip17", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip17", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip17", + "lane": 7 + } + } + ] + } + }, + "24": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core4", + "lane": 4 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core4", + "lane": 5 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core4", + "lane": 6 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core4", + "lane": 7 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip17", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip17", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip17", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip17", + "lane": 7 + } + } + ] + } + }, + "38": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core4", + "lane": 4 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core4", + "lane": 5 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core4", + "lane": 6 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core4", + "lane": 7 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip17", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip17", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip17", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip17", + "lane": 7 + } + } + ] + } + }, + "45": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core4", + "lane": 4 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core4", + "lane": 5 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core4", + "lane": 6 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core4", + "lane": 7 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip17", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip17", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip17", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip17", + "lane": 7 + } + } + ] + } + } + } + }, + "12": { + "mapping": { + "id": 12, + "name": "eth1/18/1", + "controllingPort": 12, + "pins": [ + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core2", + "lane": 0 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip18", + "lane": 0 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core2", + "lane": 1 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip18", + "lane": 1 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core2", + "lane": 2 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip18", + "lane": 2 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core2", + "lane": 3 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip18", + "lane": 3 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core2", + "lane": 4 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip18", + "lane": 4 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core2", + "lane": 5 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip18", + "lane": 5 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core2", + "lane": 6 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip18", + "lane": 6 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core2", + "lane": 7 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip18", + "lane": 7 + } + } + } + ], + "portType": 0, + "attachedCoreId": 1, + "attachedCorePortIndex": 6, + "virtualDeviceId": 0, + "scope": 1 + }, + "supportedProfiles": { + "23": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core2", + "lane": 0 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core2", + "lane": 1 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core2", + "lane": 2 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core2", + "lane": 3 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip18", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip18", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip18", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip18", + "lane": 3 + } + } + ] + } + }, + "24": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core2", + "lane": 0 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core2", + "lane": 1 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core2", + "lane": 2 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core2", + "lane": 3 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip18", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip18", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip18", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip18", + "lane": 3 + } + } + ] + } + }, + "35": { + "subsumedPorts": [ + 16396 + ], + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core2", + "lane": 0 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core2", + "lane": 1 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core2", + "lane": 2 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core2", + "lane": 3 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core2", + "lane": 4 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core2", + "lane": 5 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core2", + "lane": 6 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core2", + "lane": 7 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip18", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip18", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip18", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip18", + "lane": 3 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip18", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip18", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip18", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip18", + "lane": 7 + } + } + ] + } + }, + "38": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core2", + "lane": 0 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core2", + "lane": 1 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core2", + "lane": 2 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core2", + "lane": 3 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip18", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip18", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip18", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip18", + "lane": 3 + } + } + ] + } + }, + "39": { + "subsumedPorts": [ + 16396 + ], + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core2", + "lane": 0 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core2", + "lane": 1 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core2", + "lane": 2 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core2", + "lane": 3 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core2", + "lane": 4 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core2", + "lane": 5 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core2", + "lane": 6 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core2", + "lane": 7 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip18", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip18", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip18", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip18", + "lane": 3 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip18", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip18", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip18", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip18", + "lane": 7 + } + } + ] + } + }, + "45": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core2", + "lane": 0 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core2", + "lane": 1 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core2", + "lane": 2 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core2", + "lane": 3 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip18", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip18", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip18", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip18", + "lane": 3 + } + } + ] + } + } + } + }, + "13": { + "mapping": { + "id": 13, + "name": "eth1/19/1", + "controllingPort": 13, + "pins": [ + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core0", + "lane": 0 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip19", + "lane": 0 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core0", + "lane": 1 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip19", + "lane": 1 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core0", + "lane": 2 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip19", + "lane": 2 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core0", + "lane": 3 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip19", + "lane": 3 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core0", + "lane": 4 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip19", + "lane": 4 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core0", + "lane": 5 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip19", + "lane": 5 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core0", + "lane": 6 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip19", + "lane": 6 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core0", + "lane": 7 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip19", + "lane": 7 + } + } + } + ], + "portType": 0, + "attachedCoreId": 1, + "attachedCorePortIndex": 8, + "virtualDeviceId": 0, + "scope": 1 + }, + "supportedProfiles": { + "23": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core0", + "lane": 0 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core0", + "lane": 1 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core0", + "lane": 2 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core0", + "lane": 3 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip19", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip19", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip19", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip19", + "lane": 3 + } + } + ] + } + }, + "24": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core0", + "lane": 0 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core0", + "lane": 1 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core0", + "lane": 2 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core0", + "lane": 3 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip19", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip19", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip19", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip19", + "lane": 3 + } + } + ] + } + }, + "35": { + "subsumedPorts": [ + 14 + ], + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core0", + "lane": 0 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core0", + "lane": 1 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core0", + "lane": 2 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core0", + "lane": 3 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core0", + "lane": 4 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core0", + "lane": 5 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core0", + "lane": 6 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core0", + "lane": 7 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip19", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip19", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip19", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip19", + "lane": 3 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip19", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip19", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip19", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip19", + "lane": 7 + } + } + ] + } + }, + "38": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core0", + "lane": 0 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core0", + "lane": 1 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core0", + "lane": 2 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core0", + "lane": 3 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip19", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip19", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip19", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip19", + "lane": 3 + } + } + ] + } + }, + "39": { + "subsumedPorts": [ + 14 + ], + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core0", + "lane": 0 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core0", + "lane": 1 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core0", + "lane": 2 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core0", + "lane": 3 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core0", + "lane": 4 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core0", + "lane": 5 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core0", + "lane": 6 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core0", + "lane": 7 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip19", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip19", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip19", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip19", + "lane": 3 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip19", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip19", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip19", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip19", + "lane": 7 + } + } + ] + } + }, + "45": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core0", + "lane": 0 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core0", + "lane": 1 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core0", + "lane": 2 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core0", + "lane": 3 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip19", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip19", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip19", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip19", + "lane": 3 + } + } + ] + } + } + } + }, + "14": { + "mapping": { + "id": 14, + "name": "eth1/19/5", + "controllingPort": 13, + "pins": [ + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core0", + "lane": 4 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip19", + "lane": 4 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core0", + "lane": 5 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip19", + "lane": 5 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core0", + "lane": 6 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip19", + "lane": 6 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core0", + "lane": 7 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip19", + "lane": 7 + } + } + } + ], + "portType": 0, + "attachedCoreId": 1, + "attachedCorePortIndex": 10, + "virtualDeviceId": 0, + "scope": 1 + }, + "supportedProfiles": { + "23": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core0", + "lane": 4 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core0", + "lane": 5 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core0", + "lane": 6 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core0", + "lane": 7 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip19", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip19", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip19", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip19", + "lane": 7 + } + } + ] + } + }, + "24": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core0", + "lane": 4 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core0", + "lane": 5 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core0", + "lane": 6 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core0", + "lane": 7 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip19", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip19", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip19", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip19", + "lane": 7 + } + } + ] + } + }, + "38": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core0", + "lane": 4 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core0", + "lane": 5 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core0", + "lane": 6 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core0", + "lane": 7 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip19", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip19", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip19", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip19", + "lane": 7 + } + } + ] + } + }, + "45": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core0", + "lane": 4 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core0", + "lane": 5 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core0", + "lane": 6 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core0", + "lane": 7 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip19", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip19", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip19", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip19", + "lane": 7 + } + } + ] + } + } + } + }, + "15": { + "mapping": { + "id": 15, + "name": "eth1/20/1", + "controllingPort": 15, + "pins": [ + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core9", + "lane": 0 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip20", + "lane": 0 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core9", + "lane": 1 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip20", + "lane": 1 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core9", + "lane": 2 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip20", + "lane": 2 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core9", + "lane": 3 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip20", + "lane": 3 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core9", + "lane": 4 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip20", + "lane": 4 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core9", + "lane": 5 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip20", + "lane": 5 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core9", + "lane": 6 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip20", + "lane": 6 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core9", + "lane": 7 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip20", + "lane": 7 + } + } + } + ], + "portType": 0, + "attachedCoreId": 2, + "attachedCorePortIndex": 0, + "virtualDeviceId": 0, + "scope": 1 + }, + "supportedProfiles": { + "23": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core9", + "lane": 0 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core9", + "lane": 1 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core9", + "lane": 2 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core9", + "lane": 3 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip20", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip20", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip20", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip20", + "lane": 3 + } + } + ] + } + }, + "24": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core9", + "lane": 0 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core9", + "lane": 1 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core9", + "lane": 2 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core9", + "lane": 3 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip20", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip20", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip20", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip20", + "lane": 3 + } + } + ] + } + }, + "35": { + "subsumedPorts": [ + 16399 + ], + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core9", + "lane": 0 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core9", + "lane": 1 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core9", + "lane": 2 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core9", + "lane": 3 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core9", + "lane": 4 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core9", + "lane": 5 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core9", + "lane": 6 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core9", + "lane": 7 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip20", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip20", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip20", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip20", + "lane": 3 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip20", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip20", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip20", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip20", + "lane": 7 + } + } + ] + } + }, + "38": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core9", + "lane": 0 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core9", + "lane": 1 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core9", + "lane": 2 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core9", + "lane": 3 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip20", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip20", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip20", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip20", + "lane": 3 + } + } + ] + } + }, + "39": { + "subsumedPorts": [ + 16399 + ], + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core9", + "lane": 0 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core9", + "lane": 1 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core9", + "lane": 2 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core9", + "lane": 3 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core9", + "lane": 4 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core9", + "lane": 5 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core9", + "lane": 6 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core9", + "lane": 7 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip20", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip20", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip20", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip20", + "lane": 3 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip20", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip20", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip20", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip20", + "lane": 7 + } + } + ] + } + }, + "45": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core9", + "lane": 0 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core9", + "lane": 1 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core9", + "lane": 2 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core9", + "lane": 3 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip20", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip20", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip20", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip20", + "lane": 3 + } + } + ] + } + } + } + }, + "16": { + "mapping": { + "id": 16, + "name": "eth1/21/1", + "controllingPort": 16, + "pins": [ + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core11", + "lane": 0 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip21", + "lane": 0 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core11", + "lane": 1 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip21", + "lane": 1 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core11", + "lane": 2 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip21", + "lane": 2 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core11", + "lane": 3 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip21", + "lane": 3 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core11", + "lane": 4 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip21", + "lane": 4 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core11", + "lane": 5 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip21", + "lane": 5 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core11", + "lane": 6 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip21", + "lane": 6 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core11", + "lane": 7 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip21", + "lane": 7 + } + } + } + ], + "portType": 0, + "attachedCoreId": 2, + "attachedCorePortIndex": 2, + "virtualDeviceId": 0, + "scope": 1 + }, + "supportedProfiles": { + "23": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core11", + "lane": 0 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core11", + "lane": 1 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core11", + "lane": 2 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core11", + "lane": 3 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip21", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip21", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip21", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip21", + "lane": 3 + } + } + ] + } + }, + "24": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core11", + "lane": 0 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core11", + "lane": 1 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core11", + "lane": 2 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core11", + "lane": 3 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip21", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip21", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip21", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip21", + "lane": 3 + } + } + ] + } + }, + "35": { + "subsumedPorts": [ + 17 + ], + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core11", + "lane": 0 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core11", + "lane": 1 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core11", + "lane": 2 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core11", + "lane": 3 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core11", + "lane": 4 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core11", + "lane": 5 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core11", + "lane": 6 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core11", + "lane": 7 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip21", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip21", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip21", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip21", + "lane": 3 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip21", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip21", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip21", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip21", + "lane": 7 + } + } + ] + } + }, + "38": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core11", + "lane": 0 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core11", + "lane": 1 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core11", + "lane": 2 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core11", + "lane": 3 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip21", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip21", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip21", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip21", + "lane": 3 + } + } + ] + } + }, + "39": { + "subsumedPorts": [ + 17 + ], + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core11", + "lane": 0 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core11", + "lane": 1 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core11", + "lane": 2 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core11", + "lane": 3 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core11", + "lane": 4 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core11", + "lane": 5 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core11", + "lane": 6 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core11", + "lane": 7 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip21", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip21", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip21", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip21", + "lane": 3 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip21", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip21", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip21", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip21", + "lane": 7 + } + } + ] + } + }, + "45": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core11", + "lane": 0 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core11", + "lane": 1 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core11", + "lane": 2 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core11", + "lane": 3 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip21", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip21", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip21", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip21", + "lane": 3 + } + } + ] + } + } + } + }, + "17": { + "mapping": { + "id": 17, + "name": "eth1/21/5", + "controllingPort": 16, + "pins": [ + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core11", + "lane": 4 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip21", + "lane": 4 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core11", + "lane": 5 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip21", + "lane": 5 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core11", + "lane": 6 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip21", + "lane": 6 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core11", + "lane": 7 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip21", + "lane": 7 + } + } + } + ], + "portType": 0, + "attachedCoreId": 2, + "attachedCorePortIndex": 4, + "virtualDeviceId": 0, + "scope": 1 + }, + "supportedProfiles": { + "23": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core11", + "lane": 4 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core11", + "lane": 5 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core11", + "lane": 6 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core11", + "lane": 7 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip21", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip21", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip21", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip21", + "lane": 7 + } + } + ] + } + }, + "24": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core11", + "lane": 4 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core11", + "lane": 5 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core11", + "lane": 6 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core11", + "lane": 7 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip21", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip21", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip21", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip21", + "lane": 7 + } + } + ] + } + }, + "38": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core11", + "lane": 4 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core11", + "lane": 5 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core11", + "lane": 6 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core11", + "lane": 7 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip21", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip21", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip21", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip21", + "lane": 7 + } + } + ] + } + }, + "45": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core11", + "lane": 4 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core11", + "lane": 5 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core11", + "lane": 6 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core11", + "lane": 7 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip21", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip21", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip21", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip21", + "lane": 7 + } + } + ] + } + } + } + }, + "18": { + "mapping": { + "id": 18, + "name": "eth1/22/1", + "controllingPort": 18, + "pins": [ + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core10", + "lane": 0 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip22", + "lane": 0 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core10", + "lane": 1 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip22", + "lane": 1 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core10", + "lane": 2 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip22", + "lane": 2 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core10", + "lane": 3 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip22", + "lane": 3 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core10", + "lane": 4 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip22", + "lane": 4 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core10", + "lane": 5 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip22", + "lane": 5 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core10", + "lane": 6 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip22", + "lane": 6 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core10", + "lane": 7 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip22", + "lane": 7 + } + } + } + ], + "portType": 0, + "attachedCoreId": 2, + "attachedCorePortIndex": 6, + "virtualDeviceId": 0, + "scope": 1 + }, + "supportedProfiles": { + "23": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core10", + "lane": 0 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core10", + "lane": 1 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core10", + "lane": 2 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core10", + "lane": 3 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip22", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip22", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip22", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip22", + "lane": 3 + } + } + ] + } + }, + "24": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core10", + "lane": 0 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core10", + "lane": 1 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core10", + "lane": 2 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core10", + "lane": 3 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip22", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip22", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip22", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip22", + "lane": 3 + } + } + ] + } + }, + "35": { + "subsumedPorts": [ + 16402 + ], + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core10", + "lane": 0 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core10", + "lane": 1 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core10", + "lane": 2 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core10", + "lane": 3 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core10", + "lane": 4 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core10", + "lane": 5 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core10", + "lane": 6 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core10", + "lane": 7 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip22", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip22", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip22", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip22", + "lane": 3 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip22", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip22", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip22", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip22", + "lane": 7 + } + } + ] + } + }, + "38": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core10", + "lane": 0 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core10", + "lane": 1 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core10", + "lane": 2 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core10", + "lane": 3 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip22", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip22", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip22", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip22", + "lane": 3 + } + } + ] + } + }, + "39": { + "subsumedPorts": [ + 16402 + ], + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core10", + "lane": 0 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core10", + "lane": 1 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core10", + "lane": 2 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core10", + "lane": 3 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core10", + "lane": 4 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core10", + "lane": 5 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core10", + "lane": 6 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core10", + "lane": 7 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip22", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip22", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip22", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip22", + "lane": 3 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip22", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip22", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip22", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip22", + "lane": 7 + } + } + ] + } + }, + "45": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core10", + "lane": 0 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core10", + "lane": 1 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core10", + "lane": 2 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core10", + "lane": 3 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip22", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip22", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip22", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip22", + "lane": 3 + } + } + ] + } + } + } + }, + "19": { + "mapping": { + "id": 19, + "name": "eth1/23/1", + "controllingPort": 19, + "pins": [ + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core17", + "lane": 0 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip23", + "lane": 0 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core17", + "lane": 1 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip23", + "lane": 1 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core17", + "lane": 2 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip23", + "lane": 2 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core17", + "lane": 3 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip23", + "lane": 3 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core17", + "lane": 4 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip23", + "lane": 4 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core17", + "lane": 5 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip23", + "lane": 5 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core17", + "lane": 6 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip23", + "lane": 6 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core17", + "lane": 7 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip23", + "lane": 7 + } + } + } + ], + "portType": 0, + "attachedCoreId": 2, + "attachedCorePortIndex": 8, + "virtualDeviceId": 0, + "scope": 1 + }, + "supportedProfiles": { + "23": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core17", + "lane": 0 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core17", + "lane": 1 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core17", + "lane": 2 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core17", + "lane": 3 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip23", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip23", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip23", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip23", + "lane": 3 + } + } + ] + } + }, + "24": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core17", + "lane": 0 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core17", + "lane": 1 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core17", + "lane": 2 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core17", + "lane": 3 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip23", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip23", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip23", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip23", + "lane": 3 + } + } + ] + } + }, + "35": { + "subsumedPorts": [ + 20 + ], + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core17", + "lane": 0 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core17", + "lane": 1 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core17", + "lane": 2 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core17", + "lane": 3 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core17", + "lane": 4 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core17", + "lane": 5 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core17", + "lane": 6 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core17", + "lane": 7 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip23", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip23", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip23", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip23", + "lane": 3 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip23", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip23", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip23", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip23", + "lane": 7 + } + } + ] + } + }, + "38": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core17", + "lane": 0 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core17", + "lane": 1 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core17", + "lane": 2 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core17", + "lane": 3 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip23", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip23", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip23", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip23", + "lane": 3 + } + } + ] + } + }, + "39": { + "subsumedPorts": [ + 20 + ], + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core17", + "lane": 0 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core17", + "lane": 1 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core17", + "lane": 2 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core17", + "lane": 3 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core17", + "lane": 4 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core17", + "lane": 5 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core17", + "lane": 6 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core17", + "lane": 7 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip23", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip23", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip23", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip23", + "lane": 3 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip23", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip23", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip23", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip23", + "lane": 7 + } + } + ] + } + }, + "45": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core17", + "lane": 0 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core17", + "lane": 1 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core17", + "lane": 2 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core17", + "lane": 3 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip23", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip23", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip23", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip23", + "lane": 3 + } + } + ] + } + } + } + }, + "20": { + "mapping": { + "id": 20, + "name": "eth1/23/5", + "controllingPort": 19, + "pins": [ + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core17", + "lane": 4 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip23", + "lane": 4 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core17", + "lane": 5 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip23", + "lane": 5 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core17", + "lane": 6 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip23", + "lane": 6 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core17", + "lane": 7 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip23", + "lane": 7 + } + } + } + ], + "portType": 0, + "attachedCoreId": 2, + "attachedCorePortIndex": 10, + "virtualDeviceId": 0, + "scope": 1 + }, + "supportedProfiles": { + "23": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core17", + "lane": 4 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core17", + "lane": 5 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core17", + "lane": 6 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core17", + "lane": 7 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip23", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip23", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip23", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip23", + "lane": 7 + } + } + ] + } + }, + "24": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core17", + "lane": 4 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core17", + "lane": 5 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core17", + "lane": 6 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core17", + "lane": 7 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip23", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip23", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip23", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip23", + "lane": 7 + } + } + ] + } + }, + "38": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core17", + "lane": 4 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core17", + "lane": 5 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core17", + "lane": 6 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core17", + "lane": 7 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip23", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip23", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip23", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip23", + "lane": 7 + } + } + ] + } + }, + "45": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core17", + "lane": 4 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core17", + "lane": 5 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core17", + "lane": 6 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core17", + "lane": 7 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip23", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip23", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip23", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip23", + "lane": 7 + } + } + ] + } + } + } + }, + "21": { + "mapping": { + "id": 21, + "name": "eth1/24/1", + "controllingPort": 21, + "pins": [ + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core12", + "lane": 0 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip24", + "lane": 0 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core12", + "lane": 1 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip24", + "lane": 1 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core12", + "lane": 2 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip24", + "lane": 2 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core12", + "lane": 3 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip24", + "lane": 3 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core12", + "lane": 4 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip24", + "lane": 4 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core12", + "lane": 5 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip24", + "lane": 5 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core12", + "lane": 6 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip24", + "lane": 6 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core12", + "lane": 7 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip24", + "lane": 7 + } + } + } + ], + "portType": 0, + "attachedCoreId": 3, + "attachedCorePortIndex": 0, + "virtualDeviceId": 0, + "scope": 1 + }, + "supportedProfiles": { + "23": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core12", + "lane": 0 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core12", + "lane": 1 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core12", + "lane": 2 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core12", + "lane": 3 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip24", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip24", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip24", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip24", + "lane": 3 + } + } + ] + } + }, + "24": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core12", + "lane": 0 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core12", + "lane": 1 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core12", + "lane": 2 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core12", + "lane": 3 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip24", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip24", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip24", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip24", + "lane": 3 + } + } + ] + } + }, + "35": { + "subsumedPorts": [ + 16405 + ], + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core12", + "lane": 0 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core12", + "lane": 1 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core12", + "lane": 2 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core12", + "lane": 3 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core12", + "lane": 4 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core12", + "lane": 5 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core12", + "lane": 6 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core12", + "lane": 7 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip24", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip24", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip24", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip24", + "lane": 3 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip24", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip24", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip24", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip24", + "lane": 7 + } + } + ] + } + }, + "38": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core12", + "lane": 0 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core12", + "lane": 1 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core12", + "lane": 2 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core12", + "lane": 3 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip24", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip24", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip24", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip24", + "lane": 3 + } + } + ] + } + }, + "39": { + "subsumedPorts": [ + 16405 + ], + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core12", + "lane": 0 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core12", + "lane": 1 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core12", + "lane": 2 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core12", + "lane": 3 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core12", + "lane": 4 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core12", + "lane": 5 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core12", + "lane": 6 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core12", + "lane": 7 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip24", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip24", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip24", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip24", + "lane": 3 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip24", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip24", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip24", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip24", + "lane": 7 + } + } + ] + } + }, + "45": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core12", + "lane": 0 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core12", + "lane": 1 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core12", + "lane": 2 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core12", + "lane": 3 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip24", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip24", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip24", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip24", + "lane": 3 + } + } + ] + } + } + } + }, + "22": { + "mapping": { + "id": 22, + "name": "eth1/25/1", + "controllingPort": 22, + "pins": [ + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core15", + "lane": 0 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip25", + "lane": 0 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core15", + "lane": 1 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip25", + "lane": 1 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core15", + "lane": 2 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip25", + "lane": 2 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core15", + "lane": 3 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip25", + "lane": 3 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core15", + "lane": 4 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip25", + "lane": 4 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core15", + "lane": 5 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip25", + "lane": 5 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core15", + "lane": 6 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip25", + "lane": 6 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core15", + "lane": 7 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip25", + "lane": 7 + } + } + } + ], + "portType": 0, + "attachedCoreId": 3, + "attachedCorePortIndex": 2, + "virtualDeviceId": 0, + "scope": 1 + }, + "supportedProfiles": { + "23": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core15", + "lane": 0 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core15", + "lane": 1 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core15", + "lane": 2 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core15", + "lane": 3 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip25", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip25", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip25", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip25", + "lane": 3 + } + } + ] + } + }, + "24": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core15", + "lane": 0 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core15", + "lane": 1 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core15", + "lane": 2 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core15", + "lane": 3 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip25", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip25", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip25", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip25", + "lane": 3 + } + } + ] + } + }, + "35": { + "subsumedPorts": [ + 23 + ], + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core15", + "lane": 0 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core15", + "lane": 1 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core15", + "lane": 2 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core15", + "lane": 3 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core15", + "lane": 4 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core15", + "lane": 5 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core15", + "lane": 6 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core15", + "lane": 7 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip25", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip25", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip25", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip25", + "lane": 3 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip25", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip25", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip25", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip25", + "lane": 7 + } + } + ] + } + }, + "38": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core15", + "lane": 0 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core15", + "lane": 1 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core15", + "lane": 2 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core15", + "lane": 3 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip25", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip25", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip25", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip25", + "lane": 3 + } + } + ] + } + }, + "39": { + "subsumedPorts": [ + 23 + ], + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core15", + "lane": 0 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core15", + "lane": 1 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core15", + "lane": 2 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core15", + "lane": 3 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core15", + "lane": 4 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core15", + "lane": 5 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core15", + "lane": 6 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core15", + "lane": 7 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip25", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip25", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip25", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip25", + "lane": 3 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip25", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip25", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip25", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip25", + "lane": 7 + } + } + ] + } + }, + "45": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core15", + "lane": 0 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core15", + "lane": 1 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core15", + "lane": 2 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core15", + "lane": 3 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip25", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip25", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip25", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip25", + "lane": 3 + } + } + ] + } + } + } + }, + "23": { + "mapping": { + "id": 23, + "name": "eth1/25/5", + "controllingPort": 22, + "pins": [ + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core15", + "lane": 4 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip25", + "lane": 4 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core15", + "lane": 5 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip25", + "lane": 5 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core15", + "lane": 6 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip25", + "lane": 6 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core15", + "lane": 7 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip25", + "lane": 7 + } + } + } + ], + "portType": 0, + "attachedCoreId": 3, + "attachedCorePortIndex": 4, + "virtualDeviceId": 0, + "scope": 1 + }, + "supportedProfiles": { + "23": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core15", + "lane": 4 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core15", + "lane": 5 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core15", + "lane": 6 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core15", + "lane": 7 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip25", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip25", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip25", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip25", + "lane": 7 + } + } + ] + } + }, + "24": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core15", + "lane": 4 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core15", + "lane": 5 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core15", + "lane": 6 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core15", + "lane": 7 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip25", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip25", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip25", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip25", + "lane": 7 + } + } + ] + } + }, + "38": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core15", + "lane": 4 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core15", + "lane": 5 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core15", + "lane": 6 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core15", + "lane": 7 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip25", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip25", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip25", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip25", + "lane": 7 + } + } + ] + } + }, + "45": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core15", + "lane": 4 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core15", + "lane": 5 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core15", + "lane": 6 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core15", + "lane": 7 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip25", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip25", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip25", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip25", + "lane": 7 + } + } + ] + } + } + } + }, + "24": { + "mapping": { + "id": 24, + "name": "eth1/26/1", + "controllingPort": 24, + "pins": [ + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core16", + "lane": 0 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip26", + "lane": 0 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core16", + "lane": 1 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip26", + "lane": 1 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core16", + "lane": 2 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip26", + "lane": 2 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core16", + "lane": 3 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip26", + "lane": 3 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core16", + "lane": 4 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip26", + "lane": 4 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core16", + "lane": 5 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip26", + "lane": 5 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core16", + "lane": 6 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip26", + "lane": 6 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core16", + "lane": 7 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip26", + "lane": 7 + } + } + } + ], + "portType": 0, + "attachedCoreId": 3, + "attachedCorePortIndex": 6, + "virtualDeviceId": 0, + "scope": 1 + }, + "supportedProfiles": { + "23": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core16", + "lane": 0 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core16", + "lane": 1 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core16", + "lane": 2 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core16", + "lane": 3 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip26", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip26", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip26", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip26", + "lane": 3 + } + } + ] + } + }, + "24": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core16", + "lane": 0 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core16", + "lane": 1 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core16", + "lane": 2 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core16", + "lane": 3 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip26", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip26", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip26", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip26", + "lane": 3 + } + } + ] + } + }, + "35": { + "subsumedPorts": [ + 16408 + ], + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core16", + "lane": 0 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core16", + "lane": 1 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core16", + "lane": 2 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core16", + "lane": 3 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core16", + "lane": 4 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core16", + "lane": 5 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core16", + "lane": 6 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core16", + "lane": 7 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip26", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip26", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip26", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip26", + "lane": 3 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip26", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip26", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip26", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip26", + "lane": 7 + } + } + ] + } + }, + "38": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core16", + "lane": 0 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core16", + "lane": 1 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core16", + "lane": 2 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core16", + "lane": 3 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip26", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip26", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip26", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip26", + "lane": 3 + } + } + ] + } + }, + "39": { + "subsumedPorts": [ + 16408 + ], + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core16", + "lane": 0 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core16", + "lane": 1 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core16", + "lane": 2 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core16", + "lane": 3 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core16", + "lane": 4 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core16", + "lane": 5 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core16", + "lane": 6 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core16", + "lane": 7 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip26", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip26", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip26", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip26", + "lane": 3 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip26", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip26", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip26", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip26", + "lane": 7 + } + } + ] + } + }, + "45": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core16", + "lane": 0 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core16", + "lane": 1 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core16", + "lane": 2 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core16", + "lane": 3 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip26", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip26", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip26", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip26", + "lane": 3 + } + } + ] + } + } + } + }, + "25": { + "mapping": { + "id": 25, + "name": "eth1/27/1", + "controllingPort": 25, + "pins": [ + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core13", + "lane": 0 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip27", + "lane": 0 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core13", + "lane": 1 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip27", + "lane": 1 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core13", + "lane": 2 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip27", + "lane": 2 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core13", + "lane": 3 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip27", + "lane": 3 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core13", + "lane": 4 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip27", + "lane": 4 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core13", + "lane": 5 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip27", + "lane": 5 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core13", + "lane": 6 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip27", + "lane": 6 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core13", + "lane": 7 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip27", + "lane": 7 + } + } + } + ], + "portType": 0, + "attachedCoreId": 3, + "attachedCorePortIndex": 8, + "virtualDeviceId": 0, + "scope": 1 + }, + "supportedProfiles": { + "23": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core13", + "lane": 0 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core13", + "lane": 1 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core13", + "lane": 2 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core13", + "lane": 3 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip27", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip27", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip27", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip27", + "lane": 3 + } + } + ] + } + }, + "24": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core13", + "lane": 0 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core13", + "lane": 1 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core13", + "lane": 2 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core13", + "lane": 3 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip27", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip27", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip27", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip27", + "lane": 3 + } + } + ] + } + }, + "35": { + "subsumedPorts": [ + 26 + ], + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core13", + "lane": 0 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core13", + "lane": 1 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core13", + "lane": 2 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core13", + "lane": 3 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core13", + "lane": 4 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core13", + "lane": 5 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core13", + "lane": 6 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core13", + "lane": 7 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip27", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip27", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip27", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip27", + "lane": 3 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip27", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip27", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip27", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip27", + "lane": 7 + } + } + ] + } + }, + "38": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core13", + "lane": 0 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core13", + "lane": 1 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core13", + "lane": 2 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core13", + "lane": 3 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip27", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip27", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip27", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip27", + "lane": 3 + } + } + ] + } + }, + "39": { + "subsumedPorts": [ + 26 + ], + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core13", + "lane": 0 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core13", + "lane": 1 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core13", + "lane": 2 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core13", + "lane": 3 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core13", + "lane": 4 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core13", + "lane": 5 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core13", + "lane": 6 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core13", + "lane": 7 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip27", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip27", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip27", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip27", + "lane": 3 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip27", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip27", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip27", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip27", + "lane": 7 + } + } + ] + } + }, + "45": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core13", + "lane": 0 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core13", + "lane": 1 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core13", + "lane": 2 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core13", + "lane": 3 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip27", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip27", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip27", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip27", + "lane": 3 + } + } + ] + } + } + } + }, + "26": { + "mapping": { + "id": 26, + "name": "eth1/27/5", + "controllingPort": 25, + "pins": [ + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core13", + "lane": 4 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip27", + "lane": 4 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core13", + "lane": 5 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip27", + "lane": 5 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core13", + "lane": 6 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip27", + "lane": 6 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core13", + "lane": 7 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip27", + "lane": 7 + } + } + } + ], + "portType": 0, + "attachedCoreId": 3, + "attachedCorePortIndex": 10, + "virtualDeviceId": 0, + "scope": 1 + }, + "supportedProfiles": { + "23": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core13", + "lane": 4 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core13", + "lane": 5 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core13", + "lane": 6 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core13", + "lane": 7 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip27", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip27", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip27", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip27", + "lane": 7 + } + } + ] + } + }, + "24": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core13", + "lane": 4 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core13", + "lane": 5 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core13", + "lane": 6 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core13", + "lane": 7 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip27", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip27", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip27", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip27", + "lane": 7 + } + } + ] + } + }, + "38": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core13", + "lane": 4 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core13", + "lane": 5 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core13", + "lane": 6 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core13", + "lane": 7 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip27", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip27", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip27", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip27", + "lane": 7 + } + } + ] + } + }, + "45": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core13", + "lane": 4 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core13", + "lane": 5 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core13", + "lane": 6 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core13", + "lane": 7 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip27", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip27", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip27", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip27", + "lane": 7 + } + } + ] + } + } + } + }, + "27": { + "mapping": { + "id": 27, + "name": "eth1/28/1", + "controllingPort": 27, + "pins": [ + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core14", + "lane": 0 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip28", + "lane": 0 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core14", + "lane": 1 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip28", + "lane": 1 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core14", + "lane": 2 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip28", + "lane": 2 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core14", + "lane": 3 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip28", + "lane": 3 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core14", + "lane": 4 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip28", + "lane": 4 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core14", + "lane": 5 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip28", + "lane": 5 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core14", + "lane": 6 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip28", + "lane": 6 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core14", + "lane": 7 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip28", + "lane": 7 + } + } + } + ], + "portType": 0, + "attachedCoreId": 3, + "attachedCorePortIndex": 12, + "virtualDeviceId": 0, + "scope": 1 + }, + "supportedProfiles": { + "23": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core14", + "lane": 0 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core14", + "lane": 1 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core14", + "lane": 2 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core14", + "lane": 3 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip28", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip28", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip28", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip28", + "lane": 3 + } + } + ] + } + }, + "24": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core14", + "lane": 0 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core14", + "lane": 1 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core14", + "lane": 2 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core14", + "lane": 3 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip28", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip28", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip28", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip28", + "lane": 3 + } + } + ] + } + }, + "35": { + "subsumedPorts": [ + 28 + ], + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core14", + "lane": 0 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core14", + "lane": 1 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core14", + "lane": 2 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core14", + "lane": 3 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core14", + "lane": 4 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core14", + "lane": 5 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core14", + "lane": 6 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core14", + "lane": 7 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip28", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip28", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip28", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip28", + "lane": 3 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip28", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip28", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip28", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip28", + "lane": 7 + } + } + ] + } + }, + "38": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core14", + "lane": 0 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core14", + "lane": 1 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core14", + "lane": 2 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core14", + "lane": 3 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip28", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip28", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip28", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip28", + "lane": 3 + } + } + ] + } + }, + "39": { + "subsumedPorts": [ + 28 + ], + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core14", + "lane": 0 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core14", + "lane": 1 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core14", + "lane": 2 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core14", + "lane": 3 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core14", + "lane": 4 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core14", + "lane": 5 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core14", + "lane": 6 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core14", + "lane": 7 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip28", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip28", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip28", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip28", + "lane": 3 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip28", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip28", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip28", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip28", + "lane": 7 + } + } + ] + } + }, + "45": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core14", + "lane": 0 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core14", + "lane": 1 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core14", + "lane": 2 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core14", + "lane": 3 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip28", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip28", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip28", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip28", + "lane": 3 + } + } + ] + } + } + } + }, + "28": { + "mapping": { + "id": 28, + "name": "eth1/28/5", + "controllingPort": 27, + "pins": [ + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core14", + "lane": 4 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip28", + "lane": 4 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core14", + "lane": 5 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip28", + "lane": 5 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core14", + "lane": 6 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip28", + "lane": 6 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core14", + "lane": 7 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip28", + "lane": 7 + } + } + } + ], + "portType": 0, + "attachedCoreId": 3, + "attachedCorePortIndex": 14, + "virtualDeviceId": 0, + "scope": 1 + }, + "supportedProfiles": { + "23": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core14", + "lane": 4 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core14", + "lane": 5 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core14", + "lane": 6 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core14", + "lane": 7 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip28", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip28", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip28", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip28", + "lane": 7 + } + } + ] + } + }, + "24": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core14", + "lane": 4 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core14", + "lane": 5 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core14", + "lane": 6 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core14", + "lane": 7 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip28", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip28", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip28", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip28", + "lane": 7 + } + } + ] + } + }, + "38": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core14", + "lane": 4 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core14", + "lane": 5 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core14", + "lane": 6 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core14", + "lane": 7 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip28", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip28", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip28", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip28", + "lane": 7 + } + } + ] + } + }, + "45": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core14", + "lane": 4 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core14", + "lane": 5 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core14", + "lane": 6 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core14", + "lane": 7 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip28", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip28", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip28", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip28", + "lane": 7 + } + } + ] + } + } + } + }, + "1024": { + "mapping": { + "id": 1024, + "name": "fab1/10/3", + "controllingPort": 1024, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core0", + "lane": 0 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip10", + "lane": 2 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core0", + "lane": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip10", + "lane": 2 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core0", + "lane": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip10", + "lane": 2 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core0", + "lane": 0 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip10", + "lane": 2 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core0", + "lane": 0 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip10", + "lane": 2 + } + } + ] + } + } + } + }, + "1025": { + "mapping": { + "id": 1025, + "name": "fab1/10/2", + "controllingPort": 1025, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core0", + "lane": 1 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip10", + "lane": 1 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core0", + "lane": 1 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip10", + "lane": 1 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core0", + "lane": 1 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip10", + "lane": 1 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core0", + "lane": 1 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip10", + "lane": 1 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core0", + "lane": 1 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip10", + "lane": 1 + } + } + ] + } + } + } + }, + "1026": { + "mapping": { + "id": 1026, + "name": "fab1/10/1", + "controllingPort": 1026, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core0", + "lane": 2 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip10", + "lane": 0 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core0", + "lane": 2 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip10", + "lane": 0 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core0", + "lane": 2 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip10", + "lane": 0 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core0", + "lane": 2 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip10", + "lane": 0 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core0", + "lane": 2 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip10", + "lane": 0 + } + } + ] + } + } + } + }, + "1027": { + "mapping": { + "id": 1027, + "name": "fab1/10/5", + "controllingPort": 1027, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core0", + "lane": 3 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip10", + "lane": 4 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core0", + "lane": 3 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip10", + "lane": 4 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core0", + "lane": 3 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip10", + "lane": 4 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core0", + "lane": 3 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip10", + "lane": 4 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core0", + "lane": 3 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip10", + "lane": 4 + } + } + ] + } + } + } + }, + "1028": { + "mapping": { + "id": 1028, + "name": "fab1/10/8", + "controllingPort": 1028, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core0", + "lane": 4 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip10", + "lane": 7 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core0", + "lane": 4 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip10", + "lane": 7 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core0", + "lane": 4 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip10", + "lane": 7 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core0", + "lane": 4 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip10", + "lane": 7 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core0", + "lane": 4 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip10", + "lane": 7 + } + } + ] + } + } + } + }, + "1029": { + "mapping": { + "id": 1029, + "name": "fab1/10/7", + "controllingPort": 1029, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core0", + "lane": 5 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip10", + "lane": 6 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core0", + "lane": 5 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip10", + "lane": 6 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core0", + "lane": 5 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip10", + "lane": 6 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core0", + "lane": 5 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip10", + "lane": 6 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core0", + "lane": 5 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip10", + "lane": 6 + } + } + ] + } + } + } + }, + "1030": { + "mapping": { + "id": 1030, + "name": "fab1/10/6", + "controllingPort": 1030, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core0", + "lane": 6 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip10", + "lane": 5 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core0", + "lane": 6 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip10", + "lane": 5 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core0", + "lane": 6 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip10", + "lane": 5 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core0", + "lane": 6 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip10", + "lane": 5 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core0", + "lane": 6 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip10", + "lane": 5 + } + } + ] + } + } + } + }, + "1031": { + "mapping": { + "id": 1031, + "name": "fab1/10/4", + "controllingPort": 1031, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core0", + "lane": 7 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip10", + "lane": 3 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core0", + "lane": 7 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip10", + "lane": 3 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core0", + "lane": 7 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip10", + "lane": 3 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core0", + "lane": 7 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip10", + "lane": 3 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core0", + "lane": 7 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip10", + "lane": 3 + } + } + ] + } + } + } + }, + "1032": { + "mapping": { + "id": 1032, + "name": "fab1/9/3", + "controllingPort": 1032, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core1", + "lane": 0 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip9", + "lane": 2 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core1", + "lane": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip9", + "lane": 2 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core1", + "lane": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip9", + "lane": 2 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core1", + "lane": 0 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip9", + "lane": 2 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core1", + "lane": 0 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip9", + "lane": 2 + } + } + ] + } + } + } + }, + "1033": { + "mapping": { + "id": 1033, + "name": "fab1/9/2", + "controllingPort": 1033, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core1", + "lane": 1 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip9", + "lane": 1 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core1", + "lane": 1 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip9", + "lane": 1 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core1", + "lane": 1 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip9", + "lane": 1 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core1", + "lane": 1 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip9", + "lane": 1 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core1", + "lane": 1 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip9", + "lane": 1 + } + } + ] + } + } + } + }, + "1034": { + "mapping": { + "id": 1034, + "name": "fab1/9/1", + "controllingPort": 1034, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core1", + "lane": 2 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip9", + "lane": 0 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core1", + "lane": 2 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip9", + "lane": 0 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core1", + "lane": 2 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip9", + "lane": 0 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core1", + "lane": 2 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip9", + "lane": 0 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core1", + "lane": 2 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip9", + "lane": 0 + } + } + ] + } + } + } + }, + "1035": { + "mapping": { + "id": 1035, + "name": "fab1/9/5", + "controllingPort": 1035, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core1", + "lane": 3 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip9", + "lane": 4 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core1", + "lane": 3 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip9", + "lane": 4 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core1", + "lane": 3 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip9", + "lane": 4 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core1", + "lane": 3 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip9", + "lane": 4 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core1", + "lane": 3 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip9", + "lane": 4 + } + } + ] + } + } + } + }, + "1036": { + "mapping": { + "id": 1036, + "name": "fab1/9/8", + "controllingPort": 1036, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core1", + "lane": 4 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip9", + "lane": 7 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core1", + "lane": 4 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip9", + "lane": 7 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core1", + "lane": 4 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip9", + "lane": 7 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core1", + "lane": 4 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip9", + "lane": 7 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core1", + "lane": 4 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip9", + "lane": 7 + } + } + ] + } + } + } + }, + "1037": { + "mapping": { + "id": 1037, + "name": "fab1/9/7", + "controllingPort": 1037, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core1", + "lane": 5 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip9", + "lane": 6 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core1", + "lane": 5 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip9", + "lane": 6 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core1", + "lane": 5 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip9", + "lane": 6 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core1", + "lane": 5 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip9", + "lane": 6 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core1", + "lane": 5 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip9", + "lane": 6 + } + } + ] + } + } + } + }, + "1038": { + "mapping": { + "id": 1038, + "name": "fab1/9/6", + "controllingPort": 1038, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core1", + "lane": 6 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip9", + "lane": 5 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core1", + "lane": 6 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip9", + "lane": 5 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core1", + "lane": 6 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip9", + "lane": 5 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core1", + "lane": 6 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip9", + "lane": 5 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core1", + "lane": 6 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip9", + "lane": 5 + } + } + ] + } + } + } + }, + "1039": { + "mapping": { + "id": 1039, + "name": "fab1/9/4", + "controllingPort": 1039, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core1", + "lane": 7 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip9", + "lane": 3 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core1", + "lane": 7 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip9", + "lane": 3 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core1", + "lane": 7 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip9", + "lane": 3 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core1", + "lane": 7 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip9", + "lane": 3 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core1", + "lane": 7 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip9", + "lane": 3 + } + } + ] + } + } + } + }, + "1040": { + "mapping": { + "id": 1040, + "name": "fab1/8/3", + "controllingPort": 1040, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core2", + "lane": 0 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip8", + "lane": 2 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core2", + "lane": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip8", + "lane": 2 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core2", + "lane": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip8", + "lane": 2 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core2", + "lane": 0 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip8", + "lane": 2 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core2", + "lane": 0 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip8", + "lane": 2 + } + } + ] + } + } + } + }, + "1041": { + "mapping": { + "id": 1041, + "name": "fab1/8/4", + "controllingPort": 1041, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core2", + "lane": 1 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip8", + "lane": 3 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core2", + "lane": 1 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip8", + "lane": 3 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core2", + "lane": 1 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip8", + "lane": 3 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core2", + "lane": 1 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip8", + "lane": 3 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core2", + "lane": 1 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip8", + "lane": 3 + } + } + ] + } + } + } + }, + "1042": { + "mapping": { + "id": 1042, + "name": "fab1/8/1", + "controllingPort": 1042, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core2", + "lane": 2 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip8", + "lane": 0 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core2", + "lane": 2 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip8", + "lane": 0 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core2", + "lane": 2 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip8", + "lane": 0 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core2", + "lane": 2 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip8", + "lane": 0 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core2", + "lane": 2 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip8", + "lane": 0 + } + } + ] + } + } + } + }, + "1043": { + "mapping": { + "id": 1043, + "name": "fab1/8/2", + "controllingPort": 1043, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core2", + "lane": 3 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip8", + "lane": 1 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core2", + "lane": 3 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip8", + "lane": 1 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core2", + "lane": 3 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip8", + "lane": 1 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core2", + "lane": 3 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip8", + "lane": 1 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core2", + "lane": 3 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip8", + "lane": 1 + } + } + ] + } + } + } + }, + "1044": { + "mapping": { + "id": 1044, + "name": "fab1/8/5", + "controllingPort": 1044, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core2", + "lane": 4 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip8", + "lane": 4 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core2", + "lane": 4 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip8", + "lane": 4 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core2", + "lane": 4 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip8", + "lane": 4 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core2", + "lane": 4 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip8", + "lane": 4 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core2", + "lane": 4 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip8", + "lane": 4 + } + } + ] + } + } + } + }, + "1045": { + "mapping": { + "id": 1045, + "name": "fab1/8/6", + "controllingPort": 1045, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core2", + "lane": 5 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip8", + "lane": 5 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core2", + "lane": 5 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip8", + "lane": 5 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core2", + "lane": 5 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip8", + "lane": 5 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core2", + "lane": 5 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip8", + "lane": 5 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core2", + "lane": 5 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip8", + "lane": 5 + } + } + ] + } + } + } + }, + "1046": { + "mapping": { + "id": 1046, + "name": "fab1/8/7", + "controllingPort": 1046, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core2", + "lane": 6 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip8", + "lane": 6 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core2", + "lane": 6 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip8", + "lane": 6 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core2", + "lane": 6 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip8", + "lane": 6 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core2", + "lane": 6 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip8", + "lane": 6 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core2", + "lane": 6 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip8", + "lane": 6 + } + } + ] + } + } + } + }, + "1047": { + "mapping": { + "id": 1047, + "name": "fab1/8/8", + "controllingPort": 1047, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core2", + "lane": 7 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip8", + "lane": 7 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core2", + "lane": 7 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip8", + "lane": 7 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core2", + "lane": 7 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip8", + "lane": 7 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core2", + "lane": 7 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip8", + "lane": 7 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core2", + "lane": 7 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip8", + "lane": 7 + } + } + ] + } + } + } + }, + "1048": { + "mapping": { + "id": 1048, + "name": "fab1/7/1", + "controllingPort": 1048, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core3", + "lane": 0 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip7", + "lane": 0 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core3", + "lane": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip7", + "lane": 0 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core3", + "lane": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip7", + "lane": 0 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core3", + "lane": 0 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip7", + "lane": 0 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core3", + "lane": 0 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip7", + "lane": 0 + } + } + ] + } + } + } + }, + "1049": { + "mapping": { + "id": 1049, + "name": "fab1/7/2", + "controllingPort": 1049, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core3", + "lane": 1 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip7", + "lane": 1 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core3", + "lane": 1 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip7", + "lane": 1 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core3", + "lane": 1 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip7", + "lane": 1 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core3", + "lane": 1 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip7", + "lane": 1 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core3", + "lane": 1 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip7", + "lane": 1 + } + } + ] + } + } + } + }, + "1050": { + "mapping": { + "id": 1050, + "name": "fab1/7/3", + "controllingPort": 1050, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core3", + "lane": 2 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip7", + "lane": 2 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core3", + "lane": 2 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip7", + "lane": 2 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core3", + "lane": 2 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip7", + "lane": 2 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core3", + "lane": 2 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip7", + "lane": 2 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core3", + "lane": 2 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip7", + "lane": 2 + } + } + ] + } + } + } + }, + "1051": { + "mapping": { + "id": 1051, + "name": "fab1/7/4", + "controllingPort": 1051, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core3", + "lane": 3 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip7", + "lane": 3 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core3", + "lane": 3 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip7", + "lane": 3 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core3", + "lane": 3 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip7", + "lane": 3 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core3", + "lane": 3 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip7", + "lane": 3 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core3", + "lane": 3 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip7", + "lane": 3 + } + } + ] + } + } + } + }, + "1052": { + "mapping": { + "id": 1052, + "name": "fab1/7/5", + "controllingPort": 1052, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core3", + "lane": 4 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip7", + "lane": 4 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core3", + "lane": 4 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip7", + "lane": 4 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core3", + "lane": 4 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip7", + "lane": 4 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core3", + "lane": 4 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip7", + "lane": 4 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core3", + "lane": 4 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip7", + "lane": 4 + } + } + ] + } + } + } + }, + "1053": { + "mapping": { + "id": 1053, + "name": "fab1/7/6", + "controllingPort": 1053, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core3", + "lane": 5 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip7", + "lane": 5 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core3", + "lane": 5 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip7", + "lane": 5 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core3", + "lane": 5 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip7", + "lane": 5 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core3", + "lane": 5 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip7", + "lane": 5 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core3", + "lane": 5 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip7", + "lane": 5 + } + } + ] + } + } + } + }, + "1054": { + "mapping": { + "id": 1054, + "name": "fab1/7/7", + "controllingPort": 1054, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core3", + "lane": 6 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip7", + "lane": 6 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core3", + "lane": 6 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip7", + "lane": 6 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core3", + "lane": 6 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip7", + "lane": 6 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core3", + "lane": 6 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip7", + "lane": 6 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core3", + "lane": 6 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip7", + "lane": 6 + } + } + ] + } + } + } + }, + "1055": { + "mapping": { + "id": 1055, + "name": "fab1/7/8", + "controllingPort": 1055, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core3", + "lane": 7 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip7", + "lane": 7 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core3", + "lane": 7 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip7", + "lane": 7 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core3", + "lane": 7 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip7", + "lane": 7 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core3", + "lane": 7 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip7", + "lane": 7 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core3", + "lane": 7 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip7", + "lane": 7 + } + } + ] + } + } + } + }, + "1056": { + "mapping": { + "id": 1056, + "name": "fab1/6/7", + "controllingPort": 1056, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core4", + "lane": 0 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip6", + "lane": 6 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core4", + "lane": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip6", + "lane": 6 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core4", + "lane": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip6", + "lane": 6 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core4", + "lane": 0 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip6", + "lane": 6 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core4", + "lane": 0 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip6", + "lane": 6 + } + } + ] + } + } + } + }, + "1057": { + "mapping": { + "id": 1057, + "name": "fab1/6/4", + "controllingPort": 1057, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core4", + "lane": 1 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip6", + "lane": 3 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core4", + "lane": 1 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip6", + "lane": 3 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core4", + "lane": 1 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip6", + "lane": 3 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core4", + "lane": 1 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip6", + "lane": 3 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core4", + "lane": 1 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip6", + "lane": 3 + } + } + ] + } + } + } + }, + "1058": { + "mapping": { + "id": 1058, + "name": "fab1/6/6", + "controllingPort": 1058, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core4", + "lane": 2 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip6", + "lane": 5 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core4", + "lane": 2 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip6", + "lane": 5 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core4", + "lane": 2 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip6", + "lane": 5 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core4", + "lane": 2 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip6", + "lane": 5 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core4", + "lane": 2 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip6", + "lane": 5 + } + } + ] + } + } + } + }, + "1059": { + "mapping": { + "id": 1059, + "name": "fab1/6/8", + "controllingPort": 1059, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core4", + "lane": 3 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip6", + "lane": 7 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core4", + "lane": 3 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip6", + "lane": 7 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core4", + "lane": 3 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip6", + "lane": 7 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core4", + "lane": 3 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip6", + "lane": 7 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core4", + "lane": 3 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip6", + "lane": 7 + } + } + ] + } + } + } + }, + "1060": { + "mapping": { + "id": 1060, + "name": "fab1/6/5", + "controllingPort": 1060, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core4", + "lane": 4 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip6", + "lane": 4 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core4", + "lane": 4 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip6", + "lane": 4 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core4", + "lane": 4 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip6", + "lane": 4 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core4", + "lane": 4 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip6", + "lane": 4 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core4", + "lane": 4 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip6", + "lane": 4 + } + } + ] + } + } + } + }, + "1061": { + "mapping": { + "id": 1061, + "name": "fab1/6/1", + "controllingPort": 1061, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core4", + "lane": 5 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip6", + "lane": 0 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core4", + "lane": 5 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip6", + "lane": 0 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core4", + "lane": 5 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip6", + "lane": 0 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core4", + "lane": 5 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip6", + "lane": 0 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core4", + "lane": 5 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip6", + "lane": 0 + } + } + ] + } + } + } + }, + "1062": { + "mapping": { + "id": 1062, + "name": "fab1/6/3", + "controllingPort": 1062, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core4", + "lane": 6 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip6", + "lane": 2 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core4", + "lane": 6 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip6", + "lane": 2 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core4", + "lane": 6 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip6", + "lane": 2 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core4", + "lane": 6 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip6", + "lane": 2 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core4", + "lane": 6 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip6", + "lane": 2 + } + } + ] + } + } + } + }, + "1063": { + "mapping": { + "id": 1063, + "name": "fab1/6/2", + "controllingPort": 1063, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core4", + "lane": 7 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip6", + "lane": 1 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core4", + "lane": 7 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip6", + "lane": 1 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core4", + "lane": 7 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip6", + "lane": 1 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core4", + "lane": 7 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip6", + "lane": 1 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core4", + "lane": 7 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip6", + "lane": 1 + } + } + ] + } + } + } + }, + "1064": { + "mapping": { + "id": 1064, + "name": "fab1/5/7", + "controllingPort": 1064, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core5", + "lane": 0 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip5", + "lane": 6 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core5", + "lane": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip5", + "lane": 6 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core5", + "lane": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip5", + "lane": 6 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core5", + "lane": 0 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip5", + "lane": 6 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core5", + "lane": 0 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip5", + "lane": 6 + } + } + ] + } + } + } + }, + "1065": { + "mapping": { + "id": 1065, + "name": "fab1/5/4", + "controllingPort": 1065, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core5", + "lane": 1 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip5", + "lane": 3 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core5", + "lane": 1 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip5", + "lane": 3 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core5", + "lane": 1 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip5", + "lane": 3 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core5", + "lane": 1 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip5", + "lane": 3 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core5", + "lane": 1 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip5", + "lane": 3 + } + } + ] + } + } + } + }, + "1066": { + "mapping": { + "id": 1066, + "name": "fab1/5/6", + "controllingPort": 1066, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core5", + "lane": 2 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip5", + "lane": 5 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core5", + "lane": 2 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip5", + "lane": 5 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core5", + "lane": 2 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip5", + "lane": 5 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core5", + "lane": 2 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip5", + "lane": 5 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core5", + "lane": 2 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip5", + "lane": 5 + } + } + ] + } + } + } + }, + "1067": { + "mapping": { + "id": 1067, + "name": "fab1/5/8", + "controllingPort": 1067, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core5", + "lane": 3 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip5", + "lane": 7 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core5", + "lane": 3 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip5", + "lane": 7 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core5", + "lane": 3 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip5", + "lane": 7 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core5", + "lane": 3 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip5", + "lane": 7 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core5", + "lane": 3 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip5", + "lane": 7 + } + } + ] + } + } + } + }, + "1068": { + "mapping": { + "id": 1068, + "name": "fab1/5/5", + "controllingPort": 1068, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core5", + "lane": 4 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip5", + "lane": 4 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core5", + "lane": 4 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip5", + "lane": 4 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core5", + "lane": 4 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip5", + "lane": 4 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core5", + "lane": 4 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip5", + "lane": 4 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core5", + "lane": 4 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip5", + "lane": 4 + } + } + ] + } + } + } + }, + "1069": { + "mapping": { + "id": 1069, + "name": "fab1/5/3", + "controllingPort": 1069, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core5", + "lane": 5 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip5", + "lane": 2 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core5", + "lane": 5 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip5", + "lane": 2 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core5", + "lane": 5 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip5", + "lane": 2 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core5", + "lane": 5 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip5", + "lane": 2 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core5", + "lane": 5 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip5", + "lane": 2 + } + } + ] + } + } + } + }, + "1070": { + "mapping": { + "id": 1070, + "name": "fab1/5/1", + "controllingPort": 1070, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core5", + "lane": 6 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip5", + "lane": 0 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core5", + "lane": 6 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip5", + "lane": 0 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core5", + "lane": 6 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip5", + "lane": 0 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core5", + "lane": 6 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip5", + "lane": 0 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core5", + "lane": 6 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip5", + "lane": 0 + } + } + ] + } + } + } + }, + "1071": { + "mapping": { + "id": 1071, + "name": "fab1/5/2", + "controllingPort": 1071, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core5", + "lane": 7 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip5", + "lane": 1 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core5", + "lane": 7 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip5", + "lane": 1 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core5", + "lane": 7 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip5", + "lane": 1 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core5", + "lane": 7 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip5", + "lane": 1 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core5", + "lane": 7 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip5", + "lane": 1 + } + } + ] + } + } + } + }, + "1072": { + "mapping": { + "id": 1072, + "name": "fab1/4/3", + "controllingPort": 1072, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core6", + "lane": 0 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip4", + "lane": 2 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core6", + "lane": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip4", + "lane": 2 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core6", + "lane": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip4", + "lane": 2 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core6", + "lane": 0 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 136, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip4", + "lane": 2 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core6", + "lane": 0 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip4", + "lane": 2 + } + } + ] + } + } + } + }, + "1073": { + "mapping": { + "id": 1073, + "name": "fab1/4/4", + "controllingPort": 1073, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core6", + "lane": 1 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip4", + "lane": 3 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core6", + "lane": 1 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip4", + "lane": 3 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core6", + "lane": 1 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip4", + "lane": 3 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core6", + "lane": 1 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 136, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip4", + "lane": 3 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core6", + "lane": 1 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip4", + "lane": 3 + } + } + ] + } + } + } + }, + "1074": { + "mapping": { + "id": 1074, + "name": "fab1/4/1", + "controllingPort": 1074, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core6", + "lane": 2 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip4", + "lane": 0 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core6", + "lane": 2 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip4", + "lane": 0 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core6", + "lane": 2 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip4", + "lane": 0 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core6", + "lane": 2 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 136, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip4", + "lane": 0 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core6", + "lane": 2 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip4", + "lane": 0 + } + } + ] + } + } + } + }, + "1075": { + "mapping": { + "id": 1075, + "name": "fab1/4/2", + "controllingPort": 1075, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core6", + "lane": 3 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip4", + "lane": 1 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core6", + "lane": 3 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip4", + "lane": 1 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core6", + "lane": 3 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip4", + "lane": 1 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core6", + "lane": 3 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 136, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip4", + "lane": 1 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core6", + "lane": 3 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip4", + "lane": 1 + } + } + ] + } + } + } + }, + "1076": { + "mapping": { + "id": 1076, + "name": "fab1/4/5", + "controllingPort": 1076, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core6", + "lane": 4 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip4", + "lane": 4 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core6", + "lane": 4 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip4", + "lane": 4 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core6", + "lane": 4 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip4", + "lane": 4 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core6", + "lane": 4 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 136, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip4", + "lane": 4 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core6", + "lane": 4 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip4", + "lane": 4 + } + } + ] + } + } + } + }, + "1077": { + "mapping": { + "id": 1077, + "name": "fab1/4/6", + "controllingPort": 1077, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core6", + "lane": 5 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip4", + "lane": 5 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core6", + "lane": 5 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip4", + "lane": 5 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core6", + "lane": 5 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip4", + "lane": 5 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core6", + "lane": 5 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 136, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip4", + "lane": 5 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core6", + "lane": 5 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip4", + "lane": 5 + } + } + ] + } + } + } + }, + "1078": { + "mapping": { + "id": 1078, + "name": "fab1/4/7", + "controllingPort": 1078, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core6", + "lane": 6 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip4", + "lane": 6 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core6", + "lane": 6 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip4", + "lane": 6 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core6", + "lane": 6 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip4", + "lane": 6 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core6", + "lane": 6 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 136, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip4", + "lane": 6 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core6", + "lane": 6 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip4", + "lane": 6 + } + } + ] + } + } + } + }, + "1079": { + "mapping": { + "id": 1079, + "name": "fab1/4/8", + "controllingPort": 1079, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core6", + "lane": 7 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip4", + "lane": 7 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core6", + "lane": 7 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip4", + "lane": 7 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core6", + "lane": 7 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip4", + "lane": 7 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core6", + "lane": 7 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 136, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip4", + "lane": 7 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core6", + "lane": 7 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip4", + "lane": 7 + } + } + ] + } + } + } + }, + "1080": { + "mapping": { + "id": 1080, + "name": "fab1/3/1", + "controllingPort": 1080, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core7", + "lane": 0 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip3", + "lane": 0 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core7", + "lane": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip3", + "lane": 0 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core7", + "lane": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip3", + "lane": 0 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core7", + "lane": 0 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 136, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip3", + "lane": 0 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core7", + "lane": 0 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip3", + "lane": 0 + } + } + ] + } + } + } + }, + "1081": { + "mapping": { + "id": 1081, + "name": "fab1/3/2", + "controllingPort": 1081, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core7", + "lane": 1 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip3", + "lane": 1 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core7", + "lane": 1 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip3", + "lane": 1 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core7", + "lane": 1 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip3", + "lane": 1 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core7", + "lane": 1 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 136, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip3", + "lane": 1 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core7", + "lane": 1 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip3", + "lane": 1 + } + } + ] + } + } + } + }, + "1082": { + "mapping": { + "id": 1082, + "name": "fab1/3/3", + "controllingPort": 1082, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core7", + "lane": 2 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip3", + "lane": 2 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core7", + "lane": 2 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip3", + "lane": 2 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core7", + "lane": 2 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip3", + "lane": 2 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core7", + "lane": 2 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 136, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip3", + "lane": 2 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core7", + "lane": 2 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip3", + "lane": 2 + } + } + ] + } + } + } + }, + "1083": { + "mapping": { + "id": 1083, + "name": "fab1/3/4", + "controllingPort": 1083, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core7", + "lane": 3 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip3", + "lane": 3 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core7", + "lane": 3 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip3", + "lane": 3 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core7", + "lane": 3 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip3", + "lane": 3 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core7", + "lane": 3 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 136, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip3", + "lane": 3 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core7", + "lane": 3 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip3", + "lane": 3 + } + } + ] + } + } + } + }, + "1084": { + "mapping": { + "id": 1084, + "name": "fab1/3/5", + "controllingPort": 1084, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core7", + "lane": 4 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip3", + "lane": 4 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core7", + "lane": 4 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip3", + "lane": 4 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core7", + "lane": 4 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip3", + "lane": 4 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core7", + "lane": 4 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 136, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip3", + "lane": 4 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core7", + "lane": 4 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip3", + "lane": 4 + } + } + ] + } + } + } + }, + "1085": { + "mapping": { + "id": 1085, + "name": "fab1/3/6", + "controllingPort": 1085, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core7", + "lane": 5 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip3", + "lane": 5 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core7", + "lane": 5 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip3", + "lane": 5 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core7", + "lane": 5 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip3", + "lane": 5 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core7", + "lane": 5 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 136, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip3", + "lane": 5 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core7", + "lane": 5 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip3", + "lane": 5 + } + } + ] + } + } + } + }, + "1086": { + "mapping": { + "id": 1086, + "name": "fab1/3/7", + "controllingPort": 1086, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core7", + "lane": 6 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip3", + "lane": 6 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core7", + "lane": 6 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip3", + "lane": 6 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core7", + "lane": 6 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip3", + "lane": 6 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core7", + "lane": 6 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 136, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip3", + "lane": 6 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core7", + "lane": 6 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip3", + "lane": 6 + } + } + ] + } + } + } + }, + "1087": { + "mapping": { + "id": 1087, + "name": "fab1/3/8", + "controllingPort": 1087, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core7", + "lane": 7 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip3", + "lane": 7 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core7", + "lane": 7 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip3", + "lane": 7 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core7", + "lane": 7 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip3", + "lane": 7 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core7", + "lane": 7 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 136, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip3", + "lane": 7 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core7", + "lane": 7 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip3", + "lane": 7 + } + } + ] + } + } + } + }, + "1088": { + "mapping": { + "id": 1088, + "name": "fab1/1/3", + "controllingPort": 1088, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core8", + "lane": 0 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip1", + "lane": 2 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core8", + "lane": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip1", + "lane": 2 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core8", + "lane": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip1", + "lane": 2 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core8", + "lane": 0 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 136, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip1", + "lane": 2 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core8", + "lane": 0 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip1", + "lane": 2 + } + } + ] + } + } + } + }, + "1089": { + "mapping": { + "id": 1089, + "name": "fab1/1/2", + "controllingPort": 1089, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core8", + "lane": 1 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip1", + "lane": 1 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core8", + "lane": 1 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip1", + "lane": 1 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core8", + "lane": 1 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip1", + "lane": 1 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core8", + "lane": 1 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 136, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip1", + "lane": 1 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core8", + "lane": 1 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip1", + "lane": 1 + } + } + ] + } + } + } + }, + "1090": { + "mapping": { + "id": 1090, + "name": "fab1/1/6", + "controllingPort": 1090, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core8", + "lane": 2 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip1", + "lane": 5 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core8", + "lane": 2 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip1", + "lane": 5 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core8", + "lane": 2 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip1", + "lane": 5 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core8", + "lane": 2 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 136, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip1", + "lane": 5 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core8", + "lane": 2 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip1", + "lane": 5 + } + } + ] + } + } + } + }, + "1091": { + "mapping": { + "id": 1091, + "name": "fab1/1/4", + "controllingPort": 1091, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core8", + "lane": 3 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip1", + "lane": 3 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core8", + "lane": 3 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip1", + "lane": 3 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core8", + "lane": 3 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip1", + "lane": 3 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core8", + "lane": 3 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 136, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip1", + "lane": 3 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core8", + "lane": 3 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip1", + "lane": 3 + } + } + ] + } + } + } + }, + "1092": { + "mapping": { + "id": 1092, + "name": "fab1/1/5", + "controllingPort": 1092, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core8", + "lane": 4 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip1", + "lane": 4 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core8", + "lane": 4 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip1", + "lane": 4 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core8", + "lane": 4 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip1", + "lane": 4 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core8", + "lane": 4 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 136, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip1", + "lane": 4 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core8", + "lane": 4 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip1", + "lane": 4 + } + } + ] + } + } + } + }, + "1093": { + "mapping": { + "id": 1093, + "name": "fab1/1/1", + "controllingPort": 1093, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core8", + "lane": 5 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip1", + "lane": 0 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core8", + "lane": 5 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip1", + "lane": 0 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core8", + "lane": 5 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip1", + "lane": 0 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core8", + "lane": 5 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 136, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip1", + "lane": 0 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core8", + "lane": 5 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip1", + "lane": 0 + } + } + ] + } + } + } + }, + "1094": { + "mapping": { + "id": 1094, + "name": "fab1/1/7", + "controllingPort": 1094, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core8", + "lane": 6 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip1", + "lane": 6 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core8", + "lane": 6 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip1", + "lane": 6 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core8", + "lane": 6 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip1", + "lane": 6 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core8", + "lane": 6 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 136, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip1", + "lane": 6 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core8", + "lane": 6 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip1", + "lane": 6 + } + } + ] + } + } + } + }, + "1095": { + "mapping": { + "id": 1095, + "name": "fab1/1/8", + "controllingPort": 1095, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core8", + "lane": 7 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip1", + "lane": 7 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core8", + "lane": 7 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip1", + "lane": 7 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core8", + "lane": 7 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip1", + "lane": 7 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core8", + "lane": 7 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 136, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip1", + "lane": 7 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core8", + "lane": 7 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip1", + "lane": 7 + } + } + ] + } + } + } + }, + "1096": { + "mapping": { + "id": 1096, + "name": "fab1/2/1", + "controllingPort": 1096, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core9", + "lane": 0 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip2", + "lane": 0 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core9", + "lane": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip2", + "lane": 0 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core9", + "lane": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip2", + "lane": 0 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core9", + "lane": 0 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 136, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip2", + "lane": 0 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core9", + "lane": 0 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip2", + "lane": 0 + } + } + ] + } + } + } + }, + "1097": { + "mapping": { + "id": 1097, + "name": "fab1/2/4", + "controllingPort": 1097, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core9", + "lane": 1 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip2", + "lane": 3 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core9", + "lane": 1 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip2", + "lane": 3 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core9", + "lane": 1 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip2", + "lane": 3 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core9", + "lane": 1 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 136, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip2", + "lane": 3 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core9", + "lane": 1 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip2", + "lane": 3 + } + } + ] + } + } + } + }, + "1098": { + "mapping": { + "id": 1098, + "name": "fab1/2/3", + "controllingPort": 1098, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core9", + "lane": 2 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip2", + "lane": 2 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core9", + "lane": 2 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip2", + "lane": 2 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core9", + "lane": 2 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip2", + "lane": 2 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core9", + "lane": 2 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 136, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip2", + "lane": 2 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core9", + "lane": 2 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip2", + "lane": 2 + } + } + ] + } + } + } + }, + "1099": { + "mapping": { + "id": 1099, + "name": "fab1/2/8", + "controllingPort": 1099, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core9", + "lane": 3 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip2", + "lane": 7 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core9", + "lane": 3 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip2", + "lane": 7 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core9", + "lane": 3 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip2", + "lane": 7 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core9", + "lane": 3 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 136, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip2", + "lane": 7 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core9", + "lane": 3 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip2", + "lane": 7 + } + } + ] + } + } + } + }, + "1100": { + "mapping": { + "id": 1100, + "name": "fab1/2/5", + "controllingPort": 1100, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core9", + "lane": 4 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip2", + "lane": 4 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core9", + "lane": 4 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip2", + "lane": 4 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core9", + "lane": 4 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip2", + "lane": 4 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core9", + "lane": 4 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 136, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip2", + "lane": 4 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core9", + "lane": 4 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip2", + "lane": 4 + } + } + ] + } + } + } + }, + "1101": { + "mapping": { + "id": 1101, + "name": "fab1/2/6", + "controllingPort": 1101, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core9", + "lane": 5 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip2", + "lane": 5 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core9", + "lane": 5 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip2", + "lane": 5 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core9", + "lane": 5 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip2", + "lane": 5 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core9", + "lane": 5 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 136, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip2", + "lane": 5 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core9", + "lane": 5 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip2", + "lane": 5 + } + } + ] + } + } + } + }, + "1102": { + "mapping": { + "id": 1102, + "name": "fab1/2/7", + "controllingPort": 1102, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core9", + "lane": 6 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip2", + "lane": 6 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core9", + "lane": 6 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip2", + "lane": 6 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core9", + "lane": 6 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip2", + "lane": 6 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core9", + "lane": 6 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 136, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip2", + "lane": 6 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core9", + "lane": 6 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip2", + "lane": 6 + } + } + ] + } + } + } + }, + "1103": { + "mapping": { + "id": 1103, + "name": "fab1/2/2", + "controllingPort": 1103, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core9", + "lane": 7 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip2", + "lane": 1 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core9", + "lane": 7 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip2", + "lane": 1 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core9", + "lane": 7 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip2", + "lane": 1 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core9", + "lane": 7 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 136, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip2", + "lane": 1 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core9", + "lane": 7 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip2", + "lane": 1 + } + } + ] + } + } + } + }, + "1104": { + "mapping": { + "id": 1104, + "name": "fab1/30/7", + "controllingPort": 1104, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core10", + "lane": 0 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip30", + "lane": 6 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core10", + "lane": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip30", + "lane": 6 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core10", + "lane": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip30", + "lane": 6 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core10", + "lane": 0 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip30", + "lane": 6 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core10", + "lane": 0 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip30", + "lane": 6 + } + } + ] + } + } + } + }, + "1105": { + "mapping": { + "id": 1105, + "name": "fab1/30/4", + "controllingPort": 1105, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core10", + "lane": 1 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip30", + "lane": 3 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core10", + "lane": 1 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip30", + "lane": 3 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core10", + "lane": 1 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip30", + "lane": 3 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core10", + "lane": 1 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip30", + "lane": 3 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core10", + "lane": 1 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip30", + "lane": 3 + } + } + ] + } + } + } + }, + "1106": { + "mapping": { + "id": 1106, + "name": "fab1/30/6", + "controllingPort": 1106, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core10", + "lane": 2 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip30", + "lane": 5 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core10", + "lane": 2 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip30", + "lane": 5 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core10", + "lane": 2 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip30", + "lane": 5 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core10", + "lane": 2 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip30", + "lane": 5 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core10", + "lane": 2 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip30", + "lane": 5 + } + } + ] + } + } + } + }, + "1107": { + "mapping": { + "id": 1107, + "name": "fab1/30/8", + "controllingPort": 1107, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core10", + "lane": 3 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip30", + "lane": 7 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core10", + "lane": 3 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip30", + "lane": 7 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core10", + "lane": 3 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip30", + "lane": 7 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core10", + "lane": 3 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip30", + "lane": 7 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core10", + "lane": 3 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip30", + "lane": 7 + } + } + ] + } + } + } + }, + "1108": { + "mapping": { + "id": 1108, + "name": "fab1/30/5", + "controllingPort": 1108, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core10", + "lane": 4 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip30", + "lane": 4 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core10", + "lane": 4 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip30", + "lane": 4 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core10", + "lane": 4 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip30", + "lane": 4 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core10", + "lane": 4 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip30", + "lane": 4 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core10", + "lane": 4 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip30", + "lane": 4 + } + } + ] + } + } + } + }, + "1109": { + "mapping": { + "id": 1109, + "name": "fab1/30/3", + "controllingPort": 1109, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core10", + "lane": 5 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip30", + "lane": 2 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core10", + "lane": 5 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip30", + "lane": 2 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core10", + "lane": 5 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip30", + "lane": 2 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core10", + "lane": 5 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip30", + "lane": 2 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core10", + "lane": 5 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip30", + "lane": 2 + } + } + ] + } + } + } + }, + "1110": { + "mapping": { + "id": 1110, + "name": "fab1/30/1", + "controllingPort": 1110, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core10", + "lane": 6 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip30", + "lane": 0 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core10", + "lane": 6 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip30", + "lane": 0 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core10", + "lane": 6 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip30", + "lane": 0 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core10", + "lane": 6 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip30", + "lane": 0 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core10", + "lane": 6 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip30", + "lane": 0 + } + } + ] + } + } + } + }, + "1111": { + "mapping": { + "id": 1111, + "name": "fab1/30/2", + "controllingPort": 1111, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core10", + "lane": 7 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip30", + "lane": 1 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core10", + "lane": 7 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip30", + "lane": 1 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core10", + "lane": 7 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip30", + "lane": 1 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core10", + "lane": 7 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip30", + "lane": 1 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core10", + "lane": 7 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip30", + "lane": 1 + } + } + ] + } + } + } + }, + "1112": { + "mapping": { + "id": 1112, + "name": "fab1/29/3", + "controllingPort": 1112, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core11", + "lane": 0 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip29", + "lane": 2 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core11", + "lane": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip29", + "lane": 2 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core11", + "lane": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip29", + "lane": 2 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core11", + "lane": 0 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip29", + "lane": 2 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core11", + "lane": 0 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip29", + "lane": 2 + } + } + ] + } + } + } + }, + "1113": { + "mapping": { + "id": 1113, + "name": "fab1/29/8", + "controllingPort": 1113, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core11", + "lane": 1 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip29", + "lane": 7 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core11", + "lane": 1 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip29", + "lane": 7 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core11", + "lane": 1 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip29", + "lane": 7 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core11", + "lane": 1 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip29", + "lane": 7 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core11", + "lane": 1 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip29", + "lane": 7 + } + } + ] + } + } + } + }, + "1114": { + "mapping": { + "id": 1114, + "name": "fab1/29/7", + "controllingPort": 1114, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core11", + "lane": 2 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip29", + "lane": 6 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core11", + "lane": 2 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip29", + "lane": 6 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core11", + "lane": 2 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip29", + "lane": 6 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core11", + "lane": 2 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip29", + "lane": 6 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core11", + "lane": 2 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip29", + "lane": 6 + } + } + ] + } + } + } + }, + "1115": { + "mapping": { + "id": 1115, + "name": "fab1/29/5", + "controllingPort": 1115, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core11", + "lane": 3 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip29", + "lane": 4 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core11", + "lane": 3 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip29", + "lane": 4 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core11", + "lane": 3 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip29", + "lane": 4 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core11", + "lane": 3 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip29", + "lane": 4 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core11", + "lane": 3 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip29", + "lane": 4 + } + } + ] + } + } + } + }, + "1116": { + "mapping": { + "id": 1116, + "name": "fab1/29/2", + "controllingPort": 1116, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core11", + "lane": 4 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip29", + "lane": 1 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core11", + "lane": 4 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip29", + "lane": 1 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core11", + "lane": 4 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip29", + "lane": 1 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core11", + "lane": 4 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip29", + "lane": 1 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core11", + "lane": 4 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip29", + "lane": 1 + } + } + ] + } + } + } + }, + "1117": { + "mapping": { + "id": 1117, + "name": "fab1/29/1", + "controllingPort": 1117, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core11", + "lane": 5 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip29", + "lane": 0 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core11", + "lane": 5 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip29", + "lane": 0 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core11", + "lane": 5 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip29", + "lane": 0 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core11", + "lane": 5 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip29", + "lane": 0 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core11", + "lane": 5 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip29", + "lane": 0 + } + } + ] + } + } + } + }, + "1118": { + "mapping": { + "id": 1118, + "name": "fab1/29/6", + "controllingPort": 1118, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core11", + "lane": 6 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip29", + "lane": 5 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core11", + "lane": 6 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip29", + "lane": 5 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core11", + "lane": 6 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip29", + "lane": 5 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core11", + "lane": 6 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip29", + "lane": 5 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core11", + "lane": 6 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip29", + "lane": 5 + } + } + ] + } + } + } + }, + "1119": { + "mapping": { + "id": 1119, + "name": "fab1/29/4", + "controllingPort": 1119, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core11", + "lane": 7 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip29", + "lane": 3 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core11", + "lane": 7 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip29", + "lane": 3 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core11", + "lane": 7 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip29", + "lane": 3 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core11", + "lane": 7 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip29", + "lane": 3 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core11", + "lane": 7 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip29", + "lane": 3 + } + } + ] + } + } + } + }, + "1120": { + "mapping": { + "id": 1120, + "name": "fab1/32/1", + "controllingPort": 1120, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core12", + "lane": 0 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip32", + "lane": 0 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core12", + "lane": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip32", + "lane": 0 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core12", + "lane": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip32", + "lane": 0 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core12", + "lane": 0 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip32", + "lane": 0 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core12", + "lane": 0 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip32", + "lane": 0 + } + } + ] + } + } + } + }, + "1121": { + "mapping": { + "id": 1121, + "name": "fab1/32/4", + "controllingPort": 1121, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core12", + "lane": 1 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip32", + "lane": 3 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core12", + "lane": 1 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip32", + "lane": 3 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core12", + "lane": 1 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip32", + "lane": 3 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core12", + "lane": 1 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip32", + "lane": 3 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core12", + "lane": 1 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip32", + "lane": 3 + } + } + ] + } + } + } + }, + "1122": { + "mapping": { + "id": 1122, + "name": "fab1/32/6", + "controllingPort": 1122, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core12", + "lane": 2 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip32", + "lane": 5 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core12", + "lane": 2 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip32", + "lane": 5 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core12", + "lane": 2 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip32", + "lane": 5 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core12", + "lane": 2 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip32", + "lane": 5 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core12", + "lane": 2 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip32", + "lane": 5 + } + } + ] + } + } + } + }, + "1123": { + "mapping": { + "id": 1123, + "name": "fab1/32/2", + "controllingPort": 1123, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core12", + "lane": 3 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip32", + "lane": 1 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core12", + "lane": 3 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip32", + "lane": 1 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core12", + "lane": 3 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip32", + "lane": 1 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core12", + "lane": 3 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip32", + "lane": 1 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core12", + "lane": 3 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip32", + "lane": 1 + } + } + ] + } + } + } + }, + "1124": { + "mapping": { + "id": 1124, + "name": "fab1/32/5", + "controllingPort": 1124, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core12", + "lane": 4 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip32", + "lane": 4 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core12", + "lane": 4 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip32", + "lane": 4 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core12", + "lane": 4 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip32", + "lane": 4 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core12", + "lane": 4 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip32", + "lane": 4 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core12", + "lane": 4 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip32", + "lane": 4 + } + } + ] + } + } + } + }, + "1125": { + "mapping": { + "id": 1125, + "name": "fab1/32/3", + "controllingPort": 1125, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core12", + "lane": 5 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip32", + "lane": 2 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core12", + "lane": 5 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip32", + "lane": 2 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core12", + "lane": 5 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip32", + "lane": 2 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core12", + "lane": 5 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip32", + "lane": 2 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core12", + "lane": 5 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip32", + "lane": 2 + } + } + ] + } + } + } + }, + "1126": { + "mapping": { + "id": 1126, + "name": "fab1/32/7", + "controllingPort": 1126, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core12", + "lane": 6 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip32", + "lane": 6 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core12", + "lane": 6 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip32", + "lane": 6 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core12", + "lane": 6 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip32", + "lane": 6 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core12", + "lane": 6 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip32", + "lane": 6 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core12", + "lane": 6 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip32", + "lane": 6 + } + } + ] + } + } + } + }, + "1127": { + "mapping": { + "id": 1127, + "name": "fab1/32/8", + "controllingPort": 1127, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core12", + "lane": 7 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip32", + "lane": 7 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core12", + "lane": 7 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip32", + "lane": 7 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core12", + "lane": 7 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip32", + "lane": 7 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core12", + "lane": 7 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip32", + "lane": 7 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core12", + "lane": 7 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip32", + "lane": 7 + } + } + ] + } + } + } + }, + "1128": { + "mapping": { + "id": 1128, + "name": "fab1/33/6", + "controllingPort": 1128, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core13", + "lane": 0 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip33", + "lane": 5 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core13", + "lane": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip33", + "lane": 5 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core13", + "lane": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip33", + "lane": 5 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core13", + "lane": 0 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip33", + "lane": 5 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core13", + "lane": 0 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip33", + "lane": 5 + } + } + ] + } + } + } + }, + "1129": { + "mapping": { + "id": 1129, + "name": "fab1/33/8", + "controllingPort": 1129, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core13", + "lane": 1 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip33", + "lane": 7 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core13", + "lane": 1 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip33", + "lane": 7 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core13", + "lane": 1 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip33", + "lane": 7 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core13", + "lane": 1 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip33", + "lane": 7 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core13", + "lane": 1 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip33", + "lane": 7 + } + } + ] + } + } + } + }, + "1130": { + "mapping": { + "id": 1130, + "name": "fab1/33/7", + "controllingPort": 1130, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core13", + "lane": 2 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip33", + "lane": 6 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core13", + "lane": 2 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip33", + "lane": 6 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core13", + "lane": 2 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip33", + "lane": 6 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core13", + "lane": 2 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip33", + "lane": 6 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core13", + "lane": 2 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip33", + "lane": 6 + } + } + ] + } + } + } + }, + "1131": { + "mapping": { + "id": 1131, + "name": "fab1/33/5", + "controllingPort": 1131, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core13", + "lane": 3 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip33", + "lane": 4 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core13", + "lane": 3 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip33", + "lane": 4 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core13", + "lane": 3 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip33", + "lane": 4 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core13", + "lane": 3 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip33", + "lane": 4 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core13", + "lane": 3 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip33", + "lane": 4 + } + } + ] + } + } + } + }, + "1132": { + "mapping": { + "id": 1132, + "name": "fab1/33/2", + "controllingPort": 1132, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core13", + "lane": 4 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip33", + "lane": 1 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core13", + "lane": 4 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip33", + "lane": 1 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core13", + "lane": 4 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip33", + "lane": 1 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core13", + "lane": 4 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip33", + "lane": 1 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core13", + "lane": 4 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip33", + "lane": 1 + } + } + ] + } + } + } + }, + "1133": { + "mapping": { + "id": 1133, + "name": "fab1/33/1", + "controllingPort": 1133, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core13", + "lane": 5 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip33", + "lane": 0 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core13", + "lane": 5 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip33", + "lane": 0 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core13", + "lane": 5 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip33", + "lane": 0 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core13", + "lane": 5 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip33", + "lane": 0 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core13", + "lane": 5 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip33", + "lane": 0 + } + } + ] + } + } + } + }, + "1134": { + "mapping": { + "id": 1134, + "name": "fab1/33/3", + "controllingPort": 1134, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core13", + "lane": 6 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip33", + "lane": 2 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core13", + "lane": 6 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip33", + "lane": 2 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core13", + "lane": 6 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip33", + "lane": 2 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core13", + "lane": 6 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip33", + "lane": 2 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core13", + "lane": 6 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip33", + "lane": 2 + } + } + ] + } + } + } + }, + "1135": { + "mapping": { + "id": 1135, + "name": "fab1/33/4", + "controllingPort": 1135, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core13", + "lane": 7 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip33", + "lane": 3 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core13", + "lane": 7 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip33", + "lane": 3 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core13", + "lane": 7 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip33", + "lane": 3 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core13", + "lane": 7 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip33", + "lane": 3 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core13", + "lane": 7 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip33", + "lane": 3 + } + } + ] + } + } + } + }, + "1136": { + "mapping": { + "id": 1136, + "name": "fab1/31/6", + "controllingPort": 1136, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core14", + "lane": 0 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip31", + "lane": 5 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core14", + "lane": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip31", + "lane": 5 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core14", + "lane": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip31", + "lane": 5 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core14", + "lane": 0 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip31", + "lane": 5 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core14", + "lane": 0 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip31", + "lane": 5 + } + } + ] + } + } + } + }, + "1137": { + "mapping": { + "id": 1137, + "name": "fab1/31/8", + "controllingPort": 1137, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core14", + "lane": 1 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip31", + "lane": 7 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core14", + "lane": 1 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip31", + "lane": 7 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core14", + "lane": 1 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip31", + "lane": 7 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core14", + "lane": 1 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip31", + "lane": 7 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core14", + "lane": 1 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip31", + "lane": 7 + } + } + ] + } + } + } + }, + "1138": { + "mapping": { + "id": 1138, + "name": "fab1/31/1", + "controllingPort": 1138, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core14", + "lane": 2 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip31", + "lane": 0 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core14", + "lane": 2 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip31", + "lane": 0 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core14", + "lane": 2 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip31", + "lane": 0 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core14", + "lane": 2 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip31", + "lane": 0 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core14", + "lane": 2 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip31", + "lane": 0 + } + } + ] + } + } + } + }, + "1139": { + "mapping": { + "id": 1139, + "name": "fab1/31/2", + "controllingPort": 1139, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core14", + "lane": 3 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip31", + "lane": 1 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core14", + "lane": 3 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip31", + "lane": 1 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core14", + "lane": 3 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip31", + "lane": 1 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core14", + "lane": 3 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip31", + "lane": 1 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core14", + "lane": 3 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip31", + "lane": 1 + } + } + ] + } + } + } + }, + "1140": { + "mapping": { + "id": 1140, + "name": "fab1/31/5", + "controllingPort": 1140, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core14", + "lane": 4 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip31", + "lane": 4 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core14", + "lane": 4 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip31", + "lane": 4 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core14", + "lane": 4 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip31", + "lane": 4 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core14", + "lane": 4 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip31", + "lane": 4 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core14", + "lane": 4 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip31", + "lane": 4 + } + } + ] + } + } + } + }, + "1141": { + "mapping": { + "id": 1141, + "name": "fab1/31/3", + "controllingPort": 1141, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core14", + "lane": 5 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip31", + "lane": 2 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core14", + "lane": 5 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip31", + "lane": 2 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core14", + "lane": 5 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip31", + "lane": 2 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core14", + "lane": 5 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip31", + "lane": 2 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core14", + "lane": 5 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip31", + "lane": 2 + } + } + ] + } + } + } + }, + "1142": { + "mapping": { + "id": 1142, + "name": "fab1/31/7", + "controllingPort": 1142, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core14", + "lane": 6 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip31", + "lane": 6 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core14", + "lane": 6 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip31", + "lane": 6 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core14", + "lane": 6 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip31", + "lane": 6 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core14", + "lane": 6 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip31", + "lane": 6 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core14", + "lane": 6 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip31", + "lane": 6 + } + } + ] + } + } + } + }, + "1143": { + "mapping": { + "id": 1143, + "name": "fab1/31/4", + "controllingPort": 1143, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core14", + "lane": 7 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip31", + "lane": 3 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core14", + "lane": 7 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip31", + "lane": 3 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core14", + "lane": 7 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip31", + "lane": 3 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core14", + "lane": 7 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip31", + "lane": 3 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core14", + "lane": 7 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip31", + "lane": 3 + } + } + ] + } + } + } + }, + "1144": { + "mapping": { + "id": 1144, + "name": "fab1/34/3", + "controllingPort": 1144, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core15", + "lane": 0 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip34", + "lane": 2 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core15", + "lane": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip34", + "lane": 2 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core15", + "lane": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip34", + "lane": 2 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core15", + "lane": 0 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip34", + "lane": 2 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core15", + "lane": 0 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip34", + "lane": 2 + } + } + ] + } + } + } + }, + "1145": { + "mapping": { + "id": 1145, + "name": "fab1/34/8", + "controllingPort": 1145, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core15", + "lane": 1 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip34", + "lane": 7 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core15", + "lane": 1 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip34", + "lane": 7 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core15", + "lane": 1 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip34", + "lane": 7 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core15", + "lane": 1 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip34", + "lane": 7 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core15", + "lane": 1 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip34", + "lane": 7 + } + } + ] + } + } + } + }, + "1146": { + "mapping": { + "id": 1146, + "name": "fab1/34/5", + "controllingPort": 1146, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core15", + "lane": 2 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip34", + "lane": 4 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core15", + "lane": 2 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip34", + "lane": 4 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core15", + "lane": 2 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip34", + "lane": 4 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core15", + "lane": 2 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip34", + "lane": 4 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core15", + "lane": 2 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip34", + "lane": 4 + } + } + ] + } + } + } + }, + "1147": { + "mapping": { + "id": 1147, + "name": "fab1/34/7", + "controllingPort": 1147, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core15", + "lane": 3 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip34", + "lane": 6 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core15", + "lane": 3 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip34", + "lane": 6 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core15", + "lane": 3 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip34", + "lane": 6 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core15", + "lane": 3 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip34", + "lane": 6 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core15", + "lane": 3 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip34", + "lane": 6 + } + } + ] + } + } + } + }, + "1148": { + "mapping": { + "id": 1148, + "name": "fab1/34/6", + "controllingPort": 1148, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core15", + "lane": 4 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip34", + "lane": 5 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core15", + "lane": 4 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip34", + "lane": 5 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core15", + "lane": 4 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip34", + "lane": 5 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core15", + "lane": 4 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip34", + "lane": 5 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core15", + "lane": 4 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip34", + "lane": 5 + } + } + ] + } + } + } + }, + "1149": { + "mapping": { + "id": 1149, + "name": "fab1/34/1", + "controllingPort": 1149, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core15", + "lane": 5 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip34", + "lane": 0 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core15", + "lane": 5 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip34", + "lane": 0 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core15", + "lane": 5 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip34", + "lane": 0 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core15", + "lane": 5 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip34", + "lane": 0 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core15", + "lane": 5 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip34", + "lane": 0 + } + } + ] + } + } + } + }, + "1150": { + "mapping": { + "id": 1150, + "name": "fab1/34/2", + "controllingPort": 1150, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core15", + "lane": 6 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip34", + "lane": 1 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core15", + "lane": 6 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip34", + "lane": 1 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core15", + "lane": 6 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip34", + "lane": 1 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core15", + "lane": 6 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip34", + "lane": 1 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core15", + "lane": 6 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip34", + "lane": 1 + } + } + ] + } + } + } + }, + "1151": { + "mapping": { + "id": 1151, + "name": "fab1/34/4", + "controllingPort": 1151, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core15", + "lane": 7 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip34", + "lane": 3 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core15", + "lane": 7 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip34", + "lane": 3 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core15", + "lane": 7 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip34", + "lane": 3 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core15", + "lane": 7 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 116, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip34", + "lane": 3 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core15", + "lane": 7 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip34", + "lane": 3 + } + } + ] + } + } + } + }, + "1152": { + "mapping": { + "id": 1152, + "name": "fab1/38/5", + "controllingPort": 1152, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core16", + "lane": 0 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip38", + "lane": 4 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core16", + "lane": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip38", + "lane": 4 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core16", + "lane": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip38", + "lane": 4 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core16", + "lane": 0 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 136, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip38", + "lane": 4 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core16", + "lane": 0 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip38", + "lane": 4 + } + } + ] + } + } + } + }, + "1153": { + "mapping": { + "id": 1153, + "name": "fab1/38/4", + "controllingPort": 1153, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core16", + "lane": 1 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip38", + "lane": 3 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core16", + "lane": 1 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip38", + "lane": 3 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core16", + "lane": 1 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip38", + "lane": 3 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core16", + "lane": 1 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 136, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip38", + "lane": 3 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core16", + "lane": 1 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip38", + "lane": 3 + } + } + ] + } + } + } + }, + "1154": { + "mapping": { + "id": 1154, + "name": "fab1/38/6", + "controllingPort": 1154, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core16", + "lane": 2 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip38", + "lane": 5 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core16", + "lane": 2 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip38", + "lane": 5 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core16", + "lane": 2 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip38", + "lane": 5 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core16", + "lane": 2 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 136, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip38", + "lane": 5 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core16", + "lane": 2 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip38", + "lane": 5 + } + } + ] + } + } + } + }, + "1155": { + "mapping": { + "id": 1155, + "name": "fab1/38/8", + "controllingPort": 1155, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core16", + "lane": 3 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip38", + "lane": 7 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core16", + "lane": 3 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip38", + "lane": 7 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core16", + "lane": 3 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip38", + "lane": 7 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core16", + "lane": 3 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 136, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip38", + "lane": 7 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core16", + "lane": 3 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip38", + "lane": 7 + } + } + ] + } + } + } + }, + "1156": { + "mapping": { + "id": 1156, + "name": "fab1/38/1", + "controllingPort": 1156, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core16", + "lane": 4 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip38", + "lane": 0 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core16", + "lane": 4 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip38", + "lane": 0 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core16", + "lane": 4 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip38", + "lane": 0 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core16", + "lane": 4 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 136, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip38", + "lane": 0 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core16", + "lane": 4 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip38", + "lane": 0 + } + } + ] + } + } + } + }, + "1157": { + "mapping": { + "id": 1157, + "name": "fab1/38/3", + "controllingPort": 1157, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core16", + "lane": 5 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip38", + "lane": 2 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core16", + "lane": 5 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip38", + "lane": 2 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core16", + "lane": 5 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip38", + "lane": 2 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core16", + "lane": 5 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 136, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip38", + "lane": 2 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core16", + "lane": 5 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip38", + "lane": 2 + } + } + ] + } + } + } + }, + "1158": { + "mapping": { + "id": 1158, + "name": "fab1/38/7", + "controllingPort": 1158, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core16", + "lane": 6 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip38", + "lane": 6 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core16", + "lane": 6 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip38", + "lane": 6 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core16", + "lane": 6 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip38", + "lane": 6 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core16", + "lane": 6 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 136, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip38", + "lane": 6 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core16", + "lane": 6 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip38", + "lane": 6 + } + } + ] + } + } + } + }, + "1159": { + "mapping": { + "id": 1159, + "name": "fab1/38/2", + "controllingPort": 1159, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core16", + "lane": 7 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip38", + "lane": 1 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core16", + "lane": 7 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip38", + "lane": 1 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core16", + "lane": 7 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip38", + "lane": 1 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core16", + "lane": 7 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 136, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip38", + "lane": 1 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core16", + "lane": 7 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip38", + "lane": 1 + } + } + ] + } + } + } + }, + "1160": { + "mapping": { + "id": 1160, + "name": "fab1/37/3", + "controllingPort": 1160, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core17", + "lane": 0 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip37", + "lane": 2 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core17", + "lane": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip37", + "lane": 2 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core17", + "lane": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip37", + "lane": 2 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core17", + "lane": 0 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 136, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip37", + "lane": 2 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core17", + "lane": 0 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip37", + "lane": 2 + } + } + ] + } + } + } + }, + "1161": { + "mapping": { + "id": 1161, + "name": "fab1/37/8", + "controllingPort": 1161, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core17", + "lane": 1 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip37", + "lane": 7 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core17", + "lane": 1 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip37", + "lane": 7 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core17", + "lane": 1 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip37", + "lane": 7 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core17", + "lane": 1 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 136, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip37", + "lane": 7 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core17", + "lane": 1 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip37", + "lane": 7 + } + } + ] + } + } + } + }, + "1162": { + "mapping": { + "id": 1162, + "name": "fab1/37/5", + "controllingPort": 1162, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core17", + "lane": 2 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip37", + "lane": 4 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core17", + "lane": 2 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip37", + "lane": 4 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core17", + "lane": 2 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip37", + "lane": 4 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core17", + "lane": 2 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 136, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip37", + "lane": 4 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core17", + "lane": 2 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip37", + "lane": 4 + } + } + ] + } + } + } + }, + "1163": { + "mapping": { + "id": 1163, + "name": "fab1/37/7", + "controllingPort": 1163, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core17", + "lane": 3 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip37", + "lane": 6 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core17", + "lane": 3 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip37", + "lane": 6 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core17", + "lane": 3 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip37", + "lane": 6 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core17", + "lane": 3 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 136, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip37", + "lane": 6 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core17", + "lane": 3 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip37", + "lane": 6 + } + } + ] + } + } + } + }, + "1164": { + "mapping": { + "id": 1164, + "name": "fab1/37/6", + "controllingPort": 1164, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core17", + "lane": 4 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip37", + "lane": 5 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core17", + "lane": 4 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip37", + "lane": 5 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core17", + "lane": 4 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip37", + "lane": 5 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core17", + "lane": 4 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 136, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip37", + "lane": 5 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core17", + "lane": 4 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip37", + "lane": 5 + } + } + ] + } + } + } + }, + "1165": { + "mapping": { + "id": 1165, + "name": "fab1/37/1", + "controllingPort": 1165, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core17", + "lane": 5 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip37", + "lane": 0 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core17", + "lane": 5 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip37", + "lane": 0 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core17", + "lane": 5 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip37", + "lane": 0 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core17", + "lane": 5 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 136, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip37", + "lane": 0 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core17", + "lane": 5 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip37", + "lane": 0 + } + } + ] + } + } + } + }, + "1166": { + "mapping": { + "id": 1166, + "name": "fab1/37/2", + "controllingPort": 1166, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core17", + "lane": 6 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip37", + "lane": 1 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core17", + "lane": 6 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip37", + "lane": 1 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core17", + "lane": 6 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip37", + "lane": 1 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core17", + "lane": 6 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 136, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip37", + "lane": 1 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core17", + "lane": 6 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip37", + "lane": 1 + } + } + ] + } + } + } + }, + "1167": { + "mapping": { + "id": 1167, + "name": "fab1/37/4", + "controllingPort": 1167, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core17", + "lane": 7 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip37", + "lane": 3 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core17", + "lane": 7 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip37", + "lane": 3 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core17", + "lane": 7 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip37", + "lane": 3 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core17", + "lane": 7 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 136, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip37", + "lane": 3 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core17", + "lane": 7 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip37", + "lane": 3 + } + } + ] + } + } + } + }, + "1168": { + "mapping": { + "id": 1168, + "name": "fab1/35/1", + "controllingPort": 1168, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core18", + "lane": 0 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip35", + "lane": 0 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core18", + "lane": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip35", + "lane": 0 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core18", + "lane": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip35", + "lane": 0 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core18", + "lane": 0 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 136, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip35", + "lane": 0 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core18", + "lane": 0 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip35", + "lane": 0 + } + } + ] + } + } + } + }, + "1169": { + "mapping": { + "id": 1169, + "name": "fab1/35/4", + "controllingPort": 1169, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core18", + "lane": 1 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip35", + "lane": 3 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core18", + "lane": 1 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip35", + "lane": 3 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core18", + "lane": 1 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip35", + "lane": 3 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core18", + "lane": 1 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 136, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip35", + "lane": 3 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core18", + "lane": 1 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip35", + "lane": 3 + } + } + ] + } + } + } + }, + "1170": { + "mapping": { + "id": 1170, + "name": "fab1/35/6", + "controllingPort": 1170, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core18", + "lane": 2 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip35", + "lane": 5 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core18", + "lane": 2 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip35", + "lane": 5 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core18", + "lane": 2 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip35", + "lane": 5 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core18", + "lane": 2 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 136, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip35", + "lane": 5 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core18", + "lane": 2 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip35", + "lane": 5 + } + } + ] + } + } + } + }, + "1171": { + "mapping": { + "id": 1171, + "name": "fab1/35/2", + "controllingPort": 1171, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core18", + "lane": 3 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip35", + "lane": 1 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core18", + "lane": 3 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip35", + "lane": 1 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core18", + "lane": 3 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip35", + "lane": 1 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core18", + "lane": 3 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 136, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip35", + "lane": 1 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core18", + "lane": 3 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip35", + "lane": 1 + } + } + ] + } + } + } + }, + "1172": { + "mapping": { + "id": 1172, + "name": "fab1/35/5", + "controllingPort": 1172, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core18", + "lane": 4 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip35", + "lane": 4 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core18", + "lane": 4 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip35", + "lane": 4 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core18", + "lane": 4 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip35", + "lane": 4 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core18", + "lane": 4 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 136, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip35", + "lane": 4 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core18", + "lane": 4 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip35", + "lane": 4 + } + } + ] + } + } + } + }, + "1173": { + "mapping": { + "id": 1173, + "name": "fab1/35/3", + "controllingPort": 1173, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core18", + "lane": 5 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip35", + "lane": 2 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core18", + "lane": 5 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip35", + "lane": 2 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core18", + "lane": 5 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip35", + "lane": 2 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core18", + "lane": 5 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 136, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip35", + "lane": 2 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core18", + "lane": 5 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip35", + "lane": 2 + } + } + ] + } + } + } + }, + "1174": { + "mapping": { + "id": 1174, + "name": "fab1/35/7", + "controllingPort": 1174, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core18", + "lane": 6 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip35", + "lane": 6 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core18", + "lane": 6 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip35", + "lane": 6 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core18", + "lane": 6 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip35", + "lane": 6 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core18", + "lane": 6 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 136, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip35", + "lane": 6 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core18", + "lane": 6 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip35", + "lane": 6 + } + } + ] + } + } + } + }, + "1175": { + "mapping": { + "id": 1175, + "name": "fab1/35/8", + "controllingPort": 1175, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core18", + "lane": 7 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip35", + "lane": 7 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core18", + "lane": 7 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip35", + "lane": 7 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core18", + "lane": 7 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip35", + "lane": 7 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core18", + "lane": 7 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 136, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip35", + "lane": 7 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core18", + "lane": 7 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip35", + "lane": 7 + } + } + ] + } + } + } + }, + "1176": { + "mapping": { + "id": 1176, + "name": "fab1/36/1", + "controllingPort": 1176, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core19", + "lane": 0 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip36", + "lane": 0 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core19", + "lane": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip36", + "lane": 0 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core19", + "lane": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip36", + "lane": 0 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core19", + "lane": 0 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 136, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip36", + "lane": 0 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core19", + "lane": 0 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip36", + "lane": 0 + } + } + ] + } + } + } + }, + "1177": { + "mapping": { + "id": 1177, + "name": "fab1/36/2", + "controllingPort": 1177, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core19", + "lane": 1 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip36", + "lane": 1 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core19", + "lane": 1 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip36", + "lane": 1 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core19", + "lane": 1 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip36", + "lane": 1 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core19", + "lane": 1 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 136, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip36", + "lane": 1 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core19", + "lane": 1 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip36", + "lane": 1 + } + } + ] + } + } + } + }, + "1178": { + "mapping": { + "id": 1178, + "name": "fab1/36/3", + "controllingPort": 1178, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core19", + "lane": 2 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip36", + "lane": 2 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core19", + "lane": 2 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip36", + "lane": 2 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core19", + "lane": 2 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip36", + "lane": 2 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core19", + "lane": 2 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 136, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip36", + "lane": 2 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core19", + "lane": 2 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip36", + "lane": 2 + } + } + ] + } + } + } + }, + "1179": { + "mapping": { + "id": 1179, + "name": "fab1/36/7", + "controllingPort": 1179, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core19", + "lane": 3 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip36", + "lane": 6 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core19", + "lane": 3 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip36", + "lane": 6 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core19", + "lane": 3 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip36", + "lane": 6 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core19", + "lane": 3 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 136, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip36", + "lane": 6 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core19", + "lane": 3 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip36", + "lane": 6 + } + } + ] + } + } + } + }, + "1180": { + "mapping": { + "id": 1180, + "name": "fab1/36/6", + "controllingPort": 1180, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core19", + "lane": 4 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip36", + "lane": 5 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core19", + "lane": 4 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip36", + "lane": 5 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core19", + "lane": 4 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip36", + "lane": 5 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core19", + "lane": 4 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 136, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip36", + "lane": 5 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core19", + "lane": 4 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip36", + "lane": 5 + } + } + ] + } + } + } + }, + "1181": { + "mapping": { + "id": 1181, + "name": "fab1/36/5", + "controllingPort": 1181, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core19", + "lane": 5 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip36", + "lane": 4 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core19", + "lane": 5 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip36", + "lane": 4 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core19", + "lane": 5 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip36", + "lane": 4 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core19", + "lane": 5 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 136, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip36", + "lane": 4 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core19", + "lane": 5 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip36", + "lane": 4 + } + } + ] + } + } + } + }, + "1182": { + "mapping": { + "id": 1182, + "name": "fab1/36/8", + "controllingPort": 1182, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core19", + "lane": 6 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip36", + "lane": 7 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core19", + "lane": 6 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip36", + "lane": 7 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core19", + "lane": 6 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip36", + "lane": 7 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core19", + "lane": 6 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 136, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip36", + "lane": 7 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core19", + "lane": 6 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip36", + "lane": 7 + } + } + ] + } + } + } + }, + "1183": { + "mapping": { + "id": 1183, + "name": "fab1/36/4", + "controllingPort": 1183, + "pins": [ + { + "a": { + "chip": "NPU-J3_FE-slot1/chip1/core19", + "lane": 7 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip36", + "lane": 3 + } + } + } + ], + "portType": 1, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "36": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core19", + "lane": 7 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip36", + "lane": 3 + } + } + ] + } + }, + "37": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core19", + "lane": 7 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip36", + "lane": 3 + } + } + ] + } + }, + "41": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core19", + "lane": 7 + }, + "tx": { + "pre": 0, + "pre2": 0, + "main": 136, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip36", + "lane": 3 + } + } + ] + } + }, + "42": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_FE-slot1/chip1/core19", + "lane": 7 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip36", + "lane": 3 + } + } + ] + } + } + } + }, + "16385": { + "mapping": { + "id": 16385, + "name": "eth1/11/5", + "controllingPort": 1, + "pins": [ + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core6", + "lane": 4 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip11", + "lane": 4 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core6", + "lane": 5 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip11", + "lane": 5 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core6", + "lane": 6 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip11", + "lane": 6 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core6", + "lane": 7 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip11", + "lane": 7 + } + } + } + ], + "portType": 0, + "attachedCoreId": 0, + "attachedCorePortIndex": 1, + "virtualDeviceId": 0, + "scope": 1 + }, + "supportedProfiles": { + "23": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core6", + "lane": 4 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core6", + "lane": 5 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core6", + "lane": 6 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core6", + "lane": 7 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip11", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip11", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip11", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip11", + "lane": 7 + } + } + ] + } + }, + "24": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core6", + "lane": 4 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core6", + "lane": 5 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core6", + "lane": 6 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core6", + "lane": 7 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip11", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip11", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip11", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip11", + "lane": 7 + } + } + ] + } + }, + "38": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core6", + "lane": 4 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core6", + "lane": 5 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core6", + "lane": 6 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core6", + "lane": 7 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip11", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip11", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip11", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip11", + "lane": 7 + } + } + ] + } + }, + "45": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core6", + "lane": 4 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core6", + "lane": 5 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core6", + "lane": 6 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core6", + "lane": 7 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip11", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip11", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip11", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip11", + "lane": 7 + } + } + ] + } + } + } + }, + "16388": { + "mapping": { + "id": 16388, + "name": "eth1/13/5", + "controllingPort": 4, + "pins": [ + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core5", + "lane": 4 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip13", + "lane": 4 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core5", + "lane": 5 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip13", + "lane": 5 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core5", + "lane": 6 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip13", + "lane": 6 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core5", + "lane": 7 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip13", + "lane": 7 + } + } + } + ], + "portType": 0, + "attachedCoreId": 0, + "attachedCorePortIndex": 7, + "virtualDeviceId": 0, + "scope": 1 + }, + "supportedProfiles": { + "23": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core5", + "lane": 4 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core5", + "lane": 5 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core5", + "lane": 6 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core5", + "lane": 7 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip13", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip13", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip13", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip13", + "lane": 7 + } + } + ] + } + }, + "24": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core5", + "lane": 4 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core5", + "lane": 5 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core5", + "lane": 6 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core5", + "lane": 7 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip13", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip13", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip13", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip13", + "lane": 7 + } + } + ] + } + }, + "38": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core5", + "lane": 4 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core5", + "lane": 5 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core5", + "lane": 6 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core5", + "lane": 7 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip13", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip13", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip13", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip13", + "lane": 7 + } + } + ] + } + }, + "45": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core5", + "lane": 4 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core5", + "lane": 5 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core5", + "lane": 6 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core5", + "lane": 7 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip13", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip13", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip13", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip13", + "lane": 7 + } + } + ] + } + } + } + }, + "16391": { + "mapping": { + "id": 16391, + "name": "rcy1/1/447", + "controllingPort": 16391, + "pins": [ + { + "a": { + "chip": "NPU-J3_RCY-slot1/chip1/core447", + "lane": 0 + } + } + ], + "portType": 3, + "attachedCoreId": 0, + "attachedCorePortIndex": 13, + "virtualDeviceId": 0, + "scope": 1 + }, + "supportedProfiles": { + "49": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_RCY-slot1/chip1/core447", + "lane": 0 + } + } + ] + } + } + } + }, + "16393": { + "mapping": { + "id": 16393, + "name": "eth1/16/5", + "controllingPort": 9, + "pins": [ + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core1", + "lane": 4 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip16", + "lane": 4 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core1", + "lane": 5 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip16", + "lane": 5 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core1", + "lane": 6 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip16", + "lane": 6 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core1", + "lane": 7 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip16", + "lane": 7 + } + } + } + ], + "portType": 0, + "attachedCoreId": 1, + "attachedCorePortIndex": 1, + "virtualDeviceId": 0, + "scope": 1 + }, + "supportedProfiles": { + "23": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core1", + "lane": 4 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core1", + "lane": 5 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core1", + "lane": 6 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core1", + "lane": 7 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip16", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip16", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip16", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip16", + "lane": 7 + } + } + ] + } + }, + "24": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core1", + "lane": 4 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core1", + "lane": 5 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core1", + "lane": 6 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core1", + "lane": 7 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip16", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip16", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip16", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip16", + "lane": 7 + } + } + ] + } + }, + "38": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core1", + "lane": 4 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core1", + "lane": 5 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core1", + "lane": 6 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core1", + "lane": 7 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip16", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip16", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip16", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip16", + "lane": 7 + } + } + ] + } + }, + "45": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core1", + "lane": 4 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core1", + "lane": 5 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core1", + "lane": 6 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core1", + "lane": 7 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip16", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip16", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip16", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip16", + "lane": 7 + } + } + ] + } + } + } + }, + "16396": { + "mapping": { + "id": 16396, + "name": "eth1/18/5", + "controllingPort": 12, + "pins": [ + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core2", + "lane": 4 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip18", + "lane": 4 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core2", + "lane": 5 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip18", + "lane": 5 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core2", + "lane": 6 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip18", + "lane": 6 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core2", + "lane": 7 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip18", + "lane": 7 + } + } + } + ], + "portType": 0, + "attachedCoreId": 1, + "attachedCorePortIndex": 7, + "virtualDeviceId": 0, + "scope": 1 + }, + "supportedProfiles": { + "23": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core2", + "lane": 4 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core2", + "lane": 5 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core2", + "lane": 6 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core2", + "lane": 7 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip18", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip18", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip18", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip18", + "lane": 7 + } + } + ] + } + }, + "24": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core2", + "lane": 4 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core2", + "lane": 5 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core2", + "lane": 6 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core2", + "lane": 7 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip18", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip18", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip18", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip18", + "lane": 7 + } + } + ] + } + }, + "38": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core2", + "lane": 4 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core2", + "lane": 5 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core2", + "lane": 6 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core2", + "lane": 7 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip18", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip18", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip18", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip18", + "lane": 7 + } + } + ] + } + }, + "45": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core2", + "lane": 4 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core2", + "lane": 5 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core2", + "lane": 6 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core2", + "lane": 7 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip18", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip18", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip18", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip18", + "lane": 7 + } + } + ] + } + } + } + }, + "16399": { + "mapping": { + "id": 16399, + "name": "eth1/20/5", + "controllingPort": 15, + "pins": [ + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core9", + "lane": 4 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip20", + "lane": 4 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core9", + "lane": 5 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip20", + "lane": 5 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core9", + "lane": 6 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip20", + "lane": 6 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core9", + "lane": 7 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip20", + "lane": 7 + } + } + } + ], + "portType": 0, + "attachedCoreId": 2, + "attachedCorePortIndex": 1, + "virtualDeviceId": 0, + "scope": 1 + }, + "supportedProfiles": { + "23": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core9", + "lane": 4 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core9", + "lane": 5 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core9", + "lane": 6 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core9", + "lane": 7 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip20", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip20", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip20", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip20", + "lane": 7 + } + } + ] + } + }, + "24": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core9", + "lane": 4 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core9", + "lane": 5 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core9", + "lane": 6 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core9", + "lane": 7 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip20", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip20", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip20", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip20", + "lane": 7 + } + } + ] + } + }, + "38": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core9", + "lane": 4 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core9", + "lane": 5 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core9", + "lane": 6 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core9", + "lane": 7 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip20", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip20", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip20", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip20", + "lane": 7 + } + } + ] + } + }, + "45": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core9", + "lane": 4 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core9", + "lane": 5 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core9", + "lane": 6 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core9", + "lane": 7 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip20", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip20", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip20", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip20", + "lane": 7 + } + } + ] + } + } + } + }, + "16402": { + "mapping": { + "id": 16402, + "name": "eth1/22/5", + "controllingPort": 18, + "pins": [ + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core10", + "lane": 4 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip22", + "lane": 4 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core10", + "lane": 5 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip22", + "lane": 5 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core10", + "lane": 6 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip22", + "lane": 6 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core10", + "lane": 7 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip22", + "lane": 7 + } + } + } + ], + "portType": 0, + "attachedCoreId": 2, + "attachedCorePortIndex": 7, + "virtualDeviceId": 0, + "scope": 1 + }, + "supportedProfiles": { + "23": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core10", + "lane": 4 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core10", + "lane": 5 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core10", + "lane": 6 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core10", + "lane": 7 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip22", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip22", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip22", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip22", + "lane": 7 + } + } + ] + } + }, + "24": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core10", + "lane": 4 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core10", + "lane": 5 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core10", + "lane": 6 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core10", + "lane": 7 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip22", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip22", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip22", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip22", + "lane": 7 + } + } + ] + } + }, + "38": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core10", + "lane": 4 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core10", + "lane": 5 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core10", + "lane": 6 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core10", + "lane": 7 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip22", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip22", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip22", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip22", + "lane": 7 + } + } + ] + } + }, + "45": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core10", + "lane": 4 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core10", + "lane": 5 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core10", + "lane": 6 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core10", + "lane": 7 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip22", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip22", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip22", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip22", + "lane": 7 + } + } + ] + } + } + } + }, + "16405": { + "mapping": { + "id": 16405, + "name": "eth1/24/5", + "controllingPort": 21, + "pins": [ + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core12", + "lane": 4 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip24", + "lane": 4 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core12", + "lane": 5 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip24", + "lane": 5 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core12", + "lane": 6 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip24", + "lane": 6 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core12", + "lane": 7 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip24", + "lane": 7 + } + } + } + ], + "portType": 0, + "attachedCoreId": 3, + "attachedCorePortIndex": 1, + "virtualDeviceId": 0, + "scope": 1 + }, + "supportedProfiles": { + "23": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core12", + "lane": 4 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core12", + "lane": 5 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core12", + "lane": 6 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core12", + "lane": 7 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip24", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip24", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip24", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip24", + "lane": 7 + } + } + ] + } + }, + "24": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core12", + "lane": 4 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core12", + "lane": 5 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core12", + "lane": 6 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core12", + "lane": 7 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip24", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip24", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip24", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip24", + "lane": 7 + } + } + ] + } + }, + "38": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core12", + "lane": 4 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core12", + "lane": 5 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core12", + "lane": 6 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core12", + "lane": 7 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip24", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip24", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip24", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip24", + "lane": 7 + } + } + ] + } + }, + "45": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core12", + "lane": 4 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core12", + "lane": 5 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core12", + "lane": 6 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core12", + "lane": 7 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip24", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip24", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip24", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip24", + "lane": 7 + } + } + ] + } + } + } + }, + "16408": { + "mapping": { + "id": 16408, + "name": "eth1/26/5", + "controllingPort": 24, + "pins": [ + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core16", + "lane": 4 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip26", + "lane": 4 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core16", + "lane": 5 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip26", + "lane": 5 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core16", + "lane": 6 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip26", + "lane": 6 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core16", + "lane": 7 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-OSFP-slot1/chip26", + "lane": 7 + } + } + } + ], + "portType": 0, + "attachedCoreId": 3, + "attachedCorePortIndex": 7, + "virtualDeviceId": 0, + "scope": 1 + }, + "supportedProfiles": { + "23": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core16", + "lane": 4 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core16", + "lane": 5 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core16", + "lane": 6 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core16", + "lane": 7 + }, + "tx": { + "pre": -8, + "pre2": 0, + "main": 89, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip26", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip26", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip26", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip26", + "lane": 7 + } + } + ] + } + }, + "24": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core16", + "lane": 4 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core16", + "lane": 5 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core16", + "lane": 6 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core16", + "lane": 7 + }, + "tx": { + "pre": -24, + "pre2": 4, + "main": 130, + "post": -12, + "post2": 0, + "post3": 0, + "pre3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip26", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip26", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip26", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip26", + "lane": 7 + } + } + ] + } + }, + "38": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core16", + "lane": 4 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core16", + "lane": 5 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core16", + "lane": 6 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core16", + "lane": 7 + }, + "tx": { + "pre": -16, + "pre2": 4, + "main": 96, + "post": 0, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip26", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip26", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip26", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip26", + "lane": 7 + } + } + ] + } + }, + "45": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core16", + "lane": 4 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core16", + "lane": 5 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core16", + "lane": 6 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core16", + "lane": 7 + }, + "tx": { + "pre": -36, + "pre2": 14, + "main": 112, + "post": 0, + "post2": 0, + "post3": 0, + "pre3": -4 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip26", + "lane": 4 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip26", + "lane": 5 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip26", + "lane": 6 + } + }, + { + "id": { + "chip": "TRANSCEIVER-OSFP-slot1/chip26", + "lane": 7 + } + } + ] + } + } + } + }, + "16411": { + "mapping": { + "id": 16411, + "name": "eth1/39/1", + "controllingPort": 16411, + "pins": [ + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core18", + "lane": 0 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-QSFP28-slot1/chip39", + "lane": 0 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core18", + "lane": 1 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-QSFP28-slot1/chip39", + "lane": 1 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core18", + "lane": 2 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-QSFP28-slot1/chip39", + "lane": 2 + } + } + }, + { + "a": { + "chip": "NPU-J3_NIF-slot1/chip1/core18", + "lane": 3 + }, + "z": { + "end": { + "chip": "TRANSCEIVER-QSFP28-slot1/chip39", + "lane": 3 + } + } + } + ], + "portType": 4, + "attachedCoreId": 3, + "attachedCorePortIndex": 13, + "virtualDeviceId": 0, + "scope": 1 + }, + "supportedProfiles": { + "22": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core18", + "lane": 0 + }, + "tx": { + "pre": 4, + "pre2": 0, + "main": 31, + "post": 8, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core18", + "lane": 1 + }, + "tx": { + "pre": 4, + "pre2": 0, + "main": 31, + "post": 8, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core18", + "lane": 2 + }, + "tx": { + "pre": 4, + "pre2": 0, + "main": 31, + "post": 8, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core18", + "lane": 3 + }, + "tx": { + "pre": 4, + "pre2": 0, + "main": 31, + "post": 8, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-QSFP28-slot1/chip39", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-QSFP28-slot1/chip39", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-QSFP28-slot1/chip39", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-QSFP28-slot1/chip39", + "lane": 3 + } + } + ] + } + }, + "23": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core18", + "lane": 0 + }, + "tx": { + "pre": 3, + "pre2": 0, + "main": 31, + "post": 13, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core18", + "lane": 1 + }, + "tx": { + "pre": 3, + "pre2": 0, + "main": 31, + "post": 13, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core18", + "lane": 2 + }, + "tx": { + "pre": 3, + "pre2": 0, + "main": 31, + "post": 13, + "post2": 0, + "post3": 0 + } + }, + { + "id": { + "chip": "NPU-J3_NIF-slot1/chip1/core18", + "lane": 3 + }, + "tx": { + "pre": 3, + "pre2": 0, + "main": 31, + "post": 13, + "post2": 0, + "post3": 0 + } + } + ], + "transceiver": [ + { + "id": { + "chip": "TRANSCEIVER-QSFP28-slot1/chip39", + "lane": 0 + } + }, + { + "id": { + "chip": "TRANSCEIVER-QSFP28-slot1/chip39", + "lane": 1 + } + }, + { + "id": { + "chip": "TRANSCEIVER-QSFP28-slot1/chip39", + "lane": 2 + } + }, + { + "id": { + "chip": "TRANSCEIVER-QSFP28-slot1/chip39", + "lane": 3 + } + } + ] + } + } + } + }, + "32769": { + "mapping": { + "id": 32769, + "name": "rcy1/1/441", + "controllingPort": 32769, + "pins": [ + { + "a": { + "chip": "NPU-J3_RCY-slot1/chip1/core441", + "lane": 0 + } + } + ], + "portType": 3, + "attachedCoreId": 1, + "attachedCorePortIndex": 18, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "49": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_RCY-slot1/chip1/core441", + "lane": 0 + } + } + ] + } + } + } + }, + "32770": { + "mapping": { + "id": 32770, + "name": "rcy1/1/442", + "controllingPort": 32770, + "pins": [ + { + "a": { + "chip": "NPU-J3_RCY-slot1/chip1/core442", + "lane": 0 + } + } + ], + "portType": 3, + "attachedCoreId": 0, + "attachedCorePortIndex": 16, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "49": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_RCY-slot1/chip1/core442", + "lane": 0 + } + } + ] + } + } + } + }, + "32771": { + "mapping": { + "id": 32771, + "name": "rcy1/1/443", + "controllingPort": 32771, + "pins": [ + { + "a": { + "chip": "NPU-J3_RCY-slot1/chip1/core443", + "lane": 0 + } + } + ], + "portType": 3, + "attachedCoreId": 2, + "attachedCorePortIndex": 16, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "49": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_RCY-slot1/chip1/core443", + "lane": 0 + } + } + ] + } + } + } + }, + "32772": { + "mapping": { + "id": 32772, + "name": "evt1/1/504", + "controllingPort": 32772, + "pins": [ + { + "a": { + "chip": "NPU-J3_EVT-slot1/chip1/core504", + "lane": 0 + } + } + ], + "portType": 5, + "attachedCoreId": 2, + "attachedCorePortIndex": 18, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "49": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_EVT-slot1/chip1/core504", + "lane": 0 + } + } + ] + } + } + } + }, + "32773": { + "mapping": { + "id": 32773, + "name": "rcy1/1/445", + "controllingPort": 32773, + "pins": [ + { + "a": { + "chip": "NPU-J3_RCY-slot1/chip1/core445", + "lane": 0 + } + } + ], + "portType": 3, + "attachedCoreId": 3, + "attachedCorePortIndex": 16, + "virtualDeviceId": 0, + "scope": 0 + }, + "supportedProfiles": { + "49": { + "pins": { + "iphy": [ + { + "id": { + "chip": "NPU-J3_RCY-slot1/chip1/core445", + "lane": 0 + } + } + ] + } + } + } + } + }, + "chips": [ + { + "name": "NPU-J3_FE-slot1/chip1/core0", + "type": 1, + "physicalID": 0 + }, + { + "name": "NPU-J3_NIF-slot1/chip1/core0", + "type": 1, + "physicalID": 0 + }, + { + "name": "NPU-J3_FE-slot1/chip1/core1", + "type": 1, + "physicalID": 1 + }, + { + "name": "NPU-J3_NIF-slot1/chip1/core1", + "type": 1, + "physicalID": 1 + }, + { + "name": "NPU-J3_FE-slot1/chip1/core2", + "type": 1, + "physicalID": 2 + }, + { + "name": "NPU-J3_NIF-slot1/chip1/core2", + "type": 1, + "physicalID": 2 + }, + { + "name": "NPU-J3_FE-slot1/chip1/core3", + "type": 1, + "physicalID": 3 + }, + { + "name": "NPU-J3_NIF-slot1/chip1/core3", + "type": 1, + "physicalID": 3 + }, + { + "name": "NPU-J3_FE-slot1/chip1/core4", + "type": 1, + "physicalID": 4 + }, + { + "name": "NPU-J3_NIF-slot1/chip1/core4", + "type": 1, + "physicalID": 4 + }, + { + "name": "NPU-J3_NIF-slot1/chip1/core5", + "type": 1, + "physicalID": 5 + }, + { + "name": "NPU-J3_FE-slot1/chip1/core5", + "type": 1, + "physicalID": 5 + }, + { + "name": "NPU-J3_FE-slot1/chip1/core6", + "type": 1, + "physicalID": 6 + }, + { + "name": "NPU-J3_NIF-slot1/chip1/core6", + "type": 1, + "physicalID": 6 + }, + { + "name": "NPU-J3_FE-slot1/chip1/core7", + "type": 1, + "physicalID": 7 + }, + { + "name": "NPU-J3_NIF-slot1/chip1/core7", + "type": 1, + "physicalID": 7 + }, + { + "name": "NPU-J3_FE-slot1/chip1/core8", + "type": 1, + "physicalID": 8 + }, + { + "name": "NPU-J3_NIF-slot1/chip1/core8", + "type": 1, + "physicalID": 8 + }, + { + "name": "NPU-J3_FE-slot1/chip1/core9", + "type": 1, + "physicalID": 9 + }, + { + "name": "NPU-J3_NIF-slot1/chip1/core9", + "type": 1, + "physicalID": 9 + }, + { + "name": "NPU-J3_FE-slot1/chip1/core10", + "type": 1, + "physicalID": 10 + }, + { + "name": "NPU-J3_NIF-slot1/chip1/core10", + "type": 1, + "physicalID": 10 + }, + { + "name": "NPU-J3_FE-slot1/chip1/core11", + "type": 1, + "physicalID": 11 + }, + { + "name": "NPU-J3_NIF-slot1/chip1/core11", + "type": 1, + "physicalID": 11 + }, + { + "name": "NPU-J3_FE-slot1/chip1/core12", + "type": 1, + "physicalID": 12 + }, + { + "name": "NPU-J3_NIF-slot1/chip1/core12", + "type": 1, + "physicalID": 12 + }, + { + "name": "NPU-J3_FE-slot1/chip1/core13", + "type": 1, + "physicalID": 13 + }, + { + "name": "NPU-J3_NIF-slot1/chip1/core13", + "type": 1, + "physicalID": 13 + }, + { + "name": "NPU-J3_FE-slot1/chip1/core14", + "type": 1, + "physicalID": 14 + }, + { + "name": "NPU-J3_NIF-slot1/chip1/core14", + "type": 1, + "physicalID": 14 + }, + { + "name": "NPU-J3_FE-slot1/chip1/core15", + "type": 1, + "physicalID": 15 + }, + { + "name": "NPU-J3_NIF-slot1/chip1/core15", + "type": 1, + "physicalID": 15 + }, + { + "name": "NPU-J3_FE-slot1/chip1/core16", + "type": 1, + "physicalID": 16 + }, + { + "name": "NPU-J3_NIF-slot1/chip1/core16", + "type": 1, + "physicalID": 16 + }, + { + "name": "NPU-J3_FE-slot1/chip1/core17", + "type": 1, + "physicalID": 17 + }, + { + "name": "NPU-J3_NIF-slot1/chip1/core17", + "type": 1, + "physicalID": 17 + }, + { + "name": "NPU-J3_FE-slot1/chip1/core18", + "type": 1, + "physicalID": 18 + }, + { + "name": "NPU-J3_NIF-slot1/chip1/core18", + "type": 1, + "physicalID": 18 + }, + { + "name": "NPU-J3_FE-slot1/chip1/core19", + "type": 1, + "physicalID": 19 + }, + { + "name": "NPU-J3_RCY-slot1/chip1/core441", + "type": 1, + "physicalID": 441 + }, + { + "name": "NPU-J3_RCY-slot1/chip1/core442", + "type": 1, + "physicalID": 442 + }, + { + "name": "NPU-J3_RCY-slot1/chip1/core443", + "type": 1, + "physicalID": 443 + }, + { + "name": "NPU-J3_RCY-slot1/chip1/core445", + "type": 1, + "physicalID": 445 + }, + { + "name": "NPU-J3_RCY-slot1/chip1/core447", + "type": 1, + "physicalID": 447 + }, + { + "name": "NPU-J3_EVT-slot1/chip1/core504", + "type": 1, + "physicalID": 504 + }, + { + "name": "NPU-J3_EVT-slot1/chip1/core506", + "type": 1, + "physicalID": 506 + }, + { + "name": "TRANSCEIVER-OSFP-slot1/chip1", + "type": 3, + "physicalID": 0 + }, + { + "name": "TRANSCEIVER-OSFP-slot1/chip2", + "type": 3, + "physicalID": 1 + }, + { + "name": "TRANSCEIVER-OSFP-slot1/chip3", + "type": 3, + "physicalID": 2 + }, + { + "name": "TRANSCEIVER-OSFP-slot1/chip4", + "type": 3, + "physicalID": 3 + }, + { + "name": "TRANSCEIVER-OSFP-slot1/chip5", + "type": 3, + "physicalID": 4 + }, + { + "name": "TRANSCEIVER-OSFP-slot1/chip6", + "type": 3, + "physicalID": 5 + }, + { + "name": "TRANSCEIVER-OSFP-slot1/chip7", + "type": 3, + "physicalID": 6 + }, + { + "name": "TRANSCEIVER-OSFP-slot1/chip8", + "type": 3, + "physicalID": 7 + }, + { + "name": "TRANSCEIVER-OSFP-slot1/chip9", + "type": 3, + "physicalID": 8 + }, + { + "name": "TRANSCEIVER-OSFP-slot1/chip10", + "type": 3, + "physicalID": 9 + }, + { + "name": "TRANSCEIVER-OSFP-slot1/chip11", + "type": 3, + "physicalID": 10 + }, + { + "name": "TRANSCEIVER-OSFP-slot1/chip12", + "type": 3, + "physicalID": 11 + }, + { + "name": "TRANSCEIVER-OSFP-slot1/chip13", + "type": 3, + "physicalID": 12 + }, + { + "name": "TRANSCEIVER-OSFP-slot1/chip14", + "type": 3, + "physicalID": 13 + }, + { + "name": "TRANSCEIVER-OSFP-slot1/chip15", + "type": 3, + "physicalID": 14 + }, + { + "name": "TRANSCEIVER-OSFP-slot1/chip16", + "type": 3, + "physicalID": 15 + }, + { + "name": "TRANSCEIVER-OSFP-slot1/chip17", + "type": 3, + "physicalID": 16 + }, + { + "name": "TRANSCEIVER-OSFP-slot1/chip18", + "type": 3, + "physicalID": 17 + }, + { + "name": "TRANSCEIVER-OSFP-slot1/chip19", + "type": 3, + "physicalID": 18 + }, + { + "name": "TRANSCEIVER-OSFP-slot1/chip20", + "type": 3, + "physicalID": 19 + }, + { + "name": "TRANSCEIVER-OSFP-slot1/chip21", + "type": 3, + "physicalID": 20 + }, + { + "name": "TRANSCEIVER-OSFP-slot1/chip22", + "type": 3, + "physicalID": 21 + }, + { + "name": "TRANSCEIVER-OSFP-slot1/chip23", + "type": 3, + "physicalID": 22 + }, + { + "name": "TRANSCEIVER-OSFP-slot1/chip24", + "type": 3, + "physicalID": 23 + }, + { + "name": "TRANSCEIVER-OSFP-slot1/chip25", + "type": 3, + "physicalID": 24 + }, + { + "name": "TRANSCEIVER-OSFP-slot1/chip26", + "type": 3, + "physicalID": 25 + }, + { + "name": "TRANSCEIVER-OSFP-slot1/chip27", + "type": 3, + "physicalID": 26 + }, + { + "name": "TRANSCEIVER-OSFP-slot1/chip28", + "type": 3, + "physicalID": 27 + }, + { + "name": "TRANSCEIVER-OSFP-slot1/chip29", + "type": 3, + "physicalID": 28 + }, + { + "name": "TRANSCEIVER-OSFP-slot1/chip30", + "type": 3, + "physicalID": 29 + }, + { + "name": "TRANSCEIVER-OSFP-slot1/chip31", + "type": 3, + "physicalID": 30 + }, + { + "name": "TRANSCEIVER-OSFP-slot1/chip32", + "type": 3, + "physicalID": 31 + }, + { + "name": "TRANSCEIVER-OSFP-slot1/chip33", + "type": 3, + "physicalID": 32 + }, + { + "name": "TRANSCEIVER-OSFP-slot1/chip34", + "type": 3, + "physicalID": 33 + }, + { + "name": "TRANSCEIVER-OSFP-slot1/chip35", + "type": 3, + "physicalID": 34 + }, + { + "name": "TRANSCEIVER-OSFP-slot1/chip36", + "type": 3, + "physicalID": 35 + }, + { + "name": "TRANSCEIVER-OSFP-slot1/chip37", + "type": 3, + "physicalID": 36 + }, + { + "name": "TRANSCEIVER-OSFP-slot1/chip38", + "type": 3, + "physicalID": 37 + }, + { + "name": "TRANSCEIVER-QSFP28-slot1/chip39", + "type": 3, + "physicalID": 38 + } + ], + "platformSupportedProfiles": [ + { + "factor": { + "profileID": 35 + }, + "profile": { + "speed": 400000, + "iphy": { + "numLanes": 8, + "modulation": 2, + "fec": 11, + "medium": 1, + "interfaceType": 13 + } + } + }, + { + "factor": { + "profileID": 36 + }, + "profile": { + "speed": 53125, + "iphy": { + "numLanes": 1, + "modulation": 2, + "fec": 545, + "medium": 1, + "interfaceType": 41 + } + } + }, + { + "factor": { + "profileID": 37 + }, + "profile": { + "speed": 53125, + "iphy": { + "numLanes": 1, + "modulation": 2, + "fec": 545, + "medium": 3, + "interfaceType": 41 + } + } + }, + { + "factor": { + "profileID": 38 + }, + "profile": { + "speed": 400000, + "iphy": { + "numLanes": 4, + "modulation": 2, + "fec": 11, + "medium": 3, + "interfaceType": 21 + } + } + }, + { + "factor": { + "profileID": 39 + }, + "profile": { + "speed": 800000, + "iphy": { + "numLanes": 8, + "modulation": 2, + "fec": 11, + "medium": 3, + "interfaceType": 23 + } + } + }, + { + "factor": { + "profileID": 41 + }, + "profile": { + "speed": 106250, + "iphy": { + "numLanes": 1, + "modulation": 2, + "fec": 11, + "medium": 1, + "interfaceType": 41 + } + } + }, + { + "factor": { + "profileID": 42 + }, + "profile": { + "speed": 106250, + "iphy": { + "numLanes": 1, + "modulation": 2, + "fec": 11, + "medium": 3, + "interfaceType": 41 + } + } + }, + { + "factor": { + "profileID": 45 + }, + "profile": { + "speed": 400000, + "iphy": { + "numLanes": 4, + "modulation": 2, + "fec": 11, + "medium": 1, + "interfaceType": 12 + } + } + }, + { + "factor": { + "profileID": 49 + }, + "profile": { + "speed": 100000, + "iphy": { + "numLanes": 1, + "modulation": 2, + "fec": 1, + "medium": 1, + "interfaceType": 10 + } + } + }, + { + "factor": { + "profileID": 22 + }, + "profile": { + "speed": 100000, + "iphy": { + "numLanes": 4, + "modulation": 1, + "fec": 528, + "medium": 1, + "interfaceType": 12 + } + } + }, + { + "factor": { + "profileID": 23 + }, + "profile": { + "speed": 100000, + "iphy": { + "numLanes": 4, + "modulation": 1, + "fec": 528, + "medium": 3, + "interfaceType": 21 + } + } + }, + { + "factor": { + "profileID": 24 + }, + "profile": { + "speed": 200000, + "iphy": { + "numLanes": 4, + "modulation": 2, + "fec": 11, + "medium": 1, + "interfaceType": 12 + } + } + } + ] +} +)"; } // namespace Meru800biaPlatformMapping::Meru800biaPlatformMapping() : PlatformMapping( - FLAGS_dsf_100g_nif_breakout ? kJsonDsfJ3ScaleTestPlatformMappingStr + FLAGS_dual_stage_rdsw_3q_2q ? kJsonDualStageRdsw3q2qPlatformMappingStr + : FLAGS_dsf_100g_nif_breakout + ? kJsonDsfJ3ScaleTestPlatformMappingStr : FLAGS_dsf_edsw_platform_mapping ? kJsonEdswPlatformMappingStr : kJsonPlatformMappingStr) {} diff --git a/fboss/agent/platforms/sai/SaiBcmDarwinPlatform.cpp b/fboss/agent/platforms/sai/SaiBcmDarwinPlatform.cpp index 333c20e45e83c..bffe6db7262c5 100644 --- a/fboss/agent/platforms/sai/SaiBcmDarwinPlatform.cpp +++ b/fboss/agent/platforms/sai/SaiBcmDarwinPlatform.cpp @@ -13,7 +13,6 @@ #include "fboss/agent/hw/switch_asics/Tomahawk3Asic.h" #include "fboss/agent/platforms/common/darwin/DarwinPlatformMapping.h" -#include #include namespace facebook::fboss { @@ -29,15 +28,11 @@ SaiBcmDarwinPlatform::SaiBcmDarwinPlatform( localMac) {} void SaiBcmDarwinPlatform::setupAsic( - cfg::SwitchType switchType, std::optional switchId, - int16_t switchIndex, - std::optional systemPortRange, - folly::MacAddress& mac, + const cfg::SwitchInfo& switchInfo, std::optional fabricNodeRole) { CHECK(!fabricNodeRole.has_value()); - asic_ = std::make_unique( - switchType, switchId, switchIndex, systemPortRange, mac); + asic_ = std::make_unique(switchId, switchInfo); } HwAsic* SaiBcmDarwinPlatform::getAsic() const { diff --git a/fboss/agent/platforms/sai/SaiBcmDarwinPlatform.h b/fboss/agent/platforms/sai/SaiBcmDarwinPlatform.h index 81bd260b18385..35475405d6112 100644 --- a/fboss/agent/platforms/sai/SaiBcmDarwinPlatform.h +++ b/fboss/agent/platforms/sai/SaiBcmDarwinPlatform.h @@ -39,12 +39,9 @@ class SaiBcmDarwinPlatform : public SaiBcmPlatform { private: void setupAsic( - cfg::SwitchType switchType, std::optional switchId, - int16_t switchIndex, - std::optional systemPortRange, - folly::MacAddress& mac, - std::optional fabricNodeRole) override; + const cfg::SwitchInfo& switchInfo, + std::optional fabricRole) override; std::unique_ptr asic_; }; diff --git a/fboss/agent/platforms/sai/SaiBcmElbertPlatform.cpp b/fboss/agent/platforms/sai/SaiBcmElbertPlatform.cpp index 739e37e083f60..1ac414438ecf8 100644 --- a/fboss/agent/platforms/sai/SaiBcmElbertPlatform.cpp +++ b/fboss/agent/platforms/sai/SaiBcmElbertPlatform.cpp @@ -11,7 +11,6 @@ #include "fboss/agent/platforms/sai/SaiBcmElbertPlatform.h" #include "fboss/agent/platforms/common/elbert/ElbertPlatformMapping.h" -#include #include namespace facebook::fboss { @@ -25,15 +24,11 @@ SaiBcmElbertPlatform::SaiBcmElbertPlatform( localMac) {} void SaiBcmElbertPlatform::setupAsic( - cfg::SwitchType switchType, std::optional switchId, - int16_t switchIndex, - std::optional systemPortRange, - folly::MacAddress& mac, + const cfg::SwitchInfo& switchInfo, std::optional fabricNodeRole) { CHECK(!fabricNodeRole.has_value()); - asic_ = std::make_unique( - switchType, switchId, switchIndex, systemPortRange, mac); + asic_ = std::make_unique(switchId, switchInfo); } HwAsic* SaiBcmElbertPlatform::getAsic() const { return asic_.get(); diff --git a/fboss/agent/platforms/sai/SaiBcmElbertPlatform.h b/fboss/agent/platforms/sai/SaiBcmElbertPlatform.h index 418534e244167..a142fed77bf71 100644 --- a/fboss/agent/platforms/sai/SaiBcmElbertPlatform.h +++ b/fboss/agent/platforms/sai/SaiBcmElbertPlatform.h @@ -38,11 +38,8 @@ class SaiBcmElbertPlatform : public SaiBcmPlatform { private: void setupAsic( - cfg::SwitchType switchType, std::optional switchId, - int16_t switchIndex, - std::optional systemPortRange, - folly::MacAddress& mac, + const cfg::SwitchInfo& switchInfo, std::optional fabricNodeRole) override; std::unique_ptr asic_; }; diff --git a/fboss/agent/platforms/sai/SaiBcmFujiPlatform.cpp b/fboss/agent/platforms/sai/SaiBcmFujiPlatform.cpp index 58e521c9b9631..7d8f8f07c901a 100644 --- a/fboss/agent/platforms/sai/SaiBcmFujiPlatform.cpp +++ b/fboss/agent/platforms/sai/SaiBcmFujiPlatform.cpp @@ -11,7 +11,6 @@ #include "fboss/agent/platforms/sai/SaiBcmFujiPlatform.h" #include "fboss/agent/platforms/common/fuji/FujiPlatformMapping.h" -#include #include namespace facebook::fboss { @@ -25,15 +24,11 @@ SaiBcmFujiPlatform::SaiBcmFujiPlatform( localMac) {} void SaiBcmFujiPlatform::setupAsic( - cfg::SwitchType switchType, std::optional switchId, - int16_t switchIndex, - std::optional systemPortRange, - folly::MacAddress& mac, + const cfg::SwitchInfo& switchInfo, std::optional fabricNodeRole) { CHECK(!fabricNodeRole.has_value()); - asic_ = std::make_unique( - switchType, switchId, switchIndex, systemPortRange, mac); + asic_ = std::make_unique(switchId, switchInfo); } HwAsic* SaiBcmFujiPlatform::getAsic() const { diff --git a/fboss/agent/platforms/sai/SaiBcmFujiPlatform.h b/fboss/agent/platforms/sai/SaiBcmFujiPlatform.h index 22ffac48eca6f..685064d219e69 100644 --- a/fboss/agent/platforms/sai/SaiBcmFujiPlatform.h +++ b/fboss/agent/platforms/sai/SaiBcmFujiPlatform.h @@ -34,11 +34,8 @@ class SaiBcmFujiPlatform : public SaiBcmPlatform { private: void setupAsic( - cfg::SwitchType switchType, std::optional switchId, - int16_t switchIndex, - std::optional systemPortRange, - folly::MacAddress& mac, + const cfg::SwitchInfo& switchInfo, std::optional fabricNodeRole) override; std::unique_ptr asic_; diff --git a/fboss/agent/platforms/sai/SaiBcmMinipackPlatform.cpp b/fboss/agent/platforms/sai/SaiBcmMinipackPlatform.cpp index 19fec84aafa41..b65fcdfcf29c2 100644 --- a/fboss/agent/platforms/sai/SaiBcmMinipackPlatform.cpp +++ b/fboss/agent/platforms/sai/SaiBcmMinipackPlatform.cpp @@ -12,7 +12,6 @@ #include "fboss/agent/hw/switch_asics/Tomahawk3Asic.h" -#include #include namespace facebook::fboss { @@ -21,15 +20,11 @@ HwAsic* SaiBcmMinipackPlatform::getAsic() const { } void SaiBcmMinipackPlatform::setupAsic( - cfg::SwitchType switchType, std::optional switchId, - int16_t switchIndex, - std::optional systemPortRange, - folly::MacAddress& mac, + const cfg::SwitchInfo& switchInfo, std::optional fabricNodeRole) { CHECK(!fabricNodeRole.has_value()); - asic_ = std::make_unique( - switchType, switchId, switchIndex, systemPortRange, mac); + asic_ = std::make_unique(switchId, switchInfo); } void SaiBcmMinipackPlatform::initLEDs() { diff --git a/fboss/agent/platforms/sai/SaiBcmMinipackPlatform.h b/fboss/agent/platforms/sai/SaiBcmMinipackPlatform.h index 62d8679285d0f..1b50a716d6000 100644 --- a/fboss/agent/platforms/sai/SaiBcmMinipackPlatform.h +++ b/fboss/agent/platforms/sai/SaiBcmMinipackPlatform.h @@ -35,11 +35,8 @@ class SaiBcmMinipackPlatform : public SaiBcmPlatform { private: void setupAsic( - cfg::SwitchType switchType, std::optional switchId, - int16_t switchIndex, - std::optional systemPortRange, - folly::MacAddress& mac, + const cfg::SwitchInfo& switchInfo, std::optional fabricNodeRole) override; std::unique_ptr asic_; }; diff --git a/fboss/agent/platforms/sai/SaiBcmMontblancPlatform.cpp b/fboss/agent/platforms/sai/SaiBcmMontblancPlatform.cpp index 6ed61c7f76721..3fb8395fae9d3 100644 --- a/fboss/agent/platforms/sai/SaiBcmMontblancPlatform.cpp +++ b/fboss/agent/platforms/sai/SaiBcmMontblancPlatform.cpp @@ -13,7 +13,6 @@ #include "fboss/agent/hw/switch_asics/Tomahawk5Asic.h" #include "fboss/agent/platforms/common/montblanc/MontblancPlatformMapping.h" -#include #include namespace facebook::fboss { @@ -29,15 +28,11 @@ SaiBcmMontblancPlatform::SaiBcmMontblancPlatform( localMac) {} void SaiBcmMontblancPlatform::setupAsic( - cfg::SwitchType switchType, std::optional switchId, - int16_t switchIndex, - std::optional systemPortRange, - folly::MacAddress& mac, + const cfg::SwitchInfo& switchInfo, std::optional fabricNodeRole) { CHECK(!fabricNodeRole.has_value()); - asic_ = std::make_unique( - switchType, switchId, switchIndex, systemPortRange, mac); + asic_ = std::make_unique(switchId, switchInfo); } HwAsic* SaiBcmMontblancPlatform::getAsic() const { diff --git a/fboss/agent/platforms/sai/SaiBcmMontblancPlatform.h b/fboss/agent/platforms/sai/SaiBcmMontblancPlatform.h index c4af3311ef0b9..94e781efff6c8 100644 --- a/fboss/agent/platforms/sai/SaiBcmMontblancPlatform.h +++ b/fboss/agent/platforms/sai/SaiBcmMontblancPlatform.h @@ -39,11 +39,8 @@ class SaiBcmMontblancPlatform : public SaiBcmPlatform { private: void setupAsic( - cfg::SwitchType switchType, std::optional switchId, - int16_t switchIndex, - std::optional systemPortRange, - folly::MacAddress& mac, + const cfg::SwitchInfo& switchInfo, std::optional fabricNodeRole) override; std::unique_ptr asic_; }; diff --git a/fboss/agent/platforms/sai/SaiBcmPlatformPort.cpp b/fboss/agent/platforms/sai/SaiBcmPlatformPort.cpp index a13d4960db989..ce94fb46f9fd8 100644 --- a/fboss/agent/platforms/sai/SaiBcmPlatformPort.cpp +++ b/fboss/agent/platforms/sai/SaiBcmPlatformPort.cpp @@ -9,13 +9,11 @@ */ #include "fboss/agent/platforms/sai/SaiBcmPlatformPort.h" #include "fboss/agent/platforms/sai/SaiBcmPlatform.h" -#include "fboss/agent/platforms/sai/SaiPlatform.h" #include "fboss/agent/hw/sai/api/SaiApiTable.h" #include "fboss/agent/hw/sai/api/SwitchApi.h" #include "fboss/agent/hw/sai/switch/SaiSwitch.h" -#include "fboss/agent/platforms/sai/SaiPlatformPort.h" namespace facebook::fboss { diff --git a/fboss/agent/platforms/sai/SaiBcmWedge100Platform.cpp b/fboss/agent/platforms/sai/SaiBcmWedge100Platform.cpp index 9a0b53eba5a25..eb2e827b34aba 100644 --- a/fboss/agent/platforms/sai/SaiBcmWedge100Platform.cpp +++ b/fboss/agent/platforms/sai/SaiBcmWedge100Platform.cpp @@ -14,7 +14,6 @@ #include "fboss/agent/platforms/common/utils/Wedge100LedUtils.h" #include "fboss/agent/platforms/common/wedge100/Wedge100PlatformMapping.h" -#include #include namespace facebook::fboss { @@ -30,16 +29,13 @@ SaiBcmWedge100Platform::SaiBcmWedge100Platform( localMac) {} void SaiBcmWedge100Platform::setupAsic( - cfg::SwitchType switchType, std::optional switchId, - int16_t switchIndex, - std::optional systemPortRange, - folly::MacAddress& mac, + const cfg::SwitchInfo& switchInfo, std::optional fabricNodeRole) { CHECK(!fabricNodeRole.has_value()); - asic_ = std::make_unique( - switchType, switchId, switchIndex, systemPortRange, mac); + asic_ = std::make_unique(switchId, switchInfo); } + HwAsic* SaiBcmWedge100Platform::getAsic() const { return asic_.get(); } diff --git a/fboss/agent/platforms/sai/SaiBcmWedge100Platform.h b/fboss/agent/platforms/sai/SaiBcmWedge100Platform.h index c9698c6f5b489..3f75c82615275 100644 --- a/fboss/agent/platforms/sai/SaiBcmWedge100Platform.h +++ b/fboss/agent/platforms/sai/SaiBcmWedge100Platform.h @@ -49,11 +49,8 @@ class SaiBcmWedge100Platform : public SaiBcmPlatform { private: void setupAsic( - cfg::SwitchType switchType, std::optional switchId, - int16_t switchIndex, - std::optional systemPortRange, - folly::MacAddress& mac, + const cfg::SwitchInfo& switchInfo, std::optional fabricNodeRole) override; std::unique_ptr asic_; }; diff --git a/fboss/agent/platforms/sai/SaiBcmWedge400Platform.cpp b/fboss/agent/platforms/sai/SaiBcmWedge400Platform.cpp index ddff080911474..bf24e47a6ed3b 100644 --- a/fboss/agent/platforms/sai/SaiBcmWedge400Platform.cpp +++ b/fboss/agent/platforms/sai/SaiBcmWedge400Platform.cpp @@ -10,7 +10,6 @@ #include "fboss/agent/platforms/sai/SaiBcmWedge400Platform.h" -#include #include #include "fboss/agent/hw/switch_asics/Tomahawk3Asic.h" #include "fboss/agent/platforms/common/wedge400/Wedge400GrandTetonPlatformMapping.h" @@ -29,15 +28,11 @@ SaiBcmWedge400Platform::SaiBcmWedge400Platform( localMac) {} void SaiBcmWedge400Platform::setupAsic( - cfg::SwitchType switchType, std::optional switchId, - int16_t switchIndex, - std::optional systemPortRange, - folly::MacAddress& mac, + const cfg::SwitchInfo& switchInfo, std::optional fabricNodeRole) { CHECK(!fabricNodeRole.has_value()); - asic_ = std::make_unique( - switchType, switchId, switchIndex, systemPortRange, mac); + asic_ = std::make_unique(switchId, switchInfo); } HwAsic* SaiBcmWedge400Platform::getAsic() const { diff --git a/fboss/agent/platforms/sai/SaiBcmWedge400Platform.h b/fboss/agent/platforms/sai/SaiBcmWedge400Platform.h index 228b6bab025f1..8728c6fa9f4ec 100644 --- a/fboss/agent/platforms/sai/SaiBcmWedge400Platform.h +++ b/fboss/agent/platforms/sai/SaiBcmWedge400Platform.h @@ -53,11 +53,8 @@ class SaiBcmWedge400Platform : public SaiBcmPlatform { private: void setupAsic( - cfg::SwitchType switchType, std::optional switchId, - int16_t switchIndex, - std::optional systemPortRange, - folly::MacAddress& mac, + const cfg::SwitchInfo& switchInfo, std::optional fabricNodeRole) override; std::unique_ptr asic_; diff --git a/fboss/agent/platforms/sai/SaiBcmYampPlatform.cpp b/fboss/agent/platforms/sai/SaiBcmYampPlatform.cpp index 49c59827eed24..d73bb958ff80f 100644 --- a/fboss/agent/platforms/sai/SaiBcmYampPlatform.cpp +++ b/fboss/agent/platforms/sai/SaiBcmYampPlatform.cpp @@ -13,7 +13,6 @@ #include "fboss/agent/hw/switch_asics/Tomahawk3Asic.h" #include "fboss/agent/platforms/common/yamp/YampPlatformMapping.h" -#include #include namespace facebook::fboss { @@ -27,15 +26,11 @@ SaiBcmYampPlatform::SaiBcmYampPlatform( localMac) {} void SaiBcmYampPlatform::setupAsic( - cfg::SwitchType switchType, std::optional switchId, - int16_t switchIndex, - std::optional systemPortRange, - folly::MacAddress& mac, + const cfg::SwitchInfo& switchInfo, std::optional fabricNodeRole) { CHECK(!fabricNodeRole.has_value()); - asic_ = std::make_unique( - switchType, switchId, switchIndex, systemPortRange, mac); + asic_ = std::make_unique(switchId, switchInfo); } HwAsic* SaiBcmYampPlatform::getAsic() const { diff --git a/fboss/agent/platforms/sai/SaiBcmYampPlatform.h b/fboss/agent/platforms/sai/SaiBcmYampPlatform.h index 972f4cdc9be06..d850e020c521a 100644 --- a/fboss/agent/platforms/sai/SaiBcmYampPlatform.h +++ b/fboss/agent/platforms/sai/SaiBcmYampPlatform.h @@ -34,12 +34,10 @@ class SaiBcmYampPlatform : public SaiBcmPlatform { private: void setupAsic( - cfg::SwitchType switchType, std::optional switchId, - int16_t switchIndex, - std::optional systemPortRange, - folly::MacAddress& mac, + const cfg::SwitchInfo& switchInfo, std::optional fabricNodeRole) override; + std::unique_ptr asic_; }; diff --git a/fboss/agent/platforms/sai/SaiCloudRipperPlatform.cpp b/fboss/agent/platforms/sai/SaiCloudRipperPlatform.cpp index 2726973bcface..f9d70794d333b 100644 --- a/fboss/agent/platforms/sai/SaiCloudRipperPlatform.cpp +++ b/fboss/agent/platforms/sai/SaiCloudRipperPlatform.cpp @@ -31,11 +31,8 @@ SaiCloudRipperPlatform::SaiCloudRipperPlatform( localMac) {} void SaiCloudRipperPlatform::setupAsic( - cfg::SwitchType switchType, std::optional switchId, - int16_t switchIndex, - std::optional systemPortRange, - folly::MacAddress& mac, + const cfg::SwitchInfo& switchInfo, std::optional fabricNodeRole) { CHECK(!fabricNodeRole.has_value()); std::optional sdkVersion; @@ -54,8 +51,7 @@ void SaiCloudRipperPlatform::setupAsic( sdkVersion->asicSdk() = "24.4.90"; } #endif - asic_ = std::make_unique( - switchType, switchId, switchIndex, systemPortRange, mac, sdkVersion); + asic_ = std::make_unique(switchId, switchInfo, sdkVersion); } HwAsic* SaiCloudRipperPlatform::getAsic() const { diff --git a/fboss/agent/platforms/sai/SaiCloudRipperPlatform.h b/fboss/agent/platforms/sai/SaiCloudRipperPlatform.h index 39092c87658b8..35dee25c6a3ed 100644 --- a/fboss/agent/platforms/sai/SaiCloudRipperPlatform.h +++ b/fboss/agent/platforms/sai/SaiCloudRipperPlatform.h @@ -30,11 +30,8 @@ class SaiCloudRipperPlatform : public SaiTajoPlatform { private: void setupAsic( - cfg::SwitchType switchType, std::optional switchId, - int16_t switchIndex, - std::optional systemPortRange, - folly::MacAddress& mac, + const cfg::SwitchInfo& switchInfo, std::optional fabricNodeRole) override; std::unique_ptr asic_; }; diff --git a/fboss/agent/platforms/sai/SaiCloudRipperPlatformPort.cpp b/fboss/agent/platforms/sai/SaiCloudRipperPlatformPort.cpp index 9f476456cb2d6..0dfaa96e7dbc1 100644 --- a/fboss/agent/platforms/sai/SaiCloudRipperPlatformPort.cpp +++ b/fboss/agent/platforms/sai/SaiCloudRipperPlatformPort.cpp @@ -8,7 +8,6 @@ * */ #include "fboss/agent/platforms/sai/SaiCloudRipperPlatformPort.h" -#include "fboss/agent/platforms/sai/SaiCloudRipperPlatform.h" namespace facebook::fboss { diff --git a/fboss/agent/platforms/sai/SaiFakePlatform.cpp b/fboss/agent/platforms/sai/SaiFakePlatform.cpp index 93e7e70a3ced4..909638c9a2199 100644 --- a/fboss/agent/platforms/sai/SaiFakePlatform.cpp +++ b/fboss/agent/platforms/sai/SaiFakePlatform.cpp @@ -15,7 +15,6 @@ #include "fboss/agent/hw/test/ConfigFactory.h" -#include #include namespace { std::vector getControllingPortIDs() { @@ -43,14 +42,10 @@ SaiFakePlatform::SaiFakePlatform( } void SaiFakePlatform::setupAsic( - cfg::SwitchType switchType, std::optional switchId, - int16_t switchIndex, - std::optional systemPortRange, - folly::MacAddress& mac, + const cfg::SwitchInfo& switchInfo, std::optional fabricNodeRole) { - asic_ = std::make_unique( - switchType, switchId, switchIndex, systemPortRange, mac); + asic_ = std::make_unique(switchId, switchInfo); } std::string SaiFakePlatform::getHwConfig() { diff --git a/fboss/agent/platforms/sai/SaiFakePlatform.h b/fboss/agent/platforms/sai/SaiFakePlatform.h index 7f3fe8d9626d1..b23ea9185fd8b 100644 --- a/fboss/agent/platforms/sai/SaiFakePlatform.h +++ b/fboss/agent/platforms/sai/SaiFakePlatform.h @@ -57,11 +57,8 @@ class SaiFakePlatform : public SaiPlatform { private: void setupAsic( - cfg::SwitchType switchType, std::optional switchId, - int16_t switchIndex, - std::optional systemPortRange, - folly::MacAddress& mac, + const cfg::SwitchInfo& switchInfo, std::optional fabricNodeRole) override; folly::test::TemporaryDirectory tmpDir_; std::unique_ptr asic_; diff --git a/fboss/agent/platforms/sai/SaiFakePlatformPort.cpp b/fboss/agent/platforms/sai/SaiFakePlatformPort.cpp index 79faf964f968f..53012c6eb482b 100644 --- a/fboss/agent/platforms/sai/SaiFakePlatformPort.cpp +++ b/fboss/agent/platforms/sai/SaiFakePlatformPort.cpp @@ -8,7 +8,6 @@ * */ #include "fboss/agent/platforms/sai/SaiFakePlatformPort.h" -#include "fboss/agent/platforms/sai/SaiPlatform.h" namespace facebook::fboss { diff --git a/fboss/agent/platforms/sai/SaiJanga800bicPlatform.cpp b/fboss/agent/platforms/sai/SaiJanga800bicPlatform.cpp index aea2f67544f50..4a1289795b077 100644 --- a/fboss/agent/platforms/sai/SaiJanga800bicPlatform.cpp +++ b/fboss/agent/platforms/sai/SaiJanga800bicPlatform.cpp @@ -30,15 +30,11 @@ SaiJanga800bicPlatform::SaiJanga800bicPlatform( localMac) {} void SaiJanga800bicPlatform::setupAsic( - cfg::SwitchType switchType, std::optional switchId, - int16_t switchIndex, - std::optional systemPortRange, - folly::MacAddress& mac, + const cfg::SwitchInfo& switchInfo, std::optional fabricNodeRole) { CHECK(!fabricNodeRole.has_value()); - asic_ = std::make_unique( - switchType, switchId, switchIndex, systemPortRange, mac); + asic_ = std::make_unique(switchId, switchInfo); } HwAsic* SaiJanga800bicPlatform::getAsic() const { diff --git a/fboss/agent/platforms/sai/SaiJanga800bicPlatform.h b/fboss/agent/platforms/sai/SaiJanga800bicPlatform.h index 9951eb60e5771..af13d79c9fa78 100644 --- a/fboss/agent/platforms/sai/SaiJanga800bicPlatform.h +++ b/fboss/agent/platforms/sai/SaiJanga800bicPlatform.h @@ -60,11 +60,8 @@ class SaiJanga800bicPlatform : public SaiBcmPlatform { private: void setupAsic( - cfg::SwitchType switchType, std::optional switchId, - int16_t switchIndex, - std::optional systemPortRange, - folly::MacAddress& mac, + const cfg::SwitchInfo& switchInfo, std::optional fabricNodeRole) override; std::unique_ptr asic_; }; diff --git a/fboss/agent/platforms/sai/SaiMeru400bfuPlatform.cpp b/fboss/agent/platforms/sai/SaiMeru400bfuPlatform.cpp index 750af56ba1304..5bdc41f34c745 100644 --- a/fboss/agent/platforms/sai/SaiMeru400bfuPlatform.cpp +++ b/fboss/agent/platforms/sai/SaiMeru400bfuPlatform.cpp @@ -29,21 +29,12 @@ SaiMeru400bfuPlatform::SaiMeru400bfuPlatform( localMac) {} void SaiMeru400bfuPlatform::setupAsic( - cfg::SwitchType switchType, std::optional switchId, - int16_t switchIndex, - std::optional systemPortRange, - folly::MacAddress& mac, + const cfg::SwitchInfo& switchInfo, std::optional fabricNodeRole) { CHECK(fabricNodeRole.has_value()); asic_ = std::make_unique( - switchType, - switchId, - switchIndex, - systemPortRange, - mac, - std::nullopt, - *fabricNodeRole); + switchId, switchInfo, std::nullopt, *fabricNodeRole); } HwAsic* SaiMeru400bfuPlatform::getAsic() const { diff --git a/fboss/agent/platforms/sai/SaiMeru400bfuPlatform.h b/fboss/agent/platforms/sai/SaiMeru400bfuPlatform.h index c2189ef3a428c..895c43029400a 100644 --- a/fboss/agent/platforms/sai/SaiMeru400bfuPlatform.h +++ b/fboss/agent/platforms/sai/SaiMeru400bfuPlatform.h @@ -58,11 +58,8 @@ class SaiMeru400bfuPlatform : public SaiBcmPlatform { private: void setupAsic( - cfg::SwitchType switchType, std::optional switchId, - int16_t switchIndex, - std::optional systemPortRange, - folly::MacAddress& mac, + const cfg::SwitchInfo& switchInfo, std::optional fabricNodeRole) override; std::unique_ptr asic_; }; diff --git a/fboss/agent/platforms/sai/SaiMeru400biaPlatform.cpp b/fboss/agent/platforms/sai/SaiMeru400biaPlatform.cpp index c2a67086bafb7..4216045d87d2b 100644 --- a/fboss/agent/platforms/sai/SaiMeru400biaPlatform.cpp +++ b/fboss/agent/platforms/sai/SaiMeru400biaPlatform.cpp @@ -29,15 +29,11 @@ SaiMeru400biaPlatform::SaiMeru400biaPlatform( localMac) {} void SaiMeru400biaPlatform::setupAsic( - cfg::SwitchType switchType, std::optional switchId, - int16_t switchIndex, - std::optional systemPortRange, - folly::MacAddress& mac, + const cfg::SwitchInfo& switchInfo, std::optional fabricNodeRole) { CHECK(!fabricNodeRole.has_value()); - asic_ = std::make_unique( - switchType, switchId, switchIndex, systemPortRange, mac); + asic_ = std::make_unique(switchId, switchInfo); } HwAsic* SaiMeru400biaPlatform::getAsic() const { diff --git a/fboss/agent/platforms/sai/SaiMeru400biaPlatform.h b/fboss/agent/platforms/sai/SaiMeru400biaPlatform.h index 56f92610898f8..852b73c44fb29 100644 --- a/fboss/agent/platforms/sai/SaiMeru400biaPlatform.h +++ b/fboss/agent/platforms/sai/SaiMeru400biaPlatform.h @@ -61,11 +61,8 @@ class SaiMeru400biaPlatform : public SaiBcmPlatform { private: void setupAsic( - cfg::SwitchType switchType, std::optional switchId, - int16_t switchIndex, - std::optional systemPortRange, - folly::MacAddress& mac, + const cfg::SwitchInfo& switchInfo, std::optional fabricNodeRole) override; std::unique_ptr asic_; }; diff --git a/fboss/agent/platforms/sai/SaiMeru400biuPlatform.cpp b/fboss/agent/platforms/sai/SaiMeru400biuPlatform.cpp index 18e535b974d75..a12427209f047 100644 --- a/fboss/agent/platforms/sai/SaiMeru400biuPlatform.cpp +++ b/fboss/agent/platforms/sai/SaiMeru400biuPlatform.cpp @@ -29,15 +29,11 @@ SaiMeru400biuPlatform::SaiMeru400biuPlatform( localMac) {} void SaiMeru400biuPlatform::setupAsic( - cfg::SwitchType switchType, std::optional switchId, - int16_t switchIndex, - std::optional systemPortRange, - folly::MacAddress& mac, + const cfg::SwitchInfo& switchInfo, std::optional fabricNodeRole) { CHECK(!fabricNodeRole.has_value()); - asic_ = std::make_unique( - switchType, switchId, switchIndex, systemPortRange, mac); + asic_ = std::make_unique(switchId, switchInfo); } HwAsic* SaiMeru400biuPlatform::getAsic() const { diff --git a/fboss/agent/platforms/sai/SaiMeru400biuPlatform.h b/fboss/agent/platforms/sai/SaiMeru400biuPlatform.h index 61470a820c52b..31f6b24948c46 100644 --- a/fboss/agent/platforms/sai/SaiMeru400biuPlatform.h +++ b/fboss/agent/platforms/sai/SaiMeru400biuPlatform.h @@ -60,11 +60,8 @@ class SaiMeru400biuPlatform : public SaiBcmPlatform { private: void setupAsic( - cfg::SwitchType switchType, std::optional switchId, - int16_t switchIndex, - std::optional systemPortRange, - folly::MacAddress& mac, + const cfg::SwitchInfo& switchInfo, std::optional fabricNodeRole) override; std::unique_ptr asic_; }; diff --git a/fboss/agent/platforms/sai/SaiMeru800bfaPlatform.cpp b/fboss/agent/platforms/sai/SaiMeru800bfaPlatform.cpp index 705ffc448435d..ae7df6f837875 100644 --- a/fboss/agent/platforms/sai/SaiMeru800bfaPlatform.cpp +++ b/fboss/agent/platforms/sai/SaiMeru800bfaPlatform.cpp @@ -36,21 +36,12 @@ SaiMeru800bfaPlatform::SaiMeru800bfaPlatform( : SaiBcmPlatform(std::move(productInfo), std::move(mapping), localMac) {} void SaiMeru800bfaPlatform::setupAsic( - cfg::SwitchType switchType, std::optional switchId, - int16_t switchIndex, - std::optional systemPortRange, - folly::MacAddress& mac, + const cfg::SwitchInfo& switchInfo, std::optional fabricNodeRole) { CHECK(fabricNodeRole.has_value()); asic_ = std::make_unique( - switchType, - switchId, - switchIndex, - systemPortRange, - mac, - std::nullopt, - *fabricNodeRole); + switchId, switchInfo, std::nullopt, *fabricNodeRole); } HwAsic* SaiMeru800bfaPlatform::getAsic() const { diff --git a/fboss/agent/platforms/sai/SaiMeru800bfaPlatform.h b/fboss/agent/platforms/sai/SaiMeru800bfaPlatform.h index 891eb18f9860d..11f893b302f1e 100644 --- a/fboss/agent/platforms/sai/SaiMeru800bfaPlatform.h +++ b/fboss/agent/platforms/sai/SaiMeru800bfaPlatform.h @@ -65,11 +65,8 @@ class SaiMeru800bfaPlatform : public SaiBcmPlatform { private: void setupAsic( - cfg::SwitchType switchType, std::optional switchId, - int16_t switchIndex, - std::optional systemPortRange, - folly::MacAddress& mac, + const cfg::SwitchInfo& switchInfo, std::optional fabricNodeRole) override; std::unique_ptr asic_; }; diff --git a/fboss/agent/platforms/sai/SaiMeru800biaPlatform.cpp b/fboss/agent/platforms/sai/SaiMeru800biaPlatform.cpp index 7ebdf892cc94b..f34e12c881c7e 100644 --- a/fboss/agent/platforms/sai/SaiMeru800biaPlatform.cpp +++ b/fboss/agent/platforms/sai/SaiMeru800biaPlatform.cpp @@ -29,15 +29,11 @@ SaiMeru800biaPlatform::SaiMeru800biaPlatform( localMac) {} void SaiMeru800biaPlatform::setupAsic( - cfg::SwitchType switchType, std::optional switchId, - int16_t switchIndex, - std::optional systemPortRange, - folly::MacAddress& mac, + const cfg::SwitchInfo& switchInfo, std::optional fabricNodeRole) { CHECK(!fabricNodeRole.has_value()); - asic_ = std::make_unique( - switchType, switchId, switchIndex, systemPortRange, mac); + asic_ = std::make_unique(switchId, switchInfo); } HwAsic* SaiMeru800biaPlatform::getAsic() const { @@ -48,6 +44,9 @@ std::vector SaiMeru800biaPlatform::getInternalSystemPortConfig() const { CHECK(asic_) << " Asic must be set before getting sys port info"; CHECK(asic_->getSwitchId()) << " Switch Id must be set before sys port info"; + if (isDualStage3Q2QMode()) { + return {{0, static_cast(*asic_->getSwitchId()), 1, 16, 10000, 3}}; + } return {{0, static_cast(*asic_->getSwitchId()), 0, 0, 10000, 8}}; } SaiMeru800biaPlatform::~SaiMeru800biaPlatform() = default; diff --git a/fboss/agent/platforms/sai/SaiMeru800biaPlatform.h b/fboss/agent/platforms/sai/SaiMeru800biaPlatform.h index bc393ed3c6d14..2508cddcca40d 100644 --- a/fboss/agent/platforms/sai/SaiMeru800biaPlatform.h +++ b/fboss/agent/platforms/sai/SaiMeru800biaPlatform.h @@ -60,12 +60,10 @@ class SaiMeru800biaPlatform : public SaiBcmPlatform { private: void setupAsic( - cfg::SwitchType switchType, std::optional switchId, - int16_t switchIndex, - std::optional systemPortRange, - folly::MacAddress& mac, + const cfg::SwitchInfo& switchInfo, std::optional fabricNodeRole) override; + std::unique_ptr asic_; }; diff --git a/fboss/agent/platforms/sai/SaiMorgan800ccPlatform.cpp b/fboss/agent/platforms/sai/SaiMorgan800ccPlatform.cpp index 92279ffd5f1cd..bc82156688b31 100644 --- a/fboss/agent/platforms/sai/SaiMorgan800ccPlatform.cpp +++ b/fboss/agent/platforms/sai/SaiMorgan800ccPlatform.cpp @@ -12,8 +12,6 @@ #include "fboss/agent/hw/switch_asics/YubaAsic.h" #include "fboss/agent/platforms/common/morgan800cc/Morgan800ccPlatformMapping.h" -#include - namespace facebook::fboss { SaiMorgan800ccPlatform::SaiMorgan800ccPlatform( @@ -29,15 +27,11 @@ SaiMorgan800ccPlatform::SaiMorgan800ccPlatform( localMac) {} void SaiMorgan800ccPlatform::setupAsic( - cfg::SwitchType switchType, std::optional switchId, - int16_t switchIndex, - std::optional systemPortRange, - folly::MacAddress& mac, + const cfg::SwitchInfo& switchInfo, std::optional fabricNodeRole) { CHECK(!fabricNodeRole.has_value()); - asic_ = std::make_unique( - switchType, switchId, switchIndex, systemPortRange, mac); + asic_ = std::make_unique(switchId, switchInfo); asic_->setDefaultStreamType(cfg::StreamType::UNICAST); } diff --git a/fboss/agent/platforms/sai/SaiMorgan800ccPlatform.h b/fboss/agent/platforms/sai/SaiMorgan800ccPlatform.h index d0dc2bbd50d95..f919cf76cbaab 100644 --- a/fboss/agent/platforms/sai/SaiMorgan800ccPlatform.h +++ b/fboss/agent/platforms/sai/SaiMorgan800ccPlatform.h @@ -30,11 +30,8 @@ class SaiMorgan800ccPlatform : public SaiTajoPlatform { private: void setupAsic( - cfg::SwitchType switchType, std::optional switchId, - int16_t switchIndex, - std::optional systemPortRange, - folly::MacAddress& mac, + const cfg::SwitchInfo& switchInfo, std::optional fabricNodeRole) override; std::unique_ptr asic_; }; diff --git a/fboss/agent/platforms/sai/SaiPlatform.cpp b/fboss/agent/platforms/sai/SaiPlatform.cpp index 4127a96e71c5b..5f6ba55c39f26 100644 --- a/fboss/agent/platforms/sai/SaiPlatform.cpp +++ b/fboss/agent/platforms/sai/SaiPlatform.cpp @@ -260,16 +260,6 @@ std::string SaiPlatform::getHwAsicConfig( addNameValue(entry); } -#if defined(BRCM_SAI_SDK_DNX_GTE_11_0) && !defined(BRCM_SAI_SDK_DNX_GTE_12_0) - // Interim workaround for 11.7 GA as this SoC property is needed for - // J3AI 11.x but not for 12.x until 12.0.0.4. - // TODO: While integrating 12.0.0.4, these workarounds need to be removed - // and instead this SoC property would be added in config directly. - if (getAsic()->getAsicType() == cfg::AsicType::ASIC_TYPE_JERICHO3) { - nameValStrs.push_back("custom_feature_shel_arm_enable=1"); - } -#endif - /* * Single NPU platfroms will not have any npu entries. In such cases, * we can directly use the common config. @@ -500,12 +490,12 @@ SaiSwitchTraits::CreateAttributes SaiPlatform::getSwitchAttributes( uint32_t maxCoreCount = 0; uint32_t maxSystemCoreCount = 0; auto localMac = getLocalMac(); - const EbroAsic ebro( - cfg::SwitchType::VOQ, 0, 0, std::nullopt, localMac, std::nullopt); - const Jericho2Asic j2( - cfg::SwitchType::VOQ, 0, 0, std::nullopt, localMac, std::nullopt); - const Jericho3Asic j3( - cfg::SwitchType::VOQ, 0, 0, std::nullopt, localMac, std::nullopt); + cfg::SwitchInfo swInfo; + swInfo.switchIndex() = 0; + swInfo.switchType() = cfg::SwitchType::VOQ; + swInfo.switchMac() = localMac.toString(); + const Jericho2Asic j2(0, swInfo); + const Jericho3Asic j3(0, swInfo); for (const auto& [id, dsfNode] : *agentCfg->thrift.sw()->dsfNodes()) { if (dsfNode.type() != cfg::DsfNodeType::INTERFACE_NODE) { continue; @@ -525,8 +515,6 @@ SaiSwitchTraits::CreateAttributes SaiPlatform::getSwitchAttributes( maxSystemCoreCount = std::max(maxSystemCoreCount, uint32_t(id + j3.getNumCores())); break; - case cfg::AsicType::ASIC_TYPE_EBRO: - break; default: throw FbossError("Unexpected asic type: ", *dsfNode.asicType()); } @@ -554,13 +542,32 @@ SaiSwitchTraits::CreateAttributes SaiPlatform::getSwitchAttributes( std::optional firmwarePathName{ std::nullopt}; - if (getAsic()->isSupported(HwAsic::Feature::SAI_FIRMWARE_PATH)) { + + const auto switchSettings = config()->thrift.sw()->switchSettings(); + if (switchSettings->firmwarePath().has_value()) { std::vector firmwarePathNameArray; std::copy( - FLAGS_firmware_path.c_str(), - FLAGS_firmware_path.c_str() + FLAGS_firmware_path.size() + 1, + switchSettings->firmwarePath().value().c_str(), + switchSettings->firmwarePath().value().c_str() + + switchSettings->firmwarePath().value().size() + 1, std::back_inserter(firmwarePathNameArray)); + firmwarePathName = firmwarePathNameArray; + } else { + // TODO + // We plan to migrate all use cases that use firmware path to more + // geentalized config driven approach i.e. if-block. + // After that migration, we will remove this else-block, HwAsic feature + // SAI_FIRWWARE_PATH and FLAGS_firmware_path. + // Fallback in the meanwhile. + if (getAsic()->isSupported(HwAsic::Feature::SAI_FIRMWARE_PATH)) { + std::vector firmwarePathNameArray; + std::copy( + FLAGS_firmware_path.c_str(), + FLAGS_firmware_path.c_str() + FLAGS_firmware_path.size() + 1, + std::back_inserter(firmwarePathNameArray)); + firmwarePathName = firmwarePathNameArray; + } } std::optional switchIsolate{ @@ -620,13 +627,17 @@ SaiSwitchTraits::CreateAttributes SaiPlatform::getSwitchAttributes( constexpr uint32_t kRamon3LlfcThreshold{800}; fabricLLFC = std::vector({kRamon3LlfcThreshold}); } - // TODO: Using the hard coding values for now from single stage system config - // to integrate 12.0.0.3. This needs to be fixed properly post - // 12.0.0.3 integration. Also, this can be skipped for fabric switches. - maxSystemPortId = 6143; - maxLocalSystemPortId = -1; - maxSystemPorts = 6144; - maxVoqs = 6144 * 8; + if (isDualStage3Q2QMode()) { + maxSystemPortId = 32515; + maxLocalSystemPortId = 5; + maxSystemPorts = 21766; + maxVoqs = 64512; + } else { + maxSystemPortId = 6143; + maxLocalSystemPortId = -1; + maxSystemPorts = 6144; + maxVoqs = 6144 * 8; + } #endif if (swType == cfg::SwitchType::FABRIC && bootType == BootType::COLD_BOOT) { // FABRIC switches should always start in isolated state until we configure @@ -707,6 +718,11 @@ SaiSwitchTraits::CreateAttributes SaiPlatform::getSwitchAttributes( maxVoqs, std::nullopt, // Fabric CLLFC TX credit threshold std::nullopt, // VOQ DRAM bound threshold + std::nullopt, // Conditional Entropy Rehash Period + std::nullopt, // Shel Source IP + std::nullopt, // Shel Destination IP + std::nullopt, // Shel Source MAC + std::nullopt, // Shel Periodic Interval }; } diff --git a/fboss/agent/platforms/sai/SaiTahan800bcPlatform.cpp b/fboss/agent/platforms/sai/SaiTahan800bcPlatform.cpp index 91803adba95ad..1b2eec406dc0f 100644 --- a/fboss/agent/platforms/sai/SaiTahan800bcPlatform.cpp +++ b/fboss/agent/platforms/sai/SaiTahan800bcPlatform.cpp @@ -13,7 +13,6 @@ #include "fboss/agent/hw/switch_asics/Tomahawk5Asic.h" #include "fboss/agent/platforms/common/tahan800bc/Tahan800bcPlatformMapping.h" -#include #include namespace facebook::fboss { @@ -29,15 +28,11 @@ SaiTahan800bcPlatform::SaiTahan800bcPlatform( localMac) {} void SaiTahan800bcPlatform::setupAsic( - cfg::SwitchType switchType, std::optional switchId, - int16_t switchIndex, - std::optional systemPortRange, - folly::MacAddress& mac, + const cfg::SwitchInfo& switchInfo, std::optional fabricNodeRole) { CHECK(!fabricNodeRole.has_value()); - asic_ = std::make_unique( - switchType, switchId, switchIndex, systemPortRange, mac); + asic_ = std::make_unique(switchId, switchInfo); } HwAsic* SaiTahan800bcPlatform::getAsic() const { diff --git a/fboss/agent/platforms/sai/SaiTahan800bcPlatform.h b/fboss/agent/platforms/sai/SaiTahan800bcPlatform.h index 3e7ae74393d13..ccfd12b4a1cb1 100644 --- a/fboss/agent/platforms/sai/SaiTahan800bcPlatform.h +++ b/fboss/agent/platforms/sai/SaiTahan800bcPlatform.h @@ -39,11 +39,8 @@ class SaiTahan800bcPlatform : public SaiBcmPlatform { private: void setupAsic( - cfg::SwitchType switchType, std::optional switchId, - int16_t switchIndex, - std::optional systemPortRange, - folly::MacAddress& mac, + const cfg::SwitchInfo& switchInfo, std::optional fabricNodeRole) override; std::unique_ptr asic_; }; diff --git a/fboss/agent/platforms/sai/SaiWedge400CPlatform.cpp b/fboss/agent/platforms/sai/SaiWedge400CPlatform.cpp index e374cca3d554b..a054ec815cc37 100644 --- a/fboss/agent/platforms/sai/SaiWedge400CPlatform.cpp +++ b/fboss/agent/platforms/sai/SaiWedge400CPlatform.cpp @@ -32,11 +32,8 @@ SaiWedge400CPlatform::SaiWedge400CPlatform( localMac) {} void SaiWedge400CPlatform::setupAsic( - cfg::SwitchType switchType, std::optional switchId, - int16_t switchIndex, - std::optional systemPortRange, - folly::MacAddress& mac, + const cfg::SwitchInfo& switchInfo, std::optional fabricNodeRole) { CHECK(!fabricNodeRole.has_value()); std::optional sdkVersion; @@ -55,8 +52,7 @@ void SaiWedge400CPlatform::setupAsic( sdkVersion->asicSdk() = "24.4.90"; } #endif - asic_ = std::make_unique( - switchType, switchId, switchIndex, systemPortRange, mac, sdkVersion); + asic_ = std::make_unique(switchId, switchInfo, sdkVersion); } HwAsic* SaiWedge400CPlatform::getAsic() const { diff --git a/fboss/agent/platforms/sai/SaiWedge400CPlatform.h b/fboss/agent/platforms/sai/SaiWedge400CPlatform.h index 1398c8502e191..6d6c3702c4bba 100644 --- a/fboss/agent/platforms/sai/SaiWedge400CPlatform.h +++ b/fboss/agent/platforms/sai/SaiWedge400CPlatform.h @@ -29,11 +29,8 @@ class SaiWedge400CPlatform : public SaiTajoPlatform { private: void setupAsic( - cfg::SwitchType switchType, std::optional switchId, - int16_t switchIndex, - std::optional systemPortRange, - folly::MacAddress& mac, + const cfg::SwitchInfo& switchInfo, std::optional fabricNodeRole) override; std::unique_ptr createWedge400CPlatformMapping( diff --git a/fboss/agent/platforms/sai/SaiWedge400CPlatformPort.cpp b/fboss/agent/platforms/sai/SaiWedge400CPlatformPort.cpp index 148c272637a70..bd785cad42b9d 100644 --- a/fboss/agent/platforms/sai/SaiWedge400CPlatformPort.cpp +++ b/fboss/agent/platforms/sai/SaiWedge400CPlatformPort.cpp @@ -10,8 +10,6 @@ #include "fboss/agent/platforms/sai/SaiWedge400CPlatformPort.h" #include "fboss/agent/platforms/common/utils/Wedge400LedUtils.h" -#include - DEFINE_bool(skip_led_programming, false, "Skip programming LED"); namespace facebook::fboss { diff --git a/fboss/agent/platforms/sai/SaiYangraPlatform.cpp b/fboss/agent/platforms/sai/SaiYangraPlatform.cpp index c6f0521a46960..bf3d474fabeca 100644 --- a/fboss/agent/platforms/sai/SaiYangraPlatform.cpp +++ b/fboss/agent/platforms/sai/SaiYangraPlatform.cpp @@ -36,14 +36,11 @@ SaiYangraPlatform::SaiYangraPlatform( localMac) {} void SaiYangraPlatform::setupAsic( - cfg::SwitchType switchType, std::optional switchId, - int16_t switchIndex, - std::optional systemPortRange, - folly::MacAddress& mac, - std::optional /*role*/) { - asic_ = std::make_unique( - switchType, switchId, switchIndex, systemPortRange, mac); + const cfg::SwitchInfo& switchInfo, + std::optional fabricNodeRole) { + CHECK(!fabricNodeRole.has_value()); + asic_ = std::make_unique(switchId, switchInfo); asic_->setDefaultStreamType(cfg::StreamType::UNICAST); } diff --git a/fboss/agent/platforms/sai/SaiYangraPlatform.h b/fboss/agent/platforms/sai/SaiYangraPlatform.h index 79cdecce82b12..26b796cf192aa 100644 --- a/fboss/agent/platforms/sai/SaiYangraPlatform.h +++ b/fboss/agent/platforms/sai/SaiYangraPlatform.h @@ -51,11 +51,8 @@ class SaiYangraPlatform : public SaiPlatform { private: void setupAsic( - cfg::SwitchType switchType, std::optional switchId, - int16_t switchIndex, - std::optional systemPortRange, - folly::MacAddress& mac, + const cfg::SwitchInfo& switchInfo, std::optional role) override; std::unique_ptr asic_; }; diff --git a/fboss/agent/platforms/sai/cloudripper/SaiCloudRipperPhyPlatform.cpp b/fboss/agent/platforms/sai/cloudripper/SaiCloudRipperPhyPlatform.cpp index 5ec00a75bf04c..e9986fba59163 100644 --- a/fboss/agent/platforms/sai/cloudripper/SaiCloudRipperPhyPlatform.cpp +++ b/fboss/agent/platforms/sai/cloudripper/SaiCloudRipperPhyPlatform.cpp @@ -83,15 +83,11 @@ SaiCloudRipperPhyPlatform::SaiCloudRipperPhyPlatform( folly::to(phyId_))) {} void SaiCloudRipperPhyPlatform::setupAsic( - cfg::SwitchType switchType, std::optional switchId, - int16_t switchIndex, - std::optional systemPortRange, - folly::MacAddress& mac, + const cfg::SwitchInfo& switchInfo, std::optional fabricNodeRole) { CHECK(!fabricNodeRole.has_value()); - asic_ = std::make_unique( - switchType, switchId, switchIndex, systemPortRange, mac); + asic_ = std::make_unique(switchId, switchInfo); } SaiCloudRipperPhyPlatform::~SaiCloudRipperPhyPlatform() {} diff --git a/fboss/agent/platforms/sai/cloudripper/SaiCloudRipperPhyPlatform.h b/fboss/agent/platforms/sai/cloudripper/SaiCloudRipperPhyPlatform.h index 1d0eb673a173d..c988e93aeadfa 100644 --- a/fboss/agent/platforms/sai/cloudripper/SaiCloudRipperPhyPlatform.h +++ b/fboss/agent/platforms/sai/cloudripper/SaiCloudRipperPhyPlatform.h @@ -59,12 +59,9 @@ class SaiCloudRipperPhyPlatform : public SaiPlatform { private: void setupAsic( - cfg::SwitchType switchType, std::optional switchId, - int16_t switchIndex, - std::optional systemPortRange, - folly::MacAddress& mac, - std::optional fabricNodeRole) override; + const cfg::SwitchInfo& switchInfo, + std::optional fabricRole) override; int phyId_{0}; std::unique_ptr asic_; std::optional switchCreateAttrs_; diff --git a/fboss/agent/platforms/sai/elbert/SaiElbert8DDPhyPlatform.cpp b/fboss/agent/platforms/sai/elbert/SaiElbert8DDPhyPlatform.cpp index 30d05e67918e2..798c94a6c14a0 100644 --- a/fboss/agent/platforms/sai/elbert/SaiElbert8DDPhyPlatform.cpp +++ b/fboss/agent/platforms/sai/elbert/SaiElbert8DDPhyPlatform.cpp @@ -94,16 +94,13 @@ SaiElbert8DDPhyPlatform::SaiElbert8DDPhyPlatform( folly::to(phyId_))) {} void SaiElbert8DDPhyPlatform::setupAsic( - cfg::SwitchType switchType, std::optional switchId, - int16_t switchIndex, - std::optional systemPortRange, - folly::MacAddress& mac, + const cfg::SwitchInfo& switchInfo, std::optional fabricNodeRole) { CHECK(!fabricNodeRole.has_value()); - asic_ = std::make_unique( - switchType, switchId, switchIndex, systemPortRange, mac); + asic_ = std::make_unique(switchId, switchInfo); } + SaiElbert8DDPhyPlatform::~SaiElbert8DDPhyPlatform() {} std::string SaiElbert8DDPhyPlatform::getHwConfig() { diff --git a/fboss/agent/platforms/sai/elbert/SaiElbert8DDPhyPlatform.h b/fboss/agent/platforms/sai/elbert/SaiElbert8DDPhyPlatform.h index 78459d8874c56..6d8d095cacee8 100644 --- a/fboss/agent/platforms/sai/elbert/SaiElbert8DDPhyPlatform.h +++ b/fboss/agent/platforms/sai/elbert/SaiElbert8DDPhyPlatform.h @@ -64,12 +64,9 @@ class SaiElbert8DDPhyPlatform : public SaiPlatform { private: void setupAsic( - cfg::SwitchType switchType, std::optional switchId, - int16_t switchIndex, - std::optional systemPortRange, - folly::MacAddress& mac, - std::optional fabricNodeRole) override; + const cfg::SwitchInfo& switchInfo, + std::optional fabricRole) override; uint8_t pimId_{0}; int phyId_{0}; std::unique_ptr asic_; diff --git a/fboss/agent/platforms/sai/oss/SaiBcmMinipackPlatform.cpp b/fboss/agent/platforms/sai/oss/SaiBcmMinipackPlatform.cpp index 13094ec9bc67c..79923ee8acdad 100644 --- a/fboss/agent/platforms/sai/oss/SaiBcmMinipackPlatform.cpp +++ b/fboss/agent/platforms/sai/oss/SaiBcmMinipackPlatform.cpp @@ -13,7 +13,6 @@ #include "fboss/agent/hw/switch_asics/Tomahawk3Asic.h" #include "fboss/agent/platforms/common/minipack/MinipackPlatformMapping.h" -#include #include namespace facebook::fboss { diff --git a/fboss/agent/platforms/tests/utils/BcmTestTomahawk4Platform.h b/fboss/agent/platforms/tests/utils/BcmTestTomahawk4Platform.h index 12176a5ea538b..4b21ab548c3fd 100644 --- a/fboss/agent/platforms/tests/utils/BcmTestTomahawk4Platform.h +++ b/fboss/agent/platforms/tests/utils/BcmTestTomahawk4Platform.h @@ -66,15 +66,11 @@ class BcmTestTomahawk4Platform : public BcmTestWedgePlatform { private: void setupAsic( - cfg::SwitchType switchType, std::optional switchId, - int16_t switchIndex, - std::optional systemPortRange, - folly::MacAddress& mac, + const cfg::SwitchInfo& switchInfo, std::optional fabricNodeRole) override { CHECK(!fabricNodeRole.has_value()); - asic_ = std::make_unique( - switchType, switchId, switchIndex, systemPortRange, mac); + asic_ = std::make_unique(switchId, switchInfo); } // Forbidden copy constructor and assignment operator BcmTestTomahawk4Platform(BcmTestTomahawk4Platform const&) = delete; diff --git a/fboss/agent/platforms/tests/utils/BcmTestWedgeTomahawk3Platform.h b/fboss/agent/platforms/tests/utils/BcmTestWedgeTomahawk3Platform.h index c3e75abf7bdd6..ae1c142d8ea45 100644 --- a/fboss/agent/platforms/tests/utils/BcmTestWedgeTomahawk3Platform.h +++ b/fboss/agent/platforms/tests/utils/BcmTestWedgeTomahawk3Platform.h @@ -64,15 +64,11 @@ class BcmTestWedgeTomahawk3Platform : public BcmTestWedgePlatform { private: void setupAsic( - cfg::SwitchType switchType, std::optional switchId, - int16_t switchIndex, - std::optional systemPortRange, - folly::MacAddress& mac, + const cfg::SwitchInfo& switchInfo, std::optional fabricNodeRole) override { CHECK(!fabricNodeRole.has_value()); - asic_ = std::make_unique( - switchType, switchId, switchIndex, systemPortRange, mac); + asic_ = std::make_unique(switchId, switchInfo); } // Forbidden copy constructor and assignment operator BcmTestWedgeTomahawk3Platform(BcmTestWedgeTomahawk3Platform const&) = delete; diff --git a/fboss/agent/platforms/tests/utils/BcmTestWedgeTomahawkPlatform.h b/fboss/agent/platforms/tests/utils/BcmTestWedgeTomahawkPlatform.h index fb44f4974a2cb..f3db047f471a8 100644 --- a/fboss/agent/platforms/tests/utils/BcmTestWedgeTomahawkPlatform.h +++ b/fboss/agent/platforms/tests/utils/BcmTestWedgeTomahawkPlatform.h @@ -61,15 +61,11 @@ class BcmTestWedgeTomahawkPlatform : public BcmTestWedgePlatform { private: void setupAsic( - cfg::SwitchType switchType, std::optional switchId, - int16_t switchIndex, - std::optional systemPortRange, - folly::MacAddress& mac, + const cfg::SwitchInfo& switchInfo, std::optional fabricNodeRole) override { CHECK(!fabricNodeRole.has_value()); - asic_ = std::make_unique( - switchType, switchId, switchIndex, systemPortRange, mac); + asic_ = std::make_unique(switchId, switchInfo); } // Forbidden copy constructor and assignment operator BcmTestWedgeTomahawkPlatform(BcmTestWedgeTomahawkPlatform const&) = delete; diff --git a/fboss/agent/platforms/tests/utils/FakeBcmTestPlatform.cpp b/fboss/agent/platforms/tests/utils/FakeBcmTestPlatform.cpp index a5ff374552e6a..240d219db12f6 100644 --- a/fboss/agent/platforms/tests/utils/FakeBcmTestPlatform.cpp +++ b/fboss/agent/platforms/tests/utils/FakeBcmTestPlatform.cpp @@ -42,15 +42,11 @@ FakeBcmTestPlatform::FakeBcmTestPlatform() } void FakeBcmTestPlatform::setupAsic( - cfg::SwitchType switchType, std::optional switchId, - int16_t switchIndex, - std::optional systemPortRange, - folly::MacAddress& mac, + const cfg::SwitchInfo& switchInfo, std::optional fabricNodeRole) { CHECK(!fabricNodeRole.has_value()); - asic_ = std::make_unique( - switchType, switchId, switchIndex, systemPortRange, mac); + asic_ = std::make_unique(switchId, switchInfo); } FakeBcmTestPlatform::~FakeBcmTestPlatform() {} diff --git a/fboss/agent/platforms/tests/utils/FakeBcmTestPlatform.h b/fboss/agent/platforms/tests/utils/FakeBcmTestPlatform.h index 0be12598ce065..d2411f96b16e0 100644 --- a/fboss/agent/platforms/tests/utils/FakeBcmTestPlatform.h +++ b/fboss/agent/platforms/tests/utils/FakeBcmTestPlatform.h @@ -63,11 +63,8 @@ class FakeBcmTestPlatform : public BcmTestPlatform { private: void setupAsic( - cfg::SwitchType switchType, std::optional switchId, - int16_t switchIndex, - std::optional systemPortRange, - folly::MacAddress& mac, + const cfg::SwitchInfo& switchInfo, std::optional fabricNodeRole) override; // Forbidden copy constructor and assignment operator FakeBcmTestPlatform(FakeBcmTestPlatform const&) = delete; diff --git a/fboss/agent/platforms/wedge/BUCK b/fboss/agent/platforms/wedge/BUCK index 6236cbdd4eba6..1cfc9fd5e2fd0 100644 --- a/fboss/agent/platforms/wedge/BUCK +++ b/fboss/agent/platforms/wedge/BUCK @@ -135,7 +135,6 @@ cpp_library( "//fboss/lib/fpga/facebook/yamp:yamp_base_fpga", "//fboss/lib/fpga/facebook/yamp:yamp_fpga", "//fboss/lib/phy:external_phy", - "//fboss/lib/phy:phy-cpp2-types", "//fboss/lib/phy:phy-management", "//fboss/lib/platforms:product-info", "//fboss/lib/usb:usb-api", @@ -147,21 +146,16 @@ cpp_library( "//folly:memory", "//folly:network_address", "//folly:optional", - "//folly:random", "//folly:range", "//folly:synchronized", - "//folly:utility", "//folly/futures:core", "//folly/gen:base", "//folly/io/async:async_base", - "//folly/io/async:event_base_manager", "//folly/logging:logging", "//folly/testing:test_util", - "//neteng/netwhoami/lib/cpp:recover", "//thrift/lib/cpp/util:enum_utils", ], exported_external_deps = [ - "boost", "gflags", ("boost", None, "boost_container"), ("boost", None, "boost_regex"), @@ -218,7 +212,6 @@ cpp_library( "//fboss/lib/fpga/facebook/yamp:yamp_base_fpga", "//fboss/lib/fpga/facebook/yamp:yamp_fpga", "//fboss/lib/phy:external_phy", - "//fboss/lib/phy:phy-cpp2-types", "//fboss/lib/phy:phy-management", "//fboss/lib/platforms:product-info", "//fboss/lib/usb:usb-api", @@ -230,21 +223,16 @@ cpp_library( "//folly:memory", "//folly:network_address", "//folly:optional", - "//folly:random", "//folly:range", "//folly:synchronized", - "//folly:utility", "//folly/futures:core", "//folly/gen:base", "//folly/io/async:async_base", - "//folly/io/async:event_base_manager", "//folly/logging:logging", "//folly/testing:test_util", - "//neteng/netwhoami/lib/cpp:recover", "//thrift/lib/cpp/util:enum_utils", ], exported_external_deps = [ - "boost", "gflags", ("boost", None, "boost_container"), ("boost", None, "boost_regex"), diff --git a/fboss/agent/platforms/wedge/WedgePlatform.cpp b/fboss/agent/platforms/wedge/WedgePlatform.cpp index 0d4a1f5d0ce0c..aa84997ebf2f8 100644 --- a/fboss/agent/platforms/wedge/WedgePlatform.cpp +++ b/fboss/agent/platforms/wedge/WedgePlatform.cpp @@ -10,7 +10,6 @@ #include "fboss/agent/platforms/wedge/WedgePlatform.h" #include -#include #include "fboss/agent/SysError.h" #include "fboss/agent/hw/bcm/BcmAPI.h" @@ -23,13 +22,10 @@ #include "fboss/agent/platforms/wedge/WedgePort.h" #include "fboss/agent/platforms/wedge/WedgePortMapping.h" #include "fboss/agent/state/Port.h" -#include "fboss/agent/state/SwitchState.h" #include "fboss/lib/platforms/PlatformProductInfo.h" #include "fboss/lib/usb/UsbError.h" #include "fboss/lib/usb/WedgeI2CBus.h" -#include - DEFINE_string( fabric_location, "", diff --git a/fboss/agent/platforms/wedge/WedgePlatformInit.h b/fboss/agent/platforms/wedge/WedgePlatformInit.h index d2b11c1658c90..d60843721ec47 100644 --- a/fboss/agent/platforms/wedge/WedgePlatformInit.h +++ b/fboss/agent/platforms/wedge/WedgePlatformInit.h @@ -14,7 +14,7 @@ namespace facebook::fboss { -class AgentConfig; +struct AgentConfig; class Platform; class WedgePlatform; class PlatformProductInfo; diff --git a/fboss/agent/platforms/wedge/WedgePort.cpp b/fboss/agent/platforms/wedge/WedgePort.cpp index eec2a1ca548a2..da15705b5b154 100644 --- a/fboss/agent/platforms/wedge/WedgePort.cpp +++ b/fboss/agent/platforms/wedge/WedgePort.cpp @@ -10,12 +10,9 @@ #include "fboss/agent/platforms/wedge/WedgePort.h" -#include #include #include -#include -#include "fboss/agent/FbossError.h" #include "fboss/agent/HwSwitch.h" #include "fboss/agent/hw/bcm/BcmPortGroup.h" #include "fboss/agent/platforms/wedge/WedgePlatform.h" diff --git a/fboss/agent/platforms/wedge/WedgeTomahawkPlatform.cpp b/fboss/agent/platforms/wedge/WedgeTomahawkPlatform.cpp index ced4c076d9e70..af885896e2b59 100644 --- a/fboss/agent/platforms/wedge/WedgeTomahawkPlatform.cpp +++ b/fboss/agent/platforms/wedge/WedgeTomahawkPlatform.cpp @@ -24,15 +24,11 @@ WedgeTomahawkPlatform::WedgeTomahawkPlatform( localMac) {} void WedgeTomahawkPlatform::setupAsic( - cfg::SwitchType switchType, std::optional switchId, - int16_t switchIndex, - std::optional systemPortRange, - folly::MacAddress& mac, + const cfg::SwitchInfo& switchInfo, std::optional fabricNodeRole) { CHECK(!fabricNodeRole.has_value()); - asic_ = std::make_unique( - switchType, switchId, switchIndex, systemPortRange, mac); + asic_ = std::make_unique(switchId, switchInfo); } const PortQueue& WedgeTomahawkPlatform::getDefaultPortQueueSettings( diff --git a/fboss/agent/platforms/wedge/WedgeTomahawkPlatform.h b/fboss/agent/platforms/wedge/WedgeTomahawkPlatform.h index e43b98cbc0df5..8be873acf7c42 100644 --- a/fboss/agent/platforms/wedge/WedgeTomahawkPlatform.h +++ b/fboss/agent/platforms/wedge/WedgeTomahawkPlatform.h @@ -48,11 +48,8 @@ class WedgeTomahawkPlatform : public WedgePlatform { private: void setupAsic( - cfg::SwitchType switchType, std::optional switchId, - int16_t switchIndex, - std::optional systemPortRange, - folly::MacAddress& mac, + const cfg::SwitchInfo& switchInfo, std::optional fabricNodeRole) override; std::unique_ptr asic_; }; diff --git a/fboss/agent/platforms/wedge/wedge100/Wedge100Platform.cpp b/fboss/agent/platforms/wedge/wedge100/Wedge100Platform.cpp index c1b8b8cb00cfd..b1c82da2a3615 100644 --- a/fboss/agent/platforms/wedge/wedge100/Wedge100Platform.cpp +++ b/fboss/agent/platforms/wedge/wedge100/Wedge100Platform.cpp @@ -18,14 +18,10 @@ #include "fboss/agent/platforms/wedge/wedge100/Wedge100Port.h" #include "fboss/lib/platforms/PlatformProductInfo.h" #include "fboss/lib/usb/Wedge100I2CBus.h" -#include "fboss/qsfp_service/platforms/wedge/WedgeI2CBusLock.h" -#include #include #include -#include - namespace facebook::fboss { Wedge100Platform::Wedge100Platform( diff --git a/fboss/agent/platforms/wedge/wedge100/Wedge100Port.cpp b/fboss/agent/platforms/wedge/wedge100/Wedge100Port.cpp index 49aafdf72885b..205ab62d1bb6d 100644 --- a/fboss/agent/platforms/wedge/wedge100/Wedge100Port.cpp +++ b/fboss/agent/platforms/wedge/wedge100/Wedge100Port.cpp @@ -10,7 +10,6 @@ #include "fboss/agent/platforms/wedge/wedge100/Wedge100Port.h" #include "fboss/agent/platforms/wedge/wedge100/Wedge100Platform.h" -#include "fboss/lib/phy/gen-cpp2/phy_types.h" namespace facebook::fboss { diff --git a/fboss/agent/platforms/wedge/wedge40/Wedge40Platform.cpp b/fboss/agent/platforms/wedge/wedge40/Wedge40Platform.cpp index db7d509dbd1a9..4482674e270c5 100644 --- a/fboss/agent/platforms/wedge/wedge40/Wedge40Platform.cpp +++ b/fboss/agent/platforms/wedge/wedge40/Wedge40Platform.cpp @@ -30,15 +30,11 @@ Wedge40Platform::Wedge40Platform( localMac) {} void Wedge40Platform::setupAsic( - cfg::SwitchType switchType, std::optional switchId, - int16_t switchIndex, - std::optional systemPortRange, - folly::MacAddress& mac, + const cfg::SwitchInfo& switchInfo, std::optional fabricNodeRole) { CHECK(!fabricNodeRole.has_value()); - asic_ = std::make_unique( - switchType, switchId, switchIndex, systemPortRange, mac); + asic_ = std::make_unique(switchId, switchInfo); } std::unique_ptr Wedge40Platform::createPortMapping() { diff --git a/fboss/agent/platforms/wedge/wedge40/Wedge40Platform.h b/fboss/agent/platforms/wedge/wedge40/Wedge40Platform.h index c99695c9e89f6..8b0f0e50d195f 100644 --- a/fboss/agent/platforms/wedge/wedge40/Wedge40Platform.h +++ b/fboss/agent/platforms/wedge/wedge40/Wedge40Platform.h @@ -52,11 +52,8 @@ class Wedge40Platform : public WedgePlatform { private: void setupAsic( - cfg::SwitchType switchType, std::optional switchId, - int16_t switchIndex, - std::optional systemPortRange, - folly::MacAddress& mac, + const cfg::SwitchInfo& switchInfo, std::optional fabricNodeRole) override; Wedge40Platform(Wedge40Platform const&) = delete; Wedge40Platform& operator=(Wedge40Platform const&) = delete; diff --git a/fboss/agent/rib/BUCK b/fboss/agent/rib/BUCK index eb40f1eb64b36..731b1fa1996f9 100644 --- a/fboss/agent/rib/BUCK +++ b/fboss/agent/rib/BUCK @@ -7,8 +7,8 @@ cpp_library( name = "rib_header", headers = glob(["*.h"]), exported_deps = [ - "//fboss/agent:fboss-event-base", "//fboss/agent:fboss-types", + "//fboss/agent:fboss_event_base", "//fboss/agent:switch_config-cpp2-types", "//fboss/agent/if:ctrl-cpp2-services", "//fboss/agent/state:state", @@ -35,8 +35,8 @@ cpp_library( "//fboss/agent:address_utils", "//fboss/agent:constants", "//fboss/agent:fboss-error", - "//fboss/agent:fboss-event-base", "//fboss/agent:fboss-types", + "//fboss/agent:fboss_event_base", "//fboss/agent:switch_config-cpp2-types", "//fboss/agent:utils", "//fboss/agent/if:ctrl-cpp2-services", diff --git a/fboss/agent/state/AclEntry.cpp b/fboss/agent/state/AclEntry.cpp index 6d5818af68c56..b7078a57d1f85 100644 --- a/fboss/agent/state/AclEntry.cpp +++ b/fboss/agent/state/AclEntry.cpp @@ -146,6 +146,6 @@ AclEntry::AclEntry(int priority, std::string&& name) { set(std::move(name)); } -template class ThriftStructNode; +template struct ThriftStructNode; } // namespace facebook::fboss diff --git a/fboss/agent/state/AclMap.cpp b/fboss/agent/state/AclMap.cpp index 95e59417a930d..15a4db65955f7 100644 --- a/fboss/agent/state/AclMap.cpp +++ b/fboss/agent/state/AclMap.cpp @@ -47,7 +47,7 @@ MultiSwitchAclMap* MultiSwitchAclMap::modify( return ptr; } -template class ThriftMapNode; +template struct ThriftMapNode; FBOSS_INSTANTIATE_NODE_MAP(PrioAclMap, PrioAclMapTraits); template class NodeMapDelta< diff --git a/fboss/agent/state/AclTable.cpp b/fboss/agent/state/AclTable.cpp index 6ae8a0158d3c4..ee606ed87e01b 100644 --- a/fboss/agent/state/AclTable.cpp +++ b/fboss/agent/state/AclTable.cpp @@ -11,6 +11,7 @@ #include #include #include +#include "fboss/agent/gen-cpp2/switch_config_constants.h" #include "fboss/agent/state/AclEntry.h" #include "fboss/agent/state/NodeBase-defs.h" #include "fboss/agent/state/StateUtils.h" @@ -21,7 +22,6 @@ using folly::IPAddress; namespace { // Same Priority and name as the default table created */ constexpr auto kAclTablePriority = 0; -constexpr auto kAclTable1 = "AclTable1"; } // namespace namespace facebook::fboss { @@ -35,11 +35,11 @@ std::shared_ptr AclTable::createDefaultAclTableFromThrift( std::map const& thriftMap) { state::AclTableFields data{}; data.priority() = kAclTablePriority; - data.id() = kAclTable1; + data.id() = cfg::switch_config_constants::DEFAULT_INGRESS_ACL_TABLE(); data.aclMap() = thriftMap; return std::make_shared(data); } -template class ThriftStructNode; +template struct ThriftStructNode; } // namespace facebook::fboss diff --git a/fboss/agent/state/AclTableGroup.cpp b/fboss/agent/state/AclTableGroup.cpp index c8461fc9cb43e..80f0e09f2a739 100644 --- a/fboss/agent/state/AclTableGroup.cpp +++ b/fboss/agent/state/AclTableGroup.cpp @@ -8,20 +8,8 @@ * */ #include "fboss/agent/state/AclTableGroup.h" -#include -#include -#include "fboss/agent/state/AclEntry.h" -#include "fboss/agent/state/AclTable.h" -#include "fboss/agent/state/AclTableMap.h" -#include "fboss/agent/state/NodeBase-defs.h" -#include "fboss/agent/state/StateUtils.h" -using apache::thrift::TEnumTraits; -using folly::IPAddress; - -namespace { -constexpr auto kAclTableGroupName = "ingress-ACL-Table-Group"; -} // namespace +#include "fboss/agent/gen-cpp2/switch_config_constants.h" namespace facebook::fboss { @@ -35,10 +23,10 @@ AclTableGroup::createDefaultAclTableGroupFromThrift( auto aclTableMap = AclTableMap::createDefaultAclTableMapFromThrift(aclMap); state::AclTableGroupFields data{}; data.stage() = cfg::AclStage::INGRESS; - data.name() = kAclTableGroupName; + data.name() = cfg::switch_config_constants::DEFAULT_INGRESS_ACL_TABLE_GROUP(); data.aclTableMap() = aclTableMap->toThrift(); return std::make_shared(data); } -template class ThriftStructNode; +template struct ThriftStructNode; } // namespace facebook::fboss diff --git a/fboss/agent/state/AclTableGroupMap.cpp b/fboss/agent/state/AclTableGroupMap.cpp index 8b76a84e20a2f..3f60e8fa3a688 100644 --- a/fboss/agent/state/AclTableGroupMap.cpp +++ b/fboss/agent/state/AclTableGroupMap.cpp @@ -41,6 +41,6 @@ std::shared_ptr AclTableGroupMap::getDefaultAclTableGroupMap( } } -template class ThriftMapNode; +template struct ThriftMapNode; } // namespace facebook::fboss diff --git a/fboss/agent/state/AclTableMap.cpp b/fboss/agent/state/AclTableMap.cpp index 3a07ab98c1dce..178c36a1c4776 100644 --- a/fboss/agent/state/AclTableMap.cpp +++ b/fboss/agent/state/AclTableMap.cpp @@ -14,10 +14,6 @@ #include "fboss/agent/state/SwitchState.h" -namespace { -constexpr auto kAclTable1 = "AclTable1"; -} - namespace facebook::fboss { AclTableMap::AclTableMap() = default; @@ -33,8 +29,11 @@ std::shared_ptr AclTableMap::createDefaultAclTableMapFromThrift( std::shared_ptr AclTableMap::getDefaultAclTableMap( std::map const& thriftMap) { - if (thriftMap.find(kAclTable1) != thriftMap.end()) { - auto aclTable = thriftMap.at(kAclTable1); + if (thriftMap.find( + cfg::switch_config_constants::DEFAULT_INGRESS_ACL_TABLE()) != + thriftMap.end()) { + auto aclTable = + thriftMap.at(cfg::switch_config_constants::DEFAULT_INGRESS_ACL_TABLE()); return AclTable::getDefaultAclTable(aclTable); } else { XLOG(ERR) << "AclTableMap missing from warmboot state file"; @@ -42,6 +41,6 @@ std::shared_ptr AclTableMap::getDefaultAclTableMap( } } -template class ThriftMapNode; +template struct ThriftMapNode; } // namespace facebook::fboss diff --git a/fboss/agent/state/AggregatePort.cpp b/fboss/agent/state/AggregatePort.cpp index 150ad4dbdc72c..7040ad129235c 100644 --- a/fboss/agent/state/AggregatePort.cpp +++ b/fboss/agent/state/AggregatePort.cpp @@ -173,6 +173,6 @@ bool AggregatePort::isUp() const { return forwardingSubportCount() >= getMinimumLinkCount(); } -template class ThriftStructNode; +template struct ThriftStructNode; } // namespace facebook::fboss diff --git a/fboss/agent/state/AggregatePortMap.cpp b/fboss/agent/state/AggregatePortMap.cpp index 3ca7e5d6c96c5..64d8bdddd7f12 100644 --- a/fboss/agent/state/AggregatePortMap.cpp +++ b/fboss/agent/state/AggregatePortMap.cpp @@ -47,6 +47,6 @@ MultiSwitchAggregatePortMap::getAggregatePortForPort(PortID port) const { return nullptr; } -template class ThriftMapNode; +template struct ThriftMapNode; } // namespace facebook::fboss diff --git a/fboss/agent/state/BufferPoolConfig.cpp b/fboss/agent/state/BufferPoolConfig.cpp index e93c2ecd6ec2f..403f5910e034a 100644 --- a/fboss/agent/state/BufferPoolConfig.cpp +++ b/fboss/agent/state/BufferPoolConfig.cpp @@ -12,6 +12,6 @@ namespace facebook::fboss { -template class ThriftStructNode; +template struct ThriftStructNode; } // namespace facebook::fboss diff --git a/fboss/agent/state/BufferPoolConfigMap.cpp b/fboss/agent/state/BufferPoolConfigMap.cpp index b8b1aab18b964..73e5fe7901b7d 100644 --- a/fboss/agent/state/BufferPoolConfigMap.cpp +++ b/fboss/agent/state/BufferPoolConfigMap.cpp @@ -20,6 +20,6 @@ MultiSwitchBufferPoolCfgMap* MultiSwitchBufferPoolCfgMap::modify( return SwitchState::modify(state); } -template class ThriftMapNode; +template struct ThriftMapNode; } // namespace facebook::fboss diff --git a/fboss/agent/state/ControlPlane.cpp b/fboss/agent/state/ControlPlane.cpp index 727befbd1065c..0d187ab643179 100644 --- a/fboss/agent/state/ControlPlane.cpp +++ b/fboss/agent/state/ControlPlane.cpp @@ -51,6 +51,6 @@ MultiControlPlane* MultiControlPlane::modify( return ptr; } -template class ThriftStructNode; +template struct ThriftStructNode; } // namespace facebook::fboss diff --git a/fboss/agent/state/ControlPlane.h b/fboss/agent/state/ControlPlane.h index 678285f5efca0..dbca9fbfa38e9 100644 --- a/fboss/agent/state/ControlPlane.h +++ b/fboss/agent/state/ControlPlane.h @@ -56,6 +56,17 @@ class ControlPlane set(std::move(queuesThrift)); } + const auto& getVoqs() const { + return cref(); + } + void resetVoqs(QueueConfig& voqs) { + std::vector voqsThrift{}; + for (const auto& voq : voqs) { + voqsThrift.push_back(voq->toThrift()); + } + set(std::move(voqsThrift)); + } + const auto& getRxReasonToQueue() const { return cref(); } @@ -80,6 +91,11 @@ class ControlPlane return queues->impl(); } + const QueueConfig& getVoqsConfig() const { + const auto& voqs = getVoqs(); + return voqs->impl(); + } + static cfg::PacketRxReasonToQueue makeRxReasonToQueueEntry( cfg::PacketRxReason reason, uint16_t queueId); diff --git a/fboss/agent/state/DsfNode.cpp b/fboss/agent/state/DsfNode.cpp index f5de3e7c372b6..b2562bbbe2190 100644 --- a/fboss/agent/state/DsfNode.cpp +++ b/fboss/agent/state/DsfNode.cpp @@ -138,5 +138,5 @@ std::optional DsfNode::getGlobalSystemPortOffset() const { } return ret; } -template class ThriftStructNode; +template struct ThriftStructNode; } // namespace facebook::fboss diff --git a/fboss/agent/state/DsfNodeMap.cpp b/fboss/agent/state/DsfNodeMap.cpp index 40ff59967c794..04390aa22dcab 100644 --- a/fboss/agent/state/DsfNodeMap.cpp +++ b/fboss/agent/state/DsfNodeMap.cpp @@ -12,5 +12,5 @@ MultiSwitchDsfNodeMap* MultiSwitchDsfNodeMap::modify( return SwitchState::modify(state); } -template class ThriftMapNode; +template struct ThriftMapNode; } // namespace facebook::fboss diff --git a/fboss/agent/state/FlowletSwitchingConfig.cpp b/fboss/agent/state/FlowletSwitchingConfig.cpp index d004bb174c3b1..80d526ea127d5 100644 --- a/fboss/agent/state/FlowletSwitchingConfig.cpp +++ b/fboss/agent/state/FlowletSwitchingConfig.cpp @@ -13,7 +13,7 @@ namespace facebook::fboss { -template class ThriftStructNode< +template struct ThriftStructNode< FlowletSwitchingConfig, cfg::FlowletSwitchingConfig>; } // namespace facebook::fboss diff --git a/fboss/agent/state/ForwardingInformationBase.cpp b/fboss/agent/state/ForwardingInformationBase.cpp index 6a720ba2974a0..a096461f90b6f 100644 --- a/fboss/agent/state/ForwardingInformationBase.cpp +++ b/fboss/agent/state/ForwardingInformationBase.cpp @@ -66,10 +66,10 @@ void ForwardingInformationBase::setDisableTTLDecrement( } } -template class ThriftMapNode< +template struct ThriftMapNode< ForwardingInformationBase, ForwardingInformationBaseTraits>; -template class ThriftMapNode< +template struct ThriftMapNode< ForwardingInformationBase, ForwardingInformationBaseTraits>; template class ForwardingInformationBase; diff --git a/fboss/agent/state/ForwardingInformationBaseContainer.cpp b/fboss/agent/state/ForwardingInformationBaseContainer.cpp index 7435b15e98945..2e072db3ac064 100644 --- a/fboss/agent/state/ForwardingInformationBaseContainer.cpp +++ b/fboss/agent/state/ForwardingInformationBaseContainer.cpp @@ -55,7 +55,7 @@ ForwardingInformationBaseContainer* ForwardingInformationBaseContainer::modify( return rtn; } -template class ThriftStructNode< +template struct ThriftStructNode< ForwardingInformationBaseContainer, state::FibContainerFields>; diff --git a/fboss/agent/state/ForwardingInformationBaseMap.cpp b/fboss/agent/state/ForwardingInformationBaseMap.cpp index 6d8918d9dd7ae..627ac3c7ea2de 100644 --- a/fboss/agent/state/ForwardingInformationBaseMap.cpp +++ b/fboss/agent/state/ForwardingInformationBaseMap.cpp @@ -101,7 +101,7 @@ MultiSwitchForwardingInformationBaseMap::getRouteCount() const { return std::make_pair(v4Count, v6Count); } -template class ThriftMapNode< +template struct ThriftMapNode< ForwardingInformationBaseMap, ForwardingInformationBaseMapTraits>; diff --git a/fboss/agent/state/Interface.cpp b/fboss/agent/state/Interface.cpp index 621be5aba998b..7cb771847c7c4 100644 --- a/fboss/agent/state/Interface.cpp +++ b/fboss/agent/state/Interface.cpp @@ -161,6 +161,6 @@ Interface* Interface::modify(std::shared_ptr* state) { return ptr; } -template class ThriftStructNode; +template struct ThriftStructNode; } // namespace facebook::fboss diff --git a/fboss/agent/state/InterfaceMap.cpp b/fboss/agent/state/InterfaceMap.cpp index d1a3c6807f9b7..8c059002098e6 100644 --- a/fboss/agent/state/InterfaceMap.cpp +++ b/fboss/agent/state/InterfaceMap.cpp @@ -136,6 +136,6 @@ const std::shared_ptr MultiSwitchInterfaceMap::getInterface( } throw FbossError("No interface with ip : ", ip); } -template class ThriftMapNode; +template struct ThriftMapNode; } // namespace facebook::fboss diff --git a/fboss/agent/state/IpTunnel.cpp b/fboss/agent/state/IpTunnel.cpp index 9a92632d63568..751f21b691606 100644 --- a/fboss/agent/state/IpTunnel.cpp +++ b/fboss/agent/state/IpTunnel.cpp @@ -4,6 +4,6 @@ namespace facebook::fboss { -template class ThriftStructNode; +template struct ThriftStructNode; } // namespace facebook::fboss diff --git a/fboss/agent/state/IpTunnelMap.cpp b/fboss/agent/state/IpTunnelMap.cpp index e128504c280a7..b112f3025e476 100644 --- a/fboss/agent/state/IpTunnelMap.cpp +++ b/fboss/agent/state/IpTunnelMap.cpp @@ -29,5 +29,5 @@ MultiSwitchIpTunnelMap* MultiSwitchIpTunnelMap::modify( return SwitchState::modify(state); } -template class ThriftMapNode; +template struct ThriftMapNode; } // namespace facebook::fboss diff --git a/fboss/agent/state/LabelForwardingInformationBase.cpp b/fboss/agent/state/LabelForwardingInformationBase.cpp index 63dd60c6b5282..a1f100a5f3765 100644 --- a/fboss/agent/state/LabelForwardingInformationBase.cpp +++ b/fboss/agent/state/LabelForwardingInformationBase.cpp @@ -45,7 +45,7 @@ MultiLabelForwardingInformationBase::modify( return SwitchState::modify(state); } -template class ThriftMapNode< +template struct ThriftMapNode< LabelForwardingInformationBase, LabelForwardingInformationBaseTraits>; diff --git a/fboss/agent/state/LoadBalancer.cpp b/fboss/agent/state/LoadBalancer.cpp index 69f2ab00ec6f4..6f55395c08506 100644 --- a/fboss/agent/state/LoadBalancer.cpp +++ b/fboss/agent/state/LoadBalancer.cpp @@ -99,6 +99,6 @@ std::shared_ptr LoadBalancer::fromThrift( return std::make_shared(fields); } -template class ThriftStructNode; +template struct ThriftStructNode; } // namespace facebook::fboss diff --git a/fboss/agent/state/LoadBalancerMap.cpp b/fboss/agent/state/LoadBalancerMap.cpp index 42485a472b232..08d7dda816d41 100644 --- a/fboss/agent/state/LoadBalancerMap.cpp +++ b/fboss/agent/state/LoadBalancerMap.cpp @@ -47,6 +47,6 @@ MultiSwitchLoadBalancerMap* MultiSwitchLoadBalancerMap::modify( return ptr; } -template class ThriftMapNode; +template struct ThriftMapNode; } // namespace facebook::fboss diff --git a/fboss/agent/state/MacEntry.cpp b/fboss/agent/state/MacEntry.cpp index c7d655425de55..78792d151f753 100644 --- a/fboss/agent/state/MacEntry.cpp +++ b/fboss/agent/state/MacEntry.cpp @@ -29,6 +29,6 @@ std::string MacEntry::str() const { return os.str(); } -template class ThriftStructNode; +template struct ThriftStructNode; } // namespace facebook::fboss diff --git a/fboss/agent/state/MacTable.cpp b/fboss/agent/state/MacTable.cpp index 88a26f623ed86..eb727efb0dc09 100644 --- a/fboss/agent/state/MacTable.cpp +++ b/fboss/agent/state/MacTable.cpp @@ -63,5 +63,5 @@ void MacTable::updateEntry( updateNode(entry); } -template class ThriftMapNode; +template struct ThriftMapNode; } // namespace facebook::fboss diff --git a/fboss/agent/state/Mirror.cpp b/fboss/agent/state/Mirror.cpp index f91ae5a58472e..453639fb76b66 100644 --- a/fboss/agent/state/Mirror.cpp +++ b/fboss/agent/state/Mirror.cpp @@ -188,6 +188,6 @@ std::optional Mirror::getSamplingRate() const { return std::nullopt; } -template class ThriftStructNode; +template struct ThriftStructNode; } // namespace facebook::fboss diff --git a/fboss/agent/state/MirrorMap.cpp b/fboss/agent/state/MirrorMap.cpp index f12f21cce6edc..3f365b2dc8902 100644 --- a/fboss/agent/state/MirrorMap.cpp +++ b/fboss/agent/state/MirrorMap.cpp @@ -36,6 +36,6 @@ std::shared_ptr MultiSwitchMirrorMap::fromThrift( return mnpuMap; } -template class ThriftMapNode; +template struct ThriftMapNode; } // namespace facebook::fboss diff --git a/fboss/agent/state/Port.cpp b/fboss/agent/state/Port.cpp index b2361e080bb1a..efe6512bc29ac 100644 --- a/fboss/agent/state/Port.cpp +++ b/fboss/agent/state/Port.cpp @@ -101,6 +101,6 @@ void Port::removeError(PortError error) { set(errors); } -template class ThriftStructNode; +template struct ThriftStructNode; } // namespace facebook::fboss diff --git a/fboss/agent/state/PortMap.cpp b/fboss/agent/state/PortMap.cpp index 553ce3ec881c7..5d82e7308d911 100644 --- a/fboss/agent/state/PortMap.cpp +++ b/fboss/agent/state/PortMap.cpp @@ -45,6 +45,6 @@ MultiSwitchPortMap* MultiSwitchPortMap::modify( return SwitchState::modify(state); } -template class ThriftMapNode; +template struct ThriftMapNode; } // namespace facebook::fboss diff --git a/fboss/agent/state/PortPgConfig.cpp b/fboss/agent/state/PortPgConfig.cpp index e5e2c65b5d2f9..509d3b11ee25f 100644 --- a/fboss/agent/state/PortPgConfig.cpp +++ b/fboss/agent/state/PortPgConfig.cpp @@ -16,6 +16,6 @@ namespace facebook::fboss { -template class ThriftStructNode; +template struct ThriftStructNode; } // namespace facebook::fboss diff --git a/fboss/agent/state/QcmConfig.cpp b/fboss/agent/state/QcmConfig.cpp index 484df93825104..1d28d73e71bb4 100644 --- a/fboss/agent/state/QcmConfig.cpp +++ b/fboss/agent/state/QcmConfig.cpp @@ -16,6 +16,6 @@ namespace facebook::fboss { -template class ThriftStructNode; +template struct ThriftStructNode; } // namespace facebook::fboss diff --git a/fboss/agent/state/QosPolicy.cpp b/fboss/agent/state/QosPolicy.cpp index 8a0f285844945..673523d26d0d2 100644 --- a/fboss/agent/state/QosPolicy.cpp +++ b/fboss/agent/state/QosPolicy.cpp @@ -46,6 +46,6 @@ ExpMap::ExpMap(std::vector cfg) { } } -template class ThriftStructNode; +template struct ThriftStructNode; } // namespace facebook::fboss diff --git a/fboss/agent/state/QosPolicyMap.cpp b/fboss/agent/state/QosPolicyMap.cpp index 22aa0394141b1..9db2e122f92cd 100644 --- a/fboss/agent/state/QosPolicyMap.cpp +++ b/fboss/agent/state/QosPolicyMap.cpp @@ -24,6 +24,6 @@ MultiSwitchQosPolicyMap* MultiSwitchQosPolicyMap::modify( return SwitchState::modify(state); } -template class ThriftMapNode; +template struct ThriftMapNode; } // namespace facebook::fboss diff --git a/fboss/agent/state/SflowCollector.cpp b/fboss/agent/state/SflowCollector.cpp index 8904a0f094587..ade265415112f 100644 --- a/fboss/agent/state/SflowCollector.cpp +++ b/fboss/agent/state/SflowCollector.cpp @@ -23,5 +23,5 @@ SflowCollector::SflowCollector(std::string ip, uint16_t port) { ref()->ref() = port; } -template class ThriftStructNode; +template struct ThriftStructNode; } // namespace facebook::fboss diff --git a/fboss/agent/state/SflowCollectorMap.cpp b/fboss/agent/state/SflowCollectorMap.cpp index 3a1005c1be669..0565be15b6d5c 100644 --- a/fboss/agent/state/SflowCollectorMap.cpp +++ b/fboss/agent/state/SflowCollectorMap.cpp @@ -15,7 +15,7 @@ namespace facebook::fboss { -template class ThriftMapNode; +template struct ThriftMapNode; MultiSwitchSflowCollectorMap* MultiSwitchSflowCollectorMap::modify( std::shared_ptr* state) { diff --git a/fboss/agent/state/StateDelta.cpp b/fboss/agent/state/StateDelta.cpp index 9f894ea9ef776..fa780909fd43e 100644 --- a/fboss/agent/state/StateDelta.cpp +++ b/fboss/agent/state/StateDelta.cpp @@ -340,23 +340,25 @@ bool isStateDeltaEmpty(const StateDelta& stateDelta) { [&empty, &stateDelta](auto* child, auto name) { using ChildType = std::decay_t>; using Name = std::decay_t; - bool isEmpty = true; - if constexpr ( - std::is_same_v || - std::is_same_v) { - isEmpty = (DeltaFunctions::isEmpty(ThriftMapDelta( - stateDelta.oldState()->get().get(), - stateDelta.newState()->get().get()))); - } else { - isEmpty = (DeltaFunctions::isEmpty(MultiSwitchMapDelta( - stateDelta.oldState()->get().get(), - stateDelta.newState()->get().get()))); + if constexpr (thrift_cow::ResolveMemberType::value) { + bool isEmpty = true; + if constexpr ( + std::is_same_v || + std::is_same_v) { + isEmpty = (DeltaFunctions::isEmpty(ThriftMapDelta( + stateDelta.oldState()->get().get(), + stateDelta.newState()->get().get()))); + } else { + isEmpty = (DeltaFunctions::isEmpty(MultiSwitchMapDelta( + stateDelta.oldState()->get().get(), + stateDelta.newState()->get().get()))); + } + if (!isEmpty) { + XLOG(INFO) << "Delta for " << utility::TagName::value() + << " is not empty"; + } + empty &= isEmpty; } - if (!isEmpty) { - XLOG(INFO) << "Delta for " << utility::TagName::value() - << " is not empty"; - } - empty &= isEmpty; }); return empty; } diff --git a/fboss/agent/state/SwitchSettings.cpp b/fboss/agent/state/SwitchSettings.cpp index 68737c27a62ba..8efc02844c9bb 100644 --- a/fboss/agent/state/SwitchSettings.cpp +++ b/fboss/agent/state/SwitchSettings.cpp @@ -87,6 +87,6 @@ bool SwitchSettings::vlansSupported() const { return !getSwitchIdsOfType(cfg::SwitchType::NPU).empty(); } -template class ThriftStructNode; +template struct ThriftStructNode; } // namespace facebook::fboss diff --git a/fboss/agent/state/SwitchSettings.h b/fboss/agent/state/SwitchSettings.h index 46bd0ffa9aef8..4208d2e090596 100644 --- a/fboss/agent/state/SwitchSettings.h +++ b/fboss/agent/state/SwitchSettings.h @@ -192,7 +192,15 @@ class SwitchSettings bool vlansSupported() const; bool isSwitchDrained() const { - return getActualSwitchDrainState() == cfg::SwitchDrainState::DRAINED; + /* + * DRAINED vs. DRAINED_DUE_TO_ASIC_ERROR is a distinction exposed by + * SwSwitch to Thrift/CLI to provide additional info about reason for + * DRAIN. From the device standpoint, both mean that the device is + * DRAINED. + */ + return getActualSwitchDrainState() == cfg::SwitchDrainState::DRAINED || + getActualSwitchDrainState() == + cfg::SwitchDrainState::DRAINED_DUE_TO_ASIC_ERROR; } cfg::SwitchDrainState getSwitchDrainState() const { @@ -645,6 +653,39 @@ class SwitchSettings } } + std::optional getConditionalEntropyRehashPeriodUS() const { + if (auto conditionalEntropyRehashPeriodUS = + cref()) { + return conditionalEntropyRehashPeriodUS->toThrift(); + } + return std::nullopt; + } + + void setConditionalEntropyRehashPeriodUS( + std::optional conditionalEntropyRehashPeriodUS) { + if (!conditionalEntropyRehashPeriodUS) { + ref().reset(); + } else { + set( + *conditionalEntropyRehashPeriodUS); + } + } + + std::optional getFirmwarePath() const { + if (auto firmwarePathToRet = cref()) { + return firmwarePathToRet->toThrift(); + } + return std::nullopt; + } + + void setFirmwarePath(const std::optional& newFirmwarePath) { + if (!newFirmwarePath) { + ref().reset(); + } else { + set(*newFirmwarePath); + } + } + SwitchSettings* modify(std::shared_ptr* state); private: diff --git a/fboss/agent/state/SwitchState.cpp b/fboss/agent/state/SwitchState.cpp index 9fec05ad643ec..651f56b4ca204 100644 --- a/fboss/agent/state/SwitchState.cpp +++ b/fboss/agent/state/SwitchState.cpp @@ -846,6 +846,6 @@ template MultiSwitchPortFlowletCfgMap* SwitchState::modify< template MultiSwitchDsfNodeMap* SwitchState::modify< switch_state_tags::dsfNodesMap>(std::shared_ptr*); -template class ThriftStructNode; +template struct ThriftStructNode; } // namespace facebook::fboss diff --git a/fboss/agent/state/SystemPort.cpp b/fboss/agent/state/SystemPort.cpp index 1068083c3e34e..e6e0d0130696f 100644 --- a/fboss/agent/state/SystemPort.cpp +++ b/fboss/agent/state/SystemPort.cpp @@ -11,6 +11,6 @@ namespace facebook::fboss { -template class ThriftStructNode; +template struct ThriftStructNode; } // namespace facebook::fboss diff --git a/fboss/agent/state/SystemPortMap.cpp b/fboss/agent/state/SystemPortMap.cpp index 52e588620e5ca..69823fe34001e 100644 --- a/fboss/agent/state/SystemPortMap.cpp +++ b/fboss/agent/state/SystemPortMap.cpp @@ -72,5 +72,5 @@ MultiSwitchSystemPortMap* MultiSwitchSystemPortMap::modify( } } -template class ThriftMapNode; +template struct ThriftMapNode; } // namespace facebook::fboss diff --git a/fboss/agent/state/TeFlowTable.cpp b/fboss/agent/state/TeFlowTable.cpp index 5083ea92b28a7..a6282b1a01f3d 100644 --- a/fboss/agent/state/TeFlowTable.cpp +++ b/fboss/agent/state/TeFlowTable.cpp @@ -205,6 +205,6 @@ MultiTeFlowTable* MultiTeFlowTable::modify( return ptr; } -template class ThriftMapNode; +template struct ThriftMapNode; } // namespace facebook::fboss diff --git a/fboss/agent/state/Transceiver.cpp b/fboss/agent/state/Transceiver.cpp index a10c936c43e43..9830fc0cf3771 100644 --- a/fboss/agent/state/Transceiver.cpp +++ b/fboss/agent/state/Transceiver.cpp @@ -62,5 +62,5 @@ TransceiverSpec::toPlatformPortConfigOverrideFactor() const { return factor; } -template class ThriftStructNode; +template struct ThriftStructNode; } // namespace facebook::fboss diff --git a/fboss/agent/state/TransceiverMap.cpp b/fboss/agent/state/TransceiverMap.cpp index 948e047f349de..a2143e129c417 100644 --- a/fboss/agent/state/TransceiverMap.cpp +++ b/fboss/agent/state/TransceiverMap.cpp @@ -24,6 +24,6 @@ MultiSwitchTransceiverMap* MultiSwitchTransceiverMap::modify( return SwitchState::modify(state); } -template class ThriftMapNode; +template struct ThriftMapNode; } // namespace facebook::fboss diff --git a/fboss/agent/state/UdfConfig.cpp b/fboss/agent/state/UdfConfig.cpp index 97a355574260e..e63b7bd4c353c 100644 --- a/fboss/agent/state/UdfConfig.cpp +++ b/fboss/agent/state/UdfConfig.cpp @@ -13,5 +13,5 @@ namespace facebook::fboss { -template class ThriftStructNode; +template struct ThriftStructNode; } // namespace facebook::fboss diff --git a/fboss/agent/state/UdfGroup.cpp b/fboss/agent/state/UdfGroup.cpp index c54c70cdb10b4..5d49e148072ac 100644 --- a/fboss/agent/state/UdfGroup.cpp +++ b/fboss/agent/state/UdfGroup.cpp @@ -67,5 +67,5 @@ void UdfGroup::setUdfPacketMatcherIds( set(matcherIds); } -template class ThriftStructNode; +template struct ThriftStructNode; } // namespace facebook::fboss diff --git a/fboss/agent/state/UdfGroupMap.cpp b/fboss/agent/state/UdfGroupMap.cpp index ef7791feee9b3..500c3f6dc177e 100644 --- a/fboss/agent/state/UdfGroupMap.cpp +++ b/fboss/agent/state/UdfGroupMap.cpp @@ -14,6 +14,6 @@ void UdfGroupMap::addUdfGroup(const std::shared_ptr& udfGroup) { return addNode(udfGroup); } -template class ThriftMapNode; +template struct ThriftMapNode; } // namespace facebook::fboss diff --git a/fboss/agent/state/UdfPacketMatcher.cpp b/fboss/agent/state/UdfPacketMatcher.cpp index 0843693c5ad9c..88f823744788a 100644 --- a/fboss/agent/state/UdfPacketMatcher.cpp +++ b/fboss/agent/state/UdfPacketMatcher.cpp @@ -62,5 +62,5 @@ void UdfPacketMatcher::setUdfL4DstPort(std::optional port) { } } -template class ThriftStructNode; +template struct ThriftStructNode; } // namespace facebook::fboss diff --git a/fboss/agent/state/UdfPacketMatcherMap.cpp b/fboss/agent/state/UdfPacketMatcherMap.cpp index 5b45bc261175b..6bf012a4d2354 100644 --- a/fboss/agent/state/UdfPacketMatcherMap.cpp +++ b/fboss/agent/state/UdfPacketMatcherMap.cpp @@ -15,6 +15,6 @@ void UdfPacketMatcherMap::addUdfPacketMatcher( return addNode(udfPacketMatcher); } -template class ThriftMapNode; +template struct ThriftMapNode; } // namespace facebook::fboss diff --git a/fboss/agent/state/Vlan.cpp b/fboss/agent/state/Vlan.cpp index c0a5293bc88c9..7185271ba31d0 100644 --- a/fboss/agent/state/Vlan.cpp +++ b/fboss/agent/state/Vlan.cpp @@ -81,6 +81,6 @@ void Vlan::addPort(PortID id, bool tagged) { ref()->emplace(id, tagged); } -template class ThriftStructNode; +template struct ThriftStructNode; } // namespace facebook::fboss diff --git a/fboss/agent/state/tests/AclGroupTests.cpp b/fboss/agent/state/tests/AclGroupTests.cpp index 6912786ecda51..13866428452da 100644 --- a/fboss/agent/state/tests/AclGroupTests.cpp +++ b/fboss/agent/state/tests/AclGroupTests.cpp @@ -19,6 +19,8 @@ #include "fboss/agent/state/SwitchState.h" #include "fboss/agent/test/TestUtils.h" +#include "fboss/agent/gen-cpp2/switch_config_constants.h" + #include using namespace facebook::fboss; @@ -40,14 +42,12 @@ const uint8_t kDscpVal4 = 4; const std::string kTable1 = "table1"; const std::string kTable2 = "table2"; const std::string kTable3 = "table3"; -const std::string kAclTable1 = "AclTable1"; const cfg::AclStage kAclStage1 = cfg::AclStage::INGRESS; const cfg::AclStage kAclStage2 = cfg::AclStage::INGRESS_MACSEC; const std::string kGroup1 = "group1"; const std::string kGroup2 = "group2"; -const std::string kAclTableGroupName = "ingress-ACL-Table-Group"; const std::string kAcl1a = "acl1a"; const std::string kAcl1b = "acl1b"; @@ -81,7 +81,8 @@ namespace { std::shared_ptr getAclMapFromState( std::shared_ptr state) { - auto aclMap = state->getAclsForTable(kAclStage1, kAclTable1); + auto aclMap = state->getAclsForTable( + kAclStage1, cfg::switch_config_constants::DEFAULT_INGRESS_ACL_TABLE()); EXPECT_NE(nullptr, aclMap); return aclMap; } @@ -443,7 +444,9 @@ TEST(AclGroup, SerializeMultiSwitchAclTableGroupMap) { map1->addEntry(entry2); map1->addEntry(entry3); - auto table1 = std::make_shared(0, kAclTable1); + const std::string table1Name = + cfg::switch_config_constants::DEFAULT_INGRESS_ACL_TABLE(); + auto table1 = std::make_shared(0, table1Name); table1->setAclMap(map1); auto tableMap = std::make_shared(); @@ -451,7 +454,8 @@ TEST(AclGroup, SerializeMultiSwitchAclTableGroupMap) { auto tableGroup = std::make_shared(kAclStage1); tableGroup->setAclTableMap(tableMap); - tableGroup->setName(kAclTableGroupName); + tableGroup->setName( + cfg::switch_config_constants::DEFAULT_INGRESS_ACL_TABLE_GROUP()); auto tableGroups = std::make_shared(); tableGroups->addNode(tableGroup, scope()); diff --git a/fboss/agent/switch_config.thrift b/fboss/agent/switch_config.thrift index 1179cb14427ba..e96f04c087ad6 100644 --- a/fboss/agent/switch_config.thrift +++ b/fboss/agent/switch_config.thrift @@ -369,6 +369,27 @@ struct Mirror { 5: optional i32 samplingRate; } +struct MirrorOnDropReport { + 1: string name; + /* + * Possible options as below: + * 1. Recycle port: MOD packets will be injected back into the pipeline via recycle port. + * 2. Eventor port: MOD packets will be injected back into the pipeline via eventor port. Provides the option to pack multiple MOD packets. + * 3. Front panel Ethernet port: MOD packets will be forwarded out of the specified port. + */ + 2: i32 mirrorPortId; + // Source IP will be populated based on switch IP at runtime, so not configurable. + 3: i16 localSrcPort; + 4: string collectorIp; + 5: i16 collectorPort; + 6: i16 mtu; + // Contents of the dropped packet will be truncated when mirroring. + 7: i16 truncateSize = 128; + 8: byte dscp = 0; + // At most one mirrored packet will be sent per port/PG/VOQ within an interval. Granularity is not configurable as of now. + 9: optional i32 agingIntervalUsecs; +} + /** * The action for an access control entry */ @@ -560,6 +581,7 @@ enum AclTableActionType { MIRROR_INGRESS = 4, MIRROR_EGRESS = 5, SET_USER_DEFINED_TRAP = 6, + DISABLE_ARS_FORWARDING = 7, } enum AclTableQualifier { @@ -973,6 +995,10 @@ typedef string PortFlowletConfigName const i32 DEFAULT_PORT_MTU = 9412; +const string DEFAULT_INGRESS_ACL_TABLE_GROUP = "ingress-ACL-Table-Group"; + +const string DEFAULT_INGRESS_ACL_TABLE = "AclTable1"; + enum PortType { INTERFACE_PORT = 0, FABRIC_PORT = 1, @@ -1157,6 +1183,10 @@ struct Port { 31: Scope scope = Scope.LOCAL; 32: optional PortQueueConfigName portVoqConfigName; + + /* + * DSF Interface node to enable conditional entropy, rotating hash seed periodically to increase entropy. + */ 33: bool conditionalEntropyRehash = false; } @@ -1529,6 +1559,7 @@ enum L2LearningMode { enum SwitchDrainState { UNDRAINED = 0, DRAINED = 1, + DRAINED_DUE_TO_ASIC_ERROR = 2, } /* @@ -1618,6 +1649,8 @@ struct ExactMatchTableConfig { const i16 DEFAULT_FLOWLET_TABLE_SIZE = 4096; const i64 DEFAULT_PORT_ID_RANGE_MIN = 0; const i64 DEFAULT_PORT_ID_RANGE_MAX = 2047; +const i64 DEFAULT_DUAL_STAGE_3Q_2Q_PORT_ID_RANGE_MIN = 0; +const i64 DEFAULT_DUAL_STAGE_3Q_2Q_PORT_ID_RANGE_MAX = 65536; struct SystemPortRanges { 1: list systemPortRanges; @@ -1629,7 +1662,7 @@ struct SwitchInfo { // local switch identifier 3: i16 switchIndex; 4: Range64 portIdRange; - 5: optional Range64 systemPortRange; + 5: optional Range64 systemPortRange_DEPRECATED; 6: optional string switchMac; 7: optional string connectionHandle; 8: SystemPortRanges systemPortRanges; @@ -1717,6 +1750,9 @@ struct SwitchSettings { // SRAM2DRAM threshold on VOQ. Single parameter as of now // controlling both bounds and recovery thresholds. 22: optional i32 voqDramBoundThreshold; + // Conditional Entropy Rehash Period for VOQ devices + 23: optional i32 conditionalEntropyRehashPeriodUS; + 24: optional string firmwarePath; } // Global buffer pool @@ -1812,7 +1848,7 @@ struct DsfNode { 2: i64 switchId; 3: DsfNodeType type; 4: list loopbackIps; - 5: optional Range64 systemPortRange; + 5: optional Range64 systemPortRange_DEPRECATED; 6: optional string nodeMac; 7: AsicType asicType; 8: fboss_common.PlatformType platformType; @@ -2081,9 +2117,6 @@ struct SwitchConfig { 42: optional QcmConfig qcmConfig; 43: optional map> portPgConfigs; 44: optional map bufferPoolConfigs; - // aclTableGroup does not need to be a list at this point, as we only expect to - // support a single group for the foreseeable future. This could be changed to - // list later if the need arises to support multiple groups. 45: optional AclTableGroup aclTableGroup; // agent sdk versions 46: optional SdkVersion sdkVersion; @@ -2099,4 +2132,8 @@ struct SwitchConfig { 53: optional string icmpV4UnavailableSrcAddress; // Overrides the system hostname, useful in ICMP responses 54: optional string hostname; + 55: optional list cpuVoqs; + // list of ACL table groups, prefer this over aclTableGroup, aclTableGroup will be deprecated + 56: optional list aclTableGroups; + 57: list mirrorOnDropReports = []; } diff --git a/fboss/agent/switch_state.thrift b/fboss/agent/switch_state.thrift index 032c7c472c492..7214ceaf4f9fe 100644 --- a/fboss/agent/switch_state.thrift +++ b/fboss/agent/switch_state.thrift @@ -134,6 +134,7 @@ struct PortFields { 52: list activeErrors; 53: switch_config.Scope scope = switch_config.Scope.LOCAL; 54: optional i32 reachabilityGroupId; + // DSF Interface node to enable conditional entropy, rotating hash seed periodically to increase entropy. 55: bool conditionalEntropyRehash = false; } @@ -316,10 +317,25 @@ struct MirrorFields { 15: optional i32 samplingRate; } +struct MirrorOnDropReportFields { + 1: string name; + 2: i32 mirrorPortId; + 3: Address.BinaryAddress localSrcIp; // Populated at runtime + 4: i16 localSrcPort; + 5: Address.BinaryAddress collectorIp; + 6: i16 collectorPort; + 7: i16 mtu; + 8: i16 truncateSize; + 9: byte dscp; + 10: optional i32 agingIntervalUsecs; + 11: string switchMac; // Populated at runtime +} + struct ControlPlaneFields { 1: list queues; 2: list rxReasonToQueue; 3: optional string defaultQosPolicy; + 4: list voqs; } struct PortFlowletFields { @@ -395,6 +411,9 @@ struct SwitchSettingsFields { 45: optional byte sramGlobalFreePercentXonThreshold; 46: optional i16 linkFlowControlCreditThreshold; 47: optional i32 voqDramBoundThreshold; + // Conditional Entropy Rehash Period for VOQ devices + 48: optional i32 conditionalEntropyRehashPeriodUS; + 49: optional string firmwarePath; } struct RoutePrefix { @@ -649,6 +668,10 @@ struct SwitchState { 118: map> interfaceMaps; 119: map> dsfNodesMap; 120: map> portFlowletCfgMaps; + 121: map< + SwitchIdList, + map + > mirrorOnDropReportMaps; // Remote object maps 600: map> remoteSystemPortMaps; 601: map> remoteInterfaceMaps; diff --git a/fboss/agent/test/AgentEnsemble.cpp b/fboss/agent/test/AgentEnsemble.cpp index 8dc3793fe84d0..d8afa13a7322d 100644 --- a/fboss/agent/test/AgentEnsemble.cpp +++ b/fboss/agent/test/AgentEnsemble.cpp @@ -3,7 +3,6 @@ #include "fboss/agent/test/AgentEnsemble.h" #include "fboss/agent/AgentConfig.h" -#include "fboss/agent/SwitchStats.h" #include "fboss/agent/Utils.h" #include "fboss/agent/CommonInit.h" diff --git a/fboss/agent/test/AgentEnsemble.h b/fboss/agent/test/AgentEnsemble.h index 57dc7ce59ae76..4691909d1ec77 100644 --- a/fboss/agent/test/AgentEnsemble.h +++ b/fboss/agent/test/AgentEnsemble.h @@ -138,17 +138,26 @@ class AgentEnsemble : public TestEnsembleIf { cfg::PortType portType, std::optional iPhyFaultStatus = std::nullopt) override { - if (getSw()->getSwitchRunState() >= SwitchRunState::CONFIGURED) { - if (linkToggler_) { - linkToggler_->linkStateChanged(port, up); - } + if (linkToggler_ && + getSw()->getSwitchRunState() >= SwitchRunState::CONFIGURED) { + linkToggler_->linkStateChanged(port, up); getSw()->linkStateChanged(port, up, portType); + } else if ( + !linkToggler_ && + getSw()->getSwitchRunState() >= SwitchRunState::INITIALIZED) { + getSw()->linkStateChanged(port, up, portType); + } else { + XLOG(DBG2) << "Agent Ensemble dropping link state change for port " + << port << " UP:" << up; } } - void linkActiveStateChanged( - const std::map& port2IsActive) override { - getSw()->linkActiveStateChanged(port2IsActive); + void linkActiveStateChangedOrFwIsolated( + const std::map& port2IsActive, + bool fwIsolated, + const std::optional& numActiveFabricPortsAtFwIsolate) override { + getSw()->linkActiveStateChangedOrFwIsolated( + port2IsActive, fwIsolated, numActiveFabricPortsAtFwIsolate); } void linkConnectivityChanged( const std::map& diff --git a/fboss/agent/test/AgentHwTest.cpp b/fboss/agent/test/AgentHwTest.cpp index f2ab6b7ab004f..7fb585b1a8993 100644 --- a/fboss/agent/test/AgentHwTest.cpp +++ b/fboss/agent/test/AgentHwTest.cpp @@ -194,12 +194,6 @@ cfg::SwitchConfig AgentHwTest::initialConfig( ensemble.getSw(), ensemble.masterLogicalPortIds(), true /*interfaceHasSubnet*/); - - if (FLAGS_enable_acl_table_group) { - utility::addAclTableGroup( - &config, cfg::AclStage::INGRESS, utility::getAclTableGroupName()); - utility::addDefaultAclTable(config); - } return config; } diff --git a/fboss/agent/test/AgentIntegrationTestBase.cpp b/fboss/agent/test/AgentIntegrationTestBase.cpp index 5e04ce6f4165e..1d4aadccdcdfd 100644 --- a/fboss/agent/test/AgentIntegrationTestBase.cpp +++ b/fboss/agent/test/AgentIntegrationTestBase.cpp @@ -2,7 +2,6 @@ #include "fboss/agent/test/AgentIntegrationTestBase.h" #include "fboss/agent/AgentConfig.h" -#include "fboss/agent/SwitchIdScopeResolver.h" #include "fboss/agent/gen-cpp2/agent_config_types.h" #include "fboss/agent/hw/switch_asics/HwAsic.h" #include "fboss/agent/hw/test/ConfigFactory.h" diff --git a/fboss/agent/test/AgentWrapperTest.h b/fboss/agent/test/AgentWrapperTest.h index ce7e3608fa83f..cecca70f95552 100644 --- a/fboss/agent/test/AgentWrapperTest.h +++ b/fboss/agent/test/AgentWrapperTest.h @@ -9,7 +9,7 @@ namespace facebook::fboss { class AgentNetWhoAmI; -class AgentConfig; +struct AgentConfig; template class AgentWrapperTest : public ::testing::Test { diff --git a/fboss/agent/test/AlpmUtilsTests.cpp b/fboss/agent/test/AlpmUtilsTests.cpp index 282637fda44b2..40f12b2b7bb39 100644 --- a/fboss/agent/test/AlpmUtilsTests.cpp +++ b/fboss/agent/test/AlpmUtilsTests.cpp @@ -11,7 +11,6 @@ #include #include "fboss/agent/AlpmUtils.h" -#include "fboss/agent/GtestDefs.h" #include "fboss/agent/state/Route.h" #include "fboss/agent/state/RouteTypes.h" diff --git a/fboss/agent/test/BUCK b/fboss/agent/test/BUCK index 94b7e58bbf35a..5c0c85f09f2ff 100644 --- a/fboss/agent/test/BUCK +++ b/fboss/agent/test/BUCK @@ -87,7 +87,6 @@ cpp_unittest( "//fboss/agent:core", "//fboss/agent:fboss-error", "//fboss/agent:fboss-types", - "//fboss/agent:fsdb_helper", "//fboss/agent:gtest_defs", "//fboss/agent:handler", "//fboss/agent:hw_asic_table", @@ -129,14 +128,12 @@ cpp_unittest( "//folly/io:iobuf", "//folly/logging:logging", "//folly/portability:gtest", - "//thrift/lib/cpp/util:enum_utils", "//thrift/lib/cpp2/async:pooled_request_channel", "//thrift/lib/cpp2/async:server_stream", "//thrift/lib/cpp2/protocol:protocol", "//thrift/lib/cpp2/util:util", ], external_deps = [ - "boost", "gflags", ("boost", None, "boost_range"), ], @@ -212,12 +209,8 @@ cpp_library( "//folly:network_address", "//folly:range", "//folly/container:enumerate", - "//folly/json:dynamic", - "//folly/logging:init", "//folly/synchronization:baton", - "//thrift/lib/cpp2/protocol:protocol", ], - exported_external_deps = ["boost"], ) cpp_library( @@ -295,7 +288,6 @@ cpp_library( ":ecmp_helper", ":resourcelibutil", "//fboss/agent:core", - "//fboss/agent:fboss-error", "//fboss/agent:fboss-types", "//fboss/agent:utils", "//fboss/agent/if:ctrl-cpp2-types", @@ -321,9 +313,6 @@ cpp_unittest( "//fboss/agent:apply_thrift_config", "//fboss/agent/hw/mock:mock", ], - external_deps = [ - "gflags", - ], ) cpp_library( @@ -367,9 +356,6 @@ cpp_unittest( ":utils", "//fboss/agent/hw/mock:mock", ], - external_deps = [ - "gflags", - ], ) cpp_library( @@ -495,7 +481,6 @@ cpp_library( "//fboss/agent:agent_config-cpp2-types", "//fboss/agent:load_agent_config", "//fboss/agent:switch_config-cpp2-types", - "//fboss/agent:switchid_scope_resolver", "//fboss/agent/hw/switch_asics:switch_asics", "//fboss/agent/hw/test:config_factory", "//fboss/agent/state:state", @@ -611,11 +596,9 @@ cpp_library( undefined_symbols = True, exported_deps = [ ":multinode_tests_base", - ":resourcelibutil", "//fboss/agent/hw/test:config_factory", "//fboss/agent/hw/test:load_balancer_utils", "//fboss/agent/test/link_tests:macsec_test_utils", - "//fboss/facebook/mka_service/mka_module:mka_structs", "//fboss/lib:common_utils", "//fboss/mka_service/if/facebook:mka_config-cpp2-types", "//fboss/mka_service/if/facebook:mka_service_thrift-cpp2-services", @@ -648,7 +631,6 @@ cpp_library( "//fboss/agent:main-common", "//fboss/agent:packet", "//fboss/agent:platform_config-cpp2-types", - "//fboss/agent:stats", "//fboss/agent:sw_agent_initializer", "//fboss/agent:sw_switch_warmboot_helper", "//fboss/agent:switch_config-cpp2-types", @@ -724,7 +706,6 @@ cpp_library( exported_deps = [ "//fboss/agent:hw_asic_table", "//fboss/agent:hw_switch", - "//fboss/agent:platform_base", "//fboss/agent:switch_config-cpp2-types", "//fboss/agent:utils", "//fboss/agent/state:state", @@ -929,3 +910,13 @@ cpp_library( ("boost", None, "boost_container"), ], ) + +cpp_unittest( + name = "fboss_event_base_test", + srcs = [ + "FbossEventBaseTests.cpp", + ], + deps = [ + "//fboss/agent:fboss_event_base", + ], +) diff --git a/fboss/agent/test/DHCPv4HandlerTest.cpp b/fboss/agent/test/DHCPv4HandlerTest.cpp index 04df4f8f71c41..be1a656e2b424 100644 --- a/fboss/agent/test/DHCPv4HandlerTest.cpp +++ b/fboss/agent/test/DHCPv4HandlerTest.cpp @@ -20,16 +20,13 @@ #include "fboss/agent/TxPacket.h" #include "fboss/agent/hw/mock/MockHwSwitch.h" #include "fboss/agent/hw/mock/MockPlatform.h" -#include "fboss/agent/hw/mock/MockRxPacket.h" #include "fboss/agent/packet/DHCPv4Packet.h" #include "fboss/agent/packet/EthHdr.h" #include "fboss/agent/packet/Ethertype.h" #include "fboss/agent/packet/IPv4Hdr.h" #include "fboss/agent/packet/PktUtil.h" #include "fboss/agent/packet/UDPHeader.h" -#include "fboss/agent/state/ArpEntry.h" #include "fboss/agent/state/ArpResponseTable.h" -#include "fboss/agent/state/ArpTable.h" #include "fboss/agent/state/Interface.h" #include "fboss/agent/state/SwitchState.h" #include "fboss/agent/state/Vlan.h" @@ -38,7 +35,6 @@ #include "fboss/agent/test/HwTestHandle.h" #include "fboss/agent/test/TestUtils.h" -#include #include using namespace facebook::fboss; diff --git a/fboss/agent/test/DsfSubscriberTests.cpp b/fboss/agent/test/DsfSubscriberTests.cpp index 5c6d26021ee3a..10f1a9a29f388 100644 --- a/fboss/agent/test/DsfSubscriberTests.cpp +++ b/fboss/agent/test/DsfSubscriberTests.cpp @@ -16,11 +16,9 @@ #include "fboss/agent/test/TestUtils.h" #include "fboss/fsdb/if/FsdbModel.h" // @manual -#include #include #include -#include #include "fboss/agent/HwSwitchMatcher.h" using namespace facebook::fboss; diff --git a/fboss/agent/test/EncapIndexAllocatorTest.cpp b/fboss/agent/test/EncapIndexAllocatorTest.cpp index ca72712e067ee..67b4da5e9bd8d 100644 --- a/fboss/agent/test/EncapIndexAllocatorTest.cpp +++ b/fboss/agent/test/EncapIndexAllocatorTest.cpp @@ -68,9 +68,11 @@ class EncapIndexAllocatorTest : public ::testing::Test { }; TEST_F(EncapIndexAllocatorTest, unsupportedAsic) { - folly::MacAddress mac; - auto asic = std::make_unique( - cfg::SwitchType::NPU, std::nullopt, 0, std::nullopt, mac); + cfg::SwitchInfo swInfo; + swInfo.switchType() = cfg::SwitchType::NPU; + swInfo.switchIndex() = 0; + swInfo.switchMac() = folly::MacAddress().toString(); + auto asic = std::make_unique(0, swInfo); EXPECT_THROW(allocator.getNextAvailableEncapIdx(nullptr, *asic), FbossError); } diff --git a/fboss/agent/test/FbossEventBaseTests.cpp b/fboss/agent/test/FbossEventBaseTests.cpp new file mode 100644 index 0000000000000..5123c86d59a7d --- /dev/null +++ b/fboss/agent/test/FbossEventBaseTests.cpp @@ -0,0 +1,17 @@ +// (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary. + +#include + +#include "fboss/agent/FbossEventBase.h" + +namespace facebook::fboss { + +TEST(FbossEventBaseTest, VerifyOperDelta) { + FbossEventBase fevb{"test"}; + for (int i = 0; i < 2 * FLAGS_fboss_event_base_queue_limit; i++) { + fevb.runInFbossEventBaseThread([&]() {}); + } + EXPECT_EQ( + fevb.getNotificationQueueSize(), FLAGS_fboss_event_base_queue_limit); +} +} // namespace facebook::fboss diff --git a/fboss/agent/test/FibHelperTests.cpp b/fboss/agent/test/FibHelperTests.cpp index 48e6cf62beb0c..4a4b5cb3517b5 100644 --- a/fboss/agent/test/FibHelperTests.cpp +++ b/fboss/agent/test/FibHelperTests.cpp @@ -14,9 +14,7 @@ #include "fboss/agent/LookupClassRouteUpdater.h" #include "fboss/agent/NeighborUpdater.h" #include "fboss/agent/SwSwitchRouteUpdateWrapper.h" -#include "fboss/agent/state/Port.h" -#include "fboss/agent/state/Vlan.h" #include "fboss/agent/test/HwTestHandle.h" #include "fboss/agent/test/TestUtils.h" diff --git a/fboss/agent/test/ICMPTest.cpp b/fboss/agent/test/ICMPTest.cpp index 770ceacfdd496..40016d30e4c8d 100644 --- a/fboss/agent/test/ICMPTest.cpp +++ b/fboss/agent/test/ICMPTest.cpp @@ -25,10 +25,7 @@ #include "fboss/agent/packet/IPv4Hdr.h" #include "fboss/agent/packet/IPv6Hdr.h" #include "fboss/agent/packet/PktUtil.h" -#include "fboss/agent/state/ArpEntry.h" #include "fboss/agent/state/ArpResponseTable.h" -#include "fboss/agent/state/ArpTable.h" -#include "fboss/agent/state/Interface.h" #include "fboss/agent/state/SwitchState.h" #include "fboss/agent/state/Vlan.h" #include "fboss/agent/state/VlanMap.h" @@ -36,7 +33,6 @@ #include "fboss/agent/test/HwTestHandle.h" #include "fboss/agent/test/TestUtils.h" -#include #include #include #include diff --git a/fboss/agent/test/IPv4Test.cpp b/fboss/agent/test/IPv4Test.cpp index 6818ed15012bb..3cc664f881d4a 100644 --- a/fboss/agent/test/IPv4Test.cpp +++ b/fboss/agent/test/IPv4Test.cpp @@ -20,7 +20,6 @@ #include "fboss/agent/hw/mock/MockRxPacket.h" #include "fboss/agent/packet/PktUtil.h" #include "fboss/agent/state/ArpResponseTable.h" -#include "fboss/agent/state/Interface.h" #include "fboss/agent/state/SwitchState.h" #include "fboss/agent/state/Vlan.h" #include "fboss/agent/state/VlanMap.h" @@ -28,7 +27,6 @@ #include "fboss/agent/test/HwTestHandle.h" #include "fboss/agent/test/TestUtils.h" -#include #include using namespace facebook::fboss; diff --git a/fboss/agent/test/LldpManagerTest.cpp b/fboss/agent/test/LldpManagerTest.cpp index 819a2e79af602..eaa08deea6bc4 100644 --- a/fboss/agent/test/LldpManagerTest.cpp +++ b/fboss/agent/test/LldpManagerTest.cpp @@ -13,7 +13,6 @@ #include #include #include -#include #include "fboss/agent/ArpHandler.h" #include "fboss/agent/FbossError.h" #include "fboss/agent/SwSwitch.h" @@ -21,13 +20,11 @@ #include "fboss/agent/TxPacket.h" #include "fboss/agent/hw/mock/MockHwSwitch.h" #include "fboss/agent/hw/mock/MockPlatform.h" -#include "fboss/agent/hw/mock/MockRxPacket.h" #include "fboss/agent/packet/PktUtil.h" #include "fboss/agent/test/CounterCache.h" #include "fboss/agent/test/HwTestHandle.h" #include "fboss/agent/test/TestUtils.h" -#include #include #include "gmock/gmock.h" diff --git a/fboss/agent/test/MacTableManagerTests.cpp b/fboss/agent/test/MacTableManagerTests.cpp index f204169e7f1ed..848a88e25ff12 100644 --- a/fboss/agent/test/MacTableManagerTests.cpp +++ b/fboss/agent/test/MacTableManagerTests.cpp @@ -12,7 +12,6 @@ #include "fboss/agent/L2Entry.h" #include "fboss/agent/ResourceAccountant.h" -#include "fboss/agent/state/Port.h" #include "fboss/agent/state/SwitchState.h" #include "fboss/agent/state/Vlan.h" #include "fboss/agent/test/HwTestHandle.h" diff --git a/fboss/agent/test/MacTableUtilsTests.cpp b/fboss/agent/test/MacTableUtilsTests.cpp index 69f539df6d806..d4237dcd5984d 100644 --- a/fboss/agent/test/MacTableUtilsTests.cpp +++ b/fboss/agent/test/MacTableUtilsTests.cpp @@ -12,7 +12,6 @@ #include "fboss/agent/L2Entry.h" #include "fboss/agent/MacTableUtils.h" -#include "fboss/agent/state/Port.h" #include "fboss/agent/state/SwitchState.h" #include "fboss/agent/state/Vlan.h" #include "fboss/agent/test/TestUtils.h" diff --git a/fboss/agent/test/MirrorManagerTest.cpp b/fboss/agent/test/MirrorManagerTest.cpp index d7e4f309fbe2a..74d89be05b45b 100644 --- a/fboss/agent/test/MirrorManagerTest.cpp +++ b/fboss/agent/test/MirrorManagerTest.cpp @@ -13,7 +13,6 @@ #include "fboss/agent/SwSwitchRouteUpdateWrapper.h" #include "fboss/agent/SwitchIdScopeResolver.h" #include "fboss/agent/state/Interface.h" -#include "fboss/agent/state/Route.h" #include "fboss/agent/state/SwitchState.h" #include "fboss/agent/test/HwTestHandle.h" #include "fboss/agent/test/TestUtils.h" diff --git a/fboss/agent/test/MultiNodeLacpTests.cpp b/fboss/agent/test/MultiNodeLacpTests.cpp index b50f3f2b57985..10810e9586889 100644 --- a/fboss/agent/test/MultiNodeLacpTests.cpp +++ b/fboss/agent/test/MultiNodeLacpTests.cpp @@ -21,7 +21,6 @@ #include "fboss/agent/hw/test/HwTestPacketUtils.h" #include "fboss/agent/hw/test/HwTestTrunkUtils.h" #include "fboss/agent/hw/test/LoadBalancerUtils.h" -#include "fboss/agent/state/Port.h" #include "fboss/agent/state/PortDescriptor.h" #include "fboss/agent/state/StateUtils.h" #include "fboss/agent/state/SwitchState.h" diff --git a/fboss/agent/test/MultiNodeMacsecTests.cpp b/fboss/agent/test/MultiNodeMacsecTests.cpp index 9844add31bb37..65e39acfb782a 100644 --- a/fboss/agent/test/MultiNodeMacsecTests.cpp +++ b/fboss/agent/test/MultiNodeMacsecTests.cpp @@ -13,9 +13,7 @@ #include "fboss/agent/hw/test/ConfigFactory.h" #include "fboss/agent/hw/test/LoadBalancerUtils.h" #include "fboss/agent/test/MultiNodeTest.h" -#include "fboss/agent/test/ResourceLibUtil.h" #include "fboss/agent/test/link_tests/facebook/MacsecTestUtils.h" -#include "fboss/facebook/mka_service/mka_module/MKAStructs.h" #include "fboss/lib/CommonUtils.h" #include "fboss/mka_service/if/facebook/gen-cpp2/mka_config_constants.h" #include "fboss/mka_service/if/facebook/gen-cpp2/mka_config_types.h" diff --git a/fboss/agent/test/MultiNodeOpenrTests.cpp b/fboss/agent/test/MultiNodeOpenrTests.cpp index 98a5201a5a2ff..417f57355eabc 100644 --- a/fboss/agent/test/MultiNodeOpenrTests.cpp +++ b/fboss/agent/test/MultiNodeOpenrTests.cpp @@ -10,10 +10,7 @@ #include "fboss/agent/hw/test/ConfigFactory.h" #include "fboss/agent/hw/test/HwTestCoppUtils.h" -#include "fboss/agent/state/Interface.h" -#include "fboss/agent/state/StateUtils.h" #include "fboss/agent/state/SwitchState.h" -#include "fboss/agent/state/Vlan.h" #include "fboss/agent/test/MultiNodeTest.h" #include "fboss/agent/test/TestUtils.h" #include "fboss/lib/CommonUtils.h" diff --git a/fboss/agent/test/OperDeltaFilterTests.cpp b/fboss/agent/test/OperDeltaFilterTests.cpp index c6f6462307b47..49ebd7a92066d 100644 --- a/fboss/agent/test/OperDeltaFilterTests.cpp +++ b/fboss/agent/test/OperDeltaFilterTests.cpp @@ -6,7 +6,6 @@ using namespace ::testing; #include "fboss/agent/Utils.h" -#include "fboss/agent/FsdbHelper.h" #include "fboss/agent/test/HwTestHandle.h" #include "fboss/agent/test/RouteScaleGenerators.h" #include "fboss/agent/test/TestUtils.h" diff --git a/fboss/agent/test/ResolvedNexthopMonitorTest.cpp b/fboss/agent/test/ResolvedNexthopMonitorTest.cpp index 92264b6c084f0..561bacb3eaae7 100644 --- a/fboss/agent/test/ResolvedNexthopMonitorTest.cpp +++ b/fboss/agent/test/ResolvedNexthopMonitorTest.cpp @@ -10,7 +10,6 @@ #include "fboss/agent/packet/ICMPHdr.h" #include "fboss/agent/packet/IPv6Hdr.h" #include "fboss/agent/packet/PktUtil.h" -#include "fboss/agent/state/Route.h" #include "fboss/agent/state/SwitchState.h" diff --git a/fboss/agent/test/RouteDistributionGenerator.cpp b/fboss/agent/test/RouteDistributionGenerator.cpp index 3fd876f8d80e6..f1465dd392c9b 100644 --- a/fboss/agent/test/RouteDistributionGenerator.cpp +++ b/fboss/agent/test/RouteDistributionGenerator.cpp @@ -9,7 +9,6 @@ */ #include "fboss/agent/test/RouteDistributionGenerator.h" -#include "fboss/agent/FbossError.h" #include "fboss/agent/Utils.h" #include "fboss/agent/test/EcmpSetupHelper.h" diff --git a/fboss/agent/test/RouteDistributionGeneratorTest.cpp b/fboss/agent/test/RouteDistributionGeneratorTest.cpp index c7011b01d7da2..872ec5d932b61 100644 --- a/fboss/agent/test/RouteDistributionGeneratorTest.cpp +++ b/fboss/agent/test/RouteDistributionGeneratorTest.cpp @@ -16,8 +16,6 @@ #include "fboss/agent/test/RouteGeneratorTestUtils.h" #include "fboss/agent/test/TestUtils.h" -#include - namespace facebook::fboss { TEST(RouteDistributionGeneratorsTest, v4AndV6DistributionSingleChunk) { diff --git a/fboss/agent/test/RouteScaleGeneratorsTest.cpp b/fboss/agent/test/RouteScaleGeneratorsTest.cpp index 9ef396d12b176..e3efe96eddb3d 100644 --- a/fboss/agent/test/RouteScaleGeneratorsTest.cpp +++ b/fboss/agent/test/RouteScaleGeneratorsTest.cpp @@ -14,8 +14,6 @@ #include "fboss/agent/test/RouteGeneratorTestUtils.h" #include "fboss/agent/test/TestUtils.h" -#include - namespace { auto constexpr kChunkSize = 4000; } // namespace diff --git a/fboss/agent/test/RouteTests.cpp b/fboss/agent/test/RouteTests.cpp index 1973bbc5593ca..eb6c5fb7c03b2 100644 --- a/fboss/agent/test/RouteTests.cpp +++ b/fboss/agent/test/RouteTests.cpp @@ -21,7 +21,6 @@ #include "fboss/agent/AddressUtil.h" #include "fboss/agent/if/gen-cpp2/common_types.h" -#include #include #include diff --git a/fboss/agent/test/RouteUpdateLoggerTest.cpp b/fboss/agent/test/RouteUpdateLoggerTest.cpp index 9357c8a60048f..b89df5cb69063 100644 --- a/fboss/agent/test/RouteUpdateLoggerTest.cpp +++ b/fboss/agent/test/RouteUpdateLoggerTest.cpp @@ -16,7 +16,6 @@ #include "fboss/agent/state/StateDelta.h" #include "fboss/agent/state/SwitchState.h" #include "fboss/agent/test/HwTestHandle.h" -#include "fboss/agent/test/TestUtils.h" #include #include diff --git a/fboss/agent/test/RoutingTest.cpp b/fboss/agent/test/RoutingTest.cpp index 1ae99589db7c3..623a319dd92c3 100644 --- a/fboss/agent/test/RoutingTest.cpp +++ b/fboss/agent/test/RoutingTest.cpp @@ -29,10 +29,7 @@ #include "fboss/agent/TunManager.h" #include "fboss/agent/TxPacket.h" #include "fboss/agent/gen-cpp2/switch_config_types.h" -#include "fboss/agent/hw/mock/MockRxPacket.h" -#include "fboss/agent/hw/mock/MockTxPacket.h" #include "fboss/agent/packet/EthHdr.h" -#include "fboss/agent/packet/PktUtil.h" #include "fboss/agent/state/SwitchState.h" #include "fboss/agent/test/CounterCache.h" #include "fboss/agent/test/HwTestHandle.h" diff --git a/fboss/agent/test/StaticL2ForNeighborObserverTests.cpp b/fboss/agent/test/StaticL2ForNeighborObserverTests.cpp index c3f8e1aa676ef..9d06d2ffdee16 100644 --- a/fboss/agent/test/StaticL2ForNeighborObserverTests.cpp +++ b/fboss/agent/test/StaticL2ForNeighborObserverTests.cpp @@ -14,7 +14,6 @@ #include "fboss/agent/L2Entry.h" #include "fboss/agent/NeighborUpdater.h" #include "fboss/agent/StaticL2ForNeighborObserver.h" -#include "fboss/agent/state/Port.h" #include "fboss/agent/state/Vlan.h" #include "fboss/agent/test/HwTestHandle.h" #include "fboss/agent/test/TestUtils.h" diff --git a/fboss/agent/test/SwSwitchUpdateProcessingTests.cpp b/fboss/agent/test/SwSwitchUpdateProcessingTests.cpp index 0d89c27846099..0a5394108a455 100644 --- a/fboss/agent/test/SwSwitchUpdateProcessingTests.cpp +++ b/fboss/agent/test/SwSwitchUpdateProcessingTests.cpp @@ -17,10 +17,6 @@ #include "fboss/agent/test/HwTestHandle.h" #include "fboss/agent/test/TestUtils.h" -#include -#include -#include - #include using namespace facebook::fboss; diff --git a/fboss/agent/test/SwitchStatsObserverTests.cpp b/fboss/agent/test/SwitchStatsObserverTests.cpp index 8e693a9cb7817..925be8c60a2f2 100644 --- a/fboss/agent/test/SwitchStatsObserverTests.cpp +++ b/fboss/agent/test/SwitchStatsObserverTests.cpp @@ -13,7 +13,6 @@ #include "fboss/agent/DsfSubscriber.h" #include "fboss/agent/SwSwitch.h" #include "fboss/agent/SwitchStats.h" -#include "fboss/agent/SwitchStatsObserver.h" #include "fboss/agent/state/Interface.h" #include "fboss/agent/test/CounterCache.h" #include "fboss/agent/test/HwTestHandle.h" diff --git a/fboss/agent/test/TestEnsembleIf.cpp b/fboss/agent/test/TestEnsembleIf.cpp index f6becffb6f89d..5d2064bd82d36 100644 --- a/fboss/agent/test/TestEnsembleIf.cpp +++ b/fboss/agent/test/TestEnsembleIf.cpp @@ -2,9 +2,7 @@ #include "fboss/agent/test/TestEnsembleIf.h" -#include "fboss/agent/Platform.h" #include "fboss/agent/Utils.h" -#include "fboss/agent/state/Port.h" #include "fboss/agent/state/SwitchState.h" #include diff --git a/fboss/agent/test/TestEnsembleIf.h b/fboss/agent/test/TestEnsembleIf.h index f8cd96920ce76..947b37636a017 100644 --- a/fboss/agent/test/TestEnsembleIf.h +++ b/fboss/agent/test/TestEnsembleIf.h @@ -62,7 +62,7 @@ class TestEnsembleIf : public HwSwitchCallback { size_t getMinPktsForLineRate(const PortID& port) { auto portSpeed = getProgrammedState()->getPorts()->getNodeIf(port)->getSpeed(); - return (portSpeed > cfg::PortSpeed::HUNDREDG ? 1000 : 100); + return (portSpeed > cfg::PortSpeed::HUNDREDG ? 10000 : 100); } virtual void applyNewState( diff --git a/fboss/agent/test/TestPacketFactory.cpp b/fboss/agent/test/TestPacketFactory.cpp index f810917413747..6fcae683eac8c 100644 --- a/fboss/agent/test/TestPacketFactory.cpp +++ b/fboss/agent/test/TestPacketFactory.cpp @@ -9,11 +9,9 @@ */ #include "fboss/agent/test/TestPacketFactory.h" -#include #include #include #include -#include #include #include #include "fboss/agent/IPv4Handler.h" diff --git a/fboss/agent/test/TestUtils.cpp b/fboss/agent/test/TestUtils.cpp index cc65fce9e7a78..2e09d60856b1e 100644 --- a/fboss/agent/test/TestUtils.cpp +++ b/fboss/agent/test/TestUtils.cpp @@ -9,9 +9,6 @@ */ #include "fboss/agent/test/TestUtils.h" -#include -#include - #include "fboss/agent/AgentConfig.h" #include "fboss/agent/ApplyThriftConfig.h" #include "fboss/agent/RxPacket.h" @@ -41,8 +38,6 @@ #include #include -#include -#include #include #include #include @@ -1477,7 +1472,6 @@ cfg::SwitchInfo createSwitchInfo( cfg::Range64 systemPortRange; systemPortRange.minimum() = *sysPortMin; systemPortRange.maximum() = *sysPortMax; - switchInfo.systemPortRange() = systemPortRange; switchInfo.systemPortRanges()->systemPortRanges()->push_back( systemPortRange); switchInfo.localSystemPortOffset() = *sysPortMin; diff --git a/fboss/agent/test/ThriftServerTest.cpp b/fboss/agent/test/ThriftServerTest.cpp index 7a952bd29c094..febd23475a3f2 100644 --- a/fboss/agent/test/ThriftServerTest.cpp +++ b/fboss/agent/test/ThriftServerTest.cpp @@ -25,7 +25,6 @@ #include #include -#include #include "fboss/agent/test/MultiSwitchTestServer.h" #include diff --git a/fboss/agent/test/ThriftTest.cpp b/fboss/agent/test/ThriftTest.cpp index f3a642270593b..ffbf6993fa588 100644 --- a/fboss/agent/test/ThriftTest.cpp +++ b/fboss/agent/test/ThriftTest.cpp @@ -29,7 +29,6 @@ #include #include -#include using namespace facebook::fboss; using namespace facebook::stats; @@ -638,7 +637,7 @@ TYPED_TEST(ThriftTestAllSwitchTypes, getAclTableGroup) { tableGroup.aclTables()->push_back(createAclTable(1)); tableGroup.aclTables()->push_back(createAclTable(2)); - config.aclTableGroup() = tableGroup; + config.aclTableGroups() = {tableGroup}; this->sw_->applyConfig("New config with acl table group", config); auto state = this->sw_->getState(); handler.getAclTableGroup(aclTables); diff --git a/fboss/agent/test/TunInterfaceTest.cpp b/fboss/agent/test/TunInterfaceTest.cpp index 7e3391adc29c0..734c4d900f985 100644 --- a/fboss/agent/test/TunInterfaceTest.cpp +++ b/fboss/agent/test/TunInterfaceTest.cpp @@ -15,7 +15,6 @@ #include "fboss/agent/SwSwitch.h" #include "fboss/agent/gen-cpp2/switch_config_types.h" #include "fboss/agent/hw/mock/MockPlatform.h" -#include "fboss/agent/test/HwTestHandle.h" #include "fboss/agent/test/MockTunManager.h" #include "fboss/agent/test/TestUtils.h" diff --git a/fboss/agent/test/UDPTest.cpp b/fboss/agent/test/UDPTest.cpp index 45c8476985d68..db175e19b77c9 100644 --- a/fboss/agent/test/UDPTest.cpp +++ b/fboss/agent/test/UDPTest.cpp @@ -22,7 +22,6 @@ #include "fboss/agent/test/HwTestHandle.h" #include "fboss/agent/test/TestUtils.h" -#include #include using namespace facebook::fboss; diff --git a/fboss/agent/test/agent_hw_tests/AgentAclCounterTests.cpp b/fboss/agent/test/agent_hw_tests/AgentAclCounterTests.cpp index cafd78d58d1a3..8ee9c6e03b685 100644 --- a/fboss/agent/test/agent_hw_tests/AgentAclCounterTests.cpp +++ b/fboss/agent/test/agent_hw_tests/AgentAclCounterTests.cpp @@ -14,7 +14,6 @@ #include "fboss/agent/test/EcmpSetupHelper.h" #include "fboss/agent/test/ResourceLibUtil.h" #include "fboss/agent/test/utils/AclTestUtils.h" -#include "fboss/agent/test/utils/AsicUtils.h" #include "fboss/agent/test/utils/ConfigUtils.h" #include "fboss/agent/test/utils/LoadBalancerTestUtils.h" #include "fboss/lib/CommonUtils.h" @@ -68,16 +67,10 @@ class AgentAclCounterTest : public AgentHwTest { } cfg::SwitchConfig initialConfig( const AgentEnsemble& ensemble) const override { - auto cfg = utility::onePortPerInterfaceConfig( + return utility::onePortPerInterfaceConfig( ensemble.getSw(), ensemble.masterLogicalPortIds(), true /*interfaceHasSubnet*/); - if (FLAGS_enable_acl_table_group) { - utility::addAclTableGroup( - &cfg, cfg::AclStage::INGRESS, utility::getAclTableGroupName()); - utility::addDefaultAclTable(cfg); - } - return cfg; } std::string getAclName(AclType aclType) const { diff --git a/fboss/agent/test/agent_hw_tests/AgentAclInDiscardCounterTests.cpp b/fboss/agent/test/agent_hw_tests/AgentAclInDiscardCounterTests.cpp index 1bb0c2c7ea1c3..f016270a4f875 100644 --- a/fboss/agent/test/agent_hw_tests/AgentAclInDiscardCounterTests.cpp +++ b/fboss/agent/test/agent_hw_tests/AgentAclInDiscardCounterTests.cpp @@ -24,10 +24,6 @@ class AgentAclInDiscardsCounterTest : public AgentHwTest { cfg::SwitchConfig initialConfig( const AgentEnsemble& ensemble) const override { auto cfg = AgentHwTest::initialConfig(ensemble); - // Add ACL Table group before adding any ACLs - utility::addAclTableGroup( - &cfg, cfg::AclStage::INGRESS, utility::getAclTableGroupName()); - utility::addDefaultAclTable(cfg); auto* acl = utility::addAcl(&cfg, "block all", cfg::AclActionType::DENY); acl->dstIp() = "::/0"; return cfg; diff --git a/fboss/agent/test/agent_hw_tests/AgentAclPriorityTests.cpp b/fboss/agent/test/agent_hw_tests/AgentAclPriorityTests.cpp index 01a6d01579e11..a75a5af9a4f97 100644 --- a/fboss/agent/test/agent_hw_tests/AgentAclPriorityTests.cpp +++ b/fboss/agent/test/agent_hw_tests/AgentAclPriorityTests.cpp @@ -25,10 +25,11 @@ using namespace facebook::fboss::utility; void addAclEntry(cfg::SwitchConfig& cfg, cfg::AclEntry* acl) { if (FLAGS_enable_acl_table_group) { - int tableNumber = getAclTableIndex(&cfg, utility::kDefaultAclTable()); - if (cfg.aclTableGroup()) { - cfg.aclTableGroup()->aclTables()[tableNumber].aclEntries()->push_back( - *acl); + auto aclTableGroup = utility::getAclTableGroup(cfg); + int tableNumber = getAclTableIndex( + &cfg, utility::kDefaultAclTable(), *aclTableGroup->name()); + if (aclTableGroup) { + aclTableGroup->aclTables()[tableNumber].aclEntries()->push_back(*acl); } } else { cfg.acls()->push_back(*acl); @@ -61,11 +62,6 @@ class AgentAclPriorityTest : public AgentHwTest { ensemble.getSw(), ensemble.masterLogicalPortIds(), true /*interfaceHasSubnet*/); - if (FLAGS_enable_acl_table_group) { - utility::addAclTableGroup( - &cfg, cfg::AclStage::INGRESS, utility::getAclTableGroupName()); - utility::addDefaultAclTable(cfg); - } return cfg; } @@ -173,9 +169,10 @@ TEST_F(AgentAclPriorityTest, AclNameChange) { this->addDenyPortAcl(newCfg, "A"); this->applyNewConfig(newCfg); if (FLAGS_enable_acl_table_group) { - *newCfg.aclTableGroup() + auto* aclTableGroup = utility::getAclTableGroup(newCfg); + *aclTableGroup ->aclTables()[utility::getAclTableIndex( - &newCfg, utility::kDefaultAclTable())] + &newCfg, utility::kDefaultAclTable(), *aclTableGroup->name())] .aclEntries() ->back() .name() = "AA"; diff --git a/fboss/agent/test/agent_hw_tests/AgentAclScaleTests.cpp b/fboss/agent/test/agent_hw_tests/AgentAclScaleTests.cpp index 799e0a42639d1..21cad329c83a5 100644 --- a/fboss/agent/test/agent_hw_tests/AgentAclScaleTests.cpp +++ b/fboss/agent/test/agent_hw_tests/AgentAclScaleTests.cpp @@ -43,7 +43,7 @@ class AgentAclScaleTest : public AgentHwTest { ensemble.masterLogicalPortIds(), true /*interfaceHasSubnet*/); utility::addAclTableGroup( - &cfg, cfg::AclStage::INGRESS, utility::getAclTableGroupName()); + &cfg, cfg::AclStage::INGRESS, utility::kDefaultAclTableGroupName()); return cfg; } diff --git a/fboss/agent/test/agent_hw_tests/AgentDeepPacketInspectionTests.cpp b/fboss/agent/test/agent_hw_tests/AgentDeepPacketInspectionTests.cpp index f48245c77325d..576a3fe28f366 100644 --- a/fboss/agent/test/agent_hw_tests/AgentDeepPacketInspectionTests.cpp +++ b/fboss/agent/test/agent_hw_tests/AgentDeepPacketInspectionTests.cpp @@ -4,7 +4,6 @@ #include "fboss/agent/packet/PktFactory.h" #include "fboss/agent/test/AgentHwTest.h" #include "fboss/agent/test/EcmpSetupHelper.h" -#include "fboss/agent/test/utils/AsicUtils.h" #include "fboss/agent/test/utils/ConfigUtils.h" #include "fboss/agent/test/utils/OlympicTestUtils.h" #include "fboss/agent/test/utils/PacketSnooper.h" diff --git a/fboss/agent/test/agent_hw_tests/AgentEcmpScaleTests.cpp b/fboss/agent/test/agent_hw_tests/AgentEcmpScaleTests.cpp index 6e19773b0937f..3a44e3e063850 100644 --- a/fboss/agent/test/agent_hw_tests/AgentEcmpScaleTests.cpp +++ b/fboss/agent/test/agent_hw_tests/AgentEcmpScaleTests.cpp @@ -13,9 +13,7 @@ #include "fboss/agent/packet/PktFactory.h" #include "fboss/agent/test/AgentHwTest.h" #include "fboss/agent/test/EcmpSetupHelper.h" -#include "fboss/agent/test/utils/AsicUtils.h" #include "fboss/agent/test/utils/ScaleTestUtils.h" -#include "fboss/lib/CommonUtils.h" #include "fboss/agent/test/gen-cpp2/production_features_types.h" diff --git a/fboss/agent/hw/test/HwEcmpTests.cpp b/fboss/agent/test/agent_hw_tests/AgentEcmpTests.cpp similarity index 56% rename from fboss/agent/hw/test/HwEcmpTests.cpp rename to fboss/agent/test/agent_hw_tests/AgentEcmpTests.cpp index 9e3ec57ca4e5c..e416dc753f473 100644 --- a/fboss/agent/hw/test/HwEcmpTests.cpp +++ b/fboss/agent/test/agent_hw_tests/AgentEcmpTests.cpp @@ -11,9 +11,10 @@ #include #include "fboss/agent/test/EcmpSetupHelper.h" -#include "fboss/agent/hw/test/ConfigFactory.h" -#include "fboss/agent/hw/test/HwLinkStateDependentTest.h" -#include "fboss/agent/hw/test/HwTestEcmpUtils.h" +#include "fboss/agent/test/AgentHwTest.h" +#include "fboss/agent/test/utils/AsicUtils.h" +#include "fboss/agent/test/utils/ConfigUtils.h" +#include "fboss/lib/CommonUtils.h" DECLARE_bool(intf_nbr_tables); @@ -25,10 +26,11 @@ facebook::fboss::RoutePrefixV6 kRoute2{ folly::IPAddressV6{"2803:6080:d038:3063::"}, 64}; folly::CIDRNetwork kRoute2Prefix{folly::IPAddress("2803:6080:d038:3063::"), 64}; +const auto numNeighborEntries = 2; } // namespace namespace facebook::fboss { -class HwEcmpTest : public HwLinkStateDependentTest { +class AgentEcmpTest : public AgentHwTest { protected: std::vector swSwitchWeights_ = { ECMP_WEIGHT, @@ -50,48 +52,55 @@ class HwEcmpTest : public HwLinkStateDependentTest { UCMP_DEFAULT_WEIGHT}; const RouterID kRid{0}; static constexpr auto kNumNextHops{8}; - std::unique_ptr> ecmpHelper_; - void SetUp() override { - HwLinkStateDependentTest::SetUp(); - ecmpHelper_ = std::make_unique( - getProgrammedState(), kRid); - } - cfg::SwitchConfig initialConfig() const override { + cfg::SwitchConfig initialConfig( + const AgentEnsemble& ensemble) const override { return utility::onePortPerInterfaceConfig( - getHwSwitch(), - masterLogicalPortIds(), - getAsic()->desiredLoopbackModes()); + ensemble.getSw(), + ensemble.masterLogicalPortIds(), + true /*interfaceHasSubnet*/); + } + + std::vector + getProductionFeaturesVerified() const override { + return {production_features::ProductionFeature::L3_FORWARDING}; } void resolveNhops(int numNhops) { - applyNewState(ecmpHelper_->resolveNextHops(getProgrammedState(), numNhops)); + utility::EcmpSetupAnyNPorts6 ecmpHelper(getProgrammedState()); + applyNewState([&](const std::shared_ptr& in) { + return ecmpHelper.resolveNextHops(in, numNhops); + }); } void resolveNhops(const std::vector& portDescs) { - applyNewState(ecmpHelper_->resolveNextHops( - getProgrammedState(), - flat_set(portDescs.begin(), portDescs.end()))); + utility::EcmpSetupAnyNPorts6 ecmpHelper(getProgrammedState()); + applyNewState([&](const std::shared_ptr& in) { + return ecmpHelper.resolveNextHops( + in, flat_set(portDescs.begin(), portDescs.end())); + }); } void unresolveNhops(int numNhops) { - applyNewState( - ecmpHelper_->unresolveNextHops(getProgrammedState(), numNhops)); + utility::EcmpSetupAnyNPorts6 ecmpHelper(getProgrammedState()); + applyNewState([&](const std::shared_ptr& in) { + return ecmpHelper.unresolveNextHops(in, numNhops); + }); } void unresolveNhops(const std::vector& portDescs) { - applyNewState(ecmpHelper_->unresolveNextHops( - getProgrammedState(), - flat_set(portDescs.begin(), portDescs.end()))); + utility::EcmpSetupAnyNPorts6 ecmpHelper(getProgrammedState()); + applyNewState([&](const std::shared_ptr& in) { + return ecmpHelper.unresolveNextHops( + in, flat_set(portDescs.begin(), portDescs.end())); + }); } void programRouteWithUnresolvedNhops(int numNhops = kNumNextHops) { - ecmpHelper_->programRoutes( - getRouteUpdater(), + utility::EcmpSetupAnyNPorts6 ecmpHelper(getProgrammedState()); + auto wrapper = getSw()->getRouteUpdater(); + ecmpHelper.programRoutes( + &wrapper, numNhops, {kDefaultRoute}, std::vector( swSwitchWeights_.begin(), swSwitchWeights_.begin() + numNhops)); } - int getEcmpSizeInHw(int sizeInSw = kNumNextHops) const { - return utility::getEcmpSizeInHw( - getHwSwitch(), kDefaultRoutePrefix, kRid, sizeInSw); - } void runSimpleUcmpTest( const std::vector& swWs, const std::vector& hwWs); @@ -101,9 +110,33 @@ class HwEcmpTest : public HwLinkStateDependentTest { void verifyResolvedUcmp( const folly::CIDRNetwork& routePrefix, const std::vector& hwWs); + + protected: + std::map getEcmpWeightsInHw() const { + auto switchId = getSw() + ->getScopeResolver() + ->scope(masterLogicalPortIds()[0]) + .switchId(); + auto client = getAgentEnsemble()->getHwAgentTestClient(switchId); + facebook::fboss::utility::CIDRNetwork cidr; + cidr.IPAddress() = "::"; + cidr.mask() = 0; + std::map ecmpWeights; + client->sync_getEcmpWeights(ecmpWeights, cidr, 0); + return ecmpWeights; + } + + int getEcmpSizeInHw(int sizeInSw = kNumNextHops) const { + auto ecmpWeights = getEcmpWeightsInHw(); + int ecmpSize = 0; + for (auto& [_, weight] : ecmpWeights) { + ecmpSize += weight; + } + return ecmpSize; + } }; -void HwEcmpTest::programResolvedUcmp( +void AgentEcmpTest::programResolvedUcmp( const std::vector& swWs, const std::vector& hwWs) { EXPECT_EQ(swWs.size(), hwWs.size()); @@ -116,33 +149,41 @@ void HwEcmpTest::programResolvedUcmp( resolveNhops(swWs.size()); } -void HwEcmpTest::verifyResolvedUcmp( +void AgentEcmpTest::verifyResolvedUcmp( const folly::CIDRNetwork& routePrefix, const std::vector& hwWs) { - auto pathsInHw = utility::getEcmpMembersInHw( - getHwSwitch(), routePrefix, kRid, FLAGS_ecmp_width); - auto pathsInHwCount = pathsInHw.size(); - EXPECT_LE(pathsInHwCount, FLAGS_ecmp_width); - - std::set uniquePaths(pathsInHw.begin(), pathsInHw.end()); - // This check assumes that egress ids grow as you add more egresses - // That assumption could prove incorrect, in which case we would - // need to map ips to egresses, somehow. - auto expectedCountIter = hwWs.begin(); - for (const auto& path : uniquePaths) { - auto pathWeight = - utility::getEcmpMemberWeight(getHwSwitch(), pathsInHw, path); - EXPECT_EQ(pathWeight, *expectedCountIter); - expectedCountIter++; - } - auto totalHwWeight = - std::accumulate(hwWs.begin(), hwWs.end(), NextHopWeight(0)); - auto totalWeightInHw = - utility::getTotalEcmpMemberWeight(getHwSwitch(), pathsInHw); - EXPECT_EQ(totalHwWeight, totalWeightInHw); + auto switchId = + getSw()->getScopeResolver()->scope(masterLogicalPortIds()[0]).switchId(); + auto client = getAgentEnsemble()->getHwAgentTestClient(switchId); + facebook::fboss::utility::CIDRNetwork cidr; + cidr.IPAddress() = routePrefix.first.str(); + cidr.mask() = routePrefix.second; + WITH_RETRIES({ + std::map pathsInHw; + client->sync_getEcmpWeights(pathsInHw, cidr, kRid); + auto pathsInHwCount = pathsInHw.size(); + EXPECT_EVENTUALLY_LE(pathsInHwCount, FLAGS_ecmp_width); + + // This check assumes that egress ids grow as you add more egresses + // That assumption could prove incorrect, in which case we would + // need to map ips to egresses, somehow. + auto expectedCountIter = hwWs.begin(); + for (const auto& [member, pathWeight] : pathsInHw) { + XLOG(DBG2) << "member: " << member << " pathWeight: " << pathWeight; + EXPECT_EVENTUALLY_EQ(pathWeight, *expectedCountIter); + expectedCountIter++; + } + auto totalHwWeight = + std::accumulate(hwWs.begin(), hwWs.end(), NextHopWeight(0)); + auto totalWeightInHw = 0; + for (auto& [_, weight] : pathsInHw) { + totalWeightInHw += weight; + } + EXPECT_EVENTUALLY_EQ(totalHwWeight, totalWeightInHw); + }); } -void HwEcmpTest::runSimpleUcmpTest( +void AgentEcmpTest::runSimpleUcmpTest( const std::vector& swWs, const std::vector& hwWs) { EXPECT_EQ(swWs.size(), hwWs.size()); @@ -154,14 +195,7 @@ void HwEcmpTest::runSimpleUcmpTest( verifyAcrossWarmBoots(setup, verify); } -class HwWideEcmpTest : public HwEcmpTest { - void SetUp() override { - FLAGS_ecmp_width = 512; - HwEcmpTest::SetUp(); - } -}; - -class HwEcmpTestWithWBWrites : public HwEcmpTest { +class AgentEcmpTestWithWBWrites : public AgentEcmpTest { public: bool failHwCallsOnWarmboot() const override { return false; @@ -169,31 +203,35 @@ class HwEcmpTestWithWBWrites : public HwEcmpTest { }; // WB is expected to create next hop/group corresponding to port brought down -TEST_F(HwEcmpTestWithWBWrites, L2ResolveOneNhopThenLinkDownThenUp) { +TEST_F(AgentEcmpTestWithWBWrites, L2ResolveOneNhopThenLinkDownThenUp) { auto setup = [=, this]() { programRouteWithUnresolvedNhops(); resolveNhops(1); - EXPECT_EQ(1, getEcmpSizeInHw()); - - auto nhop = ecmpHelper_->nhop(0); - bringDownPort(nhop.portDesc.phyPortID()); + WITH_RETRIES({ EXPECT_EVENTUALLY_EQ(1, getEcmpSizeInHw()); }); }; auto verify = [=, this]() { // ECMP shrunk on port down - EXPECT_EQ(0, getEcmpSizeInHw()); + WITH_RETRIES({ + utility::EcmpSetupAnyNPorts6 ecmpHelper(this->getProgrammedState()); + auto nhop = ecmpHelper.nhop(0); + bringDownPort(nhop.portDesc.phyPortID()); + EXPECT_EVENTUALLY_EQ(0, getEcmpSizeInHw()); + }); }; auto setupPostWarmboot = [=, this]() { - auto nhop = ecmpHelper_->nhop(0); + utility::EcmpSetupAnyNPorts6 ecmpHelper(this->getProgrammedState()); + auto nhop = ecmpHelper.nhop(0); bringUpPort(nhop.portDesc.phyPortID()); }; auto verifyPostWarmboot = [=, this]() { - auto nhop = ecmpHelper_->nhop(0); + utility::EcmpSetupAnyNPorts6 ecmpHelper(this->getProgrammedState()); + auto nhop = ecmpHelper.nhop(0); // ECMP stays shrunk on port up - EXPECT_EQ(0, getEcmpSizeInHw()); + WITH_RETRIES({ EXPECT_EVENTUALLY_EQ(0, getEcmpSizeInHw()); }); // Bring port back down so we can warmboot more than once. This is // necessary because verify() and verifyPostWarmboot() assume that the @@ -205,46 +243,48 @@ TEST_F(HwEcmpTestWithWBWrites, L2ResolveOneNhopThenLinkDownThenUp) { verifyAcrossWarmBoots(setup, verify, setupPostWarmboot, verifyPostWarmboot); } -TEST_F(HwEcmpTest, ecmpToDropToEcmp) { +TEST_F(AgentEcmpTest, ecmpToDropToEcmp) { /* * Mimic a scenario where all links flap and the routes (including * default route) get withdrawn and then peerings comeback one by one * and expand the ECMP group */ auto constexpr kEcmpWidthForTest = 4; + utility::EcmpSetupAnyNPorts6 ecmpHelper(this->getProgrammedState()); // Program ECMP route - resolveNeigborAndProgramRoutes(*ecmpHelper_, kEcmpWidthForTest); - EXPECT_EQ(kEcmpWidthForTest, getEcmpSizeInHw()); + resolveNeigborAndProgramRoutes(ecmpHelper, kEcmpWidthForTest); + WITH_RETRIES({ EXPECT_EVENTUALLY_EQ(kEcmpWidthForTest, getEcmpSizeInHw()); }); + // Mimic neighbor entries going away and route getting removed. Since // this is the default route, it actually does not go away but transitions // to drop. - applyNewState( - ecmpHelper_->unresolveNextHops(getProgrammedState(), kEcmpWidthForTest)); - EXPECT_EQ(0, getEcmpSizeInHw()); - ecmpHelper_->unprogramRoutes(getRouteUpdater()); + unresolveNhops(kEcmpWidthForTest); + WITH_RETRIES({ EXPECT_EVENTUALLY_EQ(0, getEcmpSizeInHw()); }); + auto wrapper = getSw()->getRouteUpdater(); + ecmpHelper.unprogramRoutes(&wrapper); // Bring the route back, but mimic learning it from peers one by one first - applyNewState( - ecmpHelper_->resolveNextHops(getProgrammedState(), kEcmpWidthForTest)); + resolveNhops(kEcmpWidthForTest); for (auto i = 0; i < kEcmpWidthForTest; ++i) { - ecmpHelper_->programRoutes(getRouteUpdater(), i + 1); + ecmpHelper.programRoutes(&wrapper, i + 1); if (i) { - EXPECT_EQ(i + 1, getEcmpSizeInHw()); + WITH_RETRIES({ EXPECT_EVENTUALLY_EQ(i + 1, getEcmpSizeInHw()); }); } } } -TEST_F(HwEcmpTest, L2ResolveOneNhopThenLinkDownThenUpThenL2ResolveNhop) { +TEST_F(AgentEcmpTest, L2ResolveOneNhopThenLinkDownThenUpThenL2ResolveNhop) { auto setup = [=, this]() { programRouteWithUnresolvedNhops(); - auto nhop = ecmpHelper_->nhop(0); + utility::EcmpSetupAnyNPorts6 ecmpHelper(getProgrammedState()); + auto nhop = ecmpHelper.nhop(0); resolveNhops(1); - EXPECT_EQ(1, getEcmpSizeInHw()); + WITH_RETRIES({ EXPECT_EVENTUALLY_EQ(1, getEcmpSizeInHw()); }); bringDownPort(nhop.portDesc.phyPortID()); // ECMP shrunk on port down - EXPECT_EQ(0, getEcmpSizeInHw()); + WITH_RETRIES({ EXPECT_EVENTUALLY_EQ(0, getEcmpSizeInHw()); }); bringUpPort(nhop.portDesc.phyPortID()); // ECMP stays shrunk on port up - EXPECT_EQ(0, getEcmpSizeInHw()); + WITH_RETRIES({ EXPECT_EVENTUALLY_EQ(0, getEcmpSizeInHw()); }); // Re resolve nhop1 unresolveNhops(1); resolveNhops(1); @@ -258,13 +298,15 @@ TEST_F(HwEcmpTest, L2ResolveOneNhopThenLinkDownThenUpThenL2ResolveNhop) { verifyAcrossWarmBoots(setup, verify); } -TEST_F(HwEcmpTest, L2UnresolvedNhopsECMPInHWEmpty) { +TEST_F(AgentEcmpTest, L2UnresolvedNhopsECMPInHWEmpty) { auto setup = [=, this]() { programRouteWithUnresolvedNhops(); }; - auto verify = [=, this]() { EXPECT_EQ(0, getEcmpSizeInHw()); }; + auto verify = [=, this]() { + WITH_RETRIES({ EXPECT_EVENTUALLY_EQ(0, getEcmpSizeInHw()); }); + }; verifyAcrossWarmBoots(setup, verify); } -TEST_F(HwEcmpTest, UcmpOverflowZero) { +TEST_F(AgentEcmpTest, UcmpOverflowZero) { std::vector swWs, hwWs; if (FLAGS_ecmp_width == 64) { // default ecmp_width for td2 and tomahawk @@ -280,7 +322,7 @@ TEST_F(HwEcmpTest, UcmpOverflowZero) { } runSimpleUcmpTest(swWs, hwWs); } -TEST_F(HwEcmpTest, UcmpOverflowZeroNotEnoughToRoundUp) { +TEST_F(AgentEcmpTest, UcmpOverflowZeroNotEnoughToRoundUp) { std::vector swWs, hwWs; if (FLAGS_ecmp_width == 64) { // default ecmp_width for td2 and tomahawk @@ -297,7 +339,7 @@ TEST_F(HwEcmpTest, UcmpOverflowZeroNotEnoughToRoundUp) { runSimpleUcmpTest(swWs, hwWs); } -TEST_F(HwEcmpTest, UcmpRoutesWithSameNextHopsDifferentWeights) { +TEST_F(AgentEcmpTest, UcmpRoutesWithSameNextHopsDifferentWeights) { std::vector swWs, hwWs; if (FLAGS_ecmp_width == 64) { @@ -319,16 +361,18 @@ TEST_F(HwEcmpTest, UcmpRoutesWithSameNextHopsDifferentWeights) { EXPECT_EQ(swWs.size(), hwWs.size()); EXPECT_LE(swWs.size(), kNumNextHops); auto setup = [this, &swWs, &swWs2]() { + utility::EcmpSetupAnyNPorts6 ecmpHelper(getProgrammedState()); auto nHops = swWs.size(); - ecmpHelper_->programRoutes( - getRouteUpdater(), + auto wrapper = getSw()->getRouteUpdater(); + ecmpHelper.programRoutes( + &wrapper, nHops, {kDefaultRoute}, std::vector(swWs.begin(), swWs.begin() + nHops)); auto nHops2 = swWs2.size(); - ecmpHelper_->programRoutes( - getRouteUpdater(), + ecmpHelper.programRoutes( + &wrapper, nHops2, {kRoute2}, std::vector(swWs2.begin(), swWs2.begin() + nHops2)); @@ -343,23 +387,27 @@ TEST_F(HwEcmpTest, UcmpRoutesWithSameNextHopsDifferentWeights) { verifyAcrossWarmBoots(setup, verify); } +class AgentWideEcmpTest : public AgentEcmpTest { + void setCmdLineFlagOverrides() const override { + FLAGS_ecmp_width = 512; + AgentHwTest::setCmdLineFlagOverrides(); + } + std::vector + getProductionFeaturesVerified() const override { + return { + production_features::ProductionFeature::L3_FORWARDING, + production_features::ProductionFeature::WIDE_ECMP}; + } +}; + // Wide UCMP underflow test for when total UCMP weight of the group is less // than FLAGS_ecmp_width -TEST_F(HwWideEcmpTest, WideUcmpUnderflow) { +TEST_F(AgentWideEcmpTest, WideUcmpUnderflow) { const int numSpineNhops = 5; const int numMeshNhops = 3; std::vector nhops(numSpineNhops + numMeshNhops); std::vector normalizedNhops(numSpineNhops + numMeshNhops); - // skip unsupported platforms - if (!getHwSwitch()->getPlatform()->getAsic()->isSupported( - HwAsic::Feature::WIDE_ECMP)) { -#if defined(GTEST_SKIP) - GTEST_SKIP(); -#endif - return; - } - auto fillNhops = [](auto& nhops, auto& countAndWeights) { auto idx = 0; for (const auto& nhopAndWeight : countAndWeights) { @@ -381,22 +429,19 @@ TEST_F(HwWideEcmpTest, WideUcmpUnderflow) { runSimpleUcmpTest(nhops, normalizedNhops); } -TEST_F(HwWideEcmpTest, WideUcmp256WidthUnderflow) { +class Agent256WideEcmpTest : public AgentWideEcmpTest { + void setCmdLineFlagOverrides() const override { + FLAGS_ecmp_width = 256; + AgentHwTest::setCmdLineFlagOverrides(); + } +}; + +TEST_F(Agent256WideEcmpTest, WideUcmp256WidthUnderflow) { const int numSpineNhops = 5; const int numMeshNhops = 3; std::vector nhops(numSpineNhops + numMeshNhops); std::vector normalizedNhops(numSpineNhops + numMeshNhops); - // skip unsupported platforms - if (!getHwSwitch()->getPlatform()->getAsic()->isSupported( - HwAsic::Feature::WIDE_ECMP)) { -#if defined(GTEST_SKIP) - GTEST_SKIP(); -#endif - return; - } - - FLAGS_ecmp_width = 256; auto fillNhops = [](auto& nhops, auto& countAndWeights) { auto idx = 0; for (const auto& nhopAndWeight : countAndWeights) { @@ -417,21 +462,12 @@ TEST_F(HwWideEcmpTest, WideUcmp256WidthUnderflow) { fillNhops(normalizedNhops, nhopsAndWeightsNormalized); runSimpleUcmpTest(nhops, normalizedNhops); } -TEST_F(HwWideEcmpTest, WideUcmpCheckMultipleSlotUnderflow) { +TEST_F(AgentWideEcmpTest, WideUcmpCheckMultipleSlotUnderflow) { const int numSpineNhops = 4; const int numMeshNhops = 4; std::vector nhops(numSpineNhops + numMeshNhops); std::vector normalizedNhops(numSpineNhops + numMeshNhops); - // skip unsupported platforms - if (!getHwSwitch()->getPlatform()->getAsic()->isSupported( - HwAsic::Feature::WIDE_ECMP)) { -#if defined(GTEST_SKIP) - GTEST_SKIP(); -#endif - return; - } - auto fillNhops = [](auto& nhops, auto& countAndWeights) { auto idx = 0; for (const auto& nhopAndWeight : countAndWeights) { @@ -454,40 +490,31 @@ TEST_F(HwWideEcmpTest, WideUcmpCheckMultipleSlotUnderflow) { } // Test link down in UCMP scenario -TEST_F(HwEcmpTest, UcmpL2ResolveAllNhopsInThenLinkDown) { +TEST_F(AgentEcmpTest, UcmpL2ResolveAllNhopsInThenLinkDown) { + utility::EcmpSetupAnyNPorts6 ecmpHelper(getProgrammedState()); programResolvedUcmp({3, 1, 1, 1, 1, 1, 1, 1}, {3, 1, 1, 1, 1, 1, 1, 1}); - bringDownPort(ecmpHelper_->nhop(0).portDesc.phyPortID()); - auto pathsInHwCount = utility::getEcmpSizeInHw( - getHwSwitch(), kDefaultRoutePrefix, kRid, FLAGS_ecmp_width); - EXPECT_EQ(7, pathsInHwCount); + bringDownPort(ecmpHelper.nhop(0).portDesc.phyPortID()); + WITH_RETRIES({ + auto pathsInHwCount = getEcmpSizeInHw(); + EXPECT_EVENTUALLY_EQ(7, pathsInHwCount); + }); } // Test link flap in UCMP scenario -TEST_F(HwEcmpTest, UcmpL2ResolveBothNhopsInThenLinkFlap) { +TEST_F(AgentEcmpTest, UcmpL2ResolveBothNhopsInThenLinkFlap) { + utility::EcmpSetupAnyNPorts6 ecmpHelper(getProgrammedState()); programResolvedUcmp({3, 1, 1, 1, 1, 1, 1, 1}, {3, 1, 1, 1, 1, 1, 1, 1}); - auto nhop = ecmpHelper_->nhop(0); + auto nhop = ecmpHelper.nhop(0); bringDownPort(nhop.portDesc.phyPortID()); - auto pathsInHw0 = utility::getEcmpMembersInHw( - getHwSwitch(), kDefaultRoutePrefix, kRid, FLAGS_ecmp_width); - auto totalWeightInHw0 = - utility::getTotalEcmpMemberWeight(getHwSwitch(), pathsInHw0); - EXPECT_EQ(7, totalWeightInHw0); + WITH_RETRIES({ EXPECT_EVENTUALLY_EQ(7, getEcmpSizeInHw()); }); bringUpPort(nhop.portDesc.phyPortID()); - auto pathsInHw1 = utility::getEcmpMembersInHw( - getHwSwitch(), kDefaultRoutePrefix, kRid, FLAGS_ecmp_width); - auto totalWeightInHw1 = - utility::getTotalEcmpMemberWeight(getHwSwitch(), pathsInHw1); - EXPECT_EQ(7, totalWeightInHw1); + WITH_RETRIES({ EXPECT_EVENTUALLY_EQ(7, getEcmpSizeInHw()); }); unresolveNhops(1); resolveNhops(1); - auto pathsInHw2 = utility::getEcmpMembersInHw( - getHwSwitch(), kDefaultRoutePrefix, kRid, FLAGS_ecmp_width); - auto totalWeightInHw2 = - utility::getTotalEcmpMemberWeight(getHwSwitch(), pathsInHw2); - EXPECT_EQ(10, totalWeightInHw2); + WITH_RETRIES({ EXPECT_EVENTUALLY_EQ(10, getEcmpSizeInHw()); }); } template @@ -499,12 +526,23 @@ using NeighborTableTypes = ::testing::Types, EnableIntfNbrTable>; template -class HwEcmpNeighborTest : public HwEcmpTest { +class AgentEcmpNeighborTest : public AgentEcmpTest { static auto constexpr intfNbrTable = EnableIntfNbrTableT::intfNbrTable; void SetUp() override { FLAGS_intf_nbr_tables = isIntfNbrTable(); - HwEcmpTest::SetUp(); + AgentEcmpTest::SetUp(); + } + + std::vector + getProductionFeaturesVerified() const override { + if (intfNbrTable) { + return { + production_features::ProductionFeature::L3_FORWARDING, + production_features::ProductionFeature::INTERFACE_NEIGHBOR_TABLE}; + } else { + return {production_features::ProductionFeature::L3_FORWARDING}; + } } public: @@ -513,7 +551,9 @@ class HwEcmpNeighborTest : public HwEcmpTest { } auto getNdpTable(PortDescriptor port, std::shared_ptr& state) { - auto switchType = getSwitchType(); + const auto switchType = + utility::checkSameAndGetAsic(getAgentEnsemble()->getL3Asics()) + ->getSwitchType(); if (isIntfNbrTable() || switchType == cfg::SwitchType::VOQ) { auto portId = port.phyPortID(); @@ -522,7 +562,8 @@ class HwEcmpNeighborTest : public HwEcmpTest { return state->getInterfaces()->getNode(intfId)->getNdpTable()->modify( intfId, &state); } else if (switchType == cfg::SwitchType::NPU) { - auto vlanId = ecmpHelper_->getVlan(port, getProgrammedState()); + utility::EcmpSetupAnyNPorts6 ecmpHelper(getProgrammedState()); + auto vlanId = ecmpHelper.getVlan(port, getProgrammedState()); return state->getVlans()->getNode(*vlanId)->getNdpTable()->modify( *vlanId, &state); } @@ -531,46 +572,51 @@ class HwEcmpNeighborTest : public HwEcmpTest { } }; -TYPED_TEST_SUITE(HwEcmpNeighborTest, NeighborTableTypes); +TYPED_TEST_SUITE(AgentEcmpNeighborTest, NeighborTableTypes); -TYPED_TEST(HwEcmpNeighborTest, ResolvePendingResolveNexthop) { +TYPED_TEST(AgentEcmpNeighborTest, ResolvePendingResolveNexthop) { auto setup = [=, this]() { - this->resolveNhops(2); + this->resolveNhops(numNeighborEntries); std::map> entries; + utility::EcmpSetupAnyNPorts6 ecmpHelper(this->getProgrammedState()); // mark neighbors connected over ports pending - auto state0 = this->getProgrammedState(); - for (auto i = 0; i < 2; i++) { - const auto& ecmpNextHop = this->ecmpHelper_->nhop(i); - auto port = ecmpNextHop.portDesc; - auto ntable = this->getNdpTable(port, state0); - auto entry = ntable->getEntry(ecmpNextHop.ip); - auto intfId = entry->getIntfID(); - ntable->removeEntry(ecmpNextHop.ip); - ntable->addPendingEntry(ecmpNextHop.ip, intfId); - entries[port] = std::move(entry); - } - this->applyNewState(state0); + this->applyNewState([&](const std::shared_ptr& in) { + auto state = in->clone(); + for (auto i = 0; i < numNeighborEntries; i++) { + const auto& ecmpNextHop = ecmpHelper.nhop(i); + auto port = ecmpNextHop.portDesc; + auto ntable = this->getNdpTable(port, state); + auto entry = ntable->getEntry(ecmpNextHop.ip); + auto intfId = entry->getIntfID(); + ntable->removeEntry(ecmpNextHop.ip); + ntable->addPendingEntry(ecmpNextHop.ip, intfId); + entries[port] = std::move(entry); + } + return state; + }); // mark neighbors connected over ports reachable - auto state1 = this->getProgrammedState(); - for (auto i = 0; i < 2; i++) { - const auto& ecmpNextHop = this->ecmpHelper_->nhop(i); - auto port = ecmpNextHop.portDesc; - auto ntable = this->getNdpTable(port, state1); - auto entry = entries[port]; - ntable->updateEntry(NeighborEntryFields::fromThrift( - entry->toThrift())); - } - this->applyNewState(state1); - this->ecmpHelper_->programRoutes(this->getRouteUpdater(), 2); + this->applyNewState([&](const std::shared_ptr& in) { + auto state = in->clone(); + for (auto i = 0; i < numNeighborEntries; i++) { + const auto& ecmpNextHop = ecmpHelper.nhop(i); + auto port = ecmpNextHop.portDesc; + auto ntable = this->getNdpTable(port, state); + auto entry = entries[port]; + ntable->updateEntry(NeighborEntryFields::fromThrift( + entry->toThrift())); + } + return state; + }); + auto wrapper = this->getSw()->getRouteUpdater(); + ecmpHelper.programRoutes(&wrapper, 2); }; auto verify = [=, this]() { /* ecmp is resolved */ - EXPECT_EQ( - utility::getEcmpSizeInHw( - this->getHwSwitch(), kDefaultRoutePrefix, this->kRid, 2), - 2); + WITH_RETRIES({ + EXPECT_EVENTUALLY_EQ(this->getEcmpSizeInHw(numNeighborEntries), 2); + }); }; this->verifyAcrossWarmBoots(setup, verify); } diff --git a/fboss/agent/test/agent_hw_tests/AgentFabricSwitchTests.cpp b/fboss/agent/test/agent_hw_tests/AgentFabricSwitchTests.cpp index 97098ae5c2e20..30b0f7c7c53fe 100644 --- a/fboss/agent/test/agent_hw_tests/AgentFabricSwitchTests.cpp +++ b/fboss/agent/test/agent_hw_tests/AgentFabricSwitchTests.cpp @@ -522,6 +522,7 @@ class AgentBalancedInputModeTest : public AgentFabricSwitchTest { AgentFabricSwitchTest::setCmdLineFlagOverrides(); FLAGS_disable_looped_fabric_ports = false; FLAGS_detect_wrong_fabric_connections = false; + FLAGS_enable_balanced_input_mode = true; } }; diff --git a/fboss/agent/test/agent_hw_tests/AgentHwAclQualifierTest.cpp b/fboss/agent/test/agent_hw_tests/AgentHwAclQualifierTest.cpp index 8861002c9083c..404f0a4885ecd 100644 --- a/fboss/agent/test/agent_hw_tests/AgentHwAclQualifierTest.cpp +++ b/fboss/agent/test/agent_hw_tests/AgentHwAclQualifierTest.cpp @@ -211,7 +211,9 @@ class AgentHwAclQualifierTest : public AgentHwTest { auto newCfg = initialConfig(*getAgentEnsemble()); if (FLAGS_enable_acl_table_group) { utility::addAclTableGroup( - &newCfg, cfg::AclStage::INGRESS, utility::getAclTableGroupName()); + &newCfg, + cfg::AclStage::INGRESS, + utility::kDefaultAclTableGroupName()); std::vector actions = {}; std::vector qualifiers = addQualifiers ? utility::genAclQualifiersConfig(this->getAsicType()) diff --git a/fboss/agent/test/agent_hw_tests/AgentMacLearningTests.cpp b/fboss/agent/test/agent_hw_tests/AgentMacLearningTests.cpp index b441f91345edc..34059e41887a1 100644 --- a/fboss/agent/test/agent_hw_tests/AgentMacLearningTests.cpp +++ b/fboss/agent/test/agent_hw_tests/AgentMacLearningTests.cpp @@ -17,7 +17,6 @@ #include "fboss/agent/hw/switch_asics/HwAsic.h" #include "fboss/agent/packet/Ethertype.h" #include "fboss/agent/state/PortDescriptor.h" -#include "fboss/agent/state/StateDelta.h" #include "fboss/agent/state/SwitchState.h" #include "fboss/agent/test/AgentHwTest.h" #include "fboss/agent/test/EcmpSetupHelper.h" diff --git a/fboss/agent/test/agent_hw_tests/AgentMemoryUsageTests.cpp b/fboss/agent/test/agent_hw_tests/AgentMemoryUsageTests.cpp index 14b76dd592bb8..8fc86fafacaf7 100644 --- a/fboss/agent/test/agent_hw_tests/AgentMemoryUsageTests.cpp +++ b/fboss/agent/test/agent_hw_tests/AgentMemoryUsageTests.cpp @@ -50,9 +50,8 @@ class AgentMemoryUsageTest : public AgentHwTest { TEST_F(AgentMemoryUsageTest, MeasureStatsCollection) { if (!folly::usingJEMalloc()) { -#ifdef GTEST_SKIP - GTEST_SKIP() << "This test only works with jemalloc"; -#endif + // Don't use GTEST_SKIP() because it messes up our stats. + XLOG(INFO) << "Skipping test because jemalloc is not enabled"; return; } diff --git a/fboss/agent/test/agent_hw_tests/AgentMirroringTests.cpp b/fboss/agent/test/agent_hw_tests/AgentMirroringTests.cpp index da89b64399276..9a4d2475ad1fd 100644 --- a/fboss/agent/test/agent_hw_tests/AgentMirroringTests.cpp +++ b/fboss/agent/test/agent_hw_tests/AgentMirroringTests.cpp @@ -146,9 +146,6 @@ class AgentMirroringTest : public AgentHwTest { const std::string& mirrorName) const { auto trafficPort = getTrafficPort(ensemble); std::string aclEntryName = kMirrorAcl; - utility::addAclTableGroup( - cfg, cfg::AclStage::INGRESS, utility::getAclTableGroupName()); - utility::addDefaultAclTable(*cfg); auto aclEntry = cfg::AclEntry(); aclEntry.name() = aclEntryName; aclEntry.actionType() = cfg::AclActionType::PERMIT; diff --git a/fboss/agent/test/agent_hw_tests/AgentOlympicQosTests.cpp b/fboss/agent/test/agent_hw_tests/AgentOlympicQosTests.cpp index 7d2091e3fcf0c..fab721c000c8c 100644 --- a/fboss/agent/test/agent_hw_tests/AgentOlympicQosTests.cpp +++ b/fboss/agent/test/agent_hw_tests/AgentOlympicQosTests.cpp @@ -12,7 +12,6 @@ #include "fboss/agent/test/AgentHwTest.h" #include "fboss/agent/test/EcmpSetupHelper.h" #include "fboss/agent/test/ResourceLibUtil.h" -#include "fboss/agent/test/utils/AsicUtils.h" #include "fboss/agent/test/utils/ConfigUtils.h" #include "fboss/agent/test/utils/OlympicTestUtils.h" #include "fboss/agent/test/utils/PacketTestUtils.h" diff --git a/fboss/agent/test/agent_hw_tests/AgentOverflowTestBase.cpp b/fboss/agent/test/agent_hw_tests/AgentOverflowTestBase.cpp index 5341339a2c8d9..4a1f553869f15 100644 --- a/fboss/agent/test/agent_hw_tests/AgentOverflowTestBase.cpp +++ b/fboss/agent/test/agent_hw_tests/AgentOverflowTestBase.cpp @@ -4,7 +4,6 @@ #include "fboss/agent/TxPacket.h" #include "fboss/agent/hw/test/ProdConfigFactory.h" -#include "fboss/agent/test/utils/AsicUtils.h" #include "fboss/agent/test/utils/ConfigUtils.h" #include "fboss/agent/test/utils/CoppTestUtils.h" #include "fboss/agent/test/utils/EcmpDataPlaneTestUtil.h" diff --git a/fboss/agent/test/agent_hw_tests/AgentPortLedTests.cpp b/fboss/agent/test/agent_hw_tests/AgentPortLedTests.cpp new file mode 100644 index 0000000000000..a496684d44ab1 --- /dev/null +++ b/fboss/agent/test/agent_hw_tests/AgentPortLedTests.cpp @@ -0,0 +1,64 @@ +// Copyright 2004-present Facebook. All Rights Reserved. + +#include "fboss/agent/test/AgentHwTest.h" + +#include "fboss/agent/test/utils/AsicUtils.h" +#include "fboss/agent/test/utils/ConfigUtils.h" +#include "fboss/lib/CommonUtils.h" + +namespace facebook::fboss { + +class AgentPortLedTest : public AgentHwTest { + protected: + cfg::SwitchConfig initialConfig( + const AgentEnsemble& ensemble) const override { + return utility::onePortPerInterfaceConfig( + ensemble.getSw(), + ensemble.masterLogicalPortIds(), + true /*interfaceHasSubnet*/); + } + + std::vector + getProductionFeaturesVerified() const override { + return {production_features::ProductionFeature::LED_PROGRAMMING}; + } + + bool verifyLedStatus(PortID portID, bool up) { + auto client = getAgentEnsemble()->getHwAgentTestClient( + getSw()->getScopeResolver()->scope(portID).switchId()); + return client->sync_verifyPortLedStatus(portID, up); + } +}; + +TEST_F(AgentPortLedTest, TestLed) { + auto setup = []() {}; + auto verify = [=, this]() { + auto portID = masterLogicalPortIds()[0]; + bringUpPort(portID); + WITH_RETRIES({ EXPECT_EVENTUALLY_TRUE(verifyLedStatus(portID, true)); }); + bringDownPort(portID); + WITH_RETRIES({ EXPECT_EVENTUALLY_TRUE(verifyLedStatus(portID, false)); }); + }; + verifyAcrossWarmBoots(setup, verify); +} + +TEST_F(AgentPortLedTest, TestLedFromSwitchState) { + auto portID = masterLogicalPortIds()[0]; + auto setup = [&]() { + bringUpPort(portID); + WITH_RETRIES({ EXPECT_EVENTUALLY_TRUE(verifyLedStatus(portID, true)); }); + applyNewState([&](const std::shared_ptr& in) { + auto newState = in->clone(); + auto port = newState->getPorts()->getNode(portID); + auto newPort = port->modify(&newState); + newPort->setLedPortExternalState( + PortLedExternalState::EXTERNAL_FORCE_OFF); + return newState; + }); + }; + auto verify = [&]() { + WITH_RETRIES({ EXPECT_EVENTUALLY_TRUE(verifyLedStatus(portID, false)); }); + }; + verifyAcrossWarmBoots(setup, verify); +} +} // namespace facebook::fboss diff --git a/fboss/agent/test/agent_hw_tests/AgentPrbsTests.cpp b/fboss/agent/test/agent_hw_tests/AgentPrbsTests.cpp index f7ae3b5e74da8..eb16ee7b6ed40 100644 --- a/fboss/agent/test/agent_hw_tests/AgentPrbsTests.cpp +++ b/fboss/agent/test/agent_hw_tests/AgentPrbsTests.cpp @@ -3,7 +3,6 @@ #include "fboss/agent/hw/test/ConfigFactory.h" #include "fboss/agent/test/AgentHwTest.h" #include "fboss/agent/test/utils/FabricTestUtils.h" -#include "fboss/lib/CommonUtils.h" #include "fboss/agent/test/gen-cpp2/production_features_types.h" diff --git a/fboss/agent/test/agent_hw_tests/AgentQueuePerHostRouteTests.cpp b/fboss/agent/test/agent_hw_tests/AgentQueuePerHostRouteTests.cpp index 183ea2cddf382..6d3e07ac6050c 100644 --- a/fboss/agent/test/agent_hw_tests/AgentQueuePerHostRouteTests.cpp +++ b/fboss/agent/test/agent_hw_tests/AgentQueuePerHostRouteTests.cpp @@ -13,7 +13,6 @@ #include "fboss/agent/test/EcmpSetupHelper.h" #include "fboss/agent/test/ResourceLibUtil.h" #include "fboss/agent/test/TestUtils.h" -#include "fboss/agent/test/utils/AsicUtils.h" #include "fboss/agent/test/utils/ConfigUtils.h" #include "fboss/agent/test/utils/QosTestUtils.h" #include "fboss/agent/test/utils/QueuePerHostTestUtils.h" diff --git a/fboss/agent/test/agent_hw_tests/AgentRouteOverDifferentAddressFamilyNhopTests.cpp b/fboss/agent/test/agent_hw_tests/AgentRouteOverDifferentAddressFamilyNhopTests.cpp index 3d33159904d2e..c927fc278247f 100644 --- a/fboss/agent/test/agent_hw_tests/AgentRouteOverDifferentAddressFamilyNhopTests.cpp +++ b/fboss/agent/test/agent_hw_tests/AgentRouteOverDifferentAddressFamilyNhopTests.cpp @@ -11,16 +11,13 @@ #include "fboss/agent/test/AgentHwTest.h" #include "fboss/agent/packet/PktFactory.h" -#include "fboss/lib/CommonUtils.h" #include "fboss/agent/test/gen-cpp2/production_features_types.h" -#include "fboss/agent/packet/EthHdr.h" #include "fboss/agent/packet/IPv4Hdr.h" #include "fboss/agent/packet/IPv6Hdr.h" #include "fboss/agent/packet/UDPHeader.h" #include "fboss/agent/test/EcmpSetupHelper.h" -#include "fboss/lib/CommonUtils.h" #include #include "fboss/agent/TxPacket.h" diff --git a/fboss/agent/test/agent_hw_tests/AgentSflowMirrorTest.cpp b/fboss/agent/test/agent_hw_tests/AgentSflowMirrorTest.cpp index 03d182a403d82..9a267b2b5f661 100644 --- a/fboss/agent/test/agent_hw_tests/AgentSflowMirrorTest.cpp +++ b/fboss/agent/test/agent_hw_tests/AgentSflowMirrorTest.cpp @@ -10,6 +10,7 @@ #include "fboss/agent/packet/PktFactory.h" #include "fboss/agent/packet/PktUtil.h" +#include "fboss/agent/packet/UDPDatagram.h" #include "fboss/agent/test/AgentEnsemble.h" #include "fboss/agent/test/EcmpSetupHelper.h" #include "fboss/agent/test/ResourceLibUtil.h" @@ -28,6 +29,7 @@ #include "fboss/agent/SflowShimUtils.h" DEFINE_int32(sflow_test_rate, 90000, "sflow sampling rate for hw test"); +constexpr uint16_t kTimeoutSecs = 10; const std::string kSflowMirror = "sflow_mirror"; @@ -57,19 +59,30 @@ class AgentSflowMirrorTest : public AgentHwTest { ensemble.getSw()->getScopeResolver()->scope(port0).switchId(); auto asic = ensemble.getSw()->getHwAsicTable()->getHwAsic(port0Switch); auto ports = getPortsForSampling(ensemble.masterLogicalPortIds(), asic); - this->configureMirror(cfg); if (asic->isSupported(HwAsic::Feature::EVENTOR_PORT_FOR_SFLOW)) { utility::addEventorVoqConfig(&cfg, cfg::StreamType::UNICAST); } return cfg; } - void configureMirror(cfg::SwitchConfig& cfg, bool v4) const { + void configureMirror( + cfg::SwitchConfig& cfg, + bool v4, + uint32_t udpSrcPort = 6545, + uint32_t udpDstPort = 6343) const { utility::configureSflowMirror( - cfg, kSflowMirror, false, utility::getSflowMirrorDestination(v4).str()); + cfg, + kSflowMirror, + false, + utility::getSflowMirrorDestination(v4).str(), + udpSrcPort, + udpDstPort); } - virtual void configureMirror(cfg::SwitchConfig& cfg) const { + virtual void configureMirror( + cfg::SwitchConfig& cfg, + uint32_t udpSrcPort = 6545, + uint32_t udpDstPort = 6343) const { configureMirror(cfg, std::is_same_v); } @@ -145,7 +158,22 @@ class AgentSflowMirrorTest : public AgentHwTest { return getSw()->getHwLogicalPortId(port); } - PortID getSflowPacketSrcPort(const std::vector& sflowPayload) { + void verifySflowExporterIp(const std::vector& sflowPayload) { + auto asic = checkSameAndGetAsic(); + if (asic->getAsicType() == cfg::AsicType::ASIC_TYPE_JERICHO3) { + uint8_t exporterIpBytes[16]; + for (int i = 0; i < 16; i++) { + exporterIpBytes[i] = sflowPayload[i + 8]; + } + auto exporterIp = + folly::IPAddressV6::fromBinary(folly::ByteRange(exporterIpBytes, 16)); + EXPECT_EQ(exporterIp, utility::getSflowMirrorSource()); + } + } + void validateSflowPacketHeader( + const std::vector& sflowPayload, + PortID srcPortId) { + PortID expectedSrcPortId; /* * sflow shim format for Tajo: * @@ -165,7 +193,8 @@ class AgentSflowMirrorTest : public AgentHwTest { if (asic->getAsicType() == cfg::AsicType::ASIC_TYPE_EBRO || asic->getAsicType() == cfg::AsicType::ASIC_TYPE_YUBA) { auto systemPortId = sflowPayload[0] << 8 | sflowPayload[1]; - return static_cast(systemPortId - asic->getSystemPortIDOffset()); + expectedSrcPortId = + static_cast(systemPortId - asic->getSflowPortIDOffset()); } else if (asic->getAsicType() == cfg::AsicType::ASIC_TYPE_JERICHO3) { /* * Bytes 68 through 71 carry the ingress ifindex in sflow v5 header @@ -177,14 +206,17 @@ class AgentSflowMirrorTest : public AgentHwTest { systemPortId |= static_cast((sflowPayload[offsetBytesStart + i]) << j); } - return getPortID(SystemPortID(systemPortId), getProgrammedState()); + expectedSrcPortId = + getPortID(SystemPortID(systemPortId), getProgrammedState()); + verifySflowExporterIp(sflowPayload); } else { auto sourcePortOffset = 0; if (asic->isSupported(HwAsic::Feature::SFLOW_SHIM_VERSION_FIELD)) { sourcePortOffset += 4; } - return static_cast(sflowPayload[sourcePortOffset]); + expectedSrcPortId = static_cast(sflowPayload[sourcePortOffset]); } + EXPECT_EQ(expectedSrcPortId, srcPortId); } uint16_t getMirrorTruncateSize() const { @@ -285,7 +317,7 @@ class AgentSflowMirrorTest : public AgentHwTest { std::optional> capturedPktBuf; WITH_RETRIES({ - capturedPktBuf = snooper.waitForPacket(10); + capturedPktBuf = snooper.waitForPacket(kTimeoutSecs); EXPECT_EVENTUALLY_TRUE(capturedPktBuf.has_value()); }); folly::io::Cursor capturedPktCursor{capturedPktBuf->get()}; @@ -306,14 +338,15 @@ class AgentSflowMirrorTest : public AgentHwTest { } auto delta = capturedPkt.length() - payloadLength; EXPECT_LE(delta, getSflowPacketHeaderLength(!isV4)); - auto payload = isV4 ? capturedPkt.v4PayLoad()->udpPayload()->payload() - : capturedPkt.v6PayLoad()->udpPayload()->payload(); - + auto udpPayload = isV4 ? capturedPkt.v4PayLoad()->udpPayload() + : capturedPkt.v6PayLoad()->udpPayload(); + auto payload = udpPayload->payload(); + EXPECT_EQ(udpPayload->header().csum, 0); auto hwLogicalPortId = getHwLogicalPortId(ports[1]); if (!hwLogicalPortId) { - EXPECT_EQ(getSflowPacketSrcPort(payload), ports[1]); + validateSflowPacketHeader(payload, ports[1]); } else { - EXPECT_EQ(getSflowPacketSrcPort(payload), PortID(*hwLogicalPortId)); + validateSflowPacketHeader(payload, PortID(*hwLogicalPortId)); } if (checkSameAndGetAsic()->getAsicType() != cfg::AsicType::ASIC_TYPE_EBRO && @@ -359,7 +392,7 @@ class AgentSflowMirrorTest : public AgentHwTest { std::optional> capturedPktBuf; WITH_RETRIES({ - capturedPktBuf = snooper.waitForPacket(10); + capturedPktBuf = snooper.waitForPacket(kTimeoutSecs); EXPECT_EVENTUALLY_TRUE(capturedPktBuf.has_value()); }); folly::io::Cursor capturedPktCursor{capturedPktBuf->get()}; @@ -374,6 +407,11 @@ class AgentSflowMirrorTest : public AgentHwTest { capturedPkt.length() - capturedHdrSize, getMirrorTruncateSize()); /* TODO: confirm length in CS00010399535 and CS00012130950 */ + bool isV4 = std::is_same_v; + auto udpPayload = isV4 ? capturedPkt.v4PayLoad()->udpPayload() + : capturedPkt.v6PayLoad()->udpPayload(); + verifySflowExporterIp(udpPayload->payload()); + EXPECT_EQ(udpPayload->header().csum, 0); } uint64_t getSampleCount(const std::map& stats) { @@ -434,6 +472,7 @@ class AgentSflowMirrorTest : public AgentHwTest { auto setup = [=, this]() { auto ports = getPortsForSampling(); auto config = initialConfig(*getAgentEnsemble()); + configureMirror(config); configSampling(config, 1); configureTrapAcl(config); applyNewConfig(config); @@ -452,6 +491,7 @@ class AgentSflowMirrorTest : public AgentHwTest { void testSampledPacketRate(bool truncate = false) { auto setup = [=, this]() { auto config = initialConfig(*getAgentEnsemble()); + configureMirror(config); configSampling(config, FLAGS_sflow_test_rate); configureTrapAcl(config); applyNewConfig(config); @@ -461,6 +501,37 @@ class AgentSflowMirrorTest : public AgentHwTest { verifyAcrossWarmBoots(setup, verify); } + void verifySrsPortRandomizationOnSflowPacket(uint16_t numPackets = 10) { + auto ports = getPortsForSampling(); + getAgentEnsemble()->bringDownPorts( + std::vector(ports.begin() + 2, ports.end())); + std::set l4SrcPorts; + for (auto i = 0; i < numPackets; i++) { + auto pkt = genPacket(1, 256); + utility::SwSwitchPacketSnooper snooper(getSw(), "snooper"); + XLOG(DBG2) << "Sending packet through port " << ports[1]; + getAgentEnsemble()->sendPacketAsync( + std::move(pkt), PortDescriptor(ports[1]), std::nullopt); + + std::optional> capturedPktBuf; + WITH_RETRIES({ + capturedPktBuf = snooper.waitForPacket(kTimeoutSecs); + EXPECT_EVENTUALLY_TRUE(capturedPktBuf.has_value()); + }); + folly::io::Cursor capturedPktCursor{capturedPktBuf->get()}; + auto capturedPkt = utility::EthFrame(capturedPktCursor); + auto udpHeader = capturedPkt.v6PayLoad()->udpPayload()->header(); + l4SrcPorts.insert(udpHeader.srcPort); + /* + * J3 randomize the source based on the time stamp in the asic. + * Add a delay to ensure the source ports are different for + * every packet that is trapped to CPU with SFLOW header. + */ + sleep(2); + } + EXPECT_GT(l4SrcPorts.size(), 1); + } + utility::MacAddressGenerator macGenerator = utility::MacAddressGenerator(); constexpr static size_t kDefaultPayloadSize = 1400; constexpr static size_t kDefaultPercentErrorThreshold = 7; @@ -483,16 +554,26 @@ class AgentSflowMirrorTruncateTest : public AgentSflowMirrorTest { } } - void configureMirror(cfg::SwitchConfig& cfg, bool v4) const { + void configureMirror( + cfg::SwitchConfig& cfg, + bool v4, + uint32_t udpSrcPort = 6545, + uint32_t udpDstPort = 6343) const { utility::configureSflowMirror( cfg, kSflowMirror, true /* truncate */, - utility::getSflowMirrorDestination(v4).str()); + utility::getSflowMirrorDestination(v4).str(), + udpSrcPort, + udpDstPort); } - virtual void configureMirror(cfg::SwitchConfig& cfg) const override { - configureMirror(cfg, std::is_same_v); + virtual void configureMirror( + cfg::SwitchConfig& cfg, + uint32_t udpSrcPort = 6545, + uint32_t udpDstPort = 6343) const override { + configureMirror( + cfg, std::is_same_v, udpSrcPort, udpDstPort); } }; @@ -548,11 +629,14 @@ class AgentSflowMirrorWithLineRateTrafficTest allPorts.begin(), allPorts.begin() + kNumDataTrafficPorts); std::vector losslessPgIds = {kLosslessPriority}; auto config = initialConfig(*getAgentEnsemble()); + configureMirror(config); // Configure 1:1 sampling to ensure high rate on mirror egress port configSampling(config, 1); // PFC buffer configurations to ensure we have lossless traffic const std::map tcToPgOverride{}; + // We dont want PFC here, so set global shared threshold to be high const utility::PfcBufferParams bufferParams{ + .globalShared = 20 * 1024 * 1024, .scalingFactor = cfg::MMUScalingFactor::ONE}; utility::setupPfcBuffers( getAgentEnsemble(), @@ -566,11 +650,15 @@ class AgentSflowMirrorWithLineRateTrafficTest applyNewConfig(config); resolveRouteForMirrorDestination(); utility::setupEcmpDataplaneLoopOnAllPorts(getAgentEnsemble()); + // 1. Low rate of the order of 1% of 800G is good enough to saturate the + // eventor port, which currently has a max possible rate of ~13Gbps. + // 2. For prod, we sample 1 out of 60K packets, hence the rate expected + // on eventor port is low, 1/60K of 14.4Tbps ~240Mbps. utility::createTrafficOnMultiplePorts( getAgentEnsemble(), kNumDataTrafficPorts, sendPacket, - 50 /*desiredPctLineRate*/); + 1 /*desiredPctLineRate*/); }; auto verify = [=, this]() { verifySflowEgressPortNotStuck(); @@ -719,6 +807,7 @@ TEST_F(AgentSflowMirrorTestV4, MoveToV6) { // Test to migrate v4 mirror to v6 auto setup = [=, this]() { auto config = initialConfig(*getAgentEnsemble()); + configureMirror(config); configSampling(config, 1); configureTrapAcl(config); applyNewConfig(config); @@ -743,6 +832,7 @@ TEST_F(AgentSflowMirrorTestV6, MoveToV4) { // Test to migrate v6 mirror to v4 auto setup = [=, this]() { auto config = initialConfig(*getAgentEnsemble()); + configureMirror(config); configSampling(config, 1); configureTrapAcl(config); applyNewConfig(config); @@ -762,4 +852,19 @@ TEST_F(AgentSflowMirrorTestV6, MoveToV4) { verifyAcrossWarmBoots( setup, verify, setupPostWb, [=, this]() { verifySampledPacket(true); }); } + +TEST_F(AgentSflowMirrorTestV6, verifyL4SrcPortRandomization) { + auto setup = [=, this]() { + auto config = initialConfig(*getAgentEnsemble()); + configureMirror(config, false, 0); + configSampling(config, 1); + configureTrapAcl(config); + applyNewConfig(config); + resolveRouteForMirrorDestination(); + }; + auto verify = [=, this]() { + this->verifySrsPortRandomizationOnSflowPacket(); + }; + verifyAcrossWarmBoots(setup, verify); +} } // namespace facebook::fboss diff --git a/fboss/agent/test/agent_hw_tests/AgentTrafficPfcTests.cpp b/fboss/agent/test/agent_hw_tests/AgentTrafficPfcTests.cpp index d82deeea397eb..8da1e360b26c2 100644 --- a/fboss/agent/test/agent_hw_tests/AgentTrafficPfcTests.cpp +++ b/fboss/agent/test/agent_hw_tests/AgentTrafficPfcTests.cpp @@ -394,15 +394,6 @@ class AgentTrafficPfcTest : public AgentHwTest { std::vector portIds = portIdsForTest(); auto setup = [&]() { - for (auto [switchId, asic] : this->getAsics()) { - if ((asic->getAsicType() == cfg::AsicType::ASIC_TYPE_JERICHO2) || - (asic->getAsicType() == cfg::AsicType::ASIC_TYPE_JERICHO3)) { - // Keep low scaling factor so that headroom usage is attempted - // for Jericho family of ASICs. - testParams.buffer.scalingFactor = cfg::MMUScalingFactor::ONE_32768TH; - } - } - // Setup PFC auto cfg = getAgentEnsemble()->getCurrentConfig(); std::vector portIdsToConfigure = portIds; @@ -511,6 +502,13 @@ TEST_P(AgentTrafficPfcGenTest, verifyPfc) { const int trafficClass = kLosslessTrafficClass; const int pfcPriority = kLosslessPriority; TrafficTestParams trafficParams = GetParam(); + auto asicType = utility::checkSameAndGetAsic(getAgentEnsemble()->getL3Asics()) + ->getAsicType(); + if (asicType == cfg::AsicType::ASIC_TYPE_JERICHO2 || + asicType == cfg::AsicType::ASIC_TYPE_JERICHO3) { + // Keep smaller global pool size + trafficParams.buffer.globalShared = kGlobalSharedBytes; + } runTestWithCfg(trafficClass, pfcPriority, {}, trafficParams); } @@ -537,11 +535,7 @@ TEST_F(AgentTrafficPfcTest, verifyPfcWithMapChanges_1) { TEST_F(AgentTrafficPfcTest, verifyBufferPoolWatermarks) { const int trafficClass = kLosslessTrafficClass; const int pfcPriority = kLosslessPriority; - cfg::MMUScalingFactor scalingFactor = - utility::checkSameAndGetAsic(getAgentEnsemble()->getL3Asics()) - ->getAsicType() == cfg::AsicType::ASIC_TYPE_JERICHO2 - ? cfg::MMUScalingFactor::ONE_32768TH - : cfg::MMUScalingFactor::ONE_64TH; + cfg::MMUScalingFactor scalingFactor = cfg::MMUScalingFactor::ONE_64TH; runTestWithCfg( trafficClass, pfcPriority, diff --git a/fboss/agent/test/agent_hw_tests/AgentTunnelMgrTests.cpp b/fboss/agent/test/agent_hw_tests/AgentTunnelMgrTests.cpp index c0f6702a3ab61..5f94a9236acce 100644 --- a/fboss/agent/test/agent_hw_tests/AgentTunnelMgrTests.cpp +++ b/fboss/agent/test/agent_hw_tests/AgentTunnelMgrTests.cpp @@ -79,12 +79,7 @@ class AgentTunnelMgrTest : public AgentHwTest { } while (iss); } - void checkKernelEntriesRemoved() { - auto config = initialConfig(*getAgentEnsemble()); - auto intfIp = folly::IPAddress::createNetwork( - config.interfaces()[0].ipAddresses()[0], -1, false) - .first; - + void checkKernelEntriesRemoved(const std::string& intfIp) { // Check that the source route rule entries are not present in the kernel auto cmd = folly::to("ip rule list | grep ", intfIp); @@ -107,7 +102,7 @@ class AgentTunnelMgrTest : public AgentHwTest { EXPECT_TRUE( output.find(folly::to(intfIp)) == std::string::npos); - // Check that the default route entries are not present in the kernel + // Check that the route entries are not present in the kernel cmd = folly::to("ip route list | grep ", intfIp); output = runShellCmd(cmd); @@ -119,6 +114,46 @@ class AgentTunnelMgrTest : public AgentHwTest { output.find(folly::to(intfIp)) == std::string::npos); } + // Check that the kernel entries are present in the kernel + void checkKernelEntriesExist( + const std::string& intfIp, + bool checkRouteEntry = true) { + // Check that the source route rule entries are present in the kernel + auto cmd = folly::to("ip rule list | grep ", intfIp); + + auto output = runShellCmd(cmd); + + XLOG(DBG2) << "checkKernelEntries Cmd: " << cmd; + XLOG(DBG2) << "checkKernelEntries Output: \n" << output; + + EXPECT_TRUE( + output.find(folly::to(intfIp)) != std::string::npos); + + // Check that the tunnel address entries are present in the kernel + cmd = folly::to("ip addr list | grep ", intfIp); + + output = runShellCmd(cmd); + + XLOG(DBG2) << "checkKernelEntries Cmd: " << cmd; + XLOG(DBG2) << "checkKernelEntries Output: \n" << output; + + EXPECT_TRUE( + output.find(folly::to(intfIp)) != std::string::npos); + + if (checkRouteEntry) { + // Check that the route entries are present in the kernel + cmd = folly::to("ip route list | grep ", intfIp); + + output = runShellCmd(cmd); + + XLOG(DBG2) << "checkKernelEntries Cmd: " << cmd; + XLOG(DBG2) << "checkKernelEntries Output:" << output; + + EXPECT_TRUE( + output.find(folly::to(intfIp)) != std::string::npos); + } + } + cfg::SwitchConfig initialConfig( const AgentEnsemble& ensemble) const override { auto cfg = utility::oneL3IntfConfig( @@ -148,53 +183,82 @@ TEST_F(AgentTunnelMgrTest, checkKernelEntries) { auto tunMgr_ = getAgentEnsemble()->getSw()->getTunManager(); auto status = tunMgr_->getIntfStatus( getProgrammedState(), (InterfaceID)config.interfaces()[0].get_intfID()); + // There could be a race condition where the interface is up, but the + // socket is not created. So, checking for the socket existence. + auto socketExists = tunMgr_->isValidNlSocket(); // There is a known limitation in the kernel that the source route rule // entries are not created if the interface is not up. So, checking for // the kernel entries if the interface is up - if (status) { - // Check that the source route rule entries are present in the kernel - auto cmd = folly::to("ip rule list | grep ", intfIp); + if (status && socketExists) { + checkKernelEntriesExist(folly::to(intfIp)); + } - auto output = runShellCmd(cmd); + // Clear kernel entries + clearKernelEntries(folly::to(intfIp)); - XLOG(DBG2) << "checkKernelEntries Cmd: " << cmd; - XLOG(DBG2) << "checkKernelEntries Output: \n" << output; + // Check that the kernel entries are removed + checkKernelEntriesRemoved(folly::to(intfIp)); + }; - EXPECT_TRUE( - output.find(folly::to(intfIp)) != std::string::npos); + verifyAcrossWarmBoots(setup, verify); +} - // Check that the tunnel address entries are present in the kernel - cmd = folly::to("ip addr list | grep ", intfIp); +// Test that the tunnel manager is able to handle ip address change of the +// interface +TEST_F(AgentTunnelMgrTest, changeIpAddress) { + auto setup = [=]() {}; + auto verify = [=, this]() { + auto config = initialConfig(*getAgentEnsemble()); - output = runShellCmd(cmd); + // Apply the config + applyNewConfig(config); + waitForStateUpdates(getAgentEnsemble()->getSw()); - XLOG(DBG2) << "checkKernelEntries Cmd: " << cmd; - XLOG(DBG2) << "checkKernelEntries Output: \n" << output; + auto intfIp = folly::IPAddress::createNetwork( + config.interfaces()[0].ipAddresses()[0], -1, false) + .first; - EXPECT_TRUE( - output.find(folly::to(intfIp)) != std::string::npos); + // Get TunManager pointer + auto tunMgr_ = getAgentEnsemble()->getSw()->getTunManager(); + auto status = tunMgr_->getIntfStatus( + getProgrammedState(), (InterfaceID)config.interfaces()[0].get_intfID()); + // There could be a race condition where the interface is up, but the + // socket is not created. So, checking for the socket existence. + auto socketExists = tunMgr_->isValidNlSocket(); - // Check that the default route entries are present in the kernel - cmd = folly::to("ip route list | grep ", intfIp); + // There is a known limitation in the kernel that the source route rule + // entries are not created if the interface is not up. So, checking for + // the kernel entries if the interface is up + if (status && socketExists) { + checkKernelEntriesExist(folly::to(intfIp)); + } - output = runShellCmd(cmd); + // change ip address of the interface + config.interfaces()[0].ipAddresses()[0] = "2.2.2.2/32"; + config.interfaces()[0].ipAddresses()[1] = "2::/128"; - XLOG(DBG2) << "checkKernelEntries Cmd: " << cmd; - XLOG(DBG2) << "checkKernelEntries Output:" << output; + // Apply the config + applyNewConfig(config); + waitForStateUpdates(getAgentEnsemble()->getSw()); - EXPECT_TRUE( - output.find(folly::to(intfIp)) != std::string::npos); + intfIp = folly::IPAddress::createNetwork( + config.interfaces()[0].ipAddresses()[0], -1, false) + .first; + + // Route entries installation is currently not consistent after the ip + // address change. So, passing false for checkRouteEntry. + if (status) { + checkKernelEntriesExist(folly::to(intfIp), false); } // Clear kernel entries clearKernelEntries(folly::to(intfIp)); // Check that the kernel entries are removed - checkKernelEntriesRemoved(); + checkKernelEntriesRemoved(folly::to(intfIp)); }; verifyAcrossWarmBoots(setup, verify); } - } // namespace facebook::fboss diff --git a/fboss/agent/test/agent_hw_tests/AgentVoqSwitchTests.cpp b/fboss/agent/test/agent_hw_tests/AgentVoqSwitchTests.cpp index 3e7a48d18818d..52d725db6282e 100644 --- a/fboss/agent/test/agent_hw_tests/AgentVoqSwitchTests.cpp +++ b/fboss/agent/test/agent_hw_tests/AgentVoqSwitchTests.cpp @@ -313,6 +313,37 @@ class AgentVoqSwitchTest : public AgentHwTest { }); } + std::vector getInterfacePortSysPortDesc() { + auto ports = getProgrammedState()->getPorts()->getAllNodes(); + std::vector portDescs; + std::for_each( + ports->begin(), + ports->end(), + [this, &portDescs](const auto& idAndPort) { + const auto port = idAndPort.second; + if (port->getPortType() == cfg::PortType::INTERFACE_PORT) { + portDescs.push_back(PortDescriptor(getSystemPortID( + PortDescriptor(port->getID()), cfg::Scope::GLOBAL))); + } + }); + return portDescs; + } + + // Resolve and return list of local nhops (only NIF ports) + std::vector resolveLocalNhops( + utility::EcmpSetupTargetedPorts6& ecmpHelper) { + std::vector portDescs = getInterfacePortSysPortDesc(); + + applyNewState([&](const std::shared_ptr& in) { + auto out = in->clone(); + for (const auto& portDesc : portDescs) { + out = ecmpHelper.resolveNextHops(out, {portDesc}); + } + return out; + }); + return portDescs; + } + private: void addCpuTrafficPolicy( cfg::SwitchConfig& cfg, @@ -2093,47 +2124,10 @@ class AgentVoqSwitchFullScaleDsfNodesTest : public AgentVoqSwitchTest { return 64; } - // Resolve and return list of local nhops (only NIF ports) - std::vector resolveLocalNhops( - utility::EcmpSetupTargetedPorts6& ecmpHelper) { - std::vector portDescs = getInterfacePortSysPortDesc(); - - applyNewState([&](const std::shared_ptr& in) { - auto out = in->clone(); - for (const auto& portDesc : portDescs) { - out = ecmpHelper.resolveNextHops(out, {portDesc}); - } - return out; - }); - return portDescs; - } - - void setupRemoteIntfAndSysPorts() { - auto updateDsfStateFn = [this](const std::shared_ptr& in) { - std::map> switchId2SystemPorts; - std::map> switchId2Rifs; - utility::populateRemoteIntfAndSysPorts( - switchId2SystemPorts, - switchId2Rifs, - getSw()->getConfig(), - isSupportedOnAllAsics(HwAsic::Feature::RESERVED_ENCAP_INDEX_RANGE)); - return DsfStateUpdaterUtil::getUpdatedState( - in, - getSw()->getScopeResolver(), - getSw()->getRib(), - switchId2SystemPorts, - switchId2Rifs); - }; - getSw()->getRib()->updateStateInRibThread([this, updateDsfStateFn]() { - getSw()->updateStateWithHwFailureProtection( - folly::sformat("Update state for node: {}", 0), updateDsfStateFn); - }); - } - - boost::container::flat_set getRemoteSysPortDesc() { + flat_set getRemoteSysPortDesc() { auto remoteSysPorts = getProgrammedState()->getRemoteSystemPorts()->getAllNodes(); - boost::container::flat_set sysPortDescs; + flat_set sysPortDescs; std::for_each( remoteSysPorts->begin(), remoteSysPorts->end(), @@ -2144,22 +2138,6 @@ class AgentVoqSwitchFullScaleDsfNodesTest : public AgentVoqSwitchTest { return sysPortDescs; } - std::vector getInterfacePortSysPortDesc() { - auto ports = getProgrammedState()->getPorts()->getAllNodes(); - std::vector portDescs; - std::for_each( - ports->begin(), - ports->end(), - [this, &portDescs](const auto& idAndPort) { - const auto port = idAndPort.second; - if (port->getPortType() == cfg::PortType::INTERFACE_PORT) { - portDescs.push_back(PortDescriptor(getSystemPortID( - PortDescriptor(port->getID()), cfg::Scope::GLOBAL))); - } - }); - return portDescs; - } - protected: void setCmdLineFlagOverrides() const override { AgentVoqSwitchTest::setCmdLineFlagOverrides(); @@ -2186,7 +2164,11 @@ class AgentVoqSwitchFullScaleDsfNodesWithFabricPortsTest }; TEST_F(AgentVoqSwitchFullScaleDsfNodesTest, systemPortScaleTest) { - auto setup = [this]() { setupRemoteIntfAndSysPorts(); }; + auto setup = [this]() { + utility::setupRemoteIntfAndSysPorts( + getSw(), + isSupportedOnAllAsics(HwAsic::Feature::RESERVED_ENCAP_INDEX_RANGE)); + }; verifyAcrossWarmBoots(setup, [] {}); } @@ -2194,24 +2176,35 @@ TEST_F(AgentVoqSwitchFullScaleDsfNodesTest, remoteNeighborWithEcmpGroup) { const auto kEcmpWidth = getMaxEcmpWidth(); const auto kMaxDeviation = 25; auto setup = [&]() { - setupRemoteIntfAndSysPorts(); + utility::setupRemoteIntfAndSysPorts( + getSw(), + isSupportedOnAllAsics(HwAsic::Feature::RESERVED_ENCAP_INDEX_RANGE)); utility::EcmpSetupTargetedPorts6 ecmpHelper(getProgrammedState()); // Resolve remote nhops and get a list of remote sysPort descriptors - boost::container::flat_set sysPortDescs = + flat_set sysPortDescs = utility::resolveRemoteNhops(getAgentEnsemble(), ecmpHelper); + CHECK(sysPortDescs.size() > kEcmpWidth); for (int i = 0; i < getMaxEcmpGroup(); i++) { auto prefix = RoutePrefixV6{ folly::IPAddressV6(folly::to(i, "::", i)), static_cast(i == 0 ? 0 : 128)}; auto routeUpdater = getSw()->getRouteUpdater(); - ecmpHelper.programRoutes( - &routeUpdater, - flat_set( - std::make_move_iterator(sysPortDescs.begin() + i), - std::make_move_iterator(sysPortDescs.begin() + i + kEcmpWidth)), - {prefix}); + auto sysPortStart = (i * kEcmpWidth) % sysPortDescs.size(); + auto ecmpMemberPorts = flat_set( + std::make_move_iterator(sysPortDescs.begin() + sysPortStart), + std::make_move_iterator( + sysPortDescs.begin() + + std::min(sysPortStart + kEcmpWidth, sysPortDescs.size()))); + // Wrap around and start adding from front of the ports + if (ecmpMemberPorts.size() < kEcmpWidth) { + ecmpMemberPorts.insert( + std::make_move_iterator(sysPortDescs.begin()), + std::make_move_iterator( + sysPortDescs.begin() + (kEcmpWidth - ecmpMemberPorts.size()))); + } + ecmpHelper.programRoutes(&routeUpdater, ecmpMemberPorts, {prefix}); } }; auto verify = [&]() { @@ -2261,7 +2254,9 @@ TEST_F(AgentVoqSwitchFullScaleDsfNodesTest, remoteAndLocalLoadBalance) { const auto kEcmpWidth = 16; const auto kMaxDeviation = 25; auto setup = [&]() { - setupRemoteIntfAndSysPorts(); + utility::setupRemoteIntfAndSysPorts( + getSw(), + isSupportedOnAllAsics(HwAsic::Feature::RESERVED_ENCAP_INDEX_RANGE)); utility::EcmpSetupTargetedPorts6 ecmpHelper(getProgrammedState()); // Resolve remote and local nhops and get a list of sysPort descriptors @@ -2341,7 +2336,9 @@ TEST_F(AgentVoqSwitchFullScaleDsfNodesTest, stressProgramEcmpRoutes) { const auto routeScale = 5; const auto numIterations = 20; auto setup = [&]() { - setupRemoteIntfAndSysPorts(); + utility::setupRemoteIntfAndSysPorts( + getSw(), + isSupportedOnAllAsics(HwAsic::Feature::RESERVED_ENCAP_INDEX_RANGE)); utility::EcmpSetupTargetedPorts6 ecmpHelper(getProgrammedState()); // Resolve remote nhops and get a list of remote sysPort descriptors @@ -2484,7 +2481,11 @@ TEST_F(AgentVoqSwitchLineRateTest, creditsDeleted) { TEST_F( AgentVoqSwitchFullScaleDsfNodesWithFabricPortsTest, failUpdateAtFullSysPortScale) { - auto setup = [this]() { setupRemoteIntfAndSysPorts(); }; + auto setup = [this]() { + utility::setupRemoteIntfAndSysPorts( + getSw(), + isSupportedOnAllAsics(HwAsic::Feature::RESERVED_ENCAP_INDEX_RANGE)); + }; auto verify = [this]() { getSw()->getRib()->updateStateInRibThread([this]() { EXPECT_THROW( @@ -2527,6 +2528,7 @@ class AgentVoqSwitchConditionalEntropyTest : public AgentVoqSwitchTest { port.conditionalEntropyRehash() = true; } } + cfg.switchSettings()->conditionalEntropyRehashPeriodUS() = 100; return cfg; } }; @@ -2547,4 +2549,81 @@ TEST_F(AgentVoqSwitchConditionalEntropyTest, init) { }; verifyAcrossWarmBoots(setup, verify); } + +TEST_F(AgentVoqSwitchConditionalEntropyTest, verifyLoadBalancing) { + const auto kEcmpWidth = 4; + const auto kMaxDeviation = 25; + + auto getLocalSysPortDesc = [this](auto ecmpHelper) { + std::vector sysPortDescs; + auto localSysPortDescs = resolveLocalNhops(ecmpHelper); + sysPortDescs.insert( + sysPortDescs.end(), + localSysPortDescs.begin(), + localSysPortDescs.begin() + kEcmpWidth); + return sysPortDescs; + }; + auto setup = [this, kEcmpWidth, &getLocalSysPortDesc]() { + utility::EcmpSetupTargetedPorts6 ecmpHelper(getProgrammedState()); + + std::vector sysPortDescs = getLocalSysPortDesc(ecmpHelper); + + auto prefix = RoutePrefixV6{folly::IPAddressV6("0::0"), 0}; + auto routeUpdater = getSw()->getRouteUpdater(); + ecmpHelper.programRoutes( + &routeUpdater, + flat_set( + std::make_move_iterator(sysPortDescs.begin()), + std::make_move_iterator(sysPortDescs.end())), + {prefix}); + }; + + auto verify = [this, &getLocalSysPortDesc]() { + // Send traffic through the 5th interface port and verify load balancing + const auto kIngressPort = 5; + CHECK(masterLogicalInterfacePortIds().size() > kIngressPort + 1); + + utility::EcmpSetupTargetedPorts6 ecmpHelper(getProgrammedState()); + std::vector sysPortDescs = getLocalSysPortDesc(ecmpHelper); + + std::function( + const std::vector&)> + getSysPortStatsFn = [&](const std::vector& portIds) { + getSw()->updateStats(); + return getLatestSysPortStats(portIds); + }; + + utility::pumpTrafficAndVerifyLoadBalanced( + [&]() { + utility::pumpRoCETraffic( + true /* isV6 */, + utility::getAllocatePktFn(getAgentEnsemble()), + utility::getSendPktFunc(getAgentEnsemble()), + utility::getFirstInterfaceMac(getProgrammedState()), + std::nullopt /* vlan */, + masterLogicalInterfacePortIds()[kIngressPort], + utility::kUdfL4DstPort, + 255 /* hopLimit */, + std::nullopt /* srcMacAddr */, + 1000000, /* packetCount */ + utility::kUdfRoceOpcodeAck, + 0x40, /* reserved */ + std::nullopt, /* nextHdr */ + true /* sameDstQueue */); + }, + [&]() { + auto ports = std::make_unique>(); + for (auto sysPortDecs : sysPortDescs) { + ports->push_back(static_cast(sysPortDecs.sysPortID())); + } + getSw()->clearPortStats(ports); + }, + [&]() { + WITH_RETRIES(EXPECT_EVENTUALLY_TRUE(utility::isLoadBalanced( + sysPortDescs, {}, getSysPortStatsFn, kMaxDeviation, false))); + return true; + }); + }; + verifyAcrossWarmBoots(setup, verify); +} } // namespace facebook::fboss diff --git a/fboss/agent/test/agent_hw_tests/BUCK b/fboss/agent/test/agent_hw_tests/BUCK index d889ace4fc957..d6f761af76263 100644 --- a/fboss/agent/test/agent_hw_tests/BUCK +++ b/fboss/agent/test/agent_hw_tests/BUCK @@ -21,6 +21,7 @@ cpp_library( "AgentDiagShellStressTests.cpp", "AgentDscpMarkingTests.cpp", "AgentDscpQueueMappingTests.cpp", + "AgentEcmpTests.cpp", "AgentEgressForwardingDiscardCounterTests.cpp", "AgentEmptyTests.cpp", "AgentFabricSwitchTests.cpp", @@ -47,6 +48,7 @@ cpp_library( "AgentPacketSendTests.cpp", "AgentPfcTests.cpp", "AgentPortBandWidthTests.cpp", + "AgentPortLedTests.cpp", "AgentPortTests.cpp", "AgentPrbsTests.cpp", "AgentQueuePerHostL2Tests.cpp", @@ -243,7 +245,6 @@ cpp_library( "//fboss/agent/test/utils:acl_test_utils", "//fboss/agent/test/utils:asic_test_utils", "//fboss/agent/test/utils:scale_test_utils", - "//fboss/lib:common_utils", "//folly:network_address", ], ) diff --git a/fboss/agent/test/integration_tests/AgentIntegrationTest.cpp b/fboss/agent/test/integration_tests/AgentIntegrationTest.cpp index 7001bfca6c120..e5aaf1e6f9c4e 100644 --- a/fboss/agent/test/integration_tests/AgentIntegrationTest.cpp +++ b/fboss/agent/test/integration_tests/AgentIntegrationTest.cpp @@ -15,7 +15,6 @@ #include "fboss/agent/hw/test/ConfigFactory.h" #include "fboss/agent/hw/test/HwTestPacketUtils.h" #include "fboss/agent/hw/test/LoadBalancerUtils.h" -#include "fboss/agent/state/SwitchState.h" #include "fboss/agent/test/EcmpSetupHelper.h" #include "fboss/agent/test/integration_tests/AgentIntegrationTest.h" #include "fboss/lib/config/PlatformConfigUtils.h" diff --git a/fboss/agent/test/link_tests/AgentEnsembleLacpSanityTests.cpp b/fboss/agent/test/link_tests/AgentEnsembleLacpSanityTests.cpp index 39c70e02ab3a1..091ea30f4dfcb 100644 --- a/fboss/agent/test/link_tests/AgentEnsembleLacpSanityTests.cpp +++ b/fboss/agent/test/link_tests/AgentEnsembleLacpSanityTests.cpp @@ -2,7 +2,6 @@ #include "fboss/agent/hw/test/ConfigFactory.h" #include "fboss/agent/state/AggregatePort.h" -#include "fboss/agent/state/Port.h" #include "fboss/agent/state/SwitchState.h" #include "fboss/agent/test/TrunkUtils.h" #include "fboss/agent/test/link_tests/AgentEnsembleLinkTest.h" diff --git a/fboss/agent/test/link_tests/AgentEnsembleLinkTest.cpp b/fboss/agent/test/link_tests/AgentEnsembleLinkTest.cpp index db2dcb13c9f4a..ce9095811722c 100644 --- a/fboss/agent/test/link_tests/AgentEnsembleLinkTest.cpp +++ b/fboss/agent/test/link_tests/AgentEnsembleLinkTest.cpp @@ -18,12 +18,10 @@ #include "fboss/agent/test/utils/CoppTestUtils.h" #include "fboss/agent/test/utils/LoadBalancerTestUtils.h" #include "fboss/agent/test/utils/QosTestUtils.h" -#include "fboss/lib/CommonFileUtils.h" #include "fboss/lib/CommonUtils.h" #include "fboss/lib/config/PlatformConfigUtils.h" #include "fboss/lib/phy/gen-cpp2/phy_types_custom_protocol.h" #include "fboss/lib/thrift_service_client/ThriftServiceClient.h" -#include "fboss/qsfp_service/if/gen-cpp2/transceiver_types_custom_protocol.h" DEFINE_bool( list_production_feature, @@ -576,6 +574,9 @@ void AgentEnsembleLinkTest::printProductionFeatures() const { for (const auto& feature : getProductionFeatures()) { supportedFeatures.push_back(apache::thrift::util::enumNameSafe(feature)); } + if (supportedFeatures.size() == 0) { + throw std::runtime_error("No production features found for this Link Test"); + } std::cout << "Feature List: " << folly::join(",", supportedFeatures) << "\n"; } diff --git a/fboss/agent/test/link_tests/AgentEnsemblePtpTests.cpp b/fboss/agent/test/link_tests/AgentEnsemblePtpTests.cpp index 6dd3857b1208d..a9dfe1591e67c 100644 --- a/fboss/agent/test/link_tests/AgentEnsemblePtpTests.cpp +++ b/fboss/agent/test/link_tests/AgentEnsemblePtpTests.cpp @@ -13,7 +13,6 @@ #include "fboss/agent/test/utils/PacketSnooper.h" #include "fboss/agent/test/utils/PacketTestUtils.h" #include "fboss/agent/test/utils/TrapPacketUtils.h" -#include "fboss/lib/CommonUtils.h" #include "common/process/Process.h" diff --git a/fboss/agent/test/link_tests/BUCK b/fboss/agent/test/link_tests/BUCK index 330e9cc8d89d4..e306b76a24ac4 100644 --- a/fboss/agent/test/link_tests/BUCK +++ b/fboss/agent/test/link_tests/BUCK @@ -59,7 +59,6 @@ cpp_library( "//fboss/agent/hw/test:hw_test_port_utils", "//fboss/agent/hw/test:load_balancer_utils", "//fboss/agent/packet:packet", - "//fboss/agent/packet:pktutil", "//fboss/agent/platforms/common:platform_mapping", "//fboss/agent/state:state", "//fboss/agent/state:state_utils", diff --git a/fboss/agent/test/link_tests/LacpSanityTests.cpp b/fboss/agent/test/link_tests/LacpSanityTests.cpp index b32da67a2d134..86201e8ce9166 100644 --- a/fboss/agent/test/link_tests/LacpSanityTests.cpp +++ b/fboss/agent/test/link_tests/LacpSanityTests.cpp @@ -4,7 +4,6 @@ #include "fboss/agent/hw/HwSwitchWarmBootHelper.h" #include "fboss/agent/hw/test/ConfigFactory.h" #include "fboss/agent/state/AggregatePort.h" -#include "fboss/agent/state/Port.h" #include "fboss/agent/state/SwitchState.h" #include "fboss/agent/test/TrunkUtils.h" #include "fboss/agent/test/link_tests/LinkTest.h" diff --git a/fboss/agent/test/link_tests/LinkSanityTests.cpp b/fboss/agent/test/link_tests/LinkSanityTests.cpp index 9de80924b7411..c55da8591e110 100644 --- a/fboss/agent/test/link_tests/LinkSanityTests.cpp +++ b/fboss/agent/test/link_tests/LinkSanityTests.cpp @@ -13,8 +13,6 @@ #include "fboss/agent/test/link_tests/LinkTestUtils.h" #include "fboss/lib/CommonUtils.h" -#include "fboss/agent/platforms/common/PlatformMapping.h" - using namespace ::testing; using namespace facebook::fboss; diff --git a/fboss/agent/test/link_tests/LinkTest.cpp b/fboss/agent/test/link_tests/LinkTest.cpp index fa7f06b20fea0..6ab7a851ebb78 100644 --- a/fboss/agent/test/link_tests/LinkTest.cpp +++ b/fboss/agent/test/link_tests/LinkTest.cpp @@ -20,12 +20,10 @@ #include "fboss/agent/test/link_tests/LinkTestUtils.h" #include "fboss/agent/test/utils/CoppTestUtils.h" #include "fboss/agent/test/utils/QosTestUtils.h" -#include "fboss/lib/CommonFileUtils.h" #include "fboss/lib/CommonUtils.h" #include "fboss/lib/config/PlatformConfigUtils.h" #include "fboss/lib/phy/gen-cpp2/phy_types_custom_protocol.h" #include "fboss/lib/thrift_service_client/ThriftServiceClient.h" -#include "fboss/qsfp_service/if/gen-cpp2/transceiver_types_custom_protocol.h" DEFINE_bool( list_production_feature, @@ -571,6 +569,9 @@ void LinkTest::printProductionFeatures() const { for (const auto& feature : getProductionFeatures()) { supportedFeatures.push_back(apache::thrift::util::enumNameSafe(feature)); } + if (supportedFeatures.size() == 0) { + throw std::runtime_error("No production features found for this Link Test"); + } std::cout << "Feature List: " << folly::join(",", supportedFeatures) << "\n"; } diff --git a/fboss/agent/test/link_tests/MacLearningTests.cpp b/fboss/agent/test/link_tests/MacLearningTests.cpp index 7760c27ba437f..33988f59aaf7c 100644 --- a/fboss/agent/test/link_tests/MacLearningTests.cpp +++ b/fboss/agent/test/link_tests/MacLearningTests.cpp @@ -6,15 +6,11 @@ #include "fboss/agent/hw/test/ConfigFactory.h" #include "fboss/agent/hw/test/HwTestPacketUtils.h" #include "fboss/agent/hw/test/LoadBalancerUtils.h" -#include "fboss/agent/state/AggregatePort.h" -#include "fboss/agent/state/Port.h" #include "fboss/agent/state/SwitchState.h" #include "fboss/agent/test/TestUtils.h" #include "fboss/agent/test/link_tests/LinkTest.h" #include "fboss/agent/test/utils/QosTestUtils.h" -#include "fboss/lib/CommonFileUtils.h" - using namespace ::testing; using namespace facebook::fboss; diff --git a/fboss/agent/test/link_tests/PhyInfoTest.cpp b/fboss/agent/test/link_tests/PhyInfoTest.cpp index e118ab462f554..31d2e67e6fbb3 100644 --- a/fboss/agent/test/link_tests/PhyInfoTest.cpp +++ b/fboss/agent/test/link_tests/PhyInfoTest.cpp @@ -46,6 +46,7 @@ void validateInterfaceAndMedium( {TransmitterTechnology::OPTICAL, { phy::InterfaceType::SR, + phy::InterfaceType::SR2, phy::InterfaceType::SR4, phy::InterfaceType::SR8, // Choice for optical profiles in diff --git a/fboss/agent/test/link_tests/PtpTests.cpp b/fboss/agent/test/link_tests/PtpTests.cpp index f7ac416d7a14a..a3b28b3b5ac71 100644 --- a/fboss/agent/test/link_tests/PtpTests.cpp +++ b/fboss/agent/test/link_tests/PtpTests.cpp @@ -4,17 +4,14 @@ #include #include "fboss/agent/PlatformPort.h" #include "fboss/agent/SwSwitch.h" -#include "fboss/agent/hw/test/HwTestEcmpUtils.h" #include "fboss/agent/hw/test/HwTestPacketUtils.h" #include "fboss/agent/packet/PTPHeader.h" -#include "fboss/agent/packet/PktUtil.h" #include "fboss/agent/state/SwitchState.h" #include "fboss/agent/test/link_tests/LinkTest.h" #include "fboss/agent/test/link_tests/LinkTestUtils.h" #include "fboss/agent/test/utils/PacketSnooper.h" #include "fboss/agent/test/utils/PacketTestUtils.h" #include "fboss/agent/test/utils/TrapPacketUtils.h" -#include "fboss/lib/CommonUtils.h" #include "common/process/Process.h" diff --git a/fboss/agent/test/production_features.thrift b/fboss/agent/test/production_features.thrift index 1e8a1a68e27e0..0f5452a9cf47b 100644 --- a/fboss/agent/test/production_features.thrift +++ b/fboss/agent/test/production_features.thrift @@ -56,6 +56,7 @@ enum ProductionFeature { UDF_WR_IMMEDIATE_ACL = 43, VLAN = 44, PORT_MTU_ERROR_TRAP = 45, + LED_PROGRAMMING = 46, # production feature which is present on all platforms, keep it at the end HW_SWITCH = 65536, } diff --git a/fboss/agent/test/soak_tests/BUCK b/fboss/agent/test/soak_tests/BUCK index 0f2aa0a8d21c3..ac7325c0c4ae6 100644 --- a/fboss/agent/test/soak_tests/BUCK +++ b/fboss/agent/test/soak_tests/BUCK @@ -14,7 +14,6 @@ cpp_library( exported_deps = [ "//common/process:process", "//fboss/agent:core", - "//fboss/agent:stats", "//fboss/agent/hw/test:config_factory", "//fboss/agent/hw/test:hw_packet_utils", "//fboss/agent/hw/test:load_balancer_utils", @@ -22,7 +21,6 @@ cpp_library( "//fboss/agent/state:state_utils", "//fboss/agent/test:agent_test", "//fboss/agent/test:utils", - "//folly:network_address", ], exported_external_deps = [ "gflags", diff --git a/fboss/agent/test/soak_tests/InterruptTest.cpp b/fboss/agent/test/soak_tests/InterruptTest.cpp index 837686c779701..ab5117d2d5610 100644 --- a/fboss/agent/test/soak_tests/InterruptTest.cpp +++ b/fboss/agent/test/soak_tests/InterruptTest.cpp @@ -2,13 +2,9 @@ #include "fboss/agent/test/soak_tests/InterruptTest.h" -#include #include -#include - #include "fboss/agent/SwSwitch.h" -#include "fboss/agent/SwitchStats.h" #include "fboss/agent/hw/test/ConfigFactory.h" #include "fboss/agent/hw/test/HwTestPacketUtils.h" #include "fboss/agent/hw/test/LoadBalancerUtils.h" @@ -18,8 +14,6 @@ #include "common/process/Process.h" -#include - namespace facebook::fboss { void InterruptTest::setUpPorts() { diff --git a/fboss/agent/test/utils/AclTestUtils.cpp b/fboss/agent/test/utils/AclTestUtils.cpp index 7c9353ced9d16..8ffbfda713a4b 100644 --- a/fboss/agent/test/utils/AclTestUtils.cpp +++ b/fboss/agent/test/utils/AclTestUtils.cpp @@ -21,7 +21,7 @@ DECLARE_bool(enable_acl_table_group); namespace facebook::fboss::utility { std::string kDefaultAclTable() { - return "AclTable1"; + return cfg::switch_config_constants::DEFAULT_INGRESS_ACL_TABLE(); } std::vector genAclQualifiersConfig( @@ -49,26 +49,24 @@ std::vector genAclQualifiersConfig( int getAclTableIndex( cfg::SwitchConfig* cfg, - const std::optional& tableName) { - if (!cfg->aclTableGroup()) { + const std::string& tableName, + const std::string& tableGroupName) { + auto aclTableGroup = getAclTableGroup(*cfg, tableGroupName); + if (!aclTableGroup) { throw FbossError( "Multiple acl tables flag enabled but config leaves aclTableGroup empty"); } - if (!tableName.has_value()) { - throw FbossError( - "Multiple acl tables flag enabled but no acl table name provided for add/delAcl()"); - } int tableIndex; - std::vector aclTables = *cfg->aclTableGroup()->aclTables(); + std::vector aclTables = *aclTableGroup->aclTables(); std::vector::iterator it = std::find_if( aclTables.begin(), aclTables.end(), [&](cfg::AclTable const& aclTable) { - return *aclTable.name() == tableName.value(); + return *aclTable.name() == tableName; }); if (it != aclTables.end()) { tableIndex = std::distance(aclTables.begin(), it); } else { throw FbossError( - "Table with name ", tableName.value(), " does not exist in config"); + "Table with name ", tableName, " does not exist in config"); } return tableIndex; } @@ -76,14 +74,14 @@ int getAclTableIndex( cfg::AclEntry* addAclEntry( cfg::SwitchConfig* cfg, cfg::AclEntry& acl, - const std::optional& tableName) { + const std::string& aclTableName) { if (FLAGS_enable_acl_table_group) { - auto aclTableName = - tableName.has_value() ? tableName.value() : kDefaultAclTable(); - int tableNumber = getAclTableIndex(cfg, aclTableName); - CHECK(cfg->aclTableGroup().has_value()); - cfg->aclTableGroup()->aclTables()[tableNumber].aclEntries()->push_back(acl); - return &cfg->aclTableGroup()->aclTables()[tableNumber].aclEntries()->back(); + auto aclTableGroup = getAclTableGroup(*cfg); + int tableNumber = + getAclTableIndex(cfg, aclTableName, *aclTableGroup->name()); + CHECK(aclTableGroup); + aclTableGroup->aclTables()[tableNumber].aclEntries()->push_back(acl); + return &aclTableGroup->aclTables()[tableNumber].aclEntries()->back(); } else { cfg->acls()->push_back(acl); return &cfg->acls()->back(); @@ -99,7 +97,10 @@ cfg::AclEntry* addAcl( *acl.name() = aclName; *acl.actionType() = aclActionType; - return addAclEntry(cfg, acl, tableName); + if (!tableName) { + return addAclEntry(cfg, acl, kDefaultAclTable()); + } + return addAclEntry(cfg, acl, *tableName); } void addEtherTypeToAcl( @@ -117,7 +118,8 @@ std::shared_ptr getAclEntryByName( std::shared_ptr swAcl; if (FLAGS_enable_acl_table_group) { auto aclMap = state->getAclsForTable( - cfg::AclStage::INGRESS, utility::kDefaultAclTable()); + cfg::AclStage::INGRESS, + cfg::switch_config_constants::DEFAULT_INGRESS_ACL_TABLE()); if (aclMap) { swAcl = aclMap->getNodeIf(aclName); } @@ -140,19 +142,22 @@ std::optional getAclTrafficCounter( return std::nullopt; } -std::string getAclTableGroupName() { +std::string kDefaultAclTableGroupName() { return "acl-table-group-ingress"; } std::vector& getAcls( cfg::SwitchConfig* cfg, const std::optional& tableName) { - auto aclTableName = - tableName.has_value() ? tableName.value() : kDefaultAclTable(); + auto aclTableName = tableName.has_value() + ? tableName.value() + : cfg::switch_config_constants::DEFAULT_INGRESS_ACL_TABLE(); if (FLAGS_enable_acl_table_group) { - CHECK(cfg->aclTableGroup()); - return *cfg->aclTableGroup() - ->aclTables()[getAclTableIndex(cfg, aclTableName)] + auto* aclTableGroup = getAclTableGroup(*cfg); + CHECK(aclTableGroup); + return *aclTableGroup + ->aclTables()[getAclTableIndex( + cfg, aclTableName, *aclTableGroup->name())] .aclEntries(); } return *cfg->acls(); @@ -182,16 +187,21 @@ void addAclTableGroup( cfg::AclStage aclStage, const std::string& aclTableGroupName) { cfg::AclTableGroup cfgTableGroup; - cfg->aclTableGroup() = cfgTableGroup; - cfg->aclTableGroup()->name() = aclTableGroupName; - cfg->aclTableGroup()->stage() = aclStage; + cfgTableGroup.name() = aclTableGroupName; + cfgTableGroup.stage() = aclStage; + cfg->aclTableGroups() = {std::move(cfgTableGroup)}; } void addDefaultAclTable(cfg::SwitchConfig& cfg) { /* Create default ACL table similar to whats being done in Agent today */ std::vector qualifiers = {}; std::vector actions = {}; - addAclTable(&cfg, kDefaultAclTable(), 0 /* priority */, actions, qualifiers); + addAclTable( + &cfg, + cfg::switch_config_constants::DEFAULT_INGRESS_ACL_TABLE(), + 0 /* priority */, + actions, + qualifiers); } cfg::AclTable* addAclTable( @@ -200,7 +210,8 @@ cfg::AclTable* addAclTable( const int aclTablePriority, const std::vector& actionTypes, const std::vector& qualifiers) { - if (!cfg->aclTableGroup()) { + auto aclTableGroup = getAclTableGroup(*cfg); + if (!aclTableGroup) { throw FbossError( "Attempted to add acl table without first creating acl table group"); } @@ -211,18 +222,19 @@ cfg::AclTable* addAclTable( aclTable.actionTypes() = actionTypes; aclTable.qualifiers() = qualifiers; - cfg->aclTableGroup()->aclTables()->push_back(aclTable); - return &cfg->aclTableGroup()->aclTables()->back(); + aclTableGroup->aclTables()->push_back(aclTable); + return &aclTableGroup->aclTables()->back(); } void delAclTable(cfg::SwitchConfig* cfg, const std::string& aclTableName) { - if (!cfg->aclTableGroup()) { + auto aclTableGroup = getAclTableGroup(*cfg); + if (!aclTableGroup) { throw FbossError( "Attempted to delete acl table (", aclTableName, ") from uninstantiated table group"); } - auto& aclTables = *cfg->aclTableGroup()->aclTables(); + auto& aclTables = *aclTableGroup->aclTables(); aclTables.erase( std::remove_if( aclTables.begin(), @@ -392,10 +404,34 @@ std::shared_ptr getAclEntry( bool enableAclTableGroup) { if (enableAclTableGroup) { return state - ->getAclsForTable(cfg::AclStage::INGRESS, utility::kDefaultAclTable()) + ->getAclsForTable( + cfg::AclStage::INGRESS, + cfg::switch_config_constants::DEFAULT_INGRESS_ACL_TABLE()) ->getNodeIf(name); } return state->getAcl(name); } +cfg::AclTableGroup* FOLLY_NULLABLE +getAclTableGroup(cfg::SwitchConfig& config, const std::string& name) { + if (!config.aclTableGroups()) { + return nullptr; + } + for (auto iter = config.aclTableGroups()->begin(); + iter != config.aclTableGroups()->end(); + iter++) { + if (iter->name_ref() == name) { + return std::addressof(*iter); + } + } + return nullptr; +} + +cfg::AclTableGroup* FOLLY_NULLABLE getAclTableGroup(cfg::SwitchConfig& config) { + if (!config.aclTableGroups() || + config.aclTableGroups()->begin() == config.aclTableGroups()->end()) { + return nullptr; + } + return (*config.aclTableGroups()).data(); +} } // namespace facebook::fboss::utility diff --git a/fboss/agent/test/utils/AclTestUtils.h b/fboss/agent/test/utils/AclTestUtils.h index c7a556ce6b283..9861a85e65c0e 100644 --- a/fboss/agent/test/utils/AclTestUtils.h +++ b/fboss/agent/test/utils/AclTestUtils.h @@ -32,7 +32,7 @@ std::string kDefaultAclTable(); cfg::AclEntry* addAclEntry( cfg::SwitchConfig* cfg, cfg::AclEntry& acl, - const std::optional& tableName); + const std::string& tableName); cfg::AclEntry* addAcl( cfg::SwitchConfig* cfg, @@ -50,7 +50,8 @@ std::vector genAclQualifiersConfig( int getAclTableIndex( cfg::SwitchConfig* cfg, - const std::optional& tableName); + const std::string& tableName, + const std::string& tableGroupName); std::shared_ptr getAclEntryByName( const std::shared_ptr state, @@ -60,7 +61,7 @@ std::optional getAclTrafficCounter( const std::shared_ptr state, const std::string& aclName); -std::string getAclTableGroupName(); +std::string kDefaultAclTableGroupName(); std::vector& getAcls( cfg::SwitchConfig* cfg, @@ -143,4 +144,9 @@ std::shared_ptr getAclEntry( const std::string& name, bool enableAclTableGroup); +cfg::AclTableGroup* FOLLY_NULLABLE +getAclTableGroup(cfg::SwitchConfig& config, const std::string& name); + +cfg::AclTableGroup* FOLLY_NULLABLE getAclTableGroup(cfg::SwitchConfig& config); + } // namespace facebook::fboss::utility diff --git a/fboss/agent/test/utils/AqmTestUtils.h b/fboss/agent/test/utils/AqmTestUtils.h index 9060ecc268191..12d235a745f90 100644 --- a/fboss/agent/test/utils/AqmTestUtils.h +++ b/fboss/agent/test/utils/AqmTestUtils.h @@ -16,7 +16,7 @@ namespace facebook::fboss { class HwAsic; class HwPortStats; class TestEnsembleIf; -class PortID; +struct PortID; namespace utility { int getRoundedBufferThreshold( diff --git a/fboss/agent/test/utils/BUCK b/fboss/agent/test/utils/BUCK index 454d13c7fffa4..fe042c029c1c2 100644 --- a/fboss/agent/test/utils/BUCK +++ b/fboss/agent/test/utils/BUCK @@ -504,6 +504,7 @@ cpp_library( ], exported_deps = [ ":dsf_config_utils", + "//fboss/agent:core", "//fboss/agent:fboss-types", "//fboss/agent:switch_config-cpp2-types", "//fboss/agent:switchid_scope_resolver", diff --git a/fboss/agent/test/utils/ConfigUtils.cpp b/fboss/agent/test/utils/ConfigUtils.cpp index 9ecd26d3c22d3..b3ec9a4ceb71b 100644 --- a/fboss/agent/test/utils/ConfigUtils.cpp +++ b/fboss/agent/test/utils/ConfigUtils.cpp @@ -12,7 +12,6 @@ #include #include "fboss/agent/AgentFeatures.h" -#include "fboss/agent/Constants.h" #include "fboss/agent/FbossError.h" #include "fboss/agent/SwSwitch.h" #include "fboss/agent/test/TestEnsembleIf.h" @@ -25,8 +24,9 @@ DEFINE_bool(nodeZ, false, "Setup test config as node Z"); +namespace facebook::fboss::utility { + namespace { -constexpr auto kSysPortOffset = 10; void removePort( facebook::fboss::cfg::SwitchConfig& config, facebook::fboss::PortID port, @@ -48,10 +48,41 @@ void removePort( cfgPort->state() = facebook::fboss::cfg::PortState::DISABLED; } } -} // namespace -namespace facebook::fboss::utility { +int getRdswSysPortBlockSize() { + // For dual stage 3/2q mode, sys ports are allocated in 2 blocks of 28 while + // for single state we allocate a single block of 44 + return isDualStage3Q2QMode() ? 28 : 44; +} +int getEdswSysPortBlockSize() { + // For dual stage 3/2q mode, sys ports are allocated in 2 blocks of 14 while + // for single state we allocate a single block of 26 + return isDualStage3Q2QMode() ? 14 : 26; +} + +int getPerNodeSysPortsBlockSize(const HwAsic& asic, int remoteSwitchId) { + if (remoteSwitchId < getMaxRdsw() * asic.getNumCores()) { + return getRdswSysPortBlockSize(); + } + return getEdswSysPortBlockSize(); +} +int getSysPortIdsAllocated( + const HwAsic& asic, + int remoteSwitchId, + int64_t firstSwitchIdMin) { + auto portsConsumed = firstSwitchIdMin; + auto deviceIndex = remoteSwitchId / asic.getNumCores(); + CHECK(asic.getAsicType() == cfg::AsicType::ASIC_TYPE_JERICHO3); + if (deviceIndex < getMaxRdsw()) { + portsConsumed += deviceIndex * getRdswSysPortBlockSize() - 1; + } else { + portsConsumed += getMaxRdsw() * getRdswSysPortBlockSize() + + (deviceIndex - getMaxRdsw()) * getEdswSysPortBlockSize() - 1; + } + return portsConsumed; +} +} // namespace folly::MacAddress kLocalCpuMac() { static const folly::MacAddress kLocalMac( FLAGS_nodeZ ? "02:00:00:00:00:02" : "02:00:00:00:00:01"); @@ -365,113 +396,94 @@ void securePortsInConfig( } } } + +int getMaxRdsw() { + return isDualStage3Q2QMode() ? 512 : 128; +} + +int getMaxEdsw() { + return isDualStage3Q2QMode() ? 128 : 16; +} + +int getLocalSystemPortOffset(const cfg::SystemPortRanges& ranges) { + // For 2q/3q mode, local sys port offset is -32K + // FIXME 2-stage-MTIA, offsets may be higher for 2nd ASIC + return isDualStage3Q2QMode() ? -32 * 1024 + : *ranges.systemPortRanges()->begin()->minimum(); +} + cfg::DsfNode dsfNodeConfig( const HwAsic& myAsic, int64_t otherSwitchId, - cfg::SystemPortRanges sysPortRanges, const std::optional platformType) { - auto createAsic = [&](const HwAsic& fromAsic, int64_t switchId) - -> std::pair, PlatformType> { - std::optional systemPortRange; - auto fromAsicSystemPortRange = fromAsic.getSystemPortRange(); - if (fromAsicSystemPortRange.has_value()) { - cfg::Range64 range; - int numCores = fromAsic.getNumCores(); - auto blockSize = (*fromAsicSystemPortRange->maximum() - - *fromAsicSystemPortRange->minimum() + 1) / - numCores; - if (sysPortRanges.systemPortRanges()->size()) { - CHECK_EQ(sysPortRanges.systemPortRanges()->size(), 1) - << " Multiple sys port ranges per node are not supported yet in tests (TODO)"; - auto firstRange = *sysPortRanges.systemPortRanges()->begin(); - range.minimum() = kSysPortOffset + *firstRange.minimum(); - range.maximum() = kSysPortOffset + *firstRange.maximum(); - } else { - range.minimum() = kSysPortOffset + switchId * blockSize; - range.maximum() = *range.minimum() + numCores * blockSize - 1; - } - systemPortRange = range; + auto getPlatformType = [](const auto& asic, auto& platformType) { + if (platformType.has_value()) { + return *platformType; } - auto localMac = utility::kLocalCpuMac(); - switch (fromAsic.getAsicType()) { + switch (asic.getAsicType()) { case cfg::AsicType::ASIC_TYPE_JERICHO2: - return std::pair( - std::make_unique( - fromAsic.getSwitchType(), - switchId, - fromAsic.getSwitchIndex(), - systemPortRange, - localMac), - PlatformType::PLATFORM_MERU400BIU); - case cfg::AsicType::ASIC_TYPE_JERICHO3: { - auto fromPlatformType = platformType.has_value() - ? platformType.value() - : PlatformType::PLATFORM_MERU800BIA; - return std::pair( - std::make_unique( - fromAsic.getSwitchType(), - switchId, - fromAsic.getSwitchIndex(), - systemPortRange, - localMac), - fromPlatformType); - } + return PlatformType::PLATFORM_MERU400BIU; + case cfg::AsicType::ASIC_TYPE_JERICHO3: + return PlatformType::PLATFORM_MERU800BIA; case cfg::AsicType::ASIC_TYPE_RAMON: - return std::pair( - std::make_unique( - fromAsic.getSwitchType(), - switchId, - fromAsic.getSwitchIndex(), - std::nullopt, - localMac), - PlatformType::PLATFORM_MERU400BFU); + return PlatformType::PLATFORM_MERU400BFU; case cfg::AsicType::ASIC_TYPE_RAMON3: - return std::pair( - std::make_unique( - fromAsic.getSwitchType(), - switchId, - fromAsic.getSwitchIndex(), - std::nullopt, - localMac), - PlatformType::PLATFORM_MERU800BFA); - case cfg::AsicType::ASIC_TYPE_CHENAB: - return std::pair( - std::make_unique( - fromAsic.getSwitchType(), - switchId, - fromAsic.getSwitchIndex(), - std::nullopt, - localMac), - PlatformType::PLATFORM_YANGRA); + return PlatformType::PLATFORM_MERU800BFA; default: - throw FbossError("Unexpected asic type: ", fromAsic.getAsicTypeStr()); + break; + } + throw FbossError("Unexpected asic type: ", asic.getAsicTypeStr()); + }; + auto getSystemPortRanges = [](const HwAsic& fromAsic, int64_t otherSwitchId) { + cfg::SystemPortRanges sysPortRanges; + CHECK(fromAsic.getSystemPortRanges().systemPortRanges()->size()); + CHECK(fromAsic.getSwitchId().has_value()); + CHECK_EQ(*fromAsic.getSwitchId(), 0) << " For VOQ switches input asic " + << " must be of the first VOQ switch"; + auto firstDsfNodeSysPortRanges = + *fromAsic.getSystemPortRanges().systemPortRanges(); + for (const auto& firstNodeRange : firstDsfNodeSysPortRanges) { + cfg::Range64 systemPortRange; + // Already allocated + 1 + systemPortRange.minimum() = + getSysPortIdsAllocated( + fromAsic, otherSwitchId, *firstNodeRange.minimum()) + + 1; + systemPortRange.maximum() = *systemPortRange.minimum() + + getPerNodeSysPortsBlockSize(fromAsic, otherSwitchId) - 1; + XLOG(DBG2) << " For switch Id: " << otherSwitchId + << " allocating range, min: " << *systemPortRange.minimum() + << " max: " << *systemPortRange.maximum(); + + sysPortRanges.systemPortRanges()->push_back(systemPortRange); } + return sysPortRanges; }; - auto [otherAsic, otherPlatformType] = createAsic(myAsic, otherSwitchId); cfg::DsfNode dsfNode; - dsfNode.switchId() = *otherAsic->getSwitchId(); + dsfNode.switchId() = otherSwitchId; dsfNode.name() = folly::sformat("hwTestSwitch{}", *dsfNode.switchId()); - switch (otherAsic->getSwitchType()) { + switch (myAsic.getSwitchType()) { case cfg::SwitchType::VOQ: { dsfNode.type() = cfg::DsfNodeType::INTERFACE_NODE; - CHECK(otherAsic->getSystemPortRange().has_value()); - auto sysPortRange = otherAsic->getSystemPortRange().value(); - dsfNode.systemPortRanges()->systemPortRanges()->push_back(sysPortRange); + auto sysPortRanges = getSystemPortRanges(myAsic, otherSwitchId); + dsfNode.systemPortRanges() = sysPortRanges; + dsfNode.localSystemPortOffset() = getLocalSystemPortOffset(sysPortRanges); + dsfNode.globalSystemPortOffset() = + *sysPortRanges.systemPortRanges()->begin()->minimum(); + CHECK(myAsic.getInbandPortId().has_value()); + dsfNode.inbandPortId() = *myAsic.getInbandPortId(); dsfNode.nodeMac() = kLocalCpuMac().toString(); dsfNode.loopbackIps() = getLoopbackIps(SwitchID(*dsfNode.switchId())); - dsfNode.localSystemPortOffset() = *sysPortRange.minimum(); - dsfNode.globalSystemPortOffset() = *sysPortRange.minimum(); - dsfNode.inbandPortId() = kSingleStageInbandPortId; } break; case cfg::SwitchType::FABRIC: dsfNode.type() = cfg::DsfNodeType::FABRIC_NODE; break; case cfg::SwitchType::NPU: case cfg::SwitchType::PHY: - throw FbossError("Unexpected switch type: ", otherAsic->getSwitchType()); + throw FbossError("Unexpected switch type: ", myAsic.getSwitchType()); } - dsfNode.asicType() = otherAsic->getAsicType(); - dsfNode.platformType() = otherPlatformType; + dsfNode.asicType() = myAsic.getAsicType(); + dsfNode.platformType() = getPlatformType(myAsic, platformType); return dsfNode; } @@ -721,7 +733,7 @@ cfg::SwitchConfig genPortVlanCfg( cfg::SwitchConfig config; if (FLAGS_enable_acl_table_group) { utility::addAclTableGroup( - &config, cfg::AclStage::INGRESS, utility::getAclTableGroupName()); + &config, cfg::AclStage::INGRESS, utility::kDefaultAclTableGroupName()); utility::addDefaultAclTable(config); } if (switchIdToSwitchInfo.has_value() && hwAsicTable.has_value()) { @@ -767,17 +779,15 @@ cfg::SwitchConfig genPortVlanCfg( asicType == cfg::AsicType::ASIC_TYPE_YUBA) { switchInfo.connectionHandle() = "/dev/uio0"; } - if (asic->getSystemPortRange().has_value()) { - switchInfo.systemPortRange() = *asic->getSystemPortRange(); - switchInfo.systemPortRanges()->systemPortRanges()->push_back( - *asic->getSystemPortRange()); - switchInfo.localSystemPortOffset() = - *asic->getSystemPortRange()->minimum(); - switchInfo.globalSystemPortOffset() = - *asic->getSystemPortRange()->minimum(); + switchInfo.systemPortRanges() = asic->getSystemPortRanges(); + if (asic->getLocalSystemPortOffset().has_value()) { + switchInfo.localSystemPortOffset() = *asic->getLocalSystemPortOffset(); } - if (switchType == cfg::SwitchType::VOQ) { - switchInfo.inbandPortId() = kSingleStageInbandPortId; + if (asic->getGlobalSystemPortOffset().has_value()) { + switchInfo.globalSystemPortOffset() = *asic->getGlobalSystemPortOffset(); + } + if (asic->getInbandPortId().has_value()) { + switchInfo.inbandPortId() = *asic->getInbandPortId(); } defaultSwitchIdToSwitchInfo.insert({SwitchID(switchId), switchInfo}); populateSwitchInfo( @@ -895,9 +905,7 @@ void populateSwitchInfo( if (hwAsic->getSwitchType() == cfg::SwitchType::VOQ || hwAsic->getSwitchType() == cfg::SwitchType::FABRIC) { newDsfNodes.insert( - {switchId, - dsfNodeConfig( - *hwAsic, switchId, cfg::SystemPortRanges(), platformType)}); + {switchId, dsfNodeConfig(*hwAsic, switchId, platformType)}); } } config.switchSettings()->switchIdToSwitchInfo() = newSwitchIdToSwitchInfo; diff --git a/fboss/agent/test/utils/ConfigUtils.h b/fboss/agent/test/utils/ConfigUtils.h index 79017a216196a..92f5355f64114 100644 --- a/fboss/agent/test/utils/ConfigUtils.h +++ b/fboss/agent/test/utils/ConfigUtils.h @@ -69,10 +69,12 @@ bool isEnabledPortWithSubnet( std::vector getLoopbackIps(SwitchID switchId); +int getMaxRdsw(); +int getMaxEdsw(); + cfg::DsfNode dsfNodeConfig( const HwAsic& myAsic, int64_t otherSwitchId = 4, - cfg::SystemPortRanges = cfg::SystemPortRanges(), const std::optional platformType = std::nullopt); std::vector::iterator findCfgPort( diff --git a/fboss/agent/test/utils/CoppTestUtils.cpp b/fboss/agent/test/utils/CoppTestUtils.cpp index 894f37c76d31a..9a94ca91a6b67 100644 --- a/fboss/agent/test/utils/CoppTestUtils.cpp +++ b/fboss/agent/test/utils/CoppTestUtils.cpp @@ -306,7 +306,8 @@ void setDefaultCpuTrafficPolicyConfig( auto cpuAcls = utility::defaultCpuAcls(hwAsic, config, isSai); for (int i = 0; i < cpuAcls.size(); i++) { - utility::addAclEntry(&config, cpuAcls[i].first, std::nullopt); + utility::addAclEntry( + &config, cpuAcls[i].first, utility::kDefaultAclTable()); } // prepare cpu traffic config diff --git a/fboss/agent/test/utils/DsfConfigUtils.cpp b/fboss/agent/test/utils/DsfConfigUtils.cpp index 7793cdd031dfc..7ba54adbe93d2 100644 --- a/fboss/agent/test/utils/DsfConfigUtils.cpp +++ b/fboss/agent/test/utils/DsfConfigUtils.cpp @@ -15,29 +15,12 @@ namespace facebook::fboss::utility { namespace { -constexpr auto kNumRdsw = 128; -constexpr auto kNumEdsw = 16; -constexpr auto kNumRdswSysPort = 44; -constexpr auto kNumEdswSysPort = 26; -constexpr auto kJ2NumSysPort = 20; -int getPerNodeSysPorts(const HwAsic& asic, int remoteSwitchId) { - if (asic.getAsicType() == cfg::AsicType::ASIC_TYPE_JERICHO2) { - return kJ2NumSysPort; - } - if (remoteSwitchId < kNumRdsw * asic.getNumCores()) { - return kNumRdswSysPort; - } - return kNumEdswSysPort; -} -} // namespace - -int getDsfNodeCount(const HwAsic& asic) { - return asic.getAsicType() == cfg::AsicType::ASIC_TYPE_JERICHO2 - ? kNumRdsw - : kNumRdsw + kNumEdsw; +int getDsfInterfaceNodeCount() { + return getMaxRdsw() + getMaxEdsw(); } +} // namespace std::optional> addRemoteIntfNodeCfg( const std::map& curDsfNodes, std::optional numRemoteNodes) { @@ -46,37 +29,41 @@ std::optional> addRemoteIntfNodeCfg( const auto& firstDsfNode = dsfNodes.begin()->second; CHECK(!firstDsfNode.systemPortRanges()->systemPortRanges()->empty()); CHECK(firstDsfNode.nodeMac().has_value()); - auto asic = HwAsic::makeAsic( - *firstDsfNode.asicType(), - cfg::SwitchType::VOQ, - *firstDsfNode.switchId(), - 0, - *firstDsfNode.systemPortRanges()->systemPortRanges()->begin(), - folly::MacAddress(*firstDsfNode.nodeMac()), - std::nullopt); + CHECK(firstDsfNode.localSystemPortOffset().has_value()); + CHECK(firstDsfNode.globalSystemPortOffset().has_value()); + CHECK(firstDsfNode.inbandPortId().has_value()); + CHECK_EQ(*firstDsfNode.switchId(), 0); + CHECK(*firstDsfNode.type() == cfg::DsfNodeType::INTERFACE_NODE); + cfg::SwitchInfo switchInfo; + switchInfo.asicType() = *firstDsfNode.asicType(); + switchInfo.switchType() = cfg::SwitchType::VOQ; + switchInfo.switchIndex() = 0; + switchInfo.switchMac() = *firstDsfNode.nodeMac(); + switchInfo.systemPortRanges() = *firstDsfNode.systemPortRanges(); + switchInfo.localSystemPortOffset() = *firstDsfNode.localSystemPortOffset(); + switchInfo.globalSystemPortOffset() = *firstDsfNode.globalSystemPortOffset(); + switchInfo.inbandPortId() = *firstDsfNode.inbandPortId(); + + auto asic = + HwAsic::makeAsic(*firstDsfNode.switchId(), switchInfo, std::nullopt); int numCores = asic->getNumCores(); CHECK( !numRemoteNodes.has_value() || - numRemoteNodes.value() < getDsfNodeCount(*asic)); + numRemoteNodes.value() < getDsfInterfaceNodeCount()); int totalNodes = numRemoteNodes.has_value() ? numRemoteNodes.value() + curDsfNodes.size() - : getDsfNodeCount(*asic); - int remoteNodeStart = dsfNodes.rbegin()->first + numCores; - int systemPortMin = - getPerNodeSysPorts(*asic, dsfNodes.begin()->first) * curDsfNodes.size(); + : getDsfInterfaceNodeCount(); + auto lastDsfNode = dsfNodes.rbegin()->second; + int remoteNodeStart = *lastDsfNode.switchId() + numCores; + auto firstDsfNodeSysPortRanges = + *firstDsfNode.systemPortRanges()->systemPortRanges(); + for (int remoteSwitchId = remoteNodeStart; remoteSwitchId < totalNodes * numCores; remoteSwitchId += numCores) { - cfg::Range64 systemPortRange; - systemPortRange.minimum() = systemPortMin; - systemPortRange.maximum() = - systemPortMin + getPerNodeSysPorts(*asic, remoteSwitchId) - 1; - cfg::SystemPortRanges ranges; - ranges.systemPortRanges()->push_back(systemPortRange); auto remoteDsfNodeCfg = dsfNodeConfig( - *asic, SwitchID(remoteSwitchId), ranges, *firstDsfNode.platformType()); + *asic, SwitchID(remoteSwitchId), *firstDsfNode.platformType()); dsfNodes.insert({remoteSwitchId, remoteDsfNodeCfg}); - systemPortMin = *systemPortRange.maximum() + 1; } return dsfNodes; } diff --git a/fboss/agent/test/utils/DsfConfigUtils.h b/fboss/agent/test/utils/DsfConfigUtils.h index 64607ebb3693d..d577501ca7fb9 100644 --- a/fboss/agent/test/utils/DsfConfigUtils.h +++ b/fboss/agent/test/utils/DsfConfigUtils.h @@ -7,11 +7,8 @@ namespace facebook::fboss::utility { -int getDsfNodeCount(const HwAsic* asic); - // Returns config with remote DSF node added. If numRemoteNodes is not -// specified, it will check the asic type and use max DSF node count -// (128 for J2 and 256 for J3). +// specified, it will check the asic type and use max DSF node count. std::optional> addRemoteIntfNodeCfg( const std::map& curDsfNodes, std::optional numRemoteNodes = std::nullopt); diff --git a/fboss/agent/test/utils/InvariantTestUtils.h b/fboss/agent/test/utils/InvariantTestUtils.h index 2db1d7d8a4b64..00faa0630092d 100644 --- a/fboss/agent/test/utils/InvariantTestUtils.h +++ b/fboss/agent/test/utils/InvariantTestUtils.h @@ -15,9 +15,9 @@ namespace facebook::fboss { class SwSwitch; class TestEnsembleIf; -class PortID; +struct PortID; class HwAsic; -class SwitchID; +struct SwitchID; class PortDescriptor; namespace utility { diff --git a/fboss/agent/test/utils/LoadBalancerTestUtils.cpp b/fboss/agent/test/utils/LoadBalancerTestUtils.cpp index 846a9e4635196..5365c3fe065ce 100644 --- a/fboss/agent/test/utils/LoadBalancerTestUtils.cpp +++ b/fboss/agent/test/utils/LoadBalancerTestUtils.cpp @@ -437,7 +437,8 @@ size_t pumpRoCETraffic( int packetCount, uint8_t roceOpcode, uint8_t reserved, - std::optional> nxtHdr) { + std::optional> nxtHdr, + bool sameDstQueue) { folly::MacAddress srcMac( srcMacAddr.has_value() ? *srcMacAddr : MacAddressGenerator().get(dstMac.u64HBO() + 1)); @@ -456,7 +457,7 @@ size_t pumpRoCETraffic( // vary dst queues pair ids ONLY in the RoCE pkt // to verify that we can hash on it - int dstQueueIds = i; + int dstQueueIds = sameDstQueue ? 0 : i; // since dst queue pair id is in the middle of the packet // we need to keep front/end payload which doesn't vary rocePayload.push_back((dstQueueIds & 0x00ff0000) >> 16); diff --git a/fboss/agent/test/utils/LoadBalancerTestUtils.h b/fboss/agent/test/utils/LoadBalancerTestUtils.h index 143a4ba370574..c6f80fd0582fe 100644 --- a/fboss/agent/test/utils/LoadBalancerTestUtils.h +++ b/fboss/agent/test/utils/LoadBalancerTestUtils.h @@ -67,7 +67,8 @@ size_t pumpRoCETraffic( uint8_t roceOpcode = kUdfRoceOpcodeAck, uint8_t reserved = kRoceReserved, std::optional> nextHdr = - std::optional>()); + std::optional>(), + bool sameDstQueue = false); size_t pumpTrafficWithSourceFile( AllocatePktFunc allocateFn, diff --git a/fboss/agent/test/utils/MirrorTestUtils.cpp b/fboss/agent/test/utils/MirrorTestUtils.cpp index f681b3ba86bcb..b6f15abf0ba2f 100644 --- a/fboss/agent/test/utils/MirrorTestUtils.cpp +++ b/fboss/agent/test/utils/MirrorTestUtils.cpp @@ -28,6 +28,14 @@ folly::IPAddress getSflowMirrorDestination(bool isV4) { : folly::IPAddress("2401:101:101::101"); } +folly::IPAddress getSflowMirrorSource() { + /* + * This is the source IP for sflow mirror packets. + * We will be supporting only v6 on future platforms. + */ + return folly::IPAddress("2401::100"); +} + /* * This configures a local/erspan mirror session. * Adds a tunnel config if the mirrorname is erspan. @@ -78,13 +86,15 @@ void configureSflowMirror( const std::string& mirrorName, bool truncate, const std::string& destinationIp, + uint32_t udpSrcPort, uint32_t udpDstPort) { cfg::SflowTunnel sflowTunnel; sflowTunnel.ip() = destinationIp; - sflowTunnel.udpSrcPort() = 6545; + sflowTunnel.udpSrcPort() = udpSrcPort; sflowTunnel.udpDstPort() = udpDstPort; cfg::MirrorTunnel tunnel; + tunnel.srcIp() = getSflowMirrorSource().str(); tunnel.sflowTunnel() = sflowTunnel; cfg::MirrorDestination destination; diff --git a/fboss/agent/test/utils/MirrorTestUtils.h b/fboss/agent/test/utils/MirrorTestUtils.h index ae7ae40098a66..76d6089e0de02 100644 --- a/fboss/agent/test/utils/MirrorTestUtils.h +++ b/fboss/agent/test/utils/MirrorTestUtils.h @@ -51,13 +51,15 @@ void addMirrorConfig( uint8_t dscp = kDscpDefault); folly::IPAddress getSflowMirrorDestination(bool isV4); +folly::IPAddress getSflowMirrorSource(); void configureSflowMirror( cfg::SwitchConfig& config, const std::string& mirrorName, bool truncate, const std::string& destinationIp, - uint32_t udpSrcPort = 6343); + uint32_t udpSrcPort = 6545, + uint32_t udpDstPort = 6343); void configureSflowSampling( cfg::SwitchConfig& config, diff --git a/fboss/agent/test/utils/PfcTestUtils.cpp b/fboss/agent/test/utils/PfcTestUtils.cpp index be449b4911921..2bc8e70dfe2b7 100644 --- a/fboss/agent/test/utils/PfcTestUtils.cpp +++ b/fboss/agent/test/utils/PfcTestUtils.cpp @@ -6,8 +6,6 @@ #include "fboss/agent/hw/gen-cpp2/hardware_stats_types.h" #include "fboss/agent/test/utils/AclTestUtils.h" -#include - namespace facebook::fboss::utility { namespace { @@ -215,6 +213,7 @@ void setupPfcBuffers( // For J3, set the SRAM global PFC thresholds as well cfg.switchSettings()->sramGlobalFreePercentXoffThreshold() = 10; cfg.switchSettings()->sramGlobalFreePercentXonThreshold() = 20; + cfg.switchSettings()->linkFlowControlCreditThreshold() = 99; } } diff --git a/fboss/agent/test/utils/QueuePerHostTestUtils.cpp b/fboss/agent/test/utils/QueuePerHostTestUtils.cpp index 2c7323ca55de5..bbcfcb27cd5ea 100644 --- a/fboss/agent/test/utils/QueuePerHostTestUtils.cpp +++ b/fboss/agent/test/utils/QueuePerHostTestUtils.cpp @@ -19,7 +19,6 @@ #include "fboss/agent/test/utils/ConfigUtils.h" #include "fboss/agent/test/utils/CoppTestUtils.h" #include "fboss/agent/test/utils/LoadBalancerTestUtils.h" -#include "fboss/agent/test/utils/QueuePerHostTestUtils.h" #include "fboss/agent/test/utils/TrafficPolicyTestUtils.h" #include "fboss/lib/CommonUtils.h" diff --git a/fboss/agent/test/utils/TrapPacketUtils.cpp b/fboss/agent/test/utils/TrapPacketUtils.cpp index c45f80a561598..ef497217f0f99 100644 --- a/fboss/agent/test/utils/TrapPacketUtils.cpp +++ b/fboss/agent/test/utils/TrapPacketUtils.cpp @@ -10,7 +10,7 @@ void addTrapPacketAcl(cfg::SwitchConfig* config, PortID port) { entry.name() = folly::to("trap-packet-", port); entry.srcPort() = port; entry.actionType() = cfg::AclActionType::PERMIT; - utility::addAclEntry(config, entry, std::nullopt); + utility::addAclEntry(config, entry, utility::kDefaultAclTable()); cfg::MatchAction action; action.sendToQueue() = cfg::QueueMatchAction(); @@ -56,7 +56,7 @@ void addTrapPacketAcl( entry.name() = folly::to("trap-", prefix.first.str()); entry.dstIp() = prefix.first.str(); entry.actionType() = cfg::AclActionType::PERMIT; - utility::addAclEntry(config, entry, std::nullopt); + utility::addAclEntry(config, entry, utility::kDefaultAclTable()); cfg::MatchAction action; action.sendToQueue() = cfg::QueueMatchAction(); @@ -100,7 +100,7 @@ void addTrapPacketAcl(cfg::SwitchConfig* config, uint16_t l4DstPort) { entry.name() = folly::to("trap-packet-", l4DstPort); entry.l4DstPort() = l4DstPort; entry.actionType() = cfg::AclActionType::PERMIT; - utility::addAclEntry(config, entry, std::nullopt); + utility::addAclEntry(config, entry, utility::kDefaultAclTable()); cfg::MatchAction action; action.sendToQueue() = cfg::QueueMatchAction(); diff --git a/fboss/agent/test/utils/VoqTestUtils.cpp b/fboss/agent/test/utils/VoqTestUtils.cpp index e97bed74d983c..3455809b54383 100644 --- a/fboss/agent/test/utils/VoqTestUtils.cpp +++ b/fboss/agent/test/utils/VoqTestUtils.cpp @@ -9,6 +9,8 @@ */ #include "fboss/agent/test/utils/VoqTestUtils.h" +#include "fboss/agent/DsfStateUpdaterUtil.h" +#include "fboss/agent/SwSwitch.h" #include "fboss/agent/hw/test/ConfigFactory.h" #include "fboss/agent/test/TestEnsembleIf.h" @@ -20,6 +22,8 @@ constexpr auto kNumPortPerCore = 10; // 7: mgm port, 8-43 front panel nif constexpr auto kRemoteSysPortOffset = 7; constexpr auto kNumVoq = 8; +constexpr auto kNumRdswSysPort = 44; +constexpr auto kNumEdswSysPort = 26; std::shared_ptr makeRemoteSysPort( SystemPortID portId, @@ -185,7 +189,9 @@ void populateRemoteIntfAndSysPorts( for (auto sysPortRange : *dsfNode.systemPortRanges()->systemPortRanges()) { const auto minPortID = *sysPortRange.minimum(); const auto maxPortID = *sysPortRange.maximum(); - // 0th port for CPU and 1st port for recycle port + // TODO(zecheng): Update num of ports for dual stage + const auto numPorts = maxPortID - minPortID + 1; + CHECK(numPorts == kNumRdswSysPort || numPorts == kNumEdswSysPort); for (int i = minPortID + kRemoteSysPortOffset; i <= maxPortID; i++) { const SystemPortID remoteSysPortId(i); const InterfaceID remoteIntfId(i); @@ -201,12 +207,16 @@ void populateRemoteIntfAndSysPorts( auto thirdOctet = i - minPortID; folly::IPAddressV6 neighborIp(folly::to( firstOctet, ":", secondOctet, ":", thirdOctet, "::2")); + auto portSpeed = i == minPortID + kRemoteSysPortOffset + ? cfg::PortSpeed::HUNDREDG + : numPorts == kNumRdswSysPort ? cfg::PortSpeed::FOURHUNDREDG + : cfg::PortSpeed::EIGHTHUNDREDG; auto remoteSysPort = makeRemoteSysPort( remoteSysPortId, SwitchID(remoteSwitchId), (i - minPortID - kRemoteSysPortOffset) / kNumPortPerCore, (i - minPortID) % kNumPortPerCore, - static_cast(cfg::PortSpeed::FOURHUNDREDG)); + static_cast(portSpeed)); remoteSysPorts->addSystemPort(remoteSysPort); auto remoteRif = makeRemoteInterface( @@ -294,4 +304,27 @@ boost::container::flat_set resolveRemoteNhops( return sysPortDescs; } +void setupRemoteIntfAndSysPorts(SwSwitch* swSwitch, bool useEncapIndex) { + auto updateDsfStateFn = + [swSwitch, useEncapIndex](const std::shared_ptr& in) { + std::map> switchId2SystemPorts; + std::map> switchId2Rifs; + utility::populateRemoteIntfAndSysPorts( + switchId2SystemPorts, + switchId2Rifs, + swSwitch->getConfig(), + useEncapIndex); + return DsfStateUpdaterUtil::getUpdatedState( + in, + swSwitch->getScopeResolver(), + swSwitch->getRib(), + switchId2SystemPorts, + switchId2Rifs); + }; + swSwitch->getRib()->updateStateInRibThread([swSwitch, updateDsfStateFn]() { + swSwitch->updateStateWithHwFailureProtection( + folly::sformat("Update state for node: {}", 0), updateDsfStateFn); + }); +} + } // namespace facebook::fboss::utility diff --git a/fboss/agent/test/utils/VoqTestUtils.h b/fboss/agent/test/utils/VoqTestUtils.h index fdedb0c10894a..6794610abd92c 100644 --- a/fboss/agent/test/utils/VoqTestUtils.h +++ b/fboss/agent/test/utils/VoqTestUtils.h @@ -11,6 +11,7 @@ namespace facebook::fboss { class TestEnsembleIf; +class SwSwitch; namespace utility { @@ -59,5 +60,7 @@ void populateRemoteIntfAndSysPorts( const cfg::SwitchConfig& config, bool useEncapIndex); +void setupRemoteIntfAndSysPorts(SwSwitch* swSwitch, bool useEncapIndex); + } // namespace utility } // namespace facebook::fboss diff --git a/fboss/cli/fboss2/commands/show/dsfnodes/CmdShowDsfNodes.h b/fboss/cli/fboss2/commands/show/dsfnodes/CmdShowDsfNodes.h index 8fc9d2408221e..03b1f022cf2a4 100644 --- a/fboss/cli/fboss2/commands/show/dsfnodes/CmdShowDsfNodes.h +++ b/fboss/cli/fboss2/commands/show/dsfnodes/CmdShowDsfNodes.h @@ -60,7 +60,7 @@ class CmdShowDsfNodes *entry.name(), folly::to(*entry.switchId()), *entry.type(), - *entry.systemPortRange(), + *entry.systemPortRanges(), }); } out << table << std::endl; @@ -83,9 +83,9 @@ class CmdShowDsfNodes ranges.push_back( folly::sformat("({}, {})", *range.minimum(), *range.maximum())); } - entry.systemPortRange() = folly::join(", ", ranges); + entry.systemPortRanges() = folly::join(", ", ranges); } else { - entry.systemPortRange() = "--"; + entry.systemPortRanges() = "--"; } model.dsfNodes()->push_back(entry); } diff --git a/fboss/cli/fboss2/commands/show/dsfnodes/model.thrift b/fboss/cli/fboss2/commands/show/dsfnodes/model.thrift index ca1f9865bbac9..db284abde94fe 100644 --- a/fboss/cli/fboss2/commands/show/dsfnodes/model.thrift +++ b/fboss/cli/fboss2/commands/show/dsfnodes/model.thrift @@ -8,5 +8,5 @@ struct DsfNodeEntry { 1: string name; 2: i64 switchId; 3: string type; - 4: string systemPortRange; + 4: string systemPortRanges; } diff --git a/fboss/cli/fboss2/commands/show/lldp/CmdShowLldp.h b/fboss/cli/fboss2/commands/show/lldp/CmdShowLldp.h index fe6b1207a8573..aa3b8d9e04883 100644 --- a/fboss/cli/fboss2/commands/show/lldp/CmdShowLldp.h +++ b/fboss/cli/fboss2/commands/show/lldp/CmdShowLldp.h @@ -192,7 +192,10 @@ class CmdShowLldp : public CmdHandler { } const RE2 fsw_regex("^fsw.*"); if (RE2::FullMatch(portDescription, fsw_regex)) { - return results[0] + "." + results[1]; + results.clear(); + folly::split(":", portDescription, results); + // Prints as fsw001.p062.f01.vll3 + return results[0]; } const RE2 ctsw_regex("^ctsw.*"); if (RE2::FullMatch(portDescription, ctsw_regex)) { diff --git a/fboss/cli/fboss2/test/AggregationParsingTest.cpp b/fboss/cli/fboss2/test/AggregationParsingTest.cpp index 16dc832bbc887..8c262c14534c1 100644 --- a/fboss/cli/fboss2/test/AggregationParsingTest.cpp +++ b/fboss/cli/fboss2/test/AggregationParsingTest.cpp @@ -4,11 +4,9 @@ #include #include -#include #include "fboss/cli/fboss2/commands/show/port/CmdShowPort.h" #include "fboss/cli/fboss2/gen-cpp2/cli_types.h" #include "fboss/cli/fboss2/test/CmdHandlerTestBase.h" -#include "nettools/common/TestUtils.h" using namespace ::testing; namespace facebook::fboss { diff --git a/fboss/cli/fboss2/test/AggregationTest.cpp b/fboss/cli/fboss2/test/AggregationTest.cpp index c48fcb3aef95e..14932977231c8 100644 --- a/fboss/cli/fboss2/test/AggregationTest.cpp +++ b/fboss/cli/fboss2/test/AggregationTest.cpp @@ -4,10 +4,8 @@ #include #include -#include #include #include "fboss/cli/fboss2/commands/show/port/CmdShowPort.h" -#include "fboss/cli/fboss2/gen-cpp2/cli_types.h" #include "fboss/cli/fboss2/test/CmdHandlerTestBase.h" #include "nettools/common/TestUtils.h" diff --git a/fboss/cli/fboss2/test/AggregationValidationTest.cpp b/fboss/cli/fboss2/test/AggregationValidationTest.cpp index 782042c505959..93ef77a9a6972 100644 --- a/fboss/cli/fboss2/test/AggregationValidationTest.cpp +++ b/fboss/cli/fboss2/test/AggregationValidationTest.cpp @@ -4,12 +4,9 @@ #include #include -#include -#include #include "fboss/cli/fboss2/commands/show/port/CmdShowPort.h" #include "fboss/cli/fboss2/gen-cpp2/cli_types.h" #include "fboss/cli/fboss2/test/CmdHandlerTestBase.h" -#include "nettools/common/TestUtils.h" using namespace ::testing; namespace facebook::fboss { diff --git a/fboss/cli/fboss2/test/BUCK b/fboss/cli/fboss2/test/BUCK index 71322f2195cac..31cd83d5247be 100644 --- a/fboss/cli/fboss2/test/BUCK +++ b/fboss/cli/fboss2/test/BUCK @@ -119,7 +119,6 @@ cpp_unittest( "//folly:network_address", "//folly/json:dynamic", "//neteng/fboss/bgp/if:bgp_thrift-cpp2-services", - "//neteng/fboss/bgp/if:bgp_thrift-cpp2-types", "//nettools/common:TestUtils", ], external_deps = [("boost", None, "boost_algorithm")], diff --git a/fboss/cli/fboss2/test/CmdArgsTest.cpp b/fboss/cli/fboss2/test/CmdArgsTest.cpp index 40506d1dc2d39..e263eb936994c 100644 --- a/fboss/cli/fboss2/test/CmdArgsTest.cpp +++ b/fboss/cli/fboss2/test/CmdArgsTest.cpp @@ -7,7 +7,6 @@ #include #include #include -#include #include using namespace ::testing; diff --git a/fboss/cli/fboss2/test/CmdHelpTest.cpp b/fboss/cli/fboss2/test/CmdHelpTest.cpp index a2f237ab67909..f45ab08dffe80 100644 --- a/fboss/cli/fboss2/test/CmdHelpTest.cpp +++ b/fboss/cli/fboss2/test/CmdHelpTest.cpp @@ -8,7 +8,6 @@ #include "fboss/cli/fboss2/utils/CmdClientUtils.h" #include "fboss/cli/fboss2/test/CmdHandlerTestBase.h" -#include "nettools/common/TestUtils.h" using namespace ::testing; diff --git a/fboss/cli/fboss2/test/CmdSetPortStateTest.cpp b/fboss/cli/fboss2/test/CmdSetPortStateTest.cpp index f5e9f4093000e..d21f813eece43 100644 --- a/fboss/cli/fboss2/test/CmdSetPortStateTest.cpp +++ b/fboss/cli/fboss2/test/CmdSetPortStateTest.cpp @@ -11,7 +11,6 @@ #include "fboss/cli/fboss2/commands/set/port/state/CmdSetPortState.h" #include "fboss/cli/fboss2/test/CmdHandlerTestBase.h" -#include "nettools/common/TestUtils.h" using namespace ::testing; diff --git a/fboss/cli/fboss2/test/CmdShowArpTest.cpp b/fboss/cli/fboss2/test/CmdShowArpTest.cpp index aeb500543d46b..73b63c3555774 100644 --- a/fboss/cli/fboss2/test/CmdShowArpTest.cpp +++ b/fboss/cli/fboss2/test/CmdShowArpTest.cpp @@ -11,7 +11,6 @@ #include "fboss/cli/fboss2/commands/show/arp/CmdShowArp.h" #include "fboss/cli/fboss2/commands/show/arp/gen-cpp2/model_types.h" #include "fboss/cli/fboss2/test/CmdHandlerTestBase.h" -#include "fboss/cli/fboss2/utils/CmdClientUtils.h" using namespace ::testing; diff --git a/fboss/cli/fboss2/test/CmdShowHardwareTest.cpp b/fboss/cli/fboss2/test/CmdShowHardwareTest.cpp index a4d0dd65000ce..27224513dac63 100644 --- a/fboss/cli/fboss2/test/CmdShowHardwareTest.cpp +++ b/fboss/cli/fboss2/test/CmdShowHardwareTest.cpp @@ -5,9 +5,7 @@ #include "fboss/cli/fboss2/commands/show/hardware/CmdShowHardware.h" #include "fboss/cli/fboss2/commands/show/hardware/gen-cpp2/model_types.h" -#include "fboss/cli/fboss2/utils/CmdClientUtils.h" #include "folly/json/dynamic.h" -#include "folly/json/json.h" using namespace ::testing; diff --git a/fboss/cli/fboss2/test/CmdShowInterfaceFlapsTest.cpp b/fboss/cli/fboss2/test/CmdShowInterfaceFlapsTest.cpp index 8f82db548bc86..db13d6447cad0 100644 --- a/fboss/cli/fboss2/test/CmdShowInterfaceFlapsTest.cpp +++ b/fboss/cli/fboss2/test/CmdShowInterfaceFlapsTest.cpp @@ -7,7 +7,6 @@ #include "fboss/cli/fboss2/commands/show/interface/flaps/CmdShowInterfaceFlaps.h" #include "fboss/cli/fboss2/commands/show/interface/flaps/gen-cpp2/model_types.h" #include "fboss/cli/fboss2/test/CmdHandlerTestBase.h" -#include "fboss/cli/fboss2/utils/CmdClientUtils.h" #include "nettools/common/TestUtils.h" using namespace ::testing; diff --git a/fboss/cli/fboss2/test/CmdShowInterfaceStatusTest.cpp b/fboss/cli/fboss2/test/CmdShowInterfaceStatusTest.cpp index 8bfbee8e88b75..ad78c5a5e3706 100644 --- a/fboss/cli/fboss2/test/CmdShowInterfaceStatusTest.cpp +++ b/fboss/cli/fboss2/test/CmdShowInterfaceStatusTest.cpp @@ -6,8 +6,6 @@ #include "fboss/cli/fboss2/commands/show/interface/status/CmdShowInterfaceStatus.h" #include "fboss/cli/fboss2/commands/show/interface/status/gen-cpp2/model_types.h" #include "fboss/cli/fboss2/test/CmdHandlerTestBase.h" -#include "fboss/cli/fboss2/utils/CmdClientUtils.h" -#include "nettools/common/TestUtils.h" using namespace ::testing; diff --git a/fboss/cli/fboss2/test/CmdShowInterfaceTrafficTest.cpp b/fboss/cli/fboss2/test/CmdShowInterfaceTrafficTest.cpp index 6b647e58bed8c..05a5dcee49a5c 100644 --- a/fboss/cli/fboss2/test/CmdShowInterfaceTrafficTest.cpp +++ b/fboss/cli/fboss2/test/CmdShowInterfaceTrafficTest.cpp @@ -13,7 +13,6 @@ #include "fboss/cli/fboss2/commands/show/interface/traffic/CmdShowInterfaceTraffic.h" #include "fboss/cli/fboss2/commands/show/interface/traffic/gen-cpp2/model_types.h" #include "fboss/cli/fboss2/test/CmdHandlerTestBase.h" -#include "nettools/common/TestUtils.h" using namespace ::testing; diff --git a/fboss/cli/fboss2/test/CmdShowMirrorTest.cpp b/fboss/cli/fboss2/test/CmdShowMirrorTest.cpp index daf24f28b9ef6..3814ec2fdd8ff 100644 --- a/fboss/cli/fboss2/test/CmdShowMirrorTest.cpp +++ b/fboss/cli/fboss2/test/CmdShowMirrorTest.cpp @@ -6,7 +6,6 @@ #include "fboss/cli/fboss2/commands/show/mirror/CmdShowMirror.h" #include "fboss/cli/fboss2/commands/show/mirror/gen-cpp2/model_types.h" #include "fboss/cli/fboss2/test/CmdHandlerTestBase.h" -#include "fboss/cli/fboss2/utils/CmdClientUtils.h" #include "nettools/common/TestUtils.h" using namespace ::testing; diff --git a/fboss/cli/fboss2/test/CmdShowNdpTest.cpp b/fboss/cli/fboss2/test/CmdShowNdpTest.cpp index 760c9895409cb..ae7f569defbd0 100644 --- a/fboss/cli/fboss2/test/CmdShowNdpTest.cpp +++ b/fboss/cli/fboss2/test/CmdShowNdpTest.cpp @@ -8,7 +8,6 @@ #include #include "fboss/agent/AddressUtil.h" -#include "fboss/cli/fboss2/utils/CmdClientUtils.h" #include "fboss/cli/fboss2/commands/show/ndp/CmdShowNdp.h" #include "fboss/cli/fboss2/commands/show/ndp/gen-cpp2/model_types.h" diff --git a/fboss/cli/fboss2/test/CmdShowPortTest.cpp b/fboss/cli/fboss2/test/CmdShowPortTest.cpp index ba1d49d625fd6..f3d2ba4fc9a03 100644 --- a/fboss/cli/fboss2/test/CmdShowPortTest.cpp +++ b/fboss/cli/fboss2/test/CmdShowPortTest.cpp @@ -16,7 +16,6 @@ #include "configerator/structs/neteng/fboss/bgp/gen-cpp2/bgp_config_types.h" #include "neteng/fboss/bgp/if/gen-cpp2/TBgpService.h" -#include "neteng/fboss/bgp/if/gen-cpp2/bgp_thrift_types.h" using namespace ::testing; using namespace facebook::neteng::fboss::bgp::thrift; diff --git a/fboss/cli/fboss2/test/FilterValidationTest.cpp b/fboss/cli/fboss2/test/FilterValidationTest.cpp index aab968d2762fd..eab22036aa267 100644 --- a/fboss/cli/fboss2/test/FilterValidationTest.cpp +++ b/fboss/cli/fboss2/test/FilterValidationTest.cpp @@ -11,7 +11,6 @@ #include "fboss/cli/fboss2/commands/show/port/CmdShowPort.h" #include "fboss/cli/fboss2/gen-cpp2/cli_types.h" #include "fboss/cli/fboss2/test/CmdHandlerTestBase.h" -#include "nettools/common/TestUtils.h" using namespace ::testing; namespace facebook::fboss { diff --git a/fboss/docs/meta_eeprom_format_v5.md b/fboss/docs/meta_eeprom_format_v5.md index 99319cf2db2ee..8b590a62c28a4 100644 --- a/fboss/docs/meta_eeprom_format_v5.md +++ b/fboss/docs/meta_eeprom_format_v5.md @@ -1,9 +1,7 @@ # **Meta FBOSS EEPROM Format v5** -All Field Replaceable Unit (FRU) ID EEPROMs must follow the format below. This -replaces the Meta FBOSS EEPROM Format V4. The major changes in this format are -adoption of big-endian format, and flexibility to program multiple MAC addresses -for different purposes. +All Field Replaceable Unit (FRU) ID EEPROMs must follow the format below. EEPROM +Format V5 is replaced by EEPROM Format V6 for all new platforms. ## **Conventions:** @@ -30,9 +28,10 @@ compatible with the past versions. - There must not be any gap between the TLV entries. - The `type` field is always **one byte**. - The `length` field is always **one byte**. It contains the size of the - corresponding `value` field. + corresponding `value` field. The value of the `length` field cannot be 0. - The CRC field must be the **last entry**. The other TLV entries can be in any order. +- Each field can appear no more than once in the content. - The below table only lists the Mandatory fields from the Meta software teams. Please check with Meta Manufacturing & Quality team to ensure other Mandatory fields are taken care of. @@ -99,7 +98,7 @@ and can be used as the reference to check the correctness of the algorithm. **Raw EEPROM BLOB:** ``` -[root@devserver ~]$ hexdump -C Juice=Juice +[root@devserver ~]$ cat eeprom_file | hexdump -C 00000000 fb fb 05 ff 01 0d 46 49 52 53 54 5f 53 51 55 45 |......FIRST_SQUE| 00000010 45 5a 45 02 08 32 30 31 32 33 34 35 36 03 08 53 |EZE..20123456..S| 00000020 59 53 41 31 32 33 34 04 0c 50 43 42 41 31 32 33 |YSA1234..PCBA123| @@ -122,8 +121,8 @@ and can be used as the reference to check the correctness of the algorithm. **Output after parsing :** ``` -[root@devserver ~]# ./weutil --path /v5_eeprom 2>/dev/null -Wedge EEPROM : /v5_eeprom +[root@devserver ~]# ./weutil --path eeprom_file +Version: 5 Product Name: FIRST_SQUEEZE Product Part Number: 20123456 System Assembly Part Number: SYSA1234 diff --git a/fboss/docs/meta_eeprom_format_v6.md b/fboss/docs/meta_eeprom_format_v6.md new file mode 100644 index 0000000000000..ade152cba37e3 --- /dev/null +++ b/fboss/docs/meta_eeprom_format_v6.md @@ -0,0 +1,166 @@ +# **Meta FBOSS EEPROM Format v6** + +All Field Replaceable Unit (FRU) ID EEPROMs must follow the format below. This +replaces the Meta FBOSS EEPROM Format V5. + +## **Conventions:** + +- All fields are **big endian**. +- String terminator `\0` is **not** included in the string field. The parser + will determine the string size by reading the length field of TLV entries. + +## **Header:** + +All Meta EEPROMs must start with the 4-byte header below. This header is +compatible with the past versions. + +| Offset (byte) | Length (bytes) | Value | Description | +| :-----------: | :------------: | ------ | -------------------------- | +| 0 | 2 | 0xFBFB | Magic word | +| 2 | 1 | 0x6 | Meta EEPROM Format Version | +| 3 | 1 | 0XFF | Reserved for future use | + +## **Body:** + +- The body must come after the 4-byte header. +- The body consists of the following well-defined Type-Length-Value (TLV) + entries. +- There must not be any gap between the TLV entries. +- The `type` field is always **one byte**. +- The `length` field is always **one byte**. It contains the size of the + corresponding `value` field. The value of the `length` field cannot be 0. +- The CRC field must be the **last entry**. The other TLV entries can be in any + order. +- Each field can appear no more than once in the content. +- The below table only lists the Mandatory fields from the Meta software teams. + Please check with Meta Manufacturing & Quality team to ensure other Mandatory + fields are taken care of. + +| Type | Length (bytes) | Value | Mandatory (Y/N) | Description | +| ---- | -------------- | ------------------------------------------------------------------------------------------- | --------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 0 | N/A | N/A | N/A | Reserved | +| 1 | Variable | ASCII String | Y | Product Name | +| 2 | Variable | ASCII String | N | Top Level 20- Product Part Number | +| 3 | 8 | ASCII String | N | System Assembly Part Number | +| 4 | 12 | ASCII String | N | Meta PCBA Part Number | +| 5 | 12 | ASCII String | N | Meta PCB Part Number | +| 6 | Variable | ASCII String | N | ODM/JDM PCBA Part Number | +| 7 | Variable | ASCII String | N | ODM/JDM PCBA Serial Number | +| 8 | 1 | Unsigned Integer | Y | Production State. 1 denotes EVT. 2 denotes DVT, 3 denotes PVT. 4 denotes MP. This field cannot be 0\. | +| 9 | 1 | Unsigned Integer | Y | Production Sub-State. Used to denote sub-phases within EVT, DVT and PVT phases. Example, 1 for EVT1, 2 for EVT2, 1 for DVT1 etc. This field cannot be 0 | +| 10 | 1 | Unsigned Integer | Y | Re-Spin/Variant Indicator. Used to uniquely identify platforms which have second-source or variance in hardware. This is not to be confused with EVT, DVT phase differences. For example, a SKU in MP might use voltage-regulators from two different vendors. But everything else (including other fields in EEPROM) will be the same across the two variants of the SKU. In this case, we assign a unique number in this field to uniquely identify the SKU with different voltage regulators. This field can be 0 if there are no respins or variants. | +| 11 | Variable | ASCII String | Y | Product Serial Number | +| 12 | Variable | ASCII String | N | System Manufacturer | +| 13 | 8 | ASCII String | N | System Manufacturing Date, in “YYYYMMDD” format. | +| 14 | Variable | ASCII String | N | PCB Manufacturer | +| 15 | Variable | ASCII String | N | Assembled at | +| 16 | Variable | ASCII String | N | EEPROM location on Fabric | +| 17 | 8 | 48 bits of Base MAC Address in the first six bytes. Unsigned Integer in the last two bytes. | N | X86 CPU MAC Addresses. The first six bytes represent the Base MAC Address, and the last two bytes represent the number of MAC Addresses from the Base. | +| 18 | 8 | 48 bits of Base MAC Address in the first six bytes. Unsigned Integer in the last two bytes. | N | BMC MAC Addresses. The first six bytes represent the Base MAC Address, and the last two bytes represent the number of MAC Addresses from the Base. | +| 19 | 8 | 48 bits of Base MAC Address in the first six bytes. Unsigned Integer in the last two bytes. | N | Switch ASIC MAC Addresses. The first six bytes represent the Base MAC Address, and the last two bytes represent the number of MAC Addresses from the Base. | +| 20 | 8 | 48 bits of Base MAC Address in the first six bytes. Unsigned Integer in the last two bytes. | N | Meta Reserved MAC Addresses. The first six bytes represent the Base MAC Address, and the last two bytes represent the number of MAC Addresses from the Base. | +| 21 | 1 | Unsigned Integer | N | A value of 1 indicates whether the unit has gone through RMA. Otherwise this field can be omitted or left with value 0 | +| 101 | Variable | Vendor Defined | N | Vendors can use this field for their own purposes. Meta EEPROM parsing tools (weutil) will just dump the contents of this field. The value will not be interpreted and used in any way. | +| 102 | Variable | Vendor Defined | N | Vendors can use this field for their own purposes. Meta EEPROM parsing tools (weutil) will just dump the contents of this field. The value will not be interpreted and used in any way. | +| 103 | Variable | Vendor Defined | N | Vendors can use this field for their own purposes. Meta EEPROM parsing tools (weutil) will just dump the contents of this field. The value will not be interpreted and used in any way. | +| 250 | 2 | Unsigned Integer | Y | CRC16. Refer to the “Checksum” section for details | + +## **Checksum:** + +We use the 16 bits CRC-CCITT-AUG specification with the following key +attributes: + +- Width \= 16 bits +- Truncated polynomial \= 0x1021 +- Initial value \= 0x1D0F +- Input data is NOT reflected +- Output CRC is NOT reflected +- No XOR is performed on the output CRC + +All EEPROM content bytes (starting from Meta EEPROM header up to the CRC16 TLV, +but NOT including the CRC16 TLV field) are included for this CRC16 calculation. +Be aware there is a 16 bits argument for CRC16 calculation. For example, if +CRC16 Type field is located at offset 63, CRC16 calculation will include bytes +from offset 0 to offset 62, inclusively. + +Check +https://github.com/facebook/fboss/blob/main/fboss/platform/weutil/Crc16CcittAug.cpp +for CRC16 CCITT AUG implementation. + +The below list shows the CRC16 output values for corner cases of byte streams +and can be used as the reference to check the correctness of the algorithm. + +| Byte Stream | Length | CRC16 (per CRC-CCITT) | +| :------------------------------------------------------------ | :----- | :-------------------- | +| NULL | 0 | 0x1D0F | +| A | 1 | 0x9479 | +| 123456789 | 9 | 0xE5CC | +| A string of 256 upper case “A” characters with no line breaks | 256 | 0XE938 | + +## **Example:** + +**Raw EEPROM BLOB:** + +``` +> cat eeprom_file | hexdump -C +00000000 fb fb 06 ff 01 0d 46 49 52 53 54 5f 53 51 55 45 |......FIRST_SQUE| +00000010 45 5a 45 02 08 32 30 31 32 33 34 35 36 03 08 53 |EZE..20123456..S| +00000020 59 53 41 31 32 33 34 04 0c 50 43 42 41 31 32 33 |YSA1234..PCBA123| +00000030 34 35 36 37 20 05 0c 50 43 42 31 32 33 34 35 36 |4567 ..PCB123456| +00000040 37 38 20 06 0c 4d 59 4f 44 4d 31 32 33 34 35 36 |78 ..MYODM123456| +00000050 37 07 0d 4f 53 31 32 33 34 35 36 37 38 39 41 42 |7..OS123456789AB| +00000060 08 01 01 09 01 00 0a 01 01 0b 0d 50 53 31 32 33 |...........PS123| +00000070 34 35 36 37 38 39 30 41 0c 07 55 4e 41 5f 4d 41 |4567890A..UNA_MA| +00000080 53 0d 08 32 30 31 33 30 32 30 33 0e 05 54 45 52 |S..20130203..TER| +00000090 5a 4f 0f 09 4a 55 49 43 45 54 4f 52 59 10 07 42 |ZO..JUICETORY..B| +000000a0 55 44 4f 4b 41 4e 11 08 11 22 33 44 55 66 01 02 |UDOKAN..."3DUf..| +000000b0 12 08 12 34 56 78 9a bc 03 04 13 08 66 55 44 33 |...4Vx......fUD3| +000000c0 22 11 02 00 14 08 fe dc ba 98 76 54 00 02 15 01 |".........vT....| +000000d0 01 65 05 01 01 01 01 01 66 05 48 65 6c 6c 6f fa |.e......f.Hello.| +000000e0 02 4a 05 ff ff ff ff ff ff ff ff ff ff ff ff ff |.J..............| +000000f0 ff |.| +``` + +**Output after parsing :** + +``` +> ./weutil --path eeprom_file +Version: 6 +Product Name: FIRST_SQUEEZE +Product Part Number: 20123456 +System Assembly Part Number: SYSA1234 +Meta PCBA Part Number: PCBA1234567 +Meta PCB Part Number: PCB12345678 +ODM/JDM PCBA Part Number: MYODM1234567 +ODM/JDM PCBA Serial Number: OS123456789AB +Product Production State: 1 +Product Version: 0 +Product Sub-Version: 1 +Product Serial Number: PS1234567890A +System Manufacturer: UNA_MAS +System Manufacturing Date: 20130203 +PCB Manufacturer: TERZO +Assembled At: JUICETORY +EEPROM location on Fabric: BUDOKAN +X86 CPU MAC Base: 11:22:33:44:55:66 +X86 CPU MAC Address Size: 258 +BMC MAC Base: 12:34:56:78:9a:bc +BMC MAC Address Size: 772 +Switch ASIC MAC Base: 66:55:44:33:22:11 +Switch ASIC MAC Address Size: 512 +META Reserved MAC Base: fe:dc:ba:98:76:54 +META Reserved MAC Address Size: 2 +RMA: 1 +Vendor Defined Field 1: 0x0101010101 +Vendor Defined Field 2: 0x48656c6c6f +Vendor Defined Field 3: +CRC16: 0x4a05 (CRC Matched) +``` + +**Note:** In case the CRC programmed in the EEPROM mismatches the CRC calculated +by weutil, the last line printing will display the programmed CRC and expected +CRC. + +``` +CRC16: 0xa6b7 (CRC Mismatch. Expected 0x4a05) +``` diff --git a/fboss/fsdb/benchmarks/BUCK b/fboss/fsdb/benchmarks/BUCK new file mode 100644 index 0000000000000..472a7162a0d83 --- /dev/null +++ b/fboss/fsdb/benchmarks/BUCK @@ -0,0 +1,50 @@ +load("@fbcode_macros//build_defs:cpp_benchmark.bzl", "cpp_benchmark") +load("@fbcode_macros//build_defs:cpp_library.bzl", "cpp_library") + +oncall("fboss_agent_push") + +cpp_library( + name = "state_generator", + srcs = ["StateGenerator.cpp"], + headers = [ + "StateGenerator.h", + ], + exported_deps = [ + "//fboss/agent:agent_stats-cpp2-types", + "//fboss/agent/hw:hardware_stats-cpp2-types", + ], +) + +cpp_library( + name = "fsdb_benchmark_helper", + srcs = ["FsdbBenchmarkTestHelper.cpp"], + headers = [ + "FsdbBenchmarkTestHelper.h", + ], + exported_deps = [ + "//fboss/fsdb/client:fsdb_pub_sub", + "//fboss/fsdb/tests/utils:fsdb_test_server", + "//folly/synchronization:baton", + ], +) + +cpp_benchmark( + name = "fsdb_bench_test", + srcs = [ + "FsdbBenchmarksMain.cpp", + "VoqCounterScaleBench.cpp", + ], + deps = [ + "fbsource//third-party/googletest:gtest", + ":fsdb_benchmark_helper", + ":state_generator", + "//folly:benchmark", + "//folly/init:init", + "//folly/json:dynamic", + "//folly/logging:init", + "//folly/logging:logging", + ], + external_deps = [ + "gflags", + ], +) diff --git a/fboss/fsdb/benchmarks/FsdbBenchmarkTestHelper.cpp b/fboss/fsdb/benchmarks/FsdbBenchmarkTestHelper.cpp new file mode 100644 index 0000000000000..b2fc0919d3783 --- /dev/null +++ b/fboss/fsdb/benchmarks/FsdbBenchmarkTestHelper.cpp @@ -0,0 +1,81 @@ +// (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary. + +#include "fboss/fsdb/benchmarks/FsdbBenchmarkTestHelper.h" + +namespace { + +const thriftpath::RootThriftPath + stateRoot; +const thriftpath::RootThriftPath + statsRoot; +const std::vector kPublishRoot{"agent"}; + +} // anonymous namespace + +namespace facebook::fboss::fsdb::test { + +void FsdbBenchmarkTestHelper::setup() { + fsdbTestServer_ = std::make_unique(); + FLAGS_fsdbPort = fsdbTestServer_->getFsdbPort(); + const std::string clientId = "agent"; + pubsubMgr_ = std::make_unique(clientId); +} + +void FsdbBenchmarkTestHelper::publishPath( + const AgentStats& stats, + uint64_t stamp) { + fsdb::OperState state; + state.set_contents( + apache::thrift::BinarySerializer::serialize(stats)); + state.protocol() = fsdb::OperProtocol::BINARY; + state.metadata() = fsdb::OperMetadata(); + state.metadata()->lastConfirmedAt() = stamp; + pubsubMgr_->publishStat(std::move(state)); +} + +void FsdbBenchmarkTestHelper::startPublisher() { + auto stateChangeCb = [this]( + fsdb::FsdbStreamClient::State /* oldState */, + fsdb::FsdbStreamClient::State newState) { + if (newState == fsdb::FsdbStreamClient::State::CONNECTED) { + publisherConnected_.post(); + readyForPublishing_.store(true); + } else { + readyForPublishing_.store(false); + } + }; + // agent is Path publisher for stats + pubsubMgr_->createStatPathPublisher( + getAgentStatsPath(), std::move(stateChangeCb)); +} + +void FsdbBenchmarkTestHelper::waitForPublisherConnected() { + publisherConnected_.wait(); +} + +void FsdbBenchmarkTestHelper::stopPublisher(bool gr) { + readyForPublishing_.store(false); + pubsubMgr_->removeStatPathPublisher(gr); +} + +void FsdbBenchmarkTestHelper::TearDown() { + fsdbTestServer_.reset(); + if (pubsubMgr_) { + stopPublisher(); + CHECK(!readyForPublishing_.load()); + pubsubMgr_.reset(); + } +} + +std::optional +FsdbBenchmarkTestHelper::getPublisherRootMetadata(bool isStats) { + auto metadata = + fsdbTestServer_->getPublisherRootMetadata(*kPublishRoot.begin(), isStats); + return metadata; +} + +std::vector FsdbBenchmarkTestHelper::getAgentStatsPath() { + return statsRoot.agent().tokens(); +} + +} // namespace facebook::fboss::fsdb::test diff --git a/fboss/fsdb/benchmarks/FsdbBenchmarkTestHelper.h b/fboss/fsdb/benchmarks/FsdbBenchmarkTestHelper.h new file mode 100644 index 0000000000000..525db6f9968d2 --- /dev/null +++ b/fboss/fsdb/benchmarks/FsdbBenchmarkTestHelper.h @@ -0,0 +1,38 @@ +// (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary. + +#pragma once + +#include + +#include "fboss/fsdb/client/FsdbPubSubManager.h" +#include "fboss/fsdb/tests/utils/FsdbTestServer.h" + +namespace facebook::fboss::fsdb::test { + +class FsdbBenchmarkTestHelper { + public: + void setup(); + void publishPath(const AgentStats& stats, uint64_t stamp); + void startPublisher(); + void stopPublisher(bool gr = false); + void TearDown(); + void waitForPublisherConnected(); + bool isPublisherConnected() { + return readyForPublishing_.load(); + } + std::optional getPublisherRootMetadata( + bool isStats); + fsdb::test::FsdbTestServer& testServer() { + return *fsdbTestServer_; + } + + private: + std::vector getAgentStatsPath(); + + std::unique_ptr fsdbTestServer_; + std::unique_ptr pubsubMgr_; + folly::Baton<> publisherConnected_; + std::atomic_bool readyForPublishing_ = false; +}; + +} // namespace facebook::fboss::fsdb::test diff --git a/fboss/fsdb/benchmarks/FsdbBenchmarksMain.cpp b/fboss/fsdb/benchmarks/FsdbBenchmarksMain.cpp new file mode 100644 index 0000000000000..7197d1ae7b388 --- /dev/null +++ b/fboss/fsdb/benchmarks/FsdbBenchmarksMain.cpp @@ -0,0 +1,59 @@ +// (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary. + +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +FOLLY_INIT_LOGGING_CONFIG("fboss=DBG3; default:async=true"); + +DECLARE_int64(bm_max_iters); + +inline bool listBenchmarks(int* argc, char** argv) { + for (int i = 0; i < *argc; i++) { + if (strcmp(argv[i], "--bm_list") == 0) { + return true; + } + } + return false; +} + +inline int64_t timevalToUsec(const timeval& tv) { + const int64_t kUsecPerSecond = 1000000; + + return (int64_t(tv.tv_sec) * kUsecPerSecond) + tv.tv_usec; +} + +int main(int argc, char* argv[]) { + struct rusage startUsage, endUsage; + + getrusage(RUSAGE_SELF, &startUsage); + + FLAGS_bm_max_iters = 2; + + if (!listBenchmarks(&argc, argv)) { + testing::InitGoogleTest(&argc, argv); + } + + folly::Init init(&argc, &argv, false); + + folly::runBenchmarks(); + + getrusage(RUSAGE_SELF, &endUsage); + auto cpuTime = + (timevalToUsec(endUsage.ru_stime) - timevalToUsec(startUsage.ru_stime)) + + (timevalToUsec(endUsage.ru_utime) - timevalToUsec(startUsage.ru_utime)); + + folly::dynamic rusageJson = folly::dynamic::object; + rusageJson["cpu_time_usec"] = cpuTime; + rusageJson["max_rss"] = endUsage.ru_maxrss; + std::cout << toPrettyJson(rusageJson) << std::endl; + + return 0; +} diff --git a/fboss/fsdb/benchmarks/StateGenerator.cpp b/fboss/fsdb/benchmarks/StateGenerator.cpp new file mode 100644 index 0000000000000..f1ba0002591b9 --- /dev/null +++ b/fboss/fsdb/benchmarks/StateGenerator.cpp @@ -0,0 +1,70 @@ +// (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary. + +#include "fboss/fsdb/benchmarks/StateGenerator.h" +#include "fboss/agent/hw/gen-cpp2/hardware_stats_types.h" + +namespace facebook::fboss::fsdb::test { + +void StateGenerator::fillVoqStats( + AgentStats* stats, + int nSysPorts, + int nVoqsPerSysPort, + int value) { + stats->sysPortStatsMap()->emplace(0, std::map()); + for (int portId = 0; portId < nSysPorts; ++portId) { + std::string portName = folly::to(":eth/", portId, "/1"); + HwSysPortStats sysPortStatsEntry; + for (int queueId = 0; queueId < nVoqsPerSysPort; queueId++) { + sysPortStatsEntry.queueOutDiscardBytes_()[queueId] = value; + sysPortStatsEntry.queueOutBytes_()[queueId] = value; + sysPortStatsEntry.queueWatermarkBytes_()[queueId] = value; + sysPortStatsEntry.queueWredDroppedPackets_()[queueId] = value; + sysPortStatsEntry.queueCreditWatchdogDeletedPackets_()[queueId] = value; + sysPortStatsEntry.queueLatencyWatermarkNsec_()[queueId] = value; + } + sysPortStatsEntry.portName_() = portName; + sysPortStatsEntry.timestamp_() = 1; + stats->sysPortStatsMap()->at(0).emplace( + portName, std::move(sysPortStatsEntry)); + } +} + +void StateGenerator::updateVoqStats(AgentStats* stats, int increment) { + for (auto& [switchIdx, sysPortStatsMap] : *stats->sysPortStatsMap()) { + for (auto& [portName, sysPortStatsEntry] : sysPortStatsMap) { + for (int queueId = 0; + queueId < sysPortStatsEntry.queueOutDiscardBytes_()->size(); + queueId++) { + sysPortStatsEntry.queueOutDiscardBytes_()[queueId] += increment; + } + for (int queueId = 0; + queueId < sysPortStatsEntry.queueOutBytes_()->size(); + queueId++) { + sysPortStatsEntry.queueOutBytes_()[queueId] += increment; + } + for (int queueId = 0; + queueId < sysPortStatsEntry.queueWatermarkBytes_()->size(); + queueId++) { + sysPortStatsEntry.queueWatermarkBytes_()[queueId] += increment; + } + for (int queueId = 0; + queueId < sysPortStatsEntry.queueWredDroppedPackets_()->size(); + queueId++) { + sysPortStatsEntry.queueWredDroppedPackets_()[queueId] += increment; + } + for (int queueId = 0; queueId < + sysPortStatsEntry.queueCreditWatchdogDeletedPackets_()->size(); + queueId++) { + sysPortStatsEntry.queueCreditWatchdogDeletedPackets_()[queueId] += + increment; + } + for (int queueId = 0; + queueId < sysPortStatsEntry.queueLatencyWatermarkNsec_()->size(); + queueId++) { + sysPortStatsEntry.queueLatencyWatermarkNsec_()[queueId] += increment; + } + } + } +} + +} // namespace facebook::fboss::fsdb::test diff --git a/fboss/fsdb/benchmarks/StateGenerator.h b/fboss/fsdb/benchmarks/StateGenerator.h new file mode 100644 index 0000000000000..f0f04b9770794 --- /dev/null +++ b/fboss/fsdb/benchmarks/StateGenerator.h @@ -0,0 +1,19 @@ +// (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary. + +#pragma once + +#include "fboss/agent/gen-cpp2/agent_stats_types.h" + +namespace facebook::fboss::fsdb::test { + +class StateGenerator { + public: + static void fillVoqStats( + AgentStats* stats, + int nSysPorts, + int nVoqsPerSysPort, + int value = 1); + static void updateVoqStats(AgentStats* stats, int increment = 1); +}; + +} // namespace facebook::fboss::fsdb::test diff --git a/fboss/fsdb/benchmarks/VoqCounterScaleBench.cpp b/fboss/fsdb/benchmarks/VoqCounterScaleBench.cpp new file mode 100644 index 0000000000000..1237726d995a2 --- /dev/null +++ b/fboss/fsdb/benchmarks/VoqCounterScaleBench.cpp @@ -0,0 +1,58 @@ +// (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary. + +#include +#include +#include + +#include "fboss/fsdb/benchmarks/FsdbBenchmarkTestHelper.h" +#include "fboss/fsdb/benchmarks/StateGenerator.h" + +DEFINE_int32(n_sysports, 16000, "number of SysPorts"); +DEFINE_int32(n_voqs_per_sysport, 4, "number of VOQs per SysPort"); +DEFINE_int32(n_publish_iters, 1000, "number of iterations for stats publish"); + +namespace facebook::fboss::fsdb::test { + +BENCHMARK(FsdbPublishVoqStats) { + auto n_iterations = FLAGS_n_publish_iters; + + folly::BenchmarkSuspender suspender; + + // setup FsdbTestServer + FsdbBenchmarkTestHelper helper; + helper.setup(); + + // start publisher and publish initial empty stats + helper.startPublisher(); + + auto stats = std::make_shared(); + helper.publishPath(*stats, 0); + + StateGenerator::fillVoqStats( + stats.get(), FLAGS_n_sysports, FLAGS_n_voqs_per_sysport); + + helper.waitForPublisherConnected(); + + // benchmark test: publish N iterations of stats + suspender.dismiss(); + + for (int round = 0; round < n_iterations; round++) { + StateGenerator::updateVoqStats(stats.get()); + helper.publishPath(*stats, round + 1); + } + + // wait for server to process all the updates + while (true) { + auto md = helper.getPublisherRootMetadata(true); + if (*md->operMetadata.get_lastConfirmedAt() == n_iterations) { + break; + } + std::this_thread::sleep_for(std::chrono::milliseconds(1)); + } + + suspender.rehire(); + + helper.TearDown(); +} + +} // namespace facebook::fboss::fsdb::test diff --git a/fboss/fsdb/client/FsdbPubSubManager.cpp b/fboss/fsdb/client/FsdbPubSubManager.cpp index 65f07ec76d3da..920cc91ec57ec 100644 --- a/fboss/fsdb/client/FsdbPubSubManager.cpp +++ b/fboss/fsdb/client/FsdbPubSubManager.cpp @@ -8,7 +8,6 @@ #include "fboss/fsdb/common/PathHelpers.h" #include "fboss/lib/thrift_service_client/ConnectionOptions.h" -#include #include #include diff --git a/fboss/fsdb/client/test/BUCK b/fboss/fsdb/client/test/BUCK index 8a26e854ede2a..6dafe6b5665f6 100644 --- a/fboss/fsdb/client/test/BUCK +++ b/fboss/fsdb/client/test/BUCK @@ -32,7 +32,6 @@ cpp_unittest( "//fboss/fsdb/client:fsdb_cow_state_sub_manager", "//fboss/fsdb/client:fsdb_cow_stats_sub_manager", "//fboss/fsdb/client:fsdb_pub_sub", - "//fboss/fsdb/if:fsdb_model", "//fboss/fsdb/tests/utils:fsdb_test_server", "//fboss/lib:common_utils", "//fboss/lib/thrift_service_client:thrift-service-client", diff --git a/fboss/fsdb/client/test/FsdbPubSubManagerTest.cpp b/fboss/fsdb/client/test/FsdbPubSubManagerTest.cpp index a9ee7ea46d8ca..c9e17747ad1bb 100644 --- a/fboss/fsdb/client/test/FsdbPubSubManagerTest.cpp +++ b/fboss/fsdb/client/test/FsdbPubSubManagerTest.cpp @@ -10,13 +10,10 @@ #include "fboss/lib/CommonUtils.h" #include "fboss/lib/thrift_service_client/ConnectionOptions.h" -#include #include #include -#include #include -#include namespace facebook::fboss::fsdb { void stateChangeCb( diff --git a/fboss/fsdb/client/test/FsdbSubManagerTest.cpp b/fboss/fsdb/client/test/FsdbSubManagerTest.cpp index 3010f7ce7b527..c715c12813768 100644 --- a/fboss/fsdb/client/test/FsdbSubManagerTest.cpp +++ b/fboss/fsdb/client/test/FsdbSubManagerTest.cpp @@ -3,7 +3,6 @@ #include "fboss/fsdb/client/FsdbPatchPublisher.h" #include "fboss/fsdb/client/instantiations/FsdbCowStateSubManager.h" #include "fboss/fsdb/client/instantiations/FsdbCowStatsSubManager.h" -#include "fboss/fsdb/if/FsdbModel.h" #include "fboss/fsdb/tests/utils/FsdbTestServer.h" #include "fboss/lib/CommonUtils.h" #include "fboss/lib/thrift_service_client/ConnectionOptions.h" diff --git a/fboss/fsdb/common/BUCK b/fboss/fsdb/common/BUCK index 07cd9dde1e671..1b07eb4d95653 100644 --- a/fboss/fsdb/common/BUCK +++ b/fboss/fsdb/common/BUCK @@ -30,7 +30,6 @@ cpp_library( "Utils.h", ], exported_deps = [ - "fbsource//third-party/fmt:fmt", "//fboss/fsdb/if:fsdb_common-cpp2-types", "//fboss/fsdb/if:fsdb_oper-cpp2-types", "//fboss/thrift_cow/storage:cow_storage", diff --git a/fboss/fsdb/common/Flags.cpp b/fboss/fsdb/common/Flags.cpp index 6ef83d58095ed..c13b5cc0240ec 100644 --- a/fboss/fsdb/common/Flags.cpp +++ b/fboss/fsdb/common/Flags.cpp @@ -10,6 +10,11 @@ DEFINE_int32( // current default 5908 is in conflict with VNC ports, need to // eventually migrate to 5958 DEFINE_int32(migrated_fsdbPort, 5958, "New FSDB thrift server port migrate to"); +// Only FBOSS DSF subscriber is using this fsdbPort_high_priority port +DEFINE_int32( + fsdbPort_high_priority, + 5957, + "FSDB thrift server port connected using high priority tos=0xc0"); DEFINE_bool(publish_stats_to_fsdb, false, "Whether to publish stats to fsdb"); DEFINE_bool( publish_state_to_fsdb, diff --git a/fboss/fsdb/common/Flags.h b/fboss/fsdb/common/Flags.h index d6c3658a5515b..171eb8c4f2639 100644 --- a/fboss/fsdb/common/Flags.h +++ b/fboss/fsdb/common/Flags.h @@ -6,6 +6,7 @@ DECLARE_int32(fsdbPort); DECLARE_int32(migrated_fsdbPort); +DECLARE_int32(fsdbPort_high_priority); DECLARE_bool(publish_stats_to_fsdb); DECLARE_bool(publish_state_to_fsdb); DECLARE_bool(subscribe_to_stats_from_fsdb); diff --git a/fboss/fsdb/common/Utils.cpp b/fboss/fsdb/common/Utils.cpp index 62cd1ccd4b483..606ab45482283 100644 --- a/fboss/fsdb/common/Utils.cpp +++ b/fboss/fsdb/common/Utils.cpp @@ -1,9 +1,6 @@ // (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary. #include "fboss/fsdb/common/Utils.h" -#include -#include -#include #include #include diff --git a/fboss/fsdb/if/fsdb_common.thrift b/fboss/fsdb/if/fsdb_common.thrift index 5f4f11599944c..8570cf2f62491 100644 --- a/fboss/fsdb/if/fsdb_common.thrift +++ b/fboss/fsdb/if/fsdb_common.thrift @@ -14,6 +14,18 @@ const string kFsdbStatsFanOutNativeStatsPrefix = "fsdb.statsFanOut."; const i32 PORT = 5908; +/** + * Default value sourced from Cfgr "neteng/qosdb/cos_utility_maps" + * dscpToClassOfServiceMap.ClassOfService.NC : 48 + * Rationale: In DSF clusters fsdb is a Tier 0 service required for + * bringing up network control plane and needs to be up with minimal + * dependencies. Therefore, sourcing the const in fbcode instead of + * a runtime configerator read. + * + * 8-bit TOS = 6-bit DSCP followed by 2-bit ECN + */ +const i32 kTosForClassOfServiceNC = 0xc0; + // NOTE: keep in sync with fb303::ExportType enum ExportType { SUM = 0, diff --git a/fboss/fsdb/if/oss/fsdb_model_thriftpath.h b/fboss/fsdb/if/oss/fsdb_model_thriftpath.h index e663c340a3578..0c7b160d2a796 100755 --- a/fboss/fsdb/if/oss/fsdb_model_thriftpath.h +++ b/fboss/fsdb/if/oss/fsdb_model_thriftpath.h @@ -2639,161 +2639,98 @@ std::pair> } }; - -template -class ChildThriftPath<::facebook::fboss::state::SendToQueue, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : - public Path< - ::facebook::fboss::state::SendToQueue, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::state::SendToQueue>, - Parent> { - public: - using Self = Path< - ::facebook::fboss::state::SendToQueue, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::state::SendToQueue>, - Parent>; - using strings = ::facebook::fboss::state::switch_state_tags::strings; - template - using Child = Path< - ChildType, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ChildTC, - ChildTag, - Self - >; - using Children = fatal::tuple>, -std::pair>>; - using ChildrenById = fatal::tuple< std::pair, ChildThriftPath<::facebook::fboss::cfg::QueueMatchAction, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, Child>>; - template - using NameToId = fatal::tuple>, -std::pair>>::template type_of; - - template - using TypeFor = typename Children::template type_of; - using Self::Self; - - STRUCT_CHILD_GETTERS(action, 1); - STRUCT_CHILD_GETTERS(sendToCPU, 2); - - template - auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return action(); } - else if constexpr (__id == 2) { return sendToCPU(); } - } - - template - auto operator()(const fatal::sequence&) { - return operator()(NameToId>()); - } -}; - -template -class ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::int64_t, ::facebook::fboss::state::SystemPortFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : - public Path< - ::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::int64_t, ::facebook::fboss::state::SystemPortFields>>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>>, - ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::map<::apache::thrift::type::i64_t, ::apache::thrift::type::struct_t<::facebook::fboss::SystemPortThrift>>>, - Parent> { - public: - using Self = Path< - ::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::int64_t, ::facebook::fboss::state::SystemPortFields>>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>>, - ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::map<::apache::thrift::type::i64_t, ::apache::thrift::type::struct_t<::facebook::fboss::SystemPortThrift>>>, - Parent>; - using Child = ChildThriftPath<::std::map<::std::int64_t, ::facebook::fboss::state::SystemPortFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; - using Self::Self; - - CONTAINER_CHILD_GETTERS(::facebook::fboss::state::SwitchIdList); -}; - -template -class ChildThriftPath<::std::map<::std::int32_t, ::facebook::fboss::state::LabelForwardingEntryFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : - public Path< - ::std::map<::std::int32_t, ::facebook::fboss::state::LabelForwardingEntryFields>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>, - ::apache::thrift::type::map<::apache::thrift::type::i32_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::LabelForwardingEntryFields>>, - Parent> { - public: - using Self = Path< - ::std::map<::std::int32_t, ::facebook::fboss::state::LabelForwardingEntryFields>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>, - ::apache::thrift::type::map<::apache::thrift::type::i32_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::LabelForwardingEntryFields>>, - Parent>; - using Child = ChildThriftPath<::facebook::fboss::state::LabelForwardingEntryFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; - using Self::Self; - - CONTAINER_CHILD_GETTERS(::std::int32_t); -}; - template -class ChildThriftPath<::std::vector<::facebook::fboss::cfg::AggregatePort>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::map<::std::int32_t, ::std::set<::std::int32_t>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::vector<::facebook::fboss::cfg::AggregatePort>, + ::std::map<::std::int32_t, ::std::set<::std::int32_t>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::AggregatePort>>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::set<::apache::thrift::type_class::integral>>, + ::apache::thrift::type::map<::apache::thrift::type::i32_t, ::apache::thrift::type::set<::apache::thrift::type::i32_t>>, Parent> { public: using Self = Path< - ::std::vector<::facebook::fboss::cfg::AggregatePort>, + ::std::map<::std::int32_t, ::std::set<::std::int32_t>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::AggregatePort>>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::set<::apache::thrift::type_class::integral>>, + ::apache::thrift::type::map<::apache::thrift::type::i32_t, ::apache::thrift::type::set<::apache::thrift::type::i32_t>>, Parent>; - using Child = ChildThriftPath<::facebook::fboss::cfg::AggregatePort, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Child = ChildThriftPath<::std::set<::std::int32_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; using Self::Self; CONTAINER_CHILD_GETTERS(::std::int32_t); }; template -class ChildThriftPath<::std::map<::std::string, ::facebook::fboss::BufferPoolFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::map<::std::string, ::facebook::fboss::state::MirrorOnDropReportFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::map<::std::string, ::facebook::fboss::BufferPoolFields>, + ::std::map<::std::string, ::facebook::fboss::state::MirrorOnDropReportFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>, - ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::BufferPoolFields>>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::MirrorOnDropReportFields>>, Parent> { public: using Self = Path< - ::std::map<::std::string, ::facebook::fboss::BufferPoolFields>, + ::std::map<::std::string, ::facebook::fboss::state::MirrorOnDropReportFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>, - ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::BufferPoolFields>>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::MirrorOnDropReportFields>>, Parent>; - using Child = ChildThriftPath<::facebook::fboss::BufferPoolFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Child = ChildThriftPath<::facebook::fboss::state::MirrorOnDropReportFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; using Self::Self; CONTAINER_CHILD_GETTERS(::std::string); }; + template -class ChildThriftPath<::std::map<::std::int32_t, ::std::set<::std::int32_t>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::cfg::StaticRouteNoNextHops, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::map<::std::int32_t, ::std::set<::std::int32_t>>, + ::facebook::fboss::cfg::StaticRouteNoNextHops, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::set<::apache::thrift::type_class::integral>>, - ::apache::thrift::type::map<::apache::thrift::type::i32_t, ::apache::thrift::type::set<::apache::thrift::type::i32_t>>, + ::apache::thrift::type_class::structure, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::StaticRouteNoNextHops>, Parent> { public: using Self = Path< - ::std::map<::std::int32_t, ::std::set<::std::int32_t>>, + ::facebook::fboss::cfg::StaticRouteNoNextHops, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::set<::apache::thrift::type_class::integral>>, - ::apache::thrift::type::map<::apache::thrift::type::i32_t, ::apache::thrift::type::set<::apache::thrift::type::i32_t>>, + ::apache::thrift::type_class::structure, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::StaticRouteNoNextHops>, Parent>; - using Child = ChildThriftPath<::std::set<::std::int32_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using strings = ::facebook::fboss::cfg::switch_config_tags::strings; + template + using Child = Path< + ChildType, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ChildTC, + ChildTag, + Self + >; + using Children = fatal::tuple>, +std::pair>>; + using ChildrenById = fatal::tuple< std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>>; + template + using NameToId = fatal::tuple>, +std::pair>>::template type_of; + + template + using TypeFor = typename Children::template type_of; using Self::Self; + + STRUCT_CHILD_GETTERS(routerID, 1); + STRUCT_CHILD_GETTERS(prefix, 2); - CONTAINER_CHILD_GETTERS(::std::int32_t); + template + auto operator()(const std::integral_constant&) { + if constexpr (__id == 1) { return routerID(); } + else if constexpr (__id == 2) { return prefix(); } + } + + template + auto operator()(const fatal::sequence&) { + return operator()(NameToId>()); + } }; @@ -3110,7 +3047,9 @@ std::pair>, std::pair>, std::pair>, -std::pair>>; +std::pair>, +std::pair>, +std::pair>>; using ChildrenById = fatal::tuple< std::pair, Child<::facebook::fboss::cfg::L2LearningMode, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::L2LearningMode>>>, std::pair, Child>, std::pair, Child>, @@ -3156,7 +3095,9 @@ std::pair, Child<::std::int8_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::byte_t>>, std::pair, Child<::std::int8_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::byte_t>>, std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>>; + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>>; template using NameToId = fatal::tuple>, std::pair>, @@ -3203,7 +3144,9 @@ std::pair>, std::pair>, std::pair>, -std::pair>>::template type_of; +std::pair>, +std::pair>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; @@ -3255,6 +3198,8 @@ std::pair auto operator()(const std::integral_constant&) { @@ -3304,6 +3249,8 @@ std::pair @@ -3354,6 +3301,27 @@ class ChildThriftPath<::std::vector<::facebook::fboss::phy::PinConfig>, ::facebo CONTAINER_CHILD_GETTERS(::std::int32_t); }; +template +class ChildThriftPath<::std::vector<::facebook::fboss::cfg::StaticIp2MplsRoute>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : + public Path< + ::std::vector<::facebook::fboss::cfg::StaticIp2MplsRoute>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::StaticIp2MplsRoute>>, + Parent> { + public: + using Self = Path< + ::std::vector<::facebook::fboss::cfg::StaticIp2MplsRoute>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::StaticIp2MplsRoute>>, + Parent>; + using Child = ChildThriftPath<::facebook::fboss::cfg::StaticIp2MplsRoute, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Self::Self; + + CONTAINER_CHILD_GETTERS(::std::int32_t); +}; + template class ChildThriftPath<::facebook::fboss::cfg::AclEntry, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : @@ -3556,27 +3524,6 @@ std::pair -class ChildThriftPath<::std::vector<::facebook::fboss::cfg::StaticIp2MplsRoute>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : - public Path< - ::std::vector<::facebook::fboss::cfg::StaticIp2MplsRoute>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::StaticIp2MplsRoute>>, - Parent> { - public: - using Self = Path< - ::std::vector<::facebook::fboss::cfg::StaticIp2MplsRoute>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::StaticIp2MplsRoute>>, - Parent>; - using Child = ChildThriftPath<::facebook::fboss::cfg::StaticIp2MplsRoute, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; - using Self::Self; - - CONTAINER_CHILD_GETTERS(::std::int32_t); -}; - template class ChildThriftPath<::facebook::fboss::state::QosPolicyFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : @@ -4034,27 +3981,6 @@ std::pair -class ChildThriftPath<::std::vector<::facebook::fboss::cfg::StaticRouteWithNextHops>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : - public Path< - ::std::vector<::facebook::fboss::cfg::StaticRouteWithNextHops>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::StaticRouteWithNextHops>>, - Parent> { - public: - using Self = Path< - ::std::vector<::facebook::fboss::cfg::StaticRouteWithNextHops>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::StaticRouteWithNextHops>>, - Parent>; - using Child = ChildThriftPath<::facebook::fboss::cfg::StaticRouteWithNextHops, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; - using Self::Self; - - CONTAINER_CHILD_GETTERS(::std::int32_t); -}; - template class ChildThriftPath<::facebook::fboss::state::PortPgFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : @@ -4162,6 +4088,27 @@ std::pair +class ChildThriftPath<::std::vector<::facebook::fboss::cfg::StaticRouteWithNextHops>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : + public Path< + ::std::vector<::facebook::fboss::cfg::StaticRouteWithNextHops>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::StaticRouteWithNextHops>>, + Parent> { + public: + using Self = Path< + ::std::vector<::facebook::fboss::cfg::StaticRouteWithNextHops>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::StaticRouteWithNextHops>>, + Parent>; + using Child = ChildThriftPath<::facebook::fboss::cfg::StaticRouteWithNextHops, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Self::Self; + + CONTAINER_CHILD_GETTERS(::std::int32_t); +}; + template class ChildThriftPath<::facebook::fboss::phy::ProfileSideConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : @@ -4524,23 +4471,44 @@ class ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::std:: CONTAINER_CHILD_GETTERS(::facebook::fboss::state::SwitchIdList); }; - template -class ChildThriftPath<::facebook::fboss::cfg::ActiveQueueManagement, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::map<::facebook::fboss::cfg::AclStage, ::facebook::fboss::state::AclTableGroupFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::cfg::ActiveQueueManagement, + ::std::map<::facebook::fboss::cfg::AclStage, ::facebook::fboss::state::AclTableGroupFields>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::map<::apache::thrift::type_class::enumeration, ::apache::thrift::type_class::structure>, + ::apache::thrift::type::map<::apache::thrift::type::enum_t<::facebook::fboss::cfg::AclStage>, ::apache::thrift::type::struct_t<::facebook::fboss::state::AclTableGroupFields>>, + Parent> { + public: + using Self = Path< + ::std::map<::facebook::fboss::cfg::AclStage, ::facebook::fboss::state::AclTableGroupFields>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::map<::apache::thrift::type_class::enumeration, ::apache::thrift::type_class::structure>, + ::apache::thrift::type::map<::apache::thrift::type::enum_t<::facebook::fboss::cfg::AclStage>, ::apache::thrift::type::struct_t<::facebook::fboss::state::AclTableGroupFields>>, + Parent>; + using Child = ChildThriftPath<::facebook::fboss::state::AclTableGroupFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Self::Self; + + CONTAINER_CHILD_GETTERS(::facebook::fboss::cfg::AclStage); +}; + + +template +class ChildThriftPath<::facebook::fboss::SystemPortThrift, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : + public Path< + ::facebook::fboss::SystemPortThrift, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::ActiveQueueManagement>, + ::apache::thrift::type::struct_t<::facebook::fboss::SystemPortThrift>, Parent> { public: using Self = Path< - ::facebook::fboss::cfg::ActiveQueueManagement, + ::facebook::fboss::SystemPortThrift, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::ActiveQueueManagement>, + ::apache::thrift::type::struct_t<::facebook::fboss::SystemPortThrift>, Parent>; - using strings = ::facebook::fboss::cfg::switch_config_tags::strings; + using strings = ::facebook::fboss::ctrl_tags::strings; template using Child = Path< ChildType, @@ -4549,25 +4517,80 @@ class ChildThriftPath<::facebook::fboss::cfg::ActiveQueueManagement, ::facebook: ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>>>; - using ChildrenById = fatal::tuple< std::pair, ChildThriftPath<::facebook::fboss::cfg::QueueCongestionDetection, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, Child<::facebook::fboss::cfg::QueueCongestionBehavior, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::QueueCongestionBehavior>>>>; + using Children = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair>>, +std::pair>>, +std::pair>>>; + using ChildrenById = fatal::tuple< std::pair, Child<::std::int64_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i64_t>>, + std::pair, Child<::std::int64_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i64_t>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, Child<::std::int64_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i64_t>>, + std::pair, Child<::std::int64_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i64_t>>, + std::pair, Child<::std::int64_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i64_t>>, + std::pair, Child<::std::int64_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i64_t>>, + std::pair, Child>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, ChildThriftPath<::std::vector<::facebook::fboss::PortQueueFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, Child<::facebook::fboss::RemoteSystemPortType, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::RemoteSystemPortType>>>, + std::pair, Child<::facebook::fboss::LivenessStatus, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::LivenessStatus>>>, + std::pair, Child<::facebook::fboss::cfg::Scope, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::Scope>>>>; template - using NameToId = fatal::tuple>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(detection, 1); - STRUCT_CHILD_GETTERS(behavior, 2); + STRUCT_CHILD_GETTERS(portId, 1); + STRUCT_CHILD_GETTERS(switchId, 2); + STRUCT_CHILD_GETTERS(portName, 3); + STRUCT_CHILD_GETTERS(coreIndex, 4); + STRUCT_CHILD_GETTERS(corePortIndex, 5); + STRUCT_CHILD_GETTERS(speedMbps, 6); + STRUCT_CHILD_GETTERS(numVoqs, 7); + STRUCT_CHILD_GETTERS(enabled_DEPRECATED, 9); + STRUCT_CHILD_GETTERS(qosPolicy, 10); + STRUCT_CHILD_GETTERS(queues, 11); + STRUCT_CHILD_GETTERS(remoteSystemPortType, 12); + STRUCT_CHILD_GETTERS(remoteSystemPortLivenessStatus, 13); + STRUCT_CHILD_GETTERS(scope, 14); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return detection(); } - else if constexpr (__id == 2) { return behavior(); } + if constexpr (__id == 1) { return portId(); } + else if constexpr (__id == 2) { return switchId(); } + else if constexpr (__id == 3) { return portName(); } + else if constexpr (__id == 4) { return coreIndex(); } + else if constexpr (__id == 5) { return corePortIndex(); } + else if constexpr (__id == 6) { return speedMbps(); } + else if constexpr (__id == 7) { return numVoqs(); } + else if constexpr (__id == 9) { return enabled_DEPRECATED(); } + else if constexpr (__id == 10) { return qosPolicy(); } + else if constexpr (__id == 11) { return queues(); } + else if constexpr (__id == 12) { return remoteSystemPortType(); } + else if constexpr (__id == 13) { return remoteSystemPortLivenessStatus(); } + else if constexpr (__id == 14) { return scope(); } } template @@ -4578,21 +4601,21 @@ std::pair -class ChildThriftPath<::facebook::fboss::cfg::AsicConfigEntry, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::cfg::QosMap, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::cfg::AsicConfigEntry, + ::facebook::fboss::cfg::QosMap, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::variant, - ::apache::thrift::type::union_t<::facebook::fboss::cfg::AsicConfigEntry>, + ::apache::thrift::type_class::structure, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::QosMap>, Parent> { public: using Self = Path< - ::facebook::fboss::cfg::AsicConfigEntry, + ::facebook::fboss::cfg::QosMap, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::variant, - ::apache::thrift::type::union_t<::facebook::fboss::cfg::AsicConfigEntry>, + ::apache::thrift::type_class::structure, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::QosMap>, Parent>; - using strings = ::facebook::fboss::cfg::asic_config_v2_tags::strings; + using strings = ::facebook::fboss::cfg::switch_config_tags::strings; template using Child = Path< ChildType, @@ -4601,30 +4624,50 @@ class ChildThriftPath<::facebook::fboss::cfg::AsicConfigEntry, ::facebook::fboss ChildTag, Self >; - using Children = fatal::tuple, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair>, -std::pair>>; - using ChildrenById = fatal::tuple< std::pair, ChildThriftPath<::std::map<::std::string, ::std::string>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>>; + using Children = fatal::tuple, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + using ChildrenById = fatal::tuple< std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::DscpQosMap>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::ExpQosMap>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::map<::std::int16_t, ::std::int16_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::map<::std::int16_t, ::std::int16_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::map<::std::int16_t, ::std::int16_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::map<::std::int16_t, ::std::int16_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::map<::std::int16_t, ::std::int16_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(config, 1); - STRUCT_CHILD_GETTERS(jsonConfig, 2); - STRUCT_CHILD_GETTERS(yamlConfig, 3); + STRUCT_CHILD_GETTERS(dscpMaps, 1); + STRUCT_CHILD_GETTERS(expMaps, 2); + STRUCT_CHILD_GETTERS(trafficClassToQueueId, 3); + STRUCT_CHILD_GETTERS(pfcPriorityToQueueId, 4); + STRUCT_CHILD_GETTERS(trafficClassToPgId, 5); + STRUCT_CHILD_GETTERS(pfcPriorityToPgId, 6); + STRUCT_CHILD_GETTERS(trafficClassToVoqId, 7); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return config(); } - else if constexpr (__id == 2) { return jsonConfig(); } - else if constexpr (__id == 3) { return yamlConfig(); } + if constexpr (__id == 1) { return dscpMaps(); } + else if constexpr (__id == 2) { return expMaps(); } + else if constexpr (__id == 3) { return trafficClassToQueueId(); } + else if constexpr (__id == 4) { return pfcPriorityToQueueId(); } + else if constexpr (__id == 5) { return trafficClassToPgId(); } + else if constexpr (__id == 6) { return pfcPriorityToPgId(); } + else if constexpr (__id == 7) { return trafficClassToVoqId(); } } template @@ -4633,44 +4676,23 @@ std::pair -class ChildThriftPath<::std::vector<::facebook::fboss::cfg::ExpQosMap>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : - public Path< - ::std::vector<::facebook::fboss::cfg::ExpQosMap>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::ExpQosMap>>, - Parent> { - public: - using Self = Path< - ::std::vector<::facebook::fboss::cfg::ExpQosMap>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::ExpQosMap>>, - Parent>; - using Child = ChildThriftPath<::facebook::fboss::cfg::ExpQosMap, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; - using Self::Self; - - CONTAINER_CHILD_GETTERS(::std::int32_t); -}; - template -class ChildThriftPath<::facebook::fboss::cfg::SetTcAction, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::phy::PortPrbsState, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::cfg::SetTcAction, + ::facebook::fboss::phy::PortPrbsState, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::SetTcAction>, + ::apache::thrift::type::struct_t<::facebook::fboss::phy::PortPrbsState>, Parent> { public: using Self = Path< - ::facebook::fboss::cfg::SetTcAction, + ::facebook::fboss::phy::PortPrbsState, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::SetTcAction>, + ::apache::thrift::type::struct_t<::facebook::fboss::phy::PortPrbsState>, Parent>; - using strings = ::facebook::fboss::cfg::switch_config_tags::strings; + using strings = ::facebook::fboss::phy::phy_tags::strings; template using Child = Path< ChildType, @@ -4679,20 +4701,25 @@ class ChildThriftPath<::facebook::fboss::cfg::SetTcAction, ::facebook::fboss::fs ChildTag, Self >; - using Children = fatal::tuple>>; - using ChildrenById = fatal::tuple< std::pair, Child<::std::int8_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::byte_t>>>; + using Children = fatal::tuple>, +std::pair>>; + using ChildrenById = fatal::tuple< std::pair, Child>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>>; template - using NameToId = fatal::tuple>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(tcValue, 1); + STRUCT_CHILD_GETTERS(enabled, 1); + STRUCT_CHILD_GETTERS(polynominal, 2); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return tcValue(); } + if constexpr (__id == 1) { return enabled(); } + else if constexpr (__id == 2) { return polynominal(); } } template @@ -4703,21 +4730,21 @@ class ChildThriftPath<::facebook::fboss::cfg::SetTcAction, ::facebook::fboss::fs template -class ChildThriftPath<::facebook::fboss::cfg::MinimumCapacity, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::state::LabelForwardingEntryFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::cfg::MinimumCapacity, + ::facebook::fboss::state::LabelForwardingEntryFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::variant, - ::apache::thrift::type::union_t<::facebook::fboss::cfg::MinimumCapacity>, + ::apache::thrift::type_class::structure, + ::apache::thrift::type::struct_t<::facebook::fboss::state::LabelForwardingEntryFields>, Parent> { public: using Self = Path< - ::facebook::fboss::cfg::MinimumCapacity, + ::facebook::fboss::state::LabelForwardingEntryFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::variant, - ::apache::thrift::type::union_t<::facebook::fboss::cfg::MinimumCapacity>, + ::apache::thrift::type_class::structure, + ::apache::thrift::type::struct_t<::facebook::fboss::state::LabelForwardingEntryFields>, Parent>; - using strings = ::facebook::fboss::cfg::switch_config_tags::strings; + using strings = ::facebook::fboss::state::switch_state_tags::strings; template using Child = Path< ChildType, @@ -4726,25 +4753,40 @@ class ChildThriftPath<::facebook::fboss::cfg::MinimumCapacity, ::facebook::fboss ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>>; - using ChildrenById = fatal::tuple< std::pair, Child<::std::int8_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::byte_t>>, - std::pair, Child>>; + using Children = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>, +std::pair>>>; + using ChildrenById = fatal::tuple< std::pair, ChildThriftPath<::facebook::fboss::state::Label, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::facebook::fboss::state::RouteNextHopsMulti, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::facebook::fboss::state::RouteNextHopEntry, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::facebook::fboss::cfg::AclLookupClass, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::AclLookupClass>>>>; template - using NameToId = fatal::tuple>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(linkCount, 1); - STRUCT_CHILD_GETTERS(linkPercentage, 2); + STRUCT_CHILD_GETTERS(label, 1); + STRUCT_CHILD_GETTERS(nexthopsmulti, 2); + STRUCT_CHILD_GETTERS(fwd, 3); + STRUCT_CHILD_GETTERS(flags, 4); + STRUCT_CHILD_GETTERS(classID, 5); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return linkCount(); } - else if constexpr (__id == 2) { return linkPercentage(); } + if constexpr (__id == 1) { return label(); } + else if constexpr (__id == 2) { return nexthopsmulti(); } + else if constexpr (__id == 3) { return fwd(); } + else if constexpr (__id == 4) { return flags(); } + else if constexpr (__id == 5) { return classID(); } } template @@ -4753,23 +4795,44 @@ std::pair +class ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::string, ::facebook::fboss::state::PortFlowletFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : + public Path< + ::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::string, ::facebook::fboss::state::PortFlowletFields>>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::PortFlowletFields>>>, + Parent> { + public: + using Self = Path< + ::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::string, ::facebook::fboss::state::PortFlowletFields>>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::PortFlowletFields>>>, + Parent>; + using Child = ChildThriftPath<::std::map<::std::string, ::facebook::fboss::state::PortFlowletFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Self::Self; + + CONTAINER_CHILD_GETTERS(::facebook::fboss::state::SwitchIdList); +}; + template -class ChildThriftPath<::facebook::fboss::cfg::SwitchConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::state::MirrorOnDropReportFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::cfg::SwitchConfig, + ::facebook::fboss::state::MirrorOnDropReportFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::SwitchConfig>, + ::apache::thrift::type::struct_t<::facebook::fboss::state::MirrorOnDropReportFields>, Parent> { public: using Self = Path< - ::facebook::fboss::cfg::SwitchConfig, + ::facebook::fboss::state::MirrorOnDropReportFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::SwitchConfig>, + ::apache::thrift::type::struct_t<::facebook::fboss::state::MirrorOnDropReportFields>, Parent>; - using strings = ::facebook::fboss::cfg::switch_config_tags::strings; + using strings = ::facebook::fboss::state::switch_state_tags::strings; template using Child = Path< ChildType, @@ -4778,285 +4841,70 @@ class ChildThriftPath<::facebook::fboss::cfg::SwitchConfig, ::facebook::fboss::f ChildTag, Self >; - using Children = fatal::tuple>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair>, -std::pair>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair>, -std::pair>, -std::pair>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair>, -std::pair>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair>, -std::pair>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair>, -std::pair>>; - using ChildrenById = fatal::tuple< std::pair, Child<::std::int64_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i64_t>>, - std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::Port>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::Vlan>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::VlanPort>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::Interface>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::StaticRouteWithNextHops>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::StaticRouteNoNextHops>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::StaticRouteNoNextHops>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::AclEntry>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::AggregatePort>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::map<::std::int32_t, ::std::int32_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, ChildThriftPath<::facebook::fboss::cfg::TrafficPolicyConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::SflowCollector>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::facebook::fboss::cfg::Lacp, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::PortQueue>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::facebook::fboss::cfg::CPUTrafficPolicyConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::LoadBalancer>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::facebook::fboss::cfg::TrafficPolicyConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::Mirror>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::TrafficCounter>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::QosPolicy>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::PortQueue>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::StaticMplsRouteWithNextHops>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::StaticMplsRouteNoNextHops>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::StaticMplsRouteNoNextHops>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::StaticIp2MplsRoute>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::map<::facebook::fboss::cfg::PortQueueConfigName, ::std::vector<::facebook::fboss::cfg::PortQueue>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::facebook::fboss::cfg::SwitchSettings, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::facebook::fboss::cfg::QcmConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::map<::facebook::fboss::cfg::PortPgConfigName, ::std::vector<::facebook::fboss::cfg::PortPgConfig>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::map<::facebook::fboss::cfg::BufferPoolConfigName, ::facebook::fboss::cfg::BufferPoolConfig>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::facebook::fboss::cfg::AclTableGroup, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::facebook::fboss::cfg::SdkVersion, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::IpInIpTunnel>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::map<::std::int64_t, ::facebook::fboss::cfg::DsfNode>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::facebook::fboss::cfg::UdfConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::facebook::fboss::cfg::FlowletSwitchingConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::PortQueue>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::map<::facebook::fboss::cfg::PortFlowletConfigName, ::facebook::fboss::cfg::PortFlowletConfig>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>>; + using Children = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>>; + using ChildrenById = fatal::tuple< std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, ChildThriftPath<::facebook::network::thrift::BinaryAddress, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, + std::pair, ChildThriftPath<::facebook::network::thrift::BinaryAddress, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, + std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, + std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, + std::pair, Child<::std::int8_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::byte_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>>; template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(version, 1); - STRUCT_CHILD_GETTERS(ports, 2); - STRUCT_CHILD_GETTERS(vlans, 3); - STRUCT_CHILD_GETTERS(vlanPorts, 4); - STRUCT_CHILD_GETTERS(defaultVlan, 5); - STRUCT_CHILD_GETTERS(interfaces, 6); - STRUCT_CHILD_GETTERS(arpTimeoutSeconds, 7); - STRUCT_CHILD_GETTERS(arpRefreshSeconds, 8); - STRUCT_CHILD_GETTERS(arpAgerInterval, 9); - STRUCT_CHILD_GETTERS(proactiveArp, 10); - STRUCT_CHILD_GETTERS(cpuMAC, 11); - STRUCT_CHILD_GETTERS(staticRoutesWithNhops, 12); - STRUCT_CHILD_GETTERS(staticRoutesToNull, 13); - STRUCT_CHILD_GETTERS(staticRoutesToCPU, 14); - STRUCT_CHILD_GETTERS(acls, 15); - STRUCT_CHILD_GETTERS(maxNeighborProbes, 16); - STRUCT_CHILD_GETTERS(staleEntryInterval, 17); - STRUCT_CHILD_GETTERS(aggregatePorts, 18); - STRUCT_CHILD_GETTERS(clientIdToAdminDistance, 19); - STRUCT_CHILD_GETTERS(dhcpRelaySrcOverrideV4, 20); - STRUCT_CHILD_GETTERS(dhcpRelaySrcOverrideV6, 21); - STRUCT_CHILD_GETTERS(dhcpReplySrcOverrideV4, 22); - STRUCT_CHILD_GETTERS(dhcpReplySrcOverrideV6, 23); - STRUCT_CHILD_GETTERS(globalEgressTrafficPolicy_DEPRECATED, 24); - STRUCT_CHILD_GETTERS(config_version, 25); - STRUCT_CHILD_GETTERS(sFlowCollectors, 26); - STRUCT_CHILD_GETTERS(lacp, 27); - STRUCT_CHILD_GETTERS(cpuQueues, 28); - STRUCT_CHILD_GETTERS(cpuTrafficPolicy, 29); - STRUCT_CHILD_GETTERS(loadBalancers, 30); - STRUCT_CHILD_GETTERS(dataPlaneTrafficPolicy, 31); - STRUCT_CHILD_GETTERS(mirrors, 32); - STRUCT_CHILD_GETTERS(trafficCounters, 33); - STRUCT_CHILD_GETTERS(qosPolicies, 34); - STRUCT_CHILD_GETTERS(defaultPortQueues, 35); - STRUCT_CHILD_GETTERS(staticMplsRoutesWithNhops, 36); - STRUCT_CHILD_GETTERS(staticMplsRoutesToNull, 37); - STRUCT_CHILD_GETTERS(staticMplsRoutesToCPU, 38); - STRUCT_CHILD_GETTERS(staticIp2MplsRoutes, 39); - STRUCT_CHILD_GETTERS(portQueueConfigs, 40); - STRUCT_CHILD_GETTERS(switchSettings, 41); - STRUCT_CHILD_GETTERS(qcmConfig, 42); - STRUCT_CHILD_GETTERS(portPgConfigs, 43); - STRUCT_CHILD_GETTERS(bufferPoolConfigs, 44); - STRUCT_CHILD_GETTERS(aclTableGroup, 45); - STRUCT_CHILD_GETTERS(sdkVersion, 46); - STRUCT_CHILD_GETTERS(ipInIpTunnels, 47); - STRUCT_CHILD_GETTERS(dsfNodes, 48); - STRUCT_CHILD_GETTERS(udfConfig, 49); - STRUCT_CHILD_GETTERS(flowletSwitchingConfig, 50); - STRUCT_CHILD_GETTERS(defaultVoqConfig, 51); - STRUCT_CHILD_GETTERS(portFlowletConfigs, 52); - STRUCT_CHILD_GETTERS(icmpV4UnavailableSrcAddress, 53); - STRUCT_CHILD_GETTERS(hostname, 54); + STRUCT_CHILD_GETTERS(name, 1); + STRUCT_CHILD_GETTERS(mirrorPortId, 2); + STRUCT_CHILD_GETTERS(localSrcIp, 3); + STRUCT_CHILD_GETTERS(localSrcPort, 4); + STRUCT_CHILD_GETTERS(collectorIp, 5); + STRUCT_CHILD_GETTERS(collectorPort, 6); + STRUCT_CHILD_GETTERS(mtu, 7); + STRUCT_CHILD_GETTERS(truncateSize, 8); + STRUCT_CHILD_GETTERS(dscp, 9); + STRUCT_CHILD_GETTERS(agingIntervalUsecs, 10); + STRUCT_CHILD_GETTERS(switchMac, 11); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return version(); } - else if constexpr (__id == 2) { return ports(); } - else if constexpr (__id == 3) { return vlans(); } - else if constexpr (__id == 4) { return vlanPorts(); } - else if constexpr (__id == 5) { return defaultVlan(); } - else if constexpr (__id == 6) { return interfaces(); } - else if constexpr (__id == 7) { return arpTimeoutSeconds(); } - else if constexpr (__id == 8) { return arpRefreshSeconds(); } - else if constexpr (__id == 9) { return arpAgerInterval(); } - else if constexpr (__id == 10) { return proactiveArp(); } - else if constexpr (__id == 11) { return cpuMAC(); } - else if constexpr (__id == 12) { return staticRoutesWithNhops(); } - else if constexpr (__id == 13) { return staticRoutesToNull(); } - else if constexpr (__id == 14) { return staticRoutesToCPU(); } - else if constexpr (__id == 15) { return acls(); } - else if constexpr (__id == 16) { return maxNeighborProbes(); } - else if constexpr (__id == 17) { return staleEntryInterval(); } - else if constexpr (__id == 18) { return aggregatePorts(); } - else if constexpr (__id == 19) { return clientIdToAdminDistance(); } - else if constexpr (__id == 20) { return dhcpRelaySrcOverrideV4(); } - else if constexpr (__id == 21) { return dhcpRelaySrcOverrideV6(); } - else if constexpr (__id == 22) { return dhcpReplySrcOverrideV4(); } - else if constexpr (__id == 23) { return dhcpReplySrcOverrideV6(); } - else if constexpr (__id == 24) { return globalEgressTrafficPolicy_DEPRECATED(); } - else if constexpr (__id == 25) { return config_version(); } - else if constexpr (__id == 26) { return sFlowCollectors(); } - else if constexpr (__id == 27) { return lacp(); } - else if constexpr (__id == 28) { return cpuQueues(); } - else if constexpr (__id == 29) { return cpuTrafficPolicy(); } - else if constexpr (__id == 30) { return loadBalancers(); } - else if constexpr (__id == 31) { return dataPlaneTrafficPolicy(); } - else if constexpr (__id == 32) { return mirrors(); } - else if constexpr (__id == 33) { return trafficCounters(); } - else if constexpr (__id == 34) { return qosPolicies(); } - else if constexpr (__id == 35) { return defaultPortQueues(); } - else if constexpr (__id == 36) { return staticMplsRoutesWithNhops(); } - else if constexpr (__id == 37) { return staticMplsRoutesToNull(); } - else if constexpr (__id == 38) { return staticMplsRoutesToCPU(); } - else if constexpr (__id == 39) { return staticIp2MplsRoutes(); } - else if constexpr (__id == 40) { return portQueueConfigs(); } - else if constexpr (__id == 41) { return switchSettings(); } - else if constexpr (__id == 42) { return qcmConfig(); } - else if constexpr (__id == 43) { return portPgConfigs(); } - else if constexpr (__id == 44) { return bufferPoolConfigs(); } - else if constexpr (__id == 45) { return aclTableGroup(); } - else if constexpr (__id == 46) { return sdkVersion(); } - else if constexpr (__id == 47) { return ipInIpTunnels(); } - else if constexpr (__id == 48) { return dsfNodes(); } - else if constexpr (__id == 49) { return udfConfig(); } - else if constexpr (__id == 50) { return flowletSwitchingConfig(); } - else if constexpr (__id == 51) { return defaultVoqConfig(); } - else if constexpr (__id == 52) { return portFlowletConfigs(); } - else if constexpr (__id == 53) { return icmpV4UnavailableSrcAddress(); } - else if constexpr (__id == 54) { return hostname(); } + if constexpr (__id == 1) { return name(); } + else if constexpr (__id == 2) { return mirrorPortId(); } + else if constexpr (__id == 3) { return localSrcIp(); } + else if constexpr (__id == 4) { return localSrcPort(); } + else if constexpr (__id == 5) { return collectorIp(); } + else if constexpr (__id == 6) { return collectorPort(); } + else if constexpr (__id == 7) { return mtu(); } + else if constexpr (__id == 8) { return truncateSize(); } + else if constexpr (__id == 9) { return dscp(); } + else if constexpr (__id == 10) { return agingIntervalUsecs(); } + else if constexpr (__id == 11) { return switchMac(); } } template @@ -5067,19 +4915,19 @@ std::pair -class ChildThriftPath<::facebook::fboss::state::RedirectToNextHopAction, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::state::NeighborEntryFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::state::RedirectToNextHopAction, + ::facebook::fboss::state::NeighborEntryFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::state::RedirectToNextHopAction>, + ::apache::thrift::type::struct_t<::facebook::fboss::state::NeighborEntryFields>, Parent> { public: using Self = Path< - ::facebook::fboss::state::RedirectToNextHopAction, + ::facebook::fboss::state::NeighborEntryFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::state::RedirectToNextHopAction>, + ::apache::thrift::type::struct_t<::facebook::fboss::state::NeighborEntryFields>, Parent>; using strings = ::facebook::fboss::state::switch_state_tags::strings; template @@ -5090,25 +4938,75 @@ class ChildThriftPath<::facebook::fboss::state::RedirectToNextHopAction, ::faceb ChildTag, Self >; - using Children = fatal::tuple>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; - using ChildrenById = fatal::tuple< std::pair, ChildThriftPath<::facebook::fboss::cfg::RedirectToNextHopAction, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::vector<::facebook::fboss::NextHopThrift>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + using Children = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>, +std::pair>>, +std::pair>>, +std::pair>, +std::pair>, +std::pair>>, +std::pair>, +std::pair>, +std::pair>>; + using ChildrenById = fatal::tuple< std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, ChildThriftPath<::facebook::fboss::cfg::PortDescriptor, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::facebook::fboss::state::NeighborState, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::state::NeighborState>>>, + std::pair, Child<::facebook::fboss::cfg::AclLookupClass, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::AclLookupClass>>>, + std::pair, Child<::std::int64_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i64_t>>, + std::pair, Child>, + std::pair, Child<::facebook::fboss::state::NeighborEntryType, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::state::NeighborEntryType>>>, + std::pair, Child<::std::int64_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i64_t>>, + std::pair, Child>, + std::pair, Child>>; template - using NameToId = fatal::tuple>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(action, 1); - STRUCT_CHILD_GETTERS(resolvedNexthops, 2); + STRUCT_CHILD_GETTERS(ipaddress, 1); + STRUCT_CHILD_GETTERS(mac, 2); + STRUCT_CHILD_GETTERS(portId, 3); + STRUCT_CHILD_GETTERS(interfaceId, 4); + STRUCT_CHILD_GETTERS(state, 5); + STRUCT_CHILD_GETTERS(classID, 6); + STRUCT_CHILD_GETTERS(encapIndex, 7); + STRUCT_CHILD_GETTERS(isLocal, 8); + STRUCT_CHILD_GETTERS(type, 9); + STRUCT_CHILD_GETTERS(resolvedSince, 10); + STRUCT_CHILD_GETTERS(noHostRoute, 11); + STRUCT_CHILD_GETTERS(disableTTLDecrement, 12); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return action(); } - else if constexpr (__id == 2) { return resolvedNexthops(); } + if constexpr (__id == 1) { return ipaddress(); } + else if constexpr (__id == 2) { return mac(); } + else if constexpr (__id == 3) { return portId(); } + else if constexpr (__id == 4) { return interfaceId(); } + else if constexpr (__id == 5) { return state(); } + else if constexpr (__id == 6) { return classID(); } + else if constexpr (__id == 7) { return encapIndex(); } + else if constexpr (__id == 8) { return isLocal(); } + else if constexpr (__id == 9) { return type(); } + else if constexpr (__id == 10) { return resolvedSince(); } + else if constexpr (__id == 11) { return noHostRoute(); } + else if constexpr (__id == 12) { return disableTTLDecrement(); } } template @@ -5119,21 +5017,21 @@ std::pair -class ChildThriftPath<::facebook::fboss::state::SflowCollectorFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::PortQueueFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::state::SflowCollectorFields, + ::facebook::fboss::PortQueueFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::state::SflowCollectorFields>, + ::apache::thrift::type::struct_t<::facebook::fboss::PortQueueFields>, Parent> { public: using Self = Path< - ::facebook::fboss::state::SflowCollectorFields, + ::facebook::fboss::PortQueueFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::state::SflowCollectorFields>, + ::apache::thrift::type::struct_t<::facebook::fboss::PortQueueFields>, Parent>; - using strings = ::facebook::fboss::state::switch_state_tags::strings; + using strings = ::facebook::fboss::ctrl_tags::strings; template using Child = Path< ChildType, @@ -5142,25 +5040,105 @@ class ChildThriftPath<::facebook::fboss::state::SflowCollectorFields, ::facebook ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>>; - using ChildrenById = fatal::tuple< std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, ChildThriftPath<::facebook::fboss::state::SocketAddress, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + using Children = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair>, +std::pair>, +std::pair>>; + using ChildrenById = fatal::tuple< std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::ActiveQueueManagement>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, ChildThriftPath<::facebook::fboss::cfg::PortQueueRate, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, + std::pair, ChildThriftPath<::std::vector<::std::int16_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, ChildThriftPath<::facebook::fboss::BufferPoolFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; template using NameToId = fatal::tuple>, -std::pair>>::template type_of; +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; STRUCT_CHILD_GETTERS(id, 1); - STRUCT_CHILD_GETTERS(address, 2); + STRUCT_CHILD_GETTERS(weight, 2); + STRUCT_CHILD_GETTERS(reserved, 3); + STRUCT_CHILD_GETTERS(scalingFactor, 4); + STRUCT_CHILD_GETTERS(scheduling, 5); + STRUCT_CHILD_GETTERS(streamType, 6); + STRUCT_CHILD_GETTERS(aqms, 7); + STRUCT_CHILD_GETTERS(name, 8); + STRUCT_CHILD_GETTERS(packetsPerSec_DEPRECATED, 10); + STRUCT_CHILD_GETTERS(sharedBytes, 11); + STRUCT_CHILD_GETTERS(portQueueRate, 12); + STRUCT_CHILD_GETTERS(bandwidthBurstMinKbits, 13); + STRUCT_CHILD_GETTERS(bandwidthBurstMaxKbits, 14); + STRUCT_CHILD_GETTERS(trafficClass, 15); + STRUCT_CHILD_GETTERS(pfcPriorities, 16); + STRUCT_CHILD_GETTERS(maxDynamicSharedBytes, 17); + STRUCT_CHILD_GETTERS(bufferPoolName, 18); + STRUCT_CHILD_GETTERS(bufferPoolConfig, 19); template auto operator()(const std::integral_constant&) { if constexpr (__id == 1) { return id(); } - else if constexpr (__id == 2) { return address(); } + else if constexpr (__id == 2) { return weight(); } + else if constexpr (__id == 3) { return reserved(); } + else if constexpr (__id == 4) { return scalingFactor(); } + else if constexpr (__id == 5) { return scheduling(); } + else if constexpr (__id == 6) { return streamType(); } + else if constexpr (__id == 7) { return aqms(); } + else if constexpr (__id == 8) { return name(); } + else if constexpr (__id == 10) { return packetsPerSec_DEPRECATED(); } + else if constexpr (__id == 11) { return sharedBytes(); } + else if constexpr (__id == 12) { return portQueueRate(); } + else if constexpr (__id == 13) { return bandwidthBurstMinKbits(); } + else if constexpr (__id == 14) { return bandwidthBurstMaxKbits(); } + else if constexpr (__id == 15) { return trafficClass(); } + else if constexpr (__id == 16) { return pfcPriorities(); } + else if constexpr (__id == 17) { return maxDynamicSharedBytes(); } + else if constexpr (__id == 18) { return bufferPoolName(); } + else if constexpr (__id == 19) { return bufferPoolConfig(); } } template @@ -5170,21 +5148,21 @@ std::pair -class ChildThriftPath<::std::vector<::facebook::fboss::cfg::Vlan>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::vector<::facebook::fboss::cfg::ExpQosMap>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::vector<::facebook::fboss::cfg::Vlan>, + ::std::vector<::facebook::fboss::cfg::ExpQosMap>, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::Vlan>>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::ExpQosMap>>, Parent> { public: using Self = Path< - ::std::vector<::facebook::fboss::cfg::Vlan>, + ::std::vector<::facebook::fboss::cfg::ExpQosMap>, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::Vlan>>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::ExpQosMap>>, Parent>; - using Child = ChildThriftPath<::facebook::fboss::cfg::Vlan, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Child = ChildThriftPath<::facebook::fboss::cfg::ExpQosMap, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; using Self::Self; CONTAINER_CHILD_GETTERS(::std::int32_t); @@ -5192,19 +5170,19 @@ class ChildThriftPath<::std::vector<::facebook::fboss::cfg::Vlan>, ::facebook::f template -class ChildThriftPath<::facebook::fboss::cfg::PktLenRange, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::cfg::ActiveQueueManagement, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::cfg::PktLenRange, + ::facebook::fboss::cfg::ActiveQueueManagement, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::PktLenRange>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::ActiveQueueManagement>, Parent> { public: using Self = Path< - ::facebook::fboss::cfg::PktLenRange, + ::facebook::fboss::cfg::ActiveQueueManagement, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::PktLenRange>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::ActiveQueueManagement>, Parent>; using strings = ::facebook::fboss::cfg::switch_config_tags::strings; template @@ -5215,30 +5193,25 @@ class ChildThriftPath<::facebook::fboss::cfg::PktLenRange, ::facebook::fboss::fs ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>, -std::pair>>; - using ChildrenById = fatal::tuple< std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, - std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, - std::pair, Child>>; + using Children = fatal::tuple>, +std::pair>>>; + using ChildrenById = fatal::tuple< std::pair, ChildThriftPath<::facebook::fboss::cfg::QueueCongestionDetection, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, Child<::facebook::fboss::cfg::QueueCongestionBehavior, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::QueueCongestionBehavior>>>>; template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(min, 1); - STRUCT_CHILD_GETTERS(max, 2); - STRUCT_CHILD_GETTERS(invert, 3); + STRUCT_CHILD_GETTERS(detection, 1); + STRUCT_CHILD_GETTERS(behavior, 2); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return min(); } - else if constexpr (__id == 2) { return max(); } - else if constexpr (__id == 3) { return invert(); } + if constexpr (__id == 1) { return detection(); } + else if constexpr (__id == 2) { return behavior(); } } template @@ -5249,21 +5222,21 @@ std::pair template -class ChildThriftPath<::facebook::fboss::state::AggregatePortFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::cfg::AsicConfigEntry, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::state::AggregatePortFields, + ::facebook::fboss::cfg::AsicConfigEntry, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::state::AggregatePortFields>, + ::apache::thrift::type_class::variant, + ::apache::thrift::type::union_t<::facebook::fboss::cfg::AsicConfigEntry>, Parent> { public: using Self = Path< - ::facebook::fboss::state::AggregatePortFields, + ::facebook::fboss::cfg::AsicConfigEntry, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::state::AggregatePortFields>, + ::apache::thrift::type_class::variant, + ::apache::thrift::type::union_t<::facebook::fboss::cfg::AsicConfigEntry>, Parent>; - using strings = ::facebook::fboss::state::switch_state_tags::strings; + using strings = ::facebook::fboss::cfg::asic_config_v2_tags::strings; template using Child = Path< ChildType, @@ -5272,65 +5245,30 @@ class ChildThriftPath<::facebook::fboss::state::AggregatePortFields, ::facebook: ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; - using ChildrenById = fatal::tuple< std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, + using Children = fatal::tuple, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair>, +std::pair>>; + using ChildrenById = fatal::tuple< std::pair, ChildThriftPath<::std::map<::std::string, ::std::string>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int64_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i64_t>>, - std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, - std::pair, ChildThriftPath<::std::vector<::facebook::fboss::state::Subport>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::map<::std::int32_t, bool>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::map<::std::int32_t, ::facebook::fboss::state::ParticipantInfo>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::vector<::std::int32_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>>; template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(id, 1); - STRUCT_CHILD_GETTERS(name, 2); - STRUCT_CHILD_GETTERS(description, 3); - STRUCT_CHILD_GETTERS(systemPriority, 4); - STRUCT_CHILD_GETTERS(systemID, 5); - STRUCT_CHILD_GETTERS(minimumLinkCount, 6); - STRUCT_CHILD_GETTERS(ports, 7); - STRUCT_CHILD_GETTERS(portToFwdState, 8); - STRUCT_CHILD_GETTERS(portToPartnerState, 9); - STRUCT_CHILD_GETTERS(interfaceIDs, 10); + STRUCT_CHILD_GETTERS(config, 1); + STRUCT_CHILD_GETTERS(jsonConfig, 2); + STRUCT_CHILD_GETTERS(yamlConfig, 3); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return id(); } - else if constexpr (__id == 2) { return name(); } - else if constexpr (__id == 3) { return description(); } - else if constexpr (__id == 4) { return systemPriority(); } - else if constexpr (__id == 5) { return systemID(); } - else if constexpr (__id == 6) { return minimumLinkCount(); } - else if constexpr (__id == 7) { return ports(); } - else if constexpr (__id == 8) { return portToFwdState(); } - else if constexpr (__id == 9) { return portToPartnerState(); } - else if constexpr (__id == 10) { return interfaceIDs(); } + if constexpr (__id == 1) { return config(); } + else if constexpr (__id == 2) { return jsonConfig(); } + else if constexpr (__id == 3) { return yamlConfig(); } } template @@ -5339,21 +5277,42 @@ std::pair +class ChildThriftPath<::std::vector<::facebook::fboss::cfg::AclLookupClass>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : + public Path< + ::std::vector<::facebook::fboss::cfg::AclLookupClass>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::list<::apache::thrift::type_class::enumeration>, + ::apache::thrift::type::list<::apache::thrift::type::enum_t<::facebook::fboss::cfg::AclLookupClass>>, + Parent> { + public: + using Self = Path< + ::std::vector<::facebook::fboss::cfg::AclLookupClass>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::list<::apache::thrift::type_class::enumeration>, + ::apache::thrift::type::list<::apache::thrift::type::enum_t<::facebook::fboss::cfg::AclLookupClass>>, + Parent>; + using Child = Path<::facebook::fboss::cfg::AclLookupClass, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::AclLookupClass>, Self>; + using Self::Self; + + CONTAINER_CHILD_GETTERS(::std::int32_t); +}; + template -class ChildThriftPath<::facebook::fboss::cfg::StaticRouteNoNextHops, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::cfg::UserDefinedTrapAction, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::cfg::StaticRouteNoNextHops, + ::facebook::fboss::cfg::UserDefinedTrapAction, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::StaticRouteNoNextHops>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::UserDefinedTrapAction>, Parent> { public: using Self = Path< - ::facebook::fboss::cfg::StaticRouteNoNextHops, + ::facebook::fboss::cfg::UserDefinedTrapAction, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::StaticRouteNoNextHops>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::UserDefinedTrapAction>, Parent>; using strings = ::facebook::fboss::cfg::switch_config_tags::strings; template @@ -5364,25 +5323,20 @@ class ChildThriftPath<::facebook::fboss::cfg::StaticRouteNoNextHops, ::facebook: ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>>; - using ChildrenById = fatal::tuple< std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>>; + using Children = fatal::tuple>>; + using ChildrenById = fatal::tuple< std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>>; template - using NameToId = fatal::tuple>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(routerID, 1); - STRUCT_CHILD_GETTERS(prefix, 2); + STRUCT_CHILD_GETTERS(queueId, 1); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return routerID(); } - else if constexpr (__id == 2) { return prefix(); } + if constexpr (__id == 1) { return queueId(); } } template @@ -5391,21 +5345,42 @@ std::pair } }; +template +class ChildThriftPath<::std::set<::facebook::fboss::cfg::IPv6Field>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : + public Path< + ::std::set<::facebook::fboss::cfg::IPv6Field>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::set<::apache::thrift::type_class::enumeration>, + ::apache::thrift::type::set<::apache::thrift::type::enum_t<::facebook::fboss::cfg::IPv6Field>>, + Parent> { + public: + using Self = Path< + ::std::set<::facebook::fboss::cfg::IPv6Field>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::set<::apache::thrift::type_class::enumeration>, + ::apache::thrift::type::set<::apache::thrift::type::enum_t<::facebook::fboss::cfg::IPv6Field>>, + Parent>; + using Child = Path<::facebook::fboss::cfg::IPv6Field, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::IPv6Field>, Self>; + using Self::Self; + + CONTAINER_CHILD_GETTERS(::facebook::fboss::cfg::IPv6Field); +}; + template -class ChildThriftPath<::facebook::fboss::cfg::PortPgConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::cfg::UdfConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::cfg::PortPgConfig, + ::facebook::fboss::cfg::UdfConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::PortPgConfig>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::UdfConfig>, Parent> { public: using Self = Path< - ::facebook::fboss::cfg::PortPgConfig, + ::facebook::fboss::cfg::UdfConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::PortPgConfig>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::UdfConfig>, Parent>; using strings = ::facebook::fboss::cfg::switch_config_tags::strings; template @@ -5416,184 +5391,25 @@ class ChildThriftPath<::facebook::fboss::cfg::PortPgConfig, ::facebook::fboss::f ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>, -std::pair>>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>>; - using ChildrenById = fatal::tuple< std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, Child<::facebook::fboss::cfg::MMUScalingFactor, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::MMUScalingFactor>>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, Child<::std::int64_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i64_t>>, - std::pair, Child<::std::int64_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i64_t>>, - std::pair, Child<::std::int64_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i64_t>>, - std::pair, Child<::std::int64_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i64_t>>, - std::pair, Child<::std::int64_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i64_t>>>; + using Children = fatal::tuple, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + using ChildrenById = fatal::tuple< std::pair, ChildThriftPath<::std::map<::std::string, ::facebook::fboss::cfg::UdfGroup>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::map<::std::string, ::facebook::fboss::cfg::UdfPacketMatcher>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(id, 1); - STRUCT_CHILD_GETTERS(name, 2); - STRUCT_CHILD_GETTERS(scalingFactor, 3); - STRUCT_CHILD_GETTERS(minLimitBytes, 4); - STRUCT_CHILD_GETTERS(headroomLimitBytes, 5); - STRUCT_CHILD_GETTERS(resumeOffsetBytes, 6); - STRUCT_CHILD_GETTERS(bufferPoolName, 7); - STRUCT_CHILD_GETTERS(maxSharedXoffThresholdBytes, 8); - STRUCT_CHILD_GETTERS(minSharedXoffThresholdBytes, 9); - STRUCT_CHILD_GETTERS(maxSramXoffThresholdBytes, 10); - STRUCT_CHILD_GETTERS(minSramXoffThresholdBytes, 11); - STRUCT_CHILD_GETTERS(sramResumeOffsetBytes, 12); + STRUCT_CHILD_GETTERS(udfGroups, 1); + STRUCT_CHILD_GETTERS(udfPacketMatcher, 2); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return id(); } - else if constexpr (__id == 2) { return name(); } - else if constexpr (__id == 3) { return scalingFactor(); } - else if constexpr (__id == 4) { return minLimitBytes(); } - else if constexpr (__id == 5) { return headroomLimitBytes(); } - else if constexpr (__id == 6) { return resumeOffsetBytes(); } - else if constexpr (__id == 7) { return bufferPoolName(); } - else if constexpr (__id == 8) { return maxSharedXoffThresholdBytes(); } - else if constexpr (__id == 9) { return minSharedXoffThresholdBytes(); } - else if constexpr (__id == 10) { return maxSramXoffThresholdBytes(); } - else if constexpr (__id == 11) { return minSramXoffThresholdBytes(); } - else if constexpr (__id == 12) { return sramResumeOffsetBytes(); } - } - - template - auto operator()(const fatal::sequence&) { - return operator()(NameToId>()); - } -}; - -template -class ChildThriftPath<::std::map<::std::int16_t, ::std::map<::facebook::fboss::cfg::PlatformAttributes, ::std::string>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : - public Path< - ::std::map<::std::int16_t, ::std::map<::facebook::fboss::cfg::PlatformAttributes, ::std::string>>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::map<::apache::thrift::type_class::enumeration, ::apache::thrift::type_class::string>>, - ::apache::thrift::type::map<::apache::thrift::type::i16_t, ::apache::thrift::type::map<::apache::thrift::type::enum_t<::facebook::fboss::cfg::PlatformAttributes>, ::apache::thrift::type::string_t>>, - Parent> { - public: - using Self = Path< - ::std::map<::std::int16_t, ::std::map<::facebook::fboss::cfg::PlatformAttributes, ::std::string>>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::map<::apache::thrift::type_class::enumeration, ::apache::thrift::type_class::string>>, - ::apache::thrift::type::map<::apache::thrift::type::i16_t, ::apache::thrift::type::map<::apache::thrift::type::enum_t<::facebook::fboss::cfg::PlatformAttributes>, ::apache::thrift::type::string_t>>, - Parent>; - using Child = ChildThriftPath<::std::map<::facebook::fboss::cfg::PlatformAttributes, ::std::string>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; - using Self::Self; - - CONTAINER_CHILD_GETTERS(::std::int16_t); -}; - -template -class ChildThriftPath<::std::map<::std::string, ::facebook::fboss::state::NeighborResponseEntryFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : - public Path< - ::std::map<::std::string, ::facebook::fboss::state::NeighborResponseEntryFields>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>, - ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::NeighborResponseEntryFields>>, - Parent> { - public: - using Self = Path< - ::std::map<::std::string, ::facebook::fboss::state::NeighborResponseEntryFields>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>, - ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::NeighborResponseEntryFields>>, - Parent>; - using Child = ChildThriftPath<::facebook::fboss::state::NeighborResponseEntryFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; - using Self::Self; - - CONTAINER_CHILD_GETTERS(::std::string); -}; - - -template -class ChildThriftPath<::facebook::fboss::cfg::PlatformConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : - public Path< - ::facebook::fboss::cfg::PlatformConfig, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::PlatformConfig>, - Parent> { - public: - using Self = Path< - ::facebook::fboss::cfg::PlatformConfig, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::PlatformConfig>, - Parent>; - using strings = ::facebook::fboss::cfg::platform_config_tags::strings; - template - using Child = Path< - ChildType, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ChildTC, - ChildTag, - Self - >; - using Children = fatal::tuple>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; - using ChildrenById = fatal::tuple< std::pair, ChildThriftPath<::facebook::fboss::cfg::ChipConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::map<::facebook::fboss::cfg::PlatformAttributes, ::std::string>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::map<::std::int16_t, ::std::int64_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::map<::std::int16_t, ::facebook::fboss::cfg::ChipConfig>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::map<::std::int16_t, ::std::map<::facebook::fboss::cfg::PlatformAttributes, ::std::string>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; - template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>, -std::pair>>::template type_of; - - template - using TypeFor = typename Children::template type_of; - using Self::Self; - - STRUCT_CHILD_GETTERS(chip, 1); - STRUCT_CHILD_GETTERS(platformSettings, 3); - STRUCT_CHILD_GETTERS(switchIndexToSwitchId, 4); - STRUCT_CHILD_GETTERS(switchIndexToChipConfigs, 5); - STRUCT_CHILD_GETTERS(switchIndexToPlatformSettings, 6); - - template - auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return chip(); } - else if constexpr (__id == 3) { return platformSettings(); } - else if constexpr (__id == 4) { return switchIndexToSwitchId(); } - else if constexpr (__id == 5) { return switchIndexToChipConfigs(); } - else if constexpr (__id == 6) { return switchIndexToPlatformSettings(); } + if constexpr (__id == 1) { return udfGroups(); } + else if constexpr (__id == 2) { return udfPacketMatcher(); } } template @@ -5604,19 +5420,19 @@ std::pair -class ChildThriftPath<::facebook::fboss::phy::RxSettings, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::phy::TxSettings, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::phy::RxSettings, + ::facebook::fboss::phy::TxSettings, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::phy::RxSettings>, + ::apache::thrift::type::struct_t<::facebook::fboss::phy::TxSettings>, Parent> { public: using Self = Path< - ::facebook::fboss::phy::RxSettings, + ::facebook::fboss::phy::TxSettings, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::phy::RxSettings>, + ::apache::thrift::type::struct_t<::facebook::fboss::phy::TxSettings>, Parent>; using strings = ::facebook::fboss::phy::phy_tags::strings; template @@ -5627,54 +5443,45 @@ class ChildThriftPath<::facebook::fboss::phy::RxSettings, ::facebook::fboss::fsd ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, + using Children = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, std::pair>, std::pair>, -std::pair>, std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>>; +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>>; using ChildrenById = fatal::tuple< std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, + std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, + std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, + std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, @@ -5697,145 +5504,109 @@ std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>>; - template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>>::template type_of; - + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>>; template - using TypeFor = typename Children::template type_of; - using Self::Self; - - STRUCT_CHILD_GETTERS(ctlCode, 1); - STRUCT_CHILD_GETTERS(dspMode, 2); - STRUCT_CHILD_GETTERS(afeTrim, 3); - STRUCT_CHILD_GETTERS(acCouplingBypass, 4); - STRUCT_CHILD_GETTERS(channelReach, 5); - STRUCT_CHILD_GETTERS(diffEncoderEn, 6); - STRUCT_CHILD_GETTERS(fbfCoefInitVal, 7); - STRUCT_CHILD_GETTERS(fbfLmsEnable, 8); - STRUCT_CHILD_GETTERS(instgScanOptimize, 9); - STRUCT_CHILD_GETTERS(instgTableEndRow, 10); - STRUCT_CHILD_GETTERS(instgTableStartRow, 11); - STRUCT_CHILD_GETTERS(parityEncoderEn, 12); - STRUCT_CHILD_GETTERS(thpEn, 13); - STRUCT_CHILD_GETTERS(dcTermEn, 14); - STRUCT_CHILD_GETTERS(setPrecode, 15); - STRUCT_CHILD_GETTERS(instgBoost1Start, 16); - STRUCT_CHILD_GETTERS(instgBoost1Step, 17); - STRUCT_CHILD_GETTERS(instgBoost1Stop, 18); - STRUCT_CHILD_GETTERS(instgBoost2OrHrStart, 19); - STRUCT_CHILD_GETTERS(instgBoost2OrHrStep, 20); - STRUCT_CHILD_GETTERS(instgBoost2OrHrStop, 21); - STRUCT_CHILD_GETTERS(instgC1Start1p7, 22); - STRUCT_CHILD_GETTERS(instgC1Step1p7, 23); - STRUCT_CHILD_GETTERS(instgC1Stop1p7, 24); - STRUCT_CHILD_GETTERS(instgDfeStart1p7, 25); - STRUCT_CHILD_GETTERS(instgDfeStep1p7, 26); - STRUCT_CHILD_GETTERS(instgDfeStop1p7, 27); - STRUCT_CHILD_GETTERS(enableScanSelection, 28); - STRUCT_CHILD_GETTERS(instgScanUseSrSettings, 29); - STRUCT_CHILD_GETTERS(cdrCfgOvEn, 30); - STRUCT_CHILD_GETTERS(cdrTdet1stOrdStepOvVal, 31); - STRUCT_CHILD_GETTERS(cdrTdet2ndOrdStepOvVal, 32); - STRUCT_CHILD_GETTERS(cdrTdetFineStepOvVal, 33); - STRUCT_CHILD_GETTERS(ldoBypass, 34); - STRUCT_CHILD_GETTERS(ffeLengthBitmap, 35); - STRUCT_CHILD_GETTERS(instgEnableScan, 36); - STRUCT_CHILD_GETTERS(dcwEn, 37); - STRUCT_CHILD_GETTERS(dcwStepCoarseOvVal, 38); - STRUCT_CHILD_GETTERS(dcwStepFineOvVal, 39); - STRUCT_CHILD_GETTERS(dcwOvEn, 40); + using NameToId = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>>::template type_of; + + template + using TypeFor = typename Children::template type_of; + using Self::Self; + + STRUCT_CHILD_GETTERS(pre, 1); + STRUCT_CHILD_GETTERS(pre2, 2); + STRUCT_CHILD_GETTERS(main, 3); + STRUCT_CHILD_GETTERS(post, 4); + STRUCT_CHILD_GETTERS(post2, 5); + STRUCT_CHILD_GETTERS(post3, 6); + STRUCT_CHILD_GETTERS(lutMode, 7); + STRUCT_CHILD_GETTERS(driveCurrent, 8); + STRUCT_CHILD_GETTERS(diffEncoderEn, 9); + STRUCT_CHILD_GETTERS(digGain, 10); + STRUCT_CHILD_GETTERS(ffeCoeff0, 11); + STRUCT_CHILD_GETTERS(ffeCoeff1, 12); + STRUCT_CHILD_GETTERS(ffeCoeff2, 13); + STRUCT_CHILD_GETTERS(ffeCoeff3, 14); + STRUCT_CHILD_GETTERS(ffeCoeff4, 15); + STRUCT_CHILD_GETTERS(parityEncoderEn, 16); + STRUCT_CHILD_GETTERS(thpEn, 17); + STRUCT_CHILD_GETTERS(setPrecode, 18); + STRUCT_CHILD_GETTERS(pre3, 19); + STRUCT_CHILD_GETTERS(driverSwing, 20); + STRUCT_CHILD_GETTERS(innerEyeNeg, 21); + STRUCT_CHILD_GETTERS(innerEyePos, 22); + STRUCT_CHILD_GETTERS(ffeCoeff5, 23); + STRUCT_CHILD_GETTERS(ldoBypass, 24); + STRUCT_CHILD_GETTERS(firPre1, 25); + STRUCT_CHILD_GETTERS(firPre2, 26); + STRUCT_CHILD_GETTERS(firPre3, 27); + STRUCT_CHILD_GETTERS(firMain, 28); + STRUCT_CHILD_GETTERS(firPost1, 29); + STRUCT_CHILD_GETTERS(firPost2, 30); + STRUCT_CHILD_GETTERS(firPost3, 31); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return ctlCode(); } - else if constexpr (__id == 2) { return dspMode(); } - else if constexpr (__id == 3) { return afeTrim(); } - else if constexpr (__id == 4) { return acCouplingBypass(); } - else if constexpr (__id == 5) { return channelReach(); } - else if constexpr (__id == 6) { return diffEncoderEn(); } - else if constexpr (__id == 7) { return fbfCoefInitVal(); } - else if constexpr (__id == 8) { return fbfLmsEnable(); } - else if constexpr (__id == 9) { return instgScanOptimize(); } - else if constexpr (__id == 10) { return instgTableEndRow(); } - else if constexpr (__id == 11) { return instgTableStartRow(); } - else if constexpr (__id == 12) { return parityEncoderEn(); } - else if constexpr (__id == 13) { return thpEn(); } - else if constexpr (__id == 14) { return dcTermEn(); } - else if constexpr (__id == 15) { return setPrecode(); } - else if constexpr (__id == 16) { return instgBoost1Start(); } - else if constexpr (__id == 17) { return instgBoost1Step(); } - else if constexpr (__id == 18) { return instgBoost1Stop(); } - else if constexpr (__id == 19) { return instgBoost2OrHrStart(); } - else if constexpr (__id == 20) { return instgBoost2OrHrStep(); } - else if constexpr (__id == 21) { return instgBoost2OrHrStop(); } - else if constexpr (__id == 22) { return instgC1Start1p7(); } - else if constexpr (__id == 23) { return instgC1Step1p7(); } - else if constexpr (__id == 24) { return instgC1Stop1p7(); } - else if constexpr (__id == 25) { return instgDfeStart1p7(); } - else if constexpr (__id == 26) { return instgDfeStep1p7(); } - else if constexpr (__id == 27) { return instgDfeStop1p7(); } - else if constexpr (__id == 28) { return enableScanSelection(); } - else if constexpr (__id == 29) { return instgScanUseSrSettings(); } - else if constexpr (__id == 30) { return cdrCfgOvEn(); } - else if constexpr (__id == 31) { return cdrTdet1stOrdStepOvVal(); } - else if constexpr (__id == 32) { return cdrTdet2ndOrdStepOvVal(); } - else if constexpr (__id == 33) { return cdrTdetFineStepOvVal(); } - else if constexpr (__id == 34) { return ldoBypass(); } - else if constexpr (__id == 35) { return ffeLengthBitmap(); } - else if constexpr (__id == 36) { return instgEnableScan(); } - else if constexpr (__id == 37) { return dcwEn(); } - else if constexpr (__id == 38) { return dcwStepCoarseOvVal(); } - else if constexpr (__id == 39) { return dcwStepFineOvVal(); } - else if constexpr (__id == 40) { return dcwOvEn(); } + if constexpr (__id == 1) { return pre(); } + else if constexpr (__id == 2) { return pre2(); } + else if constexpr (__id == 3) { return main(); } + else if constexpr (__id == 4) { return post(); } + else if constexpr (__id == 5) { return post2(); } + else if constexpr (__id == 6) { return post3(); } + else if constexpr (__id == 7) { return lutMode(); } + else if constexpr (__id == 8) { return driveCurrent(); } + else if constexpr (__id == 9) { return diffEncoderEn(); } + else if constexpr (__id == 10) { return digGain(); } + else if constexpr (__id == 11) { return ffeCoeff0(); } + else if constexpr (__id == 12) { return ffeCoeff1(); } + else if constexpr (__id == 13) { return ffeCoeff2(); } + else if constexpr (__id == 14) { return ffeCoeff3(); } + else if constexpr (__id == 15) { return ffeCoeff4(); } + else if constexpr (__id == 16) { return parityEncoderEn(); } + else if constexpr (__id == 17) { return thpEn(); } + else if constexpr (__id == 18) { return setPrecode(); } + else if constexpr (__id == 19) { return pre3(); } + else if constexpr (__id == 20) { return driverSwing(); } + else if constexpr (__id == 21) { return innerEyeNeg(); } + else if constexpr (__id == 22) { return innerEyePos(); } + else if constexpr (__id == 23) { return ffeCoeff5(); } + else if constexpr (__id == 24) { return ldoBypass(); } + else if constexpr (__id == 25) { return firPre1(); } + else if constexpr (__id == 26) { return firPre2(); } + else if constexpr (__id == 27) { return firPre3(); } + else if constexpr (__id == 28) { return firMain(); } + else if constexpr (__id == 29) { return firPost1(); } + else if constexpr (__id == 30) { return firPost2(); } + else if constexpr (__id == 31) { return firPost3(); } } template @@ -5844,42 +5615,21 @@ std::pair -class ChildThriftPath<::std::vector<::facebook::fboss::cfg::PortPgConfig>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : - public Path< - ::std::vector<::facebook::fboss::cfg::PortPgConfig>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::PortPgConfig>>, - Parent> { - public: - using Self = Path< - ::std::vector<::facebook::fboss::cfg::PortPgConfig>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::PortPgConfig>>, - Parent>; - using Child = ChildThriftPath<::facebook::fboss::cfg::PortPgConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; - using Self::Self; - - CONTAINER_CHILD_GETTERS(::std::int32_t); -}; - template -class ChildThriftPath<::facebook::fboss::cfg::Fields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::cfg::SetTcAction, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::cfg::Fields, + ::facebook::fboss::cfg::SetTcAction, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::Fields>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::SetTcAction>, Parent> { public: using Self = Path< - ::facebook::fboss::cfg::Fields, + ::facebook::fboss::cfg::SetTcAction, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::Fields>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::SetTcAction>, Parent>; using strings = ::facebook::fboss::cfg::switch_config_tags::strings; template @@ -5890,40 +5640,20 @@ class ChildThriftPath<::facebook::fboss::cfg::Fields, ::facebook::fboss::fsdb::F ChildTag, Self >; - using Children = fatal::tuple, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; - using ChildrenById = fatal::tuple< std::pair, ChildThriftPath<::std::set<::facebook::fboss::cfg::IPv4Field>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::set<::facebook::fboss::cfg::IPv6Field>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::set<::facebook::fboss::cfg::TransportField>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::set<::facebook::fboss::cfg::MPLSField>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::vector<::std::string>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + using Children = fatal::tuple>>; + using ChildrenById = fatal::tuple< std::pair, Child<::std::int8_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::byte_t>>>; template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(ipv4Fields, 1); - STRUCT_CHILD_GETTERS(ipv6Fields, 2); - STRUCT_CHILD_GETTERS(transportFields, 3); - STRUCT_CHILD_GETTERS(mplsFields, 4); - STRUCT_CHILD_GETTERS(udfGroups, 5); + STRUCT_CHILD_GETTERS(tcValue, 1); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return ipv4Fields(); } - else if constexpr (__id == 2) { return ipv6Fields(); } - else if constexpr (__id == 3) { return transportFields(); } - else if constexpr (__id == 4) { return mplsFields(); } - else if constexpr (__id == 5) { return udfGroups(); } + if constexpr (__id == 1) { return tcValue(); } } template @@ -5932,44 +5662,23 @@ std::pair -class ChildThriftPath<::std::vector<::facebook::fboss::cfg::StaticRouteNoNextHops>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::cfg::MinimumCapacity, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::vector<::facebook::fboss::cfg::StaticRouteNoNextHops>, + ::facebook::fboss::cfg::MinimumCapacity, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::StaticRouteNoNextHops>>, + ::apache::thrift::type_class::variant, + ::apache::thrift::type::union_t<::facebook::fboss::cfg::MinimumCapacity>, Parent> { public: using Self = Path< - ::std::vector<::facebook::fboss::cfg::StaticRouteNoNextHops>, + ::facebook::fboss::cfg::MinimumCapacity, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::StaticRouteNoNextHops>>, + ::apache::thrift::type_class::variant, + ::apache::thrift::type::union_t<::facebook::fboss::cfg::MinimumCapacity>, Parent>; - using Child = ChildThriftPath<::facebook::fboss::cfg::StaticRouteNoNextHops, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; - using Self::Self; - - CONTAINER_CHILD_GETTERS(::std::int32_t); -}; - - -template -class ChildThriftPath<::facebook::fboss::state::SetTc, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : - public Path< - ::facebook::fboss::state::SetTc, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::state::SetTc>, - Parent> { - public: - using Self = Path< - ::facebook::fboss::state::SetTc, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::state::SetTc>, - Parent>; - using strings = ::facebook::fboss::state::switch_state_tags::strings; + using strings = ::facebook::fboss::cfg::switch_config_tags::strings; template using Child = Path< ChildType, @@ -5978,25 +5687,25 @@ class ChildThriftPath<::facebook::fboss::state::SetTc, ::facebook::fboss::fsdb:: ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>>; - using ChildrenById = fatal::tuple< std::pair, ChildThriftPath<::facebook::fboss::cfg::SetTcAction, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, Child>>; + using Children = fatal::tuple>, +std::pair>>; + using ChildrenById = fatal::tuple< std::pair, Child<::std::int8_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::byte_t>>, + std::pair, Child>>; template - using NameToId = fatal::tuple>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(action, 1); - STRUCT_CHILD_GETTERS(sendToCPU, 2); + STRUCT_CHILD_GETTERS(linkCount, 1); + STRUCT_CHILD_GETTERS(linkPercentage, 2); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return action(); } - else if constexpr (__id == 2) { return sendToCPU(); } + if constexpr (__id == 1) { return linkCount(); } + else if constexpr (__id == 2) { return linkPercentage(); } } template @@ -6007,19 +5716,19 @@ std::pair -class ChildThriftPath<::facebook::fboss::cfg::TrafficCounter, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::cfg::SwitchConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::cfg::TrafficCounter, + ::facebook::fboss::cfg::SwitchConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::TrafficCounter>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::SwitchConfig>, Parent> { public: using Self = Path< - ::facebook::fboss::cfg::TrafficCounter, + ::facebook::fboss::cfg::SwitchConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::TrafficCounter>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::SwitchConfig>, Parent>; using strings = ::facebook::fboss::cfg::switch_config_tags::strings; template @@ -6030,92 +5739,300 @@ class ChildThriftPath<::facebook::fboss::cfg::TrafficCounter, ::facebook::fboss: ChildTag, Self >; - using Children = fatal::tuple>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; - using ChildrenById = fatal::tuple< std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::CounterType>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + using Children = fatal::tuple>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair>, +std::pair>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair>, +std::pair>, +std::pair>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair>, +std::pair>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair>, +std::pair>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair>, +std::pair>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + using ChildrenById = fatal::tuple< std::pair, Child<::std::int64_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i64_t>>, + std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::Port>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::Vlan>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::VlanPort>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::Interface>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::StaticRouteWithNextHops>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::StaticRouteNoNextHops>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::StaticRouteNoNextHops>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::AclEntry>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::AggregatePort>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::map<::std::int32_t, ::std::int32_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, ChildThriftPath<::facebook::fboss::cfg::TrafficPolicyConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::SflowCollector>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::facebook::fboss::cfg::Lacp, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::PortQueue>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::facebook::fboss::cfg::CPUTrafficPolicyConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::LoadBalancer>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::facebook::fboss::cfg::TrafficPolicyConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::Mirror>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::TrafficCounter>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::QosPolicy>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::PortQueue>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::StaticMplsRouteWithNextHops>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::StaticMplsRouteNoNextHops>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::StaticMplsRouteNoNextHops>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::StaticIp2MplsRoute>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::map<::facebook::fboss::cfg::PortQueueConfigName, ::std::vector<::facebook::fboss::cfg::PortQueue>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::facebook::fboss::cfg::SwitchSettings, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::facebook::fboss::cfg::QcmConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::map<::facebook::fboss::cfg::PortPgConfigName, ::std::vector<::facebook::fboss::cfg::PortPgConfig>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::map<::facebook::fboss::cfg::BufferPoolConfigName, ::facebook::fboss::cfg::BufferPoolConfig>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::facebook::fboss::cfg::AclTableGroup, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::facebook::fboss::cfg::SdkVersion, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::IpInIpTunnel>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::map<::std::int64_t, ::facebook::fboss::cfg::DsfNode>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::facebook::fboss::cfg::UdfConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::facebook::fboss::cfg::FlowletSwitchingConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::PortQueue>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::map<::facebook::fboss::cfg::PortFlowletConfigName, ::facebook::fboss::cfg::PortFlowletConfig>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::PortQueue>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::AclTableGroup>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::MirrorOnDropReport>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; template - using NameToId = fatal::tuple>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(name, 1); - STRUCT_CHILD_GETTERS(types, 2); - - template - auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return name(); } - else if constexpr (__id == 2) { return types(); } - } - - template - auto operator()(const fatal::sequence&) { - return operator()(NameToId>()); - } -}; - - -template -class ChildThriftPath<::facebook::fboss::phy::PinConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : - public Path< - ::facebook::fboss::phy::PinConfig, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::phy::PinConfig>, - Parent> { - public: - using Self = Path< - ::facebook::fboss::phy::PinConfig, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::phy::PinConfig>, - Parent>; - using strings = ::facebook::fboss::phy::phy_tags::strings; - template - using Child = Path< - ChildType, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ChildTC, - ChildTag, - Self - >; - using Children = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>, -std::pair>>; - using ChildrenById = fatal::tuple< std::pair, ChildThriftPath<::facebook::fboss::phy::PinID, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::facebook::fboss::phy::TxSettings, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::facebook::fboss::phy::RxSettings, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::facebook::fboss::phy::LaneMap, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::facebook::fboss::phy::PolaritySwap, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; - template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>, -std::pair>>::template type_of; - - template - using TypeFor = typename Children::template type_of; - using Self::Self; - - STRUCT_CHILD_GETTERS(id, 1); - STRUCT_CHILD_GETTERS(tx, 2); - STRUCT_CHILD_GETTERS(rx, 3); - STRUCT_CHILD_GETTERS(laneMap, 4); - STRUCT_CHILD_GETTERS(polaritySwap, 5); + STRUCT_CHILD_GETTERS(version, 1); + STRUCT_CHILD_GETTERS(ports, 2); + STRUCT_CHILD_GETTERS(vlans, 3); + STRUCT_CHILD_GETTERS(vlanPorts, 4); + STRUCT_CHILD_GETTERS(defaultVlan, 5); + STRUCT_CHILD_GETTERS(interfaces, 6); + STRUCT_CHILD_GETTERS(arpTimeoutSeconds, 7); + STRUCT_CHILD_GETTERS(arpRefreshSeconds, 8); + STRUCT_CHILD_GETTERS(arpAgerInterval, 9); + STRUCT_CHILD_GETTERS(proactiveArp, 10); + STRUCT_CHILD_GETTERS(cpuMAC, 11); + STRUCT_CHILD_GETTERS(staticRoutesWithNhops, 12); + STRUCT_CHILD_GETTERS(staticRoutesToNull, 13); + STRUCT_CHILD_GETTERS(staticRoutesToCPU, 14); + STRUCT_CHILD_GETTERS(acls, 15); + STRUCT_CHILD_GETTERS(maxNeighborProbes, 16); + STRUCT_CHILD_GETTERS(staleEntryInterval, 17); + STRUCT_CHILD_GETTERS(aggregatePorts, 18); + STRUCT_CHILD_GETTERS(clientIdToAdminDistance, 19); + STRUCT_CHILD_GETTERS(dhcpRelaySrcOverrideV4, 20); + STRUCT_CHILD_GETTERS(dhcpRelaySrcOverrideV6, 21); + STRUCT_CHILD_GETTERS(dhcpReplySrcOverrideV4, 22); + STRUCT_CHILD_GETTERS(dhcpReplySrcOverrideV6, 23); + STRUCT_CHILD_GETTERS(globalEgressTrafficPolicy_DEPRECATED, 24); + STRUCT_CHILD_GETTERS(config_version, 25); + STRUCT_CHILD_GETTERS(sFlowCollectors, 26); + STRUCT_CHILD_GETTERS(lacp, 27); + STRUCT_CHILD_GETTERS(cpuQueues, 28); + STRUCT_CHILD_GETTERS(cpuTrafficPolicy, 29); + STRUCT_CHILD_GETTERS(loadBalancers, 30); + STRUCT_CHILD_GETTERS(dataPlaneTrafficPolicy, 31); + STRUCT_CHILD_GETTERS(mirrors, 32); + STRUCT_CHILD_GETTERS(trafficCounters, 33); + STRUCT_CHILD_GETTERS(qosPolicies, 34); + STRUCT_CHILD_GETTERS(defaultPortQueues, 35); + STRUCT_CHILD_GETTERS(staticMplsRoutesWithNhops, 36); + STRUCT_CHILD_GETTERS(staticMplsRoutesToNull, 37); + STRUCT_CHILD_GETTERS(staticMplsRoutesToCPU, 38); + STRUCT_CHILD_GETTERS(staticIp2MplsRoutes, 39); + STRUCT_CHILD_GETTERS(portQueueConfigs, 40); + STRUCT_CHILD_GETTERS(switchSettings, 41); + STRUCT_CHILD_GETTERS(qcmConfig, 42); + STRUCT_CHILD_GETTERS(portPgConfigs, 43); + STRUCT_CHILD_GETTERS(bufferPoolConfigs, 44); + STRUCT_CHILD_GETTERS(aclTableGroup, 45); + STRUCT_CHILD_GETTERS(sdkVersion, 46); + STRUCT_CHILD_GETTERS(ipInIpTunnels, 47); + STRUCT_CHILD_GETTERS(dsfNodes, 48); + STRUCT_CHILD_GETTERS(udfConfig, 49); + STRUCT_CHILD_GETTERS(flowletSwitchingConfig, 50); + STRUCT_CHILD_GETTERS(defaultVoqConfig, 51); + STRUCT_CHILD_GETTERS(portFlowletConfigs, 52); + STRUCT_CHILD_GETTERS(icmpV4UnavailableSrcAddress, 53); + STRUCT_CHILD_GETTERS(hostname, 54); + STRUCT_CHILD_GETTERS(cpuVoqs, 55); + STRUCT_CHILD_GETTERS(aclTableGroups, 56); + STRUCT_CHILD_GETTERS(mirrorOnDropReports, 57); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return id(); } - else if constexpr (__id == 2) { return tx(); } - else if constexpr (__id == 3) { return rx(); } - else if constexpr (__id == 4) { return laneMap(); } - else if constexpr (__id == 5) { return polaritySwap(); } + if constexpr (__id == 1) { return version(); } + else if constexpr (__id == 2) { return ports(); } + else if constexpr (__id == 3) { return vlans(); } + else if constexpr (__id == 4) { return vlanPorts(); } + else if constexpr (__id == 5) { return defaultVlan(); } + else if constexpr (__id == 6) { return interfaces(); } + else if constexpr (__id == 7) { return arpTimeoutSeconds(); } + else if constexpr (__id == 8) { return arpRefreshSeconds(); } + else if constexpr (__id == 9) { return arpAgerInterval(); } + else if constexpr (__id == 10) { return proactiveArp(); } + else if constexpr (__id == 11) { return cpuMAC(); } + else if constexpr (__id == 12) { return staticRoutesWithNhops(); } + else if constexpr (__id == 13) { return staticRoutesToNull(); } + else if constexpr (__id == 14) { return staticRoutesToCPU(); } + else if constexpr (__id == 15) { return acls(); } + else if constexpr (__id == 16) { return maxNeighborProbes(); } + else if constexpr (__id == 17) { return staleEntryInterval(); } + else if constexpr (__id == 18) { return aggregatePorts(); } + else if constexpr (__id == 19) { return clientIdToAdminDistance(); } + else if constexpr (__id == 20) { return dhcpRelaySrcOverrideV4(); } + else if constexpr (__id == 21) { return dhcpRelaySrcOverrideV6(); } + else if constexpr (__id == 22) { return dhcpReplySrcOverrideV4(); } + else if constexpr (__id == 23) { return dhcpReplySrcOverrideV6(); } + else if constexpr (__id == 24) { return globalEgressTrafficPolicy_DEPRECATED(); } + else if constexpr (__id == 25) { return config_version(); } + else if constexpr (__id == 26) { return sFlowCollectors(); } + else if constexpr (__id == 27) { return lacp(); } + else if constexpr (__id == 28) { return cpuQueues(); } + else if constexpr (__id == 29) { return cpuTrafficPolicy(); } + else if constexpr (__id == 30) { return loadBalancers(); } + else if constexpr (__id == 31) { return dataPlaneTrafficPolicy(); } + else if constexpr (__id == 32) { return mirrors(); } + else if constexpr (__id == 33) { return trafficCounters(); } + else if constexpr (__id == 34) { return qosPolicies(); } + else if constexpr (__id == 35) { return defaultPortQueues(); } + else if constexpr (__id == 36) { return staticMplsRoutesWithNhops(); } + else if constexpr (__id == 37) { return staticMplsRoutesToNull(); } + else if constexpr (__id == 38) { return staticMplsRoutesToCPU(); } + else if constexpr (__id == 39) { return staticIp2MplsRoutes(); } + else if constexpr (__id == 40) { return portQueueConfigs(); } + else if constexpr (__id == 41) { return switchSettings(); } + else if constexpr (__id == 42) { return qcmConfig(); } + else if constexpr (__id == 43) { return portPgConfigs(); } + else if constexpr (__id == 44) { return bufferPoolConfigs(); } + else if constexpr (__id == 45) { return aclTableGroup(); } + else if constexpr (__id == 46) { return sdkVersion(); } + else if constexpr (__id == 47) { return ipInIpTunnels(); } + else if constexpr (__id == 48) { return dsfNodes(); } + else if constexpr (__id == 49) { return udfConfig(); } + else if constexpr (__id == 50) { return flowletSwitchingConfig(); } + else if constexpr (__id == 51) { return defaultVoqConfig(); } + else if constexpr (__id == 52) { return portFlowletConfigs(); } + else if constexpr (__id == 53) { return icmpV4UnavailableSrcAddress(); } + else if constexpr (__id == 54) { return hostname(); } + else if constexpr (__id == 55) { return cpuVoqs(); } + else if constexpr (__id == 56) { return aclTableGroups(); } + else if constexpr (__id == 57) { return mirrorOnDropReports(); } } template @@ -6126,21 +6043,21 @@ std::pair -class ChildThriftPath<::facebook::fboss::cfg::QosRule, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::state::RedirectToNextHopAction, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::cfg::QosRule, + ::facebook::fboss::state::RedirectToNextHopAction, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::QosRule>, + ::apache::thrift::type::struct_t<::facebook::fboss::state::RedirectToNextHopAction>, Parent> { public: using Self = Path< - ::facebook::fboss::cfg::QosRule, + ::facebook::fboss::state::RedirectToNextHopAction, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::QosRule>, + ::apache::thrift::type::struct_t<::facebook::fboss::state::RedirectToNextHopAction>, Parent>; - using strings = ::facebook::fboss::cfg::switch_config_tags::strings; + using strings = ::facebook::fboss::state::switch_state_tags::strings; template using Child = Path< ChildType, @@ -6149,25 +6066,25 @@ class ChildThriftPath<::facebook::fboss::cfg::QosRule, ::facebook::fboss::fsdb:: ChildTag, Self >; - using Children = fatal::tuple>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; - using ChildrenById = fatal::tuple< std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, - std::pair, ChildThriftPath<::std::vector<::std::int16_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + using Children = fatal::tuple>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + using ChildrenById = fatal::tuple< std::pair, ChildThriftPath<::facebook::fboss::cfg::RedirectToNextHopAction, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::vector<::facebook::fboss::NextHopThrift>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; template - using NameToId = fatal::tuple>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(queueId, 1); - STRUCT_CHILD_GETTERS(dscp, 2); + STRUCT_CHILD_GETTERS(action, 1); + STRUCT_CHILD_GETTERS(resolvedNexthops, 2); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return queueId(); } - else if constexpr (__id == 2) { return dscp(); } + if constexpr (__id == 1) { return action(); } + else if constexpr (__id == 2) { return resolvedNexthops(); } } template @@ -6176,65 +6093,23 @@ std::pair>> } }; -template -class ChildThriftPath<::std::map<::std::int64_t, ::facebook::fboss::cfg::SwitchType>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : - public Path< - ::std::map<::std::int64_t, ::facebook::fboss::cfg::SwitchType>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::enumeration>, - ::apache::thrift::type::map<::apache::thrift::type::i64_t, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::SwitchType>>, - Parent> { - public: - using Self = Path< - ::std::map<::std::int64_t, ::facebook::fboss::cfg::SwitchType>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::enumeration>, - ::apache::thrift::type::map<::apache::thrift::type::i64_t, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::SwitchType>>, - Parent>; - using Child = Path<::facebook::fboss::cfg::SwitchType, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::SwitchType>, Self>; - using Self::Self; - - CONTAINER_CHILD_GETTERS(::std::int64_t); -}; - -template -class ChildThriftPath<::std::vector<::facebook::fboss::cfg::Range64>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : - public Path< - ::std::vector<::facebook::fboss::cfg::Range64>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::Range64>>, - Parent> { - public: - using Self = Path< - ::std::vector<::facebook::fboss::cfg::Range64>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::Range64>>, - Parent>; - using Child = ChildThriftPath<::facebook::fboss::cfg::Range64, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; - using Self::Self; - - CONTAINER_CHILD_GETTERS(::std::int32_t); -}; - template -class ChildThriftPath<::facebook::fboss::MplsAction, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::state::SflowCollectorFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::MplsAction, + ::facebook::fboss::state::SflowCollectorFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::MplsAction>, + ::apache::thrift::type::struct_t<::facebook::fboss::state::SflowCollectorFields>, Parent> { public: using Self = Path< - ::facebook::fboss::MplsAction, + ::facebook::fboss::state::SflowCollectorFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::MplsAction>, + ::apache::thrift::type::struct_t<::facebook::fboss::state::SflowCollectorFields>, Parent>; - using strings = ::facebook::fboss::mpls_tags::strings; + using strings = ::facebook::fboss::state::switch_state_tags::strings; template using Child = Path< ChildType, @@ -6243,30 +6118,25 @@ class ChildThriftPath<::facebook::fboss::MplsAction, ::facebook::fboss::fsdb::Fs ChildTag, Self >; - using Children = fatal::tuple>>, -std::pair>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; - using ChildrenById = fatal::tuple< std::pair, Child<::facebook::fboss::MplsActionCode, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::MplsActionCode>>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, ChildThriftPath<::std::vector<::std::int32_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + using Children = fatal::tuple>, +std::pair>>; + using ChildrenById = fatal::tuple< std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, ChildThriftPath<::facebook::fboss::state::SocketAddress, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(action, 1); - STRUCT_CHILD_GETTERS(swapLabel, 2); - STRUCT_CHILD_GETTERS(pushLabels, 3); + STRUCT_CHILD_GETTERS(id, 1); + STRUCT_CHILD_GETTERS(address, 2); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return action(); } - else if constexpr (__id == 2) { return swapLabel(); } - else if constexpr (__id == 3) { return pushLabels(); } + if constexpr (__id == 1) { return id(); } + else if constexpr (__id == 2) { return address(); } } template @@ -6277,21 +6147,21 @@ std::pair -class ChildThriftPath<::facebook::fboss::state::RouteNextHopEntry, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::cfg::PortPgConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::state::RouteNextHopEntry, + ::facebook::fboss::cfg::PortPgConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::state::RouteNextHopEntry>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::PortPgConfig>, Parent> { public: using Self = Path< - ::facebook::fboss::state::RouteNextHopEntry, + ::facebook::fboss::cfg::PortPgConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::state::RouteNextHopEntry>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::PortPgConfig>, Parent>; - using strings = ::facebook::fboss::state::switch_state_tags::strings; + using strings = ::facebook::fboss::cfg::switch_config_tags::strings; template using Child = Path< ChildType, @@ -6300,40 +6170,75 @@ class ChildThriftPath<::facebook::fboss::state::RouteNextHopEntry, ::facebook::f ChildTag, Self >; - using Children = fatal::tuple>>, -std::pair>>, -std::pair>, -std::pair>>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; - using ChildrenById = fatal::tuple< std::pair, Child<::facebook::fboss::AdminDistance, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::AdminDistance>>>, - std::pair, Child<::facebook::fboss::RouteForwardAction, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::RouteForwardAction>>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, Child<::facebook::fboss::cfg::AclLookupClass, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::AclLookupClass>>>, - std::pair, ChildThriftPath<::std::vector<::facebook::fboss::NextHopThrift>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + using Children = fatal::tuple>, +std::pair>, +std::pair>>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>>; + using ChildrenById = fatal::tuple< std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, Child<::facebook::fboss::cfg::MMUScalingFactor, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::MMUScalingFactor>>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, Child<::std::int64_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i64_t>>, + std::pair, Child<::std::int64_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i64_t>>, + std::pair, Child<::std::int64_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i64_t>>, + std::pair, Child<::std::int64_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i64_t>>, + std::pair, Child<::std::int64_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i64_t>>>; template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(adminDistance, 1); - STRUCT_CHILD_GETTERS(action, 2); - STRUCT_CHILD_GETTERS(counterID, 3); - STRUCT_CHILD_GETTERS(classID, 4); - STRUCT_CHILD_GETTERS(nexthops, 5); + STRUCT_CHILD_GETTERS(id, 1); + STRUCT_CHILD_GETTERS(name, 2); + STRUCT_CHILD_GETTERS(scalingFactor, 3); + STRUCT_CHILD_GETTERS(minLimitBytes, 4); + STRUCT_CHILD_GETTERS(headroomLimitBytes, 5); + STRUCT_CHILD_GETTERS(resumeOffsetBytes, 6); + STRUCT_CHILD_GETTERS(bufferPoolName, 7); + STRUCT_CHILD_GETTERS(maxSharedXoffThresholdBytes, 8); + STRUCT_CHILD_GETTERS(minSharedXoffThresholdBytes, 9); + STRUCT_CHILD_GETTERS(maxSramXoffThresholdBytes, 10); + STRUCT_CHILD_GETTERS(minSramXoffThresholdBytes, 11); + STRUCT_CHILD_GETTERS(sramResumeOffsetBytes, 12); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return adminDistance(); } - else if constexpr (__id == 2) { return action(); } - else if constexpr (__id == 3) { return counterID(); } - else if constexpr (__id == 4) { return classID(); } - else if constexpr (__id == 5) { return nexthops(); } + if constexpr (__id == 1) { return id(); } + else if constexpr (__id == 2) { return name(); } + else if constexpr (__id == 3) { return scalingFactor(); } + else if constexpr (__id == 4) { return minLimitBytes(); } + else if constexpr (__id == 5) { return headroomLimitBytes(); } + else if constexpr (__id == 6) { return resumeOffsetBytes(); } + else if constexpr (__id == 7) { return bufferPoolName(); } + else if constexpr (__id == 8) { return maxSharedXoffThresholdBytes(); } + else if constexpr (__id == 9) { return minSharedXoffThresholdBytes(); } + else if constexpr (__id == 10) { return maxSramXoffThresholdBytes(); } + else if constexpr (__id == 11) { return minSramXoffThresholdBytes(); } + else if constexpr (__id == 12) { return sramResumeOffsetBytes(); } } template @@ -6344,21 +6249,21 @@ std::pair -class ChildThriftPath<::facebook::fboss::cfg::UdfPacketMatcher, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::state::VlanFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::cfg::UdfPacketMatcher, + ::facebook::fboss::state::VlanFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::UdfPacketMatcher>, + ::apache::thrift::type::struct_t<::facebook::fboss::state::VlanFields>, Parent> { public: using Self = Path< - ::facebook::fboss::cfg::UdfPacketMatcher, + ::facebook::fboss::state::VlanFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::UdfPacketMatcher>, + ::apache::thrift::type::struct_t<::facebook::fboss::state::VlanFields>, Parent>; - using strings = ::facebook::fboss::cfg::switch_config_tags::strings; + using strings = ::facebook::fboss::state::switch_state_tags::strings; template using Child = Path< ChildType, @@ -6367,40 +6272,80 @@ class ChildThriftPath<::facebook::fboss::cfg::UdfPacketMatcher, ::facebook::fbos ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>>, -std::pair>>, -std::pair>>, -std::pair>>; - using ChildrenById = fatal::tuple< std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, Child<::facebook::fboss::cfg::UdfMatchL2Type, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::UdfMatchL2Type>>>, - std::pair, Child<::facebook::fboss::cfg::UdfMatchL3Type, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::UdfMatchL3Type>>>, - std::pair, Child<::facebook::fboss::cfg::UdfMatchL4Type, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::UdfMatchL4Type>>>, - std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>>; + using Children = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + using ChildrenById = fatal::tuple< std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, ChildThriftPath<::std::map<::std::string, ::std::string>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::map<::std::string, ::std::string>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::map<::std::int16_t, bool>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::map<::std::string, ::facebook::fboss::state::NeighborEntryFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::map<::std::string, ::facebook::fboss::state::NeighborResponseEntryFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::map<::std::string, ::facebook::fboss::state::NeighborEntryFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::map<::std::string, ::facebook::fboss::state::NeighborResponseEntryFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::map<::std::string, ::facebook::fboss::state::MacEntryFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(name, 1); - STRUCT_CHILD_GETTERS(l2PktType, 2); - STRUCT_CHILD_GETTERS(l3pktType, 3); - STRUCT_CHILD_GETTERS(l4PktType, 4); - STRUCT_CHILD_GETTERS(UdfL4DstPort, 5); + STRUCT_CHILD_GETTERS(vlanId, 1); + STRUCT_CHILD_GETTERS(vlanName, 2); + STRUCT_CHILD_GETTERS(intfID, 3); + STRUCT_CHILD_GETTERS(dhcpV4Relay, 4); + STRUCT_CHILD_GETTERS(dhcpV6Relay, 5); + STRUCT_CHILD_GETTERS(dhcpRelayOverridesV4, 6); + STRUCT_CHILD_GETTERS(dhcpRelayOverridesV6, 7); + STRUCT_CHILD_GETTERS(ports, 8); + STRUCT_CHILD_GETTERS(arpTable, 9); + STRUCT_CHILD_GETTERS(arpResponseTable, 10); + STRUCT_CHILD_GETTERS(ndpTable, 11); + STRUCT_CHILD_GETTERS(ndpResponseTable, 12); + STRUCT_CHILD_GETTERS(macTable, 13); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return name(); } - else if constexpr (__id == 2) { return l2PktType(); } - else if constexpr (__id == 3) { return l3pktType(); } - else if constexpr (__id == 4) { return l4PktType(); } - else if constexpr (__id == 5) { return UdfL4DstPort(); } + if constexpr (__id == 1) { return vlanId(); } + else if constexpr (__id == 2) { return vlanName(); } + else if constexpr (__id == 3) { return intfID(); } + else if constexpr (__id == 4) { return dhcpV4Relay(); } + else if constexpr (__id == 5) { return dhcpV6Relay(); } + else if constexpr (__id == 6) { return dhcpRelayOverridesV4(); } + else if constexpr (__id == 7) { return dhcpRelayOverridesV6(); } + else if constexpr (__id == 8) { return ports(); } + else if constexpr (__id == 9) { return arpTable(); } + else if constexpr (__id == 10) { return arpResponseTable(); } + else if constexpr (__id == 11) { return ndpTable(); } + else if constexpr (__id == 12) { return ndpResponseTable(); } + else if constexpr (__id == 13) { return macTable(); } } template @@ -6410,21 +6355,42 @@ std::pair -class ChildThriftPath<::std::vector<::facebook::fboss::cfg::ExactMatchTableConfig>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::vector<::facebook::fboss::cfg::PortQueue>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::vector<::facebook::fboss::cfg::ExactMatchTableConfig>, + ::std::vector<::facebook::fboss::cfg::PortQueue>, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::ExactMatchTableConfig>>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::PortQueue>>, Parent> { public: using Self = Path< - ::std::vector<::facebook::fboss::cfg::ExactMatchTableConfig>, + ::std::vector<::facebook::fboss::cfg::PortQueue>, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::ExactMatchTableConfig>>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::PortQueue>>, Parent>; - using Child = ChildThriftPath<::facebook::fboss::cfg::ExactMatchTableConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Child = ChildThriftPath<::facebook::fboss::cfg::PortQueue, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Self::Self; + + CONTAINER_CHILD_GETTERS(::std::int32_t); +}; + +template +class ChildThriftPath<::std::vector<::std::string>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : + public Path< + ::std::vector<::std::string>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::list<::apache::thrift::type_class::string>, + ::apache::thrift::type::list<::apache::thrift::type::string_t>, + Parent> { + public: + using Self = Path< + ::std::vector<::std::string>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::list<::apache::thrift::type_class::string>, + ::apache::thrift::type::list<::apache::thrift::type::string_t>, + Parent>; + using Child = Path<::std::string, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t, Self>; using Self::Self; CONTAINER_CHILD_GETTERS(::std::int32_t); @@ -6432,21 +6398,21 @@ class ChildThriftPath<::std::vector<::facebook::fboss::cfg::ExactMatchTableConfi template -class ChildThriftPath<::facebook::fboss::bcm::BcmConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::cfg::Range, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::bcm::BcmConfig, + ::facebook::fboss::cfg::Range, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::bcm::BcmConfig>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::Range>, Parent> { public: using Self = Path< - ::facebook::fboss::bcm::BcmConfig, + ::facebook::fboss::cfg::Range, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::bcm::BcmConfig>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::Range>, Parent>; - using strings = ::facebook::fboss::bcm::bcm_config_tags::strings; + using strings = ::facebook::fboss::cfg::switch_config_tags::strings; template using Child = Path< ChildType, @@ -6455,25 +6421,25 @@ class ChildThriftPath<::facebook::fboss::bcm::BcmConfig, ::facebook::fboss::fsdb ChildTag, Self >; - using Children = fatal::tuple, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair>>; - using ChildrenById = fatal::tuple< std::pair, ChildThriftPath<::std::map<::std::string, ::std::string>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>>; + using Children = fatal::tuple>, +std::pair>>; + using ChildrenById = fatal::tuple< std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>>; template - using NameToId = fatal::tuple>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(config, 1); - STRUCT_CHILD_GETTERS(yamlConfig, 2); + STRUCT_CHILD_GETTERS(minimum, 1); + STRUCT_CHILD_GETTERS(maximum, 2); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return config(); } - else if constexpr (__id == 2) { return yamlConfig(); } + if constexpr (__id == 1) { return minimum(); } + else if constexpr (__id == 2) { return maximum(); } } template @@ -6482,21 +6448,42 @@ std::pair +class ChildThriftPath<::std::vector<::facebook::fboss::cfg::AclUdfEntry>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : + public Path< + ::std::vector<::facebook::fboss::cfg::AclUdfEntry>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::AclUdfEntry>>, + Parent> { + public: + using Self = Path< + ::std::vector<::facebook::fboss::cfg::AclUdfEntry>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::AclUdfEntry>>, + Parent>; + using Child = ChildThriftPath<::facebook::fboss::cfg::AclUdfEntry, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Self::Self; + + CONTAINER_CHILD_GETTERS(::std::int32_t); +}; + template -class ChildThriftPath<::facebook::fboss::state::MatchAction, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::state::TeFlowEntryFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::state::MatchAction, + ::facebook::fboss::state::TeFlowEntryFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::state::MatchAction>, + ::apache::thrift::type::struct_t<::facebook::fboss::state::TeFlowEntryFields>, Parent> { public: using Self = Path< - ::facebook::fboss::state::MatchAction, + ::facebook::fboss::state::TeFlowEntryFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::state::MatchAction>, + ::apache::thrift::type::struct_t<::facebook::fboss::state::TeFlowEntryFields>, Parent>; using strings = ::facebook::fboss::state::switch_state_tags::strings; template @@ -6507,70 +6494,45 @@ class ChildThriftPath<::facebook::fboss::state::MatchAction, ::facebook::fboss:: ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>>>; - using ChildrenById = fatal::tuple< std::pair, ChildThriftPath<::facebook::fboss::state::SendToQueue, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::facebook::fboss::cfg::TrafficCounter, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::facebook::fboss::cfg::SetDscpMatchAction, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, Child<::facebook::fboss::cfg::ToCpuAction, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::ToCpuAction>>>, - std::pair, ChildThriftPath<::facebook::fboss::cfg::MacsecFlowAction, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::facebook::fboss::state::RedirectToNextHopAction, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::facebook::fboss::state::SetTc, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::facebook::fboss::cfg::UserDefinedTrapAction, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, Child<::facebook::fboss::cfg::FlowletAction, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::FlowletAction>>>>; + using Children = fatal::tuple>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair>, +std::pair>, +std::pair>>; + using ChildrenById = fatal::tuple< std::pair, ChildThriftPath<::facebook::fboss::TeFlow, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::vector<::facebook::fboss::NextHopThrift>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::vector<::facebook::fboss::NextHopThrift>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, Child>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, Child>>; template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(sendToQueue, 1); - STRUCT_CHILD_GETTERS(trafficCounter, 2); - STRUCT_CHILD_GETTERS(setDscp, 3); - STRUCT_CHILD_GETTERS(ingressMirror, 4); - STRUCT_CHILD_GETTERS(egressMirror, 5); - STRUCT_CHILD_GETTERS(toCpuAction, 6); - STRUCT_CHILD_GETTERS(macsecFlow, 7); - STRUCT_CHILD_GETTERS(redirectToNextHop, 8); - STRUCT_CHILD_GETTERS(setTc, 9); - STRUCT_CHILD_GETTERS(userDefinedTrap, 10); - STRUCT_CHILD_GETTERS(flowletAction, 11); + STRUCT_CHILD_GETTERS(flow, 1); + STRUCT_CHILD_GETTERS(nexthops, 3); + STRUCT_CHILD_GETTERS(resolvedNexthops, 4); + STRUCT_CHILD_GETTERS(enabled, 5); + STRUCT_CHILD_GETTERS(counterID, 6); + STRUCT_CHILD_GETTERS(statEnabled, 7); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return sendToQueue(); } - else if constexpr (__id == 2) { return trafficCounter(); } - else if constexpr (__id == 3) { return setDscp(); } - else if constexpr (__id == 4) { return ingressMirror(); } - else if constexpr (__id == 5) { return egressMirror(); } - else if constexpr (__id == 6) { return toCpuAction(); } - else if constexpr (__id == 7) { return macsecFlow(); } - else if constexpr (__id == 8) { return redirectToNextHop(); } - else if constexpr (__id == 9) { return setTc(); } - else if constexpr (__id == 10) { return userDefinedTrap(); } - else if constexpr (__id == 11) { return flowletAction(); } + if constexpr (__id == 1) { return flow(); } + else if constexpr (__id == 3) { return nexthops(); } + else if constexpr (__id == 4) { return resolvedNexthops(); } + else if constexpr (__id == 5) { return enabled(); } + else if constexpr (__id == 6) { return counterID(); } + else if constexpr (__id == 7) { return statEnabled(); } } template @@ -6580,21 +6542,21 @@ std::pair -class ChildThriftPath<::std::vector<::facebook::fboss::cfg::PacketRxReasonToQueue>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::vector<::facebook::fboss::cfg::IpInIpTunnel>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::vector<::facebook::fboss::cfg::PacketRxReasonToQueue>, + ::std::vector<::facebook::fboss::cfg::IpInIpTunnel>, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::PacketRxReasonToQueue>>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::IpInIpTunnel>>, Parent> { public: using Self = Path< - ::std::vector<::facebook::fboss::cfg::PacketRxReasonToQueue>, + ::std::vector<::facebook::fboss::cfg::IpInIpTunnel>, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::PacketRxReasonToQueue>>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::IpInIpTunnel>>, Parent>; - using Child = ChildThriftPath<::facebook::fboss::cfg::PacketRxReasonToQueue, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Child = ChildThriftPath<::facebook::fboss::cfg::IpInIpTunnel, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; using Self::Self; CONTAINER_CHILD_GETTERS(::std::int32_t); @@ -6602,19 +6564,19 @@ class ChildThriftPath<::std::vector<::facebook::fboss::cfg::PacketRxReasonToQueu template -class ChildThriftPath<::facebook::fboss::cfg::Vlan, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::cfg::AggregatePort, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::cfg::Vlan, + ::facebook::fboss::cfg::AggregatePort, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::Vlan>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::AggregatePort>, Parent> { public: using Self = Path< - ::facebook::fboss::cfg::Vlan, + ::facebook::fboss::cfg::AggregatePort, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::Vlan>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::AggregatePort>, Parent>; using strings = ::facebook::fboss::cfg::switch_config_tags::strings; template @@ -6625,65 +6587,45 @@ class ChildThriftPath<::facebook::fboss::cfg::Vlan, ::facebook::fboss::fsdb::Fsd ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair>, -std::pair>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair>>; - using ChildrenById = fatal::tuple< std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child>, - std::pair, Child>, - std::pair, ChildThriftPath<::std::vector<::std::string>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, ChildThriftPath<::std::map<::std::string, ::std::string>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::map<::std::string, ::std::string>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>>; + using Children = fatal::tuple>, +std::pair>, +std::pair>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + using ChildrenById = fatal::tuple< std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::AggregatePortMember>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::facebook::fboss::cfg::MinimumCapacity, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::vector<::std::string>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(name, 1); - STRUCT_CHILD_GETTERS(id, 2); - STRUCT_CHILD_GETTERS(recordStats, 3); - STRUCT_CHILD_GETTERS(routable, 5); - STRUCT_CHILD_GETTERS(ipAddresses, 6); - STRUCT_CHILD_GETTERS(dhcpRelayAddressV4, 7); - STRUCT_CHILD_GETTERS(dhcpRelayAddressV6, 8); - STRUCT_CHILD_GETTERS(dhcpRelayOverridesV4, 9); - STRUCT_CHILD_GETTERS(dhcpRelayOverridesV6, 10); - STRUCT_CHILD_GETTERS(intfID, 11); + STRUCT_CHILD_GETTERS(key, 1); + STRUCT_CHILD_GETTERS(name, 2); + STRUCT_CHILD_GETTERS(description, 3); + STRUCT_CHILD_GETTERS(memberPorts, 4); + STRUCT_CHILD_GETTERS(minimumCapacity, 5); + STRUCT_CHILD_GETTERS(counterTags, 6); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return name(); } - else if constexpr (__id == 2) { return id(); } - else if constexpr (__id == 3) { return recordStats(); } - else if constexpr (__id == 5) { return routable(); } - else if constexpr (__id == 6) { return ipAddresses(); } - else if constexpr (__id == 7) { return dhcpRelayAddressV4(); } - else if constexpr (__id == 8) { return dhcpRelayAddressV6(); } - else if constexpr (__id == 9) { return dhcpRelayOverridesV4(); } - else if constexpr (__id == 10) { return dhcpRelayOverridesV6(); } - else if constexpr (__id == 11) { return intfID(); } + if constexpr (__id == 1) { return key(); } + else if constexpr (__id == 2) { return name(); } + else if constexpr (__id == 3) { return description(); } + else if constexpr (__id == 4) { return memberPorts(); } + else if constexpr (__id == 5) { return minimumCapacity(); } + else if constexpr (__id == 6) { return counterTags(); } } template @@ -6693,104 +6635,41 @@ std::pair -class ChildThriftPath<::std::vector<::std::int8_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::int16_t, ::facebook::fboss::state::TransceiverSpecFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::vector<::std::int8_t>, + ::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::int16_t, ::facebook::fboss::state::TransceiverSpecFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::integral>, - ::apache::thrift::type::list<::apache::thrift::type::byte_t>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::map<::apache::thrift::type::i16_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::TransceiverSpecFields>>>, Parent> { public: using Self = Path< - ::std::vector<::std::int8_t>, + ::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::int16_t, ::facebook::fboss::state::TransceiverSpecFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::integral>, - ::apache::thrift::type::list<::apache::thrift::type::byte_t>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::map<::apache::thrift::type::i16_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::TransceiverSpecFields>>>, Parent>; - using Child = Path<::std::int8_t, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::integral, ::apache::thrift::type::byte_t, Self>; + using Child = ChildThriftPath<::std::map<::std::int16_t, ::facebook::fboss::state::TransceiverSpecFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; using Self::Self; - CONTAINER_CHILD_GETTERS(::std::int32_t); + CONTAINER_CHILD_GETTERS(::facebook::fboss::state::SwitchIdList); }; + template -class ChildThriftPath<::std::vector<::facebook::fboss::cfg::AclTableActionType>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::cfg::TrafficCounter, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::vector<::facebook::fboss::cfg::AclTableActionType>, + ::facebook::fboss::cfg::TrafficCounter, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::enumeration>, - ::apache::thrift::type::list<::apache::thrift::type::enum_t<::facebook::fboss::cfg::AclTableActionType>>, + ::apache::thrift::type_class::structure, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::TrafficCounter>, Parent> { public: using Self = Path< - ::std::vector<::facebook::fboss::cfg::AclTableActionType>, + ::facebook::fboss::cfg::TrafficCounter, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::enumeration>, - ::apache::thrift::type::list<::apache::thrift::type::enum_t<::facebook::fboss::cfg::AclTableActionType>>, - Parent>; - using Child = Path<::facebook::fboss::cfg::AclTableActionType, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::AclTableActionType>, Self>; - using Self::Self; - - CONTAINER_CHILD_GETTERS(::std::int32_t); -}; - -template -class ChildThriftPath<::std::map<::facebook::fboss::cfg::LoadBalancerID, ::facebook::fboss::state::LoadBalancerFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : - public Path< - ::std::map<::facebook::fboss::cfg::LoadBalancerID, ::facebook::fboss::state::LoadBalancerFields>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::enumeration, ::apache::thrift::type_class::structure>, - ::apache::thrift::type::map<::apache::thrift::type::enum_t<::facebook::fboss::cfg::LoadBalancerID>, ::apache::thrift::type::struct_t<::facebook::fboss::state::LoadBalancerFields>>, - Parent> { - public: - using Self = Path< - ::std::map<::facebook::fboss::cfg::LoadBalancerID, ::facebook::fboss::state::LoadBalancerFields>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::enumeration, ::apache::thrift::type_class::structure>, - ::apache::thrift::type::map<::apache::thrift::type::enum_t<::facebook::fboss::cfg::LoadBalancerID>, ::apache::thrift::type::struct_t<::facebook::fboss::state::LoadBalancerFields>>, - Parent>; - using Child = ChildThriftPath<::facebook::fboss::state::LoadBalancerFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; - using Self::Self; - - CONTAINER_CHILD_GETTERS(::facebook::fboss::cfg::LoadBalancerID); -}; - -template -class ChildThriftPath<::std::vector<::facebook::fboss::cfg::QosPolicy>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : - public Path< - ::std::vector<::facebook::fboss::cfg::QosPolicy>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::QosPolicy>>, - Parent> { - public: - using Self = Path< - ::std::vector<::facebook::fboss::cfg::QosPolicy>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::QosPolicy>>, - Parent>; - using Child = ChildThriftPath<::facebook::fboss::cfg::QosPolicy, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; - using Self::Self; - - CONTAINER_CHILD_GETTERS(::std::int32_t); -}; - - -template -class ChildThriftPath<::facebook::fboss::cfg::FlowletSwitchingConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : - public Path< - ::facebook::fboss::cfg::FlowletSwitchingConfig, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::FlowletSwitchingConfig>, - Parent> { - public: - using Self = Path< - ::facebook::fboss::cfg::FlowletSwitchingConfig, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::FlowletSwitchingConfig>, + ::apache::thrift::type_class::structure, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::TrafficCounter>, Parent>; using strings = ::facebook::fboss::cfg::switch_config_tags::strings; template @@ -6801,75 +6680,25 @@ class ChildThriftPath<::facebook::fboss::cfg::FlowletSwitchingConfig, ::facebook ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>>>; - using ChildrenById = fatal::tuple< std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, - std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, - std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, - std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, - std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, - std::pair, Child<::facebook::fboss::cfg::SwitchingMode, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::SwitchingMode>>>>; + using Children = fatal::tuple>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + using ChildrenById = fatal::tuple< std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::CounterType>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(inactivityIntervalUsecs, 1); - STRUCT_CHILD_GETTERS(flowletTableSize, 2); - STRUCT_CHILD_GETTERS(dynamicEgressLoadExponent, 3); - STRUCT_CHILD_GETTERS(dynamicQueueExponent, 4); - STRUCT_CHILD_GETTERS(dynamicQueueMinThresholdBytes, 5); - STRUCT_CHILD_GETTERS(dynamicQueueMaxThresholdBytes, 6); - STRUCT_CHILD_GETTERS(dynamicSampleRate, 7); - STRUCT_CHILD_GETTERS(dynamicEgressMinThresholdBytes, 8); - STRUCT_CHILD_GETTERS(dynamicEgressMaxThresholdBytes, 9); - STRUCT_CHILD_GETTERS(dynamicPhysicalQueueExponent, 10); - STRUCT_CHILD_GETTERS(maxLinks, 11); - STRUCT_CHILD_GETTERS(switchingMode, 12); + STRUCT_CHILD_GETTERS(name, 1); + STRUCT_CHILD_GETTERS(types, 2); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return inactivityIntervalUsecs(); } - else if constexpr (__id == 2) { return flowletTableSize(); } - else if constexpr (__id == 3) { return dynamicEgressLoadExponent(); } - else if constexpr (__id == 4) { return dynamicQueueExponent(); } - else if constexpr (__id == 5) { return dynamicQueueMinThresholdBytes(); } - else if constexpr (__id == 6) { return dynamicQueueMaxThresholdBytes(); } - else if constexpr (__id == 7) { return dynamicSampleRate(); } - else if constexpr (__id == 8) { return dynamicEgressMinThresholdBytes(); } - else if constexpr (__id == 9) { return dynamicEgressMaxThresholdBytes(); } - else if constexpr (__id == 10) { return dynamicPhysicalQueueExponent(); } - else if constexpr (__id == 11) { return maxLinks(); } - else if constexpr (__id == 12) { return switchingMode(); } + if constexpr (__id == 1) { return name(); } + else if constexpr (__id == 2) { return types(); } } template @@ -6878,44 +6707,23 @@ std::pair -class ChildThriftPath<::std::vector<::facebook::fboss::cfg::TransceiverConfigOverride>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : - public Path< - ::std::vector<::facebook::fboss::cfg::TransceiverConfigOverride>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::TransceiverConfigOverride>>, - Parent> { - public: - using Self = Path< - ::std::vector<::facebook::fboss::cfg::TransceiverConfigOverride>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::TransceiverConfigOverride>>, - Parent>; - using Child = ChildThriftPath<::facebook::fboss::cfg::TransceiverConfigOverride, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; - using Self::Self; - - CONTAINER_CHILD_GETTERS(::std::int32_t); -}; - template -class ChildThriftPath<::facebook::fboss::cfg::Ttl, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::state::SetTc, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::cfg::Ttl, + ::facebook::fboss::state::SetTc, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::Ttl>, + ::apache::thrift::type::struct_t<::facebook::fboss::state::SetTc>, Parent> { public: using Self = Path< - ::facebook::fboss::cfg::Ttl, + ::facebook::fboss::state::SetTc, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::Ttl>, + ::apache::thrift::type::struct_t<::facebook::fboss::state::SetTc>, Parent>; - using strings = ::facebook::fboss::cfg::switch_config_tags::strings; + using strings = ::facebook::fboss::state::switch_state_tags::strings; template using Child = Path< ChildType, @@ -6924,25 +6732,25 @@ class ChildThriftPath<::facebook::fboss::cfg::Ttl, ::facebook::fboss::fsdb::Fsdb ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>>; - using ChildrenById = fatal::tuple< std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, - std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>>; + using Children = fatal::tuple>, +std::pair>>; + using ChildrenById = fatal::tuple< std::pair, ChildThriftPath<::facebook::fboss::cfg::SetTcAction, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, Child>>; template - using NameToId = fatal::tuple>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(value, 1); - STRUCT_CHILD_GETTERS(mask, 2); + STRUCT_CHILD_GETTERS(action, 1); + STRUCT_CHILD_GETTERS(sendToCPU, 2); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return value(); } - else if constexpr (__id == 2) { return mask(); } + if constexpr (__id == 1) { return action(); } + else if constexpr (__id == 2) { return sendToCPU(); } } template @@ -6951,44 +6759,23 @@ std::pair>> } }; -template -class ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::string, ::facebook::fboss::state::IpTunnelFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : - public Path< - ::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::string, ::facebook::fboss::state::IpTunnelFields>>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>>, - ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::IpTunnelFields>>>, - Parent> { - public: - using Self = Path< - ::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::string, ::facebook::fboss::state::IpTunnelFields>>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>>, - ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::IpTunnelFields>>>, - Parent>; - using Child = ChildThriftPath<::std::map<::std::string, ::facebook::fboss::state::IpTunnelFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; - using Self::Self; - - CONTAINER_CHILD_GETTERS(::facebook::fboss::state::SwitchIdList); -}; - template -class ChildThriftPath<::facebook::fboss::cfg::UdfConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::phy::PinConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::cfg::UdfConfig, + ::facebook::fboss::phy::PinConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::UdfConfig>, + ::apache::thrift::type::struct_t<::facebook::fboss::phy::PinConfig>, Parent> { public: using Self = Path< - ::facebook::fboss::cfg::UdfConfig, + ::facebook::fboss::phy::PinConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::UdfConfig>, + ::apache::thrift::type::struct_t<::facebook::fboss::phy::PinConfig>, Parent>; - using strings = ::facebook::fboss::cfg::switch_config_tags::strings; + using strings = ::facebook::fboss::phy::phy_tags::strings; template using Child = Path< ChildType, @@ -6997,25 +6784,40 @@ class ChildThriftPath<::facebook::fboss::cfg::UdfConfig, ::facebook::fboss::fsdb ChildTag, Self >; - using Children = fatal::tuple, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; - using ChildrenById = fatal::tuple< std::pair, ChildThriftPath<::std::map<::std::string, ::facebook::fboss::cfg::UdfGroup>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::map<::std::string, ::facebook::fboss::cfg::UdfPacketMatcher>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + using Children = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>, +std::pair>>; + using ChildrenById = fatal::tuple< std::pair, ChildThriftPath<::facebook::fboss::phy::PinID, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::facebook::fboss::phy::TxSettings, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::facebook::fboss::phy::RxSettings, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::facebook::fboss::phy::LaneMap, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::facebook::fboss::phy::PolaritySwap, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; template - using NameToId = fatal::tuple>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(udfGroups, 1); - STRUCT_CHILD_GETTERS(udfPacketMatcher, 2); + STRUCT_CHILD_GETTERS(id, 1); + STRUCT_CHILD_GETTERS(tx, 2); + STRUCT_CHILD_GETTERS(rx, 3); + STRUCT_CHILD_GETTERS(laneMap, 4); + STRUCT_CHILD_GETTERS(polaritySwap, 5); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return udfGroups(); } - else if constexpr (__id == 2) { return udfPacketMatcher(); } + if constexpr (__id == 1) { return id(); } + else if constexpr (__id == 2) { return tx(); } + else if constexpr (__id == 3) { return rx(); } + else if constexpr (__id == 4) { return laneMap(); } + else if constexpr (__id == 5) { return polaritySwap(); } } template @@ -7026,21 +6828,21 @@ std::pair -class ChildThriftPath<::facebook::fboss::phy::TxSettings, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::cfg::QosRule, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::phy::TxSettings, + ::facebook::fboss::cfg::QosRule, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::phy::TxSettings>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::QosRule>, Parent> { public: using Self = Path< - ::facebook::fboss::phy::TxSettings, + ::facebook::fboss::cfg::QosRule, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::phy::TxSettings>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::QosRule>, Parent>; - using strings = ::facebook::fboss::phy::phy_tags::strings; + using strings = ::facebook::fboss::cfg::switch_config_tags::strings; template using Child = Path< ChildType, @@ -7049,170 +6851,25 @@ class ChildThriftPath<::facebook::fboss::phy::TxSettings, ::facebook::fboss::fsd ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>>; + using Children = fatal::tuple>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; using ChildrenById = fatal::tuple< std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, - std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, - std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, - std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, - std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, - std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, - std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, - std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>>; + std::pair, ChildThriftPath<::std::vector<::std::int16_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(pre, 1); - STRUCT_CHILD_GETTERS(pre2, 2); - STRUCT_CHILD_GETTERS(main, 3); - STRUCT_CHILD_GETTERS(post, 4); - STRUCT_CHILD_GETTERS(post2, 5); - STRUCT_CHILD_GETTERS(post3, 6); - STRUCT_CHILD_GETTERS(lutMode, 7); - STRUCT_CHILD_GETTERS(driveCurrent, 8); - STRUCT_CHILD_GETTERS(diffEncoderEn, 9); - STRUCT_CHILD_GETTERS(digGain, 10); - STRUCT_CHILD_GETTERS(ffeCoeff0, 11); - STRUCT_CHILD_GETTERS(ffeCoeff1, 12); - STRUCT_CHILD_GETTERS(ffeCoeff2, 13); - STRUCT_CHILD_GETTERS(ffeCoeff3, 14); - STRUCT_CHILD_GETTERS(ffeCoeff4, 15); - STRUCT_CHILD_GETTERS(parityEncoderEn, 16); - STRUCT_CHILD_GETTERS(thpEn, 17); - STRUCT_CHILD_GETTERS(setPrecode, 18); - STRUCT_CHILD_GETTERS(pre3, 19); - STRUCT_CHILD_GETTERS(driverSwing, 20); - STRUCT_CHILD_GETTERS(innerEyeNeg, 21); - STRUCT_CHILD_GETTERS(innerEyePos, 22); - STRUCT_CHILD_GETTERS(ffeCoeff5, 23); - STRUCT_CHILD_GETTERS(ldoBypass, 24); - STRUCT_CHILD_GETTERS(firPre1, 25); - STRUCT_CHILD_GETTERS(firPre2, 26); - STRUCT_CHILD_GETTERS(firPre3, 27); - STRUCT_CHILD_GETTERS(firMain, 28); - STRUCT_CHILD_GETTERS(firPost1, 29); - STRUCT_CHILD_GETTERS(firPost2, 30); - STRUCT_CHILD_GETTERS(firPost3, 31); + STRUCT_CHILD_GETTERS(queueId, 1); + STRUCT_CHILD_GETTERS(dscp, 2); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return pre(); } - else if constexpr (__id == 2) { return pre2(); } - else if constexpr (__id == 3) { return main(); } - else if constexpr (__id == 4) { return post(); } - else if constexpr (__id == 5) { return post2(); } - else if constexpr (__id == 6) { return post3(); } - else if constexpr (__id == 7) { return lutMode(); } - else if constexpr (__id == 8) { return driveCurrent(); } - else if constexpr (__id == 9) { return diffEncoderEn(); } - else if constexpr (__id == 10) { return digGain(); } - else if constexpr (__id == 11) { return ffeCoeff0(); } - else if constexpr (__id == 12) { return ffeCoeff1(); } - else if constexpr (__id == 13) { return ffeCoeff2(); } - else if constexpr (__id == 14) { return ffeCoeff3(); } - else if constexpr (__id == 15) { return ffeCoeff4(); } - else if constexpr (__id == 16) { return parityEncoderEn(); } - else if constexpr (__id == 17) { return thpEn(); } - else if constexpr (__id == 18) { return setPrecode(); } - else if constexpr (__id == 19) { return pre3(); } - else if constexpr (__id == 20) { return driverSwing(); } - else if constexpr (__id == 21) { return innerEyeNeg(); } - else if constexpr (__id == 22) { return innerEyePos(); } - else if constexpr (__id == 23) { return ffeCoeff5(); } - else if constexpr (__id == 24) { return ldoBypass(); } - else if constexpr (__id == 25) { return firPre1(); } - else if constexpr (__id == 26) { return firPre2(); } - else if constexpr (__id == 27) { return firPre3(); } - else if constexpr (__id == 28) { return firMain(); } - else if constexpr (__id == 29) { return firPost1(); } - else if constexpr (__id == 30) { return firPost2(); } - else if constexpr (__id == 31) { return firPost3(); } + if constexpr (__id == 1) { return queueId(); } + else if constexpr (__id == 2) { return dscp(); } } template @@ -7222,43 +6879,64 @@ std::pair -class ChildThriftPath<::std::set<::facebook::fboss::cfg::IPv6Field>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::map<::std::int64_t, ::facebook::fboss::cfg::SwitchType>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::set<::facebook::fboss::cfg::IPv6Field>, + ::std::map<::std::int64_t, ::facebook::fboss::cfg::SwitchType>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::set<::apache::thrift::type_class::enumeration>, - ::apache::thrift::type::set<::apache::thrift::type::enum_t<::facebook::fboss::cfg::IPv6Field>>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::enumeration>, + ::apache::thrift::type::map<::apache::thrift::type::i64_t, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::SwitchType>>, Parent> { public: using Self = Path< - ::std::set<::facebook::fboss::cfg::IPv6Field>, + ::std::map<::std::int64_t, ::facebook::fboss::cfg::SwitchType>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::set<::apache::thrift::type_class::enumeration>, - ::apache::thrift::type::set<::apache::thrift::type::enum_t<::facebook::fboss::cfg::IPv6Field>>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::enumeration>, + ::apache::thrift::type::map<::apache::thrift::type::i64_t, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::SwitchType>>, Parent>; - using Child = Path<::facebook::fboss::cfg::IPv6Field, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::IPv6Field>, Self>; + using Child = Path<::facebook::fboss::cfg::SwitchType, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::SwitchType>, Self>; using Self::Self; - CONTAINER_CHILD_GETTERS(::facebook::fboss::cfg::IPv6Field); + CONTAINER_CHILD_GETTERS(::std::int64_t); +}; + +template +class ChildThriftPath<::std::vector<::facebook::fboss::cfg::Range64>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : + public Path< + ::std::vector<::facebook::fboss::cfg::Range64>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::Range64>>, + Parent> { + public: + using Self = Path< + ::std::vector<::facebook::fboss::cfg::Range64>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::Range64>>, + Parent>; + using Child = ChildThriftPath<::facebook::fboss::cfg::Range64, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Self::Self; + + CONTAINER_CHILD_GETTERS(::std::int32_t); }; template -class ChildThriftPath<::facebook::fboss::cfg::LoadBalancer, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::MplsAction, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::cfg::LoadBalancer, + ::facebook::fboss::MplsAction, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::LoadBalancer>, + ::apache::thrift::type::struct_t<::facebook::fboss::MplsAction>, Parent> { public: using Self = Path< - ::facebook::fboss::cfg::LoadBalancer, + ::facebook::fboss::MplsAction, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::LoadBalancer>, + ::apache::thrift::type::struct_t<::facebook::fboss::MplsAction>, Parent>; - using strings = ::facebook::fboss::cfg::switch_config_tags::strings; + using strings = ::facebook::fboss::mpls_tags::strings; template using Child = Path< ChildType, @@ -7267,35 +6945,30 @@ class ChildThriftPath<::facebook::fboss::cfg::LoadBalancer, ::facebook::fboss::f ChildTag, Self >; - using Children = fatal::tuple>>, -std::pair>, -std::pair>>, -std::pair>>; - using ChildrenById = fatal::tuple< std::pair, Child<::facebook::fboss::cfg::LoadBalancerID, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::LoadBalancerID>>>, - std::pair, ChildThriftPath<::facebook::fboss::cfg::Fields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, Child<::facebook::fboss::cfg::HashingAlgorithm, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::HashingAlgorithm>>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>>; + using Children = fatal::tuple>>, +std::pair>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + using ChildrenById = fatal::tuple< std::pair, Child<::facebook::fboss::MplsActionCode, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::MplsActionCode>>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, ChildThriftPath<::std::vector<::std::int32_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(id, 1); - STRUCT_CHILD_GETTERS(fieldSelection, 2); - STRUCT_CHILD_GETTERS(algorithm, 3); - STRUCT_CHILD_GETTERS(seed, 4); + STRUCT_CHILD_GETTERS(action, 1); + STRUCT_CHILD_GETTERS(swapLabel, 2); + STRUCT_CHILD_GETTERS(pushLabels, 3); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return id(); } - else if constexpr (__id == 2) { return fieldSelection(); } - else if constexpr (__id == 3) { return algorithm(); } - else if constexpr (__id == 4) { return seed(); } + if constexpr (__id == 1) { return action(); } + else if constexpr (__id == 2) { return swapLabel(); } + else if constexpr (__id == 3) { return pushLabels(); } } template @@ -7304,44 +6977,23 @@ std::pair>> } }; -template -class ChildThriftPath<::std::vector<::facebook::fboss::cfg::MatchToAction>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : - public Path< - ::std::vector<::facebook::fboss::cfg::MatchToAction>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::MatchToAction>>, - Parent> { - public: - using Self = Path< - ::std::vector<::facebook::fboss::cfg::MatchToAction>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::MatchToAction>>, - Parent>; - using Child = ChildThriftPath<::facebook::fboss::cfg::MatchToAction, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; - using Self::Self; - - CONTAINER_CHILD_GETTERS(::std::int32_t); -}; - template -class ChildThriftPath<::facebook::fboss::cfg::PortNeighbor, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::state::RouteNextHopEntry, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::cfg::PortNeighbor, + ::facebook::fboss::state::RouteNextHopEntry, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::PortNeighbor>, + ::apache::thrift::type::struct_t<::facebook::fboss::state::RouteNextHopEntry>, Parent> { public: using Self = Path< - ::facebook::fboss::cfg::PortNeighbor, + ::facebook::fboss::state::RouteNextHopEntry, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::PortNeighbor>, + ::apache::thrift::type::struct_t<::facebook::fboss::state::RouteNextHopEntry>, Parent>; - using strings = ::facebook::fboss::cfg::switch_config_tags::strings; + using strings = ::facebook::fboss::state::switch_state_tags::strings; template using Child = Path< ChildType, @@ -7350,25 +7002,40 @@ class ChildThriftPath<::facebook::fboss::cfg::PortNeighbor, ::facebook::fboss::f ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>>; - using ChildrenById = fatal::tuple< std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>>; + using Children = fatal::tuple>>, +std::pair>>, +std::pair>, +std::pair>>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + using ChildrenById = fatal::tuple< std::pair, Child<::facebook::fboss::AdminDistance, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::AdminDistance>>>, + std::pair, Child<::facebook::fboss::RouteForwardAction, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::RouteForwardAction>>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, Child<::facebook::fboss::cfg::AclLookupClass, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::AclLookupClass>>>, + std::pair, ChildThriftPath<::std::vector<::facebook::fboss::NextHopThrift>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; template - using NameToId = fatal::tuple>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(remoteSystem, 1); - STRUCT_CHILD_GETTERS(remotePort, 2); + STRUCT_CHILD_GETTERS(adminDistance, 1); + STRUCT_CHILD_GETTERS(action, 2); + STRUCT_CHILD_GETTERS(counterID, 3); + STRUCT_CHILD_GETTERS(classID, 4); + STRUCT_CHILD_GETTERS(nexthops, 5); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return remoteSystem(); } - else if constexpr (__id == 2) { return remotePort(); } + if constexpr (__id == 1) { return adminDistance(); } + else if constexpr (__id == 2) { return action(); } + else if constexpr (__id == 3) { return counterID(); } + else if constexpr (__id == 4) { return classID(); } + else if constexpr (__id == 5) { return nexthops(); } } template @@ -7379,21 +7046,21 @@ std::pair -class ChildThriftPath<::facebook::fboss::phy::PolaritySwap, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::cfg::UdfPacketMatcher, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::phy::PolaritySwap, + ::facebook::fboss::cfg::UdfPacketMatcher, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::phy::PolaritySwap>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::UdfPacketMatcher>, Parent> { public: using Self = Path< - ::facebook::fboss::phy::PolaritySwap, + ::facebook::fboss::cfg::UdfPacketMatcher, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::phy::PolaritySwap>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::UdfPacketMatcher>, Parent>; - using strings = ::facebook::fboss::phy::phy_tags::strings; + using strings = ::facebook::fboss::cfg::switch_config_tags::strings; template using Child = Path< ChildType, @@ -7402,25 +7069,40 @@ class ChildThriftPath<::facebook::fboss::phy::PolaritySwap, ::facebook::fboss::f ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>>; - using ChildrenById = fatal::tuple< std::pair, Child>, - std::pair, Child>>; + using Children = fatal::tuple>, +std::pair>>, +std::pair>>, +std::pair>>, +std::pair>>; + using ChildrenById = fatal::tuple< std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, Child<::facebook::fboss::cfg::UdfMatchL2Type, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::UdfMatchL2Type>>>, + std::pair, Child<::facebook::fboss::cfg::UdfMatchL3Type, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::UdfMatchL3Type>>>, + std::pair, Child<::facebook::fboss::cfg::UdfMatchL4Type, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::UdfMatchL4Type>>>, + std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>>; template - using NameToId = fatal::tuple>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(rx, 1); - STRUCT_CHILD_GETTERS(tx, 2); + STRUCT_CHILD_GETTERS(name, 1); + STRUCT_CHILD_GETTERS(l2PktType, 2); + STRUCT_CHILD_GETTERS(l3pktType, 3); + STRUCT_CHILD_GETTERS(l4PktType, 4); + STRUCT_CHILD_GETTERS(UdfL4DstPort, 5); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return rx(); } - else if constexpr (__id == 2) { return tx(); } + if constexpr (__id == 1) { return name(); } + else if constexpr (__id == 2) { return l2PktType(); } + else if constexpr (__id == 3) { return l3pktType(); } + else if constexpr (__id == 4) { return l4PktType(); } + else if constexpr (__id == 5) { return UdfL4DstPort(); } } template @@ -7429,23 +7111,86 @@ std::pair>>:: } }; +template +class ChildThriftPath<::std::vector<::facebook::fboss::cfg::AclTableActionType>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : + public Path< + ::std::vector<::facebook::fboss::cfg::AclTableActionType>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::list<::apache::thrift::type_class::enumeration>, + ::apache::thrift::type::list<::apache::thrift::type::enum_t<::facebook::fboss::cfg::AclTableActionType>>, + Parent> { + public: + using Self = Path< + ::std::vector<::facebook::fboss::cfg::AclTableActionType>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::list<::apache::thrift::type_class::enumeration>, + ::apache::thrift::type::list<::apache::thrift::type::enum_t<::facebook::fboss::cfg::AclTableActionType>>, + Parent>; + using Child = Path<::facebook::fboss::cfg::AclTableActionType, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::AclTableActionType>, Self>; + using Self::Self; + + CONTAINER_CHILD_GETTERS(::std::int32_t); +}; + +template +class ChildThriftPath<::std::map<::facebook::fboss::cfg::LoadBalancerID, ::facebook::fboss::state::LoadBalancerFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : + public Path< + ::std::map<::facebook::fboss::cfg::LoadBalancerID, ::facebook::fboss::state::LoadBalancerFields>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::map<::apache::thrift::type_class::enumeration, ::apache::thrift::type_class::structure>, + ::apache::thrift::type::map<::apache::thrift::type::enum_t<::facebook::fboss::cfg::LoadBalancerID>, ::apache::thrift::type::struct_t<::facebook::fboss::state::LoadBalancerFields>>, + Parent> { + public: + using Self = Path< + ::std::map<::facebook::fboss::cfg::LoadBalancerID, ::facebook::fboss::state::LoadBalancerFields>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::map<::apache::thrift::type_class::enumeration, ::apache::thrift::type_class::structure>, + ::apache::thrift::type::map<::apache::thrift::type::enum_t<::facebook::fboss::cfg::LoadBalancerID>, ::apache::thrift::type::struct_t<::facebook::fboss::state::LoadBalancerFields>>, + Parent>; + using Child = ChildThriftPath<::facebook::fboss::state::LoadBalancerFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Self::Self; + + CONTAINER_CHILD_GETTERS(::facebook::fboss::cfg::LoadBalancerID); +}; template -class ChildThriftPath<::facebook::fboss::state::NeighborResponseEntryFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::vector<::facebook::fboss::cfg::QosPolicy>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::state::NeighborResponseEntryFields, + ::std::vector<::facebook::fboss::cfg::QosPolicy>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::QosPolicy>>, + Parent> { + public: + using Self = Path< + ::std::vector<::facebook::fboss::cfg::QosPolicy>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::QosPolicy>>, + Parent>; + using Child = ChildThriftPath<::facebook::fboss::cfg::QosPolicy, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Self::Self; + + CONTAINER_CHILD_GETTERS(::std::int32_t); +}; + + +template +class ChildThriftPath<::facebook::fboss::bcm::BcmConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : + public Path< + ::facebook::fboss::bcm::BcmConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::state::NeighborResponseEntryFields>, + ::apache::thrift::type::struct_t<::facebook::fboss::bcm::BcmConfig>, Parent> { public: using Self = Path< - ::facebook::fboss::state::NeighborResponseEntryFields, + ::facebook::fboss::bcm::BcmConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::state::NeighborResponseEntryFields>, + ::apache::thrift::type::struct_t<::facebook::fboss::bcm::BcmConfig>, Parent>; - using strings = ::facebook::fboss::state::switch_state_tags::strings; + using strings = ::facebook::fboss::bcm::bcm_config_tags::strings; template using Child = Path< ChildType, @@ -7454,30 +7199,25 @@ class ChildThriftPath<::facebook::fboss::state::NeighborResponseEntryFields, ::f ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>, -std::pair>>; - using ChildrenById = fatal::tuple< std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>>; + using Children = fatal::tuple, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair>>; + using ChildrenById = fatal::tuple< std::pair, ChildThriftPath<::std::map<::std::string, ::std::string>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>>; template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(ipAddress, 1); - STRUCT_CHILD_GETTERS(mac, 2); - STRUCT_CHILD_GETTERS(interfaceId, 3); + STRUCT_CHILD_GETTERS(config, 1); + STRUCT_CHILD_GETTERS(yamlConfig, 2); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return ipAddress(); } - else if constexpr (__id == 2) { return mac(); } - else if constexpr (__id == 3) { return interfaceId(); } + if constexpr (__id == 1) { return config(); } + else if constexpr (__id == 2) { return yamlConfig(); } } template @@ -7487,127 +7227,43 @@ std::pair -class ChildThriftPath<::std::set<::facebook::fboss::cfg::TransportField>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::vector<::facebook::fboss::cfg::ExactMatchTableConfig>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::set<::facebook::fboss::cfg::TransportField>, + ::std::vector<::facebook::fboss::cfg::ExactMatchTableConfig>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::set<::apache::thrift::type_class::enumeration>, - ::apache::thrift::type::set<::apache::thrift::type::enum_t<::facebook::fboss::cfg::TransportField>>, + ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::ExactMatchTableConfig>>, Parent> { public: using Self = Path< - ::std::set<::facebook::fboss::cfg::TransportField>, + ::std::vector<::facebook::fboss::cfg::ExactMatchTableConfig>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::set<::apache::thrift::type_class::enumeration>, - ::apache::thrift::type::set<::apache::thrift::type::enum_t<::facebook::fboss::cfg::TransportField>>, + ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::ExactMatchTableConfig>>, Parent>; - using Child = Path<::facebook::fboss::cfg::TransportField, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::TransportField>, Self>; + using Child = ChildThriftPath<::facebook::fboss::cfg::ExactMatchTableConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; using Self::Self; - CONTAINER_CHILD_GETTERS(::facebook::fboss::cfg::TransportField); + CONTAINER_CHILD_GETTERS(::std::int32_t); }; + template -class ChildThriftPath<::std::map<::std::int32_t, ::std::string>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::cfg::QcmConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::map<::std::int32_t, ::std::string>, + ::facebook::fboss::cfg::QcmConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::string>, - ::apache::thrift::type::map<::apache::thrift::type::i32_t, ::apache::thrift::type::string_t>, + ::apache::thrift::type_class::structure, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::QcmConfig>, Parent> { public: using Self = Path< - ::std::map<::std::int32_t, ::std::string>, + ::facebook::fboss::cfg::QcmConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::string>, - ::apache::thrift::type::map<::apache::thrift::type::i32_t, ::apache::thrift::type::string_t>, + ::apache::thrift::type_class::structure, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::QcmConfig>, Parent>; - using Child = Path<::std::string, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t, Self>; - using Self::Self; - - CONTAINER_CHILD_GETTERS(::std::int32_t); -}; - -template -class ChildThriftPath<::std::vector<::facebook::fboss::cfg::AclTable>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : - public Path< - ::std::vector<::facebook::fboss::cfg::AclTable>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::AclTable>>, - Parent> { - public: - using Self = Path< - ::std::vector<::facebook::fboss::cfg::AclTable>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::AclTable>>, - Parent>; - using Child = ChildThriftPath<::facebook::fboss::cfg::AclTable, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; - using Self::Self; - - CONTAINER_CHILD_GETTERS(::std::int32_t); -}; - -template -class ChildThriftPath<::std::map<::facebook::fboss::cfg::PacketRxReason, ::std::int16_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : - public Path< - ::std::map<::facebook::fboss::cfg::PacketRxReason, ::std::int16_t>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::enumeration, ::apache::thrift::type_class::integral>, - ::apache::thrift::type::map<::apache::thrift::type::enum_t<::facebook::fboss::cfg::PacketRxReason>, ::apache::thrift::type::i16_t>, - Parent> { - public: - using Self = Path< - ::std::map<::facebook::fboss::cfg::PacketRxReason, ::std::int16_t>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::enumeration, ::apache::thrift::type_class::integral>, - ::apache::thrift::type::map<::apache::thrift::type::enum_t<::facebook::fboss::cfg::PacketRxReason>, ::apache::thrift::type::i16_t>, - Parent>; - using Child = Path<::std::int16_t, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t, Self>; - using Self::Self; - - CONTAINER_CHILD_GETTERS(::facebook::fboss::cfg::PacketRxReason); -}; - -template -class ChildThriftPath<::std::map<::std::int32_t, ::facebook::fboss::TcvrState>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : - public Path< - ::std::map<::std::int32_t, ::facebook::fboss::TcvrState>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>, - ::apache::thrift::type::map<::apache::thrift::type::i32_t, ::apache::thrift::type::struct_t<::facebook::fboss::TcvrState>>, - Parent> { - public: - using Self = Path< - ::std::map<::std::int32_t, ::facebook::fboss::TcvrState>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>, - ::apache::thrift::type::map<::apache::thrift::type::i32_t, ::apache::thrift::type::struct_t<::facebook::fboss::TcvrState>>, - Parent>; - using Child = ChildThriftPath<::facebook::fboss::TcvrState, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; - using Self::Self; - - CONTAINER_CHILD_GETTERS(::std::int32_t); -}; - - -template -class ChildThriftPath<::facebook::fboss::cfg::AsicConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : - public Path< - ::facebook::fboss::cfg::AsicConfig, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::AsicConfig>, - Parent> { - public: - using Self = Path< - ::facebook::fboss::cfg::AsicConfig, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::AsicConfig>, - Parent>; - using strings = ::facebook::fboss::cfg::asic_config_v2_tags::strings; + using strings = ::facebook::fboss::cfg::switch_config_tags::strings; template using Child = Path< ChildType, @@ -7616,25 +7272,95 @@ class ChildThriftPath<::facebook::fboss::cfg::AsicConfig, ::facebook::fboss::fsd ChildTag, Self >; - using Children = fatal::tuple>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; - using ChildrenById = fatal::tuple< std::pair, ChildThriftPath<::facebook::fboss::cfg::AsicConfigEntry, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::map<::std::int64_t, ::facebook::fboss::cfg::AsicConfigEntry>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + using Children = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair>>; + using ChildrenById = fatal::tuple< std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, ChildThriftPath<::std::map<::facebook::fboss::cfg::BurstMonitorWeight, ::std::int16_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, + std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, + std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, ChildThriftPath<::std::vector<::std::int32_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::map<::std::int32_t, ::std::vector<::std::int32_t>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, Child>>; template - using NameToId = fatal::tuple>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(common, 1); - STRUCT_CHILD_GETTERS(npuEntries, 2); + STRUCT_CHILD_GETTERS(numFlowSamplesPerView, 1); + STRUCT_CHILD_GETTERS(flowLimit, 2); + STRUCT_CHILD_GETTERS(numFlowsClear, 3); + STRUCT_CHILD_GETTERS(scanIntervalInUsecs, 4); + STRUCT_CHILD_GETTERS(exportThreshold, 5); + STRUCT_CHILD_GETTERS(flowWeights, 6); + STRUCT_CHILD_GETTERS(agingIntervalInMsecs, 7); + STRUCT_CHILD_GETTERS(collectorDstIp, 8); + STRUCT_CHILD_GETTERS(collectorSrcPort, 10); + STRUCT_CHILD_GETTERS(collectorDstPort, 11); + STRUCT_CHILD_GETTERS(collectorDscp, 12); + STRUCT_CHILD_GETTERS(ppsToQcm, 13); + STRUCT_CHILD_GETTERS(collectorSrcIp, 14); + STRUCT_CHILD_GETTERS(monitorQcmPortList, 15); + STRUCT_CHILD_GETTERS(port2QosQueueIds, 16); + STRUCT_CHILD_GETTERS(monitorQcmCfgPortsOnly, 17); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return common(); } - else if constexpr (__id == 2) { return npuEntries(); } + if constexpr (__id == 1) { return numFlowSamplesPerView(); } + else if constexpr (__id == 2) { return flowLimit(); } + else if constexpr (__id == 3) { return numFlowsClear(); } + else if constexpr (__id == 4) { return scanIntervalInUsecs(); } + else if constexpr (__id == 5) { return exportThreshold(); } + else if constexpr (__id == 6) { return flowWeights(); } + else if constexpr (__id == 7) { return agingIntervalInMsecs(); } + else if constexpr (__id == 8) { return collectorDstIp(); } + else if constexpr (__id == 10) { return collectorSrcPort(); } + else if constexpr (__id == 11) { return collectorDstPort(); } + else if constexpr (__id == 12) { return collectorDscp(); } + else if constexpr (__id == 13) { return ppsToQcm(); } + else if constexpr (__id == 14) { return collectorSrcIp(); } + else if constexpr (__id == 15) { return monitorQcmPortList(); } + else if constexpr (__id == 16) { return port2QosQueueIds(); } + else if constexpr (__id == 17) { return monitorQcmCfgPortsOnly(); } } template @@ -7643,44 +7369,23 @@ std::pair -class ChildThriftPath<::std::map<::std::string, ::facebook::fboss::phy::PhyState>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : - public Path< - ::std::map<::std::string, ::facebook::fboss::phy::PhyState>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>, - ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::phy::PhyState>>, - Parent> { - public: - using Self = Path< - ::std::map<::std::string, ::facebook::fboss::phy::PhyState>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>, - ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::phy::PhyState>>, - Parent>; - using Child = ChildThriftPath<::facebook::fboss::phy::PhyState, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; - using Self::Self; - - CONTAINER_CHILD_GETTERS(::std::string); -}; - template -class ChildThriftPath<::facebook::fboss::cfg::AgentConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::state::AggregatePortFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::cfg::AgentConfig, + ::facebook::fboss::state::AggregatePortFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::AgentConfig>, + ::apache::thrift::type::struct_t<::facebook::fboss::state::AggregatePortFields>, Parent> { public: using Self = Path< - ::facebook::fboss::cfg::AgentConfig, + ::facebook::fboss::state::AggregatePortFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::AgentConfig>, + ::apache::thrift::type::struct_t<::facebook::fboss::state::AggregatePortFields>, Parent>; - using strings = ::facebook::fboss::cfg::agent_config_tags::strings; + using strings = ::facebook::fboss::state::switch_state_tags::strings; template using Child = Path< ChildType, @@ -7689,95 +7394,88 @@ class ChildThriftPath<::facebook::fboss::cfg::AgentConfig, ::facebook::fboss::fs ChildTag, Self >; - using Children = fatal::tuple, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair>, -std::pair>>; - using ChildrenById = fatal::tuple< std::pair, ChildThriftPath<::std::map<::std::string, ::std::string>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::facebook::fboss::cfg::SwitchConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::facebook::fboss::cfg::PlatformConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + using Children = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + using ChildrenById = fatal::tuple< std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int64_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i64_t>>, + std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, + std::pair, ChildThriftPath<::std::vector<::facebook::fboss::state::Subport>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::map<::std::int32_t, bool>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::map<::std::int32_t, ::facebook::fboss::state::ParticipantInfo>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::vector<::std::int32_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(defaultCommandLineArgs, 1); - STRUCT_CHILD_GETTERS(sw, 2); - STRUCT_CHILD_GETTERS(platform, 3); - - template - auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return defaultCommandLineArgs(); } - else if constexpr (__id == 2) { return sw(); } - else if constexpr (__id == 3) { return platform(); } - } - - template + STRUCT_CHILD_GETTERS(id, 1); + STRUCT_CHILD_GETTERS(name, 2); + STRUCT_CHILD_GETTERS(description, 3); + STRUCT_CHILD_GETTERS(systemPriority, 4); + STRUCT_CHILD_GETTERS(systemID, 5); + STRUCT_CHILD_GETTERS(minimumLinkCount, 6); + STRUCT_CHILD_GETTERS(ports, 7); + STRUCT_CHILD_GETTERS(portToFwdState, 8); + STRUCT_CHILD_GETTERS(portToPartnerState, 9); + STRUCT_CHILD_GETTERS(interfaceIDs, 10); + + template + auto operator()(const std::integral_constant&) { + if constexpr (__id == 1) { return id(); } + else if constexpr (__id == 2) { return name(); } + else if constexpr (__id == 3) { return description(); } + else if constexpr (__id == 4) { return systemPriority(); } + else if constexpr (__id == 5) { return systemID(); } + else if constexpr (__id == 6) { return minimumLinkCount(); } + else if constexpr (__id == 7) { return ports(); } + else if constexpr (__id == 8) { return portToFwdState(); } + else if constexpr (__id == 9) { return portToPartnerState(); } + else if constexpr (__id == 10) { return interfaceIDs(); } + } + + template auto operator()(const fatal::sequence&) { return operator()(NameToId>()); } }; -template -class ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::int16_t, ::facebook::fboss::state::AggregatePortFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : - public Path< - ::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::int16_t, ::facebook::fboss::state::AggregatePortFields>>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>>, - ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::map<::apache::thrift::type::i16_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::AggregatePortFields>>>, - Parent> { - public: - using Self = Path< - ::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::int16_t, ::facebook::fboss::state::AggregatePortFields>>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>>, - ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::map<::apache::thrift::type::i16_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::AggregatePortFields>>>, - Parent>; - using Child = ChildThriftPath<::std::map<::std::int16_t, ::facebook::fboss::state::AggregatePortFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; - using Self::Self; - - CONTAINER_CHILD_GETTERS(::facebook::fboss::state::SwitchIdList); -}; - -template -class ChildThriftPath<::std::map<::std::int16_t, ::facebook::fboss::state::TransceiverSpecFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : - public Path< - ::std::map<::std::int16_t, ::facebook::fboss::state::TransceiverSpecFields>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>, - ::apache::thrift::type::map<::apache::thrift::type::i16_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::TransceiverSpecFields>>, - Parent> { - public: - using Self = Path< - ::std::map<::std::int16_t, ::facebook::fboss::state::TransceiverSpecFields>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>, - ::apache::thrift::type::map<::apache::thrift::type::i16_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::TransceiverSpecFields>>, - Parent>; - using Child = ChildThriftPath<::facebook::fboss::state::TransceiverSpecFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; - using Self::Self; - - CONTAINER_CHILD_GETTERS(::std::int16_t); -}; - template -class ChildThriftPath<::facebook::fboss::cfg::AclTableGroup, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::cfg::MacAndVlan, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::cfg::AclTableGroup, + ::facebook::fboss::cfg::MacAndVlan, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::AclTableGroup>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::MacAndVlan>, Parent> { public: using Self = Path< - ::facebook::fboss::cfg::AclTableGroup, + ::facebook::fboss::cfg::MacAndVlan, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::AclTableGroup>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::MacAndVlan>, Parent>; using strings = ::facebook::fboss::cfg::switch_config_tags::strings; template @@ -7788,30 +7486,25 @@ class ChildThriftPath<::facebook::fboss::cfg::AclTableGroup, ::facebook::fboss:: ChildTag, Self >; - using Children = fatal::tuple>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair>>>; - using ChildrenById = fatal::tuple< std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::AclTable>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, Child<::facebook::fboss::cfg::AclStage, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::AclStage>>>>; + using Children = fatal::tuple>, +std::pair>>; + using ChildrenById = fatal::tuple< std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>>; template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(name, 1); - STRUCT_CHILD_GETTERS(aclTables, 2); - STRUCT_CHILD_GETTERS(stage, 3); + STRUCT_CHILD_GETTERS(vlanID, 1); + STRUCT_CHILD_GETTERS(macAddress, 2); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return name(); } - else if constexpr (__id == 2) { return aclTables(); } - else if constexpr (__id == 3) { return stage(); } + if constexpr (__id == 1) { return vlanID(); } + else if constexpr (__id == 2) { return macAddress(); } } template @@ -7820,42 +7513,21 @@ std::pair> } }; -template -class ChildThriftPath<::std::vector<::facebook::fboss::MediaLaneSettings>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : - public Path< - ::std::vector<::facebook::fboss::MediaLaneSettings>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::MediaLaneSettings>>, - Parent> { - public: - using Self = Path< - ::std::vector<::facebook::fboss::MediaLaneSettings>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::MediaLaneSettings>>, - Parent>; - using Child = ChildThriftPath<::facebook::fboss::MediaLaneSettings, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; - using Self::Self; - - CONTAINER_CHILD_GETTERS(::std::int32_t); -}; - template -class ChildThriftPath<::facebook::fboss::cfg::SdkVersion, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::cfg::QueueMatchAction, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::cfg::SdkVersion, + ::facebook::fboss::cfg::QueueMatchAction, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::SdkVersion>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::QueueMatchAction>, Parent> { public: using Self = Path< - ::facebook::fboss::cfg::SdkVersion, + ::facebook::fboss::cfg::QueueMatchAction, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::SdkVersion>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::QueueMatchAction>, Parent>; using strings = ::facebook::fboss::cfg::switch_config_tags::strings; template @@ -7866,30 +7538,20 @@ class ChildThriftPath<::facebook::fboss::cfg::SdkVersion, ::facebook::fboss::fsd ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>, -std::pair>>; - using ChildrenById = fatal::tuple< std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>>; + using Children = fatal::tuple>>; + using ChildrenById = fatal::tuple< std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>>; template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(asicSdk, 1); - STRUCT_CHILD_GETTERS(saiSdk, 2); - STRUCT_CHILD_GETTERS(firmware, 3); + STRUCT_CHILD_GETTERS(queueId, 1); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return asicSdk(); } - else if constexpr (__id == 2) { return saiSdk(); } - else if constexpr (__id == 3) { return firmware(); } + if constexpr (__id == 1) { return queueId(); } } template @@ -7900,21 +7562,21 @@ std::pair -class ChildThriftPath<::facebook::fboss::state::RoutePrefix, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::cfg::PacketCounterMatchAction, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::state::RoutePrefix, + ::facebook::fboss::cfg::PacketCounterMatchAction, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::state::RoutePrefix>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::PacketCounterMatchAction>, Parent> { public: using Self = Path< - ::facebook::fboss::state::RoutePrefix, + ::facebook::fboss::cfg::PacketCounterMatchAction, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::state::RoutePrefix>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::PacketCounterMatchAction>, Parent>; - using strings = ::facebook::fboss::state::switch_state_tags::strings; + using strings = ::facebook::fboss::cfg::switch_config_tags::strings; template using Child = Path< ChildType, @@ -7923,30 +7585,20 @@ class ChildThriftPath<::facebook::fboss::state::RoutePrefix, ::facebook::fboss:: ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>, -std::pair>>; - using ChildrenById = fatal::tuple< std::pair, Child>, - std::pair, ChildThriftPath<::facebook::network::thrift::BinaryAddress, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, Child<::std::int8_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::byte_t>>>; + using Children = fatal::tuple>>; + using ChildrenById = fatal::tuple< std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>>; template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(v6, 1); - STRUCT_CHILD_GETTERS(prefix, 2); - STRUCT_CHILD_GETTERS(mask, 3); + STRUCT_CHILD_GETTERS(counterName, 1); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return v6(); } - else if constexpr (__id == 2) { return prefix(); } - else if constexpr (__id == 3) { return mask(); } + if constexpr (__id == 1) { return counterName(); } } template @@ -7955,80 +7607,44 @@ std::pair>> } }; - template -class ChildThriftPath<::facebook::fboss::state::ControlPlaneFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::map<::facebook::fboss::cfg::PortPgConfigName, ::std::vector<::facebook::fboss::cfg::PortPgConfig>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::state::ControlPlaneFields, + ::std::map<::facebook::fboss::cfg::PortPgConfigName, ::std::vector<::facebook::fboss::cfg::PortPgConfig>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::state::ControlPlaneFields>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::PortPgConfig>>>, Parent> { public: using Self = Path< - ::facebook::fboss::state::ControlPlaneFields, + ::std::map<::facebook::fboss::cfg::PortPgConfigName, ::std::vector<::facebook::fboss::cfg::PortPgConfig>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::state::ControlPlaneFields>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::PortPgConfig>>>, Parent>; - using strings = ::facebook::fboss::state::switch_state_tags::strings; - template - using Child = Path< - ChildType, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ChildTC, - ChildTag, - Self - >; - using Children = fatal::tuple, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair>>; - using ChildrenById = fatal::tuple< std::pair, ChildThriftPath<::std::vector<::facebook::fboss::PortQueueFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::PacketRxReasonToQueue>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>>; - template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>>::template type_of; - - template - using TypeFor = typename Children::template type_of; + using Child = ChildThriftPath<::std::vector<::facebook::fboss::cfg::PortPgConfig>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; using Self::Self; - - STRUCT_CHILD_GETTERS(queues, 1); - STRUCT_CHILD_GETTERS(rxReasonToQueue, 2); - STRUCT_CHILD_GETTERS(defaultQosPolicy, 3); - - template - auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return queues(); } - else if constexpr (__id == 2) { return rxReasonToQueue(); } - else if constexpr (__id == 3) { return defaultQosPolicy(); } - } - template - auto operator()(const fatal::sequence&) { - return operator()(NameToId>()); - } + CONTAINER_CHILD_GETTERS(::facebook::fboss::cfg::PortPgConfigName); }; template -class ChildThriftPath<::facebook::fboss::state::TransceiverSpecFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::cfg::Fields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::state::TransceiverSpecFields, + ::facebook::fboss::cfg::Fields, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::state::TransceiverSpecFields>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::Fields>, Parent> { public: using Self = Path< - ::facebook::fboss::state::TransceiverSpecFields, + ::facebook::fboss::cfg::Fields, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::state::TransceiverSpecFields>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::Fields>, Parent>; - using strings = ::facebook::fboss::state::switch_state_tags::strings; + using strings = ::facebook::fboss::cfg::switch_config_tags::strings; template using Child = Path< ChildType, @@ -8037,35 +7653,40 @@ class ChildThriftPath<::facebook::fboss::state::TransceiverSpecFields, ::faceboo ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>, -std::pair>>, -std::pair>>>; - using ChildrenById = fatal::tuple< std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, - std::pair, Child>, - std::pair, Child<::facebook::fboss::MediaInterfaceCode, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::MediaInterfaceCode>>>, - std::pair, Child<::facebook::fboss::TransceiverManagementInterface, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::TransceiverManagementInterface>>>>; + using Children = fatal::tuple, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + using ChildrenById = fatal::tuple< std::pair, ChildThriftPath<::std::set<::facebook::fboss::cfg::IPv4Field>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::set<::facebook::fboss::cfg::IPv6Field>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::set<::facebook::fboss::cfg::TransportField>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::set<::facebook::fboss::cfg::MPLSField>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::vector<::std::string>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(id, 1); - STRUCT_CHILD_GETTERS(cableLength, 2); - STRUCT_CHILD_GETTERS(mediaInterface, 3); - STRUCT_CHILD_GETTERS(managementInterface, 4); + STRUCT_CHILD_GETTERS(ipv4Fields, 1); + STRUCT_CHILD_GETTERS(ipv6Fields, 2); + STRUCT_CHILD_GETTERS(transportFields, 3); + STRUCT_CHILD_GETTERS(mplsFields, 4); + STRUCT_CHILD_GETTERS(udfGroups, 5); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return id(); } - else if constexpr (__id == 2) { return cableLength(); } - else if constexpr (__id == 3) { return mediaInterface(); } - else if constexpr (__id == 4) { return managementInterface(); } + if constexpr (__id == 1) { return ipv4Fields(); } + else if constexpr (__id == 2) { return ipv6Fields(); } + else if constexpr (__id == 3) { return transportFields(); } + else if constexpr (__id == 4) { return mplsFields(); } + else if constexpr (__id == 5) { return udfGroups(); } } template @@ -8074,23 +7695,44 @@ std::pair +class ChildThriftPath<::std::vector<::facebook::fboss::cfg::StaticRouteNoNextHops>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : + public Path< + ::std::vector<::facebook::fboss::cfg::StaticRouteNoNextHops>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::StaticRouteNoNextHops>>, + Parent> { + public: + using Self = Path< + ::std::vector<::facebook::fboss::cfg::StaticRouteNoNextHops>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::StaticRouteNoNextHops>>, + Parent>; + using Child = ChildThriftPath<::facebook::fboss::cfg::StaticRouteNoNextHops, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Self::Self; + + CONTAINER_CHILD_GETTERS(::std::int32_t); +}; + template -class ChildThriftPath<::facebook::fboss::TransceiverAttributes, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::cfg::ChipConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::TransceiverAttributes, + ::facebook::fboss::cfg::ChipConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::TransceiverAttributes>, + ::apache::thrift::type_class::variant, + ::apache::thrift::type::union_t<::facebook::fboss::cfg::ChipConfig>, Parent> { public: using Self = Path< - ::facebook::fboss::TransceiverAttributes, + ::facebook::fboss::cfg::ChipConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::TransceiverAttributes>, + ::apache::thrift::type_class::variant, + ::apache::thrift::type::union_t<::facebook::fboss::cfg::ChipConfig>, Parent>; - using strings = ::facebook::fboss::transceiver_validation_tags::strings; + using strings = ::facebook::fboss::cfg::platform_config_tags::strings; template using Child = Path< ChildType, @@ -8099,30 +7741,30 @@ class ChildThriftPath<::facebook::fboss::TransceiverAttributes, ::facebook::fbos ChildTag, Self >; - using Children = fatal::tuple>>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; - using ChildrenById = fatal::tuple< std::pair, Child<::facebook::fboss::MediaInterfaceCode, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::MediaInterfaceCode>>>, - std::pair, ChildThriftPath<::std::vector<::facebook::fboss::FirmwarePair>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::PortProfileID>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + using Children = fatal::tuple>, +std::pair>, +std::pair>>; + using ChildrenById = fatal::tuple< std::pair, ChildThriftPath<::facebook::fboss::bcm::BcmConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::facebook::fboss::asic::AsicConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::facebook::fboss::cfg::AsicConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(mediaInterfaceCode, 1); - STRUCT_CHILD_GETTERS(supportedFirmwareVersions, 2); - STRUCT_CHILD_GETTERS(supportedPortProfiles, 3); + STRUCT_CHILD_GETTERS(bcm, 1); + STRUCT_CHILD_GETTERS(asic, 2); + STRUCT_CHILD_GETTERS(asicConfig, 3); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return mediaInterfaceCode(); } - else if constexpr (__id == 2) { return supportedFirmwareVersions(); } - else if constexpr (__id == 3) { return supportedPortProfiles(); } + if constexpr (__id == 1) { return bcm(); } + else if constexpr (__id == 2) { return asic(); } + else if constexpr (__id == 3) { return asicConfig(); } } template @@ -8133,19 +7775,19 @@ std::pair -class ChildThriftPath<::facebook::fboss::cfg::MatchToAction, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::cfg::QueueCongestionDetection, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::cfg::MatchToAction, + ::facebook::fboss::cfg::QueueCongestionDetection, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::MatchToAction>, + ::apache::thrift::type_class::variant, + ::apache::thrift::type::union_t<::facebook::fboss::cfg::QueueCongestionDetection>, Parent> { public: using Self = Path< - ::facebook::fboss::cfg::MatchToAction, + ::facebook::fboss::cfg::QueueCongestionDetection, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::MatchToAction>, + ::apache::thrift::type_class::variant, + ::apache::thrift::type::union_t<::facebook::fboss::cfg::QueueCongestionDetection>, Parent>; using strings = ::facebook::fboss::cfg::switch_config_tags::strings; template @@ -8156,25 +7798,20 @@ class ChildThriftPath<::facebook::fboss::cfg::MatchToAction, ::facebook::fboss:: ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>>; - using ChildrenById = fatal::tuple< std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, ChildThriftPath<::facebook::fboss::cfg::MatchAction, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + using Children = fatal::tuple>>; + using ChildrenById = fatal::tuple< std::pair, ChildThriftPath<::facebook::fboss::cfg::LinearQueueCongestionDetection, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; template - using NameToId = fatal::tuple>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(matcher, 1); - STRUCT_CHILD_GETTERS(action, 2); + STRUCT_CHILD_GETTERS(linear, 1); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return matcher(); } - else if constexpr (__id == 2) { return action(); } + if constexpr (__id == 1) { return linear(); } } template @@ -8183,86 +7820,188 @@ std::pair } }; + template -class ChildThriftPath<::std::map<::std::string, ::facebook::fboss::state::MirrorFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::cfg::Vlan, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::map<::std::string, ::facebook::fboss::state::MirrorFields>, + ::facebook::fboss::cfg::Vlan, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>, - ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::MirrorFields>>, + ::apache::thrift::type_class::structure, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::Vlan>, Parent> { public: using Self = Path< - ::std::map<::std::string, ::facebook::fboss::state::MirrorFields>, + ::facebook::fboss::cfg::Vlan, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>, - ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::MirrorFields>>, + ::apache::thrift::type_class::structure, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::Vlan>, Parent>; - using Child = ChildThriftPath<::facebook::fboss::state::MirrorFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using strings = ::facebook::fboss::cfg::switch_config_tags::strings; + template + using Child = Path< + ChildType, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ChildTC, + ChildTag, + Self + >; + using Children = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair>, +std::pair>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair>>; + using ChildrenById = fatal::tuple< std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child>, + std::pair, Child>, + std::pair, ChildThriftPath<::std::vector<::std::string>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, ChildThriftPath<::std::map<::std::string, ::std::string>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::map<::std::string, ::std::string>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>>; + template + using NameToId = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>>::template type_of; + + template + using TypeFor = typename Children::template type_of; using Self::Self; + + STRUCT_CHILD_GETTERS(name, 1); + STRUCT_CHILD_GETTERS(id, 2); + STRUCT_CHILD_GETTERS(recordStats, 3); + STRUCT_CHILD_GETTERS(routable, 5); + STRUCT_CHILD_GETTERS(ipAddresses, 6); + STRUCT_CHILD_GETTERS(dhcpRelayAddressV4, 7); + STRUCT_CHILD_GETTERS(dhcpRelayAddressV6, 8); + STRUCT_CHILD_GETTERS(dhcpRelayOverridesV4, 9); + STRUCT_CHILD_GETTERS(dhcpRelayOverridesV6, 10); + STRUCT_CHILD_GETTERS(intfID, 11); - CONTAINER_CHILD_GETTERS(::std::string); + template + auto operator()(const std::integral_constant&) { + if constexpr (__id == 1) { return name(); } + else if constexpr (__id == 2) { return id(); } + else if constexpr (__id == 3) { return recordStats(); } + else if constexpr (__id == 5) { return routable(); } + else if constexpr (__id == 6) { return ipAddresses(); } + else if constexpr (__id == 7) { return dhcpRelayAddressV4(); } + else if constexpr (__id == 8) { return dhcpRelayAddressV6(); } + else if constexpr (__id == 9) { return dhcpRelayOverridesV4(); } + else if constexpr (__id == 10) { return dhcpRelayOverridesV6(); } + else if constexpr (__id == 11) { return intfID(); } + } + + template + auto operator()(const fatal::sequence&) { + return operator()(NameToId>()); + } }; template -class ChildThriftPath<::std::map<::std::string, ::facebook::fboss::fsdb::FsdbSubscriptionState>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::vector<::std::int8_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::map<::std::string, ::facebook::fboss::fsdb::FsdbSubscriptionState>, + ::std::vector<::std::int8_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::enumeration>, - ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::enum_t<::facebook::fboss::fsdb::FsdbSubscriptionState>>, + ::apache::thrift::type_class::list<::apache::thrift::type_class::integral>, + ::apache::thrift::type::list<::apache::thrift::type::byte_t>, Parent> { public: using Self = Path< - ::std::map<::std::string, ::facebook::fboss::fsdb::FsdbSubscriptionState>, + ::std::vector<::std::int8_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::enumeration>, - ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::enum_t<::facebook::fboss::fsdb::FsdbSubscriptionState>>, + ::apache::thrift::type_class::list<::apache::thrift::type_class::integral>, + ::apache::thrift::type::list<::apache::thrift::type::byte_t>, Parent>; - using Child = Path<::facebook::fboss::fsdb::FsdbSubscriptionState, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::fsdb::FsdbSubscriptionState>, Self>; + using Child = Path<::std::int8_t, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::integral, ::apache::thrift::type::byte_t, Self>; using Self::Self; - CONTAINER_CHILD_GETTERS(::std::string); + CONTAINER_CHILD_GETTERS(::std::int32_t); }; + template -class ChildThriftPath<::std::map<::std::int16_t, ::facebook::fboss::state::FibContainerFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::cfg::RedirectNextHop, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::map<::std::int16_t, ::facebook::fboss::state::FibContainerFields>, + ::facebook::fboss::cfg::RedirectNextHop, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>, - ::apache::thrift::type::map<::apache::thrift::type::i16_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::FibContainerFields>>, + ::apache::thrift::type_class::structure, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::RedirectNextHop>, Parent> { public: using Self = Path< - ::std::map<::std::int16_t, ::facebook::fboss::state::FibContainerFields>, + ::facebook::fboss::cfg::RedirectNextHop, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>, - ::apache::thrift::type::map<::apache::thrift::type::i16_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::FibContainerFields>>, - Parent>; - using Child = ChildThriftPath<::facebook::fboss::state::FibContainerFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + ::apache::thrift::type_class::structure, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::RedirectNextHop>, + Parent>; + using strings = ::facebook::fboss::cfg::switch_config_tags::strings; + template + using Child = Path< + ChildType, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ChildTC, + ChildTag, + Self + >; + using Children = fatal::tuple>, +std::pair>>; + using ChildrenById = fatal::tuple< std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>>; + template + using NameToId = fatal::tuple>, +std::pair>>::template type_of; + + template + using TypeFor = typename Children::template type_of; using Self::Self; + + STRUCT_CHILD_GETTERS(ip, 1); + STRUCT_CHILD_GETTERS(intfID, 2); - CONTAINER_CHILD_GETTERS(::std::int16_t); + template + auto operator()(const std::integral_constant&) { + if constexpr (__id == 1) { return ip(); } + else if constexpr (__id == 2) { return intfID(); } + } + + template + auto operator()(const fatal::sequence&) { + return operator()(NameToId>()); + } }; template -class ChildThriftPath<::facebook::fboss::state::TrafficClassToQosAttributeEntry, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::NextHopThrift, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::state::TrafficClassToQosAttributeEntry, + ::facebook::fboss::NextHopThrift, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::state::TrafficClassToQosAttributeEntry>, + ::apache::thrift::type::struct_t<::facebook::fboss::NextHopThrift>, Parent> { public: using Self = Path< - ::facebook::fboss::state::TrafficClassToQosAttributeEntry, + ::facebook::fboss::NextHopThrift, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::state::TrafficClassToQosAttributeEntry>, + ::apache::thrift::type::struct_t<::facebook::fboss::NextHopThrift>, Parent>; - using strings = ::facebook::fboss::state::switch_state_tags::strings; + using strings = ::facebook::fboss::common_tags::strings; template using Child = Path< ChildType, @@ -8271,25 +8010,35 @@ class ChildThriftPath<::facebook::fboss::state::TrafficClassToQosAttributeEntry, ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>>; - using ChildrenById = fatal::tuple< std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, - std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>>; + using Children = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>>; + using ChildrenById = fatal::tuple< std::pair, ChildThriftPath<::facebook::network::thrift::BinaryAddress, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, ChildThriftPath<::facebook::fboss::MplsAction, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, Child>>; template - using NameToId = fatal::tuple>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(trafficClass, 1); - STRUCT_CHILD_GETTERS(attr, 2); + STRUCT_CHILD_GETTERS(address, 1); + STRUCT_CHILD_GETTERS(weight, 2); + STRUCT_CHILD_GETTERS(mplsAction, 3); + STRUCT_CHILD_GETTERS(disableTTLDecrement, 4); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return trafficClass(); } - else if constexpr (__id == 2) { return attr(); } + if constexpr (__id == 1) { return address(); } + else if constexpr (__id == 2) { return weight(); } + else if constexpr (__id == 3) { return mplsAction(); } + else if constexpr (__id == 4) { return disableTTLDecrement(); } } template @@ -8299,43 +8048,85 @@ std::pair>> }; template -class ChildThriftPath<::std::vector<::facebook::fboss::state::TrafficClassToQosAttributeEntry>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::vector<::facebook::fboss::cfg::MirrorOnDropReport>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::vector<::facebook::fboss::state::TrafficClassToQosAttributeEntry>, + ::std::vector<::facebook::fboss::cfg::MirrorOnDropReport>, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::state::TrafficClassToQosAttributeEntry>>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::MirrorOnDropReport>>, Parent> { public: using Self = Path< - ::std::vector<::facebook::fboss::state::TrafficClassToQosAttributeEntry>, + ::std::vector<::facebook::fboss::cfg::MirrorOnDropReport>, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::state::TrafficClassToQosAttributeEntry>>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::MirrorOnDropReport>>, Parent>; - using Child = ChildThriftPath<::facebook::fboss::state::TrafficClassToQosAttributeEntry, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Child = ChildThriftPath<::facebook::fboss::cfg::MirrorOnDropReport, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; using Self::Self; CONTAINER_CHILD_GETTERS(::std::int32_t); }; +template +class ChildThriftPath<::std::map<::std::int16_t, ::std::map<::facebook::fboss::cfg::PlatformAttributes, ::std::string>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : + public Path< + ::std::map<::std::int16_t, ::std::map<::facebook::fboss::cfg::PlatformAttributes, ::std::string>>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::map<::apache::thrift::type_class::enumeration, ::apache::thrift::type_class::string>>, + ::apache::thrift::type::map<::apache::thrift::type::i16_t, ::apache::thrift::type::map<::apache::thrift::type::enum_t<::facebook::fboss::cfg::PlatformAttributes>, ::apache::thrift::type::string_t>>, + Parent> { + public: + using Self = Path< + ::std::map<::std::int16_t, ::std::map<::facebook::fboss::cfg::PlatformAttributes, ::std::string>>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::map<::apache::thrift::type_class::enumeration, ::apache::thrift::type_class::string>>, + ::apache::thrift::type::map<::apache::thrift::type::i16_t, ::apache::thrift::type::map<::apache::thrift::type::enum_t<::facebook::fboss::cfg::PlatformAttributes>, ::apache::thrift::type::string_t>>, + Parent>; + using Child = ChildThriftPath<::std::map<::facebook::fboss::cfg::PlatformAttributes, ::std::string>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Self::Self; + + CONTAINER_CHILD_GETTERS(::std::int16_t); +}; template -class ChildThriftPath<::facebook::fboss::phy::LaneState, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::vector<::facebook::fboss::cfg::LoadBalancer>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::phy::LaneState, + ::std::vector<::facebook::fboss::cfg::LoadBalancer>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::LoadBalancer>>, + Parent> { + public: + using Self = Path< + ::std::vector<::facebook::fboss::cfg::LoadBalancer>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::LoadBalancer>>, + Parent>; + using Child = ChildThriftPath<::facebook::fboss::cfg::LoadBalancer, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Self::Self; + + CONTAINER_CHILD_GETTERS(::std::int32_t); +}; + + +template +class ChildThriftPath<::facebook::fboss::IpPrefix, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : + public Path< + ::facebook::fboss::IpPrefix, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::phy::LaneState>, + ::apache::thrift::type::struct_t<::facebook::fboss::IpPrefix>, Parent> { public: using Self = Path< - ::facebook::fboss::phy::LaneState, + ::facebook::fboss::IpPrefix, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::phy::LaneState>, + ::apache::thrift::type::struct_t<::facebook::fboss::IpPrefix>, Parent>; - using strings = ::facebook::fboss::phy::phy_tags::strings; + using strings = ::facebook::fboss::ctrl_tags::strings; template using Child = Path< ChildType, @@ -8344,50 +8135,25 @@ class ChildThriftPath<::facebook::fboss::phy::LaneState, ::facebook::fboss::fsdb ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>>; - using ChildrenById = fatal::tuple< std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, - std::pair, Child>, - std::pair, Child>, - std::pair, Child>, - std::pair, Child>, - std::pair, ChildThriftPath<::facebook::fboss::phy::TxSettings, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>>; + using Children = fatal::tuple>, +std::pair>>; + using ChildrenById = fatal::tuple< std::pair, ChildThriftPath<::facebook::network::thrift::BinaryAddress, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>>; template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(lane, 1); - STRUCT_CHILD_GETTERS(signalDetectLive, 2); - STRUCT_CHILD_GETTERS(signalDetectChanged, 3); - STRUCT_CHILD_GETTERS(cdrLockLive, 4); - STRUCT_CHILD_GETTERS(cdrLockChanged, 5); - STRUCT_CHILD_GETTERS(txSettings, 6); - STRUCT_CHILD_GETTERS(rxFrequencyPPM, 7); + STRUCT_CHILD_GETTERS(ip, 1); + STRUCT_CHILD_GETTERS(prefixLength, 2); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return lane(); } - else if constexpr (__id == 2) { return signalDetectLive(); } - else if constexpr (__id == 3) { return signalDetectChanged(); } - else if constexpr (__id == 4) { return cdrLockLive(); } - else if constexpr (__id == 5) { return cdrLockChanged(); } - else if constexpr (__id == 6) { return txSettings(); } - else if constexpr (__id == 7) { return rxFrequencyPPM(); } + if constexpr (__id == 1) { return ip(); } + else if constexpr (__id == 2) { return prefixLength(); } } template @@ -8398,21 +8164,21 @@ std::pair -class ChildThriftPath<::facebook::fboss::asic::AsicConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::cfg::PortNeighbor, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::asic::AsicConfig, + ::facebook::fboss::cfg::PortNeighbor, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::asic::AsicConfig>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::PortNeighbor>, Parent> { public: using Self = Path< - ::facebook::fboss::asic::AsicConfig, + ::facebook::fboss::cfg::PortNeighbor, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::asic::AsicConfig>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::PortNeighbor>, Parent>; - using strings = ::facebook::fboss::asic::asic_config_tags::strings; + using strings = ::facebook::fboss::cfg::switch_config_tags::strings; template using Child = Path< ChildType, @@ -8421,20 +8187,25 @@ class ChildThriftPath<::facebook::fboss::asic::AsicConfig, ::facebook::fboss::fs ChildTag, Self >; - using Children = fatal::tuple>>; - using ChildrenById = fatal::tuple< std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>>; + using Children = fatal::tuple>, +std::pair>>; + using ChildrenById = fatal::tuple< std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>>; template - using NameToId = fatal::tuple>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(config, 1); + STRUCT_CHILD_GETTERS(remoteSystem, 1); + STRUCT_CHILD_GETTERS(remotePort, 2); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return config(); } + if constexpr (__id == 1) { return remoteSystem(); } + else if constexpr (__id == 2) { return remotePort(); } } template @@ -8443,86 +8214,174 @@ class ChildThriftPath<::facebook::fboss::asic::AsicConfig, ::facebook::fboss::fs } }; + template -class ChildThriftPath<::std::vector<::facebook::fboss::cfg::AclTableQualifier>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::phy::PolaritySwap, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::vector<::facebook::fboss::cfg::AclTableQualifier>, + ::facebook::fboss::phy::PolaritySwap, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::enumeration>, - ::apache::thrift::type::list<::apache::thrift::type::enum_t<::facebook::fboss::cfg::AclTableQualifier>>, + ::apache::thrift::type_class::structure, + ::apache::thrift::type::struct_t<::facebook::fboss::phy::PolaritySwap>, Parent> { public: using Self = Path< - ::std::vector<::facebook::fboss::cfg::AclTableQualifier>, + ::facebook::fboss::phy::PolaritySwap, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::enumeration>, - ::apache::thrift::type::list<::apache::thrift::type::enum_t<::facebook::fboss::cfg::AclTableQualifier>>, + ::apache::thrift::type_class::structure, + ::apache::thrift::type::struct_t<::facebook::fboss::phy::PolaritySwap>, Parent>; - using Child = Path<::facebook::fboss::cfg::AclTableQualifier, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::AclTableQualifier>, Self>; + using strings = ::facebook::fboss::phy::phy_tags::strings; + template + using Child = Path< + ChildType, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ChildTC, + ChildTag, + Self + >; + using Children = fatal::tuple>, +std::pair>>; + using ChildrenById = fatal::tuple< std::pair, Child>, + std::pair, Child>>; + template + using NameToId = fatal::tuple>, +std::pair>>::template type_of; + + template + using TypeFor = typename Children::template type_of; using Self::Self; + + STRUCT_CHILD_GETTERS(rx, 1); + STRUCT_CHILD_GETTERS(tx, 2); + + template + auto operator()(const std::integral_constant&) { + if constexpr (__id == 1) { return rx(); } + else if constexpr (__id == 2) { return tx(); } + } + + template + auto operator()(const fatal::sequence&) { + return operator()(NameToId>()); + } +}; - CONTAINER_CHILD_GETTERS(::std::int32_t); -}; template -class ChildThriftPath<::std::vector<::facebook::fboss::state::Subport>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::state::NeighborResponseEntryFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::vector<::facebook::fboss::state::Subport>, + ::facebook::fboss::state::NeighborResponseEntryFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::state::Subport>>, + ::apache::thrift::type_class::structure, + ::apache::thrift::type::struct_t<::facebook::fboss::state::NeighborResponseEntryFields>, Parent> { public: using Self = Path< - ::std::vector<::facebook::fboss::state::Subport>, + ::facebook::fboss::state::NeighborResponseEntryFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::state::Subport>>, + ::apache::thrift::type_class::structure, + ::apache::thrift::type::struct_t<::facebook::fboss::state::NeighborResponseEntryFields>, Parent>; - using Child = ChildThriftPath<::facebook::fboss::state::Subport, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using strings = ::facebook::fboss::state::switch_state_tags::strings; + template + using Child = Path< + ChildType, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ChildTC, + ChildTag, + Self + >; + using Children = fatal::tuple>, +std::pair>, +std::pair>>; + using ChildrenById = fatal::tuple< std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>>; + template + using NameToId = fatal::tuple>, +std::pair>, +std::pair>>::template type_of; + + template + using TypeFor = typename Children::template type_of; using Self::Self; + + STRUCT_CHILD_GETTERS(ipAddress, 1); + STRUCT_CHILD_GETTERS(mac, 2); + STRUCT_CHILD_GETTERS(interfaceId, 3); - CONTAINER_CHILD_GETTERS(::std::int32_t); + template + auto operator()(const std::integral_constant&) { + if constexpr (__id == 1) { return ipAddress(); } + else if constexpr (__id == 2) { return mac(); } + else if constexpr (__id == 3) { return interfaceId(); } + } + + template + auto operator()(const fatal::sequence&) { + return operator()(NameToId>()); + } }; template -class ChildThriftPath<::std::map<::facebook::fboss::cfg::PortQueueConfigName, ::std::vector<::facebook::fboss::cfg::PortQueue>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::set<::facebook::fboss::cfg::TransportField>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::map<::facebook::fboss::cfg::PortQueueConfigName, ::std::vector<::facebook::fboss::cfg::PortQueue>>, + ::std::set<::facebook::fboss::cfg::TransportField>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>>, - ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::PortQueue>>>, + ::apache::thrift::type_class::set<::apache::thrift::type_class::enumeration>, + ::apache::thrift::type::set<::apache::thrift::type::enum_t<::facebook::fboss::cfg::TransportField>>, Parent> { public: using Self = Path< - ::std::map<::facebook::fboss::cfg::PortQueueConfigName, ::std::vector<::facebook::fboss::cfg::PortQueue>>, + ::std::set<::facebook::fboss::cfg::TransportField>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>>, - ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::PortQueue>>>, + ::apache::thrift::type_class::set<::apache::thrift::type_class::enumeration>, + ::apache::thrift::type::set<::apache::thrift::type::enum_t<::facebook::fboss::cfg::TransportField>>, Parent>; - using Child = ChildThriftPath<::std::vector<::facebook::fboss::cfg::PortQueue>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Child = Path<::facebook::fboss::cfg::TransportField, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::TransportField>, Self>; using Self::Self; - CONTAINER_CHILD_GETTERS(::facebook::fboss::cfg::PortQueueConfigName); + CONTAINER_CHILD_GETTERS(::facebook::fboss::cfg::TransportField); +}; + +template +class ChildThriftPath<::std::vector<::facebook::fboss::HostLaneSettings>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : + public Path< + ::std::vector<::facebook::fboss::HostLaneSettings>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::HostLaneSettings>>, + Parent> { + public: + using Self = Path< + ::std::vector<::facebook::fboss::HostLaneSettings>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::HostLaneSettings>>, + Parent>; + using Child = ChildThriftPath<::facebook::fboss::HostLaneSettings, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Self::Self; + + CONTAINER_CHILD_GETTERS(::std::int32_t); }; template -class ChildThriftPath<::facebook::fboss::state::PortFlowletFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::phy::PmdState, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::state::PortFlowletFields, + ::facebook::fboss::phy::PmdState, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::state::PortFlowletFields>, + ::apache::thrift::type::struct_t<::facebook::fboss::phy::PmdState>, Parent> { public: using Self = Path< - ::facebook::fboss::state::PortFlowletFields, + ::facebook::fboss::phy::PmdState, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::state::PortFlowletFields>, + ::apache::thrift::type::struct_t<::facebook::fboss::phy::PmdState>, Parent>; - using strings = ::facebook::fboss::state::switch_state_tags::strings; + using strings = ::facebook::fboss::phy::phy_tags::strings; template using Child = Path< ChildType, @@ -8531,35 +8390,20 @@ class ChildThriftPath<::facebook::fboss::state::PortFlowletFields, ::facebook::f ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>>; - using ChildrenById = fatal::tuple< std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, - std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, - std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>>; + using Children = fatal::tuple, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + using ChildrenById = fatal::tuple< std::pair, ChildThriftPath<::std::map<::std::int16_t, ::facebook::fboss::phy::LaneState>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(id, 1); - STRUCT_CHILD_GETTERS(scalingFactor, 2); - STRUCT_CHILD_GETTERS(loadWeight, 3); - STRUCT_CHILD_GETTERS(queueWeight, 4); + STRUCT_CHILD_GETTERS(lanes, 1); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return id(); } - else if constexpr (__id == 2) { return scalingFactor(); } - else if constexpr (__id == 3) { return loadWeight(); } - else if constexpr (__id == 4) { return queueWeight(); } + if constexpr (__id == 1) { return lanes(); } } template @@ -8570,21 +8414,21 @@ std::pair -class ChildThriftPath<::facebook::fboss::state::BlockedMacAddress, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::network::thrift::BinaryAddress, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::state::BlockedMacAddress, + ::facebook::network::thrift::BinaryAddress, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::state::BlockedMacAddress>, + ::apache::thrift::type::struct_t<::facebook::network::thrift::BinaryAddress>, Parent> { public: using Self = Path< - ::facebook::fboss::state::BlockedMacAddress, + ::facebook::network::thrift::BinaryAddress, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::state::BlockedMacAddress>, + ::apache::thrift::type::struct_t<::facebook::network::thrift::BinaryAddress>, Parent>; - using strings = ::facebook::fboss::state::switch_state_tags::strings; + using strings = ::facebook::network::thrift::Address_tags::strings; template using Child = Path< ChildType, @@ -8593,25 +8437,30 @@ class ChildThriftPath<::facebook::fboss::state::BlockedMacAddress, ::facebook::f ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>>; - using ChildrenById = fatal::tuple< std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>>; + using Children = fatal::tuple>>, +std::pair>, +std::pair>>; + using ChildrenById = fatal::tuple< std::pair, Child<::folly::fbstring, ::apache::thrift::type_class::binary, ::apache::thrift::type::cpp_type<::folly::fbstring, ::apache::thrift::type::binary_t>>>, + std::pair, Child<::std::int64_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i64_t>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>>; template - using NameToId = fatal::tuple>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(macAddrToBlockVlanID, 1); - STRUCT_CHILD_GETTERS(macAddrToBlockAddr, 2); + STRUCT_CHILD_GETTERS(addr, 1); + STRUCT_CHILD_GETTERS(port, 2); + STRUCT_CHILD_GETTERS(ifName, 3); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return macAddrToBlockVlanID(); } - else if constexpr (__id == 2) { return macAddrToBlockAddr(); } + if constexpr (__id == 1) { return addr(); } + else if constexpr (__id == 2) { return port(); } + else if constexpr (__id == 3) { return ifName(); } } template @@ -8621,104 +8470,170 @@ std::pair -class ChildThriftPath<::std::map<::std::string, ::facebook::fboss::state::RouteFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::vector<::facebook::fboss::cfg::VlanPort>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::map<::std::string, ::facebook::fboss::state::RouteFields>, + ::std::vector<::facebook::fboss::cfg::VlanPort>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>, - ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::RouteFields>>, + ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::VlanPort>>, Parent> { public: using Self = Path< - ::std::map<::std::string, ::facebook::fboss::state::RouteFields>, + ::std::vector<::facebook::fboss::cfg::VlanPort>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>, - ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::RouteFields>>, + ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::VlanPort>>, Parent>; - using Child = ChildThriftPath<::facebook::fboss::state::RouteFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Child = ChildThriftPath<::facebook::fboss::cfg::VlanPort, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; using Self::Self; - CONTAINER_CHILD_GETTERS(::std::string); + CONTAINER_CHILD_GETTERS(::std::int32_t); }; + template -class ChildThriftPath<::std::map<::std::int32_t, ::std::vector<::std::int32_t>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::cfg::MirrorOnDropReport, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::map<::std::int32_t, ::std::vector<::std::int32_t>>, + ::facebook::fboss::cfg::MirrorOnDropReport, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::list<::apache::thrift::type_class::integral>>, - ::apache::thrift::type::map<::apache::thrift::type::i32_t, ::apache::thrift::type::list<::apache::thrift::type::i32_t>>, + ::apache::thrift::type_class::structure, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::MirrorOnDropReport>, Parent> { public: using Self = Path< - ::std::map<::std::int32_t, ::std::vector<::std::int32_t>>, + ::facebook::fboss::cfg::MirrorOnDropReport, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::list<::apache::thrift::type_class::integral>>, - ::apache::thrift::type::map<::apache::thrift::type::i32_t, ::apache::thrift::type::list<::apache::thrift::type::i32_t>>, + ::apache::thrift::type_class::structure, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::MirrorOnDropReport>, Parent>; - using Child = ChildThriftPath<::std::vector<::std::int32_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using strings = ::facebook::fboss::cfg::switch_config_tags::strings; + template + using Child = Path< + ChildType, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ChildTC, + ChildTag, + Self + >; + using Children = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>>; + using ChildrenById = fatal::tuple< std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, + std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, + std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, + std::pair, Child<::std::int8_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::byte_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>>; + template + using NameToId = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>>::template type_of; + + template + using TypeFor = typename Children::template type_of; using Self::Self; + + STRUCT_CHILD_GETTERS(name, 1); + STRUCT_CHILD_GETTERS(mirrorPortId, 2); + STRUCT_CHILD_GETTERS(localSrcPort, 3); + STRUCT_CHILD_GETTERS(collectorIp, 4); + STRUCT_CHILD_GETTERS(collectorPort, 5); + STRUCT_CHILD_GETTERS(mtu, 6); + STRUCT_CHILD_GETTERS(truncateSize, 7); + STRUCT_CHILD_GETTERS(dscp, 8); + STRUCT_CHILD_GETTERS(agingIntervalUsecs, 9); - CONTAINER_CHILD_GETTERS(::std::int32_t); + template + auto operator()(const std::integral_constant&) { + if constexpr (__id == 1) { return name(); } + else if constexpr (__id == 2) { return mirrorPortId(); } + else if constexpr (__id == 3) { return localSrcPort(); } + else if constexpr (__id == 4) { return collectorIp(); } + else if constexpr (__id == 5) { return collectorPort(); } + else if constexpr (__id == 6) { return mtu(); } + else if constexpr (__id == 7) { return truncateSize(); } + else if constexpr (__id == 8) { return dscp(); } + else if constexpr (__id == 9) { return agingIntervalUsecs(); } + } + + template + auto operator()(const fatal::sequence&) { + return operator()(NameToId>()); + } }; template -class ChildThriftPath<::std::vector<::facebook::fboss::cfg::AggregatePortMember>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::int16_t, ::facebook::fboss::state::AggregatePortFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::vector<::facebook::fboss::cfg::AggregatePortMember>, + ::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::int16_t, ::facebook::fboss::state::AggregatePortFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::AggregatePortMember>>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::map<::apache::thrift::type::i16_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::AggregatePortFields>>>, Parent> { public: using Self = Path< - ::std::vector<::facebook::fboss::cfg::AggregatePortMember>, + ::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::int16_t, ::facebook::fboss::state::AggregatePortFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::AggregatePortMember>>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::map<::apache::thrift::type::i16_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::AggregatePortFields>>>, Parent>; - using Child = ChildThriftPath<::facebook::fboss::cfg::AggregatePortMember, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Child = ChildThriftPath<::std::map<::std::int16_t, ::facebook::fboss::state::AggregatePortFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; using Self::Self; - CONTAINER_CHILD_GETTERS(::std::int32_t); + CONTAINER_CHILD_GETTERS(::facebook::fboss::state::SwitchIdList); }; template -class ChildThriftPath<::std::map<::facebook::fboss::ClientID, ::facebook::fboss::state::RouteNextHopEntry>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::map<::std::int16_t, ::facebook::fboss::state::TransceiverSpecFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::map<::facebook::fboss::ClientID, ::facebook::fboss::state::RouteNextHopEntry>, + ::std::map<::std::int16_t, ::facebook::fboss::state::TransceiverSpecFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::enumeration, ::apache::thrift::type_class::structure>, - ::apache::thrift::type::map<::apache::thrift::type::enum_t<::facebook::fboss::ClientID>, ::apache::thrift::type::struct_t<::facebook::fboss::state::RouteNextHopEntry>>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>, + ::apache::thrift::type::map<::apache::thrift::type::i16_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::TransceiverSpecFields>>, Parent> { public: using Self = Path< - ::std::map<::facebook::fboss::ClientID, ::facebook::fboss::state::RouteNextHopEntry>, + ::std::map<::std::int16_t, ::facebook::fboss::state::TransceiverSpecFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::enumeration, ::apache::thrift::type_class::structure>, - ::apache::thrift::type::map<::apache::thrift::type::enum_t<::facebook::fboss::ClientID>, ::apache::thrift::type::struct_t<::facebook::fboss::state::RouteNextHopEntry>>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>, + ::apache::thrift::type::map<::apache::thrift::type::i16_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::TransceiverSpecFields>>, Parent>; - using Child = ChildThriftPath<::facebook::fboss::state::RouteNextHopEntry, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Child = ChildThriftPath<::facebook::fboss::state::TransceiverSpecFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; using Self::Self; - CONTAINER_CHILD_GETTERS(::facebook::fboss::ClientID); + CONTAINER_CHILD_GETTERS(::std::int16_t); }; template -class ChildThriftPath<::facebook::fboss::cfg::AclUdfEntry, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::cfg::AclTableGroup, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::cfg::AclUdfEntry, + ::facebook::fboss::cfg::AclTableGroup, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::AclUdfEntry>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::AclTableGroup>, Parent> { public: using Self = Path< - ::facebook::fboss::cfg::AclUdfEntry, + ::facebook::fboss::cfg::AclTableGroup, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::AclUdfEntry>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::AclTableGroup>, Parent>; using strings = ::facebook::fboss::cfg::switch_config_tags::strings; template @@ -8729,30 +8644,30 @@ class ChildThriftPath<::facebook::fboss::cfg::AclUdfEntry, ::facebook::fboss::fs ChildTag, Self >; - using Children = fatal::tuple>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + using Children = fatal::tuple>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair>>>; using ChildrenById = fatal::tuple< std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, ChildThriftPath<::std::vector<::std::int8_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::vector<::std::int8_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::AclTable>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, Child<::facebook::fboss::cfg::AclStage, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::AclStage>>>>; template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(udfGroup, 1); - STRUCT_CHILD_GETTERS(roceBytes, 2); - STRUCT_CHILD_GETTERS(roceMask, 3); + STRUCT_CHILD_GETTERS(name, 1); + STRUCT_CHILD_GETTERS(aclTables, 2); + STRUCT_CHILD_GETTERS(stage, 3); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return udfGroup(); } - else if constexpr (__id == 2) { return roceBytes(); } - else if constexpr (__id == 3) { return roceMask(); } + if constexpr (__id == 1) { return name(); } + else if constexpr (__id == 2) { return aclTables(); } + else if constexpr (__id == 3) { return stage(); } } template @@ -8763,21 +8678,21 @@ std::pair -class ChildThriftPath<::facebook::fboss::cfg::PacketRxReasonToQueue, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::state::TransceiverSpecFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::cfg::PacketRxReasonToQueue, + ::facebook::fboss::state::TransceiverSpecFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::PacketRxReasonToQueue>, + ::apache::thrift::type::struct_t<::facebook::fboss::state::TransceiverSpecFields>, Parent> { public: using Self = Path< - ::facebook::fboss::cfg::PacketRxReasonToQueue, + ::facebook::fboss::state::TransceiverSpecFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::PacketRxReasonToQueue>, + ::apache::thrift::type::struct_t<::facebook::fboss::state::TransceiverSpecFields>, Parent>; - using strings = ::facebook::fboss::cfg::switch_config_tags::strings; + using strings = ::facebook::fboss::state::switch_state_tags::strings; template using Child = Path< ChildType, @@ -8786,25 +8701,35 @@ class ChildThriftPath<::facebook::fboss::cfg::PacketRxReasonToQueue, ::facebook: ChildTag, Self >; - using Children = fatal::tuple>>, -std::pair>>; - using ChildrenById = fatal::tuple< std::pair, Child<::facebook::fboss::cfg::PacketRxReason, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::PacketRxReason>>>, - std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>>; + using Children = fatal::tuple>, +std::pair>, +std::pair>>, +std::pair>>>; + using ChildrenById = fatal::tuple< std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, + std::pair, Child>, + std::pair, Child<::facebook::fboss::MediaInterfaceCode, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::MediaInterfaceCode>>>, + std::pair, Child<::facebook::fboss::TransceiverManagementInterface, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::TransceiverManagementInterface>>>>; template - using NameToId = fatal::tuple>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(rxReason, 1); - STRUCT_CHILD_GETTERS(queueId, 2); + STRUCT_CHILD_GETTERS(id, 1); + STRUCT_CHILD_GETTERS(cableLength, 2); + STRUCT_CHILD_GETTERS(mediaInterface, 3); + STRUCT_CHILD_GETTERS(managementInterface, 4); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return rxReason(); } - else if constexpr (__id == 2) { return queueId(); } + if constexpr (__id == 1) { return id(); } + else if constexpr (__id == 2) { return cableLength(); } + else if constexpr (__id == 3) { return mediaInterface(); } + else if constexpr (__id == 4) { return managementInterface(); } } template @@ -8813,23 +8738,86 @@ std::pair +class ChildThriftPath<::std::map<::std::string, ::facebook::fboss::state::MirrorFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : + public Path< + ::std::map<::std::string, ::facebook::fboss::state::MirrorFields>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::MirrorFields>>, + Parent> { + public: + using Self = Path< + ::std::map<::std::string, ::facebook::fboss::state::MirrorFields>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::MirrorFields>>, + Parent>; + using Child = ChildThriftPath<::facebook::fboss::state::MirrorFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Self::Self; + + CONTAINER_CHILD_GETTERS(::std::string); +}; template -class ChildThriftPath<::facebook::fboss::state::MirrorFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::map<::std::string, ::facebook::fboss::fsdb::FsdbSubscriptionState>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::state::MirrorFields, + ::std::map<::std::string, ::facebook::fboss::fsdb::FsdbSubscriptionState>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::enumeration>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::enum_t<::facebook::fboss::fsdb::FsdbSubscriptionState>>, + Parent> { + public: + using Self = Path< + ::std::map<::std::string, ::facebook::fboss::fsdb::FsdbSubscriptionState>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::enumeration>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::enum_t<::facebook::fboss::fsdb::FsdbSubscriptionState>>, + Parent>; + using Child = Path<::facebook::fboss::fsdb::FsdbSubscriptionState, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::fsdb::FsdbSubscriptionState>, Self>; + using Self::Self; + + CONTAINER_CHILD_GETTERS(::std::string); +}; + +template +class ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::facebook::fboss::state::SwitchSettingsFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : + public Path< + ::std::map<::facebook::fboss::state::SwitchIdList, ::facebook::fboss::state::SwitchSettingsFields>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::SwitchSettingsFields>>, + Parent> { + public: + using Self = Path< + ::std::map<::facebook::fboss::state::SwitchIdList, ::facebook::fboss::state::SwitchSettingsFields>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::SwitchSettingsFields>>, + Parent>; + using Child = ChildThriftPath<::facebook::fboss::state::SwitchSettingsFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Self::Self; + + CONTAINER_CHILD_GETTERS(::facebook::fboss::state::SwitchIdList); +}; + + +template +class ChildThriftPath<::facebook::fboss::cfg::SflowTunnel, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : + public Path< + ::facebook::fboss::cfg::SflowTunnel, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::state::MirrorFields>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::SflowTunnel>, Parent> { public: using Self = Path< - ::facebook::fboss::state::MirrorFields, + ::facebook::fboss::cfg::SflowTunnel, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::state::MirrorFields>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::SflowTunnel>, Parent>; - using strings = ::facebook::fboss::state::switch_state_tags::strings; + using strings = ::facebook::fboss::cfg::switch_config_tags::strings; template using Child = Path< ChildType, @@ -8838,85 +8826,35 @@ class ChildThriftPath<::facebook::fboss::state::MirrorFields, ::facebook::fboss: ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>>; + using Children = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>>; using ChildrenById = fatal::tuple< std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, - std::pair, Child>, - std::pair, Child>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, ChildThriftPath<::facebook::network::thrift::BinaryAddress, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::facebook::network::thrift::BinaryAddress, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, - std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, - std::pair, ChildThriftPath<::facebook::fboss::state::MirrorTunnel, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, Child>, - std::pair, Child<::std::int64_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i64_t>>, - std::pair, ChildThriftPath<::facebook::fboss::cfg::PortDescriptor, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>>; + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, ChildThriftPath<::facebook::fboss::cfg::Ttl, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(name, 1); - STRUCT_CHILD_GETTERS(dscp, 3); - STRUCT_CHILD_GETTERS(truncate, 4); - STRUCT_CHILD_GETTERS(configHasEgressPort, 5); - STRUCT_CHILD_GETTERS(egressPort, 6); - STRUCT_CHILD_GETTERS(destinationIp, 7); - STRUCT_CHILD_GETTERS(srcIp, 8); - STRUCT_CHILD_GETTERS(udpSrcPort, 9); - STRUCT_CHILD_GETTERS(udpDstPort, 10); - STRUCT_CHILD_GETTERS(tunnel, 11); - STRUCT_CHILD_GETTERS(isResolved, 12); - STRUCT_CHILD_GETTERS(switchId, 13); - STRUCT_CHILD_GETTERS(egressPortDesc, 14); - STRUCT_CHILD_GETTERS(samplingRate, 15); + STRUCT_CHILD_GETTERS(ip, 1); + STRUCT_CHILD_GETTERS(udpSrcPort, 2); + STRUCT_CHILD_GETTERS(udpDstPort, 3); + STRUCT_CHILD_GETTERS(ttl, 4); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return name(); } - else if constexpr (__id == 3) { return dscp(); } - else if constexpr (__id == 4) { return truncate(); } - else if constexpr (__id == 5) { return configHasEgressPort(); } - else if constexpr (__id == 6) { return egressPort(); } - else if constexpr (__id == 7) { return destinationIp(); } - else if constexpr (__id == 8) { return srcIp(); } - else if constexpr (__id == 9) { return udpSrcPort(); } - else if constexpr (__id == 10) { return udpDstPort(); } - else if constexpr (__id == 11) { return tunnel(); } - else if constexpr (__id == 12) { return isResolved(); } - else if constexpr (__id == 13) { return switchId(); } - else if constexpr (__id == 14) { return egressPortDesc(); } - else if constexpr (__id == 15) { return samplingRate(); } + if constexpr (__id == 1) { return ip(); } + else if constexpr (__id == 2) { return udpSrcPort(); } + else if constexpr (__id == 3) { return udpDstPort(); } + else if constexpr (__id == 4) { return ttl(); } } template @@ -8927,19 +8865,19 @@ std::pair -class ChildThriftPath<::facebook::fboss::state::SwitchState, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::state::TrafficClassToQosAttributeEntry, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::state::SwitchState, + ::facebook::fboss::state::TrafficClassToQosAttributeEntry, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::state::SwitchState>, + ::apache::thrift::type::struct_t<::facebook::fboss::state::TrafficClassToQosAttributeEntry>, Parent> { public: using Self = Path< - ::facebook::fboss::state::SwitchState, + ::facebook::fboss::state::TrafficClassToQosAttributeEntry, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::state::SwitchState>, + ::apache::thrift::type::struct_t<::facebook::fboss::state::TrafficClassToQosAttributeEntry>, Parent>; using strings = ::facebook::fboss::state::switch_state_tags::strings; template @@ -8950,130 +8888,25 @@ class ChildThriftPath<::facebook::fboss::state::SwitchState, ::facebook::fboss:: ChildTag, Self >; - using Children = fatal::tuple>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; - using ChildrenById = fatal::tuple< std::pair, ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::int16_t, ::facebook::fboss::state::PortFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::int16_t, ::facebook::fboss::state::VlanFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::string, ::facebook::fboss::state::AclEntryFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::int16_t, ::facebook::fboss::state::TransceiverSpecFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::string, ::facebook::fboss::BufferPoolFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::string, ::facebook::fboss::state::MirrorFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::facebook::fboss::state::ControlPlaneFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::facebook::fboss::state::SwitchSettingsFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::int64_t, ::facebook::fboss::state::SystemPortFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::int16_t, ::facebook::fboss::state::FibContainerFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::int32_t, ::facebook::fboss::state::LabelForwardingEntryFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::string, ::facebook::fboss::state::QosPolicyFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::string, ::facebook::fboss::state::SflowCollectorFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::string, ::facebook::fboss::state::IpTunnelFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::string, ::facebook::fboss::state::TeFlowEntryFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::int16_t, ::facebook::fboss::state::AggregatePortFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::facebook::fboss::cfg::LoadBalancerID, ::facebook::fboss::state::LoadBalancerFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::facebook::fboss::cfg::AclStage, ::facebook::fboss::state::AclTableGroupFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::int32_t, ::facebook::fboss::state::InterfaceFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::int64_t, ::facebook::fboss::cfg::DsfNode>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::string, ::facebook::fboss::state::PortFlowletFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::int64_t, ::facebook::fboss::state::SystemPortFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::int32_t, ::facebook::fboss::state::InterfaceFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + using Children = fatal::tuple>, +std::pair>>; + using ChildrenById = fatal::tuple< std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, + std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>>; template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(portMaps, 100); - STRUCT_CHILD_GETTERS(vlanMaps, 101); - STRUCT_CHILD_GETTERS(aclMaps, 102); - STRUCT_CHILD_GETTERS(transceiverMaps, 103); - STRUCT_CHILD_GETTERS(bufferPoolCfgMaps, 104); - STRUCT_CHILD_GETTERS(mirrorMaps, 105); - STRUCT_CHILD_GETTERS(controlPlaneMap, 106); - STRUCT_CHILD_GETTERS(switchSettingsMap, 107); - STRUCT_CHILD_GETTERS(systemPortMaps, 108); - STRUCT_CHILD_GETTERS(fibsMap, 109); - STRUCT_CHILD_GETTERS(labelFibMap, 110); - STRUCT_CHILD_GETTERS(qosPolicyMaps, 111); - STRUCT_CHILD_GETTERS(sflowCollectorMaps, 112); - STRUCT_CHILD_GETTERS(ipTunnelMaps, 113); - STRUCT_CHILD_GETTERS(teFlowTables, 114); - STRUCT_CHILD_GETTERS(aggregatePortMaps, 115); - STRUCT_CHILD_GETTERS(loadBalancerMaps, 116); - STRUCT_CHILD_GETTERS(aclTableGroupMaps, 117); - STRUCT_CHILD_GETTERS(interfaceMaps, 118); - STRUCT_CHILD_GETTERS(dsfNodesMap, 119); - STRUCT_CHILD_GETTERS(portFlowletCfgMaps, 120); - STRUCT_CHILD_GETTERS(remoteSystemPortMaps, 600); - STRUCT_CHILD_GETTERS(remoteInterfaceMaps, 601); + STRUCT_CHILD_GETTERS(trafficClass, 1); + STRUCT_CHILD_GETTERS(attr, 2); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 100) { return portMaps(); } - else if constexpr (__id == 101) { return vlanMaps(); } - else if constexpr (__id == 102) { return aclMaps(); } - else if constexpr (__id == 103) { return transceiverMaps(); } - else if constexpr (__id == 104) { return bufferPoolCfgMaps(); } - else if constexpr (__id == 105) { return mirrorMaps(); } - else if constexpr (__id == 106) { return controlPlaneMap(); } - else if constexpr (__id == 107) { return switchSettingsMap(); } - else if constexpr (__id == 108) { return systemPortMaps(); } - else if constexpr (__id == 109) { return fibsMap(); } - else if constexpr (__id == 110) { return labelFibMap(); } - else if constexpr (__id == 111) { return qosPolicyMaps(); } - else if constexpr (__id == 112) { return sflowCollectorMaps(); } - else if constexpr (__id == 113) { return ipTunnelMaps(); } - else if constexpr (__id == 114) { return teFlowTables(); } - else if constexpr (__id == 115) { return aggregatePortMaps(); } - else if constexpr (__id == 116) { return loadBalancerMaps(); } - else if constexpr (__id == 117) { return aclTableGroupMaps(); } - else if constexpr (__id == 118) { return interfaceMaps(); } - else if constexpr (__id == 119) { return dsfNodesMap(); } - else if constexpr (__id == 120) { return portFlowletCfgMaps(); } - else if constexpr (__id == 600) { return remoteSystemPortMaps(); } - else if constexpr (__id == 601) { return remoteInterfaceMaps(); } + if constexpr (__id == 1) { return trafficClass(); } + else if constexpr (__id == 2) { return attr(); } } template @@ -9083,64 +8916,43 @@ std::pair -class ChildThriftPath<::std::map<::facebook::fboss::cfg::PlatformAttributes, ::std::string>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : - public Path< - ::std::map<::facebook::fboss::cfg::PlatformAttributes, ::std::string>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::enumeration, ::apache::thrift::type_class::string>, - ::apache::thrift::type::map<::apache::thrift::type::enum_t<::facebook::fboss::cfg::PlatformAttributes>, ::apache::thrift::type::string_t>, - Parent> { - public: - using Self = Path< - ::std::map<::facebook::fboss::cfg::PlatformAttributes, ::std::string>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::enumeration, ::apache::thrift::type_class::string>, - ::apache::thrift::type::map<::apache::thrift::type::enum_t<::facebook::fboss::cfg::PlatformAttributes>, ::apache::thrift::type::string_t>, - Parent>; - using Child = Path<::std::string, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t, Self>; - using Self::Self; - - CONTAINER_CHILD_GETTERS(::facebook::fboss::cfg::PlatformAttributes); -}; - -template -class ChildThriftPath<::std::set<::std::int32_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::map<::facebook::fboss::cfg::BufferPoolConfigName, ::facebook::fboss::cfg::BufferPoolConfig>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::set<::std::int32_t>, + ::std::map<::facebook::fboss::cfg::BufferPoolConfigName, ::facebook::fboss::cfg::BufferPoolConfig>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::set<::apache::thrift::type_class::integral>, - ::apache::thrift::type::set<::apache::thrift::type::i32_t>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::cfg::BufferPoolConfig>>, Parent> { public: using Self = Path< - ::std::set<::std::int32_t>, + ::std::map<::facebook::fboss::cfg::BufferPoolConfigName, ::facebook::fboss::cfg::BufferPoolConfig>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::set<::apache::thrift::type_class::integral>, - ::apache::thrift::type::set<::apache::thrift::type::i32_t>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::cfg::BufferPoolConfig>>, Parent>; - using Child = Path<::std::int32_t, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t, Self>; + using Child = ChildThriftPath<::facebook::fboss::cfg::BufferPoolConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; using Self::Self; - CONTAINER_CHILD_GETTERS(::std::int32_t); + CONTAINER_CHILD_GETTERS(::facebook::fboss::cfg::BufferPoolConfigName); }; template -class ChildThriftPath<::facebook::fboss::switch_reachability::SwitchReachability, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::state::LoadBalancerFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::switch_reachability::SwitchReachability, + ::facebook::fboss::state::LoadBalancerFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::switch_reachability::SwitchReachability>, + ::apache::thrift::type::struct_t<::facebook::fboss::state::LoadBalancerFields>, Parent> { public: using Self = Path< - ::facebook::fboss::switch_reachability::SwitchReachability, + ::facebook::fboss::state::LoadBalancerFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::switch_reachability::SwitchReachability>, + ::apache::thrift::type::struct_t<::facebook::fboss::state::LoadBalancerFields>, Parent>; - using strings = ::facebook::fboss::switch_reachability::switch_reachability_tags::strings; + using strings = ::facebook::fboss::state::switch_state_tags::strings; template using Child = Path< ChildType, @@ -9149,25 +8961,55 @@ class ChildThriftPath<::facebook::fboss::switch_reachability::SwitchReachability ChildTag, Self >; - using Children = fatal::tuple>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; - using ChildrenById = fatal::tuple< std::pair, ChildThriftPath<::std::map<::std::int32_t, ::std::vector<::std::string>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::map<::std::int64_t, ::std::int32_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + using Children = fatal::tuple>>, +std::pair>>, +std::pair>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + using ChildrenById = fatal::tuple< std::pair, Child<::facebook::fboss::cfg::LoadBalancerID, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::LoadBalancerID>>>, + std::pair, Child<::facebook::fboss::cfg::HashingAlgorithm, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::HashingAlgorithm>>>, + std::pair, Child<::std::int64_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i64_t>>, + std::pair, ChildThriftPath<::std::set<::facebook::fboss::cfg::IPv4Field>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::set<::facebook::fboss::cfg::IPv6Field>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::set<::facebook::fboss::cfg::TransportField>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::set<::facebook::fboss::cfg::MPLSField>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::vector<::std::string>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; template - using NameToId = fatal::tuple>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(fabricPortGroupMap, 1); - STRUCT_CHILD_GETTERS(switchIdToFabricPortGroupMap, 2); + STRUCT_CHILD_GETTERS(id, 1); + STRUCT_CHILD_GETTERS(algorithm, 2); + STRUCT_CHILD_GETTERS(seed, 3); + STRUCT_CHILD_GETTERS(v4Fields, 4); + STRUCT_CHILD_GETTERS(v6Fields, 5); + STRUCT_CHILD_GETTERS(transportFields, 6); + STRUCT_CHILD_GETTERS(mplsFields, 7); + STRUCT_CHILD_GETTERS(udfGroups, 8); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return fabricPortGroupMap(); } - else if constexpr (__id == 2) { return switchIdToFabricPortGroupMap(); } + if constexpr (__id == 1) { return id(); } + else if constexpr (__id == 2) { return algorithm(); } + else if constexpr (__id == 3) { return seed(); } + else if constexpr (__id == 4) { return v4Fields(); } + else if constexpr (__id == 5) { return v6Fields(); } + else if constexpr (__id == 6) { return transportFields(); } + else if constexpr (__id == 7) { return mplsFields(); } + else if constexpr (__id == 8) { return udfGroups(); } } template @@ -9176,121 +9018,65 @@ std::pair -class ChildThriftPath<::facebook::fboss::MediaLaneSignals, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::facebook::fboss::cfg::LoadBalancerID, ::facebook::fboss::state::LoadBalancerFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::MediaLaneSignals, + ::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::facebook::fboss::cfg::LoadBalancerID, ::facebook::fboss::state::LoadBalancerFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::MediaLaneSignals>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::map<::apache::thrift::type_class::enumeration, ::apache::thrift::type_class::structure>>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::map<::apache::thrift::type::enum_t<::facebook::fboss::cfg::LoadBalancerID>, ::apache::thrift::type::struct_t<::facebook::fboss::state::LoadBalancerFields>>>, Parent> { public: using Self = Path< - ::facebook::fboss::MediaLaneSignals, + ::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::facebook::fboss::cfg::LoadBalancerID, ::facebook::fboss::state::LoadBalancerFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::MediaLaneSignals>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::map<::apache::thrift::type_class::enumeration, ::apache::thrift::type_class::structure>>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::map<::apache::thrift::type::enum_t<::facebook::fboss::cfg::LoadBalancerID>, ::apache::thrift::type::struct_t<::facebook::fboss::state::LoadBalancerFields>>>, Parent>; - using strings = ::facebook::fboss::transceiver_tags::strings; - template - using Child = Path< - ChildType, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ChildTC, - ChildTag, - Self - >; - using Children = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>>; - using ChildrenById = fatal::tuple< std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child>, - std::pair, Child>, - std::pair, Child>, - std::pair, Child>, - std::pair, Child>, - std::pair, Child>>; - template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>>::template type_of; - - template - using TypeFor = typename Children::template type_of; + using Child = ChildThriftPath<::std::map<::facebook::fboss::cfg::LoadBalancerID, ::facebook::fboss::state::LoadBalancerFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; using Self::Self; - - STRUCT_CHILD_GETTERS(lane, 1); - STRUCT_CHILD_GETTERS(txLos, 2); - STRUCT_CHILD_GETTERS(rxLos, 3); - STRUCT_CHILD_GETTERS(txLol, 4); - STRUCT_CHILD_GETTERS(rxLol, 5); - STRUCT_CHILD_GETTERS(txFault, 6); - STRUCT_CHILD_GETTERS(txAdaptEqFault, 7); - - template - auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return lane(); } - else if constexpr (__id == 2) { return txLos(); } - else if constexpr (__id == 3) { return rxLos(); } - else if constexpr (__id == 4) { return txLol(); } - else if constexpr (__id == 5) { return rxLol(); } - else if constexpr (__id == 6) { return txFault(); } - else if constexpr (__id == 7) { return txAdaptEqFault(); } - } - template - auto operator()(const fatal::sequence&) { - return operator()(NameToId>()); - } + CONTAINER_CHILD_GETTERS(::facebook::fboss::state::SwitchIdList); }; template -class ChildThriftPath<::std::map<::std::string, ::facebook::fboss::state::AclEntryFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::map<::std::int16_t, ::facebook::fboss::state::PortFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::map<::std::string, ::facebook::fboss::state::AclEntryFields>, + ::std::map<::std::int16_t, ::facebook::fboss::state::PortFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>, - ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::AclEntryFields>>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>, + ::apache::thrift::type::map<::apache::thrift::type::i16_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::PortFields>>, Parent> { public: using Self = Path< - ::std::map<::std::string, ::facebook::fboss::state::AclEntryFields>, + ::std::map<::std::int16_t, ::facebook::fboss::state::PortFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>, - ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::AclEntryFields>>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>, + ::apache::thrift::type::map<::apache::thrift::type::i16_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::PortFields>>, Parent>; - using Child = ChildThriftPath<::facebook::fboss::state::AclEntryFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Child = ChildThriftPath<::facebook::fboss::state::PortFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; using Self::Self; - CONTAINER_CHILD_GETTERS(::std::string); + CONTAINER_CHILD_GETTERS(::std::int16_t); }; template -class ChildThriftPath<::facebook::fboss::phy::PinID, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::cfg::PfcWatchdog, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::phy::PinID, + ::facebook::fboss::cfg::PfcWatchdog, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::phy::PinID>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::PfcWatchdog>, Parent> { public: using Self = Path< - ::facebook::fboss::phy::PinID, + ::facebook::fboss::cfg::PfcWatchdog, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::phy::PinID>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::PfcWatchdog>, Parent>; - using strings = ::facebook::fboss::phy::phy_tags::strings; + using strings = ::facebook::fboss::cfg::switch_config_tags::strings; template using Child = Path< ChildType, @@ -9299,25 +9085,30 @@ class ChildThriftPath<::facebook::fboss::phy::PinID, ::facebook::fboss::fsdb::Fs ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>>; - using ChildrenById = fatal::tuple< std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>>; + using Children = fatal::tuple>, +std::pair>, +std::pair>>>; + using ChildrenById = fatal::tuple< std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::facebook::fboss::cfg::PfcWatchdogRecoveryAction, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::PfcWatchdogRecoveryAction>>>>; template - using NameToId = fatal::tuple>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(chip, 1); - STRUCT_CHILD_GETTERS(lane, 2); + STRUCT_CHILD_GETTERS(detectionTimeMsecs, 1); + STRUCT_CHILD_GETTERS(recoveryTimeMsecs, 2); + STRUCT_CHILD_GETTERS(recoveryAction, 3); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return chip(); } - else if constexpr (__id == 2) { return lane(); } + if constexpr (__id == 1) { return detectionTimeMsecs(); } + else if constexpr (__id == 2) { return recoveryTimeMsecs(); } + else if constexpr (__id == 3) { return recoveryAction(); } } template @@ -9327,62 +9118,62 @@ std::pair>> }; template -class ChildThriftPath<::std::map<::facebook::fboss::cfg::BurstMonitorWeight, ::std::int16_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::map<::std::int64_t, ::facebook::fboss::cfg::AsicConfigEntry>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::map<::facebook::fboss::cfg::BurstMonitorWeight, ::std::int16_t>, + ::std::map<::std::int64_t, ::facebook::fboss::cfg::AsicConfigEntry>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::enumeration, ::apache::thrift::type_class::integral>, - ::apache::thrift::type::map<::apache::thrift::type::enum_t<::facebook::fboss::cfg::BurstMonitorWeight>, ::apache::thrift::type::i16_t>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::variant>, + ::apache::thrift::type::map<::apache::thrift::type::i64_t, ::apache::thrift::type::union_t<::facebook::fboss::cfg::AsicConfigEntry>>, Parent> { public: using Self = Path< - ::std::map<::facebook::fboss::cfg::BurstMonitorWeight, ::std::int16_t>, + ::std::map<::std::int64_t, ::facebook::fboss::cfg::AsicConfigEntry>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::enumeration, ::apache::thrift::type_class::integral>, - ::apache::thrift::type::map<::apache::thrift::type::enum_t<::facebook::fboss::cfg::BurstMonitorWeight>, ::apache::thrift::type::i16_t>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::variant>, + ::apache::thrift::type::map<::apache::thrift::type::i64_t, ::apache::thrift::type::union_t<::facebook::fboss::cfg::AsicConfigEntry>>, Parent>; - using Child = Path<::std::int16_t, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t, Self>; + using Child = ChildThriftPath<::facebook::fboss::cfg::AsicConfigEntry, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; using Self::Self; - CONTAINER_CHILD_GETTERS(::facebook::fboss::cfg::BurstMonitorWeight); + CONTAINER_CHILD_GETTERS(::std::int64_t); }; template -class ChildThriftPath<::std::map<::std::int16_t, ::facebook::fboss::phy::LaneState>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::vector<::facebook::fboss::cfg::AclTableQualifier>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::map<::std::int16_t, ::facebook::fboss::phy::LaneState>, + ::std::vector<::facebook::fboss::cfg::AclTableQualifier>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>, - ::apache::thrift::type::map<::apache::thrift::type::i16_t, ::apache::thrift::type::struct_t<::facebook::fboss::phy::LaneState>>, + ::apache::thrift::type_class::list<::apache::thrift::type_class::enumeration>, + ::apache::thrift::type::list<::apache::thrift::type::enum_t<::facebook::fboss::cfg::AclTableQualifier>>, Parent> { public: using Self = Path< - ::std::map<::std::int16_t, ::facebook::fboss::phy::LaneState>, + ::std::vector<::facebook::fboss::cfg::AclTableQualifier>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>, - ::apache::thrift::type::map<::apache::thrift::type::i16_t, ::apache::thrift::type::struct_t<::facebook::fboss::phy::LaneState>>, + ::apache::thrift::type_class::list<::apache::thrift::type_class::enumeration>, + ::apache::thrift::type::list<::apache::thrift::type::enum_t<::facebook::fboss::cfg::AclTableQualifier>>, Parent>; - using Child = ChildThriftPath<::facebook::fboss::phy::LaneState, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Child = Path<::facebook::fboss::cfg::AclTableQualifier, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::AclTableQualifier>, Self>; using Self::Self; - CONTAINER_CHILD_GETTERS(::std::int16_t); + CONTAINER_CHILD_GETTERS(::std::int32_t); }; template -class ChildThriftPath<::facebook::fboss::phy::DataPlanePhyChip, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::phy::LaneState, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::phy::DataPlanePhyChip, + ::facebook::fboss::phy::LaneState, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::phy::DataPlanePhyChip>, + ::apache::thrift::type::struct_t<::facebook::fboss::phy::LaneState>, Parent> { public: using Self = Path< - ::facebook::fboss::phy::DataPlanePhyChip, + ::facebook::fboss::phy::LaneState, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::phy::DataPlanePhyChip>, + ::apache::thrift::type::struct_t<::facebook::fboss::phy::LaneState>, Parent>; using strings = ::facebook::fboss::phy::phy_tags::strings; template @@ -9393,30 +9184,50 @@ class ChildThriftPath<::facebook::fboss::phy::DataPlanePhyChip, ::facebook::fbos ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>>, -std::pair>>; - using ChildrenById = fatal::tuple< std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, Child<::facebook::fboss::phy::DataPlanePhyChipType, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::phy::DataPlanePhyChipType>>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>>; + using Children = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>>; + using ChildrenById = fatal::tuple< std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, + std::pair, Child>, + std::pair, Child>, + std::pair, Child>, + std::pair, Child>, + std::pair, ChildThriftPath<::facebook::fboss::phy::TxSettings, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>>; template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(name, 1); - STRUCT_CHILD_GETTERS(type, 2); - STRUCT_CHILD_GETTERS(physicalID, 3); + STRUCT_CHILD_GETTERS(lane, 1); + STRUCT_CHILD_GETTERS(signalDetectLive, 2); + STRUCT_CHILD_GETTERS(signalDetectChanged, 3); + STRUCT_CHILD_GETTERS(cdrLockLive, 4); + STRUCT_CHILD_GETTERS(cdrLockChanged, 5); + STRUCT_CHILD_GETTERS(txSettings, 6); + STRUCT_CHILD_GETTERS(rxFrequencyPPM, 7); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return name(); } - else if constexpr (__id == 2) { return type(); } - else if constexpr (__id == 3) { return physicalID(); } + if constexpr (__id == 1) { return lane(); } + else if constexpr (__id == 2) { return signalDetectLive(); } + else if constexpr (__id == 3) { return signalDetectChanged(); } + else if constexpr (__id == 4) { return cdrLockLive(); } + else if constexpr (__id == 5) { return cdrLockChanged(); } + else if constexpr (__id == 6) { return txSettings(); } + else if constexpr (__id == 7) { return rxFrequencyPPM(); } } template @@ -9427,21 +9238,21 @@ std::pair -class ChildThriftPath<::facebook::fboss::state::IpTunnelFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::asic::AsicConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::state::IpTunnelFields, + ::facebook::fboss::asic::AsicConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::state::IpTunnelFields>, + ::apache::thrift::type::struct_t<::facebook::fboss::asic::AsicConfig>, Parent> { public: using Self = Path< - ::facebook::fboss::state::IpTunnelFields, + ::facebook::fboss::asic::AsicConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::state::IpTunnelFields>, + ::apache::thrift::type::struct_t<::facebook::fboss::asic::AsicConfig>, Parent>; - using strings = ::facebook::fboss::state::switch_state_tags::strings; + using strings = ::facebook::fboss::asic::asic_config_tags::strings; template using Child = Path< ChildType, @@ -9450,75 +9261,20 @@ class ChildThriftPath<::facebook::fboss::state::IpTunnelFields, ::facebook::fbos ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>>; - using ChildrenById = fatal::tuple< std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>>; + using Children = fatal::tuple>>; + using ChildrenById = fatal::tuple< std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>>; template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(ipTunnelId, 1); - STRUCT_CHILD_GETTERS(underlayIntfId, 2); - STRUCT_CHILD_GETTERS(mode, 3); - STRUCT_CHILD_GETTERS(dstIp, 4); - STRUCT_CHILD_GETTERS(type, 5); - STRUCT_CHILD_GETTERS(tunnelTermType, 6); - STRUCT_CHILD_GETTERS(ttlMode, 7); - STRUCT_CHILD_GETTERS(dscpMode, 8); - STRUCT_CHILD_GETTERS(ecnMode, 9); - STRUCT_CHILD_GETTERS(srcIp, 10); - STRUCT_CHILD_GETTERS(dstIpMask, 11); - STRUCT_CHILD_GETTERS(srcIpMask, 12); + STRUCT_CHILD_GETTERS(config, 1); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return ipTunnelId(); } - else if constexpr (__id == 2) { return underlayIntfId(); } - else if constexpr (__id == 3) { return mode(); } - else if constexpr (__id == 4) { return dstIp(); } - else if constexpr (__id == 5) { return type(); } - else if constexpr (__id == 6) { return tunnelTermType(); } - else if constexpr (__id == 7) { return ttlMode(); } - else if constexpr (__id == 8) { return dscpMode(); } - else if constexpr (__id == 9) { return ecnMode(); } - else if constexpr (__id == 10) { return srcIp(); } - else if constexpr (__id == 11) { return dstIpMask(); } - else if constexpr (__id == 12) { return srcIpMask(); } + if constexpr (__id == 1) { return config(); } } template @@ -9527,101 +9283,65 @@ std::pair -class ChildThriftPath<::facebook::fboss::MediaInterfaceId, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::vector<::facebook::fboss::state::Subport>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::MediaInterfaceId, + ::std::vector<::facebook::fboss::state::Subport>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::MediaInterfaceId>, + ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::state::Subport>>, Parent> { public: using Self = Path< - ::facebook::fboss::MediaInterfaceId, + ::std::vector<::facebook::fboss::state::Subport>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::MediaInterfaceId>, + ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::state::Subport>>, Parent>; - using strings = ::facebook::fboss::transceiver_tags::strings; - template - using Child = Path< - ChildType, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ChildTC, - ChildTag, - Self - >; - using Children = fatal::tuple>, -std::pair>, -std::pair>>>; - using ChildrenById = fatal::tuple< std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, ChildThriftPath<::facebook::fboss::MediaInterfaceUnion, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, Child<::facebook::fboss::MediaInterfaceCode, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::MediaInterfaceCode>>>>; - template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>>::template type_of; - - template - using TypeFor = typename Children::template type_of; + using Child = ChildThriftPath<::facebook::fboss::state::Subport, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; using Self::Self; - - STRUCT_CHILD_GETTERS(lane, 1); - STRUCT_CHILD_GETTERS(media, 2); - STRUCT_CHILD_GETTERS(code, 3); - - template - auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return lane(); } - else if constexpr (__id == 2) { return media(); } - else if constexpr (__id == 3) { return code(); } - } - template - auto operator()(const fatal::sequence&) { - return operator()(NameToId>()); - } + CONTAINER_CHILD_GETTERS(::std::int32_t); }; template -class ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::string, ::facebook::fboss::BufferPoolFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::map<::facebook::fboss::cfg::PortQueueConfigName, ::std::vector<::facebook::fboss::cfg::PortQueue>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::string, ::facebook::fboss::BufferPoolFields>>, + ::std::map<::facebook::fboss::cfg::PortQueueConfigName, ::std::vector<::facebook::fboss::cfg::PortQueue>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>>, - ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::BufferPoolFields>>>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::PortQueue>>>, Parent> { public: using Self = Path< - ::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::string, ::facebook::fboss::BufferPoolFields>>, + ::std::map<::facebook::fboss::cfg::PortQueueConfigName, ::std::vector<::facebook::fboss::cfg::PortQueue>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>>, - ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::BufferPoolFields>>>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::PortQueue>>>, Parent>; - using Child = ChildThriftPath<::std::map<::std::string, ::facebook::fboss::BufferPoolFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Child = ChildThriftPath<::std::vector<::facebook::fboss::cfg::PortQueue>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; using Self::Self; - CONTAINER_CHILD_GETTERS(::facebook::fboss::state::SwitchIdList); + CONTAINER_CHILD_GETTERS(::facebook::fboss::cfg::PortQueueConfigName); }; template -class ChildThriftPath<::facebook::fboss::TeFlow, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::state::PortFlowletFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::TeFlow, + ::facebook::fboss::state::PortFlowletFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::TeFlow>, + ::apache::thrift::type::struct_t<::facebook::fboss::state::PortFlowletFields>, Parent> { public: using Self = Path< - ::facebook::fboss::TeFlow, + ::facebook::fboss::state::PortFlowletFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::TeFlow>, + ::apache::thrift::type::struct_t<::facebook::fboss::state::PortFlowletFields>, Parent>; - using strings = ::facebook::fboss::ctrl_tags::strings; + using strings = ::facebook::fboss::state::switch_state_tags::strings; template using Child = Path< ChildType, @@ -9630,25 +9350,35 @@ class ChildThriftPath<::facebook::fboss::TeFlow, ::facebook::fboss::fsdb::FsdbOp ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>>; - using ChildrenById = fatal::tuple< std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, ChildThriftPath<::facebook::fboss::IpPrefix, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + using Children = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>>; + using ChildrenById = fatal::tuple< std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, + std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, + std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>>; template - using NameToId = fatal::tuple>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(srcPort, 1); - STRUCT_CHILD_GETTERS(dstPrefix, 2); + STRUCT_CHILD_GETTERS(id, 1); + STRUCT_CHILD_GETTERS(scalingFactor, 2); + STRUCT_CHILD_GETTERS(loadWeight, 3); + STRUCT_CHILD_GETTERS(queueWeight, 4); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return srcPort(); } - else if constexpr (__id == 2) { return dstPrefix(); } + if constexpr (__id == 1) { return id(); } + else if constexpr (__id == 2) { return scalingFactor(); } + else if constexpr (__id == 3) { return loadWeight(); } + else if constexpr (__id == 4) { return queueWeight(); } } template @@ -9659,19 +9389,19 @@ std::pair -class ChildThriftPath<::facebook::fboss::cfg::BufferPoolConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::cfg::TrafficPolicyConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::cfg::BufferPoolConfig, + ::facebook::fboss::cfg::TrafficPolicyConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::BufferPoolConfig>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::TrafficPolicyConfig>, Parent> { public: using Self = Path< - ::facebook::fboss::cfg::BufferPoolConfig, + ::facebook::fboss::cfg::TrafficPolicyConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::BufferPoolConfig>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::TrafficPolicyConfig>, Parent>; using strings = ::facebook::fboss::cfg::switch_config_tags::strings; template @@ -9682,30 +9412,30 @@ class ChildThriftPath<::facebook::fboss::cfg::BufferPoolConfig, ::facebook::fbos ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>, -std::pair>>; - using ChildrenById = fatal::tuple< std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>>; + using Children = fatal::tuple, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + using ChildrenById = fatal::tuple< std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::MatchToAction>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, ChildThriftPath<::std::map<::std::int32_t, ::std::string>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(sharedBytes, 1); - STRUCT_CHILD_GETTERS(headroomBytes, 2); - STRUCT_CHILD_GETTERS(reservedBytes, 3); + STRUCT_CHILD_GETTERS(matchToAction, 1); + STRUCT_CHILD_GETTERS(defaultQosPolicy, 2); + STRUCT_CHILD_GETTERS(portIdToQosPolicy, 3); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return sharedBytes(); } - else if constexpr (__id == 2) { return headroomBytes(); } - else if constexpr (__id == 3) { return reservedBytes(); } + if constexpr (__id == 1) { return matchToAction(); } + else if constexpr (__id == 2) { return defaultQosPolicy(); } + else if constexpr (__id == 3) { return portIdToQosPolicy(); } } template @@ -9715,43 +9445,43 @@ std::pair -class ChildThriftPath<::std::map<::std::string, ::std::string>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::vector<::facebook::fboss::state::TrafficClassToQosAttributeEntry>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::map<::std::string, ::std::string>, + ::std::vector<::facebook::fboss::state::TrafficClassToQosAttributeEntry>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::string>, - ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::string_t>, + ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::state::TrafficClassToQosAttributeEntry>>, Parent> { public: using Self = Path< - ::std::map<::std::string, ::std::string>, + ::std::vector<::facebook::fboss::state::TrafficClassToQosAttributeEntry>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::string>, - ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::string_t>, + ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::state::TrafficClassToQosAttributeEntry>>, Parent>; - using Child = Path<::std::string, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t, Self>; + using Child = ChildThriftPath<::facebook::fboss::state::TrafficClassToQosAttributeEntry, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; using Self::Self; - CONTAINER_CHILD_GETTERS(::std::string); + CONTAINER_CHILD_GETTERS(::std::int32_t); }; template -class ChildThriftPath<::facebook::fboss::cfg::PortFlowletConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::state::BlockedMacAddress, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::cfg::PortFlowletConfig, + ::facebook::fboss::state::BlockedMacAddress, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::PortFlowletConfig>, + ::apache::thrift::type::struct_t<::facebook::fboss::state::BlockedMacAddress>, Parent> { public: using Self = Path< - ::facebook::fboss::cfg::PortFlowletConfig, + ::facebook::fboss::state::BlockedMacAddress, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::PortFlowletConfig>, + ::apache::thrift::type::struct_t<::facebook::fboss::state::BlockedMacAddress>, Parent>; - using strings = ::facebook::fboss::cfg::switch_config_tags::strings; + using strings = ::facebook::fboss::state::switch_state_tags::strings; template using Child = Path< ChildType, @@ -9760,30 +9490,25 @@ class ChildThriftPath<::facebook::fboss::cfg::PortFlowletConfig, ::facebook::fbo ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>, -std::pair>>; + using Children = fatal::tuple>, +std::pair>>; using ChildrenById = fatal::tuple< std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, - std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, - std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>>; + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>>; template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(scalingFactor, 1); - STRUCT_CHILD_GETTERS(loadWeight, 2); - STRUCT_CHILD_GETTERS(queueWeight, 3); + STRUCT_CHILD_GETTERS(macAddrToBlockVlanID, 1); + STRUCT_CHILD_GETTERS(macAddrToBlockAddr, 2); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return scalingFactor(); } - else if constexpr (__id == 2) { return loadWeight(); } - else if constexpr (__id == 3) { return queueWeight(); } + if constexpr (__id == 1) { return macAddrToBlockVlanID(); } + else if constexpr (__id == 2) { return macAddrToBlockAddr(); } } template @@ -9793,62 +9518,41 @@ std::pair -class ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::int16_t, ::facebook::fboss::state::FibContainerFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::map<::std::string, ::facebook::fboss::state::RouteFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::int16_t, ::facebook::fboss::state::FibContainerFields>>, + ::std::map<::std::string, ::facebook::fboss::state::RouteFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>>, - ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::map<::apache::thrift::type::i16_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::FibContainerFields>>>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::RouteFields>>, Parent> { public: using Self = Path< - ::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::int16_t, ::facebook::fboss::state::FibContainerFields>>, + ::std::map<::std::string, ::facebook::fboss::state::RouteFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>>, - ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::map<::apache::thrift::type::i16_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::FibContainerFields>>>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::RouteFields>>, Parent>; - using Child = ChildThriftPath<::std::map<::std::int16_t, ::facebook::fboss::state::FibContainerFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Child = ChildThriftPath<::facebook::fboss::state::RouteFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; using Self::Self; - CONTAINER_CHILD_GETTERS(::facebook::fboss::state::SwitchIdList); -}; - -template -class ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::string, ::facebook::fboss::state::MirrorFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : - public Path< - ::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::string, ::facebook::fboss::state::MirrorFields>>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>>, - ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::MirrorFields>>>, - Parent> { - public: - using Self = Path< - ::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::string, ::facebook::fboss::state::MirrorFields>>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>>, - ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::MirrorFields>>>, - Parent>; - using Child = ChildThriftPath<::std::map<::std::string, ::facebook::fboss::state::MirrorFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; - using Self::Self; - - CONTAINER_CHILD_GETTERS(::facebook::fboss::state::SwitchIdList); + CONTAINER_CHILD_GETTERS(::std::string); }; template -class ChildThriftPath<::facebook::fboss::cfg::VlanPort, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::cfg::SflowCollector, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::cfg::VlanPort, + ::facebook::fboss::cfg::SflowCollector, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::VlanPort>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::SflowCollector>, Parent> { public: using Self = Path< - ::facebook::fboss::cfg::VlanPort, + ::facebook::fboss::cfg::SflowCollector, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::VlanPort>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::SflowCollector>, Parent>; using strings = ::facebook::fboss::cfg::switch_config_tags::strings; template @@ -9859,35 +9563,25 @@ class ChildThriftPath<::facebook::fboss::cfg::VlanPort, ::facebook::fboss::fsdb: ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>, -std::pair>>, -std::pair>>; - using ChildrenById = fatal::tuple< std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::facebook::fboss::cfg::SpanningTreeState, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::SpanningTreeState>>>, - std::pair, Child>>; + using Children = fatal::tuple>, +std::pair>>; + using ChildrenById = fatal::tuple< std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>>; template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(vlanID, 1); - STRUCT_CHILD_GETTERS(logicalPort, 2); - STRUCT_CHILD_GETTERS(spanningTreeState, 3); - STRUCT_CHILD_GETTERS(emitTags, 4); + STRUCT_CHILD_GETTERS(ip, 1); + STRUCT_CHILD_GETTERS(port, 2); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return vlanID(); } - else if constexpr (__id == 2) { return logicalPort(); } - else if constexpr (__id == 3) { return spanningTreeState(); } - else if constexpr (__id == 4) { return emitTags(); } + if constexpr (__id == 1) { return ip(); } + else if constexpr (__id == 2) { return port(); } } template @@ -9896,65 +9590,23 @@ std::pair -class ChildThriftPath<::std::vector<::facebook::fboss::cfg::VlanPort>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : - public Path< - ::std::vector<::facebook::fboss::cfg::VlanPort>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::VlanPort>>, - Parent> { - public: - using Self = Path< - ::std::vector<::facebook::fboss::cfg::VlanPort>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::VlanPort>>, - Parent>; - using Child = ChildThriftPath<::facebook::fboss::cfg::VlanPort, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; - using Self::Self; - - CONTAINER_CHILD_GETTERS(::std::int32_t); -}; - -template -class ChildThriftPath<::std::vector<::facebook::fboss::HostLaneSettings>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : - public Path< - ::std::vector<::facebook::fboss::HostLaneSettings>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::HostLaneSettings>>, - Parent> { - public: - using Self = Path< - ::std::vector<::facebook::fboss::HostLaneSettings>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::HostLaneSettings>>, - Parent>; - using Child = ChildThriftPath<::facebook::fboss::HostLaneSettings, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; - using Self::Self; - - CONTAINER_CHILD_GETTERS(::std::int32_t); -}; - template -class ChildThriftPath<::facebook::fboss::phy::PmdState, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::state::ControlPlaneFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::phy::PmdState, + ::facebook::fboss::state::ControlPlaneFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::phy::PmdState>, + ::apache::thrift::type::struct_t<::facebook::fboss::state::ControlPlaneFields>, Parent> { public: using Self = Path< - ::facebook::fboss::phy::PmdState, + ::facebook::fboss::state::ControlPlaneFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::phy::PmdState>, + ::apache::thrift::type::struct_t<::facebook::fboss::state::ControlPlaneFields>, Parent>; - using strings = ::facebook::fboss::phy::phy_tags::strings; + using strings = ::facebook::fboss::state::switch_state_tags::strings; template using Child = Path< ChildType, @@ -9963,20 +9615,35 @@ class ChildThriftPath<::facebook::fboss::phy::PmdState, ::facebook::fboss::fsdb: ChildTag, Self >; - using Children = fatal::tuple, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; - using ChildrenById = fatal::tuple< std::pair, ChildThriftPath<::std::map<::std::int16_t, ::facebook::fboss::phy::LaneState>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + using Children = fatal::tuple, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + using ChildrenById = fatal::tuple< std::pair, ChildThriftPath<::std::vector<::facebook::fboss::PortQueueFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::PacketRxReasonToQueue>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, ChildThriftPath<::std::vector<::facebook::fboss::PortQueueFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; template - using NameToId = fatal::tuple>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(lanes, 1); + STRUCT_CHILD_GETTERS(queues, 1); + STRUCT_CHILD_GETTERS(rxReasonToQueue, 2); + STRUCT_CHILD_GETTERS(defaultQosPolicy, 3); + STRUCT_CHILD_GETTERS(voqs, 4); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return lanes(); } + if constexpr (__id == 1) { return queues(); } + else if constexpr (__id == 2) { return rxReasonToQueue(); } + else if constexpr (__id == 3) { return defaultQosPolicy(); } + else if constexpr (__id == 4) { return voqs(); } } template @@ -9985,23 +9652,44 @@ class ChildThriftPath<::facebook::fboss::phy::PmdState, ::facebook::fboss::fsdb: } }; +template +class ChildThriftPath<::std::vector<::facebook::fboss::cfg::MatchToAction>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : + public Path< + ::std::vector<::facebook::fboss::cfg::MatchToAction>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::MatchToAction>>, + Parent> { + public: + using Self = Path< + ::std::vector<::facebook::fboss::cfg::MatchToAction>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::MatchToAction>>, + Parent>; + using Child = ChildThriftPath<::facebook::fboss::cfg::MatchToAction, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Self::Self; + + CONTAINER_CHILD_GETTERS(::std::int32_t); +}; + template -class ChildThriftPath<::facebook::network::thrift::BinaryAddress, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::cfg::LoadBalancer, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::network::thrift::BinaryAddress, + ::facebook::fboss::cfg::LoadBalancer, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::network::thrift::BinaryAddress>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::LoadBalancer>, Parent> { public: using Self = Path< - ::facebook::network::thrift::BinaryAddress, + ::facebook::fboss::cfg::LoadBalancer, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::network::thrift::BinaryAddress>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::LoadBalancer>, Parent>; - using strings = ::facebook::network::thrift::Address_tags::strings; + using strings = ::facebook::fboss::cfg::switch_config_tags::strings; template using Child = Path< ChildType, @@ -10010,30 +9698,35 @@ class ChildThriftPath<::facebook::network::thrift::BinaryAddress, ::facebook::fb ChildTag, Self >; - using Children = fatal::tuple>>, -std::pair>, -std::pair>>; - using ChildrenById = fatal::tuple< std::pair, Child<::folly::fbstring, ::apache::thrift::type_class::binary, ::apache::thrift::type::cpp_type<::folly::fbstring, ::apache::thrift::type::binary_t>>>, - std::pair, Child<::std::int64_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i64_t>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>>; + using Children = fatal::tuple>>, +std::pair>, +std::pair>>, +std::pair>>; + using ChildrenById = fatal::tuple< std::pair, Child<::facebook::fboss::cfg::LoadBalancerID, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::LoadBalancerID>>>, + std::pair, ChildThriftPath<::facebook::fboss::cfg::Fields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, Child<::facebook::fboss::cfg::HashingAlgorithm, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::HashingAlgorithm>>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>>; template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(addr, 1); - STRUCT_CHILD_GETTERS(port, 2); - STRUCT_CHILD_GETTERS(ifName, 3); + STRUCT_CHILD_GETTERS(id, 1); + STRUCT_CHILD_GETTERS(fieldSelection, 2); + STRUCT_CHILD_GETTERS(algorithm, 3); + STRUCT_CHILD_GETTERS(seed, 4); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return addr(); } - else if constexpr (__id == 2) { return port(); } - else if constexpr (__id == 3) { return ifName(); } + if constexpr (__id == 1) { return id(); } + else if constexpr (__id == 2) { return fieldSelection(); } + else if constexpr (__id == 3) { return algorithm(); } + else if constexpr (__id == 4) { return seed(); } } template @@ -10043,21 +9736,21 @@ std::pair }; template -class ChildThriftPath<::std::vector<::facebook::fboss::state::BlockedNeighbor>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::vector<::facebook::fboss::MediaLaneSettings>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::vector<::facebook::fboss::state::BlockedNeighbor>, + ::std::vector<::facebook::fboss::MediaLaneSettings>, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::state::BlockedNeighbor>>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::MediaLaneSettings>>, Parent> { public: using Self = Path< - ::std::vector<::facebook::fboss::state::BlockedNeighbor>, + ::std::vector<::facebook::fboss::MediaLaneSettings>, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::state::BlockedNeighbor>>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::MediaLaneSettings>>, Parent>; - using Child = ChildThriftPath<::facebook::fboss::state::BlockedNeighbor, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Child = ChildThriftPath<::facebook::fboss::MediaLaneSettings, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; using Self::Self; CONTAINER_CHILD_GETTERS(::std::int32_t); @@ -10065,21 +9758,21 @@ class ChildThriftPath<::std::vector<::facebook::fboss::state::BlockedNeighbor>, template -class ChildThriftPath<::facebook::fboss::cfg::Neighbor, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::state::RoutePrefix, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::cfg::Neighbor, + ::facebook::fboss::state::RoutePrefix, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::Neighbor>, + ::apache::thrift::type::struct_t<::facebook::fboss::state::RoutePrefix>, Parent> { public: using Self = Path< - ::facebook::fboss::cfg::Neighbor, + ::facebook::fboss::state::RoutePrefix, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::Neighbor>, + ::apache::thrift::type::struct_t<::facebook::fboss::state::RoutePrefix>, Parent>; - using strings = ::facebook::fboss::cfg::switch_config_tags::strings; + using strings = ::facebook::fboss::state::switch_state_tags::strings; template using Child = Path< ChildType, @@ -10088,25 +9781,30 @@ class ChildThriftPath<::facebook::fboss::cfg::Neighbor, ::facebook::fboss::fsdb: ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>>; - using ChildrenById = fatal::tuple< std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>>; + using Children = fatal::tuple>, +std::pair>, +std::pair>>; + using ChildrenById = fatal::tuple< std::pair, Child>, + std::pair, ChildThriftPath<::facebook::network::thrift::BinaryAddress, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, Child<::std::int8_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::byte_t>>>; template - using NameToId = fatal::tuple>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(vlanID, 1); - STRUCT_CHILD_GETTERS(ipAddress, 2); + STRUCT_CHILD_GETTERS(v6, 1); + STRUCT_CHILD_GETTERS(prefix, 2); + STRUCT_CHILD_GETTERS(mask, 3); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return vlanID(); } - else if constexpr (__id == 2) { return ipAddress(); } + if constexpr (__id == 1) { return v6(); } + else if constexpr (__id == 2) { return prefix(); } + else if constexpr (__id == 3) { return mask(); } } template @@ -10115,86 +9813,132 @@ std::pair -class ChildThriftPath<::std::vector<::facebook::fboss::cfg::RedirectNextHop>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::cfg::SdkVersion, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::vector<::facebook::fboss::cfg::RedirectNextHop>, + ::facebook::fboss::cfg::SdkVersion, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::RedirectNextHop>>, + ::apache::thrift::type_class::structure, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::SdkVersion>, Parent> { public: using Self = Path< - ::std::vector<::facebook::fboss::cfg::RedirectNextHop>, + ::facebook::fboss::cfg::SdkVersion, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::RedirectNextHop>>, + ::apache::thrift::type_class::structure, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::SdkVersion>, Parent>; - using Child = ChildThriftPath<::facebook::fboss::cfg::RedirectNextHop, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; - using Self::Self; - - CONTAINER_CHILD_GETTERS(::std::int32_t); -}; + using strings = ::facebook::fboss::cfg::switch_config_tags::strings; + template + using Child = Path< + ChildType, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ChildTC, + ChildTag, + Self + >; + using Children = fatal::tuple>, +std::pair>, +std::pair>>; + using ChildrenById = fatal::tuple< std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>>; + template + using NameToId = fatal::tuple>, +std::pair>, +std::pair>>::template type_of; -template -class ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::facebook::fboss::cfg::LoadBalancerID, ::facebook::fboss::state::LoadBalancerFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : - public Path< - ::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::facebook::fboss::cfg::LoadBalancerID, ::facebook::fboss::state::LoadBalancerFields>>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::map<::apache::thrift::type_class::enumeration, ::apache::thrift::type_class::structure>>, - ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::map<::apache::thrift::type::enum_t<::facebook::fboss::cfg::LoadBalancerID>, ::apache::thrift::type::struct_t<::facebook::fboss::state::LoadBalancerFields>>>, - Parent> { - public: - using Self = Path< - ::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::facebook::fboss::cfg::LoadBalancerID, ::facebook::fboss::state::LoadBalancerFields>>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::map<::apache::thrift::type_class::enumeration, ::apache::thrift::type_class::structure>>, - ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::map<::apache::thrift::type::enum_t<::facebook::fboss::cfg::LoadBalancerID>, ::apache::thrift::type::struct_t<::facebook::fboss::state::LoadBalancerFields>>>, - Parent>; - using Child = ChildThriftPath<::std::map<::facebook::fboss::cfg::LoadBalancerID, ::facebook::fboss::state::LoadBalancerFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + template + using TypeFor = typename Children::template type_of; using Self::Self; + + STRUCT_CHILD_GETTERS(asicSdk, 1); + STRUCT_CHILD_GETTERS(saiSdk, 2); + STRUCT_CHILD_GETTERS(firmware, 3); - CONTAINER_CHILD_GETTERS(::facebook::fboss::state::SwitchIdList); + template + auto operator()(const std::integral_constant&) { + if constexpr (__id == 1) { return asicSdk(); } + else if constexpr (__id == 2) { return saiSdk(); } + else if constexpr (__id == 3) { return firmware(); } + } + + template + auto operator()(const fatal::sequence&) { + return operator()(NameToId>()); + } }; + template -class ChildThriftPath<::std::map<::std::int16_t, ::facebook::fboss::state::PortFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::switch_reachability::SwitchReachability, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::map<::std::int16_t, ::facebook::fboss::state::PortFields>, + ::facebook::fboss::switch_reachability::SwitchReachability, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>, - ::apache::thrift::type::map<::apache::thrift::type::i16_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::PortFields>>, + ::apache::thrift::type_class::structure, + ::apache::thrift::type::struct_t<::facebook::fboss::switch_reachability::SwitchReachability>, Parent> { public: using Self = Path< - ::std::map<::std::int16_t, ::facebook::fboss::state::PortFields>, + ::facebook::fboss::switch_reachability::SwitchReachability, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>, - ::apache::thrift::type::map<::apache::thrift::type::i16_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::PortFields>>, + ::apache::thrift::type_class::structure, + ::apache::thrift::type::struct_t<::facebook::fboss::switch_reachability::SwitchReachability>, Parent>; - using Child = ChildThriftPath<::facebook::fboss::state::PortFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using strings = ::facebook::fboss::switch_reachability::switch_reachability_tags::strings; + template + using Child = Path< + ChildType, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ChildTC, + ChildTag, + Self + >; + using Children = fatal::tuple>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + using ChildrenById = fatal::tuple< std::pair, ChildThriftPath<::std::map<::std::int32_t, ::std::vector<::std::string>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::map<::std::int64_t, ::std::int32_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + template + using NameToId = fatal::tuple>, +std::pair>>::template type_of; + + template + using TypeFor = typename Children::template type_of; using Self::Self; + + STRUCT_CHILD_GETTERS(fabricPortGroupMap, 1); + STRUCT_CHILD_GETTERS(switchIdToFabricPortGroupMap, 2); - CONTAINER_CHILD_GETTERS(::std::int16_t); + template + auto operator()(const std::integral_constant&) { + if constexpr (__id == 1) { return fabricPortGroupMap(); } + else if constexpr (__id == 2) { return switchIdToFabricPortGroupMap(); } + } + + template + auto operator()(const fatal::sequence&) { + return operator()(NameToId>()); + } }; template -class ChildThriftPath<::facebook::fboss::cfg::PfcWatchdog, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::MediaLaneSignals, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::cfg::PfcWatchdog, + ::facebook::fboss::MediaLaneSignals, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::PfcWatchdog>, + ::apache::thrift::type::struct_t<::facebook::fboss::MediaLaneSignals>, Parent> { public: using Self = Path< - ::facebook::fboss::cfg::PfcWatchdog, + ::facebook::fboss::MediaLaneSignals, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::PfcWatchdog>, + ::apache::thrift::type::struct_t<::facebook::fboss::MediaLaneSignals>, Parent>; - using strings = ::facebook::fboss::cfg::switch_config_tags::strings; + using strings = ::facebook::fboss::transceiver_tags::strings; template using Child = Path< ChildType, @@ -10203,30 +9947,50 @@ class ChildThriftPath<::facebook::fboss::cfg::PfcWatchdog, ::facebook::fboss::fs ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>, -std::pair>>>; + using Children = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>>; using ChildrenById = fatal::tuple< std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::facebook::fboss::cfg::PfcWatchdogRecoveryAction, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::PfcWatchdogRecoveryAction>>>>; + std::pair, Child>, + std::pair, Child>, + std::pair, Child>, + std::pair, Child>, + std::pair, Child>, + std::pair, Child>>; template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(detectionTimeMsecs, 1); - STRUCT_CHILD_GETTERS(recoveryTimeMsecs, 2); - STRUCT_CHILD_GETTERS(recoveryAction, 3); + STRUCT_CHILD_GETTERS(lane, 1); + STRUCT_CHILD_GETTERS(txLos, 2); + STRUCT_CHILD_GETTERS(rxLos, 3); + STRUCT_CHILD_GETTERS(txLol, 4); + STRUCT_CHILD_GETTERS(rxLol, 5); + STRUCT_CHILD_GETTERS(txFault, 6); + STRUCT_CHILD_GETTERS(txAdaptEqFault, 7); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return detectionTimeMsecs(); } - else if constexpr (__id == 2) { return recoveryTimeMsecs(); } - else if constexpr (__id == 3) { return recoveryAction(); } + if constexpr (__id == 1) { return lane(); } + else if constexpr (__id == 2) { return txLos(); } + else if constexpr (__id == 3) { return rxLos(); } + else if constexpr (__id == 4) { return txLol(); } + else if constexpr (__id == 5) { return rxLol(); } + else if constexpr (__id == 6) { return txFault(); } + else if constexpr (__id == 7) { return txAdaptEqFault(); } } template @@ -10236,64 +10000,64 @@ std::pair -class ChildThriftPath<::std::map<::std::int64_t, ::facebook::fboss::cfg::AsicConfigEntry>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::map<::std::string, ::facebook::fboss::state::AclEntryFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::map<::std::int64_t, ::facebook::fboss::cfg::AsicConfigEntry>, + ::std::map<::std::string, ::facebook::fboss::state::AclEntryFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::variant>, - ::apache::thrift::type::map<::apache::thrift::type::i64_t, ::apache::thrift::type::union_t<::facebook::fboss::cfg::AsicConfigEntry>>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::AclEntryFields>>, Parent> { public: using Self = Path< - ::std::map<::std::int64_t, ::facebook::fboss::cfg::AsicConfigEntry>, + ::std::map<::std::string, ::facebook::fboss::state::AclEntryFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::variant>, - ::apache::thrift::type::map<::apache::thrift::type::i64_t, ::apache::thrift::type::union_t<::facebook::fboss::cfg::AsicConfigEntry>>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::AclEntryFields>>, Parent>; - using Child = ChildThriftPath<::facebook::fboss::cfg::AsicConfigEntry, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Child = ChildThriftPath<::facebook::fboss::state::AclEntryFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; using Self::Self; - CONTAINER_CHILD_GETTERS(::std::int64_t); + CONTAINER_CHILD_GETTERS(::std::string); }; template -class ChildThriftPath<::std::map<::facebook::fboss::cfg::BufferPoolConfigName, ::facebook::fboss::cfg::BufferPoolConfig>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::map<::facebook::fboss::cfg::BurstMonitorWeight, ::std::int16_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::map<::facebook::fboss::cfg::BufferPoolConfigName, ::facebook::fboss::cfg::BufferPoolConfig>, + ::std::map<::facebook::fboss::cfg::BurstMonitorWeight, ::std::int16_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>, - ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::cfg::BufferPoolConfig>>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::enumeration, ::apache::thrift::type_class::integral>, + ::apache::thrift::type::map<::apache::thrift::type::enum_t<::facebook::fboss::cfg::BurstMonitorWeight>, ::apache::thrift::type::i16_t>, Parent> { public: using Self = Path< - ::std::map<::facebook::fboss::cfg::BufferPoolConfigName, ::facebook::fboss::cfg::BufferPoolConfig>, + ::std::map<::facebook::fboss::cfg::BurstMonitorWeight, ::std::int16_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>, - ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::cfg::BufferPoolConfig>>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::enumeration, ::apache::thrift::type_class::integral>, + ::apache::thrift::type::map<::apache::thrift::type::enum_t<::facebook::fboss::cfg::BurstMonitorWeight>, ::apache::thrift::type::i16_t>, Parent>; - using Child = ChildThriftPath<::facebook::fboss::cfg::BufferPoolConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Child = Path<::std::int16_t, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t, Self>; using Self::Self; - CONTAINER_CHILD_GETTERS(::facebook::fboss::cfg::BufferPoolConfigName); + CONTAINER_CHILD_GETTERS(::facebook::fboss::cfg::BurstMonitorWeight); }; template -class ChildThriftPath<::facebook::fboss::state::LoadBalancerFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::MediaInterfaceId, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::state::LoadBalancerFields, + ::facebook::fboss::MediaInterfaceId, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::state::LoadBalancerFields>, + ::apache::thrift::type::struct_t<::facebook::fboss::MediaInterfaceId>, Parent> { public: using Self = Path< - ::facebook::fboss::state::LoadBalancerFields, + ::facebook::fboss::MediaInterfaceId, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::state::LoadBalancerFields>, + ::apache::thrift::type::struct_t<::facebook::fboss::MediaInterfaceId>, Parent>; - using strings = ::facebook::fboss::state::switch_state_tags::strings; + using strings = ::facebook::fboss::transceiver_tags::strings; template using Child = Path< ChildType, @@ -10302,117 +10066,30 @@ class ChildThriftPath<::facebook::fboss::state::LoadBalancerFields, ::facebook:: ChildTag, Self >; - using Children = fatal::tuple>>, -std::pair>>, -std::pair>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; - using ChildrenById = fatal::tuple< std::pair, Child<::facebook::fboss::cfg::LoadBalancerID, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::LoadBalancerID>>>, - std::pair, Child<::facebook::fboss::cfg::HashingAlgorithm, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::HashingAlgorithm>>>, - std::pair, Child<::std::int64_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i64_t>>, - std::pair, ChildThriftPath<::std::set<::facebook::fboss::cfg::IPv4Field>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::set<::facebook::fboss::cfg::IPv6Field>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::set<::facebook::fboss::cfg::TransportField>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::set<::facebook::fboss::cfg::MPLSField>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::vector<::std::string>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + using Children = fatal::tuple>, +std::pair>, +std::pair>>>; + using ChildrenById = fatal::tuple< std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, ChildThriftPath<::facebook::fboss::MediaInterfaceUnion, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, Child<::facebook::fboss::MediaInterfaceCode, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::MediaInterfaceCode>>>>; template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>>::template type_of; - - template - using TypeFor = typename Children::template type_of; - using Self::Self; - - STRUCT_CHILD_GETTERS(id, 1); - STRUCT_CHILD_GETTERS(algorithm, 2); - STRUCT_CHILD_GETTERS(seed, 3); - STRUCT_CHILD_GETTERS(v4Fields, 4); - STRUCT_CHILD_GETTERS(v6Fields, 5); - STRUCT_CHILD_GETTERS(transportFields, 6); - STRUCT_CHILD_GETTERS(mplsFields, 7); - STRUCT_CHILD_GETTERS(udfGroups, 8); - - template - auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return id(); } - else if constexpr (__id == 2) { return algorithm(); } - else if constexpr (__id == 3) { return seed(); } - else if constexpr (__id == 4) { return v4Fields(); } - else if constexpr (__id == 5) { return v6Fields(); } - else if constexpr (__id == 6) { return transportFields(); } - else if constexpr (__id == 7) { return mplsFields(); } - else if constexpr (__id == 8) { return udfGroups(); } - } - - template - auto operator()(const fatal::sequence&) { - return operator()(NameToId>()); - } -}; - - -template -class ChildThriftPath<::facebook::fboss::fsdb::AgentData, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : - public Path< - ::facebook::fboss::fsdb::AgentData, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::fsdb::AgentData>, - Parent> { - public: - using Self = Path< - ::facebook::fboss::fsdb::AgentData, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::fsdb::AgentData>, - Parent>; - using strings = ::facebook::fboss::fsdb::fsdb_model_tags::strings; - template - using Child = Path< - ChildType, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ChildTC, - ChildTag, - Self - >; - using Children = fatal::tuple>, -std::pair>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; - using ChildrenById = fatal::tuple< std::pair, ChildThriftPath<::facebook::fboss::cfg::AgentConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::facebook::fboss::state::SwitchState, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::map<::std::string, ::facebook::fboss::fsdb::FsdbSubscriptionState>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::map<::std::int64_t, ::facebook::fboss::switch_reachability::SwitchReachability>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; - template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(config, 1); - STRUCT_CHILD_GETTERS(switchState, 2); - STRUCT_CHILD_GETTERS(fsdbSubscriptions, 4); - STRUCT_CHILD_GETTERS(dsfSwitchReachability, 5); + STRUCT_CHILD_GETTERS(lane, 1); + STRUCT_CHILD_GETTERS(media, 2); + STRUCT_CHILD_GETTERS(code, 3); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return config(); } - else if constexpr (__id == 2) { return switchState(); } - else if constexpr (__id == 4) { return fsdbSubscriptions(); } - else if constexpr (__id == 5) { return dsfSwitchReachability(); } + if constexpr (__id == 1) { return lane(); } + else if constexpr (__id == 2) { return media(); } + else if constexpr (__id == 3) { return code(); } } template @@ -10422,64 +10099,43 @@ std::pair -class ChildThriftPath<::std::map<::std::int64_t, ::std::int32_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : - public Path< - ::std::map<::std::int64_t, ::std::int32_t>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::integral>, - ::apache::thrift::type::map<::apache::thrift::type::i64_t, ::apache::thrift::type::i32_t>, - Parent> { - public: - using Self = Path< - ::std::map<::std::int64_t, ::std::int32_t>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::integral>, - ::apache::thrift::type::map<::apache::thrift::type::i64_t, ::apache::thrift::type::i32_t>, - Parent>; - using Child = Path<::std::int32_t, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t, Self>; - using Self::Self; - - CONTAINER_CHILD_GETTERS(::std::int64_t); -}; - -template -class ChildThriftPath<::std::map<::std::int64_t, ::facebook::fboss::state::SystemPortFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::string, ::facebook::fboss::BufferPoolFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::map<::std::int64_t, ::facebook::fboss::state::SystemPortFields>, + ::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::string, ::facebook::fboss::BufferPoolFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>, - ::apache::thrift::type::map<::apache::thrift::type::i64_t, ::apache::thrift::type::struct_t<::facebook::fboss::SystemPortThrift>>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::BufferPoolFields>>>, Parent> { public: using Self = Path< - ::std::map<::std::int64_t, ::facebook::fboss::state::SystemPortFields>, + ::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::string, ::facebook::fboss::BufferPoolFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>, - ::apache::thrift::type::map<::apache::thrift::type::i64_t, ::apache::thrift::type::struct_t<::facebook::fboss::SystemPortThrift>>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::BufferPoolFields>>>, Parent>; - using Child = ChildThriftPath<::facebook::fboss::state::SystemPortFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Child = ChildThriftPath<::std::map<::std::string, ::facebook::fboss::BufferPoolFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; using Self::Self; - CONTAINER_CHILD_GETTERS(::std::int64_t); + CONTAINER_CHILD_GETTERS(::facebook::fboss::state::SwitchIdList); }; template -class ChildThriftPath<::facebook::fboss::cfg::NdpConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::TeFlow, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::cfg::NdpConfig, + ::facebook::fboss::TeFlow, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::NdpConfig>, + ::apache::thrift::type::struct_t<::facebook::fboss::TeFlow>, Parent> { public: using Self = Path< - ::facebook::fboss::cfg::NdpConfig, + ::facebook::fboss::TeFlow, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::NdpConfig>, + ::apache::thrift::type::struct_t<::facebook::fboss::TeFlow>, Parent>; - using strings = ::facebook::fboss::cfg::switch_config_tags::strings; + using strings = ::facebook::fboss::ctrl_tags::strings; template using Child = Path< ChildType, @@ -10488,55 +10144,25 @@ class ChildThriftPath<::facebook::fboss::cfg::NdpConfig, ::facebook::fboss::fsdb ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>>; + using Children = fatal::tuple>, +std::pair>>; using ChildrenById = fatal::tuple< std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child>, - std::pair, Child>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>>; + std::pair, ChildThriftPath<::facebook::fboss::IpPrefix, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(routerAdvertisementSeconds, 1); - STRUCT_CHILD_GETTERS(curHopLimit, 2); - STRUCT_CHILD_GETTERS(routerLifetime, 3); - STRUCT_CHILD_GETTERS(prefixValidLifetimeSeconds, 4); - STRUCT_CHILD_GETTERS(prefixPreferredLifetimeSeconds, 5); - STRUCT_CHILD_GETTERS(routerAdvertisementManagedBit, 6); - STRUCT_CHILD_GETTERS(routerAdvertisementOtherBit, 7); - STRUCT_CHILD_GETTERS(routerAddress, 8); + STRUCT_CHILD_GETTERS(srcPort, 1); + STRUCT_CHILD_GETTERS(dstPrefix, 2); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return routerAdvertisementSeconds(); } - else if constexpr (__id == 2) { return curHopLimit(); } - else if constexpr (__id == 3) { return routerLifetime(); } - else if constexpr (__id == 4) { return prefixValidLifetimeSeconds(); } - else if constexpr (__id == 5) { return prefixPreferredLifetimeSeconds(); } - else if constexpr (__id == 6) { return routerAdvertisementManagedBit(); } - else if constexpr (__id == 7) { return routerAdvertisementOtherBit(); } - else if constexpr (__id == 8) { return routerAddress(); } + if constexpr (__id == 1) { return srcPort(); } + else if constexpr (__id == 2) { return dstPrefix(); } } template @@ -10547,19 +10173,19 @@ std::pair -class ChildThriftPath<::facebook::fboss::cfg::QosPolicy, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::cfg::BufferPoolConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::cfg::QosPolicy, + ::facebook::fboss::cfg::BufferPoolConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::QosPolicy>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::BufferPoolConfig>, Parent> { public: using Self = Path< - ::facebook::fboss::cfg::QosPolicy, + ::facebook::fboss::cfg::BufferPoolConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::QosPolicy>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::BufferPoolConfig>, Parent>; using strings = ::facebook::fboss::cfg::switch_config_tags::strings; template @@ -10570,30 +10196,30 @@ class ChildThriftPath<::facebook::fboss::cfg::QosPolicy, ::facebook::fboss::fsdb ChildTag, Self >; - using Children = fatal::tuple>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair>>; - using ChildrenById = fatal::tuple< std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::QosRule>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::facebook::fboss::cfg::QosMap, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + using Children = fatal::tuple>, +std::pair>, +std::pair>>; + using ChildrenById = fatal::tuple< std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>>; template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(name, 1); - STRUCT_CHILD_GETTERS(rules, 2); - STRUCT_CHILD_GETTERS(qosMap, 3); + STRUCT_CHILD_GETTERS(sharedBytes, 1); + STRUCT_CHILD_GETTERS(headroomBytes, 2); + STRUCT_CHILD_GETTERS(reservedBytes, 3); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return name(); } - else if constexpr (__id == 2) { return rules(); } - else if constexpr (__id == 3) { return qosMap(); } + if constexpr (__id == 1) { return sharedBytes(); } + else if constexpr (__id == 2) { return headroomBytes(); } + else if constexpr (__id == 3) { return reservedBytes(); } } template @@ -10602,21 +10228,42 @@ std::pair } }; +template +class ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::facebook::fboss::state::ControlPlaneFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : + public Path< + ::std::map<::facebook::fboss::state::SwitchIdList, ::facebook::fboss::state::ControlPlaneFields>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::ControlPlaneFields>>, + Parent> { + public: + using Self = Path< + ::std::map<::facebook::fboss::state::SwitchIdList, ::facebook::fboss::state::ControlPlaneFields>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::ControlPlaneFields>>, + Parent>; + using Child = ChildThriftPath<::facebook::fboss::state::ControlPlaneFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Self::Self; + + CONTAINER_CHILD_GETTERS(::facebook::fboss::state::SwitchIdList); +}; + template -class ChildThriftPath<::facebook::fboss::cfg::CPUTrafficPolicyConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::cfg::AggregatePortMember, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::cfg::CPUTrafficPolicyConfig, + ::facebook::fboss::cfg::AggregatePortMember, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::CPUTrafficPolicyConfig>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::AggregatePortMember>, Parent> { public: using Self = Path< - ::facebook::fboss::cfg::CPUTrafficPolicyConfig, + ::facebook::fboss::cfg::AggregatePortMember, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::CPUTrafficPolicyConfig>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::AggregatePortMember>, Parent>; using strings = ::facebook::fboss::cfg::switch_config_tags::strings; template @@ -10627,152 +10274,40 @@ class ChildThriftPath<::facebook::fboss::cfg::CPUTrafficPolicyConfig, ::facebook ChildTag, Self >; - using Children = fatal::tuple>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; - using ChildrenById = fatal::tuple< std::pair, ChildThriftPath<::facebook::fboss::cfg::TrafficPolicyConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::map<::facebook::fboss::cfg::PacketRxReason, ::std::int16_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::PacketRxReasonToQueue>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; - template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>>::template type_of; - - template - using TypeFor = typename Children::template type_of; - using Self::Self; - - STRUCT_CHILD_GETTERS(trafficPolicy, 1); - STRUCT_CHILD_GETTERS(rxReasonToCPUQueue, 2); - STRUCT_CHILD_GETTERS(rxReasonToQueueOrderedList, 3); - - template - auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return trafficPolicy(); } - else if constexpr (__id == 2) { return rxReasonToCPUQueue(); } - else if constexpr (__id == 3) { return rxReasonToQueueOrderedList(); } - } - - template - auto operator()(const fatal::sequence&) { - return operator()(NameToId>()); - } -}; - - -template -class ChildThriftPath<::facebook::fboss::state::QcmCfgFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : - public Path< - ::facebook::fboss::state::QcmCfgFields, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::state::QcmCfgFields>, - Parent> { - public: - using Self = Path< - ::facebook::fboss::state::QcmCfgFields, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::state::QcmCfgFields>, - Parent>; - using strings = ::facebook::fboss::state::switch_state_tags::strings; - template - using Child = Path< - ChildType, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ChildTC, - ChildTag, - Self - >; - using Children = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + using Children = fatal::tuple>, +std::pair>, +std::pair>>, +std::pair>>, +std::pair>>; using ChildrenById = fatal::tuple< std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child>, - std::pair, ChildThriftPath<::std::map<::std::int32_t, ::std::int32_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::facebook::fboss::IpPrefix, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::facebook::fboss::IpPrefix, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, - std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, - std::pair, Child<::std::int8_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::byte_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, ChildThriftPath<::std::vector<::std::int32_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::map<::std::int32_t, ::std::set<::std::int32_t>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + std::pair, Child<::facebook::fboss::cfg::LacpPortRate, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::LacpPortRate>>>, + std::pair, Child<::facebook::fboss::cfg::LacpPortActivity, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::LacpPortActivity>>>, + std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>>; template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(agingIntervalInMsecs, 1); - STRUCT_CHILD_GETTERS(numFlowSamplesPerView, 2); - STRUCT_CHILD_GETTERS(flowLimit, 3); - STRUCT_CHILD_GETTERS(numFlowsClear, 4); - STRUCT_CHILD_GETTERS(scanIntervalInUsecs, 5); - STRUCT_CHILD_GETTERS(exportThreshold, 6); - STRUCT_CHILD_GETTERS(monitorQcmCfgPortsOnly, 7); - STRUCT_CHILD_GETTERS(flowWeights, 8); - STRUCT_CHILD_GETTERS(collectorSrcIp, 9); - STRUCT_CHILD_GETTERS(collectorDstIp, 10); - STRUCT_CHILD_GETTERS(collectorSrcPort, 11); - STRUCT_CHILD_GETTERS(collectorDstPort, 12); - STRUCT_CHILD_GETTERS(collectorDscp, 13); - STRUCT_CHILD_GETTERS(ppsToQcm, 14); - STRUCT_CHILD_GETTERS(monitorQcmPortList, 15); - STRUCT_CHILD_GETTERS(port2QosQueueIds, 16); + STRUCT_CHILD_GETTERS(memberPortID, 1); + STRUCT_CHILD_GETTERS(priority, 2); + STRUCT_CHILD_GETTERS(rate, 3); + STRUCT_CHILD_GETTERS(activity, 4); + STRUCT_CHILD_GETTERS(holdTimerMultiplier, 5); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return agingIntervalInMsecs(); } - else if constexpr (__id == 2) { return numFlowSamplesPerView(); } - else if constexpr (__id == 3) { return flowLimit(); } - else if constexpr (__id == 4) { return numFlowsClear(); } - else if constexpr (__id == 5) { return scanIntervalInUsecs(); } - else if constexpr (__id == 6) { return exportThreshold(); } - else if constexpr (__id == 7) { return monitorQcmCfgPortsOnly(); } - else if constexpr (__id == 8) { return flowWeights(); } - else if constexpr (__id == 9) { return collectorSrcIp(); } - else if constexpr (__id == 10) { return collectorDstIp(); } - else if constexpr (__id == 11) { return collectorSrcPort(); } - else if constexpr (__id == 12) { return collectorDstPort(); } - else if constexpr (__id == 13) { return collectorDscp(); } - else if constexpr (__id == 14) { return ppsToQcm(); } - else if constexpr (__id == 15) { return monitorQcmPortList(); } - else if constexpr (__id == 16) { return port2QosQueueIds(); } + if constexpr (__id == 1) { return memberPortID(); } + else if constexpr (__id == 2) { return priority(); } + else if constexpr (__id == 3) { return rate(); } + else if constexpr (__id == 4) { return activity(); } + else if constexpr (__id == 5) { return holdTimerMultiplier(); } } template @@ -10782,64 +10317,43 @@ std::pair -class ChildThriftPath<::std::map<::std::int32_t, ::std::vector<::std::string>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : - public Path< - ::std::map<::std::int32_t, ::std::vector<::std::string>>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::list<::apache::thrift::type_class::string>>, - ::apache::thrift::type::map<::apache::thrift::type::i32_t, ::apache::thrift::type::list<::apache::thrift::type::string_t>>, - Parent> { - public: - using Self = Path< - ::std::map<::std::int32_t, ::std::vector<::std::string>>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::list<::apache::thrift::type_class::string>>, - ::apache::thrift::type::map<::apache::thrift::type::i32_t, ::apache::thrift::type::list<::apache::thrift::type::string_t>>, - Parent>; - using Child = ChildThriftPath<::std::vector<::std::string>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; - using Self::Self; - - CONTAINER_CHILD_GETTERS(::std::int32_t); -}; - -template -class ChildThriftPath<::std::map<::std::int16_t, ::std::int16_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::map<::std::string, ::facebook::fboss::phy::PhyState>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::map<::std::int16_t, ::std::int16_t>, + ::std::map<::std::string, ::facebook::fboss::phy::PhyState>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::integral>, - ::apache::thrift::type::map<::apache::thrift::type::i16_t, ::apache::thrift::type::i16_t>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::phy::PhyState>>, Parent> { public: using Self = Path< - ::std::map<::std::int16_t, ::std::int16_t>, + ::std::map<::std::string, ::facebook::fboss::phy::PhyState>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::integral>, - ::apache::thrift::type::map<::apache::thrift::type::i16_t, ::apache::thrift::type::i16_t>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::phy::PhyState>>, Parent>; - using Child = Path<::std::int16_t, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t, Self>; + using Child = ChildThriftPath<::facebook::fboss::phy::PhyState, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; using Self::Self; - CONTAINER_CHILD_GETTERS(::std::int16_t); + CONTAINER_CHILD_GETTERS(::std::string); }; template -class ChildThriftPath<::facebook::fboss::state::TrafficClassToQosAttributeMap, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::cfg::AgentConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::state::TrafficClassToQosAttributeMap, + ::facebook::fboss::cfg::AgentConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::state::TrafficClassToQosAttributeMap>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::AgentConfig>, Parent> { public: using Self = Path< - ::facebook::fboss::state::TrafficClassToQosAttributeMap, + ::facebook::fboss::cfg::AgentConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::state::TrafficClassToQosAttributeMap>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::AgentConfig>, Parent>; - using strings = ::facebook::fboss::state::switch_state_tags::strings; + using strings = ::facebook::fboss::cfg::agent_config_tags::strings; template using Child = Path< ChildType, @@ -10848,25 +10362,30 @@ class ChildThriftPath<::facebook::fboss::state::TrafficClassToQosAttributeMap, : ChildTag, Self >; - using Children = fatal::tuple, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; - using ChildrenById = fatal::tuple< std::pair, ChildThriftPath<::std::vector<::facebook::fboss::state::TrafficClassToQosAttributeEntry>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::vector<::facebook::fboss::state::TrafficClassToQosAttributeEntry>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + using Children = fatal::tuple, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair>, +std::pair>>; + using ChildrenById = fatal::tuple< std::pair, ChildThriftPath<::std::map<::std::string, ::std::string>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::facebook::fboss::cfg::SwitchConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::facebook::fboss::cfg::PlatformConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; template - using NameToId = fatal::tuple>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(from, 1); - STRUCT_CHILD_GETTERS(to, 2); + STRUCT_CHILD_GETTERS(defaultCommandLineArgs, 1); + STRUCT_CHILD_GETTERS(sw, 2); + STRUCT_CHILD_GETTERS(platform, 3); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return from(); } - else if constexpr (__id == 2) { return to(); } + if constexpr (__id == 1) { return defaultCommandLineArgs(); } + else if constexpr (__id == 2) { return sw(); } + else if constexpr (__id == 3) { return platform(); } } template @@ -10877,19 +10396,19 @@ std::pair>>:: template -class ChildThriftPath<::facebook::fboss::state::BlockedNeighbor, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::state::SwitchState, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::state::BlockedNeighbor, + ::facebook::fboss::state::SwitchState, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::state::BlockedNeighbor>, + ::apache::thrift::type::struct_t<::facebook::fboss::state::SwitchState>, Parent> { public: using Self = Path< - ::facebook::fboss::state::BlockedNeighbor, + ::facebook::fboss::state::SwitchState, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::state::BlockedNeighbor>, + ::apache::thrift::type::struct_t<::facebook::fboss::state::SwitchState>, Parent>; using strings = ::facebook::fboss::state::switch_state_tags::strings; template @@ -10900,25 +10419,135 @@ class ChildThriftPath<::facebook::fboss::state::BlockedNeighbor, ::facebook::fbo ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>>; - using ChildrenById = fatal::tuple< std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, - std::pair, ChildThriftPath<::facebook::network::thrift::BinaryAddress, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; - template - using NameToId = fatal::tuple>, -std::pair>>::template type_of; - - template - using TypeFor = typename Children::template type_of; - using Self::Self; - - STRUCT_CHILD_GETTERS(blockNeighborVlanID, 1); - STRUCT_CHILD_GETTERS(blockNeighborIP, 2); + using Children = fatal::tuple>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + using ChildrenById = fatal::tuple< std::pair, ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::int16_t, ::facebook::fboss::state::PortFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::int16_t, ::facebook::fboss::state::VlanFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::string, ::facebook::fboss::state::AclEntryFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::int16_t, ::facebook::fboss::state::TransceiverSpecFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::string, ::facebook::fboss::BufferPoolFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::string, ::facebook::fboss::state::MirrorFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::facebook::fboss::state::ControlPlaneFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::facebook::fboss::state::SwitchSettingsFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::int64_t, ::facebook::fboss::state::SystemPortFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::int16_t, ::facebook::fboss::state::FibContainerFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::int32_t, ::facebook::fboss::state::LabelForwardingEntryFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::string, ::facebook::fboss::state::QosPolicyFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::string, ::facebook::fboss::state::SflowCollectorFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::string, ::facebook::fboss::state::IpTunnelFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::string, ::facebook::fboss::state::TeFlowEntryFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::int16_t, ::facebook::fboss::state::AggregatePortFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::facebook::fboss::cfg::LoadBalancerID, ::facebook::fboss::state::LoadBalancerFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::facebook::fboss::cfg::AclStage, ::facebook::fboss::state::AclTableGroupFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::int32_t, ::facebook::fboss::state::InterfaceFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::int64_t, ::facebook::fboss::cfg::DsfNode>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::string, ::facebook::fboss::state::PortFlowletFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::string, ::facebook::fboss::state::MirrorOnDropReportFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::int64_t, ::facebook::fboss::state::SystemPortFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::int32_t, ::facebook::fboss::state::InterfaceFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + template + using NameToId = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>>::template type_of; + + template + using TypeFor = typename Children::template type_of; + using Self::Self; + + STRUCT_CHILD_GETTERS(portMaps, 100); + STRUCT_CHILD_GETTERS(vlanMaps, 101); + STRUCT_CHILD_GETTERS(aclMaps, 102); + STRUCT_CHILD_GETTERS(transceiverMaps, 103); + STRUCT_CHILD_GETTERS(bufferPoolCfgMaps, 104); + STRUCT_CHILD_GETTERS(mirrorMaps, 105); + STRUCT_CHILD_GETTERS(controlPlaneMap, 106); + STRUCT_CHILD_GETTERS(switchSettingsMap, 107); + STRUCT_CHILD_GETTERS(systemPortMaps, 108); + STRUCT_CHILD_GETTERS(fibsMap, 109); + STRUCT_CHILD_GETTERS(labelFibMap, 110); + STRUCT_CHILD_GETTERS(qosPolicyMaps, 111); + STRUCT_CHILD_GETTERS(sflowCollectorMaps, 112); + STRUCT_CHILD_GETTERS(ipTunnelMaps, 113); + STRUCT_CHILD_GETTERS(teFlowTables, 114); + STRUCT_CHILD_GETTERS(aggregatePortMaps, 115); + STRUCT_CHILD_GETTERS(loadBalancerMaps, 116); + STRUCT_CHILD_GETTERS(aclTableGroupMaps, 117); + STRUCT_CHILD_GETTERS(interfaceMaps, 118); + STRUCT_CHILD_GETTERS(dsfNodesMap, 119); + STRUCT_CHILD_GETTERS(portFlowletCfgMaps, 120); + STRUCT_CHILD_GETTERS(mirrorOnDropReportMaps, 121); + STRUCT_CHILD_GETTERS(remoteSystemPortMaps, 600); + STRUCT_CHILD_GETTERS(remoteInterfaceMaps, 601); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return blockNeighborVlanID(); } - else if constexpr (__id == 2) { return blockNeighborIP(); } + if constexpr (__id == 100) { return portMaps(); } + else if constexpr (__id == 101) { return vlanMaps(); } + else if constexpr (__id == 102) { return aclMaps(); } + else if constexpr (__id == 103) { return transceiverMaps(); } + else if constexpr (__id == 104) { return bufferPoolCfgMaps(); } + else if constexpr (__id == 105) { return mirrorMaps(); } + else if constexpr (__id == 106) { return controlPlaneMap(); } + else if constexpr (__id == 107) { return switchSettingsMap(); } + else if constexpr (__id == 108) { return systemPortMaps(); } + else if constexpr (__id == 109) { return fibsMap(); } + else if constexpr (__id == 110) { return labelFibMap(); } + else if constexpr (__id == 111) { return qosPolicyMaps(); } + else if constexpr (__id == 112) { return sflowCollectorMaps(); } + else if constexpr (__id == 113) { return ipTunnelMaps(); } + else if constexpr (__id == 114) { return teFlowTables(); } + else if constexpr (__id == 115) { return aggregatePortMaps(); } + else if constexpr (__id == 116) { return loadBalancerMaps(); } + else if constexpr (__id == 117) { return aclTableGroupMaps(); } + else if constexpr (__id == 118) { return interfaceMaps(); } + else if constexpr (__id == 119) { return dsfNodesMap(); } + else if constexpr (__id == 120) { return portFlowletCfgMaps(); } + else if constexpr (__id == 121) { return mirrorOnDropReportMaps(); } + else if constexpr (__id == 600) { return remoteSystemPortMaps(); } + else if constexpr (__id == 601) { return remoteInterfaceMaps(); } } template @@ -10928,21 +10557,42 @@ std::pair -class ChildThriftPath<::std::vector<::facebook::fboss::cfg::QosRule>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::map<::facebook::fboss::cfg::PlatformAttributes, ::std::string>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::vector<::facebook::fboss::cfg::QosRule>, + ::std::map<::facebook::fboss::cfg::PlatformAttributes, ::std::string>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::QosRule>>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::enumeration, ::apache::thrift::type_class::string>, + ::apache::thrift::type::map<::apache::thrift::type::enum_t<::facebook::fboss::cfg::PlatformAttributes>, ::apache::thrift::type::string_t>, Parent> { public: using Self = Path< - ::std::vector<::facebook::fboss::cfg::QosRule>, + ::std::map<::facebook::fboss::cfg::PlatformAttributes, ::std::string>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::QosRule>>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::enumeration, ::apache::thrift::type_class::string>, + ::apache::thrift::type::map<::apache::thrift::type::enum_t<::facebook::fboss::cfg::PlatformAttributes>, ::apache::thrift::type::string_t>, Parent>; - using Child = ChildThriftPath<::facebook::fboss::cfg::QosRule, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Child = Path<::std::string, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t, Self>; + using Self::Self; + + CONTAINER_CHILD_GETTERS(::facebook::fboss::cfg::PlatformAttributes); +}; + +template +class ChildThriftPath<::std::set<::std::int32_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : + public Path< + ::std::set<::std::int32_t>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::set<::apache::thrift::type_class::integral>, + ::apache::thrift::type::set<::apache::thrift::type::i32_t>, + Parent> { + public: + using Self = Path< + ::std::set<::std::int32_t>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::set<::apache::thrift::type_class::integral>, + ::apache::thrift::type::set<::apache::thrift::type::i32_t>, + Parent>; + using Child = Path<::std::int32_t, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t, Self>; using Self::Self; CONTAINER_CHILD_GETTERS(::std::int32_t); @@ -10950,19 +10600,19 @@ class ChildThriftPath<::std::vector<::facebook::fboss::cfg::QosRule>, ::facebook template -class ChildThriftPath<::facebook::fboss::cfg::PortDescriptor, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::cfg::VlanPort, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::cfg::PortDescriptor, + ::facebook::fboss::cfg::VlanPort, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::PortDescriptor>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::VlanPort>, Parent> { public: using Self = Path< - ::facebook::fboss::cfg::PortDescriptor, + ::facebook::fboss::cfg::VlanPort, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::PortDescriptor>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::VlanPort>, Parent>; using strings = ::facebook::fboss::cfg::switch_config_tags::strings; template @@ -10973,25 +10623,35 @@ class ChildThriftPath<::facebook::fboss::cfg::PortDescriptor, ::facebook::fboss: ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>>>; - using ChildrenById = fatal::tuple< std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, - std::pair, Child<::facebook::fboss::cfg::PortDescriptorType, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::PortDescriptorType>>>>; + using Children = fatal::tuple>, +std::pair>, +std::pair>>, +std::pair>>; + using ChildrenById = fatal::tuple< std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::facebook::fboss::cfg::SpanningTreeState, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::SpanningTreeState>>>, + std::pair, Child>>; template - using NameToId = fatal::tuple>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(portId, 1); - STRUCT_CHILD_GETTERS(portType, 2); + STRUCT_CHILD_GETTERS(vlanID, 1); + STRUCT_CHILD_GETTERS(logicalPort, 2); + STRUCT_CHILD_GETTERS(spanningTreeState, 3); + STRUCT_CHILD_GETTERS(emitTags, 4); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return portId(); } - else if constexpr (__id == 2) { return portType(); } + if constexpr (__id == 1) { return vlanID(); } + else if constexpr (__id == 2) { return logicalPort(); } + else if constexpr (__id == 3) { return spanningTreeState(); } + else if constexpr (__id == 4) { return emitTags(); } } template @@ -11000,185 +10660,84 @@ std::pair +class ChildThriftPath<::std::map<::std::int64_t, ::facebook::fboss::state::SystemPortFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : + public Path< + ::std::map<::std::int64_t, ::facebook::fboss::state::SystemPortFields>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>, + ::apache::thrift::type::map<::apache::thrift::type::i64_t, ::apache::thrift::type::struct_t<::facebook::fboss::SystemPortThrift>>, + Parent> { + public: + using Self = Path< + ::std::map<::std::int64_t, ::facebook::fboss::state::SystemPortFields>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>, + ::apache::thrift::type::map<::apache::thrift::type::i64_t, ::apache::thrift::type::struct_t<::facebook::fboss::SystemPortThrift>>, + Parent>; + using Child = ChildThriftPath<::facebook::fboss::state::SystemPortFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Self::Self; + + CONTAINER_CHILD_GETTERS(::std::int64_t); +}; template -class ChildThriftPath<::facebook::fboss::cfg::DsfNode, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::map<::std::string, ::facebook::fboss::BufferPoolFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::cfg::DsfNode, + ::std::map<::std::string, ::facebook::fboss::BufferPoolFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::DsfNode>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::BufferPoolFields>>, Parent> { public: using Self = Path< - ::facebook::fboss::cfg::DsfNode, + ::std::map<::std::string, ::facebook::fboss::BufferPoolFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::DsfNode>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::BufferPoolFields>>, Parent>; - using strings = ::facebook::fboss::cfg::switch_config_tags::strings; - template - using Child = Path< - ChildType, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ChildTC, - ChildTag, - Self - >; - using Children = fatal::tuple>, -std::pair>, -std::pair>>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair>, -std::pair>, -std::pair>>, -std::pair>>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>>; - using ChildrenById = fatal::tuple< std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, Child<::std::int64_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i64_t>>, - std::pair, Child<::facebook::fboss::cfg::DsfNodeType, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::DsfNodeType>>>, - std::pair, ChildThriftPath<::std::vector<::std::string>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::facebook::fboss::cfg::Range64, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, Child<::facebook::fboss::cfg::AsicType, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::AsicType>>>, - std::pair, Child<::facebook::fboss::PlatformType, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::PlatformType>>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, ChildThriftPath<::facebook::fboss::cfg::SystemPortRanges, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>>; - template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>>::template type_of; - - template - using TypeFor = typename Children::template type_of; + using Child = ChildThriftPath<::facebook::fboss::BufferPoolFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; using Self::Self; - - STRUCT_CHILD_GETTERS(name, 1); - STRUCT_CHILD_GETTERS(switchId, 2); - STRUCT_CHILD_GETTERS(type, 3); - STRUCT_CHILD_GETTERS(loopbackIps, 4); - STRUCT_CHILD_GETTERS(systemPortRange, 5); - STRUCT_CHILD_GETTERS(nodeMac, 6); - STRUCT_CHILD_GETTERS(asicType, 7); - STRUCT_CHILD_GETTERS(platformType, 8); - STRUCT_CHILD_GETTERS(clusterId, 9); - STRUCT_CHILD_GETTERS(fabricLevel, 10); - STRUCT_CHILD_GETTERS(localSystemPortOffset, 11); - STRUCT_CHILD_GETTERS(globalSystemPortOffset, 12); - STRUCT_CHILD_GETTERS(systemPortRanges, 13); - STRUCT_CHILD_GETTERS(inbandPortId, 14); - - template - auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return name(); } - else if constexpr (__id == 2) { return switchId(); } - else if constexpr (__id == 3) { return type(); } - else if constexpr (__id == 4) { return loopbackIps(); } - else if constexpr (__id == 5) { return systemPortRange(); } - else if constexpr (__id == 6) { return nodeMac(); } - else if constexpr (__id == 7) { return asicType(); } - else if constexpr (__id == 8) { return platformType(); } - else if constexpr (__id == 9) { return clusterId(); } - else if constexpr (__id == 10) { return fabricLevel(); } - else if constexpr (__id == 11) { return localSystemPortOffset(); } - else if constexpr (__id == 12) { return globalSystemPortOffset(); } - else if constexpr (__id == 13) { return systemPortRanges(); } - else if constexpr (__id == 14) { return inbandPortId(); } - } - template - auto operator()(const fatal::sequence&) { - return operator()(NameToId>()); - } + CONTAINER_CHILD_GETTERS(::std::string); }; - template -class ChildThriftPath<::facebook::fboss::cfg::SflowCollector, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::vector<::facebook::fboss::state::BlockedNeighbor>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::cfg::SflowCollector, + ::std::vector<::facebook::fboss::state::BlockedNeighbor>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::SflowCollector>, + ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::state::BlockedNeighbor>>, Parent> { public: using Self = Path< - ::facebook::fboss::cfg::SflowCollector, + ::std::vector<::facebook::fboss::state::BlockedNeighbor>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::SflowCollector>, + ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::state::BlockedNeighbor>>, Parent>; - using strings = ::facebook::fboss::cfg::switch_config_tags::strings; - template - using Child = Path< - ChildType, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ChildTC, - ChildTag, - Self - >; - using Children = fatal::tuple>, -std::pair>>; - using ChildrenById = fatal::tuple< std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>>; - template - using NameToId = fatal::tuple>, -std::pair>>::template type_of; - - template - using TypeFor = typename Children::template type_of; + using Child = ChildThriftPath<::facebook::fboss::state::BlockedNeighbor, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; using Self::Self; - - STRUCT_CHILD_GETTERS(ip, 1); - STRUCT_CHILD_GETTERS(port, 2); - - template - auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return ip(); } - else if constexpr (__id == 2) { return port(); } - } - template - auto operator()(const fatal::sequence&) { - return operator()(NameToId>()); - } + CONTAINER_CHILD_GETTERS(::std::int32_t); }; template -class ChildThriftPath<::facebook::fboss::cfg::PortPause, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::cfg::Neighbor, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::cfg::PortPause, + ::facebook::fboss::cfg::Neighbor, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::PortPause>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::Neighbor>, Parent> { public: using Self = Path< - ::facebook::fboss::cfg::PortPause, + ::facebook::fboss::cfg::Neighbor, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::PortPause>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::Neighbor>, Parent>; using strings = ::facebook::fboss::cfg::switch_config_tags::strings; template @@ -11189,25 +10748,25 @@ class ChildThriftPath<::facebook::fboss::cfg::PortPause, ::facebook::fboss::fsdb ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>>; - using ChildrenById = fatal::tuple< std::pair, Child>, - std::pair, Child>>; + using Children = fatal::tuple>, +std::pair>>; + using ChildrenById = fatal::tuple< std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>>; template - using NameToId = fatal::tuple>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(tx, 1); - STRUCT_CHILD_GETTERS(rx, 2); + STRUCT_CHILD_GETTERS(vlanID, 1); + STRUCT_CHILD_GETTERS(ipAddress, 2); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return tx(); } - else if constexpr (__id == 2) { return rx(); } + if constexpr (__id == 1) { return vlanID(); } + else if constexpr (__id == 2) { return ipAddress(); } } template @@ -11217,21 +10776,21 @@ std::pair>>:: }; template -class ChildThriftPath<::std::vector<::facebook::fboss::cfg::PortQueue>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::vector<::facebook::fboss::cfg::RedirectNextHop>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::vector<::facebook::fboss::cfg::PortQueue>, + ::std::vector<::facebook::fboss::cfg::RedirectNextHop>, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::PortQueue>>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::RedirectNextHop>>, Parent> { public: using Self = Path< - ::std::vector<::facebook::fboss::cfg::PortQueue>, + ::std::vector<::facebook::fboss::cfg::RedirectNextHop>, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::PortQueue>>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::RedirectNextHop>>, Parent>; - using Child = ChildThriftPath<::facebook::fboss::cfg::PortQueue, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Child = ChildThriftPath<::facebook::fboss::cfg::RedirectNextHop, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; using Self::Self; CONTAINER_CHILD_GETTERS(::std::int32_t); @@ -11239,21 +10798,21 @@ class ChildThriftPath<::std::vector<::facebook::fboss::cfg::PortQueue>, ::facebo template -class ChildThriftPath<::facebook::fboss::cfg::SflowTunnel, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::fsdb::AgentData, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::cfg::SflowTunnel, + ::facebook::fboss::fsdb::AgentData, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::SflowTunnel>, + ::apache::thrift::type::struct_t<::facebook::fboss::fsdb::AgentData>, Parent> { public: using Self = Path< - ::facebook::fboss::cfg::SflowTunnel, + ::facebook::fboss::fsdb::AgentData, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::SflowTunnel>, + ::apache::thrift::type::struct_t<::facebook::fboss::fsdb::AgentData>, Parent>; - using strings = ::facebook::fboss::cfg::switch_config_tags::strings; + using strings = ::facebook::fboss::fsdb::fsdb_model_tags::strings; template using Child = Path< ChildType, @@ -11262,35 +10821,35 @@ class ChildThriftPath<::facebook::fboss::cfg::SflowTunnel, ::facebook::fboss::fs ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>>; - using ChildrenById = fatal::tuple< std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, ChildThriftPath<::facebook::fboss::cfg::Ttl, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + using Children = fatal::tuple>, +std::pair>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + using ChildrenById = fatal::tuple< std::pair, ChildThriftPath<::facebook::fboss::cfg::AgentConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::facebook::fboss::state::SwitchState, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::map<::std::string, ::facebook::fboss::fsdb::FsdbSubscriptionState>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::map<::std::int64_t, ::facebook::fboss::switch_reachability::SwitchReachability>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(ip, 1); - STRUCT_CHILD_GETTERS(udpSrcPort, 2); - STRUCT_CHILD_GETTERS(udpDstPort, 3); - STRUCT_CHILD_GETTERS(ttl, 4); + STRUCT_CHILD_GETTERS(config, 1); + STRUCT_CHILD_GETTERS(switchState, 2); + STRUCT_CHILD_GETTERS(fsdbSubscriptions, 4); + STRUCT_CHILD_GETTERS(dsfSwitchReachability, 5); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return ip(); } - else if constexpr (__id == 2) { return udpSrcPort(); } - else if constexpr (__id == 3) { return udpDstPort(); } - else if constexpr (__id == 4) { return ttl(); } + if constexpr (__id == 1) { return config(); } + else if constexpr (__id == 2) { return switchState(); } + else if constexpr (__id == 4) { return fsdbSubscriptions(); } + else if constexpr (__id == 5) { return dsfSwitchReachability(); } } template @@ -11300,106 +10859,228 @@ std::pair>>: }; template -class ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::facebook::fboss::state::SwitchSettingsFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::map<::std::int64_t, ::std::int32_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::map<::facebook::fboss::state::SwitchIdList, ::facebook::fboss::state::SwitchSettingsFields>, + ::std::map<::std::int64_t, ::std::int32_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>, - ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::SwitchSettingsFields>>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::integral>, + ::apache::thrift::type::map<::apache::thrift::type::i64_t, ::apache::thrift::type::i32_t>, Parent> { public: using Self = Path< - ::std::map<::facebook::fboss::state::SwitchIdList, ::facebook::fboss::state::SwitchSettingsFields>, + ::std::map<::std::int64_t, ::std::int32_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>, - ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::SwitchSettingsFields>>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::integral>, + ::apache::thrift::type::map<::apache::thrift::type::i64_t, ::apache::thrift::type::i32_t>, Parent>; - using Child = ChildThriftPath<::facebook::fboss::state::SwitchSettingsFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Child = Path<::std::int32_t, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t, Self>; using Self::Self; - CONTAINER_CHILD_GETTERS(::facebook::fboss::state::SwitchIdList); + CONTAINER_CHILD_GETTERS(::std::int64_t); }; + template -class ChildThriftPath<::std::set<::facebook::fboss::cfg::MPLSField>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::state::QcmCfgFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::set<::facebook::fboss::cfg::MPLSField>, + ::facebook::fboss::state::QcmCfgFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::set<::apache::thrift::type_class::enumeration>, - ::apache::thrift::type::set<::apache::thrift::type::enum_t<::facebook::fboss::cfg::MPLSField>>, + ::apache::thrift::type_class::structure, + ::apache::thrift::type::struct_t<::facebook::fboss::state::QcmCfgFields>, Parent> { public: using Self = Path< - ::std::set<::facebook::fboss::cfg::MPLSField>, + ::facebook::fboss::state::QcmCfgFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::set<::apache::thrift::type_class::enumeration>, - ::apache::thrift::type::set<::apache::thrift::type::enum_t<::facebook::fboss::cfg::MPLSField>>, + ::apache::thrift::type_class::structure, + ::apache::thrift::type::struct_t<::facebook::fboss::state::QcmCfgFields>, Parent>; - using Child = Path<::facebook::fboss::cfg::MPLSField, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::MPLSField>, Self>; - using Self::Self; - - CONTAINER_CHILD_GETTERS(::facebook::fboss::cfg::MPLSField); -}; - -template -class ChildThriftPath<::std::vector<::facebook::fboss::cfg::FirmwareVersion>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : - public Path< - ::std::vector<::facebook::fboss::cfg::FirmwareVersion>, + using strings = ::facebook::fboss::state::switch_state_tags::strings; + template + using Child = Path< + ChildType, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ChildTC, + ChildTag, + Self + >; + using Children = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + using ChildrenById = fatal::tuple< std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child>, + std::pair, ChildThriftPath<::std::map<::std::int32_t, ::std::int32_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::facebook::fboss::IpPrefix, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::facebook::fboss::IpPrefix, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, + std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, + std::pair, Child<::std::int8_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::byte_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, ChildThriftPath<::std::vector<::std::int32_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::map<::std::int32_t, ::std::set<::std::int32_t>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + template + using NameToId = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>>::template type_of; + + template + using TypeFor = typename Children::template type_of; + using Self::Self; + + STRUCT_CHILD_GETTERS(agingIntervalInMsecs, 1); + STRUCT_CHILD_GETTERS(numFlowSamplesPerView, 2); + STRUCT_CHILD_GETTERS(flowLimit, 3); + STRUCT_CHILD_GETTERS(numFlowsClear, 4); + STRUCT_CHILD_GETTERS(scanIntervalInUsecs, 5); + STRUCT_CHILD_GETTERS(exportThreshold, 6); + STRUCT_CHILD_GETTERS(monitorQcmCfgPortsOnly, 7); + STRUCT_CHILD_GETTERS(flowWeights, 8); + STRUCT_CHILD_GETTERS(collectorSrcIp, 9); + STRUCT_CHILD_GETTERS(collectorDstIp, 10); + STRUCT_CHILD_GETTERS(collectorSrcPort, 11); + STRUCT_CHILD_GETTERS(collectorDstPort, 12); + STRUCT_CHILD_GETTERS(collectorDscp, 13); + STRUCT_CHILD_GETTERS(ppsToQcm, 14); + STRUCT_CHILD_GETTERS(monitorQcmPortList, 15); + STRUCT_CHILD_GETTERS(port2QosQueueIds, 16); + + template + auto operator()(const std::integral_constant&) { + if constexpr (__id == 1) { return agingIntervalInMsecs(); } + else if constexpr (__id == 2) { return numFlowSamplesPerView(); } + else if constexpr (__id == 3) { return flowLimit(); } + else if constexpr (__id == 4) { return numFlowsClear(); } + else if constexpr (__id == 5) { return scanIntervalInUsecs(); } + else if constexpr (__id == 6) { return exportThreshold(); } + else if constexpr (__id == 7) { return monitorQcmCfgPortsOnly(); } + else if constexpr (__id == 8) { return flowWeights(); } + else if constexpr (__id == 9) { return collectorSrcIp(); } + else if constexpr (__id == 10) { return collectorDstIp(); } + else if constexpr (__id == 11) { return collectorSrcPort(); } + else if constexpr (__id == 12) { return collectorDstPort(); } + else if constexpr (__id == 13) { return collectorDscp(); } + else if constexpr (__id == 14) { return ppsToQcm(); } + else if constexpr (__id == 15) { return monitorQcmPortList(); } + else if constexpr (__id == 16) { return port2QosQueueIds(); } + } + + template + auto operator()(const fatal::sequence&) { + return operator()(NameToId>()); + } +}; + +template +class ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::string, ::facebook::fboss::state::MirrorOnDropReportFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : + public Path< + ::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::string, ::facebook::fboss::state::MirrorOnDropReportFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::FirmwareVersion>>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::MirrorOnDropReportFields>>>, Parent> { public: using Self = Path< - ::std::vector<::facebook::fboss::cfg::FirmwareVersion>, + ::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::string, ::facebook::fboss::state::MirrorOnDropReportFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::FirmwareVersion>>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::MirrorOnDropReportFields>>>, Parent>; - using Child = ChildThriftPath<::facebook::fboss::cfg::FirmwareVersion, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Child = ChildThriftPath<::std::map<::std::string, ::facebook::fboss::state::MirrorOnDropReportFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Self::Self; + + CONTAINER_CHILD_GETTERS(::facebook::fboss::state::SwitchIdList); +}; + +template +class ChildThriftPath<::std::map<::std::int32_t, ::std::vector<::std::string>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : + public Path< + ::std::map<::std::int32_t, ::std::vector<::std::string>>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::list<::apache::thrift::type_class::string>>, + ::apache::thrift::type::map<::apache::thrift::type::i32_t, ::apache::thrift::type::list<::apache::thrift::type::string_t>>, + Parent> { + public: + using Self = Path< + ::std::map<::std::int32_t, ::std::vector<::std::string>>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::list<::apache::thrift::type_class::string>>, + ::apache::thrift::type::map<::apache::thrift::type::i32_t, ::apache::thrift::type::list<::apache::thrift::type::string_t>>, + Parent>; + using Child = ChildThriftPath<::std::vector<::std::string>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; using Self::Self; CONTAINER_CHILD_GETTERS(::std::int32_t); }; template -class ChildThriftPath<::std::map<::std::string, ::facebook::fboss::state::PortFlowletFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::map<::std::int16_t, ::std::int16_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::map<::std::string, ::facebook::fboss::state::PortFlowletFields>, + ::std::map<::std::int16_t, ::std::int16_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>, - ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::PortFlowletFields>>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::integral>, + ::apache::thrift::type::map<::apache::thrift::type::i16_t, ::apache::thrift::type::i16_t>, Parent> { public: using Self = Path< - ::std::map<::std::string, ::facebook::fboss::state::PortFlowletFields>, + ::std::map<::std::int16_t, ::std::int16_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>, - ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::PortFlowletFields>>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::integral>, + ::apache::thrift::type::map<::apache::thrift::type::i16_t, ::apache::thrift::type::i16_t>, Parent>; - using Child = ChildThriftPath<::facebook::fboss::state::PortFlowletFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Child = Path<::std::int16_t, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t, Self>; using Self::Self; - CONTAINER_CHILD_GETTERS(::std::string); + CONTAINER_CHILD_GETTERS(::std::int16_t); }; template -class ChildThriftPath<::facebook::fboss::cfg::PortPfc, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::phy::PinID, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::cfg::PortPfc, + ::facebook::fboss::phy::PinID, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::PortPfc>, + ::apache::thrift::type::struct_t<::facebook::fboss::phy::PinID>, Parent> { public: using Self = Path< - ::facebook::fboss::cfg::PortPfc, + ::facebook::fboss::phy::PinID, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::PortPfc>, + ::apache::thrift::type::struct_t<::facebook::fboss::phy::PinID>, Parent>; - using strings = ::facebook::fboss::cfg::switch_config_tags::strings; + using strings = ::facebook::fboss::phy::phy_tags::strings; template using Child = Path< ChildType, @@ -11408,35 +11089,25 @@ class ChildThriftPath<::facebook::fboss::cfg::PortPfc, ::facebook::fboss::fsdb:: ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>>; - using ChildrenById = fatal::tuple< std::pair, Child>, - std::pair, Child>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, ChildThriftPath<::facebook::fboss::cfg::PfcWatchdog, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + using Children = fatal::tuple>, +std::pair>>; + using ChildrenById = fatal::tuple< std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>>; template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(tx, 1); - STRUCT_CHILD_GETTERS(rx, 2); - STRUCT_CHILD_GETTERS(portPgConfigName, 3); - STRUCT_CHILD_GETTERS(watchdog, 4); + STRUCT_CHILD_GETTERS(chip, 1); + STRUCT_CHILD_GETTERS(lane, 2); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return tx(); } - else if constexpr (__id == 2) { return rx(); } - else if constexpr (__id == 3) { return portPgConfigName(); } - else if constexpr (__id == 4) { return watchdog(); } + if constexpr (__id == 1) { return chip(); } + else if constexpr (__id == 2) { return lane(); } } template @@ -11446,41 +11117,41 @@ std::pair -class ChildThriftPath<::std::map<::facebook::fboss::cfg::LLDPTag, ::std::string>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::vector<::facebook::fboss::cfg::Vlan>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::map<::facebook::fboss::cfg::LLDPTag, ::std::string>, + ::std::vector<::facebook::fboss::cfg::Vlan>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::enumeration, ::apache::thrift::type_class::string>, - ::apache::thrift::type::map<::apache::thrift::type::enum_t<::facebook::fboss::cfg::LLDPTag>, ::apache::thrift::type::string_t>, + ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::Vlan>>, Parent> { public: using Self = Path< - ::std::map<::facebook::fboss::cfg::LLDPTag, ::std::string>, + ::std::vector<::facebook::fboss::cfg::Vlan>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::enumeration, ::apache::thrift::type_class::string>, - ::apache::thrift::type::map<::apache::thrift::type::enum_t<::facebook::fboss::cfg::LLDPTag>, ::apache::thrift::type::string_t>, + ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::Vlan>>, Parent>; - using Child = Path<::std::string, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t, Self>; + using Child = ChildThriftPath<::facebook::fboss::cfg::Vlan, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; using Self::Self; - CONTAINER_CHILD_GETTERS(::facebook::fboss::cfg::LLDPTag); + CONTAINER_CHILD_GETTERS(::std::int32_t); }; template -class ChildThriftPath<::facebook::fboss::cfg::StaticRouteWithNextHops, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::cfg::PktLenRange, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::cfg::StaticRouteWithNextHops, + ::facebook::fboss::cfg::PktLenRange, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::StaticRouteWithNextHops>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::PktLenRange>, Parent> { public: using Self = Path< - ::facebook::fboss::cfg::StaticRouteWithNextHops, + ::facebook::fboss::cfg::PktLenRange, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::StaticRouteWithNextHops>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::PktLenRange>, Parent>; using strings = ::facebook::fboss::cfg::switch_config_tags::strings; template @@ -11491,30 +11162,30 @@ class ChildThriftPath<::facebook::fboss::cfg::StaticRouteWithNextHops, ::faceboo ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; - using ChildrenById = fatal::tuple< std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, ChildThriftPath<::std::vector<::std::string>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + using Children = fatal::tuple>, +std::pair>, +std::pair>>; + using ChildrenById = fatal::tuple< std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, + std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, + std::pair, Child>>; template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(routerID, 1); - STRUCT_CHILD_GETTERS(prefix, 2); - STRUCT_CHILD_GETTERS(nexthops, 3); + STRUCT_CHILD_GETTERS(min, 1); + STRUCT_CHILD_GETTERS(max, 2); + STRUCT_CHILD_GETTERS(invert, 3); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return routerID(); } - else if constexpr (__id == 2) { return prefix(); } - else if constexpr (__id == 3) { return nexthops(); } + if constexpr (__id == 1) { return min(); } + else if constexpr (__id == 2) { return max(); } + else if constexpr (__id == 3) { return invert(); } } template @@ -11523,89 +11194,22 @@ std::pair -class ChildThriftPath<::facebook::fboss::cfg::AggregatePortMember, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : - public Path< - ::facebook::fboss::cfg::AggregatePortMember, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::AggregatePortMember>, - Parent> { - public: - using Self = Path< - ::facebook::fboss::cfg::AggregatePortMember, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::AggregatePortMember>, - Parent>; - using strings = ::facebook::fboss::cfg::switch_config_tags::strings; - template - using Child = Path< - ChildType, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ChildTC, - ChildTag, - Self - >; - using Children = fatal::tuple>, -std::pair>, -std::pair>>, -std::pair>>, -std::pair>>; - using ChildrenById = fatal::tuple< std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::facebook::fboss::cfg::LacpPortRate, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::LacpPortRate>>>, - std::pair, Child<::facebook::fboss::cfg::LacpPortActivity, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::LacpPortActivity>>>, - std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>>; - template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>, -std::pair>>::template type_of; - - template - using TypeFor = typename Children::template type_of; - using Self::Self; - - STRUCT_CHILD_GETTERS(memberPortID, 1); - STRUCT_CHILD_GETTERS(priority, 2); - STRUCT_CHILD_GETTERS(rate, 3); - STRUCT_CHILD_GETTERS(activity, 4); - STRUCT_CHILD_GETTERS(holdTimerMultiplier, 5); - - template - auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return memberPortID(); } - else if constexpr (__id == 2) { return priority(); } - else if constexpr (__id == 3) { return rate(); } - else if constexpr (__id == 4) { return activity(); } - else if constexpr (__id == 5) { return holdTimerMultiplier(); } - } - - template - auto operator()(const fatal::sequence&) { - return operator()(NameToId>()); - } -}; - -template -class ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::facebook::fboss::state::ControlPlaneFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::string, ::facebook::fboss::state::MirrorFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::map<::facebook::fboss::state::SwitchIdList, ::facebook::fboss::state::ControlPlaneFields>, + ::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::string, ::facebook::fboss::state::MirrorFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>, - ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::ControlPlaneFields>>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::MirrorFields>>>, Parent> { public: using Self = Path< - ::std::map<::facebook::fboss::state::SwitchIdList, ::facebook::fboss::state::ControlPlaneFields>, + ::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::string, ::facebook::fboss::state::MirrorFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>, - ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::ControlPlaneFields>>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::MirrorFields>>>, Parent>; - using Child = ChildThriftPath<::facebook::fboss::state::ControlPlaneFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Child = ChildThriftPath<::std::map<::std::string, ::facebook::fboss::state::MirrorFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; using Self::Self; CONTAINER_CHILD_GETTERS(::facebook::fboss::state::SwitchIdList); @@ -11613,21 +11217,21 @@ class ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::faceb template -class ChildThriftPath<::facebook::fboss::cfg::UserDefinedTrapAction, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::state::TrafficClassToQosAttributeMap, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::cfg::UserDefinedTrapAction, + ::facebook::fboss::state::TrafficClassToQosAttributeMap, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::UserDefinedTrapAction>, + ::apache::thrift::type::struct_t<::facebook::fboss::state::TrafficClassToQosAttributeMap>, Parent> { public: using Self = Path< - ::facebook::fboss::cfg::UserDefinedTrapAction, + ::facebook::fboss::state::TrafficClassToQosAttributeMap, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::UserDefinedTrapAction>, + ::apache::thrift::type::struct_t<::facebook::fboss::state::TrafficClassToQosAttributeMap>, Parent>; - using strings = ::facebook::fboss::cfg::switch_config_tags::strings; + using strings = ::facebook::fboss::state::switch_state_tags::strings; template using Child = Path< ChildType, @@ -11636,20 +11240,25 @@ class ChildThriftPath<::facebook::fboss::cfg::UserDefinedTrapAction, ::facebook: ChildTag, Self >; - using Children = fatal::tuple>>; - using ChildrenById = fatal::tuple< std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>>; + using Children = fatal::tuple, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + using ChildrenById = fatal::tuple< std::pair, ChildThriftPath<::std::vector<::facebook::fboss::state::TrafficClassToQosAttributeEntry>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::vector<::facebook::fboss::state::TrafficClassToQosAttributeEntry>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; template - using NameToId = fatal::tuple>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(queueId, 1); + STRUCT_CHILD_GETTERS(from, 1); + STRUCT_CHILD_GETTERS(to, 2); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return queueId(); } + if constexpr (__id == 1) { return from(); } + else if constexpr (__id == 2) { return to(); } } template @@ -11660,21 +11269,21 @@ class ChildThriftPath<::facebook::fboss::cfg::UserDefinedTrapAction, ::facebook: template -class ChildThriftPath<::facebook::fboss::cfg::PortQueue, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::state::BlockedNeighbor, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::cfg::PortQueue, + ::facebook::fboss::state::BlockedNeighbor, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::PortQueue>, + ::apache::thrift::type::struct_t<::facebook::fboss::state::BlockedNeighbor>, Parent> { public: using Self = Path< - ::facebook::fboss::cfg::PortQueue, + ::facebook::fboss::state::BlockedNeighbor, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::PortQueue>, + ::apache::thrift::type::struct_t<::facebook::fboss::state::BlockedNeighbor>, Parent>; - using strings = ::facebook::fboss::cfg::switch_config_tags::strings; + using strings = ::facebook::fboss::state::switch_state_tags::strings; template using Child = Path< ChildType, @@ -11683,90 +11292,25 @@ class ChildThriftPath<::facebook::fboss::cfg::PortQueue, ::facebook::fboss::fsdb ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>>, -std::pair>, -std::pair>, -std::pair>>, -std::pair>>, -std::pair>, -std::pair>, -std::pair>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>>; + using Children = fatal::tuple>, +std::pair>>; using ChildrenById = fatal::tuple< std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, - std::pair, Child<::facebook::fboss::cfg::StreamType, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::StreamType>>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::facebook::fboss::cfg::MMUScalingFactor, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::MMUScalingFactor>>>, - std::pair, Child<::facebook::fboss::cfg::QueueScheduling, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::QueueScheduling>>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::ActiveQueueManagement>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::facebook::fboss::cfg::PortQueueRate, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>>; + std::pair, ChildThriftPath<::facebook::network::thrift::BinaryAddress, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(id, 1); - STRUCT_CHILD_GETTERS(streamType, 2); - STRUCT_CHILD_GETTERS(weight, 3); - STRUCT_CHILD_GETTERS(reservedBytes, 4); - STRUCT_CHILD_GETTERS(scalingFactor, 5); - STRUCT_CHILD_GETTERS(scheduling, 6); - STRUCT_CHILD_GETTERS(name, 7); - STRUCT_CHILD_GETTERS(packetsPerSec_DEPRECATED, 9); - STRUCT_CHILD_GETTERS(sharedBytes, 10); - STRUCT_CHILD_GETTERS(aqms, 11); - STRUCT_CHILD_GETTERS(portQueueRate, 12); - STRUCT_CHILD_GETTERS(bandwidthBurstMinKbits, 13); - STRUCT_CHILD_GETTERS(bandwidthBurstMaxKbits, 14); - STRUCT_CHILD_GETTERS(maxDynamicSharedBytes, 15); - STRUCT_CHILD_GETTERS(bufferPoolName, 16); + STRUCT_CHILD_GETTERS(blockNeighborVlanID, 1); + STRUCT_CHILD_GETTERS(blockNeighborIP, 2); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return id(); } - else if constexpr (__id == 2) { return streamType(); } - else if constexpr (__id == 3) { return weight(); } - else if constexpr (__id == 4) { return reservedBytes(); } - else if constexpr (__id == 5) { return scalingFactor(); } - else if constexpr (__id == 6) { return scheduling(); } - else if constexpr (__id == 7) { return name(); } - else if constexpr (__id == 9) { return packetsPerSec_DEPRECATED(); } - else if constexpr (__id == 10) { return sharedBytes(); } - else if constexpr (__id == 11) { return aqms(); } - else if constexpr (__id == 12) { return portQueueRate(); } - else if constexpr (__id == 13) { return bandwidthBurstMinKbits(); } - else if constexpr (__id == 14) { return bandwidthBurstMaxKbits(); } - else if constexpr (__id == 15) { return maxDynamicSharedBytes(); } - else if constexpr (__id == 16) { return bufferPoolName(); } + if constexpr (__id == 1) { return blockNeighborVlanID(); } + else if constexpr (__id == 2) { return blockNeighborIP(); } } template @@ -11776,21 +11320,42 @@ std::pair -class ChildThriftPath<::std::vector<::facebook::fboss::cfg::AclLookupClass>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::vector<::facebook::fboss::cfg::AclTableGroup>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::vector<::facebook::fboss::cfg::AclLookupClass>, + ::std::vector<::facebook::fboss::cfg::AclTableGroup>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::enumeration>, - ::apache::thrift::type::list<::apache::thrift::type::enum_t<::facebook::fboss::cfg::AclLookupClass>>, + ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::AclTableGroup>>, Parent> { public: using Self = Path< - ::std::vector<::facebook::fboss::cfg::AclLookupClass>, + ::std::vector<::facebook::fboss::cfg::AclTableGroup>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::enumeration>, - ::apache::thrift::type::list<::apache::thrift::type::enum_t<::facebook::fboss::cfg::AclLookupClass>>, + ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::AclTableGroup>>, Parent>; - using Child = Path<::facebook::fboss::cfg::AclLookupClass, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::AclLookupClass>, Self>; + using Child = ChildThriftPath<::facebook::fboss::cfg::AclTableGroup, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Self::Self; + + CONTAINER_CHILD_GETTERS(::std::int32_t); +}; + +template +class ChildThriftPath<::std::vector<::facebook::fboss::cfg::QosRule>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : + public Path< + ::std::vector<::facebook::fboss::cfg::QosRule>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::QosRule>>, + Parent> { + public: + using Self = Path< + ::std::vector<::facebook::fboss::cfg::QosRule>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::QosRule>>, + Parent>; + using Child = ChildThriftPath<::facebook::fboss::cfg::QosRule, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; using Self::Self; CONTAINER_CHILD_GETTERS(::std::int32_t); @@ -11798,19 +11363,19 @@ class ChildThriftPath<::std::vector<::facebook::fboss::cfg::AclLookupClass>, ::f template -class ChildThriftPath<::facebook::fboss::cfg::TrafficPolicyConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::cfg::PortDescriptor, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::cfg::TrafficPolicyConfig, + ::facebook::fboss::cfg::PortDescriptor, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::TrafficPolicyConfig>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::PortDescriptor>, Parent> { public: using Self = Path< - ::facebook::fboss::cfg::TrafficPolicyConfig, + ::facebook::fboss::cfg::PortDescriptor, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::TrafficPolicyConfig>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::PortDescriptor>, Parent>; using strings = ::facebook::fboss::cfg::switch_config_tags::strings; template @@ -11821,30 +11386,25 @@ class ChildThriftPath<::facebook::fboss::cfg::TrafficPolicyConfig, ::facebook::f ChildTag, Self >; - using Children = fatal::tuple, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; - using ChildrenById = fatal::tuple< std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::MatchToAction>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, ChildThriftPath<::std::map<::std::int32_t, ::std::string>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + using Children = fatal::tuple>, +std::pair>>>; + using ChildrenById = fatal::tuple< std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, + std::pair, Child<::facebook::fboss::cfg::PortDescriptorType, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::PortDescriptorType>>>>; template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(matchToAction, 1); - STRUCT_CHILD_GETTERS(defaultQosPolicy, 2); - STRUCT_CHILD_GETTERS(portIdToQosPolicy, 3); + STRUCT_CHILD_GETTERS(portId, 1); + STRUCT_CHILD_GETTERS(portType, 2); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return matchToAction(); } - else if constexpr (__id == 2) { return defaultQosPolicy(); } - else if constexpr (__id == 3) { return portIdToQosPolicy(); } + if constexpr (__id == 1) { return portId(); } + else if constexpr (__id == 2) { return portType(); } } template @@ -11855,21 +11415,21 @@ std::pair -class ChildThriftPath<::facebook::fboss::cfg::QueueMatchAction, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::state::SendToQueue, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::cfg::QueueMatchAction, + ::facebook::fboss::state::SendToQueue, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::QueueMatchAction>, + ::apache::thrift::type::struct_t<::facebook::fboss::state::SendToQueue>, Parent> { public: using Self = Path< - ::facebook::fboss::cfg::QueueMatchAction, + ::facebook::fboss::state::SendToQueue, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::QueueMatchAction>, + ::apache::thrift::type::struct_t<::facebook::fboss::state::SendToQueue>, Parent>; - using strings = ::facebook::fboss::cfg::switch_config_tags::strings; + using strings = ::facebook::fboss::state::switch_state_tags::strings; template using Child = Path< ChildType, @@ -11878,20 +11438,25 @@ class ChildThriftPath<::facebook::fboss::cfg::QueueMatchAction, ::facebook::fbos ChildTag, Self >; - using Children = fatal::tuple>>; - using ChildrenById = fatal::tuple< std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>>; + using Children = fatal::tuple>, +std::pair>>; + using ChildrenById = fatal::tuple< std::pair, ChildThriftPath<::facebook::fboss::cfg::QueueMatchAction, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, Child>>; template - using NameToId = fatal::tuple>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(queueId, 1); + STRUCT_CHILD_GETTERS(action, 1); + STRUCT_CHILD_GETTERS(sendToCPU, 2); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return queueId(); } + if constexpr (__id == 1) { return action(); } + else if constexpr (__id == 2) { return sendToCPU(); } } template @@ -11900,68 +11465,42 @@ class ChildThriftPath<::facebook::fboss::cfg::QueueMatchAction, ::facebook::fbos } }; - template -class ChildThriftPath<::facebook::fboss::cfg::PacketCounterMatchAction, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::int64_t, ::facebook::fboss::state::SystemPortFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::cfg::PacketCounterMatchAction, + ::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::int64_t, ::facebook::fboss::state::SystemPortFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::PacketCounterMatchAction>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::map<::apache::thrift::type::i64_t, ::apache::thrift::type::struct_t<::facebook::fboss::SystemPortThrift>>>, Parent> { public: using Self = Path< - ::facebook::fboss::cfg::PacketCounterMatchAction, + ::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::int64_t, ::facebook::fboss::state::SystemPortFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::PacketCounterMatchAction>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::map<::apache::thrift::type::i64_t, ::apache::thrift::type::struct_t<::facebook::fboss::SystemPortThrift>>>, Parent>; - using strings = ::facebook::fboss::cfg::switch_config_tags::strings; - template - using Child = Path< - ChildType, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ChildTC, - ChildTag, - Self - >; - using Children = fatal::tuple>>; - using ChildrenById = fatal::tuple< std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>>; - template - using NameToId = fatal::tuple>>::template type_of; - - template - using TypeFor = typename Children::template type_of; + using Child = ChildThriftPath<::std::map<::std::int64_t, ::facebook::fboss::state::SystemPortFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; using Self::Self; - - STRUCT_CHILD_GETTERS(counterName, 1); - - template - auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return counterName(); } - } - template - auto operator()(const fatal::sequence&) { - return operator()(NameToId>()); - } + CONTAINER_CHILD_GETTERS(::facebook::fboss::state::SwitchIdList); }; template -class ChildThriftPath<::facebook::fboss::cfg::MacAndVlan, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::cfg::DsfNode, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::cfg::MacAndVlan, + ::facebook::fboss::cfg::DsfNode, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::MacAndVlan>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::DsfNode>, Parent> { public: using Self = Path< - ::facebook::fboss::cfg::MacAndVlan, + ::facebook::fboss::cfg::DsfNode, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::MacAndVlan>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::DsfNode>, Parent>; using strings = ::facebook::fboss::cfg::switch_config_tags::strings; template @@ -11972,25 +11511,85 @@ class ChildThriftPath<::facebook::fboss::cfg::MacAndVlan, ::facebook::fboss::fsd ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>>; - using ChildrenById = fatal::tuple< std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>>; + using Children = fatal::tuple>, +std::pair>, +std::pair>>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair>, +std::pair>, +std::pair>>, +std::pair>>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>>; + using ChildrenById = fatal::tuple< std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, Child<::std::int64_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i64_t>>, + std::pair, Child<::facebook::fboss::cfg::DsfNodeType, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::DsfNodeType>>>, + std::pair, ChildThriftPath<::std::vector<::std::string>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::facebook::fboss::cfg::Range64, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, Child<::facebook::fboss::cfg::AsicType, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::AsicType>>>, + std::pair, Child<::facebook::fboss::PlatformType, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::PlatformType>>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, ChildThriftPath<::facebook::fboss::cfg::SystemPortRanges, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>>; template - using NameToId = fatal::tuple>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(vlanID, 1); - STRUCT_CHILD_GETTERS(macAddress, 2); + STRUCT_CHILD_GETTERS(name, 1); + STRUCT_CHILD_GETTERS(switchId, 2); + STRUCT_CHILD_GETTERS(type, 3); + STRUCT_CHILD_GETTERS(loopbackIps, 4); + STRUCT_CHILD_GETTERS(systemPortRange_DEPRECATED, 5); + STRUCT_CHILD_GETTERS(nodeMac, 6); + STRUCT_CHILD_GETTERS(asicType, 7); + STRUCT_CHILD_GETTERS(platformType, 8); + STRUCT_CHILD_GETTERS(clusterId, 9); + STRUCT_CHILD_GETTERS(fabricLevel, 10); + STRUCT_CHILD_GETTERS(localSystemPortOffset, 11); + STRUCT_CHILD_GETTERS(globalSystemPortOffset, 12); + STRUCT_CHILD_GETTERS(systemPortRanges, 13); + STRUCT_CHILD_GETTERS(inbandPortId, 14); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return vlanID(); } - else if constexpr (__id == 2) { return macAddress(); } + if constexpr (__id == 1) { return name(); } + else if constexpr (__id == 2) { return switchId(); } + else if constexpr (__id == 3) { return type(); } + else if constexpr (__id == 4) { return loopbackIps(); } + else if constexpr (__id == 5) { return systemPortRange_DEPRECATED(); } + else if constexpr (__id == 6) { return nodeMac(); } + else if constexpr (__id == 7) { return asicType(); } + else if constexpr (__id == 8) { return platformType(); } + else if constexpr (__id == 9) { return clusterId(); } + else if constexpr (__id == 10) { return fabricLevel(); } + else if constexpr (__id == 11) { return localSystemPortOffset(); } + else if constexpr (__id == 12) { return globalSystemPortOffset(); } + else if constexpr (__id == 13) { return systemPortRanges(); } + else if constexpr (__id == 14) { return inbandPortId(); } } template @@ -12001,19 +11600,19 @@ std::pair -class ChildThriftPath<::facebook::fboss::cfg::QueueCongestionDetection, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::cfg::PortPause, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::cfg::QueueCongestionDetection, + ::facebook::fboss::cfg::PortPause, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::variant, - ::apache::thrift::type::union_t<::facebook::fboss::cfg::QueueCongestionDetection>, + ::apache::thrift::type_class::structure, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::PortPause>, Parent> { public: using Self = Path< - ::facebook::fboss::cfg::QueueCongestionDetection, + ::facebook::fboss::cfg::PortPause, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::variant, - ::apache::thrift::type::union_t<::facebook::fboss::cfg::QueueCongestionDetection>, + ::apache::thrift::type_class::structure, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::PortPause>, Parent>; using strings = ::facebook::fboss::cfg::switch_config_tags::strings; template @@ -12024,20 +11623,25 @@ class ChildThriftPath<::facebook::fboss::cfg::QueueCongestionDetection, ::facebo ChildTag, Self >; - using Children = fatal::tuple>>; - using ChildrenById = fatal::tuple< std::pair, ChildThriftPath<::facebook::fboss::cfg::LinearQueueCongestionDetection, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + using Children = fatal::tuple>, +std::pair>>; + using ChildrenById = fatal::tuple< std::pair, Child>, + std::pair, Child>>; template - using NameToId = fatal::tuple>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(linear, 1); + STRUCT_CHILD_GETTERS(tx, 1); + STRUCT_CHILD_GETTERS(rx, 2); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return linear(); } + if constexpr (__id == 1) { return tx(); } + else if constexpr (__id == 2) { return rx(); } } template @@ -12048,21 +11652,21 @@ class ChildThriftPath<::facebook::fboss::cfg::QueueCongestionDetection, ::facebo template -class ChildThriftPath<::facebook::fboss::cfg::ChipConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::cfg::PortPfc, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::cfg::ChipConfig, + ::facebook::fboss::cfg::PortPfc, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::variant, - ::apache::thrift::type::union_t<::facebook::fboss::cfg::ChipConfig>, + ::apache::thrift::type_class::structure, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::PortPfc>, Parent> { public: using Self = Path< - ::facebook::fboss::cfg::ChipConfig, + ::facebook::fboss::cfg::PortPfc, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::variant, - ::apache::thrift::type::union_t<::facebook::fboss::cfg::ChipConfig>, + ::apache::thrift::type_class::structure, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::PortPfc>, Parent>; - using strings = ::facebook::fboss::cfg::platform_config_tags::strings; + using strings = ::facebook::fboss::cfg::switch_config_tags::strings; template using Child = Path< ChildType, @@ -12071,30 +11675,35 @@ class ChildThriftPath<::facebook::fboss::cfg::ChipConfig, ::facebook::fboss::fsd ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>, -std::pair>>; - using ChildrenById = fatal::tuple< std::pair, ChildThriftPath<::facebook::fboss::bcm::BcmConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::facebook::fboss::asic::AsicConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::facebook::fboss::cfg::AsicConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + using Children = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>>; + using ChildrenById = fatal::tuple< std::pair, Child>, + std::pair, Child>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, ChildThriftPath<::facebook::fboss::cfg::PfcWatchdog, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(bcm, 1); - STRUCT_CHILD_GETTERS(asic, 2); - STRUCT_CHILD_GETTERS(asicConfig, 3); + STRUCT_CHILD_GETTERS(tx, 1); + STRUCT_CHILD_GETTERS(rx, 2); + STRUCT_CHILD_GETTERS(portPgConfigName, 3); + STRUCT_CHILD_GETTERS(watchdog, 4); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return bcm(); } - else if constexpr (__id == 2) { return asic(); } - else if constexpr (__id == 3) { return asicConfig(); } + if constexpr (__id == 1) { return tx(); } + else if constexpr (__id == 2) { return rx(); } + else if constexpr (__id == 3) { return portPgConfigName(); } + else if constexpr (__id == 4) { return watchdog(); } } template @@ -12103,21 +11712,105 @@ std::pair -class ChildThriftPath<::facebook::fboss::cfg::QcmConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::set<::facebook::fboss::cfg::MPLSField>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::cfg::QcmConfig, + ::std::set<::facebook::fboss::cfg::MPLSField>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::set<::apache::thrift::type_class::enumeration>, + ::apache::thrift::type::set<::apache::thrift::type::enum_t<::facebook::fboss::cfg::MPLSField>>, + Parent> { + public: + using Self = Path< + ::std::set<::facebook::fboss::cfg::MPLSField>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::set<::apache::thrift::type_class::enumeration>, + ::apache::thrift::type::set<::apache::thrift::type::enum_t<::facebook::fboss::cfg::MPLSField>>, + Parent>; + using Child = Path<::facebook::fboss::cfg::MPLSField, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::MPLSField>, Self>; + using Self::Self; + + CONTAINER_CHILD_GETTERS(::facebook::fboss::cfg::MPLSField); +}; + +template +class ChildThriftPath<::std::vector<::facebook::fboss::cfg::FirmwareVersion>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : + public Path< + ::std::vector<::facebook::fboss::cfg::FirmwareVersion>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::FirmwareVersion>>, + Parent> { + public: + using Self = Path< + ::std::vector<::facebook::fboss::cfg::FirmwareVersion>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::FirmwareVersion>>, + Parent>; + using Child = ChildThriftPath<::facebook::fboss::cfg::FirmwareVersion, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Self::Self; + + CONTAINER_CHILD_GETTERS(::std::int32_t); +}; + +template +class ChildThriftPath<::std::map<::std::string, ::facebook::fboss::state::PortFlowletFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : + public Path< + ::std::map<::std::string, ::facebook::fboss::state::PortFlowletFields>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::PortFlowletFields>>, + Parent> { + public: + using Self = Path< + ::std::map<::std::string, ::facebook::fboss::state::PortFlowletFields>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::PortFlowletFields>>, + Parent>; + using Child = ChildThriftPath<::facebook::fboss::state::PortFlowletFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Self::Self; + + CONTAINER_CHILD_GETTERS(::std::string); +}; + +template +class ChildThriftPath<::std::map<::facebook::fboss::cfg::LLDPTag, ::std::string>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : + public Path< + ::std::map<::facebook::fboss::cfg::LLDPTag, ::std::string>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::map<::apache::thrift::type_class::enumeration, ::apache::thrift::type_class::string>, + ::apache::thrift::type::map<::apache::thrift::type::enum_t<::facebook::fboss::cfg::LLDPTag>, ::apache::thrift::type::string_t>, + Parent> { + public: + using Self = Path< + ::std::map<::facebook::fboss::cfg::LLDPTag, ::std::string>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::map<::apache::thrift::type_class::enumeration, ::apache::thrift::type_class::string>, + ::apache::thrift::type::map<::apache::thrift::type::enum_t<::facebook::fboss::cfg::LLDPTag>, ::apache::thrift::type::string_t>, + Parent>; + using Child = Path<::std::string, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t, Self>; + using Self::Self; + + CONTAINER_CHILD_GETTERS(::facebook::fboss::cfg::LLDPTag); +}; + + +template +class ChildThriftPath<::facebook::fboss::cfg::StaticRouteWithNextHops, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : + public Path< + ::facebook::fboss::cfg::StaticRouteWithNextHops, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::QcmConfig>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::StaticRouteWithNextHops>, Parent> { public: using Self = Path< - ::facebook::fboss::cfg::QcmConfig, + ::facebook::fboss::cfg::StaticRouteWithNextHops, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::QcmConfig>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::StaticRouteWithNextHops>, Parent>; using strings = ::facebook::fboss::cfg::switch_config_tags::strings; template @@ -12128,95 +11821,30 @@ class ChildThriftPath<::facebook::fboss::cfg::QcmConfig, ::facebook::fboss::fsdb ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair>>; + using Children = fatal::tuple>, +std::pair>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; using ChildrenById = fatal::tuple< std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, ChildThriftPath<::std::map<::facebook::fboss::cfg::BurstMonitorWeight, ::std::int16_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, - std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, - std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, ChildThriftPath<::std::vector<::std::int32_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::map<::std::int32_t, ::std::vector<::std::int32_t>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, Child>>; + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, ChildThriftPath<::std::vector<::std::string>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(numFlowSamplesPerView, 1); - STRUCT_CHILD_GETTERS(flowLimit, 2); - STRUCT_CHILD_GETTERS(numFlowsClear, 3); - STRUCT_CHILD_GETTERS(scanIntervalInUsecs, 4); - STRUCT_CHILD_GETTERS(exportThreshold, 5); - STRUCT_CHILD_GETTERS(flowWeights, 6); - STRUCT_CHILD_GETTERS(agingIntervalInMsecs, 7); - STRUCT_CHILD_GETTERS(collectorDstIp, 8); - STRUCT_CHILD_GETTERS(collectorSrcPort, 10); - STRUCT_CHILD_GETTERS(collectorDstPort, 11); - STRUCT_CHILD_GETTERS(collectorDscp, 12); - STRUCT_CHILD_GETTERS(ppsToQcm, 13); - STRUCT_CHILD_GETTERS(collectorSrcIp, 14); - STRUCT_CHILD_GETTERS(monitorQcmPortList, 15); - STRUCT_CHILD_GETTERS(port2QosQueueIds, 16); - STRUCT_CHILD_GETTERS(monitorQcmCfgPortsOnly, 17); + STRUCT_CHILD_GETTERS(routerID, 1); + STRUCT_CHILD_GETTERS(prefix, 2); + STRUCT_CHILD_GETTERS(nexthops, 3); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return numFlowSamplesPerView(); } - else if constexpr (__id == 2) { return flowLimit(); } - else if constexpr (__id == 3) { return numFlowsClear(); } - else if constexpr (__id == 4) { return scanIntervalInUsecs(); } - else if constexpr (__id == 5) { return exportThreshold(); } - else if constexpr (__id == 6) { return flowWeights(); } - else if constexpr (__id == 7) { return agingIntervalInMsecs(); } - else if constexpr (__id == 8) { return collectorDstIp(); } - else if constexpr (__id == 10) { return collectorSrcPort(); } - else if constexpr (__id == 11) { return collectorDstPort(); } - else if constexpr (__id == 12) { return collectorDscp(); } - else if constexpr (__id == 13) { return ppsToQcm(); } - else if constexpr (__id == 14) { return collectorSrcIp(); } - else if constexpr (__id == 15) { return monitorQcmPortList(); } - else if constexpr (__id == 16) { return port2QosQueueIds(); } - else if constexpr (__id == 17) { return monitorQcmCfgPortsOnly(); } + if constexpr (__id == 1) { return routerID(); } + else if constexpr (__id == 2) { return prefix(); } + else if constexpr (__id == 3) { return nexthops(); } } template @@ -12381,21 +12009,21 @@ std::pair template -class ChildThriftPath<::facebook::fboss::cfg::Range64, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::phy::RxSettings, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::cfg::Range64, + ::facebook::fboss::phy::RxSettings, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::Range64>, + ::apache::thrift::type::struct_t<::facebook::fboss::phy::RxSettings>, Parent> { public: using Self = Path< - ::facebook::fboss::cfg::Range64, + ::facebook::fboss::phy::RxSettings, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::Range64>, + ::apache::thrift::type::struct_t<::facebook::fboss::phy::RxSettings>, Parent>; - using strings = ::facebook::fboss::cfg::switch_config_tags::strings; + using strings = ::facebook::fboss::phy::phy_tags::strings; template using Child = Path< ChildType, @@ -12404,98 +12032,215 @@ class ChildThriftPath<::facebook::fboss::cfg::Range64, ::facebook::fboss::fsdb:: ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>>; - using ChildrenById = fatal::tuple< std::pair, Child<::std::int64_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i64_t>>, - std::pair, Child<::std::int64_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i64_t>>>; - template - using NameToId = fatal::tuple>, -std::pair>>::template type_of; - - template - using TypeFor = typename Children::template type_of; - using Self::Self; - - STRUCT_CHILD_GETTERS(minimum, 1); - STRUCT_CHILD_GETTERS(maximum, 2); - - template - auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return minimum(); } - else if constexpr (__id == 2) { return maximum(); } - } - - template - auto operator()(const fatal::sequence&) { - return operator()(NameToId>()); - } -}; - -template -class ChildThriftPath<::std::vector<::facebook::fboss::cfg::SflowCollector>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : - public Path< - ::std::vector<::facebook::fboss::cfg::SflowCollector>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::SflowCollector>>, - Parent> { - public: - using Self = Path< - ::std::vector<::facebook::fboss::cfg::SflowCollector>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::SflowCollector>>, - Parent>; - using Child = ChildThriftPath<::facebook::fboss::cfg::SflowCollector, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; - using Self::Self; - - CONTAINER_CHILD_GETTERS(::std::int32_t); -}; - - -template -class ChildThriftPath<::facebook::fboss::cfg::Range, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : - public Path< - ::facebook::fboss::cfg::Range, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::Range>, - Parent> { - public: - using Self = Path< - ::facebook::fboss::cfg::Range, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::Range>, - Parent>; - using strings = ::facebook::fboss::cfg::switch_config_tags::strings; - template - using Child = Path< - ChildType, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ChildTC, - ChildTag, - Self - >; - using Children = fatal::tuple>, -std::pair>>; - using ChildrenById = fatal::tuple< std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>>; + using Children = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>>; + using ChildrenById = fatal::tuple< std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, + std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, + std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, + std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>>; template - using NameToId = fatal::tuple>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(minimum, 1); - STRUCT_CHILD_GETTERS(maximum, 2); + STRUCT_CHILD_GETTERS(ctlCode, 1); + STRUCT_CHILD_GETTERS(dspMode, 2); + STRUCT_CHILD_GETTERS(afeTrim, 3); + STRUCT_CHILD_GETTERS(acCouplingBypass, 4); + STRUCT_CHILD_GETTERS(channelReach, 5); + STRUCT_CHILD_GETTERS(diffEncoderEn, 6); + STRUCT_CHILD_GETTERS(fbfCoefInitVal, 7); + STRUCT_CHILD_GETTERS(fbfLmsEnable, 8); + STRUCT_CHILD_GETTERS(instgScanOptimize, 9); + STRUCT_CHILD_GETTERS(instgTableEndRow, 10); + STRUCT_CHILD_GETTERS(instgTableStartRow, 11); + STRUCT_CHILD_GETTERS(parityEncoderEn, 12); + STRUCT_CHILD_GETTERS(thpEn, 13); + STRUCT_CHILD_GETTERS(dcTermEn, 14); + STRUCT_CHILD_GETTERS(setPrecode, 15); + STRUCT_CHILD_GETTERS(instgBoost1Start, 16); + STRUCT_CHILD_GETTERS(instgBoost1Step, 17); + STRUCT_CHILD_GETTERS(instgBoost1Stop, 18); + STRUCT_CHILD_GETTERS(instgBoost2OrHrStart, 19); + STRUCT_CHILD_GETTERS(instgBoost2OrHrStep, 20); + STRUCT_CHILD_GETTERS(instgBoost2OrHrStop, 21); + STRUCT_CHILD_GETTERS(instgC1Start1p7, 22); + STRUCT_CHILD_GETTERS(instgC1Step1p7, 23); + STRUCT_CHILD_GETTERS(instgC1Stop1p7, 24); + STRUCT_CHILD_GETTERS(instgDfeStart1p7, 25); + STRUCT_CHILD_GETTERS(instgDfeStep1p7, 26); + STRUCT_CHILD_GETTERS(instgDfeStop1p7, 27); + STRUCT_CHILD_GETTERS(enableScanSelection, 28); + STRUCT_CHILD_GETTERS(instgScanUseSrSettings, 29); + STRUCT_CHILD_GETTERS(cdrCfgOvEn, 30); + STRUCT_CHILD_GETTERS(cdrTdet1stOrdStepOvVal, 31); + STRUCT_CHILD_GETTERS(cdrTdet2ndOrdStepOvVal, 32); + STRUCT_CHILD_GETTERS(cdrTdetFineStepOvVal, 33); + STRUCT_CHILD_GETTERS(ldoBypass, 34); + STRUCT_CHILD_GETTERS(ffeLengthBitmap, 35); + STRUCT_CHILD_GETTERS(instgEnableScan, 36); + STRUCT_CHILD_GETTERS(dcwEn, 37); + STRUCT_CHILD_GETTERS(dcwStepCoarseOvVal, 38); + STRUCT_CHILD_GETTERS(dcwStepFineOvVal, 39); + STRUCT_CHILD_GETTERS(dcwOvEn, 40); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return minimum(); } - else if constexpr (__id == 2) { return maximum(); } + if constexpr (__id == 1) { return ctlCode(); } + else if constexpr (__id == 2) { return dspMode(); } + else if constexpr (__id == 3) { return afeTrim(); } + else if constexpr (__id == 4) { return acCouplingBypass(); } + else if constexpr (__id == 5) { return channelReach(); } + else if constexpr (__id == 6) { return diffEncoderEn(); } + else if constexpr (__id == 7) { return fbfCoefInitVal(); } + else if constexpr (__id == 8) { return fbfLmsEnable(); } + else if constexpr (__id == 9) { return instgScanOptimize(); } + else if constexpr (__id == 10) { return instgTableEndRow(); } + else if constexpr (__id == 11) { return instgTableStartRow(); } + else if constexpr (__id == 12) { return parityEncoderEn(); } + else if constexpr (__id == 13) { return thpEn(); } + else if constexpr (__id == 14) { return dcTermEn(); } + else if constexpr (__id == 15) { return setPrecode(); } + else if constexpr (__id == 16) { return instgBoost1Start(); } + else if constexpr (__id == 17) { return instgBoost1Step(); } + else if constexpr (__id == 18) { return instgBoost1Stop(); } + else if constexpr (__id == 19) { return instgBoost2OrHrStart(); } + else if constexpr (__id == 20) { return instgBoost2OrHrStep(); } + else if constexpr (__id == 21) { return instgBoost2OrHrStop(); } + else if constexpr (__id == 22) { return instgC1Start1p7(); } + else if constexpr (__id == 23) { return instgC1Step1p7(); } + else if constexpr (__id == 24) { return instgC1Stop1p7(); } + else if constexpr (__id == 25) { return instgDfeStart1p7(); } + else if constexpr (__id == 26) { return instgDfeStep1p7(); } + else if constexpr (__id == 27) { return instgDfeStop1p7(); } + else if constexpr (__id == 28) { return enableScanSelection(); } + else if constexpr (__id == 29) { return instgScanUseSrSettings(); } + else if constexpr (__id == 30) { return cdrCfgOvEn(); } + else if constexpr (__id == 31) { return cdrTdet1stOrdStepOvVal(); } + else if constexpr (__id == 32) { return cdrTdet2ndOrdStepOvVal(); } + else if constexpr (__id == 33) { return cdrTdetFineStepOvVal(); } + else if constexpr (__id == 34) { return ldoBypass(); } + else if constexpr (__id == 35) { return ffeLengthBitmap(); } + else if constexpr (__id == 36) { return instgEnableScan(); } + else if constexpr (__id == 37) { return dcwEn(); } + else if constexpr (__id == 38) { return dcwStepCoarseOvVal(); } + else if constexpr (__id == 39) { return dcwStepFineOvVal(); } + else if constexpr (__id == 40) { return dcwOvEn(); } } template @@ -12505,90 +12250,106 @@ std::pair -class ChildThriftPath<::std::vector<::facebook::fboss::cfg::AclUdfEntry>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::vector<::facebook::fboss::cfg::PortPgConfig>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::vector<::facebook::fboss::cfg::AclUdfEntry>, + ::std::vector<::facebook::fboss::cfg::PortPgConfig>, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::AclUdfEntry>>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::PortPgConfig>>, Parent> { public: using Self = Path< - ::std::vector<::facebook::fboss::cfg::AclUdfEntry>, + ::std::vector<::facebook::fboss::cfg::PortPgConfig>, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::AclUdfEntry>>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::PortPgConfig>>, Parent>; - using Child = ChildThriftPath<::facebook::fboss::cfg::AclUdfEntry, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Child = ChildThriftPath<::facebook::fboss::cfg::PortPgConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; using Self::Self; CONTAINER_CHILD_GETTERS(::std::int32_t); }; - template -class ChildThriftPath<::facebook::fboss::state::TeFlowEntryFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::map<::std::string, ::facebook::fboss::state::NeighborResponseEntryFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::state::TeFlowEntryFields, + ::std::map<::std::string, ::facebook::fboss::state::NeighborResponseEntryFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::state::TeFlowEntryFields>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::NeighborResponseEntryFields>>, Parent> { public: using Self = Path< - ::facebook::fboss::state::TeFlowEntryFields, + ::std::map<::std::string, ::facebook::fboss::state::NeighborResponseEntryFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::state::TeFlowEntryFields>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::NeighborResponseEntryFields>>, Parent>; - using strings = ::facebook::fboss::state::switch_state_tags::strings; - template - using Child = Path< - ChildType, - ::facebook::fboss::fsdb::FsdbOperStateRoot, + using Child = ChildThriftPath<::facebook::fboss::state::NeighborResponseEntryFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Self::Self; + + CONTAINER_CHILD_GETTERS(::std::string); +}; + + +template +class ChildThriftPath<::facebook::fboss::cfg::PlatformConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : + public Path< + ::facebook::fboss::cfg::PlatformConfig, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::structure, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::PlatformConfig>, + Parent> { + public: + using Self = Path< + ::facebook::fboss::cfg::PlatformConfig, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::structure, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::PlatformConfig>, + Parent>; + using strings = ::facebook::fboss::cfg::platform_config_tags::strings; + template + using Child = Path< + ChildType, + ::facebook::fboss::fsdb::FsdbOperStateRoot, ChildTC, ChildTag, Self >; - using Children = fatal::tuple>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair>, -std::pair>, -std::pair>>; - using ChildrenById = fatal::tuple< std::pair, ChildThriftPath<::facebook::fboss::TeFlow, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::vector<::facebook::fboss::NextHopThrift>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::vector<::facebook::fboss::NextHopThrift>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, Child>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, Child>>; + using Children = fatal::tuple>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + using ChildrenById = fatal::tuple< std::pair, ChildThriftPath<::facebook::fboss::cfg::ChipConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::map<::facebook::fboss::cfg::PlatformAttributes, ::std::string>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::map<::std::int16_t, ::std::int64_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::map<::std::int16_t, ::facebook::fboss::cfg::ChipConfig>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::map<::std::int16_t, ::std::map<::facebook::fboss::cfg::PlatformAttributes, ::std::string>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(flow, 1); - STRUCT_CHILD_GETTERS(nexthops, 3); - STRUCT_CHILD_GETTERS(resolvedNexthops, 4); - STRUCT_CHILD_GETTERS(enabled, 5); - STRUCT_CHILD_GETTERS(counterID, 6); - STRUCT_CHILD_GETTERS(statEnabled, 7); + STRUCT_CHILD_GETTERS(chip, 1); + STRUCT_CHILD_GETTERS(platformSettings, 3); + STRUCT_CHILD_GETTERS(switchIndexToSwitchId, 4); + STRUCT_CHILD_GETTERS(switchIndexToChipConfigs, 5); + STRUCT_CHILD_GETTERS(switchIndexToPlatformSettings, 6); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return flow(); } - else if constexpr (__id == 3) { return nexthops(); } - else if constexpr (__id == 4) { return resolvedNexthops(); } - else if constexpr (__id == 5) { return enabled(); } - else if constexpr (__id == 6) { return counterID(); } - else if constexpr (__id == 7) { return statEnabled(); } + if constexpr (__id == 1) { return chip(); } + else if constexpr (__id == 3) { return platformSettings(); } + else if constexpr (__id == 4) { return switchIndexToSwitchId(); } + else if constexpr (__id == 5) { return switchIndexToChipConfigs(); } + else if constexpr (__id == 6) { return switchIndexToPlatformSettings(); } } template @@ -12598,178 +12359,106 @@ std::pair -class ChildThriftPath<::std::vector<::std::string>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::map<::std::int16_t, ::facebook::fboss::state::FibContainerFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::vector<::std::string>, + ::std::map<::std::int16_t, ::facebook::fboss::state::FibContainerFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::string>, - ::apache::thrift::type::list<::apache::thrift::type::string_t>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>, + ::apache::thrift::type::map<::apache::thrift::type::i16_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::FibContainerFields>>, Parent> { public: using Self = Path< - ::std::vector<::std::string>, + ::std::map<::std::int16_t, ::facebook::fboss::state::FibContainerFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::string>, - ::apache::thrift::type::list<::apache::thrift::type::string_t>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>, + ::apache::thrift::type::map<::apache::thrift::type::i16_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::FibContainerFields>>, Parent>; - using Child = Path<::std::string, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t, Self>; + using Child = ChildThriftPath<::facebook::fboss::state::FibContainerFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; using Self::Self; - CONTAINER_CHILD_GETTERS(::std::int32_t); + CONTAINER_CHILD_GETTERS(::std::int16_t); }; template -class ChildThriftPath<::std::vector<::facebook::fboss::cfg::IpInIpTunnel>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::vector<::facebook::fboss::cfg::Interface>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::vector<::facebook::fboss::cfg::IpInIpTunnel>, + ::std::vector<::facebook::fboss::cfg::Interface>, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::IpInIpTunnel>>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::Interface>>, Parent> { public: using Self = Path< - ::std::vector<::facebook::fboss::cfg::IpInIpTunnel>, + ::std::vector<::facebook::fboss::cfg::Interface>, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::IpInIpTunnel>>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::Interface>>, Parent>; - using Child = ChildThriftPath<::facebook::fboss::cfg::IpInIpTunnel, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Child = ChildThriftPath<::facebook::fboss::cfg::Interface, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; using Self::Self; CONTAINER_CHILD_GETTERS(::std::int32_t); }; - -template -class ChildThriftPath<::facebook::fboss::cfg::AggregatePort, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : - public Path< - ::facebook::fboss::cfg::AggregatePort, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::AggregatePort>, - Parent> { - public: - using Self = Path< - ::facebook::fboss::cfg::AggregatePort, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::AggregatePort>, - Parent>; - using strings = ::facebook::fboss::cfg::switch_config_tags::strings; - template - using Child = Path< - ChildType, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ChildTC, - ChildTag, - Self - >; - using Children = fatal::tuple>, -std::pair>, -std::pair>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; - using ChildrenById = fatal::tuple< std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::AggregatePortMember>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::facebook::fboss::cfg::MinimumCapacity, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::vector<::std::string>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; - template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>>::template type_of; - - template - using TypeFor = typename Children::template type_of; - using Self::Self; - - STRUCT_CHILD_GETTERS(key, 1); - STRUCT_CHILD_GETTERS(name, 2); - STRUCT_CHILD_GETTERS(description, 3); - STRUCT_CHILD_GETTERS(memberPorts, 4); - STRUCT_CHILD_GETTERS(minimumCapacity, 5); - STRUCT_CHILD_GETTERS(counterTags, 6); - - template - auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return key(); } - else if constexpr (__id == 2) { return name(); } - else if constexpr (__id == 3) { return description(); } - else if constexpr (__id == 4) { return memberPorts(); } - else if constexpr (__id == 5) { return minimumCapacity(); } - else if constexpr (__id == 6) { return counterTags(); } - } - - template - auto operator()(const fatal::sequence&) { - return operator()(NameToId>()); - } -}; - template -class ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::int16_t, ::facebook::fboss::state::TransceiverSpecFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::vector<::facebook::fboss::state::RxSak>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::int16_t, ::facebook::fboss::state::TransceiverSpecFields>>, + ::std::vector<::facebook::fboss::state::RxSak>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>>, - ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::map<::apache::thrift::type::i16_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::TransceiverSpecFields>>>, + ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::state::RxSak>>, Parent> { public: using Self = Path< - ::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::int16_t, ::facebook::fboss::state::TransceiverSpecFields>>, + ::std::vector<::facebook::fboss::state::RxSak>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>>, - ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::map<::apache::thrift::type::i16_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::TransceiverSpecFields>>>, + ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::state::RxSak>>, Parent>; - using Child = ChildThriftPath<::std::map<::std::int16_t, ::facebook::fboss::state::TransceiverSpecFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Child = ChildThriftPath<::facebook::fboss::state::RxSak, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; using Self::Self; - CONTAINER_CHILD_GETTERS(::facebook::fboss::state::SwitchIdList); + CONTAINER_CHILD_GETTERS(::std::int32_t); }; template -class ChildThriftPath<::std::map<::facebook::fboss::cfg::PortPgConfigName, ::std::vector<::facebook::fboss::cfg::PortPgConfig>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::vector<::facebook::fboss::cfg::PortNeighbor>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::map<::facebook::fboss::cfg::PortPgConfigName, ::std::vector<::facebook::fboss::cfg::PortPgConfig>>, + ::std::vector<::facebook::fboss::cfg::PortNeighbor>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>>, - ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::PortPgConfig>>>, + ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::PortNeighbor>>, Parent> { public: using Self = Path< - ::std::map<::facebook::fboss::cfg::PortPgConfigName, ::std::vector<::facebook::fboss::cfg::PortPgConfig>>, + ::std::vector<::facebook::fboss::cfg::PortNeighbor>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>>, - ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::PortPgConfig>>>, + ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::PortNeighbor>>, Parent>; - using Child = ChildThriftPath<::std::vector<::facebook::fboss::cfg::PortPgConfig>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Child = ChildThriftPath<::facebook::fboss::cfg::PortNeighbor, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; using Self::Self; - CONTAINER_CHILD_GETTERS(::facebook::fboss::cfg::PortPgConfigName); + CONTAINER_CHILD_GETTERS(::std::int32_t); }; template -class ChildThriftPath<::facebook::fboss::state::VlanFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::cfg::SwitchSettings, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::state::VlanFields, + ::facebook::fboss::cfg::SwitchSettings, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::state::VlanFields>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::SwitchSettings>, Parent> { public: using Self = Path< - ::facebook::fboss::state::VlanFields, + ::facebook::fboss::cfg::SwitchSettings, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::state::VlanFields>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::SwitchSettings>, Parent>; - using strings = ::facebook::fboss::state::switch_state_tags::strings; + using strings = ::facebook::fboss::cfg::switch_config_tags::strings; template using Child = Path< ChildType, @@ -12778,80 +12467,135 @@ class ChildThriftPath<::facebook::fboss::state::VlanFields, ::facebook::fboss::f ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; - using ChildrenById = fatal::tuple< std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, ChildThriftPath<::std::map<::std::string, ::std::string>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::map<::std::string, ::std::string>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::map<::std::int16_t, bool>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::map<::std::string, ::facebook::fboss::state::NeighborEntryFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::map<::std::string, ::facebook::fboss::state::NeighborResponseEntryFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::map<::std::string, ::facebook::fboss::state::NeighborEntryFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::map<::std::string, ::facebook::fboss::state::NeighborResponseEntryFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::map<::std::string, ::facebook::fboss::state::MacEntryFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + using Children = fatal::tuple>>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair>>, +std::pair>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair>>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair>, +std::pair>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>>; + using ChildrenById = fatal::tuple< std::pair, Child<::facebook::fboss::cfg::L2LearningMode, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::L2LearningMode>>>, + std::pair, Child>, + std::pair, Child>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::Neighbor>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::MacAndVlan>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, Child<::facebook::fboss::cfg::SwitchType, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::SwitchType>>>, + std::pair, Child<::std::int64_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i64_t>>, + std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::ExactMatchTableConfig>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::map<::std::int64_t, ::facebook::fboss::cfg::SwitchType>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, Child<::facebook::fboss::cfg::SwitchDrainState, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::SwitchDrainState>>>, + std::pair, ChildThriftPath<::std::map<::std::int64_t, ::facebook::fboss::cfg::SwitchInfo>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, ChildThriftPath<::std::vector<::std::string>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::vector<::std::string>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, Child>, + std::pair, Child<::std::int8_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::byte_t>>, + std::pair, Child<::std::int8_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::byte_t>>, + std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>>; template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(vlanId, 1); - STRUCT_CHILD_GETTERS(vlanName, 2); - STRUCT_CHILD_GETTERS(intfID, 3); - STRUCT_CHILD_GETTERS(dhcpV4Relay, 4); - STRUCT_CHILD_GETTERS(dhcpV6Relay, 5); - STRUCT_CHILD_GETTERS(dhcpRelayOverridesV4, 6); - STRUCT_CHILD_GETTERS(dhcpRelayOverridesV6, 7); - STRUCT_CHILD_GETTERS(ports, 8); - STRUCT_CHILD_GETTERS(arpTable, 9); - STRUCT_CHILD_GETTERS(arpResponseTable, 10); - STRUCT_CHILD_GETTERS(ndpTable, 11); - STRUCT_CHILD_GETTERS(ndpResponseTable, 12); - STRUCT_CHILD_GETTERS(macTable, 13); + STRUCT_CHILD_GETTERS(l2LearningMode, 1); + STRUCT_CHILD_GETTERS(qcmEnable, 2); + STRUCT_CHILD_GETTERS(ptpTcEnable, 3); + STRUCT_CHILD_GETTERS(l2AgeTimerSeconds, 4); + STRUCT_CHILD_GETTERS(maxRouteCounterIDs, 5); + STRUCT_CHILD_GETTERS(blockNeighbors, 6); + STRUCT_CHILD_GETTERS(macAddrsToBlock, 7); + STRUCT_CHILD_GETTERS(switchType, 8); + STRUCT_CHILD_GETTERS(switchId, 9); + STRUCT_CHILD_GETTERS(exactMatchTableConfigs, 10); + STRUCT_CHILD_GETTERS(switchIdToSwitchType_DEPRECATED, 11); + STRUCT_CHILD_GETTERS(switchDrainState, 12); + STRUCT_CHILD_GETTERS(switchIdToSwitchInfo, 13); + STRUCT_CHILD_GETTERS(minLinksToRemainInVOQDomain, 14); + STRUCT_CHILD_GETTERS(minLinksToJoinVOQDomain, 15); + STRUCT_CHILD_GETTERS(vendorMacOuis, 16); + STRUCT_CHILD_GETTERS(metaMacOuis, 17); + STRUCT_CHILD_GETTERS(needL2EntryForNeighbor, 18); + STRUCT_CHILD_GETTERS(sramGlobalFreePercentXoffThreshold, 19); + STRUCT_CHILD_GETTERS(sramGlobalFreePercentXonThreshold, 20); + STRUCT_CHILD_GETTERS(linkFlowControlCreditThreshold, 21); + STRUCT_CHILD_GETTERS(voqDramBoundThreshold, 22); + STRUCT_CHILD_GETTERS(conditionalEntropyRehashPeriodUS, 23); + STRUCT_CHILD_GETTERS(firmwarePath, 24); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return vlanId(); } - else if constexpr (__id == 2) { return vlanName(); } - else if constexpr (__id == 3) { return intfID(); } - else if constexpr (__id == 4) { return dhcpV4Relay(); } - else if constexpr (__id == 5) { return dhcpV6Relay(); } - else if constexpr (__id == 6) { return dhcpRelayOverridesV4(); } - else if constexpr (__id == 7) { return dhcpRelayOverridesV6(); } - else if constexpr (__id == 8) { return ports(); } - else if constexpr (__id == 9) { return arpTable(); } - else if constexpr (__id == 10) { return arpResponseTable(); } - else if constexpr (__id == 11) { return ndpTable(); } - else if constexpr (__id == 12) { return ndpResponseTable(); } - else if constexpr (__id == 13) { return macTable(); } + if constexpr (__id == 1) { return l2LearningMode(); } + else if constexpr (__id == 2) { return qcmEnable(); } + else if constexpr (__id == 3) { return ptpTcEnable(); } + else if constexpr (__id == 4) { return l2AgeTimerSeconds(); } + else if constexpr (__id == 5) { return maxRouteCounterIDs(); } + else if constexpr (__id == 6) { return blockNeighbors(); } + else if constexpr (__id == 7) { return macAddrsToBlock(); } + else if constexpr (__id == 8) { return switchType(); } + else if constexpr (__id == 9) { return switchId(); } + else if constexpr (__id == 10) { return exactMatchTableConfigs(); } + else if constexpr (__id == 11) { return switchIdToSwitchType_DEPRECATED(); } + else if constexpr (__id == 12) { return switchDrainState(); } + else if constexpr (__id == 13) { return switchIdToSwitchInfo(); } + else if constexpr (__id == 14) { return minLinksToRemainInVOQDomain(); } + else if constexpr (__id == 15) { return minLinksToJoinVOQDomain(); } + else if constexpr (__id == 16) { return vendorMacOuis(); } + else if constexpr (__id == 17) { return metaMacOuis(); } + else if constexpr (__id == 18) { return needL2EntryForNeighbor(); } + else if constexpr (__id == 19) { return sramGlobalFreePercentXoffThreshold(); } + else if constexpr (__id == 20) { return sramGlobalFreePercentXonThreshold(); } + else if constexpr (__id == 21) { return linkFlowControlCreditThreshold(); } + else if constexpr (__id == 22) { return voqDramBoundThreshold(); } + else if constexpr (__id == 23) { return conditionalEntropyRehashPeriodUS(); } + else if constexpr (__id == 24) { return firmwarePath(); } } template @@ -12862,19 +12606,19 @@ std::pair -class ChildThriftPath<::facebook::fboss::cfg::RedirectNextHop, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::cfg::AclUdfEntry, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::cfg::RedirectNextHop, + ::facebook::fboss::cfg::AclUdfEntry, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::RedirectNextHop>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::AclUdfEntry>, Parent> { public: using Self = Path< - ::facebook::fboss::cfg::RedirectNextHop, + ::facebook::fboss::cfg::AclUdfEntry, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::RedirectNextHop>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::AclUdfEntry>, Parent>; using strings = ::facebook::fboss::cfg::switch_config_tags::strings; template @@ -12885,25 +12629,30 @@ class ChildThriftPath<::facebook::fboss::cfg::RedirectNextHop, ::facebook::fboss ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>>; + using Children = fatal::tuple>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; using ChildrenById = fatal::tuple< std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>>; + std::pair, ChildThriftPath<::std::vector<::std::int8_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::vector<::std::int8_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; template - using NameToId = fatal::tuple>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(ip, 1); - STRUCT_CHILD_GETTERS(intfID, 2); + STRUCT_CHILD_GETTERS(udfGroup, 1); + STRUCT_CHILD_GETTERS(roceBytes, 2); + STRUCT_CHILD_GETTERS(roceMask, 3); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return ip(); } - else if constexpr (__id == 2) { return intfID(); } + if constexpr (__id == 1) { return udfGroup(); } + else if constexpr (__id == 2) { return roceBytes(); } + else if constexpr (__id == 3) { return roceMask(); } } template @@ -12912,281 +12661,151 @@ std::pair } }; - template -class ChildThriftPath<::facebook::fboss::NextHopThrift, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::vector<::facebook::fboss::cfg::AggregatePortMember>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::NextHopThrift, + ::std::vector<::facebook::fboss::cfg::AggregatePortMember>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::NextHopThrift>, + ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::AggregatePortMember>>, Parent> { public: using Self = Path< - ::facebook::fboss::NextHopThrift, + ::std::vector<::facebook::fboss::cfg::AggregatePortMember>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::NextHopThrift>, + ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::AggregatePortMember>>, Parent>; - using strings = ::facebook::fboss::common_tags::strings; - template - using Child = Path< - ChildType, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ChildTC, - ChildTag, - Self - >; - using Children = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>>; - using ChildrenById = fatal::tuple< std::pair, ChildThriftPath<::facebook::network::thrift::BinaryAddress, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, ChildThriftPath<::facebook::fboss::MplsAction, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, Child>>; - template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>>::template type_of; - - template - using TypeFor = typename Children::template type_of; + using Child = ChildThriftPath<::facebook::fboss::cfg::AggregatePortMember, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; using Self::Self; - - STRUCT_CHILD_GETTERS(address, 1); - STRUCT_CHILD_GETTERS(weight, 2); - STRUCT_CHILD_GETTERS(mplsAction, 3); - STRUCT_CHILD_GETTERS(disableTTLDecrement, 4); - - template - auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return address(); } - else if constexpr (__id == 2) { return weight(); } - else if constexpr (__id == 3) { return mplsAction(); } - else if constexpr (__id == 4) { return disableTTLDecrement(); } - } - template - auto operator()(const fatal::sequence&) { - return operator()(NameToId>()); - } + CONTAINER_CHILD_GETTERS(::std::int32_t); }; template -class ChildThriftPath<::std::vector<::facebook::fboss::cfg::Interface>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::map<::std::int32_t, ::std::vector<::std::int32_t>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::vector<::facebook::fboss::cfg::Interface>, + ::std::map<::std::int32_t, ::std::vector<::std::int32_t>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::Interface>>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::list<::apache::thrift::type_class::integral>>, + ::apache::thrift::type::map<::apache::thrift::type::i32_t, ::apache::thrift::type::list<::apache::thrift::type::i32_t>>, Parent> { public: using Self = Path< - ::std::vector<::facebook::fboss::cfg::Interface>, + ::std::map<::std::int32_t, ::std::vector<::std::int32_t>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::Interface>>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::list<::apache::thrift::type_class::integral>>, + ::apache::thrift::type::map<::apache::thrift::type::i32_t, ::apache::thrift::type::list<::apache::thrift::type::i32_t>>, Parent>; - using Child = ChildThriftPath<::facebook::fboss::cfg::Interface, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Child = ChildThriftPath<::std::vector<::std::int32_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; using Self::Self; CONTAINER_CHILD_GETTERS(::std::int32_t); }; template -class ChildThriftPath<::std::vector<::facebook::fboss::state::RxSak>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::map<::facebook::fboss::ClientID, ::facebook::fboss::state::RouteNextHopEntry>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::vector<::facebook::fboss::state::RxSak>, + ::std::map<::facebook::fboss::ClientID, ::facebook::fboss::state::RouteNextHopEntry>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::state::RxSak>>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::enumeration, ::apache::thrift::type_class::structure>, + ::apache::thrift::type::map<::apache::thrift::type::enum_t<::facebook::fboss::ClientID>, ::apache::thrift::type::struct_t<::facebook::fboss::state::RouteNextHopEntry>>, Parent> { public: using Self = Path< - ::std::vector<::facebook::fboss::state::RxSak>, + ::std::map<::facebook::fboss::ClientID, ::facebook::fboss::state::RouteNextHopEntry>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::state::RxSak>>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::enumeration, ::apache::thrift::type_class::structure>, + ::apache::thrift::type::map<::apache::thrift::type::enum_t<::facebook::fboss::ClientID>, ::apache::thrift::type::struct_t<::facebook::fboss::state::RouteNextHopEntry>>, Parent>; - using Child = ChildThriftPath<::facebook::fboss::state::RxSak, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Child = ChildThriftPath<::facebook::fboss::state::RouteNextHopEntry, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; using Self::Self; - CONTAINER_CHILD_GETTERS(::std::int32_t); + CONTAINER_CHILD_GETTERS(::facebook::fboss::ClientID); }; template -class ChildThriftPath<::std::vector<::facebook::fboss::cfg::PortNeighbor>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::map<::std::int64_t, ::facebook::fboss::cfg::SwitchInfo>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::vector<::facebook::fboss::cfg::PortNeighbor>, + ::std::map<::std::int64_t, ::facebook::fboss::cfg::SwitchInfo>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>, + ::apache::thrift::type::map<::apache::thrift::type::i64_t, ::apache::thrift::type::struct_t<::facebook::fboss::cfg::SwitchInfo>>, + Parent> { + public: + using Self = Path< + ::std::map<::std::int64_t, ::facebook::fboss::cfg::SwitchInfo>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>, + ::apache::thrift::type::map<::apache::thrift::type::i64_t, ::apache::thrift::type::struct_t<::facebook::fboss::cfg::SwitchInfo>>, + Parent>; + using Child = ChildThriftPath<::facebook::fboss::cfg::SwitchInfo, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Self::Self; + + CONTAINER_CHILD_GETTERS(::std::int64_t); +}; + +template +class ChildThriftPath<::std::map<::std::int16_t, ::facebook::fboss::cfg::ChipConfig>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : + public Path< + ::std::map<::std::int16_t, ::facebook::fboss::cfg::ChipConfig>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::variant>, + ::apache::thrift::type::map<::apache::thrift::type::i16_t, ::apache::thrift::type::union_t<::facebook::fboss::cfg::ChipConfig>>, + Parent> { + public: + using Self = Path< + ::std::map<::std::int16_t, ::facebook::fboss::cfg::ChipConfig>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::variant>, + ::apache::thrift::type::map<::apache::thrift::type::i16_t, ::apache::thrift::type::union_t<::facebook::fboss::cfg::ChipConfig>>, + Parent>; + using Child = ChildThriftPath<::facebook::fboss::cfg::ChipConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Self::Self; + + CONTAINER_CHILD_GETTERS(::std::int16_t); +}; + +template +class ChildThriftPath<::std::vector<::facebook::fboss::cfg::AclTable>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : + public Path< + ::std::vector<::facebook::fboss::cfg::AclTable>, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::PortNeighbor>>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::AclTable>>, Parent> { public: using Self = Path< - ::std::vector<::facebook::fboss::cfg::PortNeighbor>, + ::std::vector<::facebook::fboss::cfg::AclTable>, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::PortNeighbor>>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::AclTable>>, Parent>; - using Child = ChildThriftPath<::facebook::fboss::cfg::PortNeighbor, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Child = ChildThriftPath<::facebook::fboss::cfg::AclTable, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; using Self::Self; CONTAINER_CHILD_GETTERS(::std::int32_t); }; - template -class ChildThriftPath<::facebook::fboss::cfg::SwitchSettings, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::map<::std::int32_t, ::std::string>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::cfg::SwitchSettings, + ::std::map<::std::int32_t, ::std::string>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::SwitchSettings>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::string>, + ::apache::thrift::type::map<::apache::thrift::type::i32_t, ::apache::thrift::type::string_t>, Parent> { public: using Self = Path< - ::facebook::fboss::cfg::SwitchSettings, + ::std::map<::std::int32_t, ::std::string>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::SwitchSettings>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::string>, + ::apache::thrift::type::map<::apache::thrift::type::i32_t, ::apache::thrift::type::string_t>, Parent>; - using strings = ::facebook::fboss::cfg::switch_config_tags::strings; - template - using Child = Path< - ChildType, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ChildTC, - ChildTag, - Self - >; - using Children = fatal::tuple>>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair>>, -std::pair>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair>>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair>, -std::pair>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>>; - using ChildrenById = fatal::tuple< std::pair, Child<::facebook::fboss::cfg::L2LearningMode, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::L2LearningMode>>>, - std::pair, Child>, - std::pair, Child>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::Neighbor>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::MacAndVlan>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, Child<::facebook::fboss::cfg::SwitchType, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::SwitchType>>>, - std::pair, Child<::std::int64_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i64_t>>, - std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::ExactMatchTableConfig>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::map<::std::int64_t, ::facebook::fboss::cfg::SwitchType>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, Child<::facebook::fboss::cfg::SwitchDrainState, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::SwitchDrainState>>>, - std::pair, ChildThriftPath<::std::map<::std::int64_t, ::facebook::fboss::cfg::SwitchInfo>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, ChildThriftPath<::std::vector<::std::string>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::vector<::std::string>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, Child>, - std::pair, Child<::std::int8_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::byte_t>>, - std::pair, Child<::std::int8_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::byte_t>>, - std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>>; - template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>>::template type_of; - - template - using TypeFor = typename Children::template type_of; + using Child = Path<::std::string, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t, Self>; using Self::Self; - - STRUCT_CHILD_GETTERS(l2LearningMode, 1); - STRUCT_CHILD_GETTERS(qcmEnable, 2); - STRUCT_CHILD_GETTERS(ptpTcEnable, 3); - STRUCT_CHILD_GETTERS(l2AgeTimerSeconds, 4); - STRUCT_CHILD_GETTERS(maxRouteCounterIDs, 5); - STRUCT_CHILD_GETTERS(blockNeighbors, 6); - STRUCT_CHILD_GETTERS(macAddrsToBlock, 7); - STRUCT_CHILD_GETTERS(switchType, 8); - STRUCT_CHILD_GETTERS(switchId, 9); - STRUCT_CHILD_GETTERS(exactMatchTableConfigs, 10); - STRUCT_CHILD_GETTERS(switchIdToSwitchType_DEPRECATED, 11); - STRUCT_CHILD_GETTERS(switchDrainState, 12); - STRUCT_CHILD_GETTERS(switchIdToSwitchInfo, 13); - STRUCT_CHILD_GETTERS(minLinksToRemainInVOQDomain, 14); - STRUCT_CHILD_GETTERS(minLinksToJoinVOQDomain, 15); - STRUCT_CHILD_GETTERS(vendorMacOuis, 16); - STRUCT_CHILD_GETTERS(metaMacOuis, 17); - STRUCT_CHILD_GETTERS(needL2EntryForNeighbor, 18); - STRUCT_CHILD_GETTERS(sramGlobalFreePercentXoffThreshold, 19); - STRUCT_CHILD_GETTERS(sramGlobalFreePercentXonThreshold, 20); - STRUCT_CHILD_GETTERS(linkFlowControlCreditThreshold, 21); - STRUCT_CHILD_GETTERS(voqDramBoundThreshold, 22); - - template - auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return l2LearningMode(); } - else if constexpr (__id == 2) { return qcmEnable(); } - else if constexpr (__id == 3) { return ptpTcEnable(); } - else if constexpr (__id == 4) { return l2AgeTimerSeconds(); } - else if constexpr (__id == 5) { return maxRouteCounterIDs(); } - else if constexpr (__id == 6) { return blockNeighbors(); } - else if constexpr (__id == 7) { return macAddrsToBlock(); } - else if constexpr (__id == 8) { return switchType(); } - else if constexpr (__id == 9) { return switchId(); } - else if constexpr (__id == 10) { return exactMatchTableConfigs(); } - else if constexpr (__id == 11) { return switchIdToSwitchType_DEPRECATED(); } - else if constexpr (__id == 12) { return switchDrainState(); } - else if constexpr (__id == 13) { return switchIdToSwitchInfo(); } - else if constexpr (__id == 14) { return minLinksToRemainInVOQDomain(); } - else if constexpr (__id == 15) { return minLinksToJoinVOQDomain(); } - else if constexpr (__id == 16) { return vendorMacOuis(); } - else if constexpr (__id == 17) { return metaMacOuis(); } - else if constexpr (__id == 18) { return needL2EntryForNeighbor(); } - else if constexpr (__id == 19) { return sramGlobalFreePercentXoffThreshold(); } - else if constexpr (__id == 20) { return sramGlobalFreePercentXonThreshold(); } - else if constexpr (__id == 21) { return linkFlowControlCreditThreshold(); } - else if constexpr (__id == 22) { return voqDramBoundThreshold(); } - } - template - auto operator()(const fatal::sequence&) { - return operator()(NameToId>()); - } + CONTAINER_CHILD_GETTERS(::std::int32_t); }; @@ -13382,21 +13001,21 @@ class ChildThriftPath<::std::map<::std::string, ::facebook::fboss::cfg::UdfGroup template -class ChildThriftPath<::facebook::fboss::IpPrefix, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::cfg::FlowletSwitchingConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::IpPrefix, + ::facebook::fboss::cfg::FlowletSwitchingConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::IpPrefix>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::FlowletSwitchingConfig>, Parent> { public: using Self = Path< - ::facebook::fboss::IpPrefix, + ::facebook::fboss::cfg::FlowletSwitchingConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::IpPrefix>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::FlowletSwitchingConfig>, Parent>; - using strings = ::facebook::fboss::ctrl_tags::strings; + using strings = ::facebook::fboss::cfg::switch_config_tags::strings; template using Child = Path< ChildType, @@ -13405,113 +13024,121 @@ class ChildThriftPath<::facebook::fboss::IpPrefix, ::facebook::fboss::fsdb::Fsdb ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>>; - using ChildrenById = fatal::tuple< std::pair, ChildThriftPath<::facebook::network::thrift::BinaryAddress, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>>; - template - using NameToId = fatal::tuple>, -std::pair>>::template type_of; - - template - using TypeFor = typename Children::template type_of; - using Self::Self; - - STRUCT_CHILD_GETTERS(ip, 1); - STRUCT_CHILD_GETTERS(prefixLength, 2); - - template - auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return ip(); } - else if constexpr (__id == 2) { return prefixLength(); } - } - - template - auto operator()(const fatal::sequence&) { - return operator()(NameToId>()); - } -}; + using Children = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>>>; + using ChildrenById = fatal::tuple< std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, + std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, + std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, + std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, + std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, + std::pair, Child<::facebook::fboss::cfg::SwitchingMode, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::SwitchingMode>>>>; + template + using NameToId = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>>::template type_of; -template -class ChildThriftPath<::std::vector<::facebook::fboss::cfg::LoadBalancer>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : - public Path< - ::std::vector<::facebook::fboss::cfg::LoadBalancer>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::LoadBalancer>>, - Parent> { - public: - using Self = Path< - ::std::vector<::facebook::fboss::cfg::LoadBalancer>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::LoadBalancer>>, - Parent>; - using Child = ChildThriftPath<::facebook::fboss::cfg::LoadBalancer, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + template + using TypeFor = typename Children::template type_of; using Self::Self; + + STRUCT_CHILD_GETTERS(inactivityIntervalUsecs, 1); + STRUCT_CHILD_GETTERS(flowletTableSize, 2); + STRUCT_CHILD_GETTERS(dynamicEgressLoadExponent, 3); + STRUCT_CHILD_GETTERS(dynamicQueueExponent, 4); + STRUCT_CHILD_GETTERS(dynamicQueueMinThresholdBytes, 5); + STRUCT_CHILD_GETTERS(dynamicQueueMaxThresholdBytes, 6); + STRUCT_CHILD_GETTERS(dynamicSampleRate, 7); + STRUCT_CHILD_GETTERS(dynamicEgressMinThresholdBytes, 8); + STRUCT_CHILD_GETTERS(dynamicEgressMaxThresholdBytes, 9); + STRUCT_CHILD_GETTERS(dynamicPhysicalQueueExponent, 10); + STRUCT_CHILD_GETTERS(maxLinks, 11); + STRUCT_CHILD_GETTERS(switchingMode, 12); - CONTAINER_CHILD_GETTERS(::std::int32_t); + template + auto operator()(const std::integral_constant&) { + if constexpr (__id == 1) { return inactivityIntervalUsecs(); } + else if constexpr (__id == 2) { return flowletTableSize(); } + else if constexpr (__id == 3) { return dynamicEgressLoadExponent(); } + else if constexpr (__id == 4) { return dynamicQueueExponent(); } + else if constexpr (__id == 5) { return dynamicQueueMinThresholdBytes(); } + else if constexpr (__id == 6) { return dynamicQueueMaxThresholdBytes(); } + else if constexpr (__id == 7) { return dynamicSampleRate(); } + else if constexpr (__id == 8) { return dynamicEgressMinThresholdBytes(); } + else if constexpr (__id == 9) { return dynamicEgressMaxThresholdBytes(); } + else if constexpr (__id == 10) { return dynamicPhysicalQueueExponent(); } + else if constexpr (__id == 11) { return maxLinks(); } + else if constexpr (__id == 12) { return switchingMode(); } + } + + template + auto operator()(const fatal::sequence&) { + return operator()(NameToId>()); + } }; template -class ChildThriftPath<::std::vector<::facebook::fboss::FirmwarePair>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::vector<::facebook::fboss::cfg::TransceiverConfigOverride>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::vector<::facebook::fboss::FirmwarePair>, + ::std::vector<::facebook::fboss::cfg::TransceiverConfigOverride>, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::FirmwarePair>>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::TransceiverConfigOverride>>, Parent> { public: using Self = Path< - ::std::vector<::facebook::fboss::FirmwarePair>, + ::std::vector<::facebook::fboss::cfg::TransceiverConfigOverride>, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::FirmwarePair>>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::TransceiverConfigOverride>>, Parent>; - using Child = ChildThriftPath<::facebook::fboss::FirmwarePair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Child = ChildThriftPath<::facebook::fboss::cfg::TransceiverConfigOverride, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; using Self::Self; CONTAINER_CHILD_GETTERS(::std::int32_t); }; -template -class ChildThriftPath<::std::set<::facebook::fboss::cfg::IPv4Field>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : - public Path< - ::std::set<::facebook::fboss::cfg::IPv4Field>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::set<::apache::thrift::type_class::enumeration>, - ::apache::thrift::type::set<::apache::thrift::type::enum_t<::facebook::fboss::cfg::IPv4Field>>, - Parent> { - public: - using Self = Path< - ::std::set<::facebook::fboss::cfg::IPv4Field>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::set<::apache::thrift::type_class::enumeration>, - ::apache::thrift::type::set<::apache::thrift::type::enum_t<::facebook::fboss::cfg::IPv4Field>>, - Parent>; - using Child = Path<::facebook::fboss::cfg::IPv4Field, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::IPv4Field>, Self>; - using Self::Self; - - CONTAINER_CHILD_GETTERS(::facebook::fboss::cfg::IPv4Field); -}; - template -class ChildThriftPath<::facebook::fboss::state::Label, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::cfg::Ttl, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::state::Label, + ::facebook::fboss::cfg::Ttl, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::state::Label>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::Ttl>, Parent> { public: using Self = Path< - ::facebook::fboss::state::Label, + ::facebook::fboss::cfg::Ttl, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::state::Label>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::Ttl>, Parent>; - using strings = ::facebook::fboss::state::switch_state_tags::strings; + using strings = ::facebook::fboss::cfg::switch_config_tags::strings; template using Child = Path< ChildType, @@ -13520,20 +13147,25 @@ class ChildThriftPath<::facebook::fboss::state::Label, ::facebook::fboss::fsdb:: ChildTag, Self >; - using Children = fatal::tuple>>; - using ChildrenById = fatal::tuple< std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>>; + using Children = fatal::tuple>, +std::pair>>; + using ChildrenById = fatal::tuple< std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, + std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>>; template - using NameToId = fatal::tuple>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; STRUCT_CHILD_GETTERS(value, 1); + STRUCT_CHILD_GETTERS(mask, 2); template auto operator()(const std::integral_constant&) { if constexpr (__id == 1) { return value(); } + else if constexpr (__id == 2) { return mask(); } } template @@ -13542,70 +13174,65 @@ class ChildThriftPath<::facebook::fboss::state::Label, ::facebook::fboss::fsdb:: } }; - template -class ChildThriftPath<::facebook::fboss::cfg::CmisOverrides, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::string, ::facebook::fboss::state::IpTunnelFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::cfg::CmisOverrides, + ::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::string, ::facebook::fboss::state::IpTunnelFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::CmisOverrides>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::IpTunnelFields>>>, Parent> { public: using Self = Path< - ::facebook::fboss::cfg::CmisOverrides, + ::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::string, ::facebook::fboss::state::IpTunnelFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::CmisOverrides>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::IpTunnelFields>>>, Parent>; - using strings = ::facebook::fboss::cfg::qsfp_service_config_tags::strings; - template - using Child = Path< - ChildType, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ChildTC, - ChildTag, - Self - >; - using Children = fatal::tuple>>; - using ChildrenById = fatal::tuple< std::pair, ChildThriftPath<::facebook::fboss::RxEqualizerSettings, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; - template - using NameToId = fatal::tuple>>::template type_of; - - template - using TypeFor = typename Children::template type_of; + using Child = ChildThriftPath<::std::map<::std::string, ::facebook::fboss::state::IpTunnelFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; using Self::Self; - - STRUCT_CHILD_GETTERS(rxEqualizerSettings, 1); - template - auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return rxEqualizerSettings(); } - } + CONTAINER_CHILD_GETTERS(::facebook::fboss::state::SwitchIdList); +}; - template - auto operator()(const fatal::sequence&) { - return operator()(NameToId>()); - } +template +class ChildThriftPath<::std::map<::std::int16_t, ::facebook::fboss::phy::LaneState>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : + public Path< + ::std::map<::std::int16_t, ::facebook::fboss::phy::LaneState>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>, + ::apache::thrift::type::map<::apache::thrift::type::i16_t, ::apache::thrift::type::struct_t<::facebook::fboss::phy::LaneState>>, + Parent> { + public: + using Self = Path< + ::std::map<::std::int16_t, ::facebook::fboss::phy::LaneState>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>, + ::apache::thrift::type::map<::apache::thrift::type::i16_t, ::apache::thrift::type::struct_t<::facebook::fboss::phy::LaneState>>, + Parent>; + using Child = ChildThriftPath<::facebook::fboss::phy::LaneState, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Self::Self; + + CONTAINER_CHILD_GETTERS(::std::int16_t); }; template -class ChildThriftPath<::facebook::fboss::cfg::GreTunnel, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::phy::DataPlanePhyChip, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::cfg::GreTunnel, + ::facebook::fboss::phy::DataPlanePhyChip, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::GreTunnel>, + ::apache::thrift::type::struct_t<::facebook::fboss::phy::DataPlanePhyChip>, Parent> { public: using Self = Path< - ::facebook::fboss::cfg::GreTunnel, + ::facebook::fboss::phy::DataPlanePhyChip, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::GreTunnel>, + ::apache::thrift::type::struct_t<::facebook::fboss::phy::DataPlanePhyChip>, Parent>; - using strings = ::facebook::fboss::cfg::switch_config_tags::strings; + using strings = ::facebook::fboss::phy::phy_tags::strings; template using Child = Path< ChildType, @@ -13614,25 +13241,30 @@ class ChildThriftPath<::facebook::fboss::cfg::GreTunnel, ::facebook::fboss::fsdb ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>>; + using Children = fatal::tuple>, +std::pair>>, +std::pair>>; using ChildrenById = fatal::tuple< std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, ChildThriftPath<::facebook::fboss::cfg::Ttl, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + std::pair, Child<::facebook::fboss::phy::DataPlanePhyChipType, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::phy::DataPlanePhyChipType>>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>>; template - using NameToId = fatal::tuple>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(ip, 1); - STRUCT_CHILD_GETTERS(ttl, 2); + STRUCT_CHILD_GETTERS(name, 1); + STRUCT_CHILD_GETTERS(type, 2); + STRUCT_CHILD_GETTERS(physicalID, 3); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return ip(); } - else if constexpr (__id == 2) { return ttl(); } + if constexpr (__id == 1) { return name(); } + else if constexpr (__id == 2) { return type(); } + else if constexpr (__id == 3) { return physicalID(); } } template @@ -13643,21 +13275,21 @@ std::pair>>: template -class ChildThriftPath<::facebook::fboss::phy::LinkFaultStatus, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::state::IpTunnelFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::phy::LinkFaultStatus, + ::facebook::fboss::state::IpTunnelFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::phy::LinkFaultStatus>, + ::apache::thrift::type::struct_t<::facebook::fboss::state::IpTunnelFields>, Parent> { public: using Self = Path< - ::facebook::fboss::phy::LinkFaultStatus, + ::facebook::fboss::state::IpTunnelFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::phy::LinkFaultStatus>, + ::apache::thrift::type::struct_t<::facebook::fboss::state::IpTunnelFields>, Parent>; - using strings = ::facebook::fboss::phy::phy_tags::strings; + using strings = ::facebook::fboss::state::switch_state_tags::strings; template using Child = Path< ChildType, @@ -13666,35 +13298,75 @@ class ChildThriftPath<::facebook::fboss::phy::LinkFaultStatus, ::facebook::fboss ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>>; - using ChildrenById = fatal::tuple< std::pair, Child>, - std::pair, Child>, - std::pair, Child>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>>; + using Children = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>>; + using ChildrenById = fatal::tuple< std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>>; template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(localFault, 1); - STRUCT_CHILD_GETTERS(remoteFault, 2); - STRUCT_CHILD_GETTERS(highCrcErrorRateLive, 3); - STRUCT_CHILD_GETTERS(highCrcErrorRateChangedCount, 4); + STRUCT_CHILD_GETTERS(ipTunnelId, 1); + STRUCT_CHILD_GETTERS(underlayIntfId, 2); + STRUCT_CHILD_GETTERS(mode, 3); + STRUCT_CHILD_GETTERS(dstIp, 4); + STRUCT_CHILD_GETTERS(type, 5); + STRUCT_CHILD_GETTERS(tunnelTermType, 6); + STRUCT_CHILD_GETTERS(ttlMode, 7); + STRUCT_CHILD_GETTERS(dscpMode, 8); + STRUCT_CHILD_GETTERS(ecnMode, 9); + STRUCT_CHILD_GETTERS(srcIp, 10); + STRUCT_CHILD_GETTERS(dstIpMask, 11); + STRUCT_CHILD_GETTERS(srcIpMask, 12); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return localFault(); } - else if constexpr (__id == 2) { return remoteFault(); } - else if constexpr (__id == 3) { return highCrcErrorRateLive(); } - else if constexpr (__id == 4) { return highCrcErrorRateChangedCount(); } + if constexpr (__id == 1) { return ipTunnelId(); } + else if constexpr (__id == 2) { return underlayIntfId(); } + else if constexpr (__id == 3) { return mode(); } + else if constexpr (__id == 4) { return dstIp(); } + else if constexpr (__id == 5) { return type(); } + else if constexpr (__id == 6) { return tunnelTermType(); } + else if constexpr (__id == 7) { return ttlMode(); } + else if constexpr (__id == 8) { return dscpMode(); } + else if constexpr (__id == 9) { return ecnMode(); } + else if constexpr (__id == 10) { return srcIp(); } + else if constexpr (__id == 11) { return dstIpMask(); } + else if constexpr (__id == 12) { return srcIpMask(); } } template @@ -13705,21 +13377,21 @@ std::pair -class ChildThriftPath<::facebook::fboss::cfg::LinearQueueCongestionDetection, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::TransceiverAttributes, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::cfg::LinearQueueCongestionDetection, + ::facebook::fboss::TransceiverAttributes, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::LinearQueueCongestionDetection>, + ::apache::thrift::type::struct_t<::facebook::fboss::TransceiverAttributes>, Parent> { public: using Self = Path< - ::facebook::fboss::cfg::LinearQueueCongestionDetection, + ::facebook::fboss::TransceiverAttributes, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::LinearQueueCongestionDetection>, + ::apache::thrift::type::struct_t<::facebook::fboss::TransceiverAttributes>, Parent>; - using strings = ::facebook::fboss::cfg::switch_config_tags::strings; + using strings = ::facebook::fboss::transceiver_validation_tags::strings; template using Child = Path< ChildType, @@ -13728,30 +13400,30 @@ class ChildThriftPath<::facebook::fboss::cfg::LinearQueueCongestionDetection, :: ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>, -std::pair>>; - using ChildrenById = fatal::tuple< std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>>; + using Children = fatal::tuple>>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + using ChildrenById = fatal::tuple< std::pair, Child<::facebook::fboss::MediaInterfaceCode, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::MediaInterfaceCode>>>, + std::pair, ChildThriftPath<::std::vector<::facebook::fboss::FirmwarePair>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::PortProfileID>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(minimumLength, 1); - STRUCT_CHILD_GETTERS(maximumLength, 2); - STRUCT_CHILD_GETTERS(probability, 3); + STRUCT_CHILD_GETTERS(mediaInterfaceCode, 1); + STRUCT_CHILD_GETTERS(supportedFirmwareVersions, 2); + STRUCT_CHILD_GETTERS(supportedPortProfiles, 3); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return minimumLength(); } - else if constexpr (__id == 2) { return maximumLength(); } - else if constexpr (__id == 3) { return probability(); } + if constexpr (__id == 1) { return mediaInterfaceCode(); } + else if constexpr (__id == 2) { return supportedFirmwareVersions(); } + else if constexpr (__id == 3) { return supportedPortProfiles(); } } template @@ -13762,19 +13434,19 @@ std::pair -class ChildThriftPath<::facebook::fboss::cfg::MirrorTunnel, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::cfg::MatchToAction, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::cfg::MirrorTunnel, + ::facebook::fboss::cfg::MatchToAction, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::MirrorTunnel>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::MatchToAction>, Parent> { public: using Self = Path< - ::facebook::fboss::cfg::MirrorTunnel, + ::facebook::fboss::cfg::MatchToAction, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::MirrorTunnel>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::MatchToAction>, Parent>; using strings = ::facebook::fboss::cfg::switch_config_tags::strings; template @@ -13785,30 +13457,25 @@ class ChildThriftPath<::facebook::fboss::cfg::MirrorTunnel, ::facebook::fboss::f ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>, -std::pair>>; - using ChildrenById = fatal::tuple< std::pair, ChildThriftPath<::facebook::fboss::cfg::GreTunnel, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::facebook::fboss::cfg::SflowTunnel, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>>; + using Children = fatal::tuple>, +std::pair>>; + using ChildrenById = fatal::tuple< std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, ChildThriftPath<::facebook::fboss::cfg::MatchAction, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(greTunnel, 1); - STRUCT_CHILD_GETTERS(sflowTunnel, 2); - STRUCT_CHILD_GETTERS(srcIp, 3); + STRUCT_CHILD_GETTERS(matcher, 1); + STRUCT_CHILD_GETTERS(action, 2); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return greTunnel(); } - else if constexpr (__id == 2) { return sflowTunnel(); } - else if constexpr (__id == 3) { return srcIp(); } + if constexpr (__id == 1) { return matcher(); } + else if constexpr (__id == 2) { return action(); } } template @@ -13819,19 +13486,19 @@ std::pair> template -class ChildThriftPath<::facebook::fboss::cfg::Mirror, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::cfg::PortQueue, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::cfg::Mirror, + ::facebook::fboss::cfg::PortQueue, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::Mirror>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::PortQueue>, Parent> { public: using Self = Path< - ::facebook::fboss::cfg::Mirror, + ::facebook::fboss::cfg::PortQueue, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::Mirror>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::PortQueue>, Parent>; using strings = ::facebook::fboss::cfg::switch_config_tags::strings; template @@ -13842,65 +13509,178 @@ class ChildThriftPath<::facebook::fboss::cfg::Mirror, ::facebook::fboss::fsdb::F ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>, -std::pair>>; - using ChildrenById = fatal::tuple< std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, ChildThriftPath<::facebook::fboss::cfg::MirrorDestination, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, Child<::std::int8_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::byte_t>>, - std::pair, Child>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>>; + using Children = fatal::tuple>, +std::pair>>, +std::pair>, +std::pair>, +std::pair>>, +std::pair>>, +std::pair>, +std::pair>, +std::pair>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>>; + using ChildrenById = fatal::tuple< std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, + std::pair, Child<::facebook::fboss::cfg::StreamType, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::StreamType>>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::facebook::fboss::cfg::MMUScalingFactor, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::MMUScalingFactor>>>, + std::pair, Child<::facebook::fboss::cfg::QueueScheduling, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::QueueScheduling>>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::ActiveQueueManagement>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::facebook::fboss::cfg::PortQueueRate, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>>; template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(name, 1); - STRUCT_CHILD_GETTERS(destination, 2); - STRUCT_CHILD_GETTERS(dscp, 3); - STRUCT_CHILD_GETTERS(truncate, 4); - STRUCT_CHILD_GETTERS(samplingRate, 5); + STRUCT_CHILD_GETTERS(id, 1); + STRUCT_CHILD_GETTERS(streamType, 2); + STRUCT_CHILD_GETTERS(weight, 3); + STRUCT_CHILD_GETTERS(reservedBytes, 4); + STRUCT_CHILD_GETTERS(scalingFactor, 5); + STRUCT_CHILD_GETTERS(scheduling, 6); + STRUCT_CHILD_GETTERS(name, 7); + STRUCT_CHILD_GETTERS(packetsPerSec_DEPRECATED, 9); + STRUCT_CHILD_GETTERS(sharedBytes, 10); + STRUCT_CHILD_GETTERS(aqms, 11); + STRUCT_CHILD_GETTERS(portQueueRate, 12); + STRUCT_CHILD_GETTERS(bandwidthBurstMinKbits, 13); + STRUCT_CHILD_GETTERS(bandwidthBurstMaxKbits, 14); + STRUCT_CHILD_GETTERS(maxDynamicSharedBytes, 15); + STRUCT_CHILD_GETTERS(bufferPoolName, 16); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return name(); } - else if constexpr (__id == 2) { return destination(); } - else if constexpr (__id == 3) { return dscp(); } - else if constexpr (__id == 4) { return truncate(); } - else if constexpr (__id == 5) { return samplingRate(); } - } - - template + if constexpr (__id == 1) { return id(); } + else if constexpr (__id == 2) { return streamType(); } + else if constexpr (__id == 3) { return weight(); } + else if constexpr (__id == 4) { return reservedBytes(); } + else if constexpr (__id == 5) { return scalingFactor(); } + else if constexpr (__id == 6) { return scheduling(); } + else if constexpr (__id == 7) { return name(); } + else if constexpr (__id == 9) { return packetsPerSec_DEPRECATED(); } + else if constexpr (__id == 10) { return sharedBytes(); } + else if constexpr (__id == 11) { return aqms(); } + else if constexpr (__id == 12) { return portQueueRate(); } + else if constexpr (__id == 13) { return bandwidthBurstMinKbits(); } + else if constexpr (__id == 14) { return bandwidthBurstMaxKbits(); } + else if constexpr (__id == 15) { return maxDynamicSharedBytes(); } + else if constexpr (__id == 16) { return bufferPoolName(); } + } + + template auto operator()(const fatal::sequence&) { return operator()(NameToId>()); } }; +template +class ChildThriftPath<::std::map<::std::int32_t, ::facebook::fboss::state::LabelForwardingEntryFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : + public Path< + ::std::map<::std::int32_t, ::facebook::fboss::state::LabelForwardingEntryFields>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>, + ::apache::thrift::type::map<::apache::thrift::type::i32_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::LabelForwardingEntryFields>>, + Parent> { + public: + using Self = Path< + ::std::map<::std::int32_t, ::facebook::fboss::state::LabelForwardingEntryFields>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>, + ::apache::thrift::type::map<::apache::thrift::type::i32_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::LabelForwardingEntryFields>>, + Parent>; + using Child = ChildThriftPath<::facebook::fboss::state::LabelForwardingEntryFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Self::Self; + + CONTAINER_CHILD_GETTERS(::std::int32_t); +}; + +template +class ChildThriftPath<::std::vector<::facebook::fboss::cfg::AggregatePort>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : + public Path< + ::std::vector<::facebook::fboss::cfg::AggregatePort>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::AggregatePort>>, + Parent> { + public: + using Self = Path< + ::std::vector<::facebook::fboss::cfg::AggregatePort>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::AggregatePort>>, + Parent>; + using Child = ChildThriftPath<::facebook::fboss::cfg::AggregatePort, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Self::Self; + + CONTAINER_CHILD_GETTERS(::std::int32_t); +}; template -class ChildThriftPath<::facebook::fboss::MediaLaneSettings, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::vector<::facebook::fboss::cfg::SflowCollector>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::MediaLaneSettings, + ::std::vector<::facebook::fboss::cfg::SflowCollector>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::SflowCollector>>, + Parent> { + public: + using Self = Path< + ::std::vector<::facebook::fboss::cfg::SflowCollector>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::SflowCollector>>, + Parent>; + using Child = ChildThriftPath<::facebook::fboss::cfg::SflowCollector, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Self::Self; + + CONTAINER_CHILD_GETTERS(::std::int32_t); +}; + + +template +class ChildThriftPath<::facebook::fboss::cfg::Range64, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : + public Path< + ::facebook::fboss::cfg::Range64, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::MediaLaneSettings>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::Range64>, Parent> { public: using Self = Path< - ::facebook::fboss::MediaLaneSettings, + ::facebook::fboss::cfg::Range64, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::MediaLaneSettings>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::Range64>, Parent>; - using strings = ::facebook::fboss::transceiver_tags::strings; + using strings = ::facebook::fboss::cfg::switch_config_tags::strings; template using Child = Path< ChildType, @@ -13909,40 +13689,25 @@ class ChildThriftPath<::facebook::fboss::MediaLaneSettings, ::facebook::fboss::f ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>, -std::pair>>; - using ChildrenById = fatal::tuple< std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child>, - std::pair, Child>, - std::pair, Child>, - std::pair, Child>>; + using Children = fatal::tuple>, +std::pair>>; + using ChildrenById = fatal::tuple< std::pair, Child<::std::int64_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i64_t>>, + std::pair, Child<::std::int64_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i64_t>>>; template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(lane, 1); - STRUCT_CHILD_GETTERS(txDisable, 2); - STRUCT_CHILD_GETTERS(txSquelch, 3); - STRUCT_CHILD_GETTERS(txAdaptiveEqControl, 4); - STRUCT_CHILD_GETTERS(txSquelchForce, 5); + STRUCT_CHILD_GETTERS(minimum, 1); + STRUCT_CHILD_GETTERS(maximum, 2); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return lane(); } - else if constexpr (__id == 2) { return txDisable(); } - else if constexpr (__id == 3) { return txSquelch(); } - else if constexpr (__id == 4) { return txAdaptiveEqControl(); } - else if constexpr (__id == 5) { return txSquelchForce(); } + if constexpr (__id == 1) { return minimum(); } + else if constexpr (__id == 2) { return maximum(); } } template @@ -13953,19 +13718,19 @@ std::pair -class ChildThriftPath<::facebook::fboss::cfg::SystemPortRanges, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::cfg::CPUTrafficPolicyConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::cfg::SystemPortRanges, + ::facebook::fboss::cfg::CPUTrafficPolicyConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::SystemPortRanges>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::CPUTrafficPolicyConfig>, Parent> { public: using Self = Path< - ::facebook::fboss::cfg::SystemPortRanges, + ::facebook::fboss::cfg::CPUTrafficPolicyConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::SystemPortRanges>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::CPUTrafficPolicyConfig>, Parent>; using strings = ::facebook::fboss::cfg::switch_config_tags::strings; template @@ -13976,20 +13741,30 @@ class ChildThriftPath<::facebook::fboss::cfg::SystemPortRanges, ::facebook::fbos ChildTag, Self >; - using Children = fatal::tuple, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; - using ChildrenById = fatal::tuple< std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::Range64>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + using Children = fatal::tuple>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + using ChildrenById = fatal::tuple< std::pair, ChildThriftPath<::facebook::fboss::cfg::TrafficPolicyConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::map<::facebook::fboss::cfg::PacketRxReason, ::std::int16_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::PacketRxReasonToQueue>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; template - using NameToId = fatal::tuple>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(systemPortRanges, 1); + STRUCT_CHILD_GETTERS(trafficPolicy, 1); + STRUCT_CHILD_GETTERS(rxReasonToCPUQueue, 2); + STRUCT_CHILD_GETTERS(rxReasonToQueueOrderedList, 3); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return systemPortRanges(); } + if constexpr (__id == 1) { return trafficPolicy(); } + else if constexpr (__id == 2) { return rxReasonToCPUQueue(); } + else if constexpr (__id == 3) { return rxReasonToQueueOrderedList(); } } template @@ -13998,42 +13773,21 @@ class ChildThriftPath<::facebook::fboss::cfg::SystemPortRanges, ::facebook::fbos } }; -template -class ChildThriftPath<::std::vector<::facebook::fboss::cfg::CounterType>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : - public Path< - ::std::vector<::facebook::fboss::cfg::CounterType>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::enumeration>, - ::apache::thrift::type::list<::apache::thrift::type::enum_t<::facebook::fboss::cfg::CounterType>>, - Parent> { - public: - using Self = Path< - ::std::vector<::facebook::fboss::cfg::CounterType>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::enumeration>, - ::apache::thrift::type::list<::apache::thrift::type::enum_t<::facebook::fboss::cfg::CounterType>>, - Parent>; - using Child = Path<::facebook::fboss::cfg::CounterType, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::CounterType>, Self>; - using Self::Self; - - CONTAINER_CHILD_GETTERS(::std::int32_t); -}; - template -class ChildThriftPath<::facebook::fboss::cfg::ExactMatchTableConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::cfg::NdpConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::cfg::ExactMatchTableConfig, + ::facebook::fboss::cfg::NdpConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::ExactMatchTableConfig>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::NdpConfig>, Parent> { public: using Self = Path< - ::facebook::fboss::cfg::ExactMatchTableConfig, + ::facebook::fboss::cfg::NdpConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::ExactMatchTableConfig>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::NdpConfig>, Parent>; using strings = ::facebook::fboss::cfg::switch_config_tags::strings; template @@ -14044,25 +13798,55 @@ class ChildThriftPath<::facebook::fboss::cfg::ExactMatchTableConfig, ::facebook: ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>>; - using ChildrenById = fatal::tuple< std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>>; + using Children = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>>; + using ChildrenById = fatal::tuple< std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child>, + std::pair, Child>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>>; template - using NameToId = fatal::tuple>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(name, 1); - STRUCT_CHILD_GETTERS(dstPrefixLength, 2); + STRUCT_CHILD_GETTERS(routerAdvertisementSeconds, 1); + STRUCT_CHILD_GETTERS(curHopLimit, 2); + STRUCT_CHILD_GETTERS(routerLifetime, 3); + STRUCT_CHILD_GETTERS(prefixValidLifetimeSeconds, 4); + STRUCT_CHILD_GETTERS(prefixPreferredLifetimeSeconds, 5); + STRUCT_CHILD_GETTERS(routerAdvertisementManagedBit, 6); + STRUCT_CHILD_GETTERS(routerAdvertisementOtherBit, 7); + STRUCT_CHILD_GETTERS(routerAddress, 8); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return name(); } - else if constexpr (__id == 2) { return dstPrefixLength(); } + if constexpr (__id == 1) { return routerAdvertisementSeconds(); } + else if constexpr (__id == 2) { return curHopLimit(); } + else if constexpr (__id == 3) { return routerLifetime(); } + else if constexpr (__id == 4) { return prefixValidLifetimeSeconds(); } + else if constexpr (__id == 5) { return prefixPreferredLifetimeSeconds(); } + else if constexpr (__id == 6) { return routerAdvertisementManagedBit(); } + else if constexpr (__id == 7) { return routerAdvertisementOtherBit(); } + else if constexpr (__id == 8) { return routerAddress(); } } template @@ -14071,63 +13855,21 @@ std::pair -class ChildThriftPath<::std::map<::std::string, ::facebook::fboss::cfg::UdfPacketMatcher>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::cfg::QosPolicy, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::map<::std::string, ::facebook::fboss::cfg::UdfPacketMatcher>, + ::facebook::fboss::cfg::QosPolicy, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>, - ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::cfg::UdfPacketMatcher>>, + ::apache::thrift::type_class::structure, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::QosPolicy>, Parent> { public: using Self = Path< - ::std::map<::std::string, ::facebook::fboss::cfg::UdfPacketMatcher>, + ::facebook::fboss::cfg::QosPolicy, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>, - ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::cfg::UdfPacketMatcher>>, - Parent>; - using Child = ChildThriftPath<::facebook::fboss::cfg::UdfPacketMatcher, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; - using Self::Self; - - CONTAINER_CHILD_GETTERS(::std::string); -}; - -template -class ChildThriftPath<::std::vector<::facebook::fboss::NextHopThrift>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : - public Path< - ::std::vector<::facebook::fboss::NextHopThrift>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::NextHopThrift>>, - Parent> { - public: - using Self = Path< - ::std::vector<::facebook::fboss::NextHopThrift>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::NextHopThrift>>, - Parent>; - using Child = ChildThriftPath<::facebook::fboss::NextHopThrift, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; - using Self::Self; - - CONTAINER_CHILD_GETTERS(::std::int32_t); -}; - - -template -class ChildThriftPath<::facebook::fboss::cfg::PortQueueRate, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : - public Path< - ::facebook::fboss::cfg::PortQueueRate, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::variant, - ::apache::thrift::type::union_t<::facebook::fboss::cfg::PortQueueRate>, - Parent> { - public: - using Self = Path< - ::facebook::fboss::cfg::PortQueueRate, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::variant, - ::apache::thrift::type::union_t<::facebook::fboss::cfg::PortQueueRate>, + ::apache::thrift::type_class::structure, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::QosPolicy>, Parent>; using strings = ::facebook::fboss::cfg::switch_config_tags::strings; template @@ -14138,25 +13880,30 @@ class ChildThriftPath<::facebook::fboss::cfg::PortQueueRate, ::facebook::fboss:: ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>>; - using ChildrenById = fatal::tuple< std::pair, ChildThriftPath<::facebook::fboss::cfg::Range, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::facebook::fboss::cfg::Range, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + using Children = fatal::tuple>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair>>; + using ChildrenById = fatal::tuple< std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::QosRule>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::facebook::fboss::cfg::QosMap, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; template - using NameToId = fatal::tuple>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(pktsPerSec, 1); - STRUCT_CHILD_GETTERS(kbitsPerSec, 2); + STRUCT_CHILD_GETTERS(name, 1); + STRUCT_CHILD_GETTERS(rules, 2); + STRUCT_CHILD_GETTERS(qosMap, 3); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return pktsPerSec(); } - else if constexpr (__id == 2) { return kbitsPerSec(); } + if constexpr (__id == 1) { return name(); } + else if constexpr (__id == 2) { return rules(); } + else if constexpr (__id == 3) { return qosMap(); } } template @@ -14165,65 +13912,23 @@ std::pair -class ChildThriftPath<::std::vector<::facebook::fboss::cfg::DscpQosMap>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : - public Path< - ::std::vector<::facebook::fboss::cfg::DscpQosMap>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::DscpQosMap>>, - Parent> { - public: - using Self = Path< - ::std::vector<::facebook::fboss::cfg::DscpQosMap>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::DscpQosMap>>, - Parent>; - using Child = ChildThriftPath<::facebook::fboss::cfg::DscpQosMap, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; - using Self::Self; - - CONTAINER_CHILD_GETTERS(::std::int32_t); -}; - -template -class ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::int32_t, ::facebook::fboss::state::InterfaceFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : - public Path< - ::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::int32_t, ::facebook::fboss::state::InterfaceFields>>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>>, - ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::map<::apache::thrift::type::i32_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::InterfaceFields>>>, - Parent> { - public: - using Self = Path< - ::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::int32_t, ::facebook::fboss::state::InterfaceFields>>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>>, - ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::map<::apache::thrift::type::i32_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::InterfaceFields>>>, - Parent>; - using Child = ChildThriftPath<::std::map<::std::int32_t, ::facebook::fboss::state::InterfaceFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; - using Self::Self; - - CONTAINER_CHILD_GETTERS(::facebook::fboss::state::SwitchIdList); -}; - template -class ChildThriftPath<::facebook::fboss::phy::LaneMap, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::state::MirrorFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::phy::LaneMap, + ::facebook::fboss::state::MirrorFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::phy::LaneMap>, + ::apache::thrift::type::struct_t<::facebook::fboss::state::MirrorFields>, Parent> { public: using Self = Path< - ::facebook::fboss::phy::LaneMap, + ::facebook::fboss::state::MirrorFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::phy::LaneMap>, + ::apache::thrift::type::struct_t<::facebook::fboss::state::MirrorFields>, Parent>; - using strings = ::facebook::fboss::phy::phy_tags::strings; + using strings = ::facebook::fboss::state::switch_state_tags::strings; template using Child = Path< ChildType, @@ -14232,25 +13937,85 @@ class ChildThriftPath<::facebook::fboss::phy::LaneMap, ::facebook::fboss::fsdb:: ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>>; - using ChildrenById = fatal::tuple< std::pair, Child<::std::int8_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::byte_t>>, - std::pair, Child<::std::int8_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::byte_t>>>; + using Children = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>>; + using ChildrenById = fatal::tuple< std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, + std::pair, Child>, + std::pair, Child>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, ChildThriftPath<::facebook::network::thrift::BinaryAddress, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::facebook::network::thrift::BinaryAddress, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, + std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, + std::pair, ChildThriftPath<::facebook::fboss::state::MirrorTunnel, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, Child>, + std::pair, Child<::std::int64_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i64_t>>, + std::pair, ChildThriftPath<::facebook::fboss::cfg::PortDescriptor, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>>; template - using NameToId = fatal::tuple>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(rx, 1); - STRUCT_CHILD_GETTERS(tx, 2); + STRUCT_CHILD_GETTERS(name, 1); + STRUCT_CHILD_GETTERS(dscp, 3); + STRUCT_CHILD_GETTERS(truncate, 4); + STRUCT_CHILD_GETTERS(configHasEgressPort, 5); + STRUCT_CHILD_GETTERS(egressPort, 6); + STRUCT_CHILD_GETTERS(destinationIp, 7); + STRUCT_CHILD_GETTERS(srcIp, 8); + STRUCT_CHILD_GETTERS(udpSrcPort, 9); + STRUCT_CHILD_GETTERS(udpDstPort, 10); + STRUCT_CHILD_GETTERS(tunnel, 11); + STRUCT_CHILD_GETTERS(isResolved, 12); + STRUCT_CHILD_GETTERS(switchId, 13); + STRUCT_CHILD_GETTERS(egressPortDesc, 14); + STRUCT_CHILD_GETTERS(samplingRate, 15); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return rx(); } - else if constexpr (__id == 2) { return tx(); } + if constexpr (__id == 1) { return name(); } + else if constexpr (__id == 3) { return dscp(); } + else if constexpr (__id == 4) { return truncate(); } + else if constexpr (__id == 5) { return configHasEgressPort(); } + else if constexpr (__id == 6) { return egressPort(); } + else if constexpr (__id == 7) { return destinationIp(); } + else if constexpr (__id == 8) { return srcIp(); } + else if constexpr (__id == 9) { return udpSrcPort(); } + else if constexpr (__id == 10) { return udpDstPort(); } + else if constexpr (__id == 11) { return tunnel(); } + else if constexpr (__id == 12) { return isResolved(); } + else if constexpr (__id == 13) { return switchId(); } + else if constexpr (__id == 14) { return egressPortDesc(); } + else if constexpr (__id == 15) { return samplingRate(); } } template @@ -14261,19 +14026,19 @@ std::pair>>:: template -class ChildThriftPath<::facebook::fboss::cfg::DscpQosMap, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::cfg::PacketRxReasonToQueue, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::cfg::DscpQosMap, + ::facebook::fboss::cfg::PacketRxReasonToQueue, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::DscpQosMap>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::PacketRxReasonToQueue>, Parent> { public: using Self = Path< - ::facebook::fboss::cfg::DscpQosMap, + ::facebook::fboss::cfg::PacketRxReasonToQueue, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::DscpQosMap>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::PacketRxReasonToQueue>, Parent>; using strings = ::facebook::fboss::cfg::switch_config_tags::strings; template @@ -14284,30 +14049,25 @@ class ChildThriftPath<::facebook::fboss::cfg::DscpQosMap, ::facebook::fboss::fsd ChildTag, Self >; - using Children = fatal::tuple>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair>>; - using ChildrenById = fatal::tuple< std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, - std::pair, ChildThriftPath<::std::vector<::std::int8_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, Child<::std::int8_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::byte_t>>>; + using Children = fatal::tuple>>, +std::pair>>; + using ChildrenById = fatal::tuple< std::pair, Child<::facebook::fboss::cfg::PacketRxReason, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::PacketRxReason>>>, + std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>>; template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(internalTrafficClass, 1); - STRUCT_CHILD_GETTERS(fromDscpToTrafficClass, 2); - STRUCT_CHILD_GETTERS(fromTrafficClassToDscp, 3); + STRUCT_CHILD_GETTERS(rxReason, 1); + STRUCT_CHILD_GETTERS(queueId, 2); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return internalTrafficClass(); } - else if constexpr (__id == 2) { return fromDscpToTrafficClass(); } - else if constexpr (__id == 3) { return fromTrafficClassToDscp(); } + if constexpr (__id == 1) { return rxReason(); } + else if constexpr (__id == 2) { return queueId(); } } template @@ -14316,44 +14076,23 @@ std::pair -class ChildThriftPath<::std::vector<::facebook::fboss::cfg::ActiveQueueManagement>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::state::MatchAction, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::vector<::facebook::fboss::cfg::ActiveQueueManagement>, + ::facebook::fboss::state::MatchAction, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::ActiveQueueManagement>>, + ::apache::thrift::type_class::structure, + ::apache::thrift::type::struct_t<::facebook::fboss::state::MatchAction>, Parent> { public: using Self = Path< - ::std::vector<::facebook::fboss::cfg::ActiveQueueManagement>, + ::facebook::fboss::state::MatchAction, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::ActiveQueueManagement>>, + ::apache::thrift::type_class::structure, + ::apache::thrift::type::struct_t<::facebook::fboss::state::MatchAction>, Parent>; - using Child = ChildThriftPath<::facebook::fboss::cfg::ActiveQueueManagement, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; - using Self::Self; - - CONTAINER_CHILD_GETTERS(::std::int32_t); -}; - - -template -class ChildThriftPath<::facebook::fboss::cfg::AclTable, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : - public Path< - ::facebook::fboss::cfg::AclTable, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::AclTable>, - Parent> { - public: - using Self = Path< - ::facebook::fboss::cfg::AclTable, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::AclTable>, - Parent>; - using strings = ::facebook::fboss::cfg::switch_config_tags::strings; + using strings = ::facebook::fboss::state::switch_state_tags::strings; template using Child = Path< ChildType, @@ -14362,45 +14101,70 @@ class ChildThriftPath<::facebook::fboss::cfg::AclTable, ::facebook::fboss::fsdb: ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; - using ChildrenById = fatal::tuple< std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, - std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::AclEntry>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::AclTableActionType>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::AclTableQualifier>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::vector<::std::string>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + using Children = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>>>; + using ChildrenById = fatal::tuple< std::pair, ChildThriftPath<::facebook::fboss::state::SendToQueue, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::facebook::fboss::cfg::TrafficCounter, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::facebook::fboss::cfg::SetDscpMatchAction, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, Child<::facebook::fboss::cfg::ToCpuAction, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::ToCpuAction>>>, + std::pair, ChildThriftPath<::facebook::fboss::cfg::MacsecFlowAction, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::facebook::fboss::state::RedirectToNextHopAction, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::facebook::fboss::state::SetTc, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::facebook::fboss::cfg::UserDefinedTrapAction, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, Child<::facebook::fboss::cfg::FlowletAction, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::FlowletAction>>>>; template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(name, 1); - STRUCT_CHILD_GETTERS(priority, 2); - STRUCT_CHILD_GETTERS(aclEntries, 3); - STRUCT_CHILD_GETTERS(actionTypes, 4); - STRUCT_CHILD_GETTERS(qualifiers, 5); - STRUCT_CHILD_GETTERS(udfGroups, 6); + STRUCT_CHILD_GETTERS(sendToQueue, 1); + STRUCT_CHILD_GETTERS(trafficCounter, 2); + STRUCT_CHILD_GETTERS(setDscp, 3); + STRUCT_CHILD_GETTERS(ingressMirror, 4); + STRUCT_CHILD_GETTERS(egressMirror, 5); + STRUCT_CHILD_GETTERS(toCpuAction, 6); + STRUCT_CHILD_GETTERS(macsecFlow, 7); + STRUCT_CHILD_GETTERS(redirectToNextHop, 8); + STRUCT_CHILD_GETTERS(setTc, 9); + STRUCT_CHILD_GETTERS(userDefinedTrap, 10); + STRUCT_CHILD_GETTERS(flowletAction, 11); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return name(); } - else if constexpr (__id == 2) { return priority(); } - else if constexpr (__id == 3) { return aclEntries(); } - else if constexpr (__id == 4) { return actionTypes(); } - else if constexpr (__id == 5) { return qualifiers(); } - else if constexpr (__id == 6) { return udfGroups(); } + if constexpr (__id == 1) { return sendToQueue(); } + else if constexpr (__id == 2) { return trafficCounter(); } + else if constexpr (__id == 3) { return setDscp(); } + else if constexpr (__id == 4) { return ingressMirror(); } + else if constexpr (__id == 5) { return egressMirror(); } + else if constexpr (__id == 6) { return toCpuAction(); } + else if constexpr (__id == 7) { return macsecFlow(); } + else if constexpr (__id == 8) { return redirectToNextHop(); } + else if constexpr (__id == 9) { return setTc(); } + else if constexpr (__id == 10) { return userDefinedTrap(); } + else if constexpr (__id == 11) { return flowletAction(); } } template @@ -14409,23 +14173,65 @@ std::pair +class ChildThriftPath<::std::vector<::facebook::fboss::cfg::PacketRxReasonToQueue>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : + public Path< + ::std::vector<::facebook::fboss::cfg::PacketRxReasonToQueue>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::PacketRxReasonToQueue>>, + Parent> { + public: + using Self = Path< + ::std::vector<::facebook::fboss::cfg::PacketRxReasonToQueue>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::PacketRxReasonToQueue>>, + Parent>; + using Child = ChildThriftPath<::facebook::fboss::cfg::PacketRxReasonToQueue, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Self::Self; + + CONTAINER_CHILD_GETTERS(::std::int32_t); +}; template -class ChildThriftPath<::facebook::fboss::cfg::ExpQosMap, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::map<::std::int32_t, ::facebook::fboss::TcvrState>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::cfg::ExpQosMap, + ::std::map<::std::int32_t, ::facebook::fboss::TcvrState>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>, + ::apache::thrift::type::map<::apache::thrift::type::i32_t, ::apache::thrift::type::struct_t<::facebook::fboss::TcvrState>>, + Parent> { + public: + using Self = Path< + ::std::map<::std::int32_t, ::facebook::fboss::TcvrState>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>, + ::apache::thrift::type::map<::apache::thrift::type::i32_t, ::apache::thrift::type::struct_t<::facebook::fboss::TcvrState>>, + Parent>; + using Child = ChildThriftPath<::facebook::fboss::TcvrState, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Self::Self; + + CONTAINER_CHILD_GETTERS(::std::int32_t); +}; + + +template +class ChildThriftPath<::facebook::fboss::cfg::AsicConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : + public Path< + ::facebook::fboss::cfg::AsicConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::ExpQosMap>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::AsicConfig>, Parent> { public: using Self = Path< - ::facebook::fboss::cfg::ExpQosMap, + ::facebook::fboss::cfg::AsicConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::ExpQosMap>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::AsicConfig>, Parent>; - using strings = ::facebook::fboss::cfg::switch_config_tags::strings; + using strings = ::facebook::fboss::cfg::asic_config_v2_tags::strings; template using Child = Path< ChildType, @@ -14434,30 +14240,25 @@ class ChildThriftPath<::facebook::fboss::cfg::ExpQosMap, ::facebook::fboss::fsdb ChildTag, Self >; - using Children = fatal::tuple>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair>>; - using ChildrenById = fatal::tuple< std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, - std::pair, ChildThriftPath<::std::vector<::std::int8_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, Child<::std::int8_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::byte_t>>>; + using Children = fatal::tuple>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + using ChildrenById = fatal::tuple< std::pair, ChildThriftPath<::facebook::fboss::cfg::AsicConfigEntry, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::map<::std::int64_t, ::facebook::fboss::cfg::AsicConfigEntry>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(internalTrafficClass, 1); - STRUCT_CHILD_GETTERS(fromExpToTrafficClass, 2); - STRUCT_CHILD_GETTERS(fromTrafficClassToExp, 3); + STRUCT_CHILD_GETTERS(common, 1); + STRUCT_CHILD_GETTERS(npuEntries, 2); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return internalTrafficClass(); } - else if constexpr (__id == 2) { return fromExpToTrafficClass(); } - else if constexpr (__id == 3) { return fromTrafficClassToExp(); } + if constexpr (__id == 1) { return common(); } + else if constexpr (__id == 2) { return npuEntries(); } } template @@ -14467,83 +14268,83 @@ std::pair -class ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::int16_t, ::facebook::fboss::state::VlanFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::map<::facebook::fboss::cfg::PacketRxReason, ::std::int16_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::int16_t, ::facebook::fboss::state::VlanFields>>, + ::std::map<::facebook::fboss::cfg::PacketRxReason, ::std::int16_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>>, - ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::map<::apache::thrift::type::i16_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::VlanFields>>>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::enumeration, ::apache::thrift::type_class::integral>, + ::apache::thrift::type::map<::apache::thrift::type::enum_t<::facebook::fboss::cfg::PacketRxReason>, ::apache::thrift::type::i16_t>, Parent> { public: using Self = Path< - ::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::int16_t, ::facebook::fboss::state::VlanFields>>, + ::std::map<::facebook::fboss::cfg::PacketRxReason, ::std::int16_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>>, - ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::map<::apache::thrift::type::i16_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::VlanFields>>>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::enumeration, ::apache::thrift::type_class::integral>, + ::apache::thrift::type::map<::apache::thrift::type::enum_t<::facebook::fboss::cfg::PacketRxReason>, ::apache::thrift::type::i16_t>, Parent>; - using Child = ChildThriftPath<::std::map<::std::int16_t, ::facebook::fboss::state::VlanFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Child = Path<::std::int16_t, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t, Self>; using Self::Self; - CONTAINER_CHILD_GETTERS(::facebook::fboss::state::SwitchIdList); + CONTAINER_CHILD_GETTERS(::facebook::fboss::cfg::PacketRxReason); }; template -class ChildThriftPath<::std::vector<::facebook::fboss::cfg::StaticMplsRouteWithNextHops>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::int16_t, ::facebook::fboss::state::FibContainerFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::vector<::facebook::fboss::cfg::StaticMplsRouteWithNextHops>, + ::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::int16_t, ::facebook::fboss::state::FibContainerFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::StaticMplsRouteWithNextHops>>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::map<::apache::thrift::type::i16_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::FibContainerFields>>>, Parent> { public: using Self = Path< - ::std::vector<::facebook::fboss::cfg::StaticMplsRouteWithNextHops>, + ::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::int16_t, ::facebook::fboss::state::FibContainerFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::StaticMplsRouteWithNextHops>>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::map<::apache::thrift::type::i16_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::FibContainerFields>>>, Parent>; - using Child = ChildThriftPath<::facebook::fboss::cfg::StaticMplsRouteWithNextHops, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Child = ChildThriftPath<::std::map<::std::int16_t, ::facebook::fboss::state::FibContainerFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; using Self::Self; - CONTAINER_CHILD_GETTERS(::std::int32_t); + CONTAINER_CHILD_GETTERS(::facebook::fboss::state::SwitchIdList); }; template -class ChildThriftPath<::std::vector<::std::int32_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::map<::std::string, ::std::string>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::vector<::std::int32_t>, + ::std::map<::std::string, ::std::string>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::integral>, - ::apache::thrift::type::list<::apache::thrift::type::i32_t>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::string>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::string_t>, Parent> { public: using Self = Path< - ::std::vector<::std::int32_t>, + ::std::map<::std::string, ::std::string>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::integral>, - ::apache::thrift::type::list<::apache::thrift::type::i32_t>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::string>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::string_t>, Parent>; - using Child = Path<::std::int32_t, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t, Self>; + using Child = Path<::std::string, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t, Self>; using Self::Self; - CONTAINER_CHILD_GETTERS(::std::int32_t); + CONTAINER_CHILD_GETTERS(::std::string); }; template -class ChildThriftPath<::facebook::fboss::cfg::L4PortRange, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::cfg::PortFlowletConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::cfg::L4PortRange, + ::facebook::fboss::cfg::PortFlowletConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::L4PortRange>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::PortFlowletConfig>, Parent> { public: using Self = Path< - ::facebook::fboss::cfg::L4PortRange, + ::facebook::fboss::cfg::PortFlowletConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::L4PortRange>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::PortFlowletConfig>, Parent>; using strings = ::facebook::fboss::cfg::switch_config_tags::strings; template @@ -14554,30 +14355,30 @@ class ChildThriftPath<::facebook::fboss::cfg::L4PortRange, ::facebook::fboss::fs ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>, -std::pair>>; - using ChildrenById = fatal::tuple< std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child>>; - template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>>::template type_of; + using Children = fatal::tuple>, +std::pair>, +std::pair>>; + using ChildrenById = fatal::tuple< std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, + std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, + std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>>; + template + using NameToId = fatal::tuple>, +std::pair>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(min, 1); - STRUCT_CHILD_GETTERS(max, 2); - STRUCT_CHILD_GETTERS(invert, 3); + STRUCT_CHILD_GETTERS(scalingFactor, 1); + STRUCT_CHILD_GETTERS(loadWeight, 2); + STRUCT_CHILD_GETTERS(queueWeight, 3); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return min(); } - else if constexpr (__id == 2) { return max(); } - else if constexpr (__id == 3) { return invert(); } + if constexpr (__id == 1) { return scalingFactor(); } + else if constexpr (__id == 2) { return loadWeight(); } + else if constexpr (__id == 3) { return queueWeight(); } } template @@ -14586,23 +14387,65 @@ std::pair } }; +template +class ChildThriftPath<::std::vector<::facebook::fboss::FirmwarePair>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : + public Path< + ::std::vector<::facebook::fboss::FirmwarePair>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::FirmwarePair>>, + Parent> { + public: + using Self = Path< + ::std::vector<::facebook::fboss::FirmwarePair>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::FirmwarePair>>, + Parent>; + using Child = ChildThriftPath<::facebook::fboss::FirmwarePair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Self::Self; + + CONTAINER_CHILD_GETTERS(::std::int32_t); +}; template -class ChildThriftPath<::facebook::fboss::cfg::StaticMplsRouteWithNextHops, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::set<::facebook::fboss::cfg::IPv4Field>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::cfg::StaticMplsRouteWithNextHops, + ::std::set<::facebook::fboss::cfg::IPv4Field>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::set<::apache::thrift::type_class::enumeration>, + ::apache::thrift::type::set<::apache::thrift::type::enum_t<::facebook::fboss::cfg::IPv4Field>>, + Parent> { + public: + using Self = Path< + ::std::set<::facebook::fboss::cfg::IPv4Field>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::set<::apache::thrift::type_class::enumeration>, + ::apache::thrift::type::set<::apache::thrift::type::enum_t<::facebook::fboss::cfg::IPv4Field>>, + Parent>; + using Child = Path<::facebook::fboss::cfg::IPv4Field, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::IPv4Field>, Self>; + using Self::Self; + + CONTAINER_CHILD_GETTERS(::facebook::fboss::cfg::IPv4Field); +}; + + +template +class ChildThriftPath<::facebook::fboss::state::Label, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : + public Path< + ::facebook::fboss::state::Label, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::StaticMplsRouteWithNextHops>, + ::apache::thrift::type::struct_t<::facebook::fboss::state::Label>, Parent> { public: using Self = Path< - ::facebook::fboss::cfg::StaticMplsRouteWithNextHops, + ::facebook::fboss::state::Label, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::StaticMplsRouteWithNextHops>, + ::apache::thrift::type::struct_t<::facebook::fboss::state::Label>, Parent>; - using strings = ::facebook::fboss::cfg::switch_config_tags::strings; + using strings = ::facebook::fboss::state::switch_state_tags::strings; template using Child = Path< ChildType, @@ -14611,25 +14454,20 @@ class ChildThriftPath<::facebook::fboss::cfg::StaticMplsRouteWithNextHops, ::fac ChildTag, Self >; - using Children = fatal::tuple>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; - using ChildrenById = fatal::tuple< std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, ChildThriftPath<::std::vector<::facebook::fboss::NextHopThrift>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + using Children = fatal::tuple>>; + using ChildrenById = fatal::tuple< std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>>; template - using NameToId = fatal::tuple>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(ingressLabel, 1); - STRUCT_CHILD_GETTERS(nexthops, 2); + STRUCT_CHILD_GETTERS(value, 1); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return ingressLabel(); } - else if constexpr (__id == 2) { return nexthops(); } + if constexpr (__id == 1) { return value(); } } template @@ -14640,21 +14478,21 @@ std::pair -class ChildThriftPath<::facebook::fboss::state::AclTableGroupFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::cfg::CmisOverrides, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::state::AclTableGroupFields, + ::facebook::fboss::cfg::CmisOverrides, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::state::AclTableGroupFields>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::CmisOverrides>, Parent> { public: using Self = Path< - ::facebook::fboss::state::AclTableGroupFields, + ::facebook::fboss::cfg::CmisOverrides, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::state::AclTableGroupFields>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::CmisOverrides>, Parent>; - using strings = ::facebook::fboss::state::switch_state_tags::strings; + using strings = ::facebook::fboss::cfg::qsfp_service_config_tags::strings; template using Child = Path< ChildType, @@ -14663,30 +14501,20 @@ class ChildThriftPath<::facebook::fboss::state::AclTableGroupFields, ::facebook: ChildTag, Self >; - using Children = fatal::tuple>>, -std::pair>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; - using ChildrenById = fatal::tuple< std::pair, Child<::facebook::fboss::cfg::AclStage, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::AclStage>>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, ChildThriftPath<::std::map<::std::string, ::facebook::fboss::state::AclTableFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + using Children = fatal::tuple>>; + using ChildrenById = fatal::tuple< std::pair, ChildThriftPath<::facebook::fboss::RxEqualizerSettings, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(stage, 1); - STRUCT_CHILD_GETTERS(name, 2); - STRUCT_CHILD_GETTERS(aclTableMap, 3); + STRUCT_CHILD_GETTERS(rxEqualizerSettings, 1); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return stage(); } - else if constexpr (__id == 2) { return name(); } - else if constexpr (__id == 3) { return aclTableMap(); } + if constexpr (__id == 1) { return rxEqualizerSettings(); } } template @@ -14695,63 +14523,21 @@ std::pair -class ChildThriftPath<::std::vector<::facebook::fboss::state::PortPgFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : - public Path< - ::std::vector<::facebook::fboss::state::PortPgFields>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::state::PortPgFields>>, - Parent> { - public: - using Self = Path< - ::std::vector<::facebook::fboss::state::PortPgFields>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::state::PortPgFields>>, - Parent>; - using Child = ChildThriftPath<::facebook::fboss::state::PortPgFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; - using Self::Self; - - CONTAINER_CHILD_GETTERS(::std::int32_t); -}; - -template -class ChildThriftPath<::std::vector<::facebook::fboss::cfg::StaticMplsRouteNoNextHops>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : - public Path< - ::std::vector<::facebook::fboss::cfg::StaticMplsRouteNoNextHops>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::StaticMplsRouteNoNextHops>>, - Parent> { - public: - using Self = Path< - ::std::vector<::facebook::fboss::cfg::StaticMplsRouteNoNextHops>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::StaticMplsRouteNoNextHops>>, - Parent>; - using Child = ChildThriftPath<::facebook::fboss::cfg::StaticMplsRouteNoNextHops, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; - using Self::Self; - - CONTAINER_CHILD_GETTERS(::std::int32_t); -}; - template -class ChildThriftPath<::facebook::fboss::cfg::StaticMplsRouteNoNextHops, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::cfg::GreTunnel, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::cfg::StaticMplsRouteNoNextHops, + ::facebook::fboss::cfg::GreTunnel, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::StaticMplsRouteNoNextHops>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::GreTunnel>, Parent> { public: using Self = Path< - ::facebook::fboss::cfg::StaticMplsRouteNoNextHops, + ::facebook::fboss::cfg::GreTunnel, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::StaticMplsRouteNoNextHops>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::GreTunnel>, Parent>; using strings = ::facebook::fboss::cfg::switch_config_tags::strings; template @@ -14762,20 +14548,25 @@ class ChildThriftPath<::facebook::fboss::cfg::StaticMplsRouteNoNextHops, ::faceb ChildTag, Self >; - using Children = fatal::tuple>>; - using ChildrenById = fatal::tuple< std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>>; + using Children = fatal::tuple>, +std::pair>>; + using ChildrenById = fatal::tuple< std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, ChildThriftPath<::facebook::fboss::cfg::Ttl, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; template - using NameToId = fatal::tuple>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(ingressLabel, 1); + STRUCT_CHILD_GETTERS(ip, 1); + STRUCT_CHILD_GETTERS(ttl, 2); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return ingressLabel(); } + if constexpr (__id == 1) { return ip(); } + else if constexpr (__id == 2) { return ttl(); } } template @@ -14786,21 +14577,21 @@ class ChildThriftPath<::facebook::fboss::cfg::StaticMplsRouteNoNextHops, ::faceb template -class ChildThriftPath<::facebook::fboss::VendorConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::phy::LinkFaultStatus, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::VendorConfig, + ::facebook::fboss::phy::LinkFaultStatus, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::VendorConfig>, + ::apache::thrift::type::struct_t<::facebook::fboss::phy::LinkFaultStatus>, Parent> { public: using Self = Path< - ::facebook::fboss::VendorConfig, + ::facebook::fboss::phy::LinkFaultStatus, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::VendorConfig>, + ::apache::thrift::type::struct_t<::facebook::fboss::phy::LinkFaultStatus>, Parent>; - using strings = ::facebook::fboss::transceiver_validation_tags::strings; + using strings = ::facebook::fboss::phy::phy_tags::strings; template using Child = Path< ChildType, @@ -14809,25 +14600,35 @@ class ChildThriftPath<::facebook::fboss::VendorConfig, ::facebook::fboss::fsdb:: ChildTag, Self >; - using Children = fatal::tuple>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; - using ChildrenById = fatal::tuple< std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, ChildThriftPath, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + using Children = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>>; + using ChildrenById = fatal::tuple< std::pair, Child>, + std::pair, Child>, + std::pair, Child>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>>; template - using NameToId = fatal::tuple>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(vendorName, 1); - STRUCT_CHILD_GETTERS(partNumberToTransceiverAttributes, 2); + STRUCT_CHILD_GETTERS(localFault, 1); + STRUCT_CHILD_GETTERS(remoteFault, 2); + STRUCT_CHILD_GETTERS(highCrcErrorRateLive, 3); + STRUCT_CHILD_GETTERS(highCrcErrorRateChangedCount, 4); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return vendorName(); } - else if constexpr (__id == 2) { return partNumberToTransceiverAttributes(); } + if constexpr (__id == 1) { return localFault(); } + else if constexpr (__id == 2) { return remoteFault(); } + else if constexpr (__id == 3) { return highCrcErrorRateLive(); } + else if constexpr (__id == 4) { return highCrcErrorRateChangedCount(); } } template @@ -14836,63 +14637,21 @@ std::pair -class ChildThriftPath<::std::vector<::facebook::fboss::PortQueueFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::cfg::LinearQueueCongestionDetection, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::vector<::facebook::fboss::PortQueueFields>, + ::facebook::fboss::cfg::LinearQueueCongestionDetection, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::PortQueueFields>>, + ::apache::thrift::type_class::structure, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::LinearQueueCongestionDetection>, Parent> { public: using Self = Path< - ::std::vector<::facebook::fboss::PortQueueFields>, + ::facebook::fboss::cfg::LinearQueueCongestionDetection, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::PortQueueFields>>, - Parent>; - using Child = ChildThriftPath<::facebook::fboss::PortQueueFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; - using Self::Self; - - CONTAINER_CHILD_GETTERS(::std::int32_t); -}; - -template -class ChildThriftPath<::std::vector<::facebook::fboss::cfg::AclEntry>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : - public Path< - ::std::vector<::facebook::fboss::cfg::AclEntry>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::AclEntry>>, - Parent> { - public: - using Self = Path< - ::std::vector<::facebook::fboss::cfg::AclEntry>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::AclEntry>>, - Parent>; - using Child = ChildThriftPath<::facebook::fboss::cfg::AclEntry, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; - using Self::Self; - - CONTAINER_CHILD_GETTERS(::std::int32_t); -}; - - -template -class ChildThriftPath<::facebook::fboss::cfg::Interface, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : - public Path< - ::facebook::fboss::cfg::Interface, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::Interface>, - Parent> { - public: - using Self = Path< - ::facebook::fboss::cfg::Interface, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::Interface>, + ::apache::thrift::type_class::structure, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::LinearQueueCongestionDetection>, Parent>; using strings = ::facebook::fboss::cfg::switch_config_tags::strings; template @@ -14903,95 +14662,30 @@ class ChildThriftPath<::facebook::fboss::cfg::Interface, ::facebook::fboss::fsdb ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>>, -std::pair>, -std::pair>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair>>>; + using Children = fatal::tuple>, +std::pair>, +std::pair>>; using ChildrenById = fatal::tuple< std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, ChildThriftPath<::std::vector<::std::string>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::facebook::fboss::cfg::NdpConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child>, - std::pair, Child>, - std::pair, Child<::facebook::fboss::cfg::InterfaceType, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::InterfaceType>>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, ChildThriftPath<::std::map<::std::string, ::std::string>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::map<::std::string, ::std::string>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, Child<::facebook::fboss::cfg::Scope, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::Scope>>>>; + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>>; template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(intfID, 1); - STRUCT_CHILD_GETTERS(routerID, 2); - STRUCT_CHILD_GETTERS(vlanID, 3); - STRUCT_CHILD_GETTERS(name, 4); - STRUCT_CHILD_GETTERS(mac, 5); - STRUCT_CHILD_GETTERS(ipAddresses, 6); - STRUCT_CHILD_GETTERS(ndp, 7); - STRUCT_CHILD_GETTERS(mtu, 8); - STRUCT_CHILD_GETTERS(isVirtual, 9); - STRUCT_CHILD_GETTERS(isStateSyncDisabled, 10); - STRUCT_CHILD_GETTERS(type, 11); - STRUCT_CHILD_GETTERS(dhcpRelayAddressV4, 12); - STRUCT_CHILD_GETTERS(dhcpRelayAddressV6, 13); - STRUCT_CHILD_GETTERS(dhcpRelayOverridesV4, 14); - STRUCT_CHILD_GETTERS(dhcpRelayOverridesV6, 15); - STRUCT_CHILD_GETTERS(scope, 16); + STRUCT_CHILD_GETTERS(minimumLength, 1); + STRUCT_CHILD_GETTERS(maximumLength, 2); + STRUCT_CHILD_GETTERS(probability, 3); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return intfID(); } - else if constexpr (__id == 2) { return routerID(); } - else if constexpr (__id == 3) { return vlanID(); } - else if constexpr (__id == 4) { return name(); } - else if constexpr (__id == 5) { return mac(); } - else if constexpr (__id == 6) { return ipAddresses(); } - else if constexpr (__id == 7) { return ndp(); } - else if constexpr (__id == 8) { return mtu(); } - else if constexpr (__id == 9) { return isVirtual(); } - else if constexpr (__id == 10) { return isStateSyncDisabled(); } - else if constexpr (__id == 11) { return type(); } - else if constexpr (__id == 12) { return dhcpRelayAddressV4(); } - else if constexpr (__id == 13) { return dhcpRelayAddressV6(); } - else if constexpr (__id == 14) { return dhcpRelayOverridesV4(); } - else if constexpr (__id == 15) { return dhcpRelayOverridesV6(); } - else if constexpr (__id == 16) { return scope(); } + if constexpr (__id == 1) { return minimumLength(); } + else if constexpr (__id == 2) { return maximumLength(); } + else if constexpr (__id == 3) { return probability(); } } template @@ -15000,84 +14694,78 @@ std::pair } }; -template -class ChildThriftPath<::std::map<::std::int16_t, ::std::int64_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : - public Path< - ::std::map<::std::int16_t, ::std::int64_t>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::integral>, - ::apache::thrift::type::map<::apache::thrift::type::i16_t, ::apache::thrift::type::i64_t>, - Parent> { - public: - using Self = Path< - ::std::map<::std::int16_t, ::std::int64_t>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::integral>, - ::apache::thrift::type::map<::apache::thrift::type::i16_t, ::apache::thrift::type::i64_t>, - Parent>; - using Child = Path<::std::int64_t, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::integral, ::apache::thrift::type::i64_t, Self>; - using Self::Self; - - CONTAINER_CHILD_GETTERS(::std::int16_t); -}; template -class ChildThriftPath<::std::map<::std::int32_t, ::std::int32_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::cfg::MirrorTunnel, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::map<::std::int32_t, ::std::int32_t>, + ::facebook::fboss::cfg::MirrorTunnel, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::integral>, - ::apache::thrift::type::map<::apache::thrift::type::i32_t, ::apache::thrift::type::i32_t>, + ::apache::thrift::type_class::structure, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::MirrorTunnel>, Parent> { public: using Self = Path< - ::std::map<::std::int32_t, ::std::int32_t>, + ::facebook::fboss::cfg::MirrorTunnel, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::integral>, - ::apache::thrift::type::map<::apache::thrift::type::i32_t, ::apache::thrift::type::i32_t>, + ::apache::thrift::type_class::structure, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::MirrorTunnel>, Parent>; - using Child = Path<::std::int32_t, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t, Self>; - using Self::Self; - - CONTAINER_CHILD_GETTERS(::std::int32_t); -}; + using strings = ::facebook::fboss::cfg::switch_config_tags::strings; + template + using Child = Path< + ChildType, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ChildTC, + ChildTag, + Self + >; + using Children = fatal::tuple>, +std::pair>, +std::pair>>; + using ChildrenById = fatal::tuple< std::pair, ChildThriftPath<::facebook::fboss::cfg::GreTunnel, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::facebook::fboss::cfg::SflowTunnel, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>>; + template + using NameToId = fatal::tuple>, +std::pair>, +std::pair>>::template type_of; -template -class ChildThriftPath<::std::map<::std::int32_t, ::facebook::fboss::state::InterfaceFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : - public Path< - ::std::map<::std::int32_t, ::facebook::fboss::state::InterfaceFields>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>, - ::apache::thrift::type::map<::apache::thrift::type::i32_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::InterfaceFields>>, - Parent> { - public: - using Self = Path< - ::std::map<::std::int32_t, ::facebook::fboss::state::InterfaceFields>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>, - ::apache::thrift::type::map<::apache::thrift::type::i32_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::InterfaceFields>>, - Parent>; - using Child = ChildThriftPath<::facebook::fboss::state::InterfaceFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + template + using TypeFor = typename Children::template type_of; using Self::Self; + + STRUCT_CHILD_GETTERS(greTunnel, 1); + STRUCT_CHILD_GETTERS(sflowTunnel, 2); + STRUCT_CHILD_GETTERS(srcIp, 3); - CONTAINER_CHILD_GETTERS(::std::int32_t); + template + auto operator()(const std::integral_constant&) { + if constexpr (__id == 1) { return greTunnel(); } + else if constexpr (__id == 2) { return sflowTunnel(); } + else if constexpr (__id == 3) { return srcIp(); } + } + + template + auto operator()(const fatal::sequence&) { + return operator()(NameToId>()); + } }; template -class ChildThriftPath<::facebook::fboss::cfg::Port, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::cfg::Mirror, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::cfg::Port, + ::facebook::fboss::cfg::Mirror, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::Port>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::Mirror>, Parent> { public: using Self = Path< - ::facebook::fboss::cfg::Port, + ::facebook::fboss::cfg::Mirror, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::Port>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::Mirror>, Parent>; using strings = ::facebook::fboss::cfg::switch_config_tags::strings; template @@ -15088,170 +14776,40 @@ class ChildThriftPath<::facebook::fboss::cfg::Port, ::facebook::fboss::fsdb::Fsd ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>>, -std::pair>, -std::pair>, -std::pair>>, -std::pair>, -std::pair>, -std::pair>>, -std::pair>, -std::pair>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair>, -std::pair>, -std::pair>, -std::pair>>, -std::pair>, -std::pair>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair>>, -std::pair>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair>>, -std::pair>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair>>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair>>, -std::pair>, -std::pair>>, -std::pair>, -std::pair>>; - using ChildrenById = fatal::tuple< std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::facebook::fboss::cfg::PortState, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::PortState>>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::facebook::fboss::cfg::ParserType, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::ParserType>>>, - std::pair, Child>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::facebook::fboss::cfg::PortSpeed, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::PortSpeed>>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::PortQueue>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::facebook::fboss::cfg::PortPause, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, Child<::std::int64_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i64_t>>, - std::pair, Child<::std::int64_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i64_t>>, - std::pair, Child<::facebook::fboss::cfg::PortLoopbackMode, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::PortLoopbackMode>>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, ChildThriftPath<::std::map<::facebook::fboss::cfg::LLDPTag, ::std::string>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, Child<::facebook::fboss::cfg::SampleDestination, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::SampleDestination>>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::AclLookupClass>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, Child<::facebook::fboss::cfg::PortProfileID, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::PortProfileID>>>, - std::pair, ChildThriftPath<::facebook::fboss::cfg::PortPfc, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::vector<::std::string>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, Child<::facebook::fboss::cfg::PortType, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::PortType>>>, - std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::PortNeighbor>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, Child<::facebook::fboss::cfg::PortDrainState, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::PortDrainState>>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, Child<::facebook::fboss::cfg::Scope, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::Scope>>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, Child>>; + using Children = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>, +std::pair>>; + using ChildrenById = fatal::tuple< std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, ChildThriftPath<::facebook::fboss::cfg::MirrorDestination, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, Child<::std::int8_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::byte_t>>, + std::pair, Child>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>>; template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(logicalID, 1); - STRUCT_CHILD_GETTERS(state, 2); - STRUCT_CHILD_GETTERS(minFrameSize, 3); - STRUCT_CHILD_GETTERS(maxFrameSize, 4); - STRUCT_CHILD_GETTERS(parserType, 5); - STRUCT_CHILD_GETTERS(routable, 6); - STRUCT_CHILD_GETTERS(ingressVlan, 7); - STRUCT_CHILD_GETTERS(speed, 8); - STRUCT_CHILD_GETTERS(name, 9); - STRUCT_CHILD_GETTERS(description, 10); - STRUCT_CHILD_GETTERS(queues_DEPRECATED, 12); - STRUCT_CHILD_GETTERS(pause, 13); - STRUCT_CHILD_GETTERS(sFlowIngressRate, 14); - STRUCT_CHILD_GETTERS(sFlowEgressRate, 15); - STRUCT_CHILD_GETTERS(loopbackMode, 17); - STRUCT_CHILD_GETTERS(ingressMirror, 18); - STRUCT_CHILD_GETTERS(egressMirror, 19); - STRUCT_CHILD_GETTERS(expectedLLDPValues, 20); - STRUCT_CHILD_GETTERS(sampleDest, 21); - STRUCT_CHILD_GETTERS(portQueueConfigName, 22); - STRUCT_CHILD_GETTERS(lookupClasses, 23); - STRUCT_CHILD_GETTERS(profileID, 24); - STRUCT_CHILD_GETTERS(pfc, 25); - STRUCT_CHILD_GETTERS(counterTags, 26); - STRUCT_CHILD_GETTERS(portType, 27); - STRUCT_CHILD_GETTERS(expectedNeighborReachability, 28); - STRUCT_CHILD_GETTERS(drainState, 29); - STRUCT_CHILD_GETTERS(flowletConfigName, 30); - STRUCT_CHILD_GETTERS(scope, 31); - STRUCT_CHILD_GETTERS(portVoqConfigName, 32); - STRUCT_CHILD_GETTERS(conditionalEntropyRehash, 33); + STRUCT_CHILD_GETTERS(name, 1); + STRUCT_CHILD_GETTERS(destination, 2); + STRUCT_CHILD_GETTERS(dscp, 3); + STRUCT_CHILD_GETTERS(truncate, 4); + STRUCT_CHILD_GETTERS(samplingRate, 5); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return logicalID(); } - else if constexpr (__id == 2) { return state(); } - else if constexpr (__id == 3) { return minFrameSize(); } - else if constexpr (__id == 4) { return maxFrameSize(); } - else if constexpr (__id == 5) { return parserType(); } - else if constexpr (__id == 6) { return routable(); } - else if constexpr (__id == 7) { return ingressVlan(); } - else if constexpr (__id == 8) { return speed(); } - else if constexpr (__id == 9) { return name(); } - else if constexpr (__id == 10) { return description(); } - else if constexpr (__id == 12) { return queues_DEPRECATED(); } - else if constexpr (__id == 13) { return pause(); } - else if constexpr (__id == 14) { return sFlowIngressRate(); } - else if constexpr (__id == 15) { return sFlowEgressRate(); } - else if constexpr (__id == 17) { return loopbackMode(); } - else if constexpr (__id == 18) { return ingressMirror(); } - else if constexpr (__id == 19) { return egressMirror(); } - else if constexpr (__id == 20) { return expectedLLDPValues(); } - else if constexpr (__id == 21) { return sampleDest(); } - else if constexpr (__id == 22) { return portQueueConfigName(); } - else if constexpr (__id == 23) { return lookupClasses(); } - else if constexpr (__id == 24) { return profileID(); } - else if constexpr (__id == 25) { return pfc(); } - else if constexpr (__id == 26) { return counterTags(); } - else if constexpr (__id == 27) { return portType(); } - else if constexpr (__id == 28) { return expectedNeighborReachability(); } - else if constexpr (__id == 29) { return drainState(); } - else if constexpr (__id == 30) { return flowletConfigName(); } - else if constexpr (__id == 31) { return scope(); } - else if constexpr (__id == 32) { return portVoqConfigName(); } - else if constexpr (__id == 33) { return conditionalEntropyRehash(); } + if constexpr (__id == 1) { return name(); } + else if constexpr (__id == 2) { return destination(); } + else if constexpr (__id == 3) { return dscp(); } + else if constexpr (__id == 4) { return truncate(); } + else if constexpr (__id == 5) { return samplingRate(); } } template @@ -15262,19 +14820,19 @@ std::pair -class ChildThriftPath<::facebook::fboss::cfg::StaticIp2MplsRoute, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::cfg::ExactMatchTableConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::cfg::StaticIp2MplsRoute, + ::facebook::fboss::cfg::ExactMatchTableConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::StaticIp2MplsRoute>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::ExactMatchTableConfig>, Parent> { public: using Self = Path< - ::facebook::fboss::cfg::StaticIp2MplsRoute, + ::facebook::fboss::cfg::ExactMatchTableConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::StaticIp2MplsRoute>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::ExactMatchTableConfig>, Parent>; using strings = ::facebook::fboss::cfg::switch_config_tags::strings; template @@ -15285,30 +14843,25 @@ class ChildThriftPath<::facebook::fboss::cfg::StaticIp2MplsRoute, ::facebook::fb ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; - using ChildrenById = fatal::tuple< std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, ChildThriftPath<::std::vector<::facebook::fboss::NextHopThrift>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + using Children = fatal::tuple>, +std::pair>>; + using ChildrenById = fatal::tuple< std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>>; template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(routerID, 1); - STRUCT_CHILD_GETTERS(prefix, 2); - STRUCT_CHILD_GETTERS(nexthops, 3); + STRUCT_CHILD_GETTERS(name, 1); + STRUCT_CHILD_GETTERS(dstPrefixLength, 2); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return routerID(); } - else if constexpr (__id == 2) { return prefix(); } - else if constexpr (__id == 3) { return nexthops(); } + if constexpr (__id == 1) { return name(); } + else if constexpr (__id == 2) { return dstPrefixLength(); } } template @@ -15317,23 +14870,44 @@ std::pair +class ChildThriftPath<::std::map<::std::string, ::facebook::fboss::cfg::UdfPacketMatcher>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : + public Path< + ::std::map<::std::string, ::facebook::fboss::cfg::UdfPacketMatcher>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::cfg::UdfPacketMatcher>>, + Parent> { + public: + using Self = Path< + ::std::map<::std::string, ::facebook::fboss::cfg::UdfPacketMatcher>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::cfg::UdfPacketMatcher>>, + Parent>; + using Child = ChildThriftPath<::facebook::fboss::cfg::UdfPacketMatcher, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Self::Self; + + CONTAINER_CHILD_GETTERS(::std::string); +}; + template -class ChildThriftPath<::facebook::fboss::cfg::SetDscpMatchAction, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::MediaLaneSettings, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::cfg::SetDscpMatchAction, + ::facebook::fboss::MediaLaneSettings, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::SetDscpMatchAction>, + ::apache::thrift::type::struct_t<::facebook::fboss::MediaLaneSettings>, Parent> { public: using Self = Path< - ::facebook::fboss::cfg::SetDscpMatchAction, + ::facebook::fboss::MediaLaneSettings, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::SetDscpMatchAction>, + ::apache::thrift::type::struct_t<::facebook::fboss::MediaLaneSettings>, Parent>; - using strings = ::facebook::fboss::cfg::switch_config_tags::strings; + using strings = ::facebook::fboss::transceiver_tags::strings; template using Child = Path< ChildType, @@ -15342,20 +14916,40 @@ class ChildThriftPath<::facebook::fboss::cfg::SetDscpMatchAction, ::facebook::fb ChildTag, Self >; - using Children = fatal::tuple>>; - using ChildrenById = fatal::tuple< std::pair, Child<::std::int8_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::byte_t>>>; + using Children = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>, +std::pair>>; + using ChildrenById = fatal::tuple< std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child>, + std::pair, Child>, + std::pair, Child>, + std::pair, Child>>; template - using NameToId = fatal::tuple>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(dscpValue, 1); + STRUCT_CHILD_GETTERS(lane, 1); + STRUCT_CHILD_GETTERS(txDisable, 2); + STRUCT_CHILD_GETTERS(txSquelch, 3); + STRUCT_CHILD_GETTERS(txAdaptiveEqControl, 4); + STRUCT_CHILD_GETTERS(txSquelchForce, 5); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return dscpValue(); } + if constexpr (__id == 1) { return lane(); } + else if constexpr (__id == 2) { return txDisable(); } + else if constexpr (__id == 3) { return txSquelch(); } + else if constexpr (__id == 4) { return txAdaptiveEqControl(); } + else if constexpr (__id == 5) { return txSquelchForce(); } } template @@ -15364,86 +14958,112 @@ class ChildThriftPath<::facebook::fboss::cfg::SetDscpMatchAction, ::facebook::fb } }; + template -class ChildThriftPath<::std::vector<::facebook::fboss::cfg::MacAndVlan>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::cfg::SystemPortRanges, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::vector<::facebook::fboss::cfg::MacAndVlan>, + ::facebook::fboss::cfg::SystemPortRanges, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::MacAndVlan>>, + ::apache::thrift::type_class::structure, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::SystemPortRanges>, Parent> { public: using Self = Path< - ::std::vector<::facebook::fboss::cfg::MacAndVlan>, + ::facebook::fboss::cfg::SystemPortRanges, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::MacAndVlan>>, + ::apache::thrift::type_class::structure, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::SystemPortRanges>, Parent>; - using Child = ChildThriftPath<::facebook::fboss::cfg::MacAndVlan, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using strings = ::facebook::fboss::cfg::switch_config_tags::strings; + template + using Child = Path< + ChildType, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ChildTC, + ChildTag, + Self + >; + using Children = fatal::tuple, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + using ChildrenById = fatal::tuple< std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::Range64>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + template + using NameToId = fatal::tuple>>::template type_of; + + template + using TypeFor = typename Children::template type_of; using Self::Self; + + STRUCT_CHILD_GETTERS(systemPortRanges, 1); - CONTAINER_CHILD_GETTERS(::std::int32_t); + template + auto operator()(const std::integral_constant&) { + if constexpr (__id == 1) { return systemPortRanges(); } + } + + template + auto operator()(const fatal::sequence&) { + return operator()(NameToId>()); + } }; template -class ChildThriftPath<::std::map<::std::int16_t, ::facebook::fboss::cfg::ChipConfig>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::vector<::facebook::fboss::cfg::CounterType>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::map<::std::int16_t, ::facebook::fboss::cfg::ChipConfig>, + ::std::vector<::facebook::fboss::cfg::CounterType>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::variant>, - ::apache::thrift::type::map<::apache::thrift::type::i16_t, ::apache::thrift::type::union_t<::facebook::fboss::cfg::ChipConfig>>, + ::apache::thrift::type_class::list<::apache::thrift::type_class::enumeration>, + ::apache::thrift::type::list<::apache::thrift::type::enum_t<::facebook::fboss::cfg::CounterType>>, Parent> { public: using Self = Path< - ::std::map<::std::int16_t, ::facebook::fboss::cfg::ChipConfig>, + ::std::vector<::facebook::fboss::cfg::CounterType>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::variant>, - ::apache::thrift::type::map<::apache::thrift::type::i16_t, ::apache::thrift::type::union_t<::facebook::fboss::cfg::ChipConfig>>, + ::apache::thrift::type_class::list<::apache::thrift::type_class::enumeration>, + ::apache::thrift::type::list<::apache::thrift::type::enum_t<::facebook::fboss::cfg::CounterType>>, Parent>; - using Child = ChildThriftPath<::facebook::fboss::cfg::ChipConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Child = Path<::facebook::fboss::cfg::CounterType, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::CounterType>, Self>; using Self::Self; - CONTAINER_CHILD_GETTERS(::std::int16_t); + CONTAINER_CHILD_GETTERS(::std::int32_t); }; template -class ChildThriftPath<::std::map<::std::int64_t, ::facebook::fboss::cfg::SwitchInfo>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::vector<::facebook::fboss::NextHopThrift>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::map<::std::int64_t, ::facebook::fboss::cfg::SwitchInfo>, + ::std::vector<::facebook::fboss::NextHopThrift>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>, - ::apache::thrift::type::map<::apache::thrift::type::i64_t, ::apache::thrift::type::struct_t<::facebook::fboss::cfg::SwitchInfo>>, + ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::NextHopThrift>>, Parent> { public: using Self = Path< - ::std::map<::std::int64_t, ::facebook::fboss::cfg::SwitchInfo>, + ::std::vector<::facebook::fboss::NextHopThrift>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>, - ::apache::thrift::type::map<::apache::thrift::type::i64_t, ::apache::thrift::type::struct_t<::facebook::fboss::cfg::SwitchInfo>>, + ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::NextHopThrift>>, Parent>; - using Child = ChildThriftPath<::facebook::fboss::cfg::SwitchInfo, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Child = ChildThriftPath<::facebook::fboss::NextHopThrift, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; using Self::Self; - CONTAINER_CHILD_GETTERS(::std::int64_t); + CONTAINER_CHILD_GETTERS(::std::int32_t); }; template -class ChildThriftPath<::facebook::fboss::state::AclTableFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::cfg::PortQueueRate, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::state::AclTableFields, + ::facebook::fboss::cfg::PortQueueRate, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::state::AclTableFields>, + ::apache::thrift::type_class::variant, + ::apache::thrift::type::union_t<::facebook::fboss::cfg::PortQueueRate>, Parent> { public: using Self = Path< - ::facebook::fboss::state::AclTableFields, + ::facebook::fboss::cfg::PortQueueRate, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::state::AclTableFields>, + ::apache::thrift::type_class::variant, + ::apache::thrift::type::union_t<::facebook::fboss::cfg::PortQueueRate>, Parent>; - using strings = ::facebook::fboss::state::switch_state_tags::strings; + using strings = ::facebook::fboss::cfg::switch_config_tags::strings; template using Child = Path< ChildType, @@ -15452,45 +15072,25 @@ class ChildThriftPath<::facebook::fboss::state::AclTableFields, ::facebook::fbos ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; - using ChildrenById = fatal::tuple< std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, ChildThriftPath<::std::map<::std::string, ::facebook::fboss::state::AclEntryFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::AclTableActionType>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::AclTableQualifier>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::vector<::std::string>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + using Children = fatal::tuple>, +std::pair>>; + using ChildrenById = fatal::tuple< std::pair, ChildThriftPath<::facebook::fboss::cfg::Range, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::facebook::fboss::cfg::Range, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(id, 1); - STRUCT_CHILD_GETTERS(priority, 2); - STRUCT_CHILD_GETTERS(aclMap, 3); - STRUCT_CHILD_GETTERS(actionTypes, 4); - STRUCT_CHILD_GETTERS(qualifiers, 5); - STRUCT_CHILD_GETTERS(udfGroups, 6); + STRUCT_CHILD_GETTERS(pktsPerSec, 1); + STRUCT_CHILD_GETTERS(kbitsPerSec, 2); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return id(); } - else if constexpr (__id == 2) { return priority(); } - else if constexpr (__id == 3) { return aclMap(); } - else if constexpr (__id == 4) { return actionTypes(); } - else if constexpr (__id == 5) { return qualifiers(); } - else if constexpr (__id == 6) { return udfGroups(); } + if constexpr (__id == 1) { return pktsPerSec(); } + else if constexpr (__id == 2) { return kbitsPerSec(); } } template @@ -15500,64 +15100,64 @@ std::pair -class ChildThriftPath<::std::map<::std::int32_t, ::facebook::fboss::state::ParticipantInfo>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::vector<::facebook::fboss::cfg::DscpQosMap>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::map<::std::int32_t, ::facebook::fboss::state::ParticipantInfo>, + ::std::vector<::facebook::fboss::cfg::DscpQosMap>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>, - ::apache::thrift::type::map<::apache::thrift::type::i32_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::ParticipantInfo>>, + ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::DscpQosMap>>, Parent> { public: using Self = Path< - ::std::map<::std::int32_t, ::facebook::fboss::state::ParticipantInfo>, + ::std::vector<::facebook::fboss::cfg::DscpQosMap>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>, - ::apache::thrift::type::map<::apache::thrift::type::i32_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::ParticipantInfo>>, + ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::DscpQosMap>>, Parent>; - using Child = ChildThriftPath<::facebook::fboss::state::ParticipantInfo, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Child = ChildThriftPath<::facebook::fboss::cfg::DscpQosMap, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; using Self::Self; CONTAINER_CHILD_GETTERS(::std::int32_t); }; template -class ChildThriftPath<::std::map<::std::int16_t, ::facebook::fboss::state::AggregatePortFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::int32_t, ::facebook::fboss::state::InterfaceFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::map<::std::int16_t, ::facebook::fboss::state::AggregatePortFields>, + ::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::int32_t, ::facebook::fboss::state::InterfaceFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>, - ::apache::thrift::type::map<::apache::thrift::type::i16_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::AggregatePortFields>>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::map<::apache::thrift::type::i32_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::InterfaceFields>>>, Parent> { public: using Self = Path< - ::std::map<::std::int16_t, ::facebook::fboss::state::AggregatePortFields>, + ::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::int32_t, ::facebook::fboss::state::InterfaceFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>, - ::apache::thrift::type::map<::apache::thrift::type::i16_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::AggregatePortFields>>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::map<::apache::thrift::type::i32_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::InterfaceFields>>>, Parent>; - using Child = ChildThriftPath<::facebook::fboss::state::AggregatePortFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Child = ChildThriftPath<::std::map<::std::int32_t, ::facebook::fboss::state::InterfaceFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; using Self::Self; - CONTAINER_CHILD_GETTERS(::std::int16_t); + CONTAINER_CHILD_GETTERS(::facebook::fboss::state::SwitchIdList); }; template -class ChildThriftPath<::facebook::fboss::state::ParticipantInfo, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::phy::LaneMap, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::state::ParticipantInfo, + ::facebook::fboss::phy::LaneMap, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::state::ParticipantInfo>, + ::apache::thrift::type::struct_t<::facebook::fboss::phy::LaneMap>, Parent> { public: using Self = Path< - ::facebook::fboss::state::ParticipantInfo, + ::facebook::fboss::phy::LaneMap, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::state::ParticipantInfo>, + ::apache::thrift::type::struct_t<::facebook::fboss::phy::LaneMap>, Parent>; - using strings = ::facebook::fboss::state::switch_state_tags::strings; + using strings = ::facebook::fboss::phy::phy_tags::strings; template using Child = Path< ChildType, @@ -15566,45 +15166,25 @@ class ChildThriftPath<::facebook::fboss::state::ParticipantInfo, ::facebook::fbo ChildTag, Self >; - using Children = fatal::tuple>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair>, -std::pair>, -std::pair>, -std::pair>>>; - using ChildrenById = fatal::tuple< std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, ChildThriftPath<::std::vector<::std::int16_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::facebook::fboss::state::LacpState, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::state::LacpState>>>>; + using Children = fatal::tuple>, +std::pair>>; + using ChildrenById = fatal::tuple< std::pair, Child<::std::int8_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::byte_t>>, + std::pair, Child<::std::int8_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::byte_t>>>; template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(systemPriority, 1); - STRUCT_CHILD_GETTERS(systemID, 2); - STRUCT_CHILD_GETTERS(key, 3); - STRUCT_CHILD_GETTERS(portPriority, 4); - STRUCT_CHILD_GETTERS(port, 5); - STRUCT_CHILD_GETTERS(state, 6); + STRUCT_CHILD_GETTERS(rx, 1); + STRUCT_CHILD_GETTERS(tx, 2); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return systemPriority(); } - else if constexpr (__id == 2) { return systemID(); } - else if constexpr (__id == 3) { return key(); } - else if constexpr (__id == 4) { return portPriority(); } - else if constexpr (__id == 5) { return port(); } - else if constexpr (__id == 6) { return state(); } + if constexpr (__id == 1) { return rx(); } + else if constexpr (__id == 2) { return tx(); } } template @@ -15613,63 +15193,21 @@ std::pair> } }; -template -class ChildThriftPath<::std::map<::std::string, ::facebook::fboss::state::TeFlowEntryFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : - public Path< - ::std::map<::std::string, ::facebook::fboss::state::TeFlowEntryFields>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>, - ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::TeFlowEntryFields>>, - Parent> { - public: - using Self = Path< - ::std::map<::std::string, ::facebook::fboss::state::TeFlowEntryFields>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>, - ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::TeFlowEntryFields>>, - Parent>; - using Child = ChildThriftPath<::facebook::fboss::state::TeFlowEntryFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; - using Self::Self; - - CONTAINER_CHILD_GETTERS(::std::string); -}; template -class ChildThriftPath<::std::vector<::facebook::fboss::cfg::CabledTestPair>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::cfg::DscpQosMap, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::vector<::facebook::fboss::cfg::CabledTestPair>, + ::facebook::fboss::cfg::DscpQosMap, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::CabledTestPair>>, + ::apache::thrift::type_class::structure, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::DscpQosMap>, Parent> { public: using Self = Path< - ::std::vector<::facebook::fboss::cfg::CabledTestPair>, + ::facebook::fboss::cfg::DscpQosMap, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::CabledTestPair>>, - Parent>; - using Child = ChildThriftPath<::facebook::fboss::cfg::CabledTestPair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; - using Self::Self; - - CONTAINER_CHILD_GETTERS(::std::int32_t); -}; - - -template -class ChildThriftPath<::facebook::fboss::cfg::MirrorDestination, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : - public Path< - ::facebook::fboss::cfg::MirrorDestination, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::MirrorDestination>, - Parent> { - public: - using Self = Path< - ::facebook::fboss::cfg::MirrorDestination, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::MirrorDestination>, + ::apache::thrift::type_class::structure, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::DscpQosMap>, Parent>; using strings = ::facebook::fboss::cfg::switch_config_tags::strings; template @@ -15680,30 +15218,30 @@ class ChildThriftPath<::facebook::fboss::cfg::MirrorDestination, ::facebook::fbo ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>, -std::pair>>; - using ChildrenById = fatal::tuple< std::pair, ChildThriftPath<::facebook::fboss::cfg::MirrorEgressPort, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, ChildThriftPath<::facebook::fboss::cfg::MirrorTunnel, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + using Children = fatal::tuple>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair>>; + using ChildrenById = fatal::tuple< std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, + std::pair, ChildThriftPath<::std::vector<::std::int8_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, Child<::std::int8_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::byte_t>>>; template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(egressPort, 1); - STRUCT_CHILD_GETTERS(ip, 2); - STRUCT_CHILD_GETTERS(tunnel, 3); + STRUCT_CHILD_GETTERS(internalTrafficClass, 1); + STRUCT_CHILD_GETTERS(fromDscpToTrafficClass, 2); + STRUCT_CHILD_GETTERS(fromTrafficClassToDscp, 3); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return egressPort(); } - else if constexpr (__id == 2) { return ip(); } - else if constexpr (__id == 3) { return tunnel(); } + if constexpr (__id == 1) { return internalTrafficClass(); } + else if constexpr (__id == 2) { return fromDscpToTrafficClass(); } + else if constexpr (__id == 3) { return fromTrafficClassToDscp(); } } template @@ -15713,169 +15251,292 @@ std::pair }; template -class ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::string, ::facebook::fboss::state::TeFlowEntryFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::vector<::facebook::fboss::cfg::ActiveQueueManagement>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::string, ::facebook::fboss::state::TeFlowEntryFields>>, + ::std::vector<::facebook::fboss::cfg::ActiveQueueManagement>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>>, - ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::TeFlowEntryFields>>>, + ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::ActiveQueueManagement>>, Parent> { public: using Self = Path< - ::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::string, ::facebook::fboss::state::TeFlowEntryFields>>, + ::std::vector<::facebook::fboss::cfg::ActiveQueueManagement>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>>, - ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::TeFlowEntryFields>>>, + ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::ActiveQueueManagement>>, Parent>; - using Child = ChildThriftPath<::std::map<::std::string, ::facebook::fboss::state::TeFlowEntryFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Child = ChildThriftPath<::facebook::fboss::cfg::ActiveQueueManagement, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; using Self::Self; - CONTAINER_CHILD_GETTERS(::facebook::fboss::state::SwitchIdList); + CONTAINER_CHILD_GETTERS(::std::int32_t); }; + template -class ChildThriftPath<::std::vector<::std::int16_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::cfg::AclTable, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::vector<::std::int16_t>, + ::facebook::fboss::cfg::AclTable, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::integral>, - ::apache::thrift::type::list<::apache::thrift::type::i16_t>, + ::apache::thrift::type_class::structure, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::AclTable>, Parent> { public: using Self = Path< - ::std::vector<::std::int16_t>, + ::facebook::fboss::cfg::AclTable, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::integral>, - ::apache::thrift::type::list<::apache::thrift::type::i16_t>, + ::apache::thrift::type_class::structure, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::AclTable>, Parent>; - using Child = Path<::std::int16_t, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t, Self>; + using strings = ::facebook::fboss::cfg::switch_config_tags::strings; + template + using Child = Path< + ChildType, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ChildTC, + ChildTag, + Self + >; + using Children = fatal::tuple>, +std::pair>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + using ChildrenById = fatal::tuple< std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, + std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::AclEntry>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::AclTableActionType>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::AclTableQualifier>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::vector<::std::string>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + template + using NameToId = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>>::template type_of; + + template + using TypeFor = typename Children::template type_of; using Self::Self; + + STRUCT_CHILD_GETTERS(name, 1); + STRUCT_CHILD_GETTERS(priority, 2); + STRUCT_CHILD_GETTERS(aclEntries, 3); + STRUCT_CHILD_GETTERS(actionTypes, 4); + STRUCT_CHILD_GETTERS(qualifiers, 5); + STRUCT_CHILD_GETTERS(udfGroups, 6); - CONTAINER_CHILD_GETTERS(::std::int32_t); + template + auto operator()(const std::integral_constant&) { + if constexpr (__id == 1) { return name(); } + else if constexpr (__id == 2) { return priority(); } + else if constexpr (__id == 3) { return aclEntries(); } + else if constexpr (__id == 4) { return actionTypes(); } + else if constexpr (__id == 5) { return qualifiers(); } + else if constexpr (__id == 6) { return udfGroups(); } + } + + template + auto operator()(const fatal::sequence&) { + return operator()(NameToId>()); + } }; + template -class ChildThriftPath<::std::map<::std::string, ::facebook::fboss::state::IpTunnelFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::cfg::ExpQosMap, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::map<::std::string, ::facebook::fboss::state::IpTunnelFields>, + ::facebook::fboss::cfg::ExpQosMap, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>, - ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::IpTunnelFields>>, + ::apache::thrift::type_class::structure, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::ExpQosMap>, Parent> { public: using Self = Path< - ::std::map<::std::string, ::facebook::fboss::state::IpTunnelFields>, + ::facebook::fboss::cfg::ExpQosMap, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>, - ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::IpTunnelFields>>, + ::apache::thrift::type_class::structure, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::ExpQosMap>, Parent>; - using Child = ChildThriftPath<::facebook::fboss::state::IpTunnelFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using strings = ::facebook::fboss::cfg::switch_config_tags::strings; + template + using Child = Path< + ChildType, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ChildTC, + ChildTag, + Self + >; + using Children = fatal::tuple>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair>>; + using ChildrenById = fatal::tuple< std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, + std::pair, ChildThriftPath<::std::vector<::std::int8_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, Child<::std::int8_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::byte_t>>>; + template + using NameToId = fatal::tuple>, +std::pair>, +std::pair>>::template type_of; + + template + using TypeFor = typename Children::template type_of; using Self::Self; + + STRUCT_CHILD_GETTERS(internalTrafficClass, 1); + STRUCT_CHILD_GETTERS(fromExpToTrafficClass, 2); + STRUCT_CHILD_GETTERS(fromTrafficClassToExp, 3); - CONTAINER_CHILD_GETTERS(::std::string); + template + auto operator()(const std::integral_constant&) { + if constexpr (__id == 1) { return internalTrafficClass(); } + else if constexpr (__id == 2) { return fromExpToTrafficClass(); } + else if constexpr (__id == 3) { return fromTrafficClassToExp(); } + } + + template + auto operator()(const fatal::sequence&) { + return operator()(NameToId>()); + } }; template -class ChildThriftPath<::std::map<::std::string, ::facebook::fboss::state::SflowCollectorFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::int16_t, ::facebook::fboss::state::VlanFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::map<::std::string, ::facebook::fboss::state::SflowCollectorFields>, + ::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::int16_t, ::facebook::fboss::state::VlanFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>, - ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::SflowCollectorFields>>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::map<::apache::thrift::type::i16_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::VlanFields>>>, Parent> { public: using Self = Path< - ::std::map<::std::string, ::facebook::fboss::state::SflowCollectorFields>, + ::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::int16_t, ::facebook::fboss::state::VlanFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>, - ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::SflowCollectorFields>>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::map<::apache::thrift::type::i16_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::VlanFields>>>, Parent>; - using Child = ChildThriftPath<::facebook::fboss::state::SflowCollectorFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Child = ChildThriftPath<::std::map<::std::int16_t, ::facebook::fboss::state::VlanFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; using Self::Self; - CONTAINER_CHILD_GETTERS(::std::string); + CONTAINER_CHILD_GETTERS(::facebook::fboss::state::SwitchIdList); }; template -class ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::string, ::facebook::fboss::state::SflowCollectorFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::vector<::facebook::fboss::cfg::StaticMplsRouteWithNextHops>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::string, ::facebook::fboss::state::SflowCollectorFields>>, + ::std::vector<::facebook::fboss::cfg::StaticMplsRouteWithNextHops>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>>, - ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::SflowCollectorFields>>>, + ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::StaticMplsRouteWithNextHops>>, Parent> { public: using Self = Path< - ::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::string, ::facebook::fboss::state::SflowCollectorFields>>, + ::std::vector<::facebook::fboss::cfg::StaticMplsRouteWithNextHops>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>>, - ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::SflowCollectorFields>>>, + ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::StaticMplsRouteWithNextHops>>, Parent>; - using Child = ChildThriftPath<::std::map<::std::string, ::facebook::fboss::state::SflowCollectorFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Child = ChildThriftPath<::facebook::fboss::cfg::StaticMplsRouteWithNextHops, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; using Self::Self; - CONTAINER_CHILD_GETTERS(::facebook::fboss::state::SwitchIdList); + CONTAINER_CHILD_GETTERS(::std::int32_t); }; template -class ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::int64_t, ::facebook::fboss::cfg::DsfNode>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::vector<::std::int32_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::int64_t, ::facebook::fboss::cfg::DsfNode>>, + ::std::vector<::std::int32_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>>, - ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::map<::apache::thrift::type::i64_t, ::apache::thrift::type::struct_t<::facebook::fboss::cfg::DsfNode>>>, + ::apache::thrift::type_class::list<::apache::thrift::type_class::integral>, + ::apache::thrift::type::list<::apache::thrift::type::i32_t>, Parent> { public: using Self = Path< - ::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::int64_t, ::facebook::fboss::cfg::DsfNode>>, + ::std::vector<::std::int32_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>>, - ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::map<::apache::thrift::type::i64_t, ::apache::thrift::type::struct_t<::facebook::fboss::cfg::DsfNode>>>, + ::apache::thrift::type_class::list<::apache::thrift::type_class::integral>, + ::apache::thrift::type::list<::apache::thrift::type::i32_t>, Parent>; - using Child = ChildThriftPath<::std::map<::std::int64_t, ::facebook::fboss::cfg::DsfNode>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Child = Path<::std::int32_t, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t, Self>; using Self::Self; - CONTAINER_CHILD_GETTERS(::facebook::fboss::state::SwitchIdList); + CONTAINER_CHILD_GETTERS(::std::int32_t); }; + template -class ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::int32_t, ::facebook::fboss::state::LabelForwardingEntryFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::cfg::L4PortRange, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::int32_t, ::facebook::fboss::state::LabelForwardingEntryFields>>, + ::facebook::fboss::cfg::L4PortRange, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>>, - ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::map<::apache::thrift::type::i32_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::LabelForwardingEntryFields>>>, + ::apache::thrift::type_class::structure, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::L4PortRange>, Parent> { public: using Self = Path< - ::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::int32_t, ::facebook::fboss::state::LabelForwardingEntryFields>>, + ::facebook::fboss::cfg::L4PortRange, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>>, - ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::map<::apache::thrift::type::i32_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::LabelForwardingEntryFields>>>, + ::apache::thrift::type_class::structure, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::L4PortRange>, Parent>; - using Child = ChildThriftPath<::std::map<::std::int32_t, ::facebook::fboss::state::LabelForwardingEntryFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using strings = ::facebook::fboss::cfg::switch_config_tags::strings; + template + using Child = Path< + ChildType, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ChildTC, + ChildTag, + Self + >; + using Children = fatal::tuple>, +std::pair>, +std::pair>>; + using ChildrenById = fatal::tuple< std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child>>; + template + using NameToId = fatal::tuple>, +std::pair>, +std::pair>>::template type_of; + + template + using TypeFor = typename Children::template type_of; using Self::Self; + + STRUCT_CHILD_GETTERS(min, 1); + STRUCT_CHILD_GETTERS(max, 2); + STRUCT_CHILD_GETTERS(invert, 3); - CONTAINER_CHILD_GETTERS(::facebook::fboss::state::SwitchIdList); + template + auto operator()(const std::integral_constant&) { + if constexpr (__id == 1) { return min(); } + else if constexpr (__id == 2) { return max(); } + else if constexpr (__id == 3) { return invert(); } + } + + template + auto operator()(const fatal::sequence&) { + return operator()(NameToId>()); + } }; template -class ChildThriftPath<::facebook::fboss::state::AclTtl, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::cfg::StaticMplsRouteWithNextHops, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::state::AclTtl, + ::facebook::fboss::cfg::StaticMplsRouteWithNextHops, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::state::AclTtl>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::StaticMplsRouteWithNextHops>, Parent> { public: using Self = Path< - ::facebook::fboss::state::AclTtl, + ::facebook::fboss::cfg::StaticMplsRouteWithNextHops, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::state::AclTtl>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::StaticMplsRouteWithNextHops>, Parent>; - using strings = ::facebook::fboss::state::switch_state_tags::strings; + using strings = ::facebook::fboss::cfg::switch_config_tags::strings; template using Child = Path< ChildType, @@ -15884,25 +15545,25 @@ class ChildThriftPath<::facebook::fboss::state::AclTtl, ::facebook::fboss::fsdb: ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>>; - using ChildrenById = fatal::tuple< std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, - std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>>; + using Children = fatal::tuple>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + using ChildrenById = fatal::tuple< std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, ChildThriftPath<::std::vector<::facebook::fboss::NextHopThrift>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; template - using NameToId = fatal::tuple>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(value, 1); - STRUCT_CHILD_GETTERS(mask, 2); + STRUCT_CHILD_GETTERS(ingressLabel, 1); + STRUCT_CHILD_GETTERS(nexthops, 2); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return value(); } - else if constexpr (__id == 2) { return mask(); } + if constexpr (__id == 1) { return ingressLabel(); } + else if constexpr (__id == 2) { return nexthops(); } } template @@ -15911,42 +15572,21 @@ std::pair>> } }; -template -class ChildThriftPath<::std::vector<::facebook::fboss::state::BlockedMacAddress>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : - public Path< - ::std::vector<::facebook::fboss::state::BlockedMacAddress>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::state::BlockedMacAddress>>, - Parent> { - public: - using Self = Path< - ::std::vector<::facebook::fboss::state::BlockedMacAddress>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::state::BlockedMacAddress>>, - Parent>; - using Child = ChildThriftPath<::facebook::fboss::state::BlockedMacAddress, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; - using Self::Self; - - CONTAINER_CHILD_GETTERS(::std::int32_t); -}; - template -class ChildThriftPath<::facebook::fboss::state::RouteFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::state::AclTableGroupFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::state::RouteFields, + ::facebook::fboss::state::AclTableGroupFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::state::RouteFields>, + ::apache::thrift::type::struct_t<::facebook::fboss::state::AclTableGroupFields>, Parent> { public: using Self = Path< - ::facebook::fboss::state::RouteFields, + ::facebook::fboss::state::AclTableGroupFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::state::RouteFields>, + ::apache::thrift::type::struct_t<::facebook::fboss::state::AclTableGroupFields>, Parent>; using strings = ::facebook::fboss::state::switch_state_tags::strings; template @@ -15957,40 +15597,30 @@ class ChildThriftPath<::facebook::fboss::state::RouteFields, ::facebook::fboss:: ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>, -std::pair>>>; - using ChildrenById = fatal::tuple< std::pair, ChildThriftPath<::facebook::fboss::state::RoutePrefix, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::facebook::fboss::state::RouteNextHopsMulti, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::facebook::fboss::state::RouteNextHopEntry, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::facebook::fboss::cfg::AclLookupClass, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::AclLookupClass>>>>; + using Children = fatal::tuple>>, +std::pair>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + using ChildrenById = fatal::tuple< std::pair, Child<::facebook::fboss::cfg::AclStage, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::AclStage>>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, ChildThriftPath<::std::map<::std::string, ::facebook::fboss::state::AclTableFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(prefix, 1); - STRUCT_CHILD_GETTERS(nexthopsmulti, 2); - STRUCT_CHILD_GETTERS(fwd, 3); - STRUCT_CHILD_GETTERS(flags, 4); - STRUCT_CHILD_GETTERS(classID, 5); + STRUCT_CHILD_GETTERS(stage, 1); + STRUCT_CHILD_GETTERS(name, 2); + STRUCT_CHILD_GETTERS(aclTableMap, 3); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return prefix(); } - else if constexpr (__id == 2) { return nexthopsmulti(); } - else if constexpr (__id == 3) { return fwd(); } - else if constexpr (__id == 4) { return flags(); } - else if constexpr (__id == 5) { return classID(); } + if constexpr (__id == 1) { return stage(); } + else if constexpr (__id == 2) { return name(); } + else if constexpr (__id == 3) { return aclTableMap(); } } template @@ -16000,127 +15630,205 @@ std::pair -class ChildThriftPath<::std::map<::std::int16_t, bool>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::vector<::facebook::fboss::state::PortPgFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::map<::std::int16_t, bool>, + ::std::vector<::facebook::fboss::state::PortPgFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::integral>, - ::apache::thrift::type::map<::apache::thrift::type::i16_t, ::apache::thrift::type::bool_t>, + ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::state::PortPgFields>>, Parent> { public: using Self = Path< - ::std::map<::std::int16_t, bool>, + ::std::vector<::facebook::fboss::state::PortPgFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::integral>, - ::apache::thrift::type::map<::apache::thrift::type::i16_t, ::apache::thrift::type::bool_t>, + ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::state::PortPgFields>>, Parent>; - using Child = Path; + using Child = ChildThriftPath<::facebook::fboss::state::PortPgFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; using Self::Self; - CONTAINER_CHILD_GETTERS(::std::int16_t); + CONTAINER_CHILD_GETTERS(::std::int32_t); }; template -class ChildThriftPath<::std::vector<::facebook::fboss::cfg::Port>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::vector<::facebook::fboss::cfg::StaticMplsRouteNoNextHops>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::vector<::facebook::fboss::cfg::Port>, + ::std::vector<::facebook::fboss::cfg::StaticMplsRouteNoNextHops>, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::Port>>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::StaticMplsRouteNoNextHops>>, Parent> { public: using Self = Path< - ::std::vector<::facebook::fboss::cfg::Port>, + ::std::vector<::facebook::fboss::cfg::StaticMplsRouteNoNextHops>, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::Port>>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::StaticMplsRouteNoNextHops>>, Parent>; - using Child = ChildThriftPath<::facebook::fboss::cfg::Port, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Child = ChildThriftPath<::facebook::fboss::cfg::StaticMplsRouteNoNextHops, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; using Self::Self; CONTAINER_CHILD_GETTERS(::std::int32_t); }; + template -class ChildThriftPath<::std::map<::std::int32_t, bool>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::cfg::StaticMplsRouteNoNextHops, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::map<::std::int32_t, bool>, + ::facebook::fboss::cfg::StaticMplsRouteNoNextHops, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::integral>, - ::apache::thrift::type::map<::apache::thrift::type::i32_t, ::apache::thrift::type::bool_t>, + ::apache::thrift::type_class::structure, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::StaticMplsRouteNoNextHops>, Parent> { public: using Self = Path< - ::std::map<::std::int32_t, bool>, + ::facebook::fboss::cfg::StaticMplsRouteNoNextHops, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::integral>, - ::apache::thrift::type::map<::apache::thrift::type::i32_t, ::apache::thrift::type::bool_t>, + ::apache::thrift::type_class::structure, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::StaticMplsRouteNoNextHops>, Parent>; - using Child = Path; + using strings = ::facebook::fboss::cfg::switch_config_tags::strings; + template + using Child = Path< + ChildType, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ChildTC, + ChildTag, + Self + >; + using Children = fatal::tuple>>; + using ChildrenById = fatal::tuple< std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>>; + template + using NameToId = fatal::tuple>>::template type_of; + + template + using TypeFor = typename Children::template type_of; using Self::Self; + + STRUCT_CHILD_GETTERS(ingressLabel, 1); - CONTAINER_CHILD_GETTERS(::std::int32_t); + template + auto operator()(const std::integral_constant&) { + if constexpr (__id == 1) { return ingressLabel(); } + } + + template + auto operator()(const fatal::sequence&) { + return operator()(NameToId>()); + } }; + template -class ChildThriftPath<::std::map<::std::int16_t, ::facebook::fboss::state::VlanFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::VendorConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::map<::std::int16_t, ::facebook::fboss::state::VlanFields>, + ::facebook::fboss::VendorConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>, - ::apache::thrift::type::map<::apache::thrift::type::i16_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::VlanFields>>, + ::apache::thrift::type_class::structure, + ::apache::thrift::type::struct_t<::facebook::fboss::VendorConfig>, Parent> { public: using Self = Path< - ::std::map<::std::int16_t, ::facebook::fboss::state::VlanFields>, + ::facebook::fboss::VendorConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>, - ::apache::thrift::type::map<::apache::thrift::type::i16_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::VlanFields>>, + ::apache::thrift::type_class::structure, + ::apache::thrift::type::struct_t<::facebook::fboss::VendorConfig>, Parent>; - using Child = ChildThriftPath<::facebook::fboss::state::VlanFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; - using Self::Self; + using strings = ::facebook::fboss::transceiver_validation_tags::strings; + template + using Child = Path< + ChildType, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ChildTC, + ChildTag, + Self + >; + using Children = fatal::tuple>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + using ChildrenById = fatal::tuple< std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, ChildThriftPath, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + template + using NameToId = fatal::tuple>, +std::pair>>::template type_of; - CONTAINER_CHILD_GETTERS(::std::int16_t); -}; + template + using TypeFor = typename Children::template type_of; + using Self::Self; + + STRUCT_CHILD_GETTERS(vendorName, 1); + STRUCT_CHILD_GETTERS(partNumberToTransceiverAttributes, 2); + + template + auto operator()(const std::integral_constant&) { + if constexpr (__id == 1) { return vendorName(); } + else if constexpr (__id == 2) { return partNumberToTransceiverAttributes(); } + } + + template + auto operator()(const fatal::sequence&) { + return operator()(NameToId>()); + } +}; template -class ChildThriftPath<::std::map<::std::string, ::facebook::fboss::state::VlanInfo>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::vector<::facebook::fboss::PortQueueFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::map<::std::string, ::facebook::fboss::state::VlanInfo>, + ::std::vector<::facebook::fboss::PortQueueFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>, - ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::VlanInfo>>, + ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::PortQueueFields>>, Parent> { public: using Self = Path< - ::std::map<::std::string, ::facebook::fboss::state::VlanInfo>, + ::std::vector<::facebook::fboss::PortQueueFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>, - ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::VlanInfo>>, + ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::PortQueueFields>>, Parent>; - using Child = ChildThriftPath<::facebook::fboss::state::VlanInfo, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Child = ChildThriftPath<::facebook::fboss::PortQueueFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; using Self::Self; - CONTAINER_CHILD_GETTERS(::std::string); + CONTAINER_CHILD_GETTERS(::std::int32_t); +}; + +template +class ChildThriftPath<::std::vector<::facebook::fboss::cfg::AclEntry>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : + public Path< + ::std::vector<::facebook::fboss::cfg::AclEntry>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::AclEntry>>, + Parent> { + public: + using Self = Path< + ::std::vector<::facebook::fboss::cfg::AclEntry>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::AclEntry>>, + Parent>; + using Child = ChildThriftPath<::facebook::fboss::cfg::AclEntry, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Self::Self; + + CONTAINER_CHILD_GETTERS(::std::int32_t); }; template -class ChildThriftPath<::facebook::fboss::phy::PhyState, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::cfg::Interface, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::phy::PhyState, + ::facebook::fboss::cfg::Interface, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::phy::PhyState>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::Interface>, Parent> { public: using Self = Path< - ::facebook::fboss::phy::PhyState, + ::facebook::fboss::cfg::Interface, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::phy::PhyState>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::Interface>, Parent>; - using strings = ::facebook::fboss::phy::phy_tags::strings; + using strings = ::facebook::fboss::cfg::switch_config_tags::strings; template using Child = Path< ChildType, @@ -16129,60 +15837,95 @@ class ChildThriftPath<::facebook::fboss::phy::PhyState, ::facebook::fboss::fsdb: ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>, -std::pair>>, + using Children = fatal::tuple>, +std::pair>, +std::pair>, std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>>; - using ChildrenById = fatal::tuple< std::pair, ChildThriftPath<::facebook::fboss::phy::DataPlanePhyChip, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::facebook::fboss::phy::PhyFwVersion, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, Child<::facebook::fboss::cfg::PortSpeed, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::PortSpeed>>>, +std::pair>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>>, +std::pair>, +std::pair>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair>>>; + using ChildrenById = fatal::tuple< std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, Child>, - std::pair, ChildThriftPath<::facebook::fboss::phy::PhySideState, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::facebook::fboss::phy::PhySideState, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, ChildThriftPath<::std::vector<::std::string>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::facebook::fboss::cfg::NdpConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>>; + std::pair, Child>, + std::pair, Child>, + std::pair, Child<::facebook::fboss::cfg::InterfaceType, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::InterfaceType>>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, ChildThriftPath<::std::map<::std::string, ::std::string>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::map<::std::string, ::std::string>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, Child<::facebook::fboss::cfg::Scope, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::Scope>>>>; template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>, + using NameToId = fatal::tuple>, +std::pair>, +std::pair>, std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>>::template type_of; +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(phyChip, 1); - STRUCT_CHILD_GETTERS(fwVersion, 2); - STRUCT_CHILD_GETTERS(speed, 3); + STRUCT_CHILD_GETTERS(intfID, 1); + STRUCT_CHILD_GETTERS(routerID, 2); + STRUCT_CHILD_GETTERS(vlanID, 3); STRUCT_CHILD_GETTERS(name, 4); - STRUCT_CHILD_GETTERS(linkState, 5); - STRUCT_CHILD_GETTERS(system, 6); - STRUCT_CHILD_GETTERS(line, 7); - STRUCT_CHILD_GETTERS(switchID, 8); - STRUCT_CHILD_GETTERS(timeCollected, 9); + STRUCT_CHILD_GETTERS(mac, 5); + STRUCT_CHILD_GETTERS(ipAddresses, 6); + STRUCT_CHILD_GETTERS(ndp, 7); + STRUCT_CHILD_GETTERS(mtu, 8); + STRUCT_CHILD_GETTERS(isVirtual, 9); + STRUCT_CHILD_GETTERS(isStateSyncDisabled, 10); + STRUCT_CHILD_GETTERS(type, 11); + STRUCT_CHILD_GETTERS(dhcpRelayAddressV4, 12); + STRUCT_CHILD_GETTERS(dhcpRelayAddressV6, 13); + STRUCT_CHILD_GETTERS(dhcpRelayOverridesV4, 14); + STRUCT_CHILD_GETTERS(dhcpRelayOverridesV6, 15); + STRUCT_CHILD_GETTERS(scope, 16); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return phyChip(); } - else if constexpr (__id == 2) { return fwVersion(); } - else if constexpr (__id == 3) { return speed(); } + if constexpr (__id == 1) { return intfID(); } + else if constexpr (__id == 2) { return routerID(); } + else if constexpr (__id == 3) { return vlanID(); } else if constexpr (__id == 4) { return name(); } - else if constexpr (__id == 5) { return linkState(); } - else if constexpr (__id == 6) { return system(); } - else if constexpr (__id == 7) { return line(); } - else if constexpr (__id == 8) { return switchID(); } - else if constexpr (__id == 9) { return timeCollected(); } + else if constexpr (__id == 5) { return mac(); } + else if constexpr (__id == 6) { return ipAddresses(); } + else if constexpr (__id == 7) { return ndp(); } + else if constexpr (__id == 8) { return mtu(); } + else if constexpr (__id == 9) { return isVirtual(); } + else if constexpr (__id == 10) { return isStateSyncDisabled(); } + else if constexpr (__id == 11) { return type(); } + else if constexpr (__id == 12) { return dhcpRelayAddressV4(); } + else if constexpr (__id == 13) { return dhcpRelayAddressV6(); } + else if constexpr (__id == 14) { return dhcpRelayOverridesV4(); } + else if constexpr (__id == 15) { return dhcpRelayOverridesV6(); } + else if constexpr (__id == 16) { return scope(); } } template @@ -16192,85 +15935,64 @@ std::pair -class ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::facebook::fboss::cfg::AclStage, ::facebook::fboss::state::AclTableGroupFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : - public Path< - ::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::facebook::fboss::cfg::AclStage, ::facebook::fboss::state::AclTableGroupFields>>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::map<::apache::thrift::type_class::enumeration, ::apache::thrift::type_class::structure>>, - ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::map<::apache::thrift::type::enum_t<::facebook::fboss::cfg::AclStage>, ::apache::thrift::type::struct_t<::facebook::fboss::state::AclTableGroupFields>>>, - Parent> { - public: - using Self = Path< - ::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::facebook::fboss::cfg::AclStage, ::facebook::fboss::state::AclTableGroupFields>>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::map<::apache::thrift::type_class::enumeration, ::apache::thrift::type_class::structure>>, - ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::map<::apache::thrift::type::enum_t<::facebook::fboss::cfg::AclStage>, ::apache::thrift::type::struct_t<::facebook::fboss::state::AclTableGroupFields>>>, - Parent>; - using Child = ChildThriftPath<::std::map<::facebook::fboss::cfg::AclStage, ::facebook::fboss::state::AclTableGroupFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; - using Self::Self; - - CONTAINER_CHILD_GETTERS(::facebook::fboss::state::SwitchIdList); -}; - -template -class ChildThriftPath<::std::map<::std::string, ::facebook::fboss::state::NeighborEntryFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::map<::std::int16_t, ::std::int64_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::map<::std::string, ::facebook::fboss::state::NeighborEntryFields>, + ::std::map<::std::int16_t, ::std::int64_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>, - ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::NeighborEntryFields>>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::integral>, + ::apache::thrift::type::map<::apache::thrift::type::i16_t, ::apache::thrift::type::i64_t>, Parent> { public: using Self = Path< - ::std::map<::std::string, ::facebook::fboss::state::NeighborEntryFields>, + ::std::map<::std::int16_t, ::std::int64_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>, - ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::NeighborEntryFields>>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::integral>, + ::apache::thrift::type::map<::apache::thrift::type::i16_t, ::apache::thrift::type::i64_t>, Parent>; - using Child = ChildThriftPath<::facebook::fboss::state::NeighborEntryFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Child = Path<::std::int64_t, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::integral, ::apache::thrift::type::i64_t, Self>; using Self::Self; - CONTAINER_CHILD_GETTERS(::std::string); + CONTAINER_CHILD_GETTERS(::std::int16_t); }; template -class ChildThriftPath<::std::map<::std::string, ::facebook::fboss::state::AclTableFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::map<::std::int32_t, ::std::int32_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::map<::std::string, ::facebook::fboss::state::AclTableFields>, + ::std::map<::std::int32_t, ::std::int32_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>, - ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::AclTableFields>>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::integral>, + ::apache::thrift::type::map<::apache::thrift::type::i32_t, ::apache::thrift::type::i32_t>, Parent> { public: using Self = Path< - ::std::map<::std::string, ::facebook::fboss::state::AclTableFields>, + ::std::map<::std::int32_t, ::std::int32_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>, - ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::AclTableFields>>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::integral>, + ::apache::thrift::type::map<::apache::thrift::type::i32_t, ::apache::thrift::type::i32_t>, Parent>; - using Child = ChildThriftPath<::facebook::fboss::state::AclTableFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Child = Path<::std::int32_t, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t, Self>; using Self::Self; - CONTAINER_CHILD_GETTERS(::std::string); + CONTAINER_CHILD_GETTERS(::std::int32_t); }; template -class ChildThriftPath<::facebook::fboss::state::PortFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::cfg::Port, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::state::PortFields, + ::facebook::fboss::cfg::Port, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::state::PortFields>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::Port>, Parent> { public: using Self = Path< - ::facebook::fboss::state::PortFields, + ::facebook::fboss::cfg::Port, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::state::PortFields>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::Port>, Parent>; - using strings = ::facebook::fboss::state::switch_state_tags::strings; + using strings = ::facebook::fboss::cfg::switch_config_tags::strings; template using Child = Path< ChildType, @@ -16279,280 +16001,170 @@ class ChildThriftPath<::facebook::fboss::state::PortFields, ::facebook::fboss::f ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, + using Children = fatal::tuple>, +std::pair>>, +std::pair>, +std::pair>, +std::pair>>, +std::pair>, std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair>, -std::pair>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair>, +std::pair>>, +std::pair>, +std::pair>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair>, +std::pair>, +std::pair>, +std::pair>>, std::pair>, std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair>>, +std::pair>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair>>, std::pair>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, std::pair>>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair>, -std::pair>, -std::pair>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, std::pair>>, std::pair>, -std::pair>, -std::pair>>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, std::pair>>, -std::pair>, +std::pair>, std::pair>>; using ChildrenById = fatal::tuple< std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, Child>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, Child>, - std::pair, Child>, - std::pair, ChildThriftPath<::std::map<::std::string, ::facebook::fboss::state::VlanInfo>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, ChildThriftPath<::std::vector<::facebook::fboss::PortQueueFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, Child<::facebook::fboss::cfg::PortState, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::PortState>>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::facebook::fboss::cfg::ParserType, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::ParserType>>>, + std::pair, Child>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::facebook::fboss::cfg::PortSpeed, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::PortSpeed>>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::PortQueue>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::facebook::fboss::cfg::PortPause, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, Child<::std::int64_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i64_t>>, + std::pair, Child<::std::int64_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i64_t>>, + std::pair, Child<::facebook::fboss::cfg::PortLoopbackMode, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::PortLoopbackMode>>>, std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::AclLookupClass>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, ChildThriftPath<::facebook::fboss::cfg::PortPfc, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::vector<::facebook::fboss::state::PortPgFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::facebook::fboss::phy::ProfileSideConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::vector<::facebook::fboss::phy::PinConfig>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::facebook::fboss::phy::ProfileSideConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::vector<::facebook::fboss::phy::PinConfig>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, Child<::facebook::fboss::cfg::PortType, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::PortType>>>, - std::pair, ChildThriftPath<::facebook::fboss::phy::LinkFaultStatus, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::facebook::fboss::phy::PortPrbsState, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::facebook::fboss::phy::PortPrbsState, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::facebook::fboss::phy::PortPrbsState, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::vector<::std::int16_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::map<::facebook::fboss::cfg::LLDPTag, ::std::string>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::vector<::facebook::fboss::state::RxSak>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::facebook::fboss::mka::MKASak, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, Child>, - std::pair, Child>, - std::pair, ChildThriftPath<::std::vector<::std::int32_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::PortNeighbor>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, Child<::facebook::fboss::cfg::PortDrainState, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::PortDrainState>>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, ChildThriftPath<::facebook::fboss::state::PortFlowletFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, Child<::facebook::fboss::PortLedExternalState, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::PortLedExternalState>>>, - std::pair, Child>, - std::pair, Child>, - std::pair, Child>, - std::pair, Child>, - std::pair, Child>, - std::pair, ChildThriftPath<::std::vector<::facebook::fboss::PortError>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, Child<::facebook::fboss::cfg::Scope, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::Scope>>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child>>; + std::pair, ChildThriftPath<::std::map<::facebook::fboss::cfg::LLDPTag, ::std::string>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, Child<::facebook::fboss::cfg::SampleDestination, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::SampleDestination>>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::AclLookupClass>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, Child<::facebook::fboss::cfg::PortProfileID, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::PortProfileID>>>, + std::pair, ChildThriftPath<::facebook::fboss::cfg::PortPfc, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::vector<::std::string>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, Child<::facebook::fboss::cfg::PortType, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::PortType>>>, + std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::PortNeighbor>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, Child<::facebook::fboss::cfg::PortDrainState, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::PortDrainState>>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, Child<::facebook::fboss::cfg::Scope, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::Scope>>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, Child>>; template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(portId, 1); - STRUCT_CHILD_GETTERS(portName, 2); - STRUCT_CHILD_GETTERS(portDescription, 3); - STRUCT_CHILD_GETTERS(portState, 4); - STRUCT_CHILD_GETTERS(portOperState, 5); - STRUCT_CHILD_GETTERS(ingressVlan, 6); - STRUCT_CHILD_GETTERS(portSpeed, 7); - STRUCT_CHILD_GETTERS(rxPause, 10); - STRUCT_CHILD_GETTERS(txPause, 11); - STRUCT_CHILD_GETTERS(vlanMemberShips, 12); - STRUCT_CHILD_GETTERS(sFlowIngressRate, 13); - STRUCT_CHILD_GETTERS(sFlowEgressRate, 14); - STRUCT_CHILD_GETTERS(queues, 15); - STRUCT_CHILD_GETTERS(portLoopbackMode, 16); - STRUCT_CHILD_GETTERS(ingressMirror, 17); - STRUCT_CHILD_GETTERS(egressMirror, 18); - STRUCT_CHILD_GETTERS(qosPolicy, 19); - STRUCT_CHILD_GETTERS(sampleDest, 20); - STRUCT_CHILD_GETTERS(portProfileID, 21); - STRUCT_CHILD_GETTERS(lookupClassesToDistrubuteTrafficOn, 22); - STRUCT_CHILD_GETTERS(maxFrameSize, 23); - STRUCT_CHILD_GETTERS(pfc, 24); - STRUCT_CHILD_GETTERS(pgConfigs, 25); - STRUCT_CHILD_GETTERS(profileConfig, 26); - STRUCT_CHILD_GETTERS(pinConfigs, 27); - STRUCT_CHILD_GETTERS(lineProfileConfig, 28); - STRUCT_CHILD_GETTERS(linePinConfigs, 29); - STRUCT_CHILD_GETTERS(portType, 30); - STRUCT_CHILD_GETTERS(iPhyLinkFaultStatus, 31); - STRUCT_CHILD_GETTERS(asicPrbs, 32); - STRUCT_CHILD_GETTERS(gbSystemPrbs, 33); - STRUCT_CHILD_GETTERS(gbLinePrbs, 34); - STRUCT_CHILD_GETTERS(pfcPriorities, 35); - STRUCT_CHILD_GETTERS(expectedLLDPValues, 36); - STRUCT_CHILD_GETTERS(rxSecureAssociationKeys, 37); - STRUCT_CHILD_GETTERS(txSecureAssociationKey, 38); - STRUCT_CHILD_GETTERS(macsecDesired, 39); - STRUCT_CHILD_GETTERS(dropUnencrypted, 40); - STRUCT_CHILD_GETTERS(interfaceIDs, 41); - STRUCT_CHILD_GETTERS(expectedNeighborReachability, 42); - STRUCT_CHILD_GETTERS(drainState, 43); - STRUCT_CHILD_GETTERS(flowletConfigName, 44); - STRUCT_CHILD_GETTERS(flowletConfig, 45); - STRUCT_CHILD_GETTERS(portLedExternalState, 46); - STRUCT_CHILD_GETTERS(rxLaneSquelch, 47); - STRUCT_CHILD_GETTERS(zeroPreemphasis, 48); - STRUCT_CHILD_GETTERS(portActiveState, 49); - STRUCT_CHILD_GETTERS(disableTTLDecrement, 50); - STRUCT_CHILD_GETTERS(txEnable, 51); - STRUCT_CHILD_GETTERS(activeErrors, 52); - STRUCT_CHILD_GETTERS(scope, 53); - STRUCT_CHILD_GETTERS(reachabilityGroupId, 54); - STRUCT_CHILD_GETTERS(conditionalEntropyRehash, 55); + STRUCT_CHILD_GETTERS(logicalID, 1); + STRUCT_CHILD_GETTERS(state, 2); + STRUCT_CHILD_GETTERS(minFrameSize, 3); + STRUCT_CHILD_GETTERS(maxFrameSize, 4); + STRUCT_CHILD_GETTERS(parserType, 5); + STRUCT_CHILD_GETTERS(routable, 6); + STRUCT_CHILD_GETTERS(ingressVlan, 7); + STRUCT_CHILD_GETTERS(speed, 8); + STRUCT_CHILD_GETTERS(name, 9); + STRUCT_CHILD_GETTERS(description, 10); + STRUCT_CHILD_GETTERS(queues_DEPRECATED, 12); + STRUCT_CHILD_GETTERS(pause, 13); + STRUCT_CHILD_GETTERS(sFlowIngressRate, 14); + STRUCT_CHILD_GETTERS(sFlowEgressRate, 15); + STRUCT_CHILD_GETTERS(loopbackMode, 17); + STRUCT_CHILD_GETTERS(ingressMirror, 18); + STRUCT_CHILD_GETTERS(egressMirror, 19); + STRUCT_CHILD_GETTERS(expectedLLDPValues, 20); + STRUCT_CHILD_GETTERS(sampleDest, 21); + STRUCT_CHILD_GETTERS(portQueueConfigName, 22); + STRUCT_CHILD_GETTERS(lookupClasses, 23); + STRUCT_CHILD_GETTERS(profileID, 24); + STRUCT_CHILD_GETTERS(pfc, 25); + STRUCT_CHILD_GETTERS(counterTags, 26); + STRUCT_CHILD_GETTERS(portType, 27); + STRUCT_CHILD_GETTERS(expectedNeighborReachability, 28); + STRUCT_CHILD_GETTERS(drainState, 29); + STRUCT_CHILD_GETTERS(flowletConfigName, 30); + STRUCT_CHILD_GETTERS(scope, 31); + STRUCT_CHILD_GETTERS(portVoqConfigName, 32); + STRUCT_CHILD_GETTERS(conditionalEntropyRehash, 33); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return portId(); } - else if constexpr (__id == 2) { return portName(); } - else if constexpr (__id == 3) { return portDescription(); } - else if constexpr (__id == 4) { return portState(); } - else if constexpr (__id == 5) { return portOperState(); } - else if constexpr (__id == 6) { return ingressVlan(); } - else if constexpr (__id == 7) { return portSpeed(); } - else if constexpr (__id == 10) { return rxPause(); } - else if constexpr (__id == 11) { return txPause(); } - else if constexpr (__id == 12) { return vlanMemberShips(); } - else if constexpr (__id == 13) { return sFlowIngressRate(); } - else if constexpr (__id == 14) { return sFlowEgressRate(); } - else if constexpr (__id == 15) { return queues(); } - else if constexpr (__id == 16) { return portLoopbackMode(); } - else if constexpr (__id == 17) { return ingressMirror(); } - else if constexpr (__id == 18) { return egressMirror(); } - else if constexpr (__id == 19) { return qosPolicy(); } - else if constexpr (__id == 20) { return sampleDest(); } - else if constexpr (__id == 21) { return portProfileID(); } - else if constexpr (__id == 22) { return lookupClassesToDistrubuteTrafficOn(); } - else if constexpr (__id == 23) { return maxFrameSize(); } - else if constexpr (__id == 24) { return pfc(); } - else if constexpr (__id == 25) { return pgConfigs(); } - else if constexpr (__id == 26) { return profileConfig(); } - else if constexpr (__id == 27) { return pinConfigs(); } - else if constexpr (__id == 28) { return lineProfileConfig(); } - else if constexpr (__id == 29) { return linePinConfigs(); } - else if constexpr (__id == 30) { return portType(); } - else if constexpr (__id == 31) { return iPhyLinkFaultStatus(); } - else if constexpr (__id == 32) { return asicPrbs(); } - else if constexpr (__id == 33) { return gbSystemPrbs(); } - else if constexpr (__id == 34) { return gbLinePrbs(); } - else if constexpr (__id == 35) { return pfcPriorities(); } - else if constexpr (__id == 36) { return expectedLLDPValues(); } - else if constexpr (__id == 37) { return rxSecureAssociationKeys(); } - else if constexpr (__id == 38) { return txSecureAssociationKey(); } - else if constexpr (__id == 39) { return macsecDesired(); } - else if constexpr (__id == 40) { return dropUnencrypted(); } - else if constexpr (__id == 41) { return interfaceIDs(); } - else if constexpr (__id == 42) { return expectedNeighborReachability(); } - else if constexpr (__id == 43) { return drainState(); } - else if constexpr (__id == 44) { return flowletConfigName(); } - else if constexpr (__id == 45) { return flowletConfig(); } - else if constexpr (__id == 46) { return portLedExternalState(); } - else if constexpr (__id == 47) { return rxLaneSquelch(); } - else if constexpr (__id == 48) { return zeroPreemphasis(); } - else if constexpr (__id == 49) { return portActiveState(); } - else if constexpr (__id == 50) { return disableTTLDecrement(); } - else if constexpr (__id == 51) { return txEnable(); } - else if constexpr (__id == 52) { return activeErrors(); } - else if constexpr (__id == 53) { return scope(); } - else if constexpr (__id == 54) { return reachabilityGroupId(); } - else if constexpr (__id == 55) { return conditionalEntropyRehash(); } + if constexpr (__id == 1) { return logicalID(); } + else if constexpr (__id == 2) { return state(); } + else if constexpr (__id == 3) { return minFrameSize(); } + else if constexpr (__id == 4) { return maxFrameSize(); } + else if constexpr (__id == 5) { return parserType(); } + else if constexpr (__id == 6) { return routable(); } + else if constexpr (__id == 7) { return ingressVlan(); } + else if constexpr (__id == 8) { return speed(); } + else if constexpr (__id == 9) { return name(); } + else if constexpr (__id == 10) { return description(); } + else if constexpr (__id == 12) { return queues_DEPRECATED(); } + else if constexpr (__id == 13) { return pause(); } + else if constexpr (__id == 14) { return sFlowIngressRate(); } + else if constexpr (__id == 15) { return sFlowEgressRate(); } + else if constexpr (__id == 17) { return loopbackMode(); } + else if constexpr (__id == 18) { return ingressMirror(); } + else if constexpr (__id == 19) { return egressMirror(); } + else if constexpr (__id == 20) { return expectedLLDPValues(); } + else if constexpr (__id == 21) { return sampleDest(); } + else if constexpr (__id == 22) { return portQueueConfigName(); } + else if constexpr (__id == 23) { return lookupClasses(); } + else if constexpr (__id == 24) { return profileID(); } + else if constexpr (__id == 25) { return pfc(); } + else if constexpr (__id == 26) { return counterTags(); } + else if constexpr (__id == 27) { return portType(); } + else if constexpr (__id == 28) { return expectedNeighborReachability(); } + else if constexpr (__id == 29) { return drainState(); } + else if constexpr (__id == 30) { return flowletConfigName(); } + else if constexpr (__id == 31) { return scope(); } + else if constexpr (__id == 32) { return portVoqConfigName(); } + else if constexpr (__id == 33) { return conditionalEntropyRehash(); } } template @@ -16562,43 +16174,43 @@ std::pair -class ChildThriftPath<::std::map<::facebook::fboss::cfg::PortFlowletConfigName, ::facebook::fboss::cfg::PortFlowletConfig>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::map<::std::int32_t, ::facebook::fboss::state::InterfaceFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::map<::facebook::fboss::cfg::PortFlowletConfigName, ::facebook::fboss::cfg::PortFlowletConfig>, + ::std::map<::std::int32_t, ::facebook::fboss::state::InterfaceFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>, - ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::cfg::PortFlowletConfig>>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>, + ::apache::thrift::type::map<::apache::thrift::type::i32_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::InterfaceFields>>, Parent> { public: using Self = Path< - ::std::map<::facebook::fboss::cfg::PortFlowletConfigName, ::facebook::fboss::cfg::PortFlowletConfig>, + ::std::map<::std::int32_t, ::facebook::fboss::state::InterfaceFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>, - ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::cfg::PortFlowletConfig>>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>, + ::apache::thrift::type::map<::apache::thrift::type::i32_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::InterfaceFields>>, Parent>; - using Child = ChildThriftPath<::facebook::fboss::cfg::PortFlowletConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Child = ChildThriftPath<::facebook::fboss::state::InterfaceFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; using Self::Self; - CONTAINER_CHILD_GETTERS(::facebook::fboss::cfg::PortFlowletConfigName); + CONTAINER_CHILD_GETTERS(::std::int32_t); }; template -class ChildThriftPath<::facebook::fboss::mka::MKASak, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::cfg::StaticIp2MplsRoute, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::mka::MKASak, + ::facebook::fboss::cfg::StaticIp2MplsRoute, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::mka::MKASak>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::StaticIp2MplsRoute>, Parent> { public: using Self = Path< - ::facebook::fboss::mka::MKASak, + ::facebook::fboss::cfg::StaticIp2MplsRoute, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::mka::MKASak>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::StaticIp2MplsRoute>, Parent>; - using strings = ::facebook::fboss::mka::mka_structs_tags::strings; + using strings = ::facebook::fboss::cfg::switch_config_tags::strings; template using Child = Path< ChildType, @@ -16607,55 +16219,30 @@ class ChildThriftPath<::facebook::fboss::mka::MKASak, ::facebook::fboss::fsdb::F ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>>, -std::pair>, -std::pair>>; - using ChildrenById = fatal::tuple< std::pair, ChildThriftPath<::facebook::fboss::mka::MKASci, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + using Children = fatal::tuple>, +std::pair>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + using ChildrenById = fatal::tuple< std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, Child<::facebook::fboss::mka::MKAConfidentialityOffset, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::mka::MKAConfidentialityOffset>>>, - std::pair, Child>, - std::pair, Child>>; + std::pair, ChildThriftPath<::std::vector<::facebook::fboss::NextHopThrift>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(sci, 1); - STRUCT_CHILD_GETTERS(l2Port, 2); - STRUCT_CHILD_GETTERS(assocNum, 3); - STRUCT_CHILD_GETTERS(keyHex, 4); - STRUCT_CHILD_GETTERS(keyIdHex, 5); - STRUCT_CHILD_GETTERS(confidentOffset, 6); - STRUCT_CHILD_GETTERS(primary, 7); - STRUCT_CHILD_GETTERS(dropUnencrypted, 8); + STRUCT_CHILD_GETTERS(routerID, 1); + STRUCT_CHILD_GETTERS(prefix, 2); + STRUCT_CHILD_GETTERS(nexthops, 3); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return sci(); } - else if constexpr (__id == 2) { return l2Port(); } - else if constexpr (__id == 3) { return assocNum(); } - else if constexpr (__id == 4) { return keyHex(); } - else if constexpr (__id == 5) { return keyIdHex(); } - else if constexpr (__id == 6) { return confidentOffset(); } - else if constexpr (__id == 7) { return primary(); } - else if constexpr (__id == 8) { return dropUnencrypted(); } + if constexpr (__id == 1) { return routerID(); } + else if constexpr (__id == 2) { return prefix(); } + else if constexpr (__id == 3) { return nexthops(); } } template @@ -16664,23 +16251,44 @@ std::pair +class ChildThriftPath<::std::vector<::facebook::fboss::cfg::MacAndVlan>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : + public Path< + ::std::vector<::facebook::fboss::cfg::MacAndVlan>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::MacAndVlan>>, + Parent> { + public: + using Self = Path< + ::std::vector<::facebook::fboss::cfg::MacAndVlan>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::MacAndVlan>>, + Parent>; + using Child = ChildThriftPath<::facebook::fboss::cfg::MacAndVlan, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Self::Self; + + CONTAINER_CHILD_GETTERS(::std::int32_t); +}; + template -class ChildThriftPath<::facebook::fboss::state::MacEntryFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::cfg::SetDscpMatchAction, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::state::MacEntryFields, + ::facebook::fboss::cfg::SetDscpMatchAction, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::state::MacEntryFields>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::SetDscpMatchAction>, Parent> { public: using Self = Path< - ::facebook::fboss::state::MacEntryFields, + ::facebook::fboss::cfg::SetDscpMatchAction, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::state::MacEntryFields>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::SetDscpMatchAction>, Parent>; - using strings = ::facebook::fboss::state::switch_state_tags::strings; + using strings = ::facebook::fboss::cfg::switch_config_tags::strings; template using Child = Path< ChildType, @@ -16689,35 +16297,20 @@ class ChildThriftPath<::facebook::fboss::state::MacEntryFields, ::facebook::fbos ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>, -std::pair>>, -std::pair>>>; - using ChildrenById = fatal::tuple< std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, ChildThriftPath<::facebook::fboss::cfg::PortDescriptor, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, Child<::facebook::fboss::cfg::AclLookupClass, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::AclLookupClass>>>, - std::pair, Child<::facebook::fboss::state::MacEntryType, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::state::MacEntryType>>>>; + using Children = fatal::tuple>>; + using ChildrenById = fatal::tuple< std::pair, Child<::std::int8_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::byte_t>>>; template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(mac, 1); - STRUCT_CHILD_GETTERS(portId, 2); - STRUCT_CHILD_GETTERS(classID, 3); - STRUCT_CHILD_GETTERS(type, 4); + STRUCT_CHILD_GETTERS(dscpValue, 1); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return mac(); } - else if constexpr (__id == 2) { return portId(); } - else if constexpr (__id == 3) { return classID(); } - else if constexpr (__id == 4) { return type(); } + if constexpr (__id == 1) { return dscpValue(); } } template @@ -16726,44 +16319,23 @@ std::pair>> } }; -template -class ChildThriftPath<::std::vector<::facebook::fboss::cfg::Mirror>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : - public Path< - ::std::vector<::facebook::fboss::cfg::Mirror>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::Mirror>>, - Parent> { - public: - using Self = Path< - ::std::vector<::facebook::fboss::cfg::Mirror>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::Mirror>>, - Parent>; - using Child = ChildThriftPath<::facebook::fboss::cfg::Mirror, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; - using Self::Self; - - CONTAINER_CHILD_GETTERS(::std::int32_t); -}; - template -class ChildThriftPath<::facebook::fboss::cfg::Lacp, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::state::AclTableFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::cfg::Lacp, + ::facebook::fboss::state::AclTableFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::Lacp>, + ::apache::thrift::type::struct_t<::facebook::fboss::state::AclTableFields>, Parent> { public: using Self = Path< - ::facebook::fboss::cfg::Lacp, + ::facebook::fboss::state::AclTableFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::Lacp>, + ::apache::thrift::type::struct_t<::facebook::fboss::state::AclTableFields>, Parent>; - using strings = ::facebook::fboss::cfg::switch_config_tags::strings; + using strings = ::facebook::fboss::state::switch_state_tags::strings; template using Child = Path< ChildType, @@ -16772,25 +16344,45 @@ class ChildThriftPath<::facebook::fboss::cfg::Lacp, ::facebook::fboss::fsdb::Fsd ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>>; + using Children = fatal::tuple>, +std::pair>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; using ChildrenById = fatal::tuple< std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>>; + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, ChildThriftPath<::std::map<::std::string, ::facebook::fboss::state::AclEntryFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::AclTableActionType>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::AclTableQualifier>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::vector<::std::string>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; template - using NameToId = fatal::tuple>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(systemID, 1); - STRUCT_CHILD_GETTERS(systemPriority, 2); + STRUCT_CHILD_GETTERS(id, 1); + STRUCT_CHILD_GETTERS(priority, 2); + STRUCT_CHILD_GETTERS(aclMap, 3); + STRUCT_CHILD_GETTERS(actionTypes, 4); + STRUCT_CHILD_GETTERS(qualifiers, 5); + STRUCT_CHILD_GETTERS(udfGroups, 6); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return systemID(); } - else if constexpr (__id == 2) { return systemPriority(); } + if constexpr (__id == 1) { return id(); } + else if constexpr (__id == 2) { return priority(); } + else if constexpr (__id == 3) { return aclMap(); } + else if constexpr (__id == 4) { return actionTypes(); } + else if constexpr (__id == 5) { return qualifiers(); } + else if constexpr (__id == 6) { return udfGroups(); } } template @@ -16799,135 +16391,63 @@ std::pair -class ChildThriftPath<::facebook::fboss::BufferPoolFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::map<::std::int32_t, ::facebook::fboss::state::ParticipantInfo>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::BufferPoolFields, + ::std::map<::std::int32_t, ::facebook::fboss::state::ParticipantInfo>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::BufferPoolFields>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>, + ::apache::thrift::type::map<::apache::thrift::type::i32_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::ParticipantInfo>>, Parent> { public: using Self = Path< - ::facebook::fboss::BufferPoolFields, + ::std::map<::std::int32_t, ::facebook::fboss::state::ParticipantInfo>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::BufferPoolFields>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>, + ::apache::thrift::type::map<::apache::thrift::type::i32_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::ParticipantInfo>>, Parent>; - using strings = ::facebook::fboss::common_tags::strings; - template - using Child = Path< - ChildType, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ChildTC, - ChildTag, - Self - >; - using Children = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>>; - using ChildrenById = fatal::tuple< std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>>; - template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>>::template type_of; - - template - using TypeFor = typename Children::template type_of; + using Child = ChildThriftPath<::facebook::fboss::state::ParticipantInfo, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; using Self::Self; - - STRUCT_CHILD_GETTERS(id, 1); - STRUCT_CHILD_GETTERS(headroomBytes, 2); - STRUCT_CHILD_GETTERS(sharedBytes, 3); - STRUCT_CHILD_GETTERS(reservedBytes, 4); - - template - auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return id(); } - else if constexpr (__id == 2) { return headroomBytes(); } - else if constexpr (__id == 3) { return sharedBytes(); } - else if constexpr (__id == 4) { return reservedBytes(); } - } - template - auto operator()(const fatal::sequence&) { - return operator()(NameToId>()); - } + CONTAINER_CHILD_GETTERS(::std::int32_t); }; - template -class ChildThriftPath<::facebook::fboss::cfg::MirrorEgressPort, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::map<::std::int16_t, ::facebook::fboss::state::AggregatePortFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::cfg::MirrorEgressPort, + ::std::map<::std::int16_t, ::facebook::fboss::state::AggregatePortFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::variant, - ::apache::thrift::type::union_t<::facebook::fboss::cfg::MirrorEgressPort>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>, + ::apache::thrift::type::map<::apache::thrift::type::i16_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::AggregatePortFields>>, Parent> { public: using Self = Path< - ::facebook::fboss::cfg::MirrorEgressPort, + ::std::map<::std::int16_t, ::facebook::fboss::state::AggregatePortFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::variant, - ::apache::thrift::type::union_t<::facebook::fboss::cfg::MirrorEgressPort>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>, + ::apache::thrift::type::map<::apache::thrift::type::i16_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::AggregatePortFields>>, Parent>; - using strings = ::facebook::fboss::cfg::switch_config_tags::strings; - template - using Child = Path< - ChildType, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ChildTC, - ChildTag, - Self - >; - using Children = fatal::tuple>, -std::pair>>; - using ChildrenById = fatal::tuple< std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>>; - template - using NameToId = fatal::tuple>, -std::pair>>::template type_of; - - template - using TypeFor = typename Children::template type_of; + using Child = ChildThriftPath<::facebook::fboss::state::AggregatePortFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; using Self::Self; - - STRUCT_CHILD_GETTERS(name, 1); - STRUCT_CHILD_GETTERS(logicalID, 2); - - template - auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return name(); } - else if constexpr (__id == 2) { return logicalID(); } - } - template - auto operator()(const fatal::sequence&) { - return operator()(NameToId>()); - } + CONTAINER_CHILD_GETTERS(::std::int16_t); }; template -class ChildThriftPath<::facebook::fboss::state::VlanInfo, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::state::ParticipantInfo, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::state::VlanInfo, + ::facebook::fboss::state::ParticipantInfo, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::state::VlanInfo>, + ::apache::thrift::type::struct_t<::facebook::fboss::state::ParticipantInfo>, Parent> { public: using Self = Path< - ::facebook::fboss::state::VlanInfo, + ::facebook::fboss::state::ParticipantInfo, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::state::VlanInfo>, + ::apache::thrift::type::struct_t<::facebook::fboss::state::ParticipantInfo>, Parent>; using strings = ::facebook::fboss::state::switch_state_tags::strings; template @@ -16938,20 +16458,45 @@ class ChildThriftPath<::facebook::fboss::state::VlanInfo, ::facebook::fboss::fsd ChildTag, Self >; - using Children = fatal::tuple>>; - using ChildrenById = fatal::tuple< std::pair, Child>>; + using Children = fatal::tuple>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair>, +std::pair>, +std::pair>, +std::pair>>>; + using ChildrenById = fatal::tuple< std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, ChildThriftPath<::std::vector<::std::int16_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::facebook::fboss::state::LacpState, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::state::LacpState>>>>; template - using NameToId = fatal::tuple>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(tagged, 1); + STRUCT_CHILD_GETTERS(systemPriority, 1); + STRUCT_CHILD_GETTERS(systemID, 2); + STRUCT_CHILD_GETTERS(key, 3); + STRUCT_CHILD_GETTERS(portPriority, 4); + STRUCT_CHILD_GETTERS(port, 5); + STRUCT_CHILD_GETTERS(state, 6); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return tagged(); } + if constexpr (__id == 1) { return systemPriority(); } + else if constexpr (__id == 2) { return systemID(); } + else if constexpr (__id == 3) { return key(); } + else if constexpr (__id == 4) { return portPriority(); } + else if constexpr (__id == 5) { return port(); } + else if constexpr (__id == 6) { return state(); } } template @@ -16961,42 +16506,42 @@ class ChildThriftPath<::facebook::fboss::state::VlanInfo, ::facebook::fboss::fsd }; template -class ChildThriftPath<::std::map<::std::int64_t, ::facebook::fboss::switch_reachability::SwitchReachability>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::map<::std::string, ::facebook::fboss::state::TeFlowEntryFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::map<::std::int64_t, ::facebook::fboss::switch_reachability::SwitchReachability>, + ::std::map<::std::string, ::facebook::fboss::state::TeFlowEntryFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>, - ::apache::thrift::type::map<::apache::thrift::type::i64_t, ::apache::thrift::type::struct_t<::facebook::fboss::switch_reachability::SwitchReachability>>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::TeFlowEntryFields>>, Parent> { public: using Self = Path< - ::std::map<::std::int64_t, ::facebook::fboss::switch_reachability::SwitchReachability>, + ::std::map<::std::string, ::facebook::fboss::state::TeFlowEntryFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>, - ::apache::thrift::type::map<::apache::thrift::type::i64_t, ::apache::thrift::type::struct_t<::facebook::fboss::switch_reachability::SwitchReachability>>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::TeFlowEntryFields>>, Parent>; - using Child = ChildThriftPath<::facebook::fboss::switch_reachability::SwitchReachability, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Child = ChildThriftPath<::facebook::fboss::state::TeFlowEntryFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; using Self::Self; - CONTAINER_CHILD_GETTERS(::std::int64_t); + CONTAINER_CHILD_GETTERS(::std::string); }; template -class ChildThriftPath<::std::vector<::facebook::fboss::cfg::Neighbor>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::vector<::facebook::fboss::cfg::CabledTestPair>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::vector<::facebook::fboss::cfg::Neighbor>, + ::std::vector<::facebook::fboss::cfg::CabledTestPair>, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::Neighbor>>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::CabledTestPair>>, Parent> { public: using Self = Path< - ::std::vector<::facebook::fboss::cfg::Neighbor>, + ::std::vector<::facebook::fboss::cfg::CabledTestPair>, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, - ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::Neighbor>>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::CabledTestPair>>, Parent>; - using Child = ChildThriftPath<::facebook::fboss::cfg::Neighbor, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Child = ChildThriftPath<::facebook::fboss::cfg::CabledTestPair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; using Self::Self; CONTAINER_CHILD_GETTERS(::std::int32_t); @@ -17004,21 +16549,21 @@ class ChildThriftPath<::std::vector<::facebook::fboss::cfg::Neighbor>, ::faceboo template -class ChildThriftPath<::facebook::fboss::state::MKASakKey, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::cfg::MirrorDestination, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::state::MKASakKey, + ::facebook::fboss::cfg::MirrorDestination, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::state::MKASakKey>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::MirrorDestination>, Parent> { public: using Self = Path< - ::facebook::fboss::state::MKASakKey, + ::facebook::fboss::cfg::MirrorDestination, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::state::MKASakKey>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::MirrorDestination>, Parent>; - using strings = ::facebook::fboss::state::switch_state_tags::strings; + using strings = ::facebook::fboss::cfg::switch_config_tags::strings; template using Child = Path< ChildType, @@ -17027,25 +16572,30 @@ class ChildThriftPath<::facebook::fboss::state::MKASakKey, ::facebook::fboss::fs ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>>; - using ChildrenById = fatal::tuple< std::pair, ChildThriftPath<::facebook::fboss::mka::MKASci, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>>; + using Children = fatal::tuple>, +std::pair>, +std::pair>>; + using ChildrenById = fatal::tuple< std::pair, ChildThriftPath<::facebook::fboss::cfg::MirrorEgressPort, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, ChildThriftPath<::facebook::fboss::cfg::MirrorTunnel, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; template - using NameToId = fatal::tuple>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(sci, 1); - STRUCT_CHILD_GETTERS(associationNum, 2); + STRUCT_CHILD_GETTERS(egressPort, 1); + STRUCT_CHILD_GETTERS(ip, 2); + STRUCT_CHILD_GETTERS(tunnel, 3); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return sci(); } - else if constexpr (__id == 2) { return associationNum(); } + if constexpr (__id == 1) { return egressPort(); } + else if constexpr (__id == 2) { return ip(); } + else if constexpr (__id == 3) { return tunnel(); } } template @@ -17054,23 +16604,170 @@ std::pair +class ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::string, ::facebook::fboss::state::TeFlowEntryFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : + public Path< + ::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::string, ::facebook::fboss::state::TeFlowEntryFields>>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::TeFlowEntryFields>>>, + Parent> { + public: + using Self = Path< + ::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::string, ::facebook::fboss::state::TeFlowEntryFields>>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::TeFlowEntryFields>>>, + Parent>; + using Child = ChildThriftPath<::std::map<::std::string, ::facebook::fboss::state::TeFlowEntryFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Self::Self; + + CONTAINER_CHILD_GETTERS(::facebook::fboss::state::SwitchIdList); +}; + +template +class ChildThriftPath<::std::vector<::std::int16_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : + public Path< + ::std::vector<::std::int16_t>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::list<::apache::thrift::type_class::integral>, + ::apache::thrift::type::list<::apache::thrift::type::i16_t>, + Parent> { + public: + using Self = Path< + ::std::vector<::std::int16_t>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::list<::apache::thrift::type_class::integral>, + ::apache::thrift::type::list<::apache::thrift::type::i16_t>, + Parent>; + using Child = Path<::std::int16_t, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t, Self>; + using Self::Self; + + CONTAINER_CHILD_GETTERS(::std::int32_t); +}; template -class ChildThriftPath<::facebook::fboss::cfg::SwitchInfo, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::map<::std::string, ::facebook::fboss::state::IpTunnelFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::cfg::SwitchInfo, + ::std::map<::std::string, ::facebook::fboss::state::IpTunnelFields>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::IpTunnelFields>>, + Parent> { + public: + using Self = Path< + ::std::map<::std::string, ::facebook::fboss::state::IpTunnelFields>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::IpTunnelFields>>, + Parent>; + using Child = ChildThriftPath<::facebook::fboss::state::IpTunnelFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Self::Self; + + CONTAINER_CHILD_GETTERS(::std::string); +}; + +template +class ChildThriftPath<::std::map<::std::string, ::facebook::fboss::state::SflowCollectorFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : + public Path< + ::std::map<::std::string, ::facebook::fboss::state::SflowCollectorFields>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::SflowCollectorFields>>, + Parent> { + public: + using Self = Path< + ::std::map<::std::string, ::facebook::fboss::state::SflowCollectorFields>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::SflowCollectorFields>>, + Parent>; + using Child = ChildThriftPath<::facebook::fboss::state::SflowCollectorFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Self::Self; + + CONTAINER_CHILD_GETTERS(::std::string); +}; + +template +class ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::string, ::facebook::fboss::state::SflowCollectorFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : + public Path< + ::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::string, ::facebook::fboss::state::SflowCollectorFields>>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::SflowCollectorFields>>>, + Parent> { + public: + using Self = Path< + ::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::string, ::facebook::fboss::state::SflowCollectorFields>>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::SflowCollectorFields>>>, + Parent>; + using Child = ChildThriftPath<::std::map<::std::string, ::facebook::fboss::state::SflowCollectorFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Self::Self; + + CONTAINER_CHILD_GETTERS(::facebook::fboss::state::SwitchIdList); +}; + +template +class ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::int64_t, ::facebook::fboss::cfg::DsfNode>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : + public Path< + ::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::int64_t, ::facebook::fboss::cfg::DsfNode>>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::map<::apache::thrift::type::i64_t, ::apache::thrift::type::struct_t<::facebook::fboss::cfg::DsfNode>>>, + Parent> { + public: + using Self = Path< + ::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::int64_t, ::facebook::fboss::cfg::DsfNode>>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::map<::apache::thrift::type::i64_t, ::apache::thrift::type::struct_t<::facebook::fboss::cfg::DsfNode>>>, + Parent>; + using Child = ChildThriftPath<::std::map<::std::int64_t, ::facebook::fboss::cfg::DsfNode>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Self::Self; + + CONTAINER_CHILD_GETTERS(::facebook::fboss::state::SwitchIdList); +}; + +template +class ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::int32_t, ::facebook::fboss::state::LabelForwardingEntryFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : + public Path< + ::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::int32_t, ::facebook::fboss::state::LabelForwardingEntryFields>>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::map<::apache::thrift::type::i32_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::LabelForwardingEntryFields>>>, + Parent> { + public: + using Self = Path< + ::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::int32_t, ::facebook::fboss::state::LabelForwardingEntryFields>>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::map<::apache::thrift::type::i32_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::LabelForwardingEntryFields>>>, + Parent>; + using Child = ChildThriftPath<::std::map<::std::int32_t, ::facebook::fboss::state::LabelForwardingEntryFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Self::Self; + + CONTAINER_CHILD_GETTERS(::facebook::fboss::state::SwitchIdList); +}; + + +template +class ChildThriftPath<::facebook::fboss::state::AclTtl, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : + public Path< + ::facebook::fboss::state::AclTtl, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::SwitchInfo>, + ::apache::thrift::type::struct_t<::facebook::fboss::state::AclTtl>, Parent> { public: using Self = Path< - ::facebook::fboss::cfg::SwitchInfo, + ::facebook::fboss::state::AclTtl, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::SwitchInfo>, + ::apache::thrift::type::struct_t<::facebook::fboss::state::AclTtl>, Parent>; - using strings = ::facebook::fboss::cfg::switch_config_tags::strings; + using strings = ::facebook::fboss::state::switch_state_tags::strings; template using Child = Path< ChildType, @@ -17079,70 +16776,675 @@ class ChildThriftPath<::facebook::fboss::cfg::SwitchInfo, ::facebook::fboss::fsd ChildTag, Self >; - using Children = fatal::tuple>>, -std::pair>>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>>; - using ChildrenById = fatal::tuple< std::pair, Child<::facebook::fboss::cfg::SwitchType, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::SwitchType>>>, - std::pair, Child<::facebook::fboss::cfg::AsicType, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::AsicType>>>, - std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, - std::pair, ChildThriftPath<::facebook::fboss::cfg::Range64, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::facebook::fboss::cfg::Range64, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, ChildThriftPath<::facebook::fboss::cfg::SystemPortRanges, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>>; + using Children = fatal::tuple>, +std::pair>>; + using ChildrenById = fatal::tuple< std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, + std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>>; template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(switchType, 1); - STRUCT_CHILD_GETTERS(asicType, 2); - STRUCT_CHILD_GETTERS(switchIndex, 3); - STRUCT_CHILD_GETTERS(portIdRange, 4); - STRUCT_CHILD_GETTERS(systemPortRange, 5); - STRUCT_CHILD_GETTERS(switchMac, 6); - STRUCT_CHILD_GETTERS(connectionHandle, 7); - STRUCT_CHILD_GETTERS(systemPortRanges, 8); - STRUCT_CHILD_GETTERS(localSystemPortOffset, 9); - STRUCT_CHILD_GETTERS(globalSystemPortOffset, 10); - STRUCT_CHILD_GETTERS(inbandPortId, 11); + STRUCT_CHILD_GETTERS(value, 1); + STRUCT_CHILD_GETTERS(mask, 2); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return switchType(); } - else if constexpr (__id == 2) { return asicType(); } - else if constexpr (__id == 3) { return switchIndex(); } - else if constexpr (__id == 4) { return portIdRange(); } - else if constexpr (__id == 5) { return systemPortRange(); } - else if constexpr (__id == 6) { return switchMac(); } - else if constexpr (__id == 7) { return connectionHandle(); } - else if constexpr (__id == 8) { return systemPortRanges(); } - else if constexpr (__id == 9) { return localSystemPortOffset(); } - else if constexpr (__id == 10) { return globalSystemPortOffset(); } - else if constexpr (__id == 11) { return inbandPortId(); } + if constexpr (__id == 1) { return value(); } + else if constexpr (__id == 2) { return mask(); } + } + + template + auto operator()(const fatal::sequence&) { + return operator()(NameToId>()); + } +}; + +template +class ChildThriftPath<::std::vector<::facebook::fboss::state::BlockedMacAddress>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : + public Path< + ::std::vector<::facebook::fboss::state::BlockedMacAddress>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::state::BlockedMacAddress>>, + Parent> { + public: + using Self = Path< + ::std::vector<::facebook::fboss::state::BlockedMacAddress>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::state::BlockedMacAddress>>, + Parent>; + using Child = ChildThriftPath<::facebook::fboss::state::BlockedMacAddress, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Self::Self; + + CONTAINER_CHILD_GETTERS(::std::int32_t); +}; + + +template +class ChildThriftPath<::facebook::fboss::state::RouteFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : + public Path< + ::facebook::fboss::state::RouteFields, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::structure, + ::apache::thrift::type::struct_t<::facebook::fboss::state::RouteFields>, + Parent> { + public: + using Self = Path< + ::facebook::fboss::state::RouteFields, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::structure, + ::apache::thrift::type::struct_t<::facebook::fboss::state::RouteFields>, + Parent>; + using strings = ::facebook::fboss::state::switch_state_tags::strings; + template + using Child = Path< + ChildType, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ChildTC, + ChildTag, + Self + >; + using Children = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>, +std::pair>>>; + using ChildrenById = fatal::tuple< std::pair, ChildThriftPath<::facebook::fboss::state::RoutePrefix, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::facebook::fboss::state::RouteNextHopsMulti, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::facebook::fboss::state::RouteNextHopEntry, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::facebook::fboss::cfg::AclLookupClass, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::AclLookupClass>>>>; + template + using NameToId = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>, +std::pair>>::template type_of; + + template + using TypeFor = typename Children::template type_of; + using Self::Self; + + STRUCT_CHILD_GETTERS(prefix, 1); + STRUCT_CHILD_GETTERS(nexthopsmulti, 2); + STRUCT_CHILD_GETTERS(fwd, 3); + STRUCT_CHILD_GETTERS(flags, 4); + STRUCT_CHILD_GETTERS(classID, 5); + + template + auto operator()(const std::integral_constant&) { + if constexpr (__id == 1) { return prefix(); } + else if constexpr (__id == 2) { return nexthopsmulti(); } + else if constexpr (__id == 3) { return fwd(); } + else if constexpr (__id == 4) { return flags(); } + else if constexpr (__id == 5) { return classID(); } + } + + template + auto operator()(const fatal::sequence&) { + return operator()(NameToId>()); + } +}; + +template +class ChildThriftPath<::std::map<::std::int16_t, bool>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : + public Path< + ::std::map<::std::int16_t, bool>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::integral>, + ::apache::thrift::type::map<::apache::thrift::type::i16_t, ::apache::thrift::type::bool_t>, + Parent> { + public: + using Self = Path< + ::std::map<::std::int16_t, bool>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::integral>, + ::apache::thrift::type::map<::apache::thrift::type::i16_t, ::apache::thrift::type::bool_t>, + Parent>; + using Child = Path; + using Self::Self; + + CONTAINER_CHILD_GETTERS(::std::int16_t); +}; + +template +class ChildThriftPath<::std::vector<::facebook::fboss::cfg::Port>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : + public Path< + ::std::vector<::facebook::fboss::cfg::Port>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::Port>>, + Parent> { + public: + using Self = Path< + ::std::vector<::facebook::fboss::cfg::Port>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::Port>>, + Parent>; + using Child = ChildThriftPath<::facebook::fboss::cfg::Port, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Self::Self; + + CONTAINER_CHILD_GETTERS(::std::int32_t); +}; + +template +class ChildThriftPath<::std::map<::std::int32_t, bool>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : + public Path< + ::std::map<::std::int32_t, bool>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::integral>, + ::apache::thrift::type::map<::apache::thrift::type::i32_t, ::apache::thrift::type::bool_t>, + Parent> { + public: + using Self = Path< + ::std::map<::std::int32_t, bool>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::integral>, + ::apache::thrift::type::map<::apache::thrift::type::i32_t, ::apache::thrift::type::bool_t>, + Parent>; + using Child = Path; + using Self::Self; + + CONTAINER_CHILD_GETTERS(::std::int32_t); +}; + +template +class ChildThriftPath<::std::map<::std::int16_t, ::facebook::fboss::state::VlanFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : + public Path< + ::std::map<::std::int16_t, ::facebook::fboss::state::VlanFields>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>, + ::apache::thrift::type::map<::apache::thrift::type::i16_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::VlanFields>>, + Parent> { + public: + using Self = Path< + ::std::map<::std::int16_t, ::facebook::fboss::state::VlanFields>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>, + ::apache::thrift::type::map<::apache::thrift::type::i16_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::VlanFields>>, + Parent>; + using Child = ChildThriftPath<::facebook::fboss::state::VlanFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Self::Self; + + CONTAINER_CHILD_GETTERS(::std::int16_t); +}; + +template +class ChildThriftPath<::std::map<::std::string, ::facebook::fboss::state::VlanInfo>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : + public Path< + ::std::map<::std::string, ::facebook::fboss::state::VlanInfo>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::VlanInfo>>, + Parent> { + public: + using Self = Path< + ::std::map<::std::string, ::facebook::fboss::state::VlanInfo>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::VlanInfo>>, + Parent>; + using Child = ChildThriftPath<::facebook::fboss::state::VlanInfo, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Self::Self; + + CONTAINER_CHILD_GETTERS(::std::string); +}; + + +template +class ChildThriftPath<::facebook::fboss::phy::PhyState, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : + public Path< + ::facebook::fboss::phy::PhyState, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::structure, + ::apache::thrift::type::struct_t<::facebook::fboss::phy::PhyState>, + Parent> { + public: + using Self = Path< + ::facebook::fboss::phy::PhyState, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::structure, + ::apache::thrift::type::struct_t<::facebook::fboss::phy::PhyState>, + Parent>; + using strings = ::facebook::fboss::phy::phy_tags::strings; + template + using Child = Path< + ChildType, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ChildTC, + ChildTag, + Self + >; + using Children = fatal::tuple>, +std::pair>, +std::pair>>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>>; + using ChildrenById = fatal::tuple< std::pair, ChildThriftPath<::facebook::fboss::phy::DataPlanePhyChip, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::facebook::fboss::phy::PhyFwVersion, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, Child<::facebook::fboss::cfg::PortSpeed, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::PortSpeed>>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, Child>, + std::pair, ChildThriftPath<::facebook::fboss::phy::PhySideState, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::facebook::fboss::phy::PhySideState, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>>; + template + using NameToId = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>>::template type_of; + + template + using TypeFor = typename Children::template type_of; + using Self::Self; + + STRUCT_CHILD_GETTERS(phyChip, 1); + STRUCT_CHILD_GETTERS(fwVersion, 2); + STRUCT_CHILD_GETTERS(speed, 3); + STRUCT_CHILD_GETTERS(name, 4); + STRUCT_CHILD_GETTERS(linkState, 5); + STRUCT_CHILD_GETTERS(system, 6); + STRUCT_CHILD_GETTERS(line, 7); + STRUCT_CHILD_GETTERS(switchID, 8); + STRUCT_CHILD_GETTERS(timeCollected, 9); + + template + auto operator()(const std::integral_constant&) { + if constexpr (__id == 1) { return phyChip(); } + else if constexpr (__id == 2) { return fwVersion(); } + else if constexpr (__id == 3) { return speed(); } + else if constexpr (__id == 4) { return name(); } + else if constexpr (__id == 5) { return linkState(); } + else if constexpr (__id == 6) { return system(); } + else if constexpr (__id == 7) { return line(); } + else if constexpr (__id == 8) { return switchID(); } + else if constexpr (__id == 9) { return timeCollected(); } + } + + template + auto operator()(const fatal::sequence&) { + return operator()(NameToId>()); + } +}; + +template +class ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::facebook::fboss::cfg::AclStage, ::facebook::fboss::state::AclTableGroupFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : + public Path< + ::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::facebook::fboss::cfg::AclStage, ::facebook::fboss::state::AclTableGroupFields>>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::map<::apache::thrift::type_class::enumeration, ::apache::thrift::type_class::structure>>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::map<::apache::thrift::type::enum_t<::facebook::fboss::cfg::AclStage>, ::apache::thrift::type::struct_t<::facebook::fboss::state::AclTableGroupFields>>>, + Parent> { + public: + using Self = Path< + ::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::facebook::fboss::cfg::AclStage, ::facebook::fboss::state::AclTableGroupFields>>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::map<::apache::thrift::type_class::enumeration, ::apache::thrift::type_class::structure>>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::map<::apache::thrift::type::enum_t<::facebook::fboss::cfg::AclStage>, ::apache::thrift::type::struct_t<::facebook::fboss::state::AclTableGroupFields>>>, + Parent>; + using Child = ChildThriftPath<::std::map<::facebook::fboss::cfg::AclStage, ::facebook::fboss::state::AclTableGroupFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Self::Self; + + CONTAINER_CHILD_GETTERS(::facebook::fboss::state::SwitchIdList); +}; + +template +class ChildThriftPath<::std::map<::std::string, ::facebook::fboss::state::NeighborEntryFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : + public Path< + ::std::map<::std::string, ::facebook::fboss::state::NeighborEntryFields>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::NeighborEntryFields>>, + Parent> { + public: + using Self = Path< + ::std::map<::std::string, ::facebook::fboss::state::NeighborEntryFields>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::NeighborEntryFields>>, + Parent>; + using Child = ChildThriftPath<::facebook::fboss::state::NeighborEntryFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Self::Self; + + CONTAINER_CHILD_GETTERS(::std::string); +}; + +template +class ChildThriftPath<::std::map<::std::string, ::facebook::fboss::state::AclTableFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : + public Path< + ::std::map<::std::string, ::facebook::fboss::state::AclTableFields>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::AclTableFields>>, + Parent> { + public: + using Self = Path< + ::std::map<::std::string, ::facebook::fboss::state::AclTableFields>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::AclTableFields>>, + Parent>; + using Child = ChildThriftPath<::facebook::fboss::state::AclTableFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Self::Self; + + CONTAINER_CHILD_GETTERS(::std::string); +}; + + +template +class ChildThriftPath<::facebook::fboss::state::PortFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : + public Path< + ::facebook::fboss::state::PortFields, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::structure, + ::apache::thrift::type::struct_t<::facebook::fboss::state::PortFields>, + Parent> { + public: + using Self = Path< + ::facebook::fboss::state::PortFields, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::structure, + ::apache::thrift::type::struct_t<::facebook::fboss::state::PortFields>, + Parent>; + using strings = ::facebook::fboss::state::switch_state_tags::strings; + template + using Child = Path< + ChildType, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ChildTC, + ChildTag, + Self + >; + using Children = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair>, +std::pair>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair>, +std::pair>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair>>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair>, +std::pair>, +std::pair>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair>>, +std::pair>, +std::pair>, +std::pair>>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair>>, +std::pair>, +std::pair>>; + using ChildrenById = fatal::tuple< std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, Child>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, Child>, + std::pair, Child>, + std::pair, ChildThriftPath<::std::map<::std::string, ::facebook::fboss::state::VlanInfo>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, ChildThriftPath<::std::vector<::facebook::fboss::PortQueueFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::AclLookupClass>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, ChildThriftPath<::facebook::fboss::cfg::PortPfc, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::vector<::facebook::fboss::state::PortPgFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::facebook::fboss::phy::ProfileSideConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::vector<::facebook::fboss::phy::PinConfig>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::facebook::fboss::phy::ProfileSideConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::vector<::facebook::fboss::phy::PinConfig>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, Child<::facebook::fboss::cfg::PortType, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::PortType>>>, + std::pair, ChildThriftPath<::facebook::fboss::phy::LinkFaultStatus, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::facebook::fboss::phy::PortPrbsState, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::facebook::fboss::phy::PortPrbsState, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::facebook::fboss::phy::PortPrbsState, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::vector<::std::int16_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::map<::facebook::fboss::cfg::LLDPTag, ::std::string>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::vector<::facebook::fboss::state::RxSak>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::facebook::fboss::mka::MKASak, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, Child>, + std::pair, Child>, + std::pair, ChildThriftPath<::std::vector<::std::int32_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::PortNeighbor>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, Child<::facebook::fboss::cfg::PortDrainState, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::PortDrainState>>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, ChildThriftPath<::facebook::fboss::state::PortFlowletFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, Child<::facebook::fboss::PortLedExternalState, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::PortLedExternalState>>>, + std::pair, Child>, + std::pair, Child>, + std::pair, Child>, + std::pair, Child>, + std::pair, Child>, + std::pair, ChildThriftPath<::std::vector<::facebook::fboss::PortError>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, Child<::facebook::fboss::cfg::Scope, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::Scope>>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child>>; + template + using NameToId = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>>::template type_of; + + template + using TypeFor = typename Children::template type_of; + using Self::Self; + + STRUCT_CHILD_GETTERS(portId, 1); + STRUCT_CHILD_GETTERS(portName, 2); + STRUCT_CHILD_GETTERS(portDescription, 3); + STRUCT_CHILD_GETTERS(portState, 4); + STRUCT_CHILD_GETTERS(portOperState, 5); + STRUCT_CHILD_GETTERS(ingressVlan, 6); + STRUCT_CHILD_GETTERS(portSpeed, 7); + STRUCT_CHILD_GETTERS(rxPause, 10); + STRUCT_CHILD_GETTERS(txPause, 11); + STRUCT_CHILD_GETTERS(vlanMemberShips, 12); + STRUCT_CHILD_GETTERS(sFlowIngressRate, 13); + STRUCT_CHILD_GETTERS(sFlowEgressRate, 14); + STRUCT_CHILD_GETTERS(queues, 15); + STRUCT_CHILD_GETTERS(portLoopbackMode, 16); + STRUCT_CHILD_GETTERS(ingressMirror, 17); + STRUCT_CHILD_GETTERS(egressMirror, 18); + STRUCT_CHILD_GETTERS(qosPolicy, 19); + STRUCT_CHILD_GETTERS(sampleDest, 20); + STRUCT_CHILD_GETTERS(portProfileID, 21); + STRUCT_CHILD_GETTERS(lookupClassesToDistrubuteTrafficOn, 22); + STRUCT_CHILD_GETTERS(maxFrameSize, 23); + STRUCT_CHILD_GETTERS(pfc, 24); + STRUCT_CHILD_GETTERS(pgConfigs, 25); + STRUCT_CHILD_GETTERS(profileConfig, 26); + STRUCT_CHILD_GETTERS(pinConfigs, 27); + STRUCT_CHILD_GETTERS(lineProfileConfig, 28); + STRUCT_CHILD_GETTERS(linePinConfigs, 29); + STRUCT_CHILD_GETTERS(portType, 30); + STRUCT_CHILD_GETTERS(iPhyLinkFaultStatus, 31); + STRUCT_CHILD_GETTERS(asicPrbs, 32); + STRUCT_CHILD_GETTERS(gbSystemPrbs, 33); + STRUCT_CHILD_GETTERS(gbLinePrbs, 34); + STRUCT_CHILD_GETTERS(pfcPriorities, 35); + STRUCT_CHILD_GETTERS(expectedLLDPValues, 36); + STRUCT_CHILD_GETTERS(rxSecureAssociationKeys, 37); + STRUCT_CHILD_GETTERS(txSecureAssociationKey, 38); + STRUCT_CHILD_GETTERS(macsecDesired, 39); + STRUCT_CHILD_GETTERS(dropUnencrypted, 40); + STRUCT_CHILD_GETTERS(interfaceIDs, 41); + STRUCT_CHILD_GETTERS(expectedNeighborReachability, 42); + STRUCT_CHILD_GETTERS(drainState, 43); + STRUCT_CHILD_GETTERS(flowletConfigName, 44); + STRUCT_CHILD_GETTERS(flowletConfig, 45); + STRUCT_CHILD_GETTERS(portLedExternalState, 46); + STRUCT_CHILD_GETTERS(rxLaneSquelch, 47); + STRUCT_CHILD_GETTERS(zeroPreemphasis, 48); + STRUCT_CHILD_GETTERS(portActiveState, 49); + STRUCT_CHILD_GETTERS(disableTTLDecrement, 50); + STRUCT_CHILD_GETTERS(txEnable, 51); + STRUCT_CHILD_GETTERS(activeErrors, 52); + STRUCT_CHILD_GETTERS(scope, 53); + STRUCT_CHILD_GETTERS(reachabilityGroupId, 54); + STRUCT_CHILD_GETTERS(conditionalEntropyRehash, 55); + + template + auto operator()(const std::integral_constant&) { + if constexpr (__id == 1) { return portId(); } + else if constexpr (__id == 2) { return portName(); } + else if constexpr (__id == 3) { return portDescription(); } + else if constexpr (__id == 4) { return portState(); } + else if constexpr (__id == 5) { return portOperState(); } + else if constexpr (__id == 6) { return ingressVlan(); } + else if constexpr (__id == 7) { return portSpeed(); } + else if constexpr (__id == 10) { return rxPause(); } + else if constexpr (__id == 11) { return txPause(); } + else if constexpr (__id == 12) { return vlanMemberShips(); } + else if constexpr (__id == 13) { return sFlowIngressRate(); } + else if constexpr (__id == 14) { return sFlowEgressRate(); } + else if constexpr (__id == 15) { return queues(); } + else if constexpr (__id == 16) { return portLoopbackMode(); } + else if constexpr (__id == 17) { return ingressMirror(); } + else if constexpr (__id == 18) { return egressMirror(); } + else if constexpr (__id == 19) { return qosPolicy(); } + else if constexpr (__id == 20) { return sampleDest(); } + else if constexpr (__id == 21) { return portProfileID(); } + else if constexpr (__id == 22) { return lookupClassesToDistrubuteTrafficOn(); } + else if constexpr (__id == 23) { return maxFrameSize(); } + else if constexpr (__id == 24) { return pfc(); } + else if constexpr (__id == 25) { return pgConfigs(); } + else if constexpr (__id == 26) { return profileConfig(); } + else if constexpr (__id == 27) { return pinConfigs(); } + else if constexpr (__id == 28) { return lineProfileConfig(); } + else if constexpr (__id == 29) { return linePinConfigs(); } + else if constexpr (__id == 30) { return portType(); } + else if constexpr (__id == 31) { return iPhyLinkFaultStatus(); } + else if constexpr (__id == 32) { return asicPrbs(); } + else if constexpr (__id == 33) { return gbSystemPrbs(); } + else if constexpr (__id == 34) { return gbLinePrbs(); } + else if constexpr (__id == 35) { return pfcPriorities(); } + else if constexpr (__id == 36) { return expectedLLDPValues(); } + else if constexpr (__id == 37) { return rxSecureAssociationKeys(); } + else if constexpr (__id == 38) { return txSecureAssociationKey(); } + else if constexpr (__id == 39) { return macsecDesired(); } + else if constexpr (__id == 40) { return dropUnencrypted(); } + else if constexpr (__id == 41) { return interfaceIDs(); } + else if constexpr (__id == 42) { return expectedNeighborReachability(); } + else if constexpr (__id == 43) { return drainState(); } + else if constexpr (__id == 44) { return flowletConfigName(); } + else if constexpr (__id == 45) { return flowletConfig(); } + else if constexpr (__id == 46) { return portLedExternalState(); } + else if constexpr (__id == 47) { return rxLaneSquelch(); } + else if constexpr (__id == 48) { return zeroPreemphasis(); } + else if constexpr (__id == 49) { return portActiveState(); } + else if constexpr (__id == 50) { return disableTTLDecrement(); } + else if constexpr (__id == 51) { return txEnable(); } + else if constexpr (__id == 52) { return activeErrors(); } + else if constexpr (__id == 53) { return scope(); } + else if constexpr (__id == 54) { return reachabilityGroupId(); } + else if constexpr (__id == 55) { return conditionalEntropyRehash(); } } template @@ -17152,43 +17454,43 @@ std::pair -class ChildThriftPath<::std::vector<::facebook::fboss::PortError>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::std::map<::facebook::fboss::cfg::PortFlowletConfigName, ::facebook::fboss::cfg::PortFlowletConfig>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::vector<::facebook::fboss::PortError>, + ::std::map<::facebook::fboss::cfg::PortFlowletConfigName, ::facebook::fboss::cfg::PortFlowletConfig>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::enumeration>, - ::apache::thrift::type::list<::apache::thrift::type::enum_t<::facebook::fboss::PortError>>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::cfg::PortFlowletConfig>>, Parent> { public: using Self = Path< - ::std::vector<::facebook::fboss::PortError>, + ::std::map<::facebook::fboss::cfg::PortFlowletConfigName, ::facebook::fboss::cfg::PortFlowletConfig>, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::list<::apache::thrift::type_class::enumeration>, - ::apache::thrift::type::list<::apache::thrift::type::enum_t<::facebook::fboss::PortError>>, + ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>, + ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::cfg::PortFlowletConfig>>, Parent>; - using Child = Path<::facebook::fboss::PortError, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::PortError>, Self>; + using Child = ChildThriftPath<::facebook::fboss::cfg::PortFlowletConfig, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; using Self::Self; - CONTAINER_CHILD_GETTERS(::std::int32_t); + CONTAINER_CHILD_GETTERS(::facebook::fboss::cfg::PortFlowletConfigName); }; template -class ChildThriftPath<::facebook::fboss::state::FibContainerFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::mka::MKASak, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::state::FibContainerFields, + ::facebook::fboss::mka::MKASak, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::state::FibContainerFields>, + ::apache::thrift::type::struct_t<::facebook::fboss::mka::MKASak>, Parent> { public: using Self = Path< - ::facebook::fboss::state::FibContainerFields, + ::facebook::fboss::mka::MKASak, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::state::FibContainerFields>, + ::apache::thrift::type::struct_t<::facebook::fboss::mka::MKASak>, Parent>; - using strings = ::facebook::fboss::state::switch_state_tags::strings; + using strings = ::facebook::fboss::mka::mka_structs_tags::strings; template using Child = Path< ChildType, @@ -17197,30 +17499,55 @@ class ChildThriftPath<::facebook::fboss::state::FibContainerFields, ::facebook:: ChildTag, Self >; - using Children = fatal::tuple>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; - using ChildrenById = fatal::tuple< std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, - std::pair, ChildThriftPath<::std::map<::std::string, ::facebook::fboss::state::RouteFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::map<::std::string, ::facebook::fboss::state::RouteFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + using Children = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>>, +std::pair>, +std::pair>>; + using ChildrenById = fatal::tuple< std::pair, ChildThriftPath<::facebook::fboss::mka::MKASci, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, Child<::facebook::fboss::mka::MKAConfidentialityOffset, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::mka::MKAConfidentialityOffset>>>, + std::pair, Child>, + std::pair, Child>>; template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(vrf, 1); - STRUCT_CHILD_GETTERS(fibV4, 2); - STRUCT_CHILD_GETTERS(fibV6, 3); + STRUCT_CHILD_GETTERS(sci, 1); + STRUCT_CHILD_GETTERS(l2Port, 2); + STRUCT_CHILD_GETTERS(assocNum, 3); + STRUCT_CHILD_GETTERS(keyHex, 4); + STRUCT_CHILD_GETTERS(keyIdHex, 5); + STRUCT_CHILD_GETTERS(confidentOffset, 6); + STRUCT_CHILD_GETTERS(primary, 7); + STRUCT_CHILD_GETTERS(dropUnencrypted, 8); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return vrf(); } - else if constexpr (__id == 2) { return fibV4(); } - else if constexpr (__id == 3) { return fibV6(); } + if constexpr (__id == 1) { return sci(); } + else if constexpr (__id == 2) { return l2Port(); } + else if constexpr (__id == 3) { return assocNum(); } + else if constexpr (__id == 4) { return keyHex(); } + else if constexpr (__id == 5) { return keyIdHex(); } + else if constexpr (__id == 6) { return confidentOffset(); } + else if constexpr (__id == 7) { return primary(); } + else if constexpr (__id == 8) { return dropUnencrypted(); } } template @@ -17231,21 +17558,21 @@ std::pair> template -class ChildThriftPath<::facebook::fboss::PortQueueFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::state::MacEntryFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::PortQueueFields, + ::facebook::fboss::state::MacEntryFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::PortQueueFields>, + ::apache::thrift::type::struct_t<::facebook::fboss::state::MacEntryFields>, Parent> { public: using Self = Path< - ::facebook::fboss::PortQueueFields, + ::facebook::fboss::state::MacEntryFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::PortQueueFields>, + ::apache::thrift::type::struct_t<::facebook::fboss::state::MacEntryFields>, Parent>; - using strings = ::facebook::fboss::ctrl_tags::strings; + using strings = ::facebook::fboss::state::switch_state_tags::strings; template using Child = Path< ChildType, @@ -17254,105 +17581,108 @@ class ChildThriftPath<::facebook::fboss::PortQueueFields, ::facebook::fboss::fsd ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair>, -std::pair>, -std::pair>>; - using ChildrenById = fatal::tuple< std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::ActiveQueueManagement>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, ChildThriftPath<::facebook::fboss::cfg::PortQueueRate, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, - std::pair, ChildThriftPath<::std::vector<::std::int16_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, ChildThriftPath<::facebook::fboss::BufferPoolFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + using Children = fatal::tuple>, +std::pair>, +std::pair>>, +std::pair>>>; + using ChildrenById = fatal::tuple< std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, ChildThriftPath<::facebook::fboss::cfg::PortDescriptor, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, Child<::facebook::fboss::cfg::AclLookupClass, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::AclLookupClass>>>, + std::pair, Child<::facebook::fboss::state::MacEntryType, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::state::MacEntryType>>>>; template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(id, 1); - STRUCT_CHILD_GETTERS(weight, 2); - STRUCT_CHILD_GETTERS(reserved, 3); - STRUCT_CHILD_GETTERS(scalingFactor, 4); - STRUCT_CHILD_GETTERS(scheduling, 5); - STRUCT_CHILD_GETTERS(streamType, 6); - STRUCT_CHILD_GETTERS(aqms, 7); - STRUCT_CHILD_GETTERS(name, 8); - STRUCT_CHILD_GETTERS(packetsPerSec_DEPRECATED, 10); - STRUCT_CHILD_GETTERS(sharedBytes, 11); - STRUCT_CHILD_GETTERS(portQueueRate, 12); - STRUCT_CHILD_GETTERS(bandwidthBurstMinKbits, 13); - STRUCT_CHILD_GETTERS(bandwidthBurstMaxKbits, 14); - STRUCT_CHILD_GETTERS(trafficClass, 15); - STRUCT_CHILD_GETTERS(pfcPriorities, 16); - STRUCT_CHILD_GETTERS(maxDynamicSharedBytes, 17); - STRUCT_CHILD_GETTERS(bufferPoolName, 18); - STRUCT_CHILD_GETTERS(bufferPoolConfig, 19); + STRUCT_CHILD_GETTERS(mac, 1); + STRUCT_CHILD_GETTERS(portId, 2); + STRUCT_CHILD_GETTERS(classID, 3); + STRUCT_CHILD_GETTERS(type, 4); + + template + auto operator()(const std::integral_constant&) { + if constexpr (__id == 1) { return mac(); } + else if constexpr (__id == 2) { return portId(); } + else if constexpr (__id == 3) { return classID(); } + else if constexpr (__id == 4) { return type(); } + } + + template + auto operator()(const fatal::sequence&) { + return operator()(NameToId>()); + } +}; + +template +class ChildThriftPath<::std::vector<::facebook::fboss::cfg::Mirror>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : + public Path< + ::std::vector<::facebook::fboss::cfg::Mirror>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::Mirror>>, + Parent> { + public: + using Self = Path< + ::std::vector<::facebook::fboss::cfg::Mirror>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::Mirror>>, + Parent>; + using Child = ChildThriftPath<::facebook::fboss::cfg::Mirror, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Self::Self; + + CONTAINER_CHILD_GETTERS(::std::int32_t); +}; + + +template +class ChildThriftPath<::facebook::fboss::cfg::Lacp, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : + public Path< + ::facebook::fboss::cfg::Lacp, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::structure, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::Lacp>, + Parent> { + public: + using Self = Path< + ::facebook::fboss::cfg::Lacp, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::structure, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::Lacp>, + Parent>; + using strings = ::facebook::fboss::cfg::switch_config_tags::strings; + template + using Child = Path< + ChildType, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ChildTC, + ChildTag, + Self + >; + using Children = fatal::tuple>, +std::pair>>; + using ChildrenById = fatal::tuple< std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>>; + template + using NameToId = fatal::tuple>, +std::pair>>::template type_of; + + template + using TypeFor = typename Children::template type_of; + using Self::Self; + + STRUCT_CHILD_GETTERS(systemID, 1); + STRUCT_CHILD_GETTERS(systemPriority, 2); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return id(); } - else if constexpr (__id == 2) { return weight(); } - else if constexpr (__id == 3) { return reserved(); } - else if constexpr (__id == 4) { return scalingFactor(); } - else if constexpr (__id == 5) { return scheduling(); } - else if constexpr (__id == 6) { return streamType(); } - else if constexpr (__id == 7) { return aqms(); } - else if constexpr (__id == 8) { return name(); } - else if constexpr (__id == 10) { return packetsPerSec_DEPRECATED(); } - else if constexpr (__id == 11) { return sharedBytes(); } - else if constexpr (__id == 12) { return portQueueRate(); } - else if constexpr (__id == 13) { return bandwidthBurstMinKbits(); } - else if constexpr (__id == 14) { return bandwidthBurstMaxKbits(); } - else if constexpr (__id == 15) { return trafficClass(); } - else if constexpr (__id == 16) { return pfcPriorities(); } - else if constexpr (__id == 17) { return maxDynamicSharedBytes(); } - else if constexpr (__id == 18) { return bufferPoolName(); } - else if constexpr (__id == 19) { return bufferPoolConfig(); } + if constexpr (__id == 1) { return systemID(); } + else if constexpr (__id == 2) { return systemPriority(); } } template @@ -17363,21 +17693,21 @@ std::pair -class ChildThriftPath<::facebook::fboss::state::NeighborEntryFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::BufferPoolFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::state::NeighborEntryFields, + ::facebook::fboss::BufferPoolFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::state::NeighborEntryFields>, + ::apache::thrift::type::struct_t<::facebook::fboss::BufferPoolFields>, Parent> { public: using Self = Path< - ::facebook::fboss::state::NeighborEntryFields, + ::facebook::fboss::BufferPoolFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::state::NeighborEntryFields>, + ::apache::thrift::type::struct_t<::facebook::fboss::BufferPoolFields>, Parent>; - using strings = ::facebook::fboss::state::switch_state_tags::strings; + using strings = ::facebook::fboss::common_tags::strings; template using Child = Path< ChildType, @@ -17386,75 +17716,35 @@ class ChildThriftPath<::facebook::fboss::state::NeighborEntryFields, ::facebook: ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>, -std::pair>>, -std::pair>>, -std::pair>, -std::pair>, -std::pair>>, -std::pair>, -std::pair>, -std::pair>>; + using Children = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>>; using ChildrenById = fatal::tuple< std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, ChildThriftPath<::facebook::fboss::cfg::PortDescriptor, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::facebook::fboss::state::NeighborState, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::state::NeighborState>>>, - std::pair, Child<::facebook::fboss::cfg::AclLookupClass, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::AclLookupClass>>>, - std::pair, Child<::std::int64_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i64_t>>, - std::pair, Child>, - std::pair, Child<::facebook::fboss::state::NeighborEntryType, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::state::NeighborEntryType>>>, - std::pair, Child<::std::int64_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i64_t>>, - std::pair, Child>, - std::pair, Child>>; + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>>; template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(ipaddress, 1); - STRUCT_CHILD_GETTERS(mac, 2); - STRUCT_CHILD_GETTERS(portId, 3); - STRUCT_CHILD_GETTERS(interfaceId, 4); - STRUCT_CHILD_GETTERS(state, 5); - STRUCT_CHILD_GETTERS(classID, 6); - STRUCT_CHILD_GETTERS(encapIndex, 7); - STRUCT_CHILD_GETTERS(isLocal, 8); - STRUCT_CHILD_GETTERS(type, 9); - STRUCT_CHILD_GETTERS(resolvedSince, 10); - STRUCT_CHILD_GETTERS(noHostRoute, 11); - STRUCT_CHILD_GETTERS(disableTTLDecrement, 12); + STRUCT_CHILD_GETTERS(id, 1); + STRUCT_CHILD_GETTERS(headroomBytes, 2); + STRUCT_CHILD_GETTERS(sharedBytes, 3); + STRUCT_CHILD_GETTERS(reservedBytes, 4); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return ipaddress(); } - else if constexpr (__id == 2) { return mac(); } - else if constexpr (__id == 3) { return portId(); } - else if constexpr (__id == 4) { return interfaceId(); } - else if constexpr (__id == 5) { return state(); } - else if constexpr (__id == 6) { return classID(); } - else if constexpr (__id == 7) { return encapIndex(); } - else if constexpr (__id == 8) { return isLocal(); } - else if constexpr (__id == 9) { return type(); } - else if constexpr (__id == 10) { return resolvedSince(); } - else if constexpr (__id == 11) { return noHostRoute(); } - else if constexpr (__id == 12) { return disableTTLDecrement(); } + if constexpr (__id == 1) { return id(); } + else if constexpr (__id == 2) { return headroomBytes(); } + else if constexpr (__id == 3) { return sharedBytes(); } + else if constexpr (__id == 4) { return reservedBytes(); } } template @@ -17463,42 +17753,73 @@ std::pair -class ChildThriftPath<::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::string, ::facebook::fboss::state::PortFlowletFields>>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::cfg::MirrorEgressPort, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::string, ::facebook::fboss::state::PortFlowletFields>>, + ::facebook::fboss::cfg::MirrorEgressPort, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>>, - ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::PortFlowletFields>>>, + ::apache::thrift::type_class::variant, + ::apache::thrift::type::union_t<::facebook::fboss::cfg::MirrorEgressPort>, Parent> { public: using Self = Path< - ::std::map<::facebook::fboss::state::SwitchIdList, ::std::map<::std::string, ::facebook::fboss::state::PortFlowletFields>>, + ::facebook::fboss::cfg::MirrorEgressPort, ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>>, - ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::struct_t<::facebook::fboss::state::PortFlowletFields>>>, + ::apache::thrift::type_class::variant, + ::apache::thrift::type::union_t<::facebook::fboss::cfg::MirrorEgressPort>, Parent>; - using Child = ChildThriftPath<::std::map<::std::string, ::facebook::fboss::state::PortFlowletFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using strings = ::facebook::fboss::cfg::switch_config_tags::strings; + template + using Child = Path< + ChildType, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ChildTC, + ChildTag, + Self + >; + using Children = fatal::tuple>, +std::pair>>; + using ChildrenById = fatal::tuple< std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>>; + template + using NameToId = fatal::tuple>, +std::pair>>::template type_of; + + template + using TypeFor = typename Children::template type_of; using Self::Self; + + STRUCT_CHILD_GETTERS(name, 1); + STRUCT_CHILD_GETTERS(logicalID, 2); - CONTAINER_CHILD_GETTERS(::facebook::fboss::state::SwitchIdList); + template + auto operator()(const std::integral_constant&) { + if constexpr (__id == 1) { return name(); } + else if constexpr (__id == 2) { return logicalID(); } + } + + template + auto operator()(const fatal::sequence&) { + return operator()(NameToId>()); + } }; template -class ChildThriftPath<::facebook::fboss::state::LabelForwardingEntryFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::state::VlanInfo, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::state::LabelForwardingEntryFields, + ::facebook::fboss::state::VlanInfo, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::state::LabelForwardingEntryFields>, + ::apache::thrift::type::struct_t<::facebook::fboss::state::VlanInfo>, Parent> { public: using Self = Path< - ::facebook::fboss::state::LabelForwardingEntryFields, + ::facebook::fboss::state::VlanInfo, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::state::LabelForwardingEntryFields>, + ::apache::thrift::type::struct_t<::facebook::fboss::state::VlanInfo>, Parent>; using strings = ::facebook::fboss::state::switch_state_tags::strings; template @@ -17509,40 +17830,20 @@ class ChildThriftPath<::facebook::fboss::state::LabelForwardingEntryFields, ::fa ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>, -std::pair>>>; - using ChildrenById = fatal::tuple< std::pair, ChildThriftPath<::facebook::fboss::state::Label, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::facebook::fboss::state::RouteNextHopsMulti, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::facebook::fboss::state::RouteNextHopEntry, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, - std::pair, Child<::facebook::fboss::cfg::AclLookupClass, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::AclLookupClass>>>>; + using Children = fatal::tuple>>; + using ChildrenById = fatal::tuple< std::pair, Child>>; template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(label, 1); - STRUCT_CHILD_GETTERS(nexthopsmulti, 2); - STRUCT_CHILD_GETTERS(fwd, 3); - STRUCT_CHILD_GETTERS(flags, 4); - STRUCT_CHILD_GETTERS(classID, 5); + STRUCT_CHILD_GETTERS(tagged, 1); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return label(); } - else if constexpr (__id == 2) { return nexthopsmulti(); } - else if constexpr (__id == 3) { return fwd(); } - else if constexpr (__id == 4) { return flags(); } - else if constexpr (__id == 5) { return classID(); } + if constexpr (__id == 1) { return tagged(); } } template @@ -17551,23 +17852,65 @@ std::pair +class ChildThriftPath<::std::map<::std::int64_t, ::facebook::fboss::switch_reachability::SwitchReachability>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : + public Path< + ::std::map<::std::int64_t, ::facebook::fboss::switch_reachability::SwitchReachability>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>, + ::apache::thrift::type::map<::apache::thrift::type::i64_t, ::apache::thrift::type::struct_t<::facebook::fboss::switch_reachability::SwitchReachability>>, + Parent> { + public: + using Self = Path< + ::std::map<::std::int64_t, ::facebook::fboss::switch_reachability::SwitchReachability>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::structure>, + ::apache::thrift::type::map<::apache::thrift::type::i64_t, ::apache::thrift::type::struct_t<::facebook::fboss::switch_reachability::SwitchReachability>>, + Parent>; + using Child = ChildThriftPath<::facebook::fboss::switch_reachability::SwitchReachability, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Self::Self; + + CONTAINER_CHILD_GETTERS(::std::int64_t); +}; + +template +class ChildThriftPath<::std::vector<::facebook::fboss::cfg::Neighbor>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : + public Path< + ::std::vector<::facebook::fboss::cfg::Neighbor>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::Neighbor>>, + Parent> { + public: + using Self = Path< + ::std::vector<::facebook::fboss::cfg::Neighbor>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::list<::apache::thrift::type_class::structure>, + ::apache::thrift::type::list<::apache::thrift::type::struct_t<::facebook::fboss::cfg::Neighbor>>, + Parent>; + using Child = ChildThriftPath<::facebook::fboss::cfg::Neighbor, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; + using Self::Self; + + CONTAINER_CHILD_GETTERS(::std::int32_t); +}; + template -class ChildThriftPath<::facebook::fboss::phy::PortPrbsState, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::state::MKASakKey, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::phy::PortPrbsState, + ::facebook::fboss::state::MKASakKey, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::phy::PortPrbsState>, + ::apache::thrift::type::struct_t<::facebook::fboss::state::MKASakKey>, Parent> { public: using Self = Path< - ::facebook::fboss::phy::PortPrbsState, + ::facebook::fboss::state::MKASakKey, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::phy::PortPrbsState>, + ::apache::thrift::type::struct_t<::facebook::fboss::state::MKASakKey>, Parent>; - using strings = ::facebook::fboss::phy::phy_tags::strings; + using strings = ::facebook::fboss::state::switch_state_tags::strings; template using Child = Path< ChildType, @@ -17576,25 +17919,25 @@ class ChildThriftPath<::facebook::fboss::phy::PortPrbsState, ::facebook::fboss:: ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>>; - using ChildrenById = fatal::tuple< std::pair, Child>, + using Children = fatal::tuple>, +std::pair>>; + using ChildrenById = fatal::tuple< std::pair, ChildThriftPath<::facebook::fboss::mka::MKASci, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>>; template - using NameToId = fatal::tuple>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(enabled, 1); - STRUCT_CHILD_GETTERS(polynominal, 2); + STRUCT_CHILD_GETTERS(sci, 1); + STRUCT_CHILD_GETTERS(associationNum, 2); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return enabled(); } - else if constexpr (__id == 2) { return polynominal(); } + if constexpr (__id == 1) { return sci(); } + else if constexpr (__id == 2) { return associationNum(); } } template @@ -17605,19 +17948,19 @@ std::pair -class ChildThriftPath<::facebook::fboss::cfg::QosMap, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::cfg::SwitchInfo, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::cfg::QosMap, + ::facebook::fboss::cfg::SwitchInfo, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::QosMap>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::SwitchInfo>, Parent> { public: using Self = Path< - ::facebook::fboss::cfg::QosMap, + ::facebook::fboss::cfg::SwitchInfo, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::cfg::QosMap>, + ::apache::thrift::type::struct_t<::facebook::fboss::cfg::SwitchInfo>, Parent>; using strings = ::facebook::fboss::cfg::switch_config_tags::strings; template @@ -17628,50 +17971,70 @@ class ChildThriftPath<::facebook::fboss::cfg::QosMap, ::facebook::fboss::fsdb::F ChildTag, Self >; - using Children = fatal::tuple, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; - using ChildrenById = fatal::tuple< std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::DscpQosMap>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::vector<::facebook::fboss::cfg::ExpQosMap>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::map<::std::int16_t, ::std::int16_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::map<::std::int16_t, ::std::int16_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::map<::std::int16_t, ::std::int16_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::map<::std::int16_t, ::std::int16_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, ChildThriftPath<::std::map<::std::int16_t, ::std::int16_t>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + using Children = fatal::tuple>>, +std::pair>>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>>; + using ChildrenById = fatal::tuple< std::pair, Child<::facebook::fboss::cfg::SwitchType, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::SwitchType>>>, + std::pair, Child<::facebook::fboss::cfg::AsicType, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::AsicType>>>, + std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, + std::pair, ChildThriftPath<::facebook::fboss::cfg::Range64, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::facebook::fboss::cfg::Range64, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, + std::pair, ChildThriftPath<::facebook::fboss::cfg::SystemPortRanges, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>, + std::pair, Child<::std::int32_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i32_t>>>; template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(dscpMaps, 1); - STRUCT_CHILD_GETTERS(expMaps, 2); - STRUCT_CHILD_GETTERS(trafficClassToQueueId, 3); - STRUCT_CHILD_GETTERS(pfcPriorityToQueueId, 4); - STRUCT_CHILD_GETTERS(trafficClassToPgId, 5); - STRUCT_CHILD_GETTERS(pfcPriorityToPgId, 6); - STRUCT_CHILD_GETTERS(trafficClassToVoqId, 7); + STRUCT_CHILD_GETTERS(switchType, 1); + STRUCT_CHILD_GETTERS(asicType, 2); + STRUCT_CHILD_GETTERS(switchIndex, 3); + STRUCT_CHILD_GETTERS(portIdRange, 4); + STRUCT_CHILD_GETTERS(systemPortRange_DEPRECATED, 5); + STRUCT_CHILD_GETTERS(switchMac, 6); + STRUCT_CHILD_GETTERS(connectionHandle, 7); + STRUCT_CHILD_GETTERS(systemPortRanges, 8); + STRUCT_CHILD_GETTERS(localSystemPortOffset, 9); + STRUCT_CHILD_GETTERS(globalSystemPortOffset, 10); + STRUCT_CHILD_GETTERS(inbandPortId, 11); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return dscpMaps(); } - else if constexpr (__id == 2) { return expMaps(); } - else if constexpr (__id == 3) { return trafficClassToQueueId(); } - else if constexpr (__id == 4) { return pfcPriorityToQueueId(); } - else if constexpr (__id == 5) { return trafficClassToPgId(); } - else if constexpr (__id == 6) { return pfcPriorityToPgId(); } - else if constexpr (__id == 7) { return trafficClassToVoqId(); } + if constexpr (__id == 1) { return switchType(); } + else if constexpr (__id == 2) { return asicType(); } + else if constexpr (__id == 3) { return switchIndex(); } + else if constexpr (__id == 4) { return portIdRange(); } + else if constexpr (__id == 5) { return systemPortRange_DEPRECATED(); } + else if constexpr (__id == 6) { return switchMac(); } + else if constexpr (__id == 7) { return connectionHandle(); } + else if constexpr (__id == 8) { return systemPortRanges(); } + else if constexpr (__id == 9) { return localSystemPortOffset(); } + else if constexpr (__id == 10) { return globalSystemPortOffset(); } + else if constexpr (__id == 11) { return inbandPortId(); } } template @@ -17680,23 +18043,44 @@ std::pair +class ChildThriftPath<::std::vector<::facebook::fboss::PortError>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : + public Path< + ::std::vector<::facebook::fboss::PortError>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::list<::apache::thrift::type_class::enumeration>, + ::apache::thrift::type::list<::apache::thrift::type::enum_t<::facebook::fboss::PortError>>, + Parent> { + public: + using Self = Path< + ::std::vector<::facebook::fboss::PortError>, + ::facebook::fboss::fsdb::FsdbOperStateRoot, + ::apache::thrift::type_class::list<::apache::thrift::type_class::enumeration>, + ::apache::thrift::type::list<::apache::thrift::type::enum_t<::facebook::fboss::PortError>>, + Parent>; + using Child = Path<::facebook::fboss::PortError, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::PortError>, Self>; + using Self::Self; + + CONTAINER_CHILD_GETTERS(::std::int32_t); +}; + template -class ChildThriftPath<::facebook::fboss::SystemPortThrift, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : +class ChildThriftPath<::facebook::fboss::state::FibContainerFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : public Path< - ::facebook::fboss::SystemPortThrift, + ::facebook::fboss::state::FibContainerFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::SystemPortThrift>, + ::apache::thrift::type::struct_t<::facebook::fboss::state::FibContainerFields>, Parent> { public: using Self = Path< - ::facebook::fboss::SystemPortThrift, + ::facebook::fboss::state::FibContainerFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, ::apache::thrift::type_class::structure, - ::apache::thrift::type::struct_t<::facebook::fboss::SystemPortThrift>, + ::apache::thrift::type::struct_t<::facebook::fboss::state::FibContainerFields>, Parent>; - using strings = ::facebook::fboss::ctrl_tags::strings; + using strings = ::facebook::fboss::state::switch_state_tags::strings; template using Child = Path< ChildType, @@ -17705,80 +18089,30 @@ class ChildThriftPath<::facebook::fboss::SystemPortThrift, ::facebook::fboss::fs ChildTag, Self >; - using Children = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, -std::pair>>, -std::pair>>, -std::pair>>>; - using ChildrenById = fatal::tuple< std::pair, Child<::std::int64_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i64_t>>, - std::pair, Child<::std::int64_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i64_t>>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, Child<::std::int64_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i64_t>>, - std::pair, Child<::std::int64_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i64_t>>, - std::pair, Child<::std::int64_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i64_t>>, - std::pair, Child<::std::int64_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i64_t>>, - std::pair, Child>, - std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, - std::pair, ChildThriftPath<::std::vector<::facebook::fboss::PortQueueFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, - std::pair, Child<::facebook::fboss::RemoteSystemPortType, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::RemoteSystemPortType>>>, - std::pair, Child<::facebook::fboss::LivenessStatus, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::LivenessStatus>>>, - std::pair, Child<::facebook::fboss::cfg::Scope, ::apache::thrift::type_class::enumeration, ::apache::thrift::type::enum_t<::facebook::fboss::cfg::Scope>>>>; + using Children = fatal::tuple>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, +std::pair, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; + using ChildrenById = fatal::tuple< std::pair, Child<::std::int16_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i16_t>>, + std::pair, ChildThriftPath<::std::map<::std::string, ::facebook::fboss::state::RouteFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>, + std::pair, ChildThriftPath<::std::map<::std::string, ::facebook::fboss::state::RouteFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>>>; template - using NameToId = fatal::tuple>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>, -std::pair>>::template type_of; + using NameToId = fatal::tuple>, +std::pair>, +std::pair>>::template type_of; template using TypeFor = typename Children::template type_of; using Self::Self; - STRUCT_CHILD_GETTERS(portId, 1); - STRUCT_CHILD_GETTERS(switchId, 2); - STRUCT_CHILD_GETTERS(portName, 3); - STRUCT_CHILD_GETTERS(coreIndex, 4); - STRUCT_CHILD_GETTERS(corePortIndex, 5); - STRUCT_CHILD_GETTERS(speedMbps, 6); - STRUCT_CHILD_GETTERS(numVoqs, 7); - STRUCT_CHILD_GETTERS(enabled_DEPRECATED, 9); - STRUCT_CHILD_GETTERS(qosPolicy, 10); - STRUCT_CHILD_GETTERS(queues, 11); - STRUCT_CHILD_GETTERS(remoteSystemPortType, 12); - STRUCT_CHILD_GETTERS(remoteSystemPortLivenessStatus, 13); - STRUCT_CHILD_GETTERS(scope, 14); + STRUCT_CHILD_GETTERS(vrf, 1); + STRUCT_CHILD_GETTERS(fibV4, 2); + STRUCT_CHILD_GETTERS(fibV6, 3); template auto operator()(const std::integral_constant&) { - if constexpr (__id == 1) { return portId(); } - else if constexpr (__id == 2) { return switchId(); } - else if constexpr (__id == 3) { return portName(); } - else if constexpr (__id == 4) { return coreIndex(); } - else if constexpr (__id == 5) { return corePortIndex(); } - else if constexpr (__id == 6) { return speedMbps(); } - else if constexpr (__id == 7) { return numVoqs(); } - else if constexpr (__id == 9) { return enabled_DEPRECATED(); } - else if constexpr (__id == 10) { return qosPolicy(); } - else if constexpr (__id == 11) { return queues(); } - else if constexpr (__id == 12) { return remoteSystemPortType(); } - else if constexpr (__id == 13) { return remoteSystemPortLivenessStatus(); } - else if constexpr (__id == 14) { return scope(); } + if constexpr (__id == 1) { return vrf(); } + else if constexpr (__id == 2) { return fibV4(); } + else if constexpr (__id == 3) { return fibV6(); } } template @@ -17787,27 +18121,6 @@ std::pair } }; -template -class ChildThriftPath<::std::map<::facebook::fboss::cfg::AclStage, ::facebook::fboss::state::AclTableGroupFields>, ::facebook::fboss::fsdb::FsdbOperStateRoot, Parent> : - public Path< - ::std::map<::facebook::fboss::cfg::AclStage, ::facebook::fboss::state::AclTableGroupFields>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::enumeration, ::apache::thrift::type_class::structure>, - ::apache::thrift::type::map<::apache::thrift::type::enum_t<::facebook::fboss::cfg::AclStage>, ::apache::thrift::type::struct_t<::facebook::fboss::state::AclTableGroupFields>>, - Parent> { - public: - using Self = Path< - ::std::map<::facebook::fboss::cfg::AclStage, ::facebook::fboss::state::AclTableGroupFields>, - ::facebook::fboss::fsdb::FsdbOperStateRoot, - ::apache::thrift::type_class::map<::apache::thrift::type_class::enumeration, ::apache::thrift::type_class::structure>, - ::apache::thrift::type::map<::apache::thrift::type::enum_t<::facebook::fboss::cfg::AclStage>, ::apache::thrift::type::struct_t<::facebook::fboss::state::AclTableGroupFields>>, - Parent>; - using Child = ChildThriftPath<::facebook::fboss::state::AclTableGroupFields, ::facebook::fboss::fsdb::FsdbOperStateRoot, Self>; - using Self::Self; - - CONTAINER_CHILD_GETTERS(::facebook::fboss::cfg::AclStage); -}; - template<> @@ -20979,6 +21292,7 @@ std::pair, ::facebook::fboss::fsdb::FsdbOperStatsRoot, Self>>, std::pair>, std::pair>, +std::pair>, std::pair>, std::pair>, std::pair>, @@ -21033,6 +21347,7 @@ std::pair, ChildThriftPath<::std::map<::std::int16_t, ::std::int64_t>, ::facebook::fboss::fsdb::FsdbOperStatsRoot, Self>>, std::pair, Child<::std::int64_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i64_t>>, std::pair, Child<::std::int64_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i64_t>>, + std::pair, Child<::std::int64_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i64_t>>, std::pair, Child<::std::int64_t, ::apache::thrift::type_class::integral, ::apache::thrift::type::i64_t>>, std::pair, Child<::std::string, ::apache::thrift::type_class::string, ::apache::thrift::type::string_t>>, std::pair, ChildThriftPath<::facebook::fboss::MacsecStats, ::facebook::fboss::fsdb::FsdbOperStatsRoot, Self>>, @@ -21088,6 +21403,7 @@ std::pair>, std::pair>, std::pair>, +std::pair>, std::pair>, std::pair>, std::pair>, @@ -21147,6 +21463,7 @@ std::pair -#include - namespace facebook::fboss::fsdb { void SubscriptionManagerBase::registerExtendedSubscription( diff --git a/fboss/fsdb/oper/test_client.cpp b/fboss/fsdb/oper/test_client.cpp index bd7f48d70bd2d..a0a9268381c0d 100644 --- a/fboss/fsdb/oper/test_client.cpp +++ b/fboss/fsdb/oper/test_client.cpp @@ -11,7 +11,6 @@ #include "fboss/fsdb/if/gen-cpp2/FsdbService.h" #include "fboss/fsdb/if/gen-cpp2/fsdb_common_constants.h" #include "fboss/fsdb/if/gen-cpp2/fsdb_common_types.h" -#include "fboss/thrift_cow/nodes/Serializer.h" #include "servicerouter/client/cpp2/ServiceRouter.h" using namespace facebook::fboss::fsdb; diff --git a/fboss/fsdb/oper/tests/SubscribableStorageTests.cpp b/fboss/fsdb/oper/tests/SubscribableStorageTests.cpp index 49fc7820c55ac..8cee157eb5211 100644 --- a/fboss/fsdb/oper/tests/SubscribableStorageTests.cpp +++ b/fboss/fsdb/oper/tests/SubscribableStorageTests.cpp @@ -1087,6 +1087,19 @@ CO_TEST_P(SubscribableStorageTests, SubscribeExtendedPatchUpdate) { ret = co_await co_awaitTry( folly::coro::timeout(consumeOne(generator), std::chrono::seconds(1))); EXPECT_FALSE(ret.hasException()); + + // remove value + storage.remove(root.stringToStruct()["test1"]); + ret = co_await co_awaitTry( + folly::coro::timeout(consumeOne(generator), std::chrono::seconds(1))); + EXPECT_FALSE(ret.hasException()); + SubscriberChunk subChunk = *ret->chunk_ref(); + EXPECT_EQ(subChunk.patchGroups()->size(), 1); + EXPECT_EQ(subChunk.patchGroups()->at(0).size(), 1); + auto patch = subChunk.patchGroups()->at(0).front(); + EXPECT_EQ(patch.basePath()->size(), 3); + EXPECT_EQ( + patch.patch()->getType(), facebook::fboss::thrift_cow::PatchNode::del); } CO_TEST_P(SubscribableStorageTests, SubscribeExtendedPatchMultipleChanges) { diff --git a/fboss/fsdb/server/BUCK b/fboss/fsdb/server/BUCK index e87c5894a80cf..e4d25cd1f35d3 100644 --- a/fboss/fsdb/server/BUCK +++ b/fboss/fsdb/server/BUCK @@ -32,6 +32,7 @@ cpp_library( ":fsdb_oper_metadata_tracker", "//common/fb303/cpp:fb303", "//fb303:thread_cached_service_data", + "//fboss/fsdb/common:flags", "//fboss/fsdb/common:utils", "//fboss/fsdb/if:fsdb-cpp2-services", "//fboss/fsdb/if:fsdb_common-cpp2-types", @@ -47,10 +48,10 @@ cpp_library( "//folly:synchronized", "//folly/container:f14_hash", "//folly/coro:blocking_wait", - "//folly/coro:timeout", "//folly/io/async:scoped_event_base_thread", "//folly/logging:logging", "//thrift/lib/cpp/server:server_event_handler", + "//thrift/lib/cpp2:server", "//thrift/lib/cpp2/protocol:protocol", ], exported_external_deps = ["re2"], @@ -76,6 +77,7 @@ cpp_library( "//fboss/facebook/bitsflow:bitsflow_helper", "//fboss/fsdb/common:flags", "//fboss/fsdb/common:utils", + "//fboss/fsdb/if:fsdb_common-cpp2-types", "//folly/init:init", "//folly/io/async:async_signal_handler", "//folly/logging:logging", diff --git a/fboss/fsdb/server/FsdbMain.cpp b/fboss/fsdb/server/FsdbMain.cpp index 53634e13fdd35..ba283557854a7 100644 --- a/fboss/fsdb/server/FsdbMain.cpp +++ b/fboss/fsdb/server/FsdbMain.cpp @@ -20,6 +20,7 @@ int fsdbMain(int argc, char** argv) { auto handler = createThriftHandler(fsdbConfig); auto server = createThriftServer(fsdbConfig, handler); + handler->setThriftServer(server); startThriftServer(server, handler); return 0; } diff --git a/fboss/fsdb/server/Server.cpp b/fboss/fsdb/server/Server.cpp index 9fbe66987345e..843a16019def4 100644 --- a/fboss/fsdb/server/Server.cpp +++ b/fboss/fsdb/server/Server.cpp @@ -13,8 +13,6 @@ #include "fboss/fsdb/server/ServiceHandler.h" #include "fboss/fsdb/server/ThriftAcceptor.h" -#include - using namespace std::chrono_literals; // @donotremove DEFINE_bool(readConfigFile, true, "Whether config file should be read"); @@ -126,7 +124,10 @@ std::shared_ptr createThriftServer( auto server = std::make_shared(); server->setInterface(handler); std::vector addresses; - for (auto port : {FLAGS_fsdbPort, FLAGS_migrated_fsdbPort}) { + for (auto port : + {FLAGS_fsdbPort_high_priority, + FLAGS_migrated_fsdbPort, + FLAGS_fsdbPort}) { folly::SocketAddress address; address.setFromLocalPort(port); addresses.push_back(address); @@ -141,6 +142,7 @@ std::shared_ptr createThriftServer( server->setSSLPolicy(getThriftServerSSLPolicy()); server->setQueueTimeout( std::chrono::milliseconds(FLAGS_fsdb_queue_timeout_ms)); + server->addServerEventHandler(handler); if (FLAGS_enable_thrift_acceptor) { auto trustedSubnets = getTrustedSubnets(fsdbConfig->getThrift().get_trustedSubnets()); diff --git a/fboss/fsdb/server/ServiceHandler.cpp b/fboss/fsdb/server/ServiceHandler.cpp index 78d195a355e7c..89f8e8ed16de9 100644 --- a/fboss/fsdb/server/ServiceHandler.cpp +++ b/fboss/fsdb/server/ServiceHandler.cpp @@ -5,8 +5,9 @@ #include #include -#include #include +#include +#include "fboss/fsdb/common/Flags.h" #include "fboss/fsdb/if/gen-cpp2/fsdb_common_constants.h" #include "fboss/fsdb/oper/PathValidator.h" #include "folly/CancellationToken.h" @@ -17,6 +18,12 @@ using namespace std::chrono_literals; // @donotremove +namespace apache { +namespace thrift { +class ThriftServer; +} // namespace thrift +} // namespace apache + DEFINE_int32(metricsTtl_s, 1 * 12 * 3600 /* twelve hours */, "TTL for metrics"); DEFINE_bool( @@ -1395,4 +1402,23 @@ void ServiceHandler::validateOperPublishPermissions( } } +void ServiceHandler::preStart(const folly::SocketAddress* /*address*/) { + if (!server_) { + return; + } + for (auto& socket : server_->getSockets()) { + folly::SocketAddress socketAddress = socket->getAddress(); + int port = socketAddress.getPort(); + if (port == FLAGS_fsdbPort_high_priority) { + // set tos = 0xc0, wherein dscp=48 (network control) + int tos = fsdb_common_constants::kTosForClassOfServiceNC(); + XLOG(INFO) << "set port " << port << " to tos=0xc0"; + socklen_t optsize = sizeof(tos); + folly::NetworkSocket netsocket = socket->getNetworkSocket(); + folly::netops::setsockopt( + netsocket, IPPROTO_IPV6, IPV6_TCLASS, &tos, optsize); + } + } +} + } // namespace facebook::fboss::fsdb diff --git a/fboss/fsdb/server/ServiceHandler.h b/fboss/fsdb/server/ServiceHandler.h index 0bea52f6a8b81..e3c7d717f57e0 100644 --- a/fboss/fsdb/server/ServiceHandler.h +++ b/fboss/fsdb/server/ServiceHandler.h @@ -203,6 +203,12 @@ class ServiceHandler : public FsdbServiceSvIf, return activePublishers_.copy(); } + void setThriftServer(std::shared_ptr server) { + server_ = server; + } + + void preStart(const folly::SocketAddress* /*address*/) override; + private: void registerSubscription( const OperSubscriberInfo& info, @@ -300,6 +306,7 @@ class ServiceHandler : public FsdbServiceSvIf, folly::Synchronized activeSubscriptions_; folly::Synchronized activePublishers_; + std::shared_ptr server_; }; } // namespace facebook::fboss::fsdb diff --git a/fboss/fsdb/server/ThriftAcceptor.h b/fboss/fsdb/server/ThriftAcceptor.h index e26ace111a4e0..57d3074945691 100644 --- a/fboss/fsdb/server/ThriftAcceptor.h +++ b/fboss/fsdb/server/ThriftAcceptor.h @@ -5,18 +5,7 @@ #include #include #include - -/** - * Default value sourced from Cfgr "neteng/qosdb/cos_utility_maps" - * dscpToClassOfServiceMap.ClassOfService.NC : 48 - * Rationale: In DSF clusters fsdb is a Tier 0 service required for - * bringing up network control plane and needs to be up with minimal - * dependencies. Therefore, sourcing the const in fbcode instead of - * a runtime configerator read. - * - * 8-bit TOS = 6-bit DSCP followed by 2-bit ECN - */ -const uint8_t kTosForClassOfServiceNC = 48 << 2; +#include "fboss/fsdb/if/gen-cpp2/fsdb_common_constants.h" namespace folly { class EventBase; @@ -134,7 +123,9 @@ class FsdbThriftAcceptorFactory final auto rc = folly::netops::getsockopt( netsocket, IPPROTO_IPV6, IPV6_TCLASS, &tos, &optsize); if (rc == 0) { - if (tos == kTosForClassOfServiceNC) { + // TODO(daiweix): also block connections to fsdbPort_high_priority + // port if not in trusted subnets + if (tos == fsdb_common_constants::kTosForClassOfServiceNC()) { XLOG(INFO) << "Reject connection with TOS(" << tos << ") from clientIp: " << clientIp.str() << ", not in trustedSubnets"; diff --git a/fboss/fsdb/tests/client/FsdbPublisherTest.cpp b/fboss/fsdb/tests/client/FsdbPublisherTest.cpp index 4bbb0b2a31dd2..76e2a6575ff71 100644 --- a/fboss/fsdb/tests/client/FsdbPublisherTest.cpp +++ b/fboss/fsdb/tests/client/FsdbPublisherTest.cpp @@ -14,7 +14,6 @@ #include #include -#include namespace { constexpr auto kPublisherId = "fsdb_test_publisher"; const std::vector kPublishRoot{"agent"}; diff --git a/fboss/fsdb/tests/client/FsdbTestClients.cpp b/fboss/fsdb/tests/client/FsdbTestClients.cpp index 1eacd35eb21ad..c6241f0ae9582 100644 --- a/fboss/fsdb/tests/client/FsdbTestClients.cpp +++ b/fboss/fsdb/tests/client/FsdbTestClients.cpp @@ -2,7 +2,6 @@ #include "fboss/fsdb/tests/client/FsdbTestClients.h" #include -#include "fboss/fsdb/if/FsdbModel.h" #include #include diff --git a/fboss/led_service/BUCK b/fboss/led_service/BUCK index 49f9e9fa6c9d1..1eac1cdb5866f 100644 --- a/fboss/led_service/BUCK +++ b/fboss/led_service/BUCK @@ -95,7 +95,6 @@ cpp_library( "//fboss/agent/platforms/common/yamp:yamp_platform_mapping", "//fboss/fsdb/client:fsdb_pub_sub", "//fboss/fsdb/client:fsdb_stream_client", - "//fboss/fsdb/common:flags", "//fboss/fsdb/if:fsdb_model", "//fboss/fsdb/if:fsdb_oper-cpp2-types", "//fboss/lib:common_file_utils", diff --git a/fboss/led_service/BspLedManager.cpp b/fboss/led_service/BspLedManager.cpp index 49f2220aed434..abdf27ab02f7c 100644 --- a/fboss/led_service/BspLedManager.cpp +++ b/fboss/led_service/BspLedManager.cpp @@ -4,8 +4,6 @@ #include #include "fboss/agent/EnumUtils.h" #include "fboss/lib/CommonFileUtils.h" -#include "fboss/lib/CommonPortUtils.h" -#include "fboss/lib/bsp/BspGenericSystemContainer.h" namespace facebook::fboss { diff --git a/fboss/led_service/FsdbSwitchStateSubscriber.cpp b/fboss/led_service/FsdbSwitchStateSubscriber.cpp index b9dedaa116883..6b2a7eb4a0904 100644 --- a/fboss/led_service/FsdbSwitchStateSubscriber.cpp +++ b/fboss/led_service/FsdbSwitchStateSubscriber.cpp @@ -4,7 +4,6 @@ #include #include #include "fboss/fsdb/client/FsdbPubSubManager.h" -#include "fboss/fsdb/common/Flags.h" #include "fboss/fsdb/if/gen-cpp2/fsdb_oper_types.h" #include "fboss/led_service/LedManager.h" diff --git a/fboss/led_service/LedManager.cpp b/fboss/led_service/LedManager.cpp index 7b863de8d5620..390586b7a3e43 100644 --- a/fboss/led_service/LedManager.cpp +++ b/fboss/led_service/LedManager.cpp @@ -2,11 +2,7 @@ #include "fboss/led_service/LedManager.h" #include "fboss/agent/EnumUtils.h" -#include "fboss/agent/platforms/common/darwin/DarwinPlatformMapping.h" -#include "fboss/agent/platforms/common/elbert/ElbertPlatformMapping.h" -#include "fboss/agent/platforms/common/fuji/FujiPlatformMapping.h" #include "fboss/lib/CommonFileUtils.h" -#include "fboss/lib/CommonPortUtils.h" #include "fboss/lib/platforms/PlatformProductInfo.h" namespace facebook::fboss { diff --git a/fboss/led_service/MinipackBaseLedManager.cpp b/fboss/led_service/MinipackBaseLedManager.cpp index e70a2af04bb47..f226f76b53bbb 100644 --- a/fboss/led_service/MinipackBaseLedManager.cpp +++ b/fboss/led_service/MinipackBaseLedManager.cpp @@ -3,7 +3,6 @@ #include "fboss/led_service/MinipackBaseLedManager.h" #include "fboss/agent/EnumUtils.h" #include "fboss/lib/CommonFileUtils.h" -#include "fboss/lib/CommonPortUtils.h" #include "fboss/lib/fpga/MinipackLed.h" namespace facebook::fboss { diff --git a/fboss/lib/bsp/morgan800cc/Morgan800ccBspPlatformMapping.cpp b/fboss/lib/bsp/morgan800cc/Morgan800ccBspPlatformMapping.cpp index 259a91168b870..96a2edbb2ff41 100644 --- a/fboss/lib/bsp/morgan800cc/Morgan800ccBspPlatformMapping.cpp +++ b/fboss/lib/bsp/morgan800cc/Morgan800ccBspPlatformMapping.cpp @@ -2254,6 +2254,35 @@ constexpr auto kJsonBspPlatformMappingStr = R"( "7": 128, "8": 128 } + }, + "65": { + "tcvrId": 65, + "accessControl": { + "controllerId": "65", + "type": 1, + "reset": { + "sysfsPath": "/run/devmap/xcvrs/xcvr_65/xcvr_reset", + "mask": 1, + "gpioOffset": 0, + "resetHoldHi": 0 + }, + "presence": { + "sysfsPath": "/run/devmap/xcvrs/xcvr_65/xcvr_present", + "mask": 1, + "gpioOffset": 0, + "presentHoldHi": 0 + }, + "gpioChip": "" + }, + "io": { + "controllerId": "65", + "type": 1, + "devicePath": "/run/devmap/i2c-busses/XCVR_65" + }, + "tcvrLaneToLedId": { + "1": 129, + "2": 129 + } } }, "phyMapping": { @@ -3030,6 +3059,12 @@ constexpr auto kJsonBspPlatformMappingStr = R"( "bluePath": "/sys/class/leds/port64_led2:blue:status", "yellowPath": "/sys/class/leds/port64_led2:yellow:status", "transceiverId": 64 + }, + "129": { + "id": 129, + "bluePath": "/sys/class/leds/port65_led1:blue:status", + "yellowPath": "/sys/class/leds/port65_led1:yellow:status", + "transceiverId": 65 } } } diff --git a/fboss/lib/platforms/PlatformProductInfo.cpp b/fboss/lib/platforms/PlatformProductInfo.cpp index c0af196a58d90..5a6c45a5b5bbe 100644 --- a/fboss/lib/platforms/PlatformProductInfo.cpp +++ b/fboss/lib/platforms/PlatformProductInfo.cpp @@ -133,7 +133,8 @@ void PlatformProductInfo::initMode() { modelName.find("ASY-92493-104") == 0 || modelName.find("ASY-92458-104") == 0 || modelName.find("DCS-DL-7700R4C-38PE-AC-F") == 0 || - modelName.find("DCS-DL-7700R4C-38PE-DC-F") == 0) { + modelName.find("DCS-DL-7700R4C-38PE-DC-F") == 0 || + modelName.find("DCS-DL-7700R4C-38PE-B-F") == 0) { type_ = PlatformType::PLATFORM_MERU800BIA; } else if ( modelName.find("Meru800biab") == 0 || diff --git a/fboss/mdio/BUCK b/fboss/mdio/BUCK index 815414985b49f..d0c0f7e2ce6cf 100644 --- a/fboss/mdio/BUCK +++ b/fboss/mdio/BUCK @@ -68,10 +68,6 @@ cpp_library( ":mdio", "//folly:format", "//folly:range", - "//folly/lang:bits", "//folly/logging:logging", ], - exported_external_deps = [ - "gflags", - ], ) diff --git a/fboss/mdio/BspDeviceMdio.cpp b/fboss/mdio/BspDeviceMdio.cpp index f20c385caa50e..b88bdaf5b2ab1 100644 --- a/fboss/mdio/BspDeviceMdio.cpp +++ b/fboss/mdio/BspDeviceMdio.cpp @@ -11,17 +11,9 @@ #include #include #include -#include #include -#include -#include -#include -#include -#include #include -#include #include -#include #include #include "fboss/mdio/MdioError.h" diff --git a/fboss/oss/doc/Building_FBOSS_on_containers.md b/fboss/oss/doc/Building_FBOSS_on_containers.md index 81afec8debeb0..539056287728e 100644 --- a/fboss/oss/doc/Building_FBOSS_on_containers.md +++ b/fboss/oss/doc/Building_FBOSS_on_containers.md @@ -7,117 +7,103 @@ This document covers how to build FBOSS binaries and all its library dependencies on Docker containers. -## Build system requirements +## Stop any existing containers and clean docker artifacts (optional) -Any VM (preferably CentOS 8) that has Internet access - - -## Initial setup on VM - -Setup the environmental variables based on the container distro (preferably CentOS 8) - +This isn't a strictly required step, although in some cases you may want to +build a completely fresh container to use, in which case the below commands +will stop any existing docker containers and clean the image cache so that the +subsequent steps will build the container from scratch. ``` -# For CentOS Stream 8 build (preferred) -export CONTAINER_TAR=fboss_centos8.tar -export DOCKER_IMAGE=fboss_centos8 -export DOCKER_NAME=FBOSS_CENTOS8 - -# For Debian 10 Buster build -export CONTAINER_TAR=fboss_buster.tar -export DOCKER_IMAGE=fboss_buster -export DOCKER_NAME=FBOSS_BUSTER +sudo docker container kill -a && sudo docker container prune -f +sudo docker image prune -af ``` -## Download container images - -- Create /opt/app/FBOSS_DIR directory in VM (sudo mkdir -p /opt/app/FBOSS_DIR) -- Download $CONTAINER_TAR:- git clone https://fboss@bitbucket.org/fboss/build-containers.git -- Copy build-containers/centos/fboss_centos8.tar to host VM in /opt/app/FBOSS_DIR/ - +## Building the FBOSS Docker image -## Create docker container +The FBOSS GitHub repository contains a Dockerfile that can be used to create +the Docker container image for building FBOSS binaries. The Dockerfile is +located under `fboss/oss/docker/Dockerfile`. You can use the below steps to +build the docker image from this file. Note that the path to the docker file +is relative, so the below commands assume you are currently running them from +the root of the FBOSS git repository. ``` -sudo yum install -y docker -sudo cd /opt/app/FBOSS_DIR -sudo docker import $CONTAINER_TAR -sudo docker images # $IMAGE_ID = IMAGE ID from this command output -sudo docker tag $IMAGE_ID $DOCKER_IMAGE:latest -sudo docker images -# /opt/app/FBOSS_DIR from VM is mapped to /var/FBOSS on container -sudo docker run -d -v /opt/app/FBOSS_DIR:/var/FBOSS:z -it --name=$DOCKER_NAME $DOCKER_IMAGE bash -sudo docker exec -it $DOCKER_NAME bash # drops to container shell +# This builds a docker container image that is tagged as fboss_docker:latest. +# The Dockerfile will set up most of the packages required to build FBOSS OSS. +sudo docker build . -t fboss_docker -f fboss/oss/docker/Dockerfile + +# This command starts the docker container from the image built in the previous +# step, and simply runs a detached bash shell. +# NOTE: if you are building against a precompiled SDK, you will need to add +# some additional parameters to this command. See the section below on +# "Building against a precompiled SDK". +sudo docker run -d -it --name=FBOSS_DOCKER_CONTAINER fboss_docker:latest bash + +# Attaches our current terminal to a new bash shell in the docker container so +# that we can perform the build within it. +sudo docker exec -it FBOSS_DOCKER_CONTAINER bash ``` -## Build ASIC vendor’s SAI SDK library -- Copy the SAI SDK sources from the ASIC vendor to host VM - /opt/app/FBOSS_DIR/ -- Build the SAI SDK library on the container (/var/FBOSS/ in container is mapped - to /opt/app/FBOSS_DIR/ in host VM) -- The SAI experimental headers in SAI SDK source and the libsai.a built in the - above step would be used later to build FBOSS binaries and link with SAI library +Once you've executed the above commands, you should be dropped into a root +shell within the docker container and can proceed with the next steps to start +the build. +## Building FBOSS Binaries -## Build ASIC vendor's SDK kmods -- Copy the target switch's kernel version headers to VM - /opt/app/FBOSS_DIR/ -- Build SDK kmods using the copied kernel headers +Instructions for building FBOSS binaries may have slight differences based on +which SDK you are linking against (more specifically +### Building Fake SAI binaries -## Clone FBOSS sources and switch to latest stable commit +The fake SAI sources are included in the FBOSS git repository, and therefore +don't require any additional steps. You can start the build by using the +commands below: -From container running on VM - ``` -cd /var/FBOSS/ -git clone https://github.com/facebook/fboss fboss.git -cd /var/FBOSS/fboss.git -rm -rf $scratch_dir # remove existing build dir if any -# Optionally, pin the fboss and its dependencies to known -# stable commit hash -rm -rf build/deps/github_hashes/facebook -rm -rf build/deps/github_hashes/facebookincubator -rm -rf build/fbcode_builder/manifests -tar -xvf fboss/oss/stable_commits/latest_stable_hashes.tar.gz +export BUILD_SAI_FAKE=1 +time ./build/fbcode_builder/getdeps.py build --allow-system-packages \ +--extra-cmake-defines='{"CMAKE_BUILD_TYPE": "MinSizeRel", "CMAKE_CXX_STANDARD": "20"}' \ +--scratch-path /var/FBOSS/tmp_bld_dir fboss ``` -## Prepare to build FBOSS +### Building against a precompiled SDK -This step involves copying the libsai.a from ASIC vendor SAI SDK build and SAI experimental headers from SAI SDK sources and then running FBOSS’ build helper script. +This section assumes that you have a precompiled SDK library which you want to +link against. More specifically, you'll need the static library `libsai_impl.a` +for the SDK which you are trying to link against, as well as the associated set +of SAI headers. In order to run the build: -From container running on VM - +#### Making the SDK artifacts available within the container + +You can mount directories from you VM to the container in order to make the SDK +artifacts available. This is done during the run step: ``` -rm -rf /var/FBOSS/built-sai; mkdir -p /var/FBOSS/built-sai/experimental -cp /libsai.a /var/FBOSS/built-sai/libsai_impl.a -cp /include/experimental/*.* /var/FBOSS/built-sai/experimental -cd /var/FBOSS/fboss.git/fboss/oss/scripts -./build-helper.py /var/FBOSS/built-sai/libsai_impl.a /var/FBOSS/built-sai/experimental/ /var/FBOSS/sai_impl_output +# Assuming the existence of /path/to/sdk/lib/libsai_impl.a and /path/to/sdk/include/*.h +for the static library and headers respectively, the below command will mount +those paths to /opt/sdk/lib/libsai_impl.a and /opt/sdk/include/*.h respectively. +sudo docker run -d -v /path/to/sdk:/opt/sdk:z -it --name=FBOSS_DOCKER_CONTAINER fboss_docker:latest bash + ``` -## Build FBOSS +With the SDK artifacts mounted into the container, you can now perform the build: -From container running on VM - ``` -export SAI_ONLY=1 -export SAI_BRCM_IMPL=1 # Needed only for BRCM SAI -export GETDEPS_USE_WGET=1 -# Optionally, set the SAI_SDK_VERSION build flag. -# This flag can be used to build FBOSS to link with a specific version of vendor SAI implementation. -# The default for BRCM SAI implementation is SAI_VERSION_10_0_EA_DNX_ODP. Other possible values are - -# SAI_VERSION_9_2_0_0_ODP, SAI_VERSION_9_0_EA_SIM_ODP, SAI_VERSION_8_2_0_0_ODP, TAJO_SDK_VERSION_1_42_4, etc... -export SAI_SDK_VERSION="SAI_VERSION_9_2_0_0_ODP" -cd /var/FBOSS/fboss.git -time ./build/fbcode_builder/getdeps.py build --allow-system-packages --scratch-path /var/FBOSS/tmp_bld_dir fboss -``` +# Run the build helper to stage the SDK in preparation for the build step. +./fboss/oss/scripts/build-helper.py /opt/sdk/lib/libsai_impl.a /opt/sdk/include/ /var/FBOSS/sai_impl_output -### Building a specific FBOSS target -Instead of building all FBOSS OSS binaries, a specific binary can be built using "--cmake-target" option. +# Run the build +cd /var/FBOSS/fboss -For building the SAI HW test binary only, the following command can be used - +# SDK specific environment variable should be set +export BRCM_SAI_IMPL=1 +# Start the build +time ./build/fbcode_builder/getdeps.py build --allow-system-packages \ +--extra-cmake-defines='{"CMAKE_BUILD_TYPE": "MinSizeRel", "CMAKE_CXX_STANDARD": "20"}' \ +--scratch-path /var/FBOSS/tmp_bld_dir fboss ``` -time ./build/fbcode_builder/getdeps.py build --allow-system-packages --scratch-path /var/FBOSS/tmp_bld_dir fboss --cmake-target sai_test-sai_impl-1.11.0 -``` - -NOTE: If "--cmake-target" option is used, then the binary will not be installed and hence will be available only in /build/fboss/ directory. Due to this, package-fboss.py script (explained in "Packaging and running FBOSS" doc) can't be used if "--cmake-target" option is used. This option can be used when FBOSS OSS was already built, packaged and copied to switch and after this, only a specific binary needs to be recompiled and replaced. diff --git a/fboss/oss/hw_known_bad_tests/sai_known_bad_tests.materialized_JSON b/fboss/oss/hw_known_bad_tests/sai_known_bad_tests.materialized_JSON index b084155782959..c3c91c9771f3c 100644 --- a/fboss/oss/hw_known_bad_tests/sai_known_bad_tests.materialized_JSON +++ b/fboss/oss/hw_known_bad_tests/sai_known_bad_tests.materialized_JSON @@ -3218,6 +3218,149 @@ "test_name_regex": "HwAqmTest.verifyEcnTrafficNoDrop" } ], + "brcm/11.7.0.0_dnx_odp/11.7.0.0_dnx_odp/jericho3": [ + { + "test_name_regex": "SaiRouteRollbackTest.rollbackAllWithTrunk" + }, + { + "test_name_regex": "SaiRouteRollbackTest.rollbackManyTimesWithTrunk" + }, + { + "test_name_regex": "SaiQPHRollbackTest.*" + }, + { + "test_name_regex": "HwOverflowTest.*" + }, + { + "test_name_regex": "HwProdInvariants.*" + }, + { + "test_name_regex": "HwHashPolarizationTest*" + }, + { + "test_name_regex": "HwHashConsistencyTest.*" + }, + { + "test_name_regex": "HwIngressBufferTest.validateIngressPoolParamChange" + }, + { + "test_name_regex": "HwIngressBufferTest.validatePGParamChange" + }, + { + "test_name_regex": "HwIngressBufferTest.validatePGQueueChanges" + }, + { + "test_name_regex": "HwAclStatTest/[01].AclStatChangeCounterType" + }, + { + "test_name_regex": "SaiAclTableGroupTest.*" + }, + { + "test_name_regex": "SaiAclTableGroupTrafficTest/[01].*" + }, + { + "test_name_regex": "HwResourceStatsTest/[01].aclStats" + }, + { + "test_name_regex": "HwResourceStatsTest.aclStats" + }, + { + "test_name_regex": "HwAclQualifierTest/[01].*Tcp*" + }, + { + "test_name_regex": "HwAclQualifierTest/[01].*Icmp*" + }, + { + "test_name_regex": "HwAclQualifierTest/[01].*AclModifyQualifier" + }, + { + "test_name_regex": "HwAclQualifierTest/[01].*AclIp4Qualifiers" + }, + { + "test_name_regex": "HwAclQualifierTest.*Tcp*" + }, + { + "test_name_regex": "HwAclQualifierTest.*Icmp*" + }, + { + "test_name_regex": "HwAclQualifierTest.*AclModifyQualifier" + }, + { + "test_name_regex": "HwSflowTest.*" + }, + { + "test_name_regex": "HwMirrorTest/[01].*" + }, + { + "test_name_regex": "HwDataPlaneMirrorTest/[01].SpanAclMirror" + }, + { + "test_name_regex": "HwDataPlaneMirrorTest/[01].ErspanAclMirror" + }, + { + "test_name_regex": "HwDataPlaneMirrorTest/[01].TrucatePortErspanMirror" + }, + { + "test_name_regex": "HwDataPlaneMirrorTest/[01].ErspanMirrorWithLagMember" + }, + { + "test_name_regex": "HwNeighborOnMultiplePortsTest.*" + }, + { + "test_name_regex": "HwRouteOverDifferentAddressFamilyNhopTest.*" + }, + { + "test_name_regex": "HwLoadBalancerTestV6RoCE.*" + }, + { + "test_name_regex": "HwLoadBalancerNegativeTestV6RoCE.*" + }, + { + "test_name_regex": "HwLoadBalancerNegativeProtocolMatchTestV6RoCE.*" + }, + { + "test_name_regex": "HwWideEcmpTest.*" + }, + { + "test_name_regex": "HwAqmTest.verifyEcnThreshold" + }, + { + "test_name_regex": "HwResourceStatsTest/[01].l3Stats" + }, + { + "test_name_regex": "HwResourceStatsTest.l3Stats" + }, + { + "test_name_regex": "HwRouteTest/[01].AddHostRouteAndNeighbor" + }, + { + "test_name_regex": "HwRouteTest/[01].VerifyRouting" + }, + { + "test_name_regex": "HwRouteTest/[01].verifyCpuRouteChange" + }, + { + "test_name_regex": "HwSplitAgentCallbackTest.txPacket" + }, + { + "test_name_regex": "HwTrafficPfcTest/HwTrafficPfcGenTest.verifyPfc/WithZeroGlobalHeadRoomCfg" + }, + { + "test_name_regex": "HwIngressBufferTest.validatePGHeadroomLimitChange" + }, + { + "test_name_regex": "warm_boot.HwTrafficPfcTest.PfcWatchdog" + }, + { + "test_name_regex": "warm_boot.HwVerifyPfcConfigInHwTest.PfcWatchdogProgrammingSequence" + }, + { + "test_name_regex": "warm_boot.HwParityErrorTest.verifyParityError" + }, + { + "test_name_regex": "HwAqmTest.verifyEcnTrafficNoDrop" + } + ], "brcm/12.0_ea_dnx_odp/12.0_ea_dnx_odp/jericho3": [ { "test_name_regex": "SaiRouteRollbackTest.rollbackAllWithTrunk" @@ -3835,6 +3978,9 @@ }, { "test_name_regex": "HwRouteTest/[01].UnresolvedAndResolvedNextHop" + }, + { + "test_name_regex": "HwAsicDefaultProgrammingTest.*" } ], "brcm/8.2.0.0_odp/8.2.0.0_odp/tomahawk": [ @@ -12148,6 +12294,9 @@ { "test_name_regex": "HwProdInvariantsMmuLosslessTest.*" }, + { + "test_name_regex": "HwAsicDefaultProgrammingTest.*" + }, { "test_name_regex": "HwCoppTest/[01].EapolToHighPriQ" }, diff --git a/fboss/oss/link_test_configs/janga800bic.materialized_JSON b/fboss/oss/link_test_configs/janga800bic.materialized_JSON index d49c43ac63019..7ec929aaae620 100644 --- a/fboss/oss/link_test_configs/janga800bic.materialized_JSON +++ b/fboss/oss/link_test_configs/janga800bic.materialized_JSON @@ -44,7 +44,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 2, @@ -79,7 +80,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3, @@ -114,7 +116,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 4, @@ -149,7 +152,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 5, @@ -184,7 +188,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 6, @@ -219,7 +224,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 7, @@ -254,7 +260,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 8, @@ -289,7 +296,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 9, @@ -324,7 +332,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 10, @@ -359,7 +368,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 11, @@ -394,7 +404,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 12, @@ -429,7 +440,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 13, @@ -464,7 +476,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 14, @@ -499,7 +512,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 15, @@ -534,7 +548,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 16, @@ -569,7 +584,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 17, @@ -604,7 +620,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 18, @@ -639,7 +656,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 19, @@ -674,7 +692,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 20, @@ -709,7 +728,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 21, @@ -744,7 +764,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 22, @@ -779,7 +800,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 23, @@ -814,7 +836,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 24, @@ -849,7 +872,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 25, @@ -884,7 +908,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 26, @@ -919,7 +944,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 27, @@ -954,7 +980,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 1114, @@ -989,7 +1016,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1115, @@ -1024,7 +1052,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1112, @@ -1059,7 +1088,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1113, @@ -1094,7 +1124,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1119, @@ -1129,7 +1160,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1117, @@ -1164,7 +1196,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1118, @@ -1199,7 +1232,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1116, @@ -1234,7 +1268,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1106, @@ -1269,7 +1304,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1107, @@ -1304,7 +1340,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1104, @@ -1339,7 +1376,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1105, @@ -1374,7 +1412,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1111, @@ -1409,7 +1448,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1109, @@ -1444,7 +1484,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1110, @@ -1479,7 +1520,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1108, @@ -1514,7 +1556,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1143, @@ -1549,7 +1592,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1141, @@ -1584,7 +1628,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1142, @@ -1619,7 +1664,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1140, @@ -1654,7 +1700,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1138, @@ -1689,7 +1736,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1136, @@ -1724,7 +1772,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1137, @@ -1759,7 +1808,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1139, @@ -1794,7 +1844,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1130, @@ -1829,7 +1880,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1131, @@ -1864,7 +1916,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1128, @@ -1899,7 +1952,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1129, @@ -1934,7 +1988,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1133, @@ -1969,7 +2024,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1135, @@ -2004,7 +2060,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1134, @@ -2039,7 +2096,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1132, @@ -2074,7 +2132,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1122, @@ -2109,7 +2168,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1123, @@ -2144,7 +2204,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1120, @@ -2179,7 +2240,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1121, @@ -2214,7 +2276,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1125, @@ -2249,7 +2312,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1127, @@ -2284,7 +2348,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1126, @@ -2319,7 +2384,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1124, @@ -2354,7 +2420,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1162, @@ -2389,7 +2456,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1163, @@ -2424,7 +2492,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1165, @@ -2459,7 +2528,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1167, @@ -2494,7 +2564,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1164, @@ -2529,7 +2600,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1161, @@ -2564,7 +2636,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1166, @@ -2599,7 +2672,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1160, @@ -2634,7 +2708,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1155, @@ -2669,7 +2744,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1154, @@ -2704,7 +2780,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1153, @@ -2739,7 +2816,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1152, @@ -2774,7 +2852,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1159, @@ -2809,7 +2888,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1157, @@ -2844,7 +2924,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1158, @@ -2879,7 +2960,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1156, @@ -2914,7 +2996,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1146, @@ -2949,7 +3032,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1147, @@ -2984,7 +3068,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1144, @@ -3019,7 +3104,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1145, @@ -3054,7 +3140,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1149, @@ -3089,7 +3176,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1151, @@ -3124,7 +3212,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1148, @@ -3159,7 +3248,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1150, @@ -3194,7 +3284,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1171, @@ -3229,7 +3320,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1175, @@ -3264,7 +3356,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1170, @@ -3299,7 +3392,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1169, @@ -3334,7 +3428,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1172, @@ -3369,7 +3464,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1173, @@ -3404,7 +3500,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1174, @@ -3439,7 +3536,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1168, @@ -3474,7 +3572,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1182, @@ -3509,7 +3608,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1176, @@ -3544,7 +3644,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1178, @@ -3579,7 +3680,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1181, @@ -3614,7 +3716,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1179, @@ -3649,7 +3752,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1177, @@ -3684,7 +3788,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1180, @@ -3719,7 +3824,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1183, @@ -3754,7 +3860,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1099, @@ -3789,7 +3896,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1103, @@ -3824,7 +3932,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1097, @@ -3859,7 +3968,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1098, @@ -3894,7 +4004,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1100, @@ -3929,7 +4040,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1101, @@ -3964,7 +4076,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1102, @@ -3999,7 +4112,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1096, @@ -4034,7 +4148,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1078, @@ -4069,7 +4184,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1072, @@ -4104,7 +4220,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1077, @@ -4139,7 +4256,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1074, @@ -4174,7 +4292,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1073, @@ -4209,7 +4328,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1076, @@ -4244,7 +4364,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1079, @@ -4279,7 +4400,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1075, @@ -4314,7 +4436,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1084, @@ -4349,7 +4472,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1086, @@ -4384,7 +4508,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1087, @@ -4419,7 +4544,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1085, @@ -4454,7 +4580,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1081, @@ -4489,7 +4616,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1080, @@ -4524,7 +4652,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1083, @@ -4559,7 +4688,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1082, @@ -4594,7 +4724,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1094, @@ -4629,7 +4760,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1092, @@ -4664,7 +4796,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1093, @@ -4699,7 +4832,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1095, @@ -4734,7 +4868,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1088, @@ -4769,7 +4904,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1091, @@ -4804,7 +4940,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1090, @@ -4839,7 +4976,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1089, @@ -4874,7 +5012,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1070, @@ -4909,7 +5048,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1064, @@ -4944,7 +5084,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1068, @@ -4979,7 +5120,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1069, @@ -5014,7 +5156,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1065, @@ -5049,7 +5192,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1066, @@ -5084,7 +5228,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1067, @@ -5119,7 +5264,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1071, @@ -5154,7 +5300,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1060, @@ -5189,7 +5336,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1061, @@ -5224,7 +5372,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1062, @@ -5259,7 +5408,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1056, @@ -5294,7 +5444,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1063, @@ -5329,7 +5480,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1057, @@ -5364,7 +5516,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1059, @@ -5399,7 +5552,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1058, @@ -5434,7 +5588,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1052, @@ -5469,7 +5624,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1053, @@ -5504,7 +5660,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1054, @@ -5539,7 +5696,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1048, @@ -5574,7 +5732,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1050, @@ -5609,7 +5768,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1055, @@ -5644,7 +5804,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1051, @@ -5679,7 +5840,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1049, @@ -5714,7 +5876,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1043, @@ -5749,7 +5912,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1041, @@ -5784,7 +5948,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1047, @@ -5819,7 +5984,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1042, @@ -5854,7 +6020,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1040, @@ -5889,7 +6056,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1046, @@ -5924,7 +6092,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1045, @@ -5959,7 +6128,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1044, @@ -5994,7 +6164,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1036, @@ -6029,7 +6200,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1037, @@ -6064,7 +6236,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1038, @@ -6099,7 +6272,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1032, @@ -6134,7 +6308,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1039, @@ -6169,7 +6344,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1033, @@ -6204,7 +6380,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1035, @@ -6239,7 +6416,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1034, @@ -6274,7 +6452,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1028, @@ -6309,7 +6488,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1029, @@ -6344,7 +6524,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1030, @@ -6379,7 +6560,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1024, @@ -6414,7 +6596,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1026, @@ -6449,7 +6632,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1031, @@ -6484,7 +6668,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1027, @@ -6519,7 +6704,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1025, @@ -6554,7 +6740,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2049, @@ -6589,7 +6776,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 2050, @@ -6624,7 +6812,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2051, @@ -6659,7 +6848,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2052, @@ -6694,7 +6884,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2053, @@ -6729,7 +6920,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2054, @@ -6764,7 +6956,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2055, @@ -6799,7 +6992,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 2056, @@ -6834,7 +7028,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 2057, @@ -6869,7 +7064,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 2058, @@ -6904,7 +7100,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 2059, @@ -6939,7 +7136,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 2060, @@ -6974,7 +7172,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 2061, @@ -7009,7 +7208,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 2062, @@ -7044,7 +7244,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 2063, @@ -7079,7 +7280,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 2064, @@ -7114,7 +7316,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 2065, @@ -7149,7 +7352,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 2066, @@ -7184,7 +7388,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 2067, @@ -7219,7 +7424,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 2068, @@ -7254,7 +7460,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 2069, @@ -7289,7 +7496,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 2070, @@ -7324,7 +7532,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 2071, @@ -7359,7 +7568,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 2072, @@ -7394,7 +7604,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 2073, @@ -7429,7 +7640,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 2074, @@ -7464,7 +7676,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 2075, @@ -7499,7 +7712,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 3162, @@ -7534,7 +7748,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3163, @@ -7569,7 +7784,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3160, @@ -7604,7 +7820,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3161, @@ -7639,7 +7856,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3165, @@ -7674,7 +7892,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3167, @@ -7709,7 +7928,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3166, @@ -7744,7 +7964,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3164, @@ -7779,7 +8000,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3154, @@ -7814,7 +8036,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3155, @@ -7849,7 +8072,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3152, @@ -7884,7 +8108,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3153, @@ -7919,7 +8144,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3157, @@ -7954,7 +8180,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3159, @@ -7989,7 +8216,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3158, @@ -8024,7 +8252,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3156, @@ -8059,7 +8288,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3186, @@ -8094,7 +8324,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3187, @@ -8129,7 +8360,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3184, @@ -8164,7 +8396,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3185, @@ -8199,7 +8432,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3189, @@ -8234,7 +8468,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3191, @@ -8269,7 +8504,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3188, @@ -8304,7 +8540,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3190, @@ -8339,7 +8576,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3181, @@ -8374,7 +8612,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3180, @@ -8409,7 +8648,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3176, @@ -8444,7 +8684,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3182, @@ -8479,7 +8720,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3183, @@ -8514,7 +8756,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3178, @@ -8549,7 +8792,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3179, @@ -8584,7 +8828,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3177, @@ -8619,7 +8864,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3175, @@ -8654,7 +8900,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3173, @@ -8689,7 +8936,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3174, @@ -8724,7 +8972,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3172, @@ -8759,7 +9008,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3170, @@ -8794,7 +9044,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3168, @@ -8829,7 +9080,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3169, @@ -8864,7 +9116,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3171, @@ -8899,7 +9152,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3211, @@ -8934,7 +9188,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3210, @@ -8969,7 +9224,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3209, @@ -9004,7 +9260,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3208, @@ -9039,7 +9296,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3215, @@ -9074,7 +9332,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3213, @@ -9109,7 +9368,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3214, @@ -9144,7 +9404,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3212, @@ -9179,7 +9440,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3202, @@ -9214,7 +9476,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3203, @@ -9249,7 +9512,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3200, @@ -9284,7 +9548,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3201, @@ -9319,7 +9584,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3205, @@ -9354,7 +9620,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3207, @@ -9389,7 +9656,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3204, @@ -9424,7 +9692,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3206, @@ -9459,7 +9728,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3198, @@ -9494,7 +9764,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3192, @@ -9529,7 +9800,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3196, @@ -9564,7 +9836,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3197, @@ -9599,7 +9872,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3194, @@ -9634,7 +9908,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3193, @@ -9669,7 +9944,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3195, @@ -9704,7 +9980,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3199, @@ -9739,7 +10016,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3218, @@ -9774,7 +10052,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3219, @@ -9809,7 +10088,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3221, @@ -9844,7 +10124,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3223, @@ -9879,7 +10160,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3220, @@ -9914,7 +10196,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3217, @@ -9949,7 +10232,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3222, @@ -9984,7 +10268,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3216, @@ -10019,7 +10304,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3227, @@ -10054,7 +10340,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3231, @@ -10089,7 +10376,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3226, @@ -10124,7 +10412,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3225, @@ -10159,7 +10448,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3228, @@ -10194,7 +10484,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3229, @@ -10229,7 +10520,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3230, @@ -10264,7 +10556,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3224, @@ -10299,7 +10592,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3147, @@ -10334,7 +10628,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3148, @@ -10369,7 +10664,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3145, @@ -10404,7 +10700,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3144, @@ -10439,7 +10736,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3150, @@ -10474,7 +10772,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3151, @@ -10509,7 +10808,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3149, @@ -10544,7 +10844,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3146, @@ -10579,7 +10880,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3124, @@ -10614,7 +10916,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3126, @@ -10649,7 +10952,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3127, @@ -10684,7 +10988,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3125, @@ -10719,7 +11024,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3121, @@ -10754,7 +11060,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3120, @@ -10789,7 +11096,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3123, @@ -10824,7 +11132,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3122, @@ -10859,7 +11168,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3134, @@ -10894,7 +11204,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3132, @@ -10929,7 +11240,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3133, @@ -10964,7 +11276,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3135, @@ -10999,7 +11312,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3128, @@ -11034,7 +11348,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3131, @@ -11069,7 +11384,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3130, @@ -11104,7 +11420,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3129, @@ -11139,7 +11456,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3139, @@ -11174,7 +11492,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3143, @@ -11209,7 +11528,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3137, @@ -11244,7 +11564,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3138, @@ -11279,7 +11600,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3140, @@ -11314,7 +11636,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3141, @@ -11349,7 +11672,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3142, @@ -11384,7 +11708,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3136, @@ -11419,7 +11744,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3118, @@ -11454,7 +11780,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3112, @@ -11489,7 +11816,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3117, @@ -11524,7 +11852,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3114, @@ -11559,7 +11888,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3113, @@ -11594,7 +11924,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3116, @@ -11629,7 +11960,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3119, @@ -11664,7 +11996,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3115, @@ -11699,7 +12032,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3110, @@ -11734,7 +12068,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3108, @@ -11769,7 +12104,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3109, @@ -11804,7 +12140,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3111, @@ -11839,7 +12176,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3104, @@ -11874,7 +12212,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3105, @@ -11909,7 +12248,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3106, @@ -11944,7 +12284,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3107, @@ -11979,7 +12320,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3100, @@ -12014,7 +12356,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3102, @@ -12049,7 +12392,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3103, @@ -12084,7 +12428,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3101, @@ -12119,7 +12464,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3097, @@ -12154,7 +12500,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3096, @@ -12189,7 +12536,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3098, @@ -12224,7 +12572,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3099, @@ -12259,7 +12608,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3090, @@ -12294,7 +12644,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3089, @@ -12329,7 +12680,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3094, @@ -12364,7 +12716,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3091, @@ -12399,7 +12752,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3088, @@ -12434,7 +12788,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3095, @@ -12469,7 +12824,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3092, @@ -12504,7 +12860,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3093, @@ -12539,7 +12896,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3080, @@ -12574,7 +12932,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3081, @@ -12609,7 +12968,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3082, @@ -12644,7 +13004,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3083, @@ -12679,7 +13040,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3084, @@ -12714,7 +13076,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3085, @@ -12749,7 +13112,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3086, @@ -12784,7 +13148,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3087, @@ -12819,7 +13184,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3072, @@ -12854,7 +13220,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3073, @@ -12889,7 +13256,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3074, @@ -12924,7 +13292,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3075, @@ -12959,7 +13328,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3076, @@ -12994,7 +13364,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3077, @@ -13029,7 +13400,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3078, @@ -13064,7 +13436,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3079, @@ -13099,7 +13472,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false } ], "vlans": [ @@ -13388,6 +13762,7 @@ "1": 1, "2": 0, "3": 0, + "4": 0, "700": 255, "786": 10 }, @@ -13436,7 +13811,7 @@ "sendToQueue": { "queueId": 7 }, - "toCpuAction": 0, + "toCpuAction": 1, "setTc": { "tcValue": 7 } @@ -13448,7 +13823,7 @@ "sendToQueue": { "queueId": 7 }, - "toCpuAction": 0, + "toCpuAction": 1, "setTc": { "tcValue": 7 } @@ -13460,7 +13835,7 @@ "sendToQueue": { "queueId": 7 }, - "toCpuAction": 0, + "toCpuAction": 1, "setTc": { "tcValue": 7 } @@ -13470,11 +13845,11 @@ "matcher": "cpuPolicing-mid-linkLocal-v6", "action": { "sendToQueue": { - "queueId": 2 + "queueId": 3 }, - "toCpuAction": 0, + "toCpuAction": 1, "setTc": { - "tcValue": 2 + "tcValue": 3 } } }, @@ -13482,11 +13857,11 @@ "matcher": "cpuPolicing-mid-ff02::/16", "action": { "sendToQueue": { - "queueId": 2 + "queueId": 3 }, - "toCpuAction": 0, + "toCpuAction": 1, "setTc": { - "tcValue": 2 + "tcValue": 3 } } }, @@ -13496,7 +13871,7 @@ "sendToQueue": { "queueId": 7 }, - "toCpuAction": 0, + "toCpuAction": 1, "setTc": { "tcValue": 7 } @@ -13508,7 +13883,7 @@ "sendToQueue": { "queueId": 7 }, - "toCpuAction": 0, + "toCpuAction": 1, "setTc": { "tcValue": 7 } @@ -13520,7 +13895,7 @@ "sendToQueue": { "queueId": 7 }, - "toCpuAction": 0, + "toCpuAction": 1, "setTc": { "tcValue": 7 } @@ -13532,7 +13907,7 @@ "sendToQueue": { "queueId": 7 }, - "toCpuAction": 0, + "toCpuAction": 1, "setTc": { "tcValue": 7 } @@ -13544,7 +13919,7 @@ "sendToQueue": { "queueId": 7 }, - "toCpuAction": 0, + "toCpuAction": 1, "setTc": { "tcValue": 7 } @@ -13556,7 +13931,7 @@ "sendToQueue": { "queueId": 7 }, - "toCpuAction": 0, + "toCpuAction": 1, "setTc": { "tcValue": 7 } @@ -13568,7 +13943,7 @@ "sendToQueue": { "queueId": 7 }, - "toCpuAction": 0, + "toCpuAction": 1, "setTc": { "tcValue": 7 } @@ -13580,7 +13955,7 @@ "sendToQueue": { "queueId": 7 }, - "toCpuAction": 0, + "toCpuAction": 1, "setTc": { "tcValue": 7 } @@ -13592,7 +13967,7 @@ "sendToQueue": { "queueId": 7 }, - "toCpuAction": 0, + "toCpuAction": 1, "setTc": { "tcValue": 7 } @@ -13604,7 +13979,7 @@ "sendToQueue": { "queueId": 7 }, - "toCpuAction": 0, + "toCpuAction": 1, "setTc": { "tcValue": 7 } @@ -13616,7 +13991,7 @@ "sendToQueue": { "queueId": 7 }, - "toCpuAction": 0, + "toCpuAction": 1, "setTc": { "tcValue": 7 } @@ -13628,7 +14003,7 @@ "sendToQueue": { "queueId": 7 }, - "toCpuAction": 0, + "toCpuAction": 1, "setTc": { "tcValue": 7 } @@ -13638,11 +14013,11 @@ "matcher": "cpuPolicing-mid-lldp-dstMac0E", "action": { "sendToQueue": { - "queueId": 2 + "queueId": 3 }, - "toCpuAction": 0, + "toCpuAction": 1, "setTc": { - "tcValue": 2 + "tcValue": 3 } } }, @@ -13650,11 +14025,11 @@ "matcher": "cpuPolicing-mid-lldp-dstMac03", "action": { "sendToQueue": { - "queueId": 2 + "queueId": 3 }, - "toCpuAction": 0, + "toCpuAction": 1, "setTc": { - "tcValue": 2 + "tcValue": 3 } } }, @@ -13662,11 +14037,11 @@ "matcher": "cpuPolicing-mid-lldp-dstMac00", "action": { "sendToQueue": { - "queueId": 2 + "queueId": 3 }, - "toCpuAction": 0, + "toCpuAction": 1, "setTc": { - "tcValue": 2 + "tcValue": 3 } } }, @@ -13674,11 +14049,11 @@ "matcher": "cpuPolicing-mid-Ip2Me-Ip4", "action": { "sendToQueue": { - "queueId": 2 + "queueId": 3 }, - "toCpuAction": 0, + "toCpuAction": 1, "setTc": { - "tcValue": 2 + "tcValue": 3 } } }, @@ -13686,11 +14061,11 @@ "matcher": "cpuPolicing-mid-Ip2Me-Ip6", "action": { "sendToQueue": { - "queueId": 2 + "queueId": 3 }, - "toCpuAction": 0, + "toCpuAction": 1, "setTc": { - "tcValue": 2 + "tcValue": 3 } } } @@ -13699,15 +14074,19 @@ "rxReasonToQueueOrderedList": [ { "rxReason": 2, - "queueId": 2 + "queueId": 3 }, { "rxReason": 17, - "queueId": 2 + "queueId": 3 }, { "rxReason": 6, "queueId": 0 + }, + { + "rxReason": 21, + "queueId": 0 } ] }, @@ -13758,7 +14137,7 @@ "exactMatchTableConfigs": [ ], - "switchIdToSwitchType": { + "switchIdToSwitchType_DEPRECATED": { }, "switchDrainState": 0, @@ -13771,12 +14150,19 @@ "minimum": 0, "maximum": 2047 }, - "systemPortRange": { - "minimum": 10, - "maximum": 53 - }, "switchMac": "02:00:00:00:00:01", - "connectionHandle": "15:00" + "connectionHandle": "15:00", + "systemPortRanges": { + "systemPortRanges": [ + { + "minimum": 10, + "maximum": 53 + } + ] + }, + "localSystemPortOffset": 10, + "globalSystemPortOffset": 10, + "inbandPortId": 1 }, "4": { "switchType": 2, @@ -13786,12 +14172,19 @@ "minimum": 2048, "maximum": 4095 }, - "systemPortRange": { - "minimum": 54, - "maximum": 97 - }, "switchMac": "02:00:00:00:00:01", - "connectionHandle": "18:00" + "connectionHandle": "18:00", + "systemPortRanges": { + "systemPortRanges": [ + { + "minimum": 54, + "maximum": 97 + } + ] + }, + "localSystemPortOffset": 54, + "globalSystemPortOffset": 54, + "inbandPortId": 2049 } }, "vendorMacOuis": [ @@ -13813,13 +14206,20 @@ "loopbackIps": [ ], - "systemPortRange": { - "minimum": 10, - "maximum": 53 - }, "nodeMac": "02:00:00:00:0F:0B", "asicType": 14, - "platformType": 32 + "platformType": 32, + "localSystemPortOffset": 10, + "globalSystemPortOffset": 10, + "systemPortRanges": { + "systemPortRanges": [ + { + "minimum": 10, + "maximum": 53 + } + ] + }, + "inbandPortId": 1 }, "4": { "name": "intfNode1", @@ -13828,13 +14228,20 @@ "loopbackIps": [ ], - "systemPortRange": { - "minimum": 54, - "maximum": 97 - }, "nodeMac": "02:00:00:00:0F:0B", "asicType": 14, - "platformType": 32 + "platformType": 32, + "localSystemPortOffset": 54, + "globalSystemPortOffset": 54, + "systemPortRanges": { + "systemPortRanges": [ + { + "minimum": 54, + "maximum": 97 + } + ] + }, + "inbandPortId": 2049 } }, "defaultVoqConfig": [ @@ -13854,9 +14261,11 @@ "custom_feature_fabric_cgm_ddc_th_tune.BCM8889X": "1", "custom_feature_programmability_standard_image_name.BCM88890": "AI23", "custom_feature_ser_event_generate": "1", + "custom_feature_shel_arm_enable": "1", "custom_feature_statdma_enable": "0", "custom_feature_use_new_access.BCM8889X": "1", "custom_feature_use_new_access.BCM8889X_ADAPTER": "1", + "custom_feature_vsqd_lossless_reject_enable": "1", "dpp_db_path": "/tmp/db", "dram_temperature_monitor_enable.BCM8889X_ADAPTER": "0", "dtm_flow_mapping_mode_region_65.BCM8889X": "3", @@ -13890,6 +14299,7 @@ "dtm_flow_mapping_mode_region_93.BCM8889X": "3", "dtm_flow_mapping_mode_region_94.BCM8889X": "3", "dtm_flow_nof_remote_cores_region.BCM8889X": "4", + "eventor_sbus_dma_channels.BCM8889X": "0,6,0,7", "fabric_connect_mode.BCM8889X": "FE", "fabric_connectivity_based_on_integrity": "0", "fabric_distributed_system_enable": "1", @@ -13985,6 +14395,7 @@ "sai_l3_max_ecmp_paths": "512", "sai_macro_flow_based_hash": "1", "sai_mmu_qgroups_default": "1", + "sai_ocb_fc_config": "2", "sai_optimize_acl_ipv6_addr_qual": "0", "sai_optimized_mmu": "0x1", "sai_pfc_defaults_disable": "0x1", @@ -13992,6 +14403,7 @@ "sai_pkt_rx_custom_cfg": "1", "sai_pkt_rx_pkt_size": "16512", "sai_recycle_port_lane_base": "440", + "sai_tc_mirror_buffer_size_bytes": "1", "sai_trigger_linkscan_remote_local_faults": "1", "sai_voq_wm_latency_enable": "1", "sat_enable.BCM8889X_ADAPTER": "1", diff --git a/fboss/oss/link_test_configs/meru400bfu.materialized_JSON b/fboss/oss/link_test_configs/meru400bfu.materialized_JSON index c3b0993e17d37..00b3ff821308d 100644 --- a/fboss/oss/link_test_configs/meru400bfu.materialized_JSON +++ b/fboss/oss/link_test_configs/meru400bfu.materialized_JSON @@ -45,7 +45,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 73, @@ -81,7 +82,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 74, @@ -117,7 +119,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 75, @@ -153,7 +156,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 76, @@ -189,7 +193,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 77, @@ -225,7 +230,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 78, @@ -261,7 +267,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 79, @@ -297,7 +304,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 84, @@ -333,7 +341,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 85, @@ -369,7 +378,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 86, @@ -405,7 +415,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 87, @@ -441,7 +452,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 36, @@ -477,7 +489,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 37, @@ -513,7 +526,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 38, @@ -549,7 +563,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 39, @@ -585,7 +600,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 28, @@ -621,7 +637,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 29, @@ -657,7 +674,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 30, @@ -693,7 +711,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 31, @@ -729,7 +748,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 24, @@ -765,7 +785,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 25, @@ -801,7 +822,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 26, @@ -837,7 +859,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 27, @@ -873,7 +896,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 16, @@ -909,7 +933,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 17, @@ -945,7 +970,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 18, @@ -981,7 +1007,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 19, @@ -1017,7 +1044,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 20, @@ -1053,7 +1081,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 21, @@ -1089,7 +1118,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 22, @@ -1125,7 +1155,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 23, @@ -1161,7 +1192,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 8, @@ -1197,7 +1229,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 9, @@ -1233,7 +1266,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 10, @@ -1269,7 +1303,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 11, @@ -1305,7 +1340,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 12, @@ -1341,7 +1377,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 13, @@ -1377,7 +1414,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 14, @@ -1413,7 +1451,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 15, @@ -1449,7 +1488,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 4, @@ -1485,7 +1525,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 5, @@ -1521,7 +1562,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 6, @@ -1557,7 +1599,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 7, @@ -1593,7 +1636,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 0, @@ -1629,7 +1673,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1, @@ -1665,7 +1710,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2, @@ -1701,7 +1747,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3, @@ -1737,7 +1784,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 148, @@ -1773,7 +1821,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 149, @@ -1809,7 +1858,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 150, @@ -1845,7 +1895,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 151, @@ -1881,7 +1932,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 144, @@ -1917,7 +1969,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 145, @@ -1953,7 +2006,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 146, @@ -1989,7 +2043,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 147, @@ -2025,7 +2080,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 152, @@ -2061,7 +2117,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 153, @@ -2097,7 +2154,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 154, @@ -2133,7 +2191,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 155, @@ -2169,7 +2228,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 156, @@ -2205,7 +2265,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 157, @@ -2241,7 +2302,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 158, @@ -2277,7 +2339,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 159, @@ -2313,7 +2376,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 160, @@ -2349,7 +2413,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 161, @@ -2385,7 +2450,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 162, @@ -2421,7 +2487,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 163, @@ -2457,7 +2524,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 164, @@ -2493,7 +2561,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 165, @@ -2529,7 +2598,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 166, @@ -2565,7 +2635,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 167, @@ -2601,7 +2672,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 172, @@ -2637,7 +2709,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 173, @@ -2673,7 +2746,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 174, @@ -2709,7 +2783,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 175, @@ -2745,7 +2820,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 168, @@ -2781,7 +2857,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 169, @@ -2817,7 +2894,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 170, @@ -2853,7 +2931,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 171, @@ -2889,7 +2968,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 132, @@ -2925,7 +3005,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 133, @@ -2961,7 +3042,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 134, @@ -2997,7 +3079,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 135, @@ -3033,7 +3116,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 180, @@ -3069,7 +3153,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 181, @@ -3105,7 +3190,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 182, @@ -3141,7 +3227,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 183, @@ -3177,7 +3264,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 120, @@ -3213,7 +3301,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 121, @@ -3249,7 +3338,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 122, @@ -3285,7 +3375,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 123, @@ -3321,7 +3412,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 124, @@ -3357,7 +3449,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 125, @@ -3393,7 +3486,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 126, @@ -3429,7 +3523,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 127, @@ -3465,7 +3560,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 48, @@ -3501,7 +3597,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 49, @@ -3537,7 +3634,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 50, @@ -3573,7 +3671,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 51, @@ -3609,7 +3708,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 52, @@ -3645,7 +3745,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 53, @@ -3681,7 +3782,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 54, @@ -3717,7 +3819,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 55, @@ -3753,7 +3856,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 60, @@ -3789,7 +3893,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 61, @@ -3825,7 +3930,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 62, @@ -3861,7 +3967,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 63, @@ -3897,7 +4004,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 56, @@ -3933,7 +4041,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 57, @@ -3969,7 +4078,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 58, @@ -4005,7 +4115,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 59, @@ -4041,7 +4152,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 68, @@ -4077,7 +4189,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 69, @@ -4113,7 +4226,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 70, @@ -4149,7 +4263,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 71, @@ -4185,7 +4300,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 64, @@ -4221,7 +4337,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 65, @@ -4257,7 +4374,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 66, @@ -4293,7 +4411,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 67, @@ -4329,7 +4448,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 80, @@ -4365,7 +4485,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 81, @@ -4401,7 +4522,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 82, @@ -4437,7 +4559,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 83, @@ -4473,7 +4596,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 88, @@ -4509,7 +4633,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 89, @@ -4545,7 +4670,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 90, @@ -4581,7 +4707,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 91, @@ -4617,7 +4744,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 92, @@ -4653,7 +4781,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 93, @@ -4689,7 +4818,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 94, @@ -4725,7 +4855,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 95, @@ -4761,7 +4892,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 44, @@ -4797,7 +4929,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 45, @@ -4833,7 +4966,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 46, @@ -4869,7 +5003,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 47, @@ -4905,7 +5040,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 40, @@ -4941,7 +5077,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 41, @@ -4977,7 +5114,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 42, @@ -5013,7 +5151,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 43, @@ -5049,7 +5188,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 32, @@ -5085,7 +5225,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 33, @@ -5121,7 +5262,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 34, @@ -5157,7 +5299,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 35, @@ -5193,7 +5336,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 176, @@ -5229,7 +5373,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 177, @@ -5265,7 +5410,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 178, @@ -5301,7 +5447,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 179, @@ -5337,7 +5484,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 184, @@ -5373,7 +5521,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 185, @@ -5409,7 +5558,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 186, @@ -5445,7 +5595,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 187, @@ -5481,7 +5632,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 188, @@ -5517,7 +5669,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 189, @@ -5553,7 +5706,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 190, @@ -5589,7 +5743,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 191, @@ -5625,7 +5780,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 140, @@ -5661,7 +5817,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 141, @@ -5697,7 +5854,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 142, @@ -5733,7 +5891,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 143, @@ -5769,7 +5928,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 136, @@ -5805,7 +5965,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 137, @@ -5841,7 +6002,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 138, @@ -5877,7 +6039,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 139, @@ -5913,7 +6076,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 128, @@ -5949,7 +6113,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 129, @@ -5985,7 +6150,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 130, @@ -6021,7 +6187,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 131, @@ -6057,7 +6224,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 112, @@ -6093,7 +6261,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 113, @@ -6129,7 +6298,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 114, @@ -6165,7 +6335,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 115, @@ -6201,7 +6372,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 116, @@ -6237,7 +6409,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 117, @@ -6273,7 +6446,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 118, @@ -6309,7 +6483,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 119, @@ -6345,7 +6520,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 104, @@ -6381,7 +6557,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 105, @@ -6417,7 +6594,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 106, @@ -6453,7 +6631,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 107, @@ -6489,7 +6668,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 108, @@ -6525,7 +6705,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 109, @@ -6561,7 +6742,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 110, @@ -6597,7 +6779,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 111, @@ -6633,7 +6816,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 100, @@ -6669,7 +6853,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 101, @@ -6705,7 +6890,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 102, @@ -6741,7 +6927,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 103, @@ -6777,7 +6964,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 96, @@ -6813,7 +7001,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 97, @@ -6849,7 +7038,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 98, @@ -6885,7 +7075,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 99, @@ -6921,7 +7112,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false } ], "vlans": [ @@ -6960,6 +7152,7 @@ "1": 1, "2": 0, "3": 0, + "4": 0, "700": 255, "786": 10 }, @@ -7023,7 +7216,7 @@ "exactMatchTableConfigs": [ ], - "switchIdToSwitchType": { + "switchIdToSwitchType_DEPRECATED": { }, "switchDrainState": 0, diff --git a/fboss/oss/link_test_configs/meru400biu.materialized_JSON b/fboss/oss/link_test_configs/meru400biu.materialized_JSON index 3c3208f962bd6..e5b61dfa563f9 100644 --- a/fboss/oss/link_test_configs/meru400biu.materialized_JSON +++ b/fboss/oss/link_test_configs/meru400biu.materialized_JSON @@ -45,7 +45,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 377, @@ -80,7 +81,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 378, @@ -115,7 +117,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 379, @@ -150,7 +153,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 396, @@ -185,7 +189,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 397, @@ -220,7 +225,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 398, @@ -255,7 +261,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 399, @@ -290,7 +297,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 380, @@ -325,7 +333,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 381, @@ -360,7 +369,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 382, @@ -395,7 +405,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 383, @@ -430,7 +441,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 392, @@ -465,7 +477,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 393, @@ -500,7 +513,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 394, @@ -535,7 +549,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 395, @@ -570,7 +585,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 368, @@ -605,7 +621,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 369, @@ -640,7 +657,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 370, @@ -675,7 +693,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 371, @@ -710,7 +729,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 388, @@ -745,7 +765,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 389, @@ -780,7 +801,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 390, @@ -815,7 +837,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 391, @@ -850,7 +873,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 372, @@ -885,7 +909,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 373, @@ -920,7 +945,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 374, @@ -955,7 +981,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 375, @@ -990,7 +1017,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 384, @@ -1025,7 +1053,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 385, @@ -1060,7 +1089,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 386, @@ -1095,7 +1125,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 387, @@ -1130,7 +1161,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 416, @@ -1165,7 +1197,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 417, @@ -1200,7 +1233,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 418, @@ -1235,7 +1269,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 419, @@ -1270,7 +1305,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 412, @@ -1305,7 +1341,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 413, @@ -1340,7 +1377,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 414, @@ -1375,7 +1413,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 415, @@ -1410,7 +1449,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 420, @@ -1445,7 +1485,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 421, @@ -1480,7 +1521,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 422, @@ -1515,7 +1557,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 423, @@ -1550,7 +1593,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 408, @@ -1585,7 +1629,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 409, @@ -1620,7 +1665,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 410, @@ -1655,7 +1701,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 411, @@ -1690,7 +1737,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 428, @@ -1725,7 +1773,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 429, @@ -1760,7 +1809,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 430, @@ -1795,7 +1845,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 431, @@ -1830,7 +1881,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 404, @@ -1865,7 +1917,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 405, @@ -1900,7 +1953,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 406, @@ -1935,7 +1989,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 407, @@ -1970,7 +2025,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 424, @@ -2005,7 +2061,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 425, @@ -2040,7 +2097,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 426, @@ -2075,7 +2133,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 427, @@ -2110,7 +2169,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 400, @@ -2145,7 +2205,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 401, @@ -2180,7 +2241,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 402, @@ -2215,7 +2277,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 403, @@ -2250,7 +2313,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 344, @@ -2285,7 +2349,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 345, @@ -2320,7 +2385,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 346, @@ -2355,7 +2421,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 347, @@ -2390,7 +2457,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 432, @@ -2425,7 +2493,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 433, @@ -2460,7 +2529,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 434, @@ -2495,7 +2565,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 435, @@ -2530,7 +2601,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 348, @@ -2565,7 +2637,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 349, @@ -2600,7 +2673,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 350, @@ -2635,7 +2709,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 351, @@ -2670,7 +2745,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 436, @@ -2705,7 +2781,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 437, @@ -2740,7 +2817,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 438, @@ -2775,7 +2853,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 439, @@ -2810,7 +2889,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 336, @@ -2845,7 +2925,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 337, @@ -2880,7 +2961,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 338, @@ -2915,7 +2997,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 339, @@ -2950,7 +3033,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 440, @@ -2985,7 +3069,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 441, @@ -3020,7 +3105,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 442, @@ -3055,7 +3141,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 443, @@ -3090,7 +3177,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 340, @@ -3125,7 +3213,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 341, @@ -3160,7 +3249,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 342, @@ -3195,7 +3285,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 343, @@ -3230,7 +3321,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 444, @@ -3265,7 +3357,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 445, @@ -3300,7 +3393,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 446, @@ -3335,7 +3429,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 447, @@ -3370,7 +3465,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 328, @@ -3405,7 +3501,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 329, @@ -3440,7 +3537,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 330, @@ -3475,7 +3573,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 331, @@ -3510,7 +3609,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 316, @@ -3545,7 +3645,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 317, @@ -3580,7 +3681,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 318, @@ -3615,7 +3717,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 319, @@ -3650,7 +3753,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 332, @@ -3685,7 +3789,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 333, @@ -3720,7 +3825,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 334, @@ -3755,7 +3861,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 335, @@ -3790,7 +3897,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 312, @@ -3825,7 +3933,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 313, @@ -3860,7 +3969,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 314, @@ -3895,7 +4005,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 315, @@ -3930,7 +4041,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 320, @@ -3965,7 +4077,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 321, @@ -4000,7 +4113,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 322, @@ -4035,7 +4149,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 323, @@ -4070,7 +4185,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 308, @@ -4105,7 +4221,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 309, @@ -4140,7 +4257,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 310, @@ -4175,7 +4293,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 311, @@ -4210,7 +4329,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 324, @@ -4245,7 +4365,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 325, @@ -4280,7 +4401,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 326, @@ -4315,7 +4437,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 327, @@ -4350,7 +4473,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 304, @@ -4385,7 +4509,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 305, @@ -4420,7 +4545,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 306, @@ -4455,7 +4581,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 307, @@ -4490,7 +4617,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 280, @@ -4525,7 +4653,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 281, @@ -4560,7 +4689,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 282, @@ -4595,7 +4725,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 283, @@ -4630,7 +4761,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 300, @@ -4665,7 +4797,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 301, @@ -4700,7 +4833,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 302, @@ -4735,7 +4869,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 303, @@ -4770,7 +4905,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 284, @@ -4805,7 +4941,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 285, @@ -4840,7 +4977,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 286, @@ -4875,7 +5013,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 287, @@ -4910,7 +5049,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 296, @@ -4945,7 +5085,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 297, @@ -4980,7 +5121,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 298, @@ -5015,7 +5157,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 299, @@ -5050,7 +5193,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 276, @@ -5085,7 +5229,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 277, @@ -5120,7 +5265,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 278, @@ -5155,7 +5301,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 279, @@ -5190,7 +5337,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 288, @@ -5225,7 +5373,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 289, @@ -5260,7 +5409,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 290, @@ -5295,7 +5445,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 291, @@ -5330,7 +5481,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 272, @@ -5365,7 +5517,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 273, @@ -5400,7 +5553,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 274, @@ -5435,7 +5589,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 275, @@ -5470,7 +5625,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 292, @@ -5505,7 +5661,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 293, @@ -5540,7 +5697,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 294, @@ -5575,7 +5733,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 295, @@ -5610,7 +5769,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 256, @@ -5645,7 +5805,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 257, @@ -5680,7 +5841,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 258, @@ -5715,7 +5877,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 259, @@ -5750,7 +5913,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 260, @@ -5785,7 +5949,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 261, @@ -5820,7 +5985,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 262, @@ -5855,7 +6021,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 263, @@ -5890,7 +6057,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 264, @@ -5925,7 +6093,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 265, @@ -5960,7 +6129,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 266, @@ -5995,7 +6165,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 267, @@ -6030,7 +6201,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 268, @@ -6065,7 +6237,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 269, @@ -6100,7 +6273,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 270, @@ -6135,7 +6309,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 271, @@ -6170,7 +6345,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 352, @@ -6205,7 +6381,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 353, @@ -6240,7 +6417,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 354, @@ -6275,7 +6453,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 355, @@ -6310,7 +6489,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 356, @@ -6345,7 +6525,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 357, @@ -6380,7 +6561,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 358, @@ -6415,7 +6597,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 359, @@ -6450,7 +6633,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 360, @@ -6485,7 +6669,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 361, @@ -6520,7 +6705,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 362, @@ -6555,7 +6741,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 363, @@ -6590,7 +6777,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 364, @@ -6625,7 +6813,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 365, @@ -6660,7 +6849,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 366, @@ -6695,7 +6885,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 367, @@ -6730,7 +6921,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2, @@ -6765,7 +6957,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 3, @@ -6800,7 +6993,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 4, @@ -6835,7 +7029,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 5, @@ -6870,7 +7065,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 6, @@ -6905,7 +7101,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 7, @@ -6940,7 +7137,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 8, @@ -6975,7 +7173,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 9, @@ -7010,7 +7209,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 10, @@ -7045,7 +7245,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 11, @@ -7080,7 +7281,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 12, @@ -7115,7 +7317,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 13, @@ -7150,7 +7353,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 14, @@ -7185,7 +7389,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 15, @@ -7220,7 +7425,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 16, @@ -7255,7 +7461,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 17, @@ -7290,7 +7497,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 1, @@ -7325,7 +7533,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false } ], "vlans": [ @@ -7441,6 +7650,7 @@ "1": 1, "2": 0, "3": 0, + "4": 0, "700": 255, "786": 10 }, @@ -7680,7 +7890,7 @@ "exactMatchTableConfigs": [ ], - "switchIdToSwitchType": { + "switchIdToSwitchType_DEPRECATED": { }, "switchDrainState": 0, @@ -7693,12 +7903,19 @@ "minimum": 0, "maximum": 2047 }, - "systemPortRange": { - "minimum": 10, - "maximum": 29 - }, "switchMac": "02:00:00:00:00:01", - "connectionHandle": "68:00" + "connectionHandle": "68:00", + "systemPortRanges": { + "systemPortRanges": [ + { + "minimum": 10, + "maximum": 29 + } + ] + }, + "localSystemPortOffset": 10, + "globalSystemPortOffset": 10, + "inbandPortId": 1 } }, "vendorMacOuis": [ @@ -7720,13 +7937,20 @@ "loopbackIps": [ ], - "systemPortRange": { - "minimum": 10, - "maximum": 29 - }, "nodeMac": "02:00:00:00:0F:0B", "asicType": 11, - "platformType": 18 + "platformType": 18, + "localSystemPortOffset": 10, + "globalSystemPortOffset": 10, + "systemPortRanges": { + "systemPortRanges": [ + { + "minimum": 10, + "maximum": 29 + } + ] + }, + "inbandPortId": 1 } }, "defaultVoqConfig": [ diff --git a/fboss/oss/link_test_configs/meru800bfa.materialized_JSON b/fboss/oss/link_test_configs/meru800bfa.materialized_JSON index 1b819775d281d..a3331ca2497c9 100644 --- a/fboss/oss/link_test_configs/meru800bfa.materialized_JSON +++ b/fboss/oss/link_test_configs/meru800bfa.materialized_JSON @@ -46,7 +46,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 262, @@ -82,7 +83,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2296, @@ -118,7 +120,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 4, @@ -154,7 +157,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2558, @@ -190,7 +194,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 258, @@ -226,7 +231,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2300, @@ -262,7 +268,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 0, @@ -298,7 +305,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2546, @@ -334,7 +342,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 270, @@ -370,7 +379,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2288, @@ -406,7 +416,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 12, @@ -442,7 +453,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2550, @@ -478,7 +490,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 266, @@ -514,7 +527,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2292, @@ -550,7 +564,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 8, @@ -586,7 +601,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2555, @@ -622,7 +638,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 263, @@ -658,7 +675,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2297, @@ -694,7 +712,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 5, @@ -730,7 +749,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2559, @@ -766,7 +786,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 259, @@ -802,7 +823,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2301, @@ -838,7 +860,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1, @@ -874,7 +897,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2547, @@ -910,7 +934,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 271, @@ -946,7 +971,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2289, @@ -982,7 +1008,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 13, @@ -1018,7 +1045,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2551, @@ -1054,7 +1082,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 267, @@ -1090,7 +1119,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2293, @@ -1126,7 +1156,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 9, @@ -1162,7 +1193,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2302, @@ -1198,7 +1230,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2, @@ -1234,7 +1267,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2556, @@ -1270,7 +1304,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 256, @@ -1306,7 +1341,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2298, @@ -1342,7 +1378,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 6, @@ -1378,7 +1415,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2552, @@ -1414,7 +1452,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 260, @@ -1450,7 +1489,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2294, @@ -1486,7 +1526,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 10, @@ -1522,7 +1563,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2548, @@ -1558,7 +1600,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 264, @@ -1594,7 +1637,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2290, @@ -1630,7 +1674,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 14, @@ -1666,7 +1711,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2544, @@ -1702,7 +1748,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 268, @@ -1738,7 +1785,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2303, @@ -1774,7 +1822,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3, @@ -1810,7 +1859,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2557, @@ -1846,7 +1896,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 257, @@ -1882,7 +1933,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2299, @@ -1918,7 +1970,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 7, @@ -1954,7 +2007,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2553, @@ -1990,7 +2044,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 261, @@ -2026,7 +2081,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2295, @@ -2062,7 +2118,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 11, @@ -2098,7 +2155,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2549, @@ -2134,7 +2192,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 265, @@ -2170,7 +2229,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2291, @@ -2206,7 +2266,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 15, @@ -2242,7 +2303,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2545, @@ -2278,7 +2340,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 269, @@ -2314,7 +2377,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2536, @@ -2350,7 +2414,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 276, @@ -2386,7 +2451,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2280, @@ -2422,7 +2488,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 20, @@ -2458,7 +2525,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2540, @@ -2494,7 +2562,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 272, @@ -2530,7 +2599,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2284, @@ -2566,7 +2636,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 16, @@ -2602,7 +2673,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2528, @@ -2638,7 +2710,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 284, @@ -2674,7 +2747,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2272, @@ -2710,7 +2784,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 28, @@ -2746,7 +2821,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2532, @@ -2782,7 +2858,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 280, @@ -2818,7 +2895,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2276, @@ -2854,7 +2932,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 24, @@ -2890,7 +2969,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2537, @@ -2926,7 +3006,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 277, @@ -2962,7 +3043,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2281, @@ -2998,7 +3080,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 21, @@ -3034,7 +3117,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2541, @@ -3070,7 +3154,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 273, @@ -3106,7 +3191,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2285, @@ -3142,7 +3228,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 17, @@ -3178,7 +3265,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2529, @@ -3214,7 +3302,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 285, @@ -3250,7 +3339,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2273, @@ -3286,7 +3376,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 29, @@ -3322,7 +3413,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2533, @@ -3358,7 +3450,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 281, @@ -3394,7 +3487,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2277, @@ -3430,7 +3524,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 25, @@ -3466,7 +3561,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2282, @@ -3502,7 +3598,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 22, @@ -3538,7 +3635,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2538, @@ -3574,7 +3672,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 278, @@ -3610,7 +3709,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2286, @@ -3646,7 +3746,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 18, @@ -3682,7 +3783,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2542, @@ -3718,7 +3820,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 274, @@ -3754,7 +3857,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2274, @@ -3790,7 +3894,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 30, @@ -3826,7 +3931,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2530, @@ -3862,7 +3968,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 286, @@ -3898,7 +4005,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2278, @@ -3934,7 +4042,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 26, @@ -3970,7 +4079,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2534, @@ -4006,7 +4116,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 282, @@ -4042,7 +4153,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2283, @@ -4078,7 +4190,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 23, @@ -4114,7 +4227,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2539, @@ -4150,7 +4264,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 279, @@ -4186,7 +4301,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2287, @@ -4222,7 +4338,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 19, @@ -4258,7 +4375,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2543, @@ -4294,7 +4412,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 275, @@ -4330,7 +4449,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2275, @@ -4366,7 +4486,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 31, @@ -4402,7 +4523,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2531, @@ -4438,7 +4560,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 287, @@ -4474,7 +4597,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2279, @@ -4510,7 +4634,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 27, @@ -4546,7 +4671,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2535, @@ -4582,7 +4708,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 283, @@ -4618,7 +4745,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2520, @@ -4654,7 +4782,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 292, @@ -4690,7 +4819,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2264, @@ -4726,7 +4856,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 36, @@ -4762,7 +4893,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2524, @@ -4798,7 +4930,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 288, @@ -4834,7 +4967,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2268, @@ -4870,7 +5004,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 32, @@ -4906,7 +5041,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2512, @@ -4942,7 +5078,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 300, @@ -4978,7 +5115,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2256, @@ -5014,7 +5152,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 44, @@ -5050,7 +5189,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2516, @@ -5086,7 +5226,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 296, @@ -5122,7 +5263,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2260, @@ -5158,7 +5300,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 40, @@ -5194,7 +5337,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2521, @@ -5230,7 +5374,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 293, @@ -5266,7 +5411,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2265, @@ -5302,7 +5448,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 37, @@ -5338,7 +5485,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2525, @@ -5374,7 +5522,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 289, @@ -5410,7 +5559,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2269, @@ -5446,7 +5596,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 33, @@ -5482,7 +5633,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2513, @@ -5518,7 +5670,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 301, @@ -5554,7 +5707,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2257, @@ -5590,7 +5744,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 45, @@ -5626,7 +5781,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2517, @@ -5662,7 +5818,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 297, @@ -5698,7 +5855,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2261, @@ -5734,7 +5892,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 41, @@ -5770,7 +5929,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2266, @@ -5806,7 +5966,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 38, @@ -5842,7 +6003,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2522, @@ -5878,7 +6040,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 294, @@ -5914,7 +6077,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2270, @@ -5950,7 +6114,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 34, @@ -5986,7 +6151,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2526, @@ -6022,7 +6188,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 290, @@ -6058,7 +6225,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2258, @@ -6094,7 +6262,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 46, @@ -6130,7 +6299,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2514, @@ -6166,7 +6336,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 302, @@ -6202,7 +6373,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2262, @@ -6238,7 +6410,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 42, @@ -6274,7 +6447,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2518, @@ -6310,7 +6484,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 298, @@ -6346,7 +6521,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2267, @@ -6382,7 +6558,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 39, @@ -6418,7 +6595,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2523, @@ -6454,7 +6632,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 295, @@ -6490,7 +6669,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2271, @@ -6526,7 +6706,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 35, @@ -6562,7 +6743,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2527, @@ -6598,7 +6780,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 291, @@ -6634,7 +6817,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2259, @@ -6670,7 +6854,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 47, @@ -6706,7 +6891,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2515, @@ -6742,7 +6928,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 303, @@ -6778,7 +6965,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2263, @@ -6814,7 +7002,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 43, @@ -6850,7 +7039,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2519, @@ -6886,7 +7076,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 299, @@ -6922,7 +7113,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2504, @@ -6958,7 +7150,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 308, @@ -6994,7 +7187,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2248, @@ -7030,7 +7224,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 52, @@ -7066,7 +7261,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2508, @@ -7102,7 +7298,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 304, @@ -7138,7 +7335,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2252, @@ -7174,7 +7372,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 48, @@ -7210,7 +7409,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2496, @@ -7246,7 +7446,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 316, @@ -7282,7 +7483,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2240, @@ -7318,7 +7520,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 60, @@ -7354,7 +7557,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2500, @@ -7390,7 +7594,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 312, @@ -7426,7 +7631,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2244, @@ -7462,7 +7668,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 56, @@ -7498,7 +7705,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2505, @@ -7534,7 +7742,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 309, @@ -7570,7 +7779,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2249, @@ -7606,7 +7816,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 53, @@ -7642,7 +7853,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2509, @@ -7678,7 +7890,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 305, @@ -7714,7 +7927,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2253, @@ -7750,7 +7964,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 49, @@ -7786,7 +8001,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2497, @@ -7822,7 +8038,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 317, @@ -7858,7 +8075,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2241, @@ -7894,7 +8112,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 61, @@ -7930,7 +8149,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2501, @@ -7966,7 +8186,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 313, @@ -8002,7 +8223,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2245, @@ -8038,7 +8260,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 57, @@ -8074,7 +8297,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2250, @@ -8110,7 +8334,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 54, @@ -8146,7 +8371,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2506, @@ -8182,7 +8408,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 310, @@ -8218,7 +8445,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2254, @@ -8254,7 +8482,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 50, @@ -8290,7 +8519,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2510, @@ -8326,7 +8556,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 306, @@ -8362,7 +8593,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2242, @@ -8398,7 +8630,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 62, @@ -8434,7 +8667,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2498, @@ -8470,7 +8704,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 318, @@ -8506,7 +8741,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2246, @@ -8542,7 +8778,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 58, @@ -8578,7 +8815,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2502, @@ -8614,7 +8852,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 314, @@ -8650,7 +8889,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2251, @@ -8686,7 +8926,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 55, @@ -8722,7 +8963,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2507, @@ -8758,7 +9000,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 311, @@ -8794,7 +9037,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2255, @@ -8830,7 +9074,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 51, @@ -8866,7 +9111,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2511, @@ -8902,7 +9148,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 307, @@ -8938,7 +9185,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2243, @@ -8974,7 +9222,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 63, @@ -9010,7 +9259,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2499, @@ -9046,7 +9296,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 319, @@ -9082,7 +9333,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2247, @@ -9118,7 +9370,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 59, @@ -9154,7 +9407,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2503, @@ -9190,7 +9444,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 315, @@ -9226,7 +9481,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2488, @@ -9262,7 +9518,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 324, @@ -9298,7 +9555,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2232, @@ -9334,7 +9592,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 68, @@ -9370,7 +9629,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2492, @@ -9406,7 +9666,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 320, @@ -9442,7 +9703,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2236, @@ -9478,7 +9740,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 64, @@ -9514,7 +9777,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2480, @@ -9550,7 +9814,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 332, @@ -9586,7 +9851,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2224, @@ -9622,7 +9888,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 76, @@ -9658,7 +9925,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2484, @@ -9694,7 +9962,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 328, @@ -9730,7 +9999,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2228, @@ -9766,7 +10036,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 72, @@ -9802,7 +10073,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2489, @@ -9838,7 +10110,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 325, @@ -9874,7 +10147,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2233, @@ -9910,7 +10184,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 69, @@ -9946,7 +10221,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2493, @@ -9982,7 +10258,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 321, @@ -10018,7 +10295,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2237, @@ -10054,7 +10332,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 65, @@ -10090,7 +10369,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2481, @@ -10126,7 +10406,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 333, @@ -10162,7 +10443,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2225, @@ -10198,7 +10480,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 77, @@ -10234,7 +10517,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2485, @@ -10270,7 +10554,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 329, @@ -10306,7 +10591,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2229, @@ -10342,7 +10628,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 73, @@ -10378,7 +10665,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2234, @@ -10414,7 +10702,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 70, @@ -10450,7 +10739,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2490, @@ -10486,7 +10776,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 326, @@ -10522,7 +10813,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2238, @@ -10558,7 +10850,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 66, @@ -10594,7 +10887,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2494, @@ -10630,7 +10924,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 322, @@ -10666,7 +10961,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2226, @@ -10702,7 +10998,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 78, @@ -10738,7 +11035,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2482, @@ -10774,7 +11072,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 334, @@ -10810,7 +11109,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2230, @@ -10846,7 +11146,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 74, @@ -10882,7 +11183,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2486, @@ -10918,7 +11220,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 330, @@ -10954,7 +11257,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2235, @@ -10990,7 +11294,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 71, @@ -11026,7 +11331,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2491, @@ -11062,7 +11368,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 327, @@ -11098,7 +11405,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2239, @@ -11134,7 +11442,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 67, @@ -11170,7 +11479,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2495, @@ -11206,7 +11516,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 323, @@ -11242,7 +11553,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2227, @@ -11278,7 +11590,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 79, @@ -11314,7 +11627,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2483, @@ -11350,7 +11664,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 335, @@ -11386,7 +11701,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2231, @@ -11422,7 +11738,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 75, @@ -11458,7 +11775,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2487, @@ -11494,7 +11812,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 331, @@ -11530,7 +11849,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2472, @@ -11566,7 +11886,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 340, @@ -11602,7 +11923,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2216, @@ -11638,7 +11960,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 84, @@ -11674,7 +11997,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2476, @@ -11710,7 +12034,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 336, @@ -11746,7 +12071,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2220, @@ -11782,7 +12108,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 80, @@ -11818,7 +12145,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2464, @@ -11854,7 +12182,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 348, @@ -11890,7 +12219,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2208, @@ -11926,7 +12256,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 92, @@ -11962,7 +12293,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2468, @@ -11998,7 +12330,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 344, @@ -12034,7 +12367,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2212, @@ -12070,7 +12404,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 88, @@ -12106,7 +12441,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2473, @@ -12142,7 +12478,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 341, @@ -12178,7 +12515,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2217, @@ -12214,7 +12552,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 85, @@ -12250,7 +12589,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2477, @@ -12286,7 +12626,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 337, @@ -12322,7 +12663,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2221, @@ -12358,7 +12700,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 81, @@ -12394,7 +12737,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2465, @@ -12430,7 +12774,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 349, @@ -12466,7 +12811,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2209, @@ -12502,7 +12848,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 93, @@ -12538,7 +12885,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2469, @@ -12574,7 +12922,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 345, @@ -12610,7 +12959,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2213, @@ -12646,7 +12996,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 89, @@ -12682,7 +13033,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2218, @@ -12718,7 +13070,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 86, @@ -12754,7 +13107,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2474, @@ -12790,7 +13144,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 342, @@ -12826,7 +13181,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2222, @@ -12862,7 +13218,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 82, @@ -12898,7 +13255,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2478, @@ -12934,7 +13292,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 338, @@ -12970,7 +13329,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2210, @@ -13006,7 +13366,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 94, @@ -13042,7 +13403,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2466, @@ -13078,7 +13440,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 350, @@ -13114,7 +13477,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2214, @@ -13150,7 +13514,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 90, @@ -13186,7 +13551,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2470, @@ -13222,7 +13588,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 346, @@ -13258,7 +13625,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2219, @@ -13294,7 +13662,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 87, @@ -13330,7 +13699,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2475, @@ -13366,7 +13736,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 343, @@ -13402,7 +13773,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2223, @@ -13438,7 +13810,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 83, @@ -13474,7 +13847,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2479, @@ -13510,7 +13884,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 339, @@ -13546,7 +13921,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2211, @@ -13582,7 +13958,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 95, @@ -13618,7 +13995,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2467, @@ -13654,7 +14032,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 351, @@ -13690,7 +14069,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2215, @@ -13726,7 +14106,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 91, @@ -13762,7 +14143,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2471, @@ -13798,7 +14180,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 347, @@ -13834,7 +14217,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2456, @@ -13870,7 +14254,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 356, @@ -13906,7 +14291,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2200, @@ -13942,7 +14328,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 100, @@ -13978,7 +14365,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2460, @@ -14014,7 +14402,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 352, @@ -14050,7 +14439,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2204, @@ -14086,7 +14476,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 96, @@ -14122,7 +14513,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2448, @@ -14158,7 +14550,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 364, @@ -14194,7 +14587,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2192, @@ -14230,7 +14624,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 108, @@ -14266,7 +14661,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2452, @@ -14302,7 +14698,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 360, @@ -14338,7 +14735,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2196, @@ -14374,7 +14772,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 104, @@ -14410,7 +14809,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2457, @@ -14446,7 +14846,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 357, @@ -14482,7 +14883,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2201, @@ -14518,7 +14920,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 101, @@ -14554,7 +14957,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2461, @@ -14590,7 +14994,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 353, @@ -14626,7 +15031,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2205, @@ -14662,7 +15068,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 97, @@ -14698,7 +15105,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2449, @@ -14734,7 +15142,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 365, @@ -14770,7 +15179,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2193, @@ -14806,7 +15216,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 109, @@ -14842,7 +15253,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2453, @@ -14878,7 +15290,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 361, @@ -14914,7 +15327,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2197, @@ -14950,7 +15364,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 105, @@ -14986,7 +15401,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2202, @@ -15022,7 +15438,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 102, @@ -15058,7 +15475,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2458, @@ -15094,7 +15512,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 358, @@ -15130,7 +15549,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2206, @@ -15166,7 +15586,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 98, @@ -15202,7 +15623,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2462, @@ -15238,7 +15660,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 354, @@ -15274,7 +15697,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2194, @@ -15310,7 +15734,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 110, @@ -15346,7 +15771,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2450, @@ -15382,7 +15808,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 366, @@ -15418,7 +15845,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2198, @@ -15454,7 +15882,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 106, @@ -15490,7 +15919,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2454, @@ -15526,7 +15956,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 362, @@ -15562,7 +15993,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2203, @@ -15598,7 +16030,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 103, @@ -15634,7 +16067,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2459, @@ -15670,7 +16104,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 359, @@ -15706,7 +16141,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2207, @@ -15742,7 +16178,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 99, @@ -15778,7 +16215,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2463, @@ -15814,7 +16252,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 355, @@ -15850,7 +16289,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2195, @@ -15886,7 +16326,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 111, @@ -15922,7 +16363,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2451, @@ -15958,7 +16400,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 367, @@ -15994,7 +16437,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2199, @@ -16030,7 +16474,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 107, @@ -16066,7 +16511,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2455, @@ -16102,7 +16548,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 363, @@ -16138,7 +16585,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2440, @@ -16174,7 +16622,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 372, @@ -16210,7 +16659,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2186, @@ -16246,7 +16696,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 118, @@ -16282,7 +16733,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2444, @@ -16318,7 +16770,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 368, @@ -16354,7 +16807,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2190, @@ -16390,7 +16844,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 114, @@ -16426,7 +16881,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2432, @@ -16462,7 +16918,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 380, @@ -16498,7 +16955,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2178, @@ -16534,7 +16992,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 126, @@ -16570,7 +17029,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2436, @@ -16606,7 +17066,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 376, @@ -16642,7 +17103,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2182, @@ -16678,7 +17140,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 122, @@ -16714,7 +17177,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2441, @@ -16750,7 +17214,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 373, @@ -16786,7 +17251,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2187, @@ -16822,7 +17288,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 119, @@ -16858,7 +17325,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2445, @@ -16894,7 +17362,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 369, @@ -16930,7 +17399,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2191, @@ -16966,7 +17436,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 115, @@ -17002,7 +17473,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2433, @@ -17038,7 +17510,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 381, @@ -17074,7 +17547,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2179, @@ -17110,7 +17584,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 127, @@ -17146,7 +17621,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2437, @@ -17182,7 +17658,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 377, @@ -17218,7 +17695,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2183, @@ -17254,7 +17732,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 123, @@ -17290,7 +17769,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2188, @@ -17326,7 +17806,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 112, @@ -17362,7 +17843,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2446, @@ -17398,7 +17880,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 370, @@ -17434,7 +17917,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2184, @@ -17470,7 +17954,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 116, @@ -17506,7 +17991,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2442, @@ -17542,7 +18028,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 374, @@ -17578,7 +18065,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2180, @@ -17614,7 +18102,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 120, @@ -17650,7 +18139,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2438, @@ -17686,7 +18176,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 378, @@ -17722,7 +18213,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2176, @@ -17758,7 +18250,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 124, @@ -17794,7 +18287,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2434, @@ -17830,7 +18324,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 382, @@ -17866,7 +18361,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2189, @@ -17902,7 +18398,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 113, @@ -17938,7 +18435,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2447, @@ -17974,7 +18472,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 371, @@ -18010,7 +18509,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2185, @@ -18046,7 +18546,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 117, @@ -18082,7 +18583,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2443, @@ -18118,7 +18620,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 375, @@ -18154,7 +18657,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2181, @@ -18190,7 +18694,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 121, @@ -18226,7 +18731,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2439, @@ -18262,7 +18768,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 379, @@ -18298,7 +18805,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2177, @@ -18334,7 +18842,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 125, @@ -18370,7 +18879,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2435, @@ -18406,7 +18916,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 383, @@ -18442,7 +18953,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2430, @@ -18478,7 +18990,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 386, @@ -18514,7 +19027,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2172, @@ -18550,7 +19064,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 128, @@ -18586,7 +19101,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2426, @@ -18622,7 +19138,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 390, @@ -18658,7 +19175,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2168, @@ -18694,7 +19212,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 132, @@ -18730,7 +19249,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2422, @@ -18766,7 +19286,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 394, @@ -18802,7 +19323,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2164, @@ -18838,7 +19360,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 136, @@ -18874,7 +19397,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2418, @@ -18910,7 +19434,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 398, @@ -18946,7 +19471,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2160, @@ -18982,7 +19508,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 140, @@ -19018,7 +19545,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2431, @@ -19054,7 +19582,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 387, @@ -19090,7 +19619,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2173, @@ -19126,7 +19656,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 129, @@ -19162,7 +19693,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2427, @@ -19198,7 +19730,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 391, @@ -19234,7 +19767,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2169, @@ -19270,7 +19804,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 133, @@ -19306,7 +19841,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2423, @@ -19342,7 +19878,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 395, @@ -19378,7 +19915,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2165, @@ -19414,7 +19952,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 137, @@ -19450,7 +19989,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2419, @@ -19486,7 +20026,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 399, @@ -19522,7 +20063,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2161, @@ -19558,7 +20100,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 141, @@ -19594,7 +20137,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2170, @@ -19630,7 +20174,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 134, @@ -19666,7 +20211,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2424, @@ -19702,7 +20248,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 388, @@ -19738,7 +20285,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2174, @@ -19774,7 +20322,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 130, @@ -19810,7 +20359,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2428, @@ -19846,7 +20396,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 384, @@ -19882,7 +20433,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2162, @@ -19918,7 +20470,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 142, @@ -19954,7 +20507,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2416, @@ -19990,7 +20544,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 396, @@ -20026,7 +20581,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2166, @@ -20062,7 +20618,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 138, @@ -20098,7 +20655,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2420, @@ -20134,7 +20692,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 392, @@ -20170,7 +20729,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2171, @@ -20206,7 +20766,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 135, @@ -20242,7 +20803,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2425, @@ -20278,7 +20840,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 389, @@ -20314,7 +20877,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2175, @@ -20350,7 +20914,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 131, @@ -20386,7 +20951,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2429, @@ -20422,7 +20988,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 385, @@ -20458,7 +21025,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2163, @@ -20494,7 +21062,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 143, @@ -20530,7 +21099,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2417, @@ -20566,7 +21136,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 397, @@ -20602,7 +21173,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2167, @@ -20638,7 +21210,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 139, @@ -20674,7 +21247,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2421, @@ -20710,7 +21284,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 393, @@ -20746,7 +21321,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2408, @@ -20782,7 +21358,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 404, @@ -20818,7 +21395,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2152, @@ -20854,7 +21432,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 148, @@ -20890,7 +21469,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2412, @@ -20926,7 +21506,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 400, @@ -20962,7 +21543,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2156, @@ -20998,7 +21580,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 144, @@ -21034,7 +21617,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2400, @@ -21070,7 +21654,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 412, @@ -21106,7 +21691,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2144, @@ -21142,7 +21728,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 156, @@ -21178,7 +21765,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2404, @@ -21214,7 +21802,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 408, @@ -21250,7 +21839,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2148, @@ -21286,7 +21876,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 152, @@ -21322,7 +21913,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2409, @@ -21358,7 +21950,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 405, @@ -21394,7 +21987,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2153, @@ -21430,7 +22024,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 149, @@ -21466,7 +22061,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2413, @@ -21502,7 +22098,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 401, @@ -21538,7 +22135,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2157, @@ -21574,7 +22172,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 145, @@ -21610,7 +22209,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2401, @@ -21646,7 +22246,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 413, @@ -21682,7 +22283,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2145, @@ -21718,7 +22320,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 157, @@ -21754,7 +22357,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2405, @@ -21790,7 +22394,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 409, @@ -21826,7 +22431,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2149, @@ -21862,7 +22468,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 153, @@ -21898,7 +22505,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2154, @@ -21934,7 +22542,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 150, @@ -21970,7 +22579,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2410, @@ -22006,7 +22616,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 406, @@ -22042,7 +22653,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2158, @@ -22078,7 +22690,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 146, @@ -22114,7 +22727,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2414, @@ -22150,7 +22764,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 402, @@ -22186,7 +22801,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2146, @@ -22222,7 +22838,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 158, @@ -22258,7 +22875,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2402, @@ -22294,7 +22912,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 414, @@ -22330,7 +22949,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2150, @@ -22366,7 +22986,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 154, @@ -22402,7 +23023,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2406, @@ -22438,7 +23060,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 410, @@ -22474,7 +23097,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2155, @@ -22510,7 +23134,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 151, @@ -22546,7 +23171,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2411, @@ -22582,7 +23208,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 407, @@ -22618,7 +23245,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2159, @@ -22654,7 +23282,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 147, @@ -22690,7 +23319,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2415, @@ -22726,7 +23356,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 403, @@ -22762,7 +23393,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2147, @@ -22798,7 +23430,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 159, @@ -22834,7 +23467,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2403, @@ -22870,7 +23504,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 415, @@ -22906,7 +23541,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2151, @@ -22942,7 +23578,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 155, @@ -22978,7 +23615,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2407, @@ -23014,7 +23652,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 411, @@ -23050,7 +23689,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2392, @@ -23086,7 +23726,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 420, @@ -23122,7 +23763,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2136, @@ -23158,7 +23800,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 164, @@ -23194,7 +23837,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2396, @@ -23230,7 +23874,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 416, @@ -23266,7 +23911,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2140, @@ -23302,7 +23948,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 160, @@ -23338,7 +23985,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2384, @@ -23374,7 +24022,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 428, @@ -23410,7 +24059,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2128, @@ -23446,7 +24096,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 172, @@ -23482,7 +24133,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2388, @@ -23518,7 +24170,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 424, @@ -23554,7 +24207,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2132, @@ -23590,7 +24244,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 168, @@ -23626,7 +24281,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2393, @@ -23662,7 +24318,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 421, @@ -23698,7 +24355,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2137, @@ -23734,7 +24392,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 165, @@ -23770,7 +24429,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2397, @@ -23806,7 +24466,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 417, @@ -23842,7 +24503,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2141, @@ -23878,7 +24540,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 161, @@ -23914,7 +24577,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2385, @@ -23950,7 +24614,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 429, @@ -23986,7 +24651,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2129, @@ -24022,7 +24688,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 173, @@ -24058,7 +24725,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2389, @@ -24094,7 +24762,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 425, @@ -24130,7 +24799,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2133, @@ -24166,7 +24836,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 169, @@ -24202,7 +24873,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2138, @@ -24238,7 +24910,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 166, @@ -24274,7 +24947,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2394, @@ -24310,7 +24984,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 422, @@ -24346,7 +25021,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2142, @@ -24382,7 +25058,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 162, @@ -24418,7 +25095,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2398, @@ -24454,7 +25132,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 418, @@ -24490,7 +25169,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2130, @@ -24526,7 +25206,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 174, @@ -24562,7 +25243,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2386, @@ -24598,7 +25280,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 430, @@ -24634,7 +25317,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2134, @@ -24670,7 +25354,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 170, @@ -24706,7 +25391,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2390, @@ -24742,7 +25428,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 426, @@ -24778,7 +25465,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2139, @@ -24814,7 +25502,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 167, @@ -24850,7 +25539,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2395, @@ -24886,7 +25576,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 423, @@ -24922,7 +25613,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2143, @@ -24958,7 +25650,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 163, @@ -24994,7 +25687,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2399, @@ -25030,7 +25724,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 419, @@ -25066,7 +25761,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2131, @@ -25102,7 +25798,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 175, @@ -25138,7 +25835,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2387, @@ -25174,7 +25872,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 431, @@ -25210,7 +25909,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2135, @@ -25246,7 +25946,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 171, @@ -25282,7 +25983,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2391, @@ -25318,7 +26020,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 427, @@ -25354,7 +26057,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2376, @@ -25390,7 +26094,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 436, @@ -25426,7 +26131,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2120, @@ -25462,7 +26168,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 180, @@ -25498,7 +26205,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2380, @@ -25534,7 +26242,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 432, @@ -25570,7 +26279,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2124, @@ -25606,7 +26316,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 176, @@ -25642,7 +26353,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2368, @@ -25678,7 +26390,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 444, @@ -25714,7 +26427,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2112, @@ -25750,7 +26464,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 188, @@ -25786,7 +26501,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2372, @@ -25822,7 +26538,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 440, @@ -25858,7 +26575,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2116, @@ -25894,7 +26612,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 184, @@ -25930,7 +26649,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2377, @@ -25966,7 +26686,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 437, @@ -26002,7 +26723,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2121, @@ -26038,7 +26760,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 181, @@ -26074,7 +26797,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2381, @@ -26110,7 +26834,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 433, @@ -26146,7 +26871,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2125, @@ -26182,7 +26908,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 177, @@ -26218,7 +26945,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2369, @@ -26254,7 +26982,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 445, @@ -26290,7 +27019,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2113, @@ -26326,7 +27056,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 189, @@ -26362,7 +27093,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2373, @@ -26398,7 +27130,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 441, @@ -26434,7 +27167,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2117, @@ -26470,7 +27204,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 185, @@ -26506,7 +27241,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2122, @@ -26542,7 +27278,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 182, @@ -26578,7 +27315,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2378, @@ -26614,7 +27352,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 438, @@ -26650,7 +27389,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2126, @@ -26686,7 +27426,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 178, @@ -26722,7 +27463,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2382, @@ -26758,7 +27500,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 434, @@ -26794,7 +27537,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2114, @@ -26830,7 +27574,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 190, @@ -26866,7 +27611,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2370, @@ -26902,7 +27648,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 446, @@ -26938,7 +27685,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2118, @@ -26974,7 +27722,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 186, @@ -27010,7 +27759,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2374, @@ -27046,7 +27796,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 442, @@ -27082,7 +27833,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2123, @@ -27118,7 +27870,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 183, @@ -27154,7 +27907,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2379, @@ -27190,7 +27944,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 439, @@ -27226,7 +27981,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2127, @@ -27262,7 +28018,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 179, @@ -27298,7 +28055,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2383, @@ -27334,7 +28092,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 435, @@ -27370,7 +28129,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2115, @@ -27406,7 +28166,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 191, @@ -27442,7 +28203,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2371, @@ -27478,7 +28240,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 447, @@ -27514,7 +28277,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2119, @@ -27550,7 +28314,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 187, @@ -27586,7 +28351,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2375, @@ -27622,7 +28388,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 443, @@ -27658,7 +28425,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2360, @@ -27694,7 +28462,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 452, @@ -27730,7 +28499,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2104, @@ -27766,7 +28536,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 196, @@ -27802,7 +28573,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2364, @@ -27838,7 +28610,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 448, @@ -27874,7 +28647,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2108, @@ -27910,7 +28684,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 192, @@ -27946,7 +28721,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2352, @@ -27982,7 +28758,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 460, @@ -28018,7 +28795,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2096, @@ -28054,7 +28832,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 204, @@ -28090,7 +28869,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2356, @@ -28126,7 +28906,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 456, @@ -28162,7 +28943,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2100, @@ -28198,7 +28980,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 200, @@ -28234,7 +29017,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2361, @@ -28270,7 +29054,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 453, @@ -28306,7 +29091,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2105, @@ -28342,7 +29128,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 197, @@ -28378,7 +29165,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2365, @@ -28414,7 +29202,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 449, @@ -28450,7 +29239,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2109, @@ -28486,7 +29276,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 193, @@ -28522,7 +29313,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2353, @@ -28558,7 +29350,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 461, @@ -28594,7 +29387,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2097, @@ -28630,7 +29424,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 205, @@ -28666,7 +29461,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2357, @@ -28702,7 +29498,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 457, @@ -28738,7 +29535,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2101, @@ -28774,7 +29572,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 201, @@ -28810,7 +29609,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2106, @@ -28846,7 +29646,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 198, @@ -28882,7 +29683,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2362, @@ -28918,7 +29720,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 454, @@ -28954,7 +29757,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2110, @@ -28990,7 +29794,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 194, @@ -29026,7 +29831,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2366, @@ -29062,7 +29868,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 450, @@ -29098,7 +29905,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2098, @@ -29134,7 +29942,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 206, @@ -29170,7 +29979,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2354, @@ -29206,7 +30016,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 462, @@ -29242,7 +30053,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2102, @@ -29278,7 +30090,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 202, @@ -29314,7 +30127,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2358, @@ -29350,7 +30164,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 458, @@ -29386,7 +30201,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2107, @@ -29422,7 +30238,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 199, @@ -29458,7 +30275,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2363, @@ -29494,7 +30312,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 455, @@ -29530,7 +30349,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2111, @@ -29566,7 +30386,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 195, @@ -29602,7 +30423,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2367, @@ -29638,7 +30460,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 451, @@ -29674,7 +30497,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2099, @@ -29710,7 +30534,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 207, @@ -29746,7 +30571,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2355, @@ -29782,7 +30608,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 463, @@ -29818,7 +30645,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2103, @@ -29854,7 +30682,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 203, @@ -29890,7 +30719,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2359, @@ -29926,7 +30756,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 459, @@ -29962,7 +30793,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2344, @@ -29998,7 +30830,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 468, @@ -30034,7 +30867,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2088, @@ -30070,7 +30904,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 212, @@ -30106,7 +30941,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2348, @@ -30142,7 +30978,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 464, @@ -30178,7 +31015,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2092, @@ -30214,7 +31052,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 208, @@ -30250,7 +31089,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2336, @@ -30286,7 +31126,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 476, @@ -30322,7 +31163,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2080, @@ -30358,7 +31200,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 220, @@ -30394,7 +31237,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2340, @@ -30430,7 +31274,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 472, @@ -30466,7 +31311,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2084, @@ -30502,7 +31348,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 216, @@ -30538,7 +31385,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2345, @@ -30574,7 +31422,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 469, @@ -30610,7 +31459,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2089, @@ -30646,7 +31496,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 213, @@ -30682,7 +31533,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2349, @@ -30718,7 +31570,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 465, @@ -30754,7 +31607,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2093, @@ -30790,7 +31644,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 209, @@ -30826,7 +31681,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2337, @@ -30862,7 +31718,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 477, @@ -30898,7 +31755,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2081, @@ -30934,7 +31792,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 221, @@ -30970,7 +31829,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2341, @@ -31006,7 +31866,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 473, @@ -31042,7 +31903,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2085, @@ -31078,7 +31940,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 217, @@ -31114,7 +31977,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2090, @@ -31150,7 +32014,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 214, @@ -31186,7 +32051,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2346, @@ -31222,7 +32088,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 470, @@ -31258,7 +32125,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2094, @@ -31294,7 +32162,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 210, @@ -31330,7 +32199,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2350, @@ -31366,7 +32236,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 466, @@ -31402,7 +32273,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2082, @@ -31438,7 +32310,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 222, @@ -31474,7 +32347,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2338, @@ -31510,7 +32384,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 478, @@ -31546,7 +32421,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2086, @@ -31582,7 +32458,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 218, @@ -31618,7 +32495,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2342, @@ -31654,7 +32532,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 474, @@ -31690,7 +32569,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2091, @@ -31726,7 +32606,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 215, @@ -31762,7 +32643,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2347, @@ -31798,7 +32680,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 471, @@ -31834,7 +32717,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2095, @@ -31870,7 +32754,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 211, @@ -31906,7 +32791,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2351, @@ -31942,7 +32828,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 467, @@ -31978,7 +32865,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2083, @@ -32014,7 +32902,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 223, @@ -32050,7 +32939,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2339, @@ -32086,7 +32976,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 479, @@ -32122,7 +33013,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2087, @@ -32158,7 +33050,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 219, @@ -32194,7 +33087,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2343, @@ -32230,7 +33124,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 475, @@ -32266,7 +33161,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2328, @@ -32302,7 +33198,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 484, @@ -32338,7 +33235,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2072, @@ -32374,7 +33272,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 228, @@ -32410,7 +33309,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2332, @@ -32446,7 +33346,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 480, @@ -32482,7 +33383,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2076, @@ -32518,7 +33420,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 224, @@ -32554,7 +33457,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2320, @@ -32590,7 +33494,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 492, @@ -32626,7 +33531,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2064, @@ -32662,7 +33568,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 236, @@ -32698,7 +33605,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2324, @@ -32734,7 +33642,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 488, @@ -32770,7 +33679,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2068, @@ -32806,7 +33716,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 232, @@ -32842,7 +33753,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2329, @@ -32878,7 +33790,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 485, @@ -32914,7 +33827,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2073, @@ -32950,7 +33864,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 229, @@ -32986,7 +33901,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2333, @@ -33022,7 +33938,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 481, @@ -33058,7 +33975,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2077, @@ -33094,7 +34012,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 225, @@ -33130,7 +34049,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2321, @@ -33166,7 +34086,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 493, @@ -33202,7 +34123,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2065, @@ -33238,7 +34160,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 237, @@ -33274,7 +34197,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2325, @@ -33310,7 +34234,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 489, @@ -33346,7 +34271,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2069, @@ -33382,7 +34308,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 233, @@ -33418,7 +34345,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2074, @@ -33454,7 +34382,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 230, @@ -33490,7 +34419,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2330, @@ -33526,7 +34456,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 486, @@ -33562,7 +34493,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2078, @@ -33598,7 +34530,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 226, @@ -33634,7 +34567,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2334, @@ -33670,7 +34604,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 482, @@ -33706,7 +34641,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2066, @@ -33742,7 +34678,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 238, @@ -33778,7 +34715,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2322, @@ -33814,7 +34752,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 494, @@ -33850,7 +34789,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2070, @@ -33886,7 +34826,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 234, @@ -33922,7 +34863,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2326, @@ -33958,7 +34900,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 490, @@ -33994,7 +34937,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2075, @@ -34030,7 +34974,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 231, @@ -34066,7 +35011,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2331, @@ -34102,7 +35048,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 487, @@ -34138,7 +35085,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2079, @@ -34174,7 +35122,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 227, @@ -34210,7 +35159,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2335, @@ -34246,7 +35196,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 483, @@ -34282,7 +35233,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2067, @@ -34318,7 +35270,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 239, @@ -34354,7 +35307,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2323, @@ -34390,7 +35344,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 495, @@ -34426,7 +35381,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2071, @@ -34462,7 +35418,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 235, @@ -34498,7 +35455,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2327, @@ -34534,7 +35492,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 491, @@ -34570,7 +35529,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2312, @@ -34606,7 +35566,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 500, @@ -34642,7 +35603,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2058, @@ -34678,7 +35640,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 246, @@ -34714,7 +35677,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2316, @@ -34750,7 +35714,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 496, @@ -34786,7 +35751,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2062, @@ -34822,7 +35788,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 242, @@ -34858,7 +35825,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2304, @@ -34894,7 +35862,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 508, @@ -34930,7 +35899,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2050, @@ -34966,7 +35936,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 254, @@ -35002,7 +35973,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2308, @@ -35038,7 +36010,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 504, @@ -35074,7 +36047,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2054, @@ -35110,7 +36084,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 250, @@ -35146,7 +36121,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2313, @@ -35182,7 +36158,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 501, @@ -35218,7 +36195,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2059, @@ -35254,7 +36232,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 247, @@ -35290,7 +36269,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2317, @@ -35326,7 +36306,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 497, @@ -35362,7 +36343,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2063, @@ -35398,7 +36380,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 243, @@ -35434,7 +36417,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2305, @@ -35470,7 +36454,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 509, @@ -35506,7 +36491,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2051, @@ -35542,7 +36528,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 255, @@ -35578,7 +36565,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2309, @@ -35614,7 +36602,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 505, @@ -35650,7 +36639,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2055, @@ -35686,7 +36676,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 251, @@ -35722,7 +36713,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2060, @@ -35758,7 +36750,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 240, @@ -35794,7 +36787,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2318, @@ -35830,7 +36824,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 498, @@ -35866,7 +36861,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2056, @@ -35902,7 +36898,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 244, @@ -35938,7 +36935,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2314, @@ -35974,7 +36972,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 502, @@ -36010,7 +37009,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2052, @@ -36046,7 +37046,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 248, @@ -36082,7 +37083,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2310, @@ -36118,7 +37120,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 506, @@ -36154,7 +37157,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2048, @@ -36190,7 +37194,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 252, @@ -36226,7 +37231,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2306, @@ -36262,7 +37268,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 510, @@ -36298,7 +37305,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2061, @@ -36334,7 +37342,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 241, @@ -36370,7 +37379,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2319, @@ -36406,7 +37416,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 499, @@ -36442,7 +37453,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2057, @@ -36478,7 +37490,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 245, @@ -36514,7 +37527,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2315, @@ -36550,7 +37564,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 503, @@ -36586,7 +37601,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2053, @@ -36622,7 +37638,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 249, @@ -36658,7 +37675,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2311, @@ -36694,7 +37712,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 507, @@ -36730,7 +37749,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2049, @@ -36766,7 +37786,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 253, @@ -36802,7 +37823,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2307, @@ -36838,7 +37860,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 511, @@ -36874,7 +37897,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false } ], "vlans": [ @@ -36913,6 +37937,7 @@ "1": 1, "2": 0, "3": 0, + "4": 0, "700": 255, "786": 10 }, @@ -36976,7 +38001,7 @@ "exactMatchTableConfigs": [ ], - "switchIdToSwitchType": { + "switchIdToSwitchType_DEPRECATED": { }, "switchDrainState": 0, diff --git a/fboss/oss/link_test_configs/meru800bia.materialized_JSON b/fboss/oss/link_test_configs/meru800bia.materialized_JSON index fd8f9b650219d..2188c610cac8b 100644 --- a/fboss/oss/link_test_configs/meru800bia.materialized_JSON +++ b/fboss/oss/link_test_configs/meru800bia.materialized_JSON @@ -44,7 +44,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 2, @@ -79,7 +80,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3, @@ -114,7 +116,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 4, @@ -149,7 +152,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 5, @@ -184,7 +188,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 6, @@ -219,7 +224,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 7, @@ -254,7 +260,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 1093, @@ -289,7 +296,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1089, @@ -324,7 +332,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1088, @@ -359,7 +368,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1091, @@ -394,7 +404,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1092, @@ -429,7 +440,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1090, @@ -464,7 +476,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1094, @@ -499,7 +512,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1095, @@ -534,7 +548,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1096, @@ -569,7 +584,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1103, @@ -604,7 +620,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1098, @@ -639,7 +656,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1097, @@ -674,7 +692,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1100, @@ -709,7 +728,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1101, @@ -744,7 +764,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1102, @@ -779,7 +800,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1099, @@ -814,7 +836,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1080, @@ -849,7 +872,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1081, @@ -884,7 +908,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1082, @@ -919,7 +944,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1083, @@ -954,7 +980,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1084, @@ -989,7 +1016,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1085, @@ -1024,7 +1052,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1086, @@ -1059,7 +1088,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1087, @@ -1094,7 +1124,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1074, @@ -1129,7 +1160,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1075, @@ -1164,7 +1196,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1072, @@ -1199,7 +1232,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1073, @@ -1234,7 +1268,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1076, @@ -1269,7 +1304,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1077, @@ -1304,7 +1340,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1078, @@ -1339,7 +1376,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1079, @@ -1374,7 +1412,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1070, @@ -1409,7 +1448,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1071, @@ -1444,7 +1484,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1069, @@ -1479,7 +1520,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1065, @@ -1514,7 +1556,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1068, @@ -1549,7 +1592,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1066, @@ -1584,7 +1628,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1064, @@ -1619,7 +1664,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1067, @@ -1654,7 +1700,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1061, @@ -1689,7 +1736,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1063, @@ -1724,7 +1772,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1062, @@ -1759,7 +1808,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1057, @@ -1794,7 +1844,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1060, @@ -1829,7 +1880,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1058, @@ -1864,7 +1916,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1056, @@ -1899,7 +1952,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1059, @@ -1934,7 +1988,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1048, @@ -1969,7 +2024,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1049, @@ -2004,7 +2060,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1050, @@ -2039,7 +2096,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1051, @@ -2074,7 +2132,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1052, @@ -2109,7 +2168,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1053, @@ -2144,7 +2204,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1054, @@ -2179,7 +2240,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1055, @@ -2214,7 +2276,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1042, @@ -2249,7 +2312,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1043, @@ -2284,7 +2348,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1040, @@ -2319,7 +2384,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1041, @@ -2354,7 +2420,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1044, @@ -2389,7 +2456,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1045, @@ -2424,7 +2492,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1046, @@ -2459,7 +2528,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1047, @@ -2494,7 +2564,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1034, @@ -2529,7 +2600,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1033, @@ -2564,7 +2636,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1032, @@ -2599,7 +2672,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1039, @@ -2634,7 +2708,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1035, @@ -2669,7 +2744,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1038, @@ -2704,7 +2780,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1037, @@ -2739,7 +2816,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1036, @@ -2774,7 +2852,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1026, @@ -2809,7 +2888,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1025, @@ -2844,7 +2924,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1024, @@ -2879,7 +2960,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1031, @@ -2914,7 +2996,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1027, @@ -2949,7 +3032,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1030, @@ -2984,7 +3068,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1029, @@ -3019,7 +3104,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1028, @@ -3054,7 +3140,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 20, @@ -3089,7 +3176,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 21, @@ -3124,7 +3212,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 24, @@ -3159,7 +3248,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 25, @@ -3194,7 +3284,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 18, @@ -3229,7 +3320,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 19, @@ -3264,7 +3356,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 22, @@ -3299,7 +3392,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 23, @@ -3334,7 +3428,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 14, @@ -3369,7 +3464,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 15, @@ -3404,7 +3500,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 10, @@ -3439,7 +3536,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 11, @@ -3474,7 +3572,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 16, @@ -3509,7 +3608,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 17, @@ -3544,7 +3644,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 12, @@ -3579,7 +3680,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 13, @@ -3614,7 +3716,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 8, @@ -3649,7 +3752,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 9, @@ -3684,7 +3788,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 26, @@ -3719,7 +3824,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 27, @@ -3754,7 +3860,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 30, @@ -3789,7 +3896,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 31, @@ -3824,7 +3932,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 28, @@ -3859,7 +3968,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 29, @@ -3894,7 +4004,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 42, @@ -3929,7 +4040,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 43, @@ -3964,7 +4076,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 32, @@ -3999,7 +4112,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 33, @@ -4034,7 +4148,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 38, @@ -4069,7 +4184,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 39, @@ -4104,7 +4220,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 40, @@ -4139,7 +4256,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 41, @@ -4174,7 +4292,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 34, @@ -4209,7 +4328,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 35, @@ -4244,7 +4364,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 36, @@ -4279,7 +4400,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 37, @@ -4314,7 +4436,8 @@ ], "drainState": 0, - "scope": 1 + "scope": 1, + "conditionalEntropyRehash": false }, { "logicalID": 1117, @@ -4349,7 +4472,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1116, @@ -4384,7 +4508,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1112, @@ -4419,7 +4544,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1119, @@ -4454,7 +4580,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1115, @@ -4489,7 +4616,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1118, @@ -4524,7 +4652,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1114, @@ -4559,7 +4688,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1113, @@ -4594,7 +4724,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1110, @@ -4629,7 +4760,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1111, @@ -4664,7 +4796,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1109, @@ -4699,7 +4832,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1105, @@ -4734,7 +4868,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1108, @@ -4769,7 +4904,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1106, @@ -4804,7 +4940,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1104, @@ -4839,7 +4976,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1107, @@ -4874,7 +5012,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1138, @@ -4909,7 +5048,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1139, @@ -4944,7 +5084,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1141, @@ -4979,7 +5120,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1143, @@ -5014,7 +5156,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1140, @@ -5049,7 +5192,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1136, @@ -5084,7 +5228,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1142, @@ -5119,7 +5264,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1137, @@ -5154,7 +5300,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1120, @@ -5189,7 +5336,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1123, @@ -5224,7 +5372,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1125, @@ -5259,7 +5408,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1121, @@ -5294,7 +5444,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1124, @@ -5329,7 +5480,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1122, @@ -5364,7 +5516,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1126, @@ -5399,7 +5552,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1127, @@ -5434,7 +5588,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1133, @@ -5469,7 +5624,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1132, @@ -5504,7 +5660,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1134, @@ -5539,7 +5696,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1135, @@ -5574,7 +5732,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1131, @@ -5609,7 +5768,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1128, @@ -5644,7 +5804,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1130, @@ -5679,7 +5840,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1129, @@ -5714,7 +5876,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1149, @@ -5749,7 +5912,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1150, @@ -5784,7 +5948,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1144, @@ -5819,7 +5984,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1151, @@ -5854,7 +6020,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1146, @@ -5889,7 +6056,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1148, @@ -5924,7 +6092,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1147, @@ -5959,7 +6128,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1145, @@ -5994,7 +6164,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1168, @@ -6029,7 +6200,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1171, @@ -6064,7 +6236,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1173, @@ -6099,7 +6272,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1169, @@ -6134,7 +6308,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1172, @@ -6169,7 +6344,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1170, @@ -6204,7 +6380,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1174, @@ -6239,7 +6416,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1175, @@ -6274,7 +6452,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1176, @@ -6309,7 +6488,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1177, @@ -6344,7 +6524,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1178, @@ -6379,7 +6560,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1183, @@ -6414,7 +6596,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1181, @@ -6449,7 +6632,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1180, @@ -6484,7 +6668,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1179, @@ -6519,7 +6704,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1182, @@ -6554,7 +6740,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1165, @@ -6589,7 +6776,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1166, @@ -6624,7 +6812,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1160, @@ -6659,7 +6848,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1167, @@ -6694,7 +6884,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1162, @@ -6729,7 +6920,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1164, @@ -6764,7 +6956,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1163, @@ -6799,7 +6992,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1161, @@ -6834,7 +7028,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1156, @@ -6869,7 +7064,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1159, @@ -6904,7 +7100,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1157, @@ -6939,7 +7136,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1153, @@ -6974,7 +7172,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1152, @@ -7009,7 +7208,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1154, @@ -7044,7 +7244,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1158, @@ -7079,7 +7280,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 1155, @@ -7114,7 +7316,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false } ], "vlans": [ @@ -7484,6 +7687,7 @@ "1": 1, "2": 0, "3": 0, + "4": 0, "700": 255, "786": 10 }, @@ -7816,6 +8020,10 @@ { "rxReason": 6, "queueId": 0 + }, + { + "rxReason": 21, + "queueId": 0 } ] }, @@ -7866,7 +8074,7 @@ "exactMatchTableConfigs": [ ], - "switchIdToSwitchType": { + "switchIdToSwitchType_DEPRECATED": { }, "switchDrainState": 0, @@ -7879,12 +8087,19 @@ "minimum": 0, "maximum": 2047 }, - "systemPortRange": { - "minimum": 10, - "maximum": 53 - }, "switchMac": "02:00:00:00:00:01", - "connectionHandle": "15:00" + "connectionHandle": "15:00", + "systemPortRanges": { + "systemPortRanges": [ + { + "minimum": 10, + "maximum": 53 + } + ] + }, + "localSystemPortOffset": 10, + "globalSystemPortOffset": 10, + "inbandPortId": 1 } }, "vendorMacOuis": [ @@ -7906,13 +8121,20 @@ "loopbackIps": [ ], - "systemPortRange": { - "minimum": 10, - "maximum": 53 - }, "nodeMac": "02:00:00:00:0F:0B", "asicType": 14, - "platformType": 28 + "platformType": 28, + "localSystemPortOffset": 10, + "globalSystemPortOffset": 10, + "systemPortRanges": { + "systemPortRanges": [ + { + "minimum": 10, + "maximum": 53 + } + ] + }, + "inbandPortId": 1 } }, "defaultVoqConfig": [ @@ -7932,9 +8154,11 @@ "custom_feature_fabric_cgm_ddc_th_tune.BCM8889X": "1", "custom_feature_programmability_standard_image_name.BCM8889X": "AI23", "custom_feature_ser_event_generate": "1", + "custom_feature_shel_arm_enable": "1", "custom_feature_statdma_enable": "0", "custom_feature_use_new_access.BCM8889X": "1", "custom_feature_use_new_access.BCM8889X_ADAPTER": "1", + "custom_feature_vsqd_lossless_reject_enable": "1", "dpp_db_path": "/tmp/db", "dram_temperature_monitor_enable.BCM8889X_ADAPTER": "0", "dtm_flow_mapping_mode_region_65.BCM8889X": "3", @@ -7968,6 +8192,7 @@ "dtm_flow_mapping_mode_region_93.BCM8889X": "3", "dtm_flow_mapping_mode_region_94.BCM8889X": "3", "dtm_flow_nof_remote_cores_region.BCM8889X": "4", + "eventor_sbus_dma_channels.BCM8889X": "0,6,0,7", "fabric_connect_mode.BCM8889X": "FE", "fabric_connectivity_based_on_integrity": "0", "fabric_distributed_system_enable": "1", @@ -9007,6 +9232,7 @@ "sai_l3_max_ecmp_paths": "512", "sai_macro_flow_based_hash": "1", "sai_mmu_qgroups_default": "1", + "sai_ocb_fc_config": "2", "sai_optimize_acl_ipv6_addr_qual": "0", "sai_optimized_mmu": "0x1", "sai_pfc_defaults_disable": "0x1", @@ -9014,6 +9240,7 @@ "sai_pkt_rx_custom_cfg": "1", "sai_pkt_rx_pkt_size": "16512", "sai_recycle_port_lane_base": "440", + "sai_tc_mirror_buffer_size_bytes": "1", "sai_trigger_linkscan_remote_local_faults": "1", "sai_voq_wm_latency_enable": "1", "sat_enable.BCM8889X_ADAPTER": "1", diff --git a/fboss/oss/link_test_configs/tahan800bc.materialized_JSON b/fboss/oss/link_test_configs/tahan800bc.materialized_JSON index 612627993b6c2..fd6b8f6aac13b 100644 --- a/fboss/oss/link_test_configs/tahan800bc.materialized_JSON +++ b/fboss/oss/link_test_configs/tahan800bc.materialized_JSON @@ -43,7 +43,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 2, @@ -78,7 +79,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 3, @@ -113,7 +115,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 4, @@ -148,7 +151,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 5, @@ -183,7 +187,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 6, @@ -218,7 +223,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 7, @@ -253,7 +259,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 8, @@ -288,7 +295,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 9, @@ -323,7 +331,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 10, @@ -358,7 +367,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 11, @@ -393,7 +403,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 12, @@ -428,7 +439,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 13, @@ -463,7 +475,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 14, @@ -498,7 +511,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 15, @@ -533,7 +547,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 16, @@ -568,7 +583,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 17, @@ -603,7 +619,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 18, @@ -638,7 +655,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 19, @@ -673,7 +691,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 20, @@ -708,7 +727,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 21, @@ -743,7 +763,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 22, @@ -778,7 +799,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 23, @@ -813,7 +835,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 24, @@ -848,7 +871,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 25, @@ -883,7 +907,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 26, @@ -918,7 +943,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 27, @@ -953,7 +979,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 28, @@ -988,7 +1015,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 29, @@ -1023,7 +1051,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 30, @@ -1058,7 +1087,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 31, @@ -1093,7 +1123,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 32, @@ -1128,7 +1159,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 33, @@ -1163,7 +1195,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 34, @@ -1198,7 +1231,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 35, @@ -1233,7 +1267,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 36, @@ -1268,7 +1303,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 37, @@ -1303,7 +1339,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 38, @@ -1338,7 +1375,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 39, @@ -1373,7 +1411,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 40, @@ -1408,7 +1447,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 41, @@ -1443,7 +1483,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 42, @@ -1478,7 +1519,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 43, @@ -1513,7 +1555,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 44, @@ -1548,7 +1591,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 45, @@ -1583,7 +1627,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 46, @@ -1618,7 +1663,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 47, @@ -1653,7 +1699,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 48, @@ -1688,7 +1735,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 49, @@ -1723,7 +1771,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 50, @@ -1758,7 +1807,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 51, @@ -1793,7 +1843,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 52, @@ -1828,7 +1879,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 53, @@ -1863,7 +1915,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 54, @@ -1898,7 +1951,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 55, @@ -1933,7 +1987,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 56, @@ -1968,7 +2023,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 57, @@ -2003,7 +2059,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 58, @@ -2038,7 +2095,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 59, @@ -2073,7 +2131,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 60, @@ -2108,7 +2167,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 61, @@ -2143,7 +2203,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 62, @@ -2178,7 +2239,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 63, @@ -2213,7 +2275,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 64, @@ -2248,7 +2311,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 65, @@ -2283,7 +2347,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 66, @@ -2318,7 +2383,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 67, @@ -2353,7 +2419,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 68, @@ -2388,7 +2455,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 69, @@ -2423,7 +2491,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 70, @@ -2458,7 +2527,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 71, @@ -2493,7 +2563,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 72, @@ -2528,7 +2599,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 73, @@ -2563,7 +2635,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 74, @@ -2598,7 +2671,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 75, @@ -2633,7 +2707,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 76, @@ -2668,7 +2743,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 77, @@ -2703,7 +2779,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 78, @@ -2738,7 +2815,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 79, @@ -2773,7 +2851,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 80, @@ -2808,7 +2887,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 81, @@ -2843,7 +2923,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 82, @@ -2878,7 +2959,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 83, @@ -2913,7 +2995,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 84, @@ -2948,7 +3031,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 85, @@ -2983,7 +3067,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 86, @@ -3018,7 +3103,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 87, @@ -3053,7 +3139,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 88, @@ -3088,7 +3175,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 89, @@ -3123,7 +3211,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 90, @@ -3158,7 +3247,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 91, @@ -3193,7 +3283,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 92, @@ -3228,7 +3319,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 93, @@ -3263,7 +3355,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 94, @@ -3298,7 +3391,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 95, @@ -3333,7 +3427,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 96, @@ -3368,7 +3463,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false }, { "logicalID": 97, @@ -3403,7 +3499,8 @@ ], "drainState": 0, - "scope": 0 + "scope": 0, + "conditionalEntropyRehash": false } ], "vlans": [ @@ -6378,6 +6475,7 @@ "1": 1, "2": 0, "3": 0, + "4": 0, "700": 255, "786": 10 }, @@ -6745,7 +6843,7 @@ "exactMatchTableConfigs": [ ], - "switchIdToSwitchType": { + "switchIdToSwitchType_DEPRECATED": { }, "switchDrainState": 0, diff --git a/fboss/oss/production_features/asic_production_features.materialized_JSON b/fboss/oss/production_features/asic_production_features.materialized_JSON index 892ad4c64dc8b..a2842d3f95f08 100644 --- a/fboss/oss/production_features/asic_production_features.materialized_JSON +++ b/fboss/oss/production_features/asic_production_features.materialized_JSON @@ -115,7 +115,8 @@ 36, 37, 41, - 44 + 44, + 46 ], "tomahawk3": [ 2, @@ -372,7 +373,8 @@ "RSW_ROUTE_SCALE", "FSW_ROUTE_SCALE", "TH_ALPM_ROUTE_SCALE", - "VLAN" + "VLAN", + "LED_PROGRAMMING" ], "tomahawk3": [ "CPU_RX_TX", diff --git a/fboss/oss/qsfp_test_configs/janga800bic.materialized_JSON b/fboss/oss/qsfp_test_configs/janga800bic.materialized_JSON index bc51bf035ceb5..fa6f7b1b13e9c 100644 --- a/fboss/oss/qsfp_test_configs/janga800bic.materialized_JSON +++ b/fboss/oss/qsfp_test_configs/janga800bic.materialized_JSON @@ -653,7 +653,19 @@ "versions": [ { "fwType": 1, - "version": "1.15" + "version": "1.16" + } + ] + }, + "QDD-400G-XDR4": { + "versions": [ + { + "fwType": 1, + "version": "2.1" + }, + { + "fwType": 2, + "version": "0.0" } ] }, diff --git a/fboss/oss/qsfp_test_configs/meru400bfu.materialized_JSON b/fboss/oss/qsfp_test_configs/meru400bfu.materialized_JSON index ca3064b6d1fe4..2588dde1797fc 100644 --- a/fboss/oss/qsfp_test_configs/meru400bfu.materialized_JSON +++ b/fboss/oss/qsfp_test_configs/meru400bfu.materialized_JSON @@ -75,7 +75,19 @@ "versions": [ { "fwType": 1, - "version": "1.15" + "version": "1.16" + } + ] + }, + "QDD-400G-XDR4": { + "versions": [ + { + "fwType": 1, + "version": "2.1" + }, + { + "fwType": 2, + "version": "0.0" } ] }, diff --git a/fboss/oss/qsfp_test_configs/meru400biu.materialized_JSON b/fboss/oss/qsfp_test_configs/meru400biu.materialized_JSON index 7920a82cc6999..812a1023d5df0 100644 --- a/fboss/oss/qsfp_test_configs/meru400biu.materialized_JSON +++ b/fboss/oss/qsfp_test_configs/meru400biu.materialized_JSON @@ -80,7 +80,19 @@ "versions": [ { "fwType": 1, - "version": "1.15" + "version": "1.16" + } + ] + }, + "QDD-400G-XDR4": { + "versions": [ + { + "fwType": 1, + "version": "2.1" + }, + { + "fwType": 2, + "version": "0.0" } ] }, diff --git a/fboss/oss/qsfp_test_configs/tahan800bc.materialized_JSON b/fboss/oss/qsfp_test_configs/tahan800bc.materialized_JSON index b052d896a6403..0cc3c31fe23aa 100644 --- a/fboss/oss/qsfp_test_configs/tahan800bc.materialized_JSON +++ b/fboss/oss/qsfp_test_configs/tahan800bc.materialized_JSON @@ -122,7 +122,19 @@ "versions": [ { "fwType": 1, - "version": "1.15" + "version": "1.16" + } + ] + }, + "QDD-400G-XDR4": { + "versions": [ + { + "fwType": 1, + "version": "2.1" + }, + { + "fwType": 2, + "version": "0.0" } ] }, diff --git a/fboss/oss/sai_hw_unsupported_tests/sai_hw_unsupported_tests.materialized_JSON b/fboss/oss/sai_hw_unsupported_tests/sai_hw_unsupported_tests.materialized_JSON index 07f44f1ffd7ae..615558d698aa4 100644 --- a/fboss/oss/sai_hw_unsupported_tests/sai_hw_unsupported_tests.materialized_JSON +++ b/fboss/oss/sai_hw_unsupported_tests/sai_hw_unsupported_tests.materialized_JSON @@ -52,6 +52,9 @@ { "test_name_regex": "HwAclCounterTest/[01].VerifyCounterBumpOnBthOpcodeHitFrontPanel$" }, + { + "test_name_regex": "HwAsicDefaultProgrammingTest.*$" + }, { "test_name_regex": "warm_boot.*" }, @@ -189,6 +192,9 @@ { "test_name_regex": "HwAclCounterTest/[01].VerifyCounterBumpOnBthOpcodeHitFrontPanel$" }, + { + "test_name_regex": "HwAsicDefaultProgrammingTest.*$" + }, { "test_name_regex": "warm_boot.*" }, @@ -326,6 +332,9 @@ { "test_name_regex": "HwAclCounterTest/[01].VerifyCounterBumpOnBthOpcodeHitFrontPanel$" }, + { + "test_name_regex": "HwAsicDefaultProgrammingTest.*$" + }, { "test_name_regex": "HwRouteScaleTest.anticipatedRouteScaleGenerator$" }, @@ -393,6 +402,9 @@ }, { "test_name_regex": "HwAclCounterTest/[01].VerifyCounterBumpOnBthOpcodeHitFrontPanel$" + }, + { + "test_name_regex": "HwAsicDefaultProgrammingTest.*$" } ], "brcm/10.2.0.0_odp/10.2.0.0_odp/tomahawk4": [ @@ -446,6 +458,9 @@ }, { "test_name_regex": "HwAclCounterTest/[01].VerifyCounterBumpOnBthOpcodeHitFrontPanel$" + }, + { + "test_name_regex": "HwAsicDefaultProgrammingTest.*$" } ], "brcm/10.2.0.0_odp/10.2.0.0_odp/tomahawk5": [ @@ -499,6 +514,9 @@ }, { "test_name_regex": "HwAclCounterTest/[01].VerifyCounterBumpOnBthOpcodeHitFrontPanel$" + }, + { + "test_name_regex": "HwAsicDefaultProgrammingTest.*$" } ], "brcm/11.3.0.0_dnx_odp/11.3.0.0_dnx_odp/jericho3": [ @@ -1231,6 +1249,9 @@ { "test_name_regex": "HwLoadBalancerTestV[46].Ucmp.*$" }, + { + "test_name_regex": "HwAsicDefaultProgrammingTest.*$" + }, { "test_name_regex": "HwInPauseFloodTest.*$" } @@ -1287,6 +1308,9 @@ { "test_name_regex": "HwAclCounterTest/[01].VerifyCounterBumpOnBthOpcodeHitFrontPanel$" }, + { + "test_name_regex": "HwAsicDefaultProgrammingTest.*$" + }, { "test_name_regex": "HwRouteScaleTest.anticipatedRouteScaleGenerator$" }, @@ -1354,6 +1378,9 @@ }, { "test_name_regex": "HwAclCounterTest/[01].VerifyCounterBumpOnBthOpcodeHitFrontPanel$" + }, + { + "test_name_regex": "HwAsicDefaultProgrammingTest.*$" } ], "brcm/8.2.0.0_odp/8.2.0.0_odp/tomahawk4": [ @@ -1407,6 +1434,9 @@ }, { "test_name_regex": "HwAclCounterTest/[01].VerifyCounterBumpOnBthOpcodeHitFrontPanel$" + }, + { + "test_name_regex": "HwAsicDefaultProgrammingTest.*$" } ], "brcm/8.2.0.0_odp/9.2.0.0_odp/tomahawk": [ @@ -1461,6 +1491,9 @@ { "test_name_regex": "HwAclCounterTest/[01].VerifyCounterBumpOnBthOpcodeHitFrontPanel$" }, + { + "test_name_regex": "HwAsicDefaultProgrammingTest.*$" + }, { "test_name_regex": "HwRouteScaleTest.anticipatedRouteScaleGenerator$" }, @@ -1528,6 +1561,9 @@ }, { "test_name_regex": "HwAclCounterTest/[01].VerifyCounterBumpOnBthOpcodeHitFrontPanel$" + }, + { + "test_name_regex": "HwAsicDefaultProgrammingTest.*$" } ], "brcm/8.2.0.0_odp/9.2.0.0_odp/tomahawk4": [ @@ -1581,6 +1617,9 @@ }, { "test_name_regex": "HwAclCounterTest/[01].VerifyCounterBumpOnBthOpcodeHitFrontPanel$" + }, + { + "test_name_regex": "HwAsicDefaultProgrammingTest.*$" } ], "brcm/8.2.0.0_sim_odp/8.2.0.0_sim_odp/tomahawk4/simulator": [ @@ -1635,6 +1674,9 @@ { "test_name_regex": "HwAclCounterTest/[01].VerifyCounterBumpOnBthOpcodeHitFrontPanel$" }, + { + "test_name_regex": "HwAsicDefaultProgrammingTest.*$" + }, { "test_name_regex": "warm_boot.*" }, @@ -1772,6 +1814,9 @@ { "test_name_regex": "HwAclCounterTest/[01].VerifyCounterBumpOnBthOpcodeHitFrontPanel$" }, + { + "test_name_regex": "HwAsicDefaultProgrammingTest.*$" + }, { "test_name_regex": "HwRouteScaleTest.anticipatedRouteScaleGenerator$" }, @@ -1839,6 +1884,9 @@ }, { "test_name_regex": "HwAclCounterTest/[01].VerifyCounterBumpOnBthOpcodeHitFrontPanel$" + }, + { + "test_name_regex": "HwAsicDefaultProgrammingTest.*$" } ], "brcm/9.2.0.0_odp/9.2.0.0_odp/tomahawk4": [ @@ -1892,6 +1940,9 @@ }, { "test_name_regex": "HwAclCounterTest/[01].VerifyCounterBumpOnBthOpcodeHitFrontPanel$" + }, + { + "test_name_regex": "HwAsicDefaultProgrammingTest.*$" } ], "leaba/1.42.8/1.42.8/gibraltar": [ @@ -1975,6 +2026,9 @@ }, { "test_name_regex": "HwAclCounterTest/[01].*$" + }, + { + "test_name_regex": "HwAsicDefaultProgrammingTest.*$" } ], "leaba/1.42.8/1.42.8/simulator": [ @@ -2028,6 +2082,9 @@ }, { "test_name_regex": "HwAclCounterTest/[01].VerifyCounterBumpOnBthOpcodeHitFrontPanel$" + }, + { + "test_name_regex": "HwAsicDefaultProgrammingTest.*$" } ], "leaba/1.65.1/1.65.1/gibraltar": [ @@ -2081,6 +2138,9 @@ }, { "test_name_regex": "HwAclCounterTest/[01].VerifyCounterBumpOnBthOpcodeHitFrontPanel$" + }, + { + "test_name_regex": "HwAsicDefaultProgrammingTest.*$" } ], "leaba/1.68.0/1.68.0/graphene200/simulator": [ @@ -2134,6 +2194,9 @@ }, { "test_name_regex": "HwAclCounterTest/[01].VerifyCounterBumpOnBthOpcodeHitFrontPanel$" + }, + { + "test_name_regex": "HwAsicDefaultProgrammingTest.*$" } ], "leaba/24.4.90/24.4.90/gibraltar": [ @@ -2187,6 +2250,9 @@ }, { "test_name_regex": "HwAclCounterTest/[01].VerifyCounterBumpOnBthOpcodeHitFrontPanel$" + }, + { + "test_name_regex": "HwAsicDefaultProgrammingTest.*$" } ], "leaba/24.4.90_yuba/24.4.90_yuba/graphene200": [ @@ -2240,6 +2306,9 @@ }, { "test_name_regex": "HwAclCounterTest/[01].VerifyCounterBumpOnBthOpcodeHitFrontPanel$" + }, + { + "test_name_regex": "HwAsicDefaultProgrammingTest.*$" } ], "leaba/24.8.3001/24.8.3001/gibraltar": [ @@ -2293,6 +2362,9 @@ }, { "test_name_regex": "HwAclCounterTest/[01].VerifyCounterBumpOnBthOpcodeHitFrontPanel$" + }, + { + "test_name_regex": "HwAsicDefaultProgrammingTest.*$" } ] } diff --git a/fboss/oss/stable_commits/github_hashes_11112024_152622.tar.gz b/fboss/oss/stable_commits/github_hashes_11112024_152622.tar.gz new file mode 100644 index 0000000000000..0f26b8c24915a Binary files /dev/null and b/fboss/oss/stable_commits/github_hashes_11112024_152622.tar.gz differ diff --git a/fboss/oss/stable_commits/github_hashes_11132024_094640.tar.gz b/fboss/oss/stable_commits/github_hashes_11132024_094640.tar.gz new file mode 100644 index 0000000000000..5aa7b56905b05 Binary files /dev/null and b/fboss/oss/stable_commits/github_hashes_11132024_094640.tar.gz differ diff --git a/fboss/oss/stable_commits/latest_stable_hashes.tar.gz b/fboss/oss/stable_commits/latest_stable_hashes.tar.gz index cb0961ecaffed..5bfd90762742d 120000 --- a/fboss/oss/stable_commits/latest_stable_hashes.tar.gz +++ b/fboss/oss/stable_commits/latest_stable_hashes.tar.gz @@ -1 +1 @@ -github_hashes_10212024_124153.tar.gz \ No newline at end of file +github_hashes_11132024_094640.tar.gz \ No newline at end of file diff --git a/fboss/platform/configs/janga800bic/platform_manager.json b/fboss/platform/configs/janga800bic/platform_manager.json index 83f821b28cdf5..439f016fbafc8 100644 --- a/fboss/platform/configs/janga800bic/platform_manager.json +++ b/fboss/platform/configs/janga800bic/platform_manager.json @@ -147,13 +147,13 @@ }, { "busName": "INCOMING@3", - "address": "0x21", + "address": "0x2f", "kernelDeviceName": "bp4f_mp2891", "pmUnitScopedName": "SMB_U337_PMBUS_1" }, { "busName": "INCOMING@3", - "address": "0x2f", + "address": "0x21", "kernelDeviceName": "bp4f_mp2891", "pmUnitScopedName": "SMB_U177_PMBUS_2" }, diff --git a/fboss/platform/configs/meru800bfa/platform_manager.json b/fboss/platform/configs/meru800bfa/platform_manager.json index d451bd298d2c4..1e1b0cfa6de1c 100644 --- a/fboss/platform/configs/meru800bfa/platform_manager.json +++ b/fboss/platform/configs/meru800bfa/platform_manager.json @@ -4446,7 +4446,7 @@ "/run/devmap/sensors/PSU4_PMBUS": "/SMB_SLOT@0/PSU_SLOT@3/[PSU_PMBUS]" }, "bspKmodsRpmName": "arista_bsp_kmods", - "bspKmodsRpmVersion": "0.7.4-1", + "bspKmodsRpmVersion": "0.7.6-1", "bspKmodsToReload": [ "scd-xcvr", "scd-spi", diff --git a/fboss/platform/configs/meru800bia/platform_manager.json b/fboss/platform/configs/meru800bia/platform_manager.json index 1e36508301ece..84f79fa48fd9f 100644 --- a/fboss/platform/configs/meru800bia/platform_manager.json +++ b/fboss/platform/configs/meru800bia/platform_manager.json @@ -1605,7 +1605,7 @@ "/run/devmap/sensors/PSU2_PMBUS": "/SMB_SLOT@0/PSU_SLOT@1/[PSU_PMBUS]" }, "bspKmodsRpmName": "arista_bsp_kmods", - "bspKmodsRpmVersion": "0.7.4-1", + "bspKmodsRpmVersion": "0.7.6-1", "bspKmodsToReload": [ "scd-xcvr", "scd-spi", diff --git a/fboss/platform/configs/morgan800cc/fan_service.json b/fboss/platform/configs/morgan800cc/fan_service.json index 13cbdf154d963..fe32b308573f6 100644 --- a/fboss/platform/configs/morgan800cc/fan_service.json +++ b/fboss/platform/configs/morgan800cc/fan_service.json @@ -103,7 +103,7 @@ "fanName": "fan_2", "rpmSysfsPath": "/run/devmap/sensors/MCB_FAN_PWM/fan2_input", "pwmSysfsPath": "/run/devmap/sensors/MCB_FAN_PWM/pwm2", - "presenceSysfsPath": "/run/devmap/sensors/MCB_FAN_PWM/fan2_presence", + "presenceSysfsPath": "/run/devmap/sensors/MCB_FAN_PWM/fan1_presence", "ledSysfsPath": "/sys/class/leds/fan2_led:blue:status/brightness", "pwmMin": 1, "pwmMax": 100, @@ -116,7 +116,7 @@ "fanName": "fan_3", "rpmSysfsPath": "/run/devmap/sensors/MCB_FAN_PWM/fan3_input", "pwmSysfsPath": "/run/devmap/sensors/MCB_FAN_PWM/pwm3", - "presenceSysfsPath": "/run/devmap/sensors/MCB_FAN_PWM/fan3_presence", + "presenceSysfsPath": "/run/devmap/sensors/MCB_FAN_PWM/fan2_presence", "ledSysfsPath": "/sys/class/leds/fan3_led:blue:status/brightness", "pwmMin": 1, "pwmMax": 100, @@ -129,7 +129,7 @@ "fanName": "fan_4", "rpmSysfsPath": "/run/devmap/sensors/MCB_FAN_PWM/fan4_input", "pwmSysfsPath": "/run/devmap/sensors/MCB_FAN_PWM/pwm4", - "presenceSysfsPath": "/run/devmap/sensors/MCB_FAN_PWM/fan4_presence", + "presenceSysfsPath": "/run/devmap/sensors/MCB_FAN_PWM/fan2_presence", "ledSysfsPath": "/sys/class/leds/fan4_led:blue:status/brightness", "pwmMin": 1, "pwmMax": 100, @@ -142,7 +142,7 @@ "fanName": "fan_5", "rpmSysfsPath": "/run/devmap/sensors/MCB_FAN_PWM/fan5_input", "pwmSysfsPath": "/run/devmap/sensors/MCB_FAN_PWM/pwm5", - "presenceSysfsPath": "/run/devmap/sensors/MCB_FAN_PWM/fan5_presence", + "presenceSysfsPath": "/run/devmap/sensors/MCB_FAN_PWM/fan3_presence", "ledSysfsPath": "/sys/class/leds/fan5_led:blue:status/brightness", "pwmMin": 1, "pwmMax": 100, @@ -155,8 +155,9 @@ "fanName": "fan_6", "rpmSysfsPath": "/run/devmap/sensors/MCB_FAN_PWM/fan6_input", "pwmSysfsPath": "/run/devmap/sensors/MCB_FAN_PWM/pwm6", - "presenceSysfsPath": "/run/devmap/sensors/MCB_FAN_PWM/fan6_presence", + "presenceSysfsPath": "/run/devmap/sensors/MCB_FAN_PWM/fan3_presence", "ledSysfsPath": "/sys/class/leds/fan6_led:blue:status/brightness", + "pwmMin": 1, "pwmMax": 100, "fanPresentVal": 1, "fanMissingVal": 0, @@ -167,7 +168,7 @@ "fanName": "fan_7", "rpmSysfsPath": "/run/devmap/sensors/MCB_FAN_PWM/fan7_input", "pwmSysfsPath": "/run/devmap/sensors/MCB_FAN_PWM/pwm7", - "presenceSysfsPath": "/run/devmap/sensors/MCB_FAN_PWM/fan7_presence", + "presenceSysfsPath": "/run/devmap/sensors/MCB_FAN_PWM/fan4_presence", "ledSysfsPath": "/sys/class/leds/fan7_led:blue:status/brightness", "pwmMin": 1, "pwmMax": 100, @@ -180,7 +181,7 @@ "fanName": "fan_8", "rpmSysfsPath": "/run/devmap/sensors/MCB_FAN_PWM/fan8_input", "pwmSysfsPath": "/run/devmap/sensors/MCB_FAN_PWM/pwm8", - "presenceSysfsPath": "/run/devmap/sensors/MCB_FAN_PWM/fan8_presence", + "presenceSysfsPath": "/run/devmap/sensors/MCB_FAN_PWM/fan4_presence", "ledSysfsPath": "/sys/class/leds/fan8_led:blue:status/brightness", "pwmMin": 1, "pwmMax": 100, @@ -188,6 +189,110 @@ "fanMissingVal": 0, "fanGoodLedVal": 2, "fanFailLedVal": 1 + }, + { + "fanName": "fan_9", + "rpmSysfsPath": "/run/devmap/sensors/MCB_FAN_PWM/fan9_input", + "pwmSysfsPath": "/run/devmap/sensors/MCB_FAN_PWM/pwm9", + "presenceSysfsPath": "/run/devmap/sensors/MCB_FAN_PWM/fan5_presence", + "ledSysfsPath": "/sys/class/leds/fan9_led:blue:status/brightness", + "pwmMin": 1, + "pwmMax": 100, + "fanPresentVal": 1, + "fanMissingVal": 0, + "fanGoodLedVal": 2, + "fanFailLedVal": 1 + }, + { + "fanName": "fan_10", + "rpmSysfsPath": "/run/devmap/sensors/MCB_FAN_PWM/fan10_input", + "pwmSysfsPath": "/run/devmap/sensors/MCB_FAN_PWM/pwm10", + "presenceSysfsPath": "/run/devmap/sensors/MCB_FAN_PWM/fan5_presence", + "ledSysfsPath": "/sys/class/leds/fan10_led:blue:status/brightness", + "pwmMin": 1, + "pwmMax": 100, + "fanPresentVal": 1, + "fanMissingVal": 0, + "fanGoodLedVal": 2, + "fanFailLedVal": 1 + }, + { + "fanName": "fan_11", + "rpmSysfsPath": "/run/devmap/sensors/MCB_FAN_PWM/fan11_input", + "pwmSysfsPath": "/run/devmap/sensors/MCB_FAN_PWM/pwm11", + "presenceSysfsPath": "/run/devmap/sensors/MCB_FAN_PWM/fan6_presence", + "ledSysfsPath": "/sys/class/leds/fan11_led:blue:status/brightness", + "pwmMin": 1, + "pwmMax": 100, + "fanPresentVal": 1, + "fanMissingVal": 0, + "fanGoodLedVal": 2, + "fanFailLedVal": 1 + }, + { + "fanName": "fan_12", + "rpmSysfsPath": "/run/devmap/sensors/MCB_FAN_PWM/fan12_input", + "pwmSysfsPath": "/run/devmap/sensors/MCB_FAN_PWM/pwm12", + "presenceSysfsPath": "/run/devmap/sensors/MCB_FAN_PWM/fan6_presence", + "ledSysfsPath": "/sys/class/leds/fan12_led:blue:status/brightness", + "pwmMin": 1, + "pwmMax": 100, + "fanPresentVal": 1, + "fanMissingVal": 0, + "fanGoodLedVal": 2, + "fanFailLedVal": 1 + }, + { + "fanName": "fan_13", + "rpmSysfsPath": "/run/devmap/sensors/MCB_FAN_PWM/fan13_input", + "pwmSysfsPath": "/run/devmap/sensors/MCB_FAN_PWM/pwm13", + "presenceSysfsPath": "/run/devmap/sensors/MCB_FAN_PWM/fan7_presence", + "ledSysfsPath": "/sys/class/leds/fan13_led:blue:status/brightness", + "pwmMin": 1, + "pwmMax": 100, + "fanPresentVal": 1, + "fanMissingVal": 0, + "fanGoodLedVal": 2, + "fanFailLedVal": 1 + }, + { + "fanName": "fan_14", + "rpmSysfsPath": "/run/devmap/sensors/MCB_FAN_PWM/fan14_input", + "pwmSysfsPath": "/run/devmap/sensors/MCB_FAN_PWM/pwm14", + "presenceSysfsPath": "/run/devmap/sensors/MCB_FAN_PWM/fan7_presence", + "ledSysfsPath": "/sys/class/leds/fan14_led:blue:status/brightness", + "pwmMin": 1, + "pwmMax": 100, + "fanPresentVal": 1, + "fanMissingVal": 0, + "fanGoodLedVal": 2, + "fanFailLedVal": 1 + }, + { + "fanName": "fan_15", + "rpmSysfsPath": "/run/devmap/sensors/MCB_FAN_PWM/fan15_input", + "pwmSysfsPath": "/run/devmap/sensors/MCB_FAN_PWM/pwm15", + "presenceSysfsPath": "/run/devmap/sensors/MCB_FAN_PWM/fan8_presence", + "ledSysfsPath": "/sys/class/leds/fan15_led:blue:status/brightness", + "pwmMin": 1, + "pwmMax": 100, + "fanPresentVal": 1, + "fanMissingVal": 0, + "fanGoodLedVal": 2, + "fanFailLedVal": 1 + }, + { + "fanName": "fan_16", + "rpmSysfsPath": "/run/devmap/sensors/MCB_FAN_PWM/fan16_input", + "pwmSysfsPath": "/run/devmap/sensors/MCB_FAN_PWM/pwm16", + "presenceSysfsPath": "/run/devmap/sensors/MCB_FAN_PWM/fan8_presence", + "ledSysfsPath": "/sys/class/leds/fan16_led:blue:status/brightness", + "pwmMin": 1, + "pwmMax": 100, + "fanPresentVal": 1, + "fanMissingVal": 0, + "fanGoodLedVal": 2, + "fanFailLedVal": 1 } ], "zones": [ @@ -195,7 +300,7 @@ "zoneType": "ZONE_TYPE_MAX", "zoneName": "zone1", "sensorNames": [ - "INLET", + "SCM_INLET", "QSFP_GROUP_1" ], "fanNames": [ @@ -206,7 +311,15 @@ "fan_5", "fan_6", "fan_7", - "fan_8" + "fan_8", + "fan_9", + "fan_10", + "fan_11", + "fan_12", + "fan_13", + "fan_14", + "fan_15", + "fan_16" ], "slope": 3 } diff --git a/fboss/platform/configs/morgan800cc/fw_util.json b/fboss/platform/configs/morgan800cc/fw_util.json index 198637a38106e..fb1cfd0bfc98b 100644 --- a/fboss/platform/configs/morgan800cc/fw_util.json +++ b/fboss/platform/configs/morgan800cc/fw_util.json @@ -9,7 +9,7 @@ "readFwCmd": "chip=$(head -n 1 /home/bios-chip.txt); bios_filename=$(head -n 1 /home/bios_filename.txt); flashrom -p internal -c \"$chip\" -l /home/bios_spi_layout -i normal -r $bios_filename\n", "sha1sum": "182f3c1d2d2609f9f0b139aa36fe172193fe491d", "priority": 1, - "desiredVersion": "2.12" + "desiredVersion": "2.12.g8aeaf1b4" }, "dom1_fpga": { "preUpgradeCmd": "printf '000000:43FFFF golden\\n800000:C3FFFF primary\\n' > /home/dom_spi_layout; ls -l /run/devmap/flashes/DOM1_SPI_MASTER | awk '{print $11}' > /home/dom1_spi.txt; programmer=$(head -n 1 /home/dom1_spi.txt); flashrom -p linux_spi:dev=$programmer 2>&1 > /home/dom1-flashrom-output.txt; grep -w \"flash chip\" /home/dom1-flashrom-output.txt | cut -d '\"' -f 2 > /home/dom1-chip.txt || echo '****** error finding chip ****** ...'\n", @@ -18,9 +18,9 @@ "postUpgradeCmd": "chip=$(head -n 1 /home/dom1-chip.txt); dom1_fpga_filename=$(head -n 1 /home/dom1_fpga_filename.txt); programmer=$(head -n 1 /home/dom1_spi.txt); flashrom -p linux_spi:dev=$programmer -c \"$chip\" -l /home/dom_spi_layout -i primary --noverify-all -v $dom1_fpga_filename; rm /home/dom_spi_layout; rm /home/dom1-flashrom-output.txt; rm /home/dom1-chip.txt; rm /home/dom1_spi.txt\n", "verifyFwCmd": "chip=$(head -n 1 /home/dom1-chip.txt); dom1_fpga_filename=$(head -n 1 /home/dom1_fpga_filename.txt); programmer=$(head -n 1 /home/dom1_spi.txt); flashrom -p linux_spi:dev=$programmer -c \"$chip\" -l /home/dom_spi_layout -i primary --noverify-all -v $dom1_fpga_filename\n", "readFwCmd": "chip=$(head -n 1 /home/dom1-chip.txt); dom1_fpga_filename=$(head -n 1 /home/dom1_fpga_filename.txt); programmer=$(head -n 1 /home/dom1_spi.txt); flashrom -p linux_spi:dev=$programmer -c \"$chip\" -l /home/dom_spi_layout -i primary --noverify-all -r $dom1_fpga_filename\n", - "sha1sum": "9ca61fa1558d4bb51e06ba18d41d350f7c0674be", + "sha1sum": "27341f15c01db7d165520069e233754c98a66d6a", "priority": 2, - "desiredVersion": "0.12" + "desiredVersion": "1.0" }, "dom2_fpga": { "preUpgradeCmd": "printf '000000:43FFFF golden\\n800000:C3FFFF primary\\n' > /home/dom_spi_layout; ls -l /run/devmap/flashes/DOM2_SPI_MASTER | awk '{print $11}' > /home/dom2_spi.txt; programmer=$(head -n 1 /home/dom2_spi.txt); flashrom -p linux_spi:dev=$programmer 2>&1 > /home/dom2-flashrom-output.txt; grep -w \"flash chip\" /home/dom2-flashrom-output.txt | cut -d '\"' -f 2 > /home/dom2-chip.txt || echo '****** error finding chip ****** ...'\n", @@ -29,9 +29,9 @@ "postUpgradeCmd": "chip=$(head -n 1 /home/dom2-chip.txt); dom2_fpga_filename=$(head -n 1 /home/dom2_fpga_filename.txt); programmer=$(head -n 1 /home/dom2_spi.txt); flashrom -p linux_spi:dev=$programmer -c \"$chip\" -l /home/dom_spi_layout -i primary --noverify-all -v $dom2_fpga_filename; rm /home/dom_spi_layout; rm /home/dom2-flashrom-output.txt; rm /home/dom2-chip.txt; rm /home/dom2_spi.txt\n", "verifyFwCmd": "chip=$(head -n 1 /home/dom2-chip.txt); dom2_fpga_filename=$(head -n 1 /home/dom2_fpga_filename.txt); programmer=$(head -n 1 /home/dom2_spi.txt); flashrom -p linux_spi:dev=$programmer -c \"$chip\" -l /home/dom_spi_layout -i primary --noverify-all -v $dom2_fpga_filename\n", "readFwCmd": "chip=$(head -n 1 /home/dom2-chip.txt); dom2_fpga_filename=$(head -n 1 /home/dom2_fpga_filename.txt); programmer=$(head -n 1 /home/dom2_spi.txt); flashrom -p linux_spi:dev=$programmer -c \"$chip\" -l /home/dom_spi_layout -i primary --noverify-all -r $dom2_fpga_filename\n", - "sha1sum": "9ca61fa1558d4bb51e06ba18d41d350f7c0674be", + "sha1sum": "27341f15c01db7d165520069e233754c98a66d6a", "priority": 3, - "desiredVersion": "0.12" + "desiredVersion": "1.0" }, "mcb_fpga": { "preUpgradeCmd": "printf '000000:43FFFF golden\\n800000:C3FFFF primary\\n' > /home/mcb_spi_layout; ls -l /run/devmap/flashes/MCB_SPI_MASTER | awk '{print $11}' > /home/mcb_spi.txt; programmer=$(head -n 1 /home/mcb_spi.txt); flashrom -p linux_spi:dev=$programmer 2>&1 > /home/mcb-flashrom-output.txt; grep -w \"flash chip\" /home/mcb-flashrom-output.txt | cut -d '\"' -f 2 > /home/mcb-chip.txt || echo '****** error finding chip ****** ...'\n", @@ -40,9 +40,9 @@ "postUpgradeCmd": "chip=$(head -n 1 /home/mcb-chip.txt); mcb_fpga_filename=$(head -n 1 /home/mcb_fpga_filename.txt); programmer=$(head -n 1 /home/mcb_spi.txt); flashrom -p linux_spi:dev=$programmer -c \"$chip\" -l /home/mcb_spi_layout -i primary --noverify-all -v $mcb_fpga_filename; rm /home/mcb_spi.txt; rm /home/mcb-flashrom-output.txt; rm /home/mcb-chip.txt\n", "verifyFwCmd": "chip=$(head -n 1 /home/mcb-chip.txt); mcb_fpga_filename=$(head -n 1 /home/mcb_fpga_filename.txt); programmer=$(head -n 1 /home/mcb_spi.txt); flashrom -p linux_spi:dev=$programmer -c \"$chip\" -l /home/mcb_spi_layout -i primary --noverify-all -v $mcb_fpga_filename\n", "readFwCmd": "chip=$(head -n 1 /home/mcb-chip.txt); mcb_fpga_filename=$(head -n 1 /home/mcb_fpga_filename.txt); programmer=$(head -n 1 /home/mcb_spi.txt); flashrom -p linux_spi:dev=$programmer -c \"$chip\" -l /home/mcb_spi_layout -i primary --noverify-all -r $mcb_fpga_filename\n", - "sha1sum": "3d2b3e47afec60e7557aee8f159d456a29ef64f3", + "sha1sum": "6f1ff8a9fcf77a0fcf305d637b73eb5007af90e9", "priority": 4, - "desiredVersion": "0.16" + "desiredVersion": "1.0" }, "iob_fpga": { "preUpgradeCmd": "printf '000000:43FFFF golden\\n800000:C3FFFF primary\\n' > /home/iob_spi_layout; ls -l /run/devmap/flashes/IOB_SPI_MASTER | awk '{print $11}' > /home/iob_spi.txt; programmer=$(head -n 1 /home/iob_spi.txt); flashrom -p linux_spi:dev=$programmer 2>&1 > /home/iob-flashrom-output.txt; grep -w \"flash chip\" /home/iob-flashrom-output.txt | cut -d '\"' -f 2 > /home/iob-chip.txt || echo '****** error finding chip ****** ...'\n", @@ -51,9 +51,9 @@ "postUpgradeCmd": "chip=$(head -n 1 /home/iob-chip.txt); iob_fpga_filename=$(head -n 1 /home/iob_fpga_filename.txt); programmer=$(head -n 1 /home/iob_spi.txt); flashrom -p linux_spi:dev=$programmer -c \"$chip\" -l /home/iob_spi_layout -i primary --noverify-all -v $iob_fpga_filename; rm /home/iob_spi.txt; rm /home/iob-flashrom-output.txt; rm /home/iob-chip.txt\n", "verifyFwCmd": "chip=$(head -n 1 /home/iob-chip.txt); iob_fpga_filename=$(head -n 1 /home/iob_fpga_filename.txt); programmer=$(head -n 1 /home/iob_spi.txt); flashrom -p linux_spi:dev=$programmer -c \"$chip\" -l /home/iob_spi_layout -i primary --noverify-all -v $iob_fpga_filename\n", "readFwCmd": "chip=$(head -n 1 /home/iob-chip.txt); iob_fpga_filename=$(head -n 1 /home/iob_fpga_filename.txt); programmer=$(head -n 1 /home/iob_spi.txt); flashrom -p linux_spi:dev=$programmer -c \"$chip\" -l /home/iob_spi_layout -i primary --noverify-all -r $iob_fpga_filename\n", - "sha1sum": "3210dc89e23a40f1d47ec98a0e3678b461951390", + "sha1sum": "b11b9323c7efc5b3d90092c743d98e6f874137ab", "priority": 5, - "desiredVersion": "0.18" + "desiredVersion": "1.0" }, "scm_fpga": { "preUpgradeCmd": "printf '000000:43FFFF golden\\n800000:C3FFFF primary\\n' > /home/scm_spi_layout; ls -l /run/devmap/flashes/SCM_SPI_MASTER | awk '{print $11}' > /home/scm_spi.txt; programmer=$(head -n 1 /home/scm_spi.txt); flashrom -p linux_spi:dev=$programmer 2>&1 > /home/scm-flashrom-output.txt; grep -w \"flash chip\" /home/scm-flashrom-output.txt | cut -d '\"' -f 2 > /home/scm-chip.txt || echo '****** error finding chip ****** ...'\n", @@ -62,9 +62,9 @@ "postUpgradeCmd": "chip=$(head -n 1 /home/scm-chip.txt); scm_fpga_filename=$(head -n 1 /home/scm_fpga_filename.txt); programmer=$(head -n 1 /home/scm_spi.txt); flashrom -p linux_spi:dev=$programmer -c \"$chip\" -l /home/scm_spi_layout -i primary --noverify-all -v $scm_fpga_filename; rm /home/scm_spi.txt; rm /home/scm-flashrom-output.txt; rm /home/scm-chip.txt\n", "verifyFwCmd": "chip=$(head -n 1 /home/scm-chip.txt); scm_fpga_filename=$(head -n 1 /home/scm_fpga_filename.txt); programmer=$(head -n 1 /home/scm_spi.txt); flashrom -p linux_spi:dev=$programmer -c \"$chip\" -l /home/scm_spi_layout -i primary --noverify-all -v $scm_fpga_filename\n", "readFwCmd": "chip=$(head -n 1 /home/scm-chip.txt); scm_fpga_filename=$(head -n 1 /home/scm_fpga_filename.txt); programmer=$(head -n 1 /home/scm_spi.txt); flashrom -p linux_spi:dev=$programmer -c \"$chip\" -l /home/scm_spi_layout -i primary --noverify-all -r $scm_fpga_filename\n", - "sha1sum": "b3c651414ea5d21b87f0aacfaad5b00801eda8c4", + "sha1sum": "d690724e007c6f7386546df3a9cdb90de0ca9228", "priority": 6, - "desiredVersion": "0.43" + "desiredVersion": "1.0" } } } diff --git a/fboss/platform/configs/morgan800cc/platform_manager.json b/fboss/platform/configs/morgan800cc/platform_manager.json index b8b24d8b6ca65..5d02be2c3b76e 100644 --- a/fboss/platform/configs/morgan800cc/platform_manager.json +++ b/fboss/platform/configs/morgan800cc/platform_manager.json @@ -48,15 +48,6 @@ }, "pmUnitName": "JUMPER" }, - "LED_SLOT": { - "numOutgoingI2cBuses": 1, - "idpromConfig": { - "busName": "INCOMING@0", - "address": "0x50", - "kernelDeviceName": "24c64" - }, - "pmUnitName": "LED" - }, "PSU_SLOT": { "numOutgoingI2cBuses": 1, "idpromConfig": { @@ -397,7 +388,7 @@ { "busName": "MCB_IOB_I2C_MASTER_4", "address": "0x12", - "kernelDeviceName": "pmbus", + "kernelDeviceName": "adm1278", "pmUnitScopedName": "MCB_ADM1278_0X12" }, { @@ -439,18 +430,6 @@ "MCB_IOB_I2C_MASTER_16" ] }, - "LED_SLOT@0": { - "slotType": "LED_SLOT", - "outgoingI2cBusNames": [ - "MCB_IOB_I2C_MASTER_12" - ] - }, - "LED_SLOT@1": { - "slotType": "LED_SLOT", - "outgoingI2cBusNames": [ - "MCB_IOB_I2C_MASTER_13" - ] - }, "PSU_SLOT@0": { "slotType": "PSU_SLOT", "outgoingI2cBusNames": [ @@ -522,9 +501,6 @@ } ] }, - "LED": { - "pluggedInSlotType": "LED_SLOT" - }, "SCM": { "pluggedInSlotType": "SCM_SLOT", "pciDeviceConfigs": [ @@ -683,7 +659,7 @@ "busName": "INCOMING@0", "address": "0x4a", "kernelDeviceName": "adt75", - "pmUnitScopedName": "BMC_TMP451_0X4C" + "pmUnitScopedName": "BMC_ADT75_0X4C" } ] }, @@ -3161,7 +3137,7 @@ "pmUnitScopedName": "SMB_PORT_65_LED1", "deviceName": "port_led", "iobufOffset": "0x1912c", - "csrOffset": "0x18000" + "csrOffset": "0x19000" }, "portNumber": 65, "ledId": 1 @@ -3287,8 +3263,6 @@ "/run/devmap/eeproms/FCB_EEPROM": "/FCB_SLOT@0/[IDPROM]", "/run/devmap/eeproms/SMB_EEPROM": "/SMB_SLOT@0/[IDPROM]", "/run/devmap/eeproms/SCM_EEPROM": "/JUMPER_SLOT@0/SCM_SLOT@0/[IDPROM]", - "/run/devmap/eeproms/LED1_EEPROM": "/LED_SLOT@0/[IDPROM]", - "/run/devmap/eeproms/LED2_EEPROM": "/LED_SLOT@1/[IDPROM]", "/run/devmap/eeproms/PSU1_EEPROM": "/PSU_SLOT@0/[IDPROM]", "/run/devmap/eeproms/PSU2_EEPROM": "/PSU_SLOT@1/[IDPROM]", "/run/devmap/eeproms/RUNBMC_EEPROM": "/JUMPER_SLOT@0/SCM_SLOT@0/RUNBMC_SLOT@0/[IDPROM]", diff --git a/fboss/platform/configs/morgan800cc/sensor_service.json b/fboss/platform/configs/morgan800cc/sensor_service.json index b84a76c88e1ba..32e5090ef3a5b 100644 --- a/fboss/platform/configs/morgan800cc/sensor_service.json +++ b/fboss/platform/configs/morgan800cc/sensor_service.json @@ -19,8 +19,8 @@ "sysfsPath": "/run/devmap/sensors/MCB_LTC2979_0X60/temp1_input", "type": 3, "thresholds": { - "upperCriticalVal": 2000000000000, - "lowerCriticalVal": -2000000000000 + "upperCriticalVal": 90, + "lowerCriticalVal": -10 }, "compute": "@/1000" }, @@ -79,8 +79,8 @@ "sysfsPath": "/run/devmap/sensors/MCB_LTC2979_0X60/temp1_input", "type": 3, "thresholds": { - "upperCriticalVal": 2000000000000, - "lowerCriticalVal": -2000000000000 + "upperCriticalVal": 90, + "lowerCriticalVal": -10 }, "compute": "@/1000" }, @@ -139,8 +139,8 @@ "sysfsPath": "/run/devmap/sensors/MCB_ADM1278_0X12/in1_input", "type": 1, "thresholds": { - "upperCriticalVal": 2000000000000, - "lowerCriticalVal": -2000000000000 + "upperCriticalVal": 13.9, + "lowerCriticalVal": 11.04 }, "compute": "@/1000" }, @@ -149,8 +149,8 @@ "sysfsPath": "/run/devmap/sensors/MCB_ADM1278_0X12/in2_input", "type": 1, "thresholds": { - "upperCriticalVal": 2000000000000, - "lowerCriticalVal": -2000000000000 + "upperCriticalVal": 13.9, + "lowerCriticalVal": 11.04 }, "compute": "@/1000" }, @@ -179,8 +179,8 @@ "sysfsPath": "/run/devmap/sensors/FAN0_LTC2497_0X4C/in_voltage5_raw", "type": 2, "thresholds": { - "upperCriticalVal": 14, - "lowerCriticalVal": 4.35 + "upperCriticalVal": 10, + "lowerCriticalVal": 0.1 }, "compute": "@/1000*0.2670288" }, @@ -189,8 +189,8 @@ "sysfsPath": "/run/devmap/sensors/FAN0_LTC2497_0X4C/in_voltage6_raw", "type": 2, "thresholds": { - "upperCriticalVal": 14, - "lowerCriticalVal": 4.35 + "upperCriticalVal": 10, + "lowerCriticalVal": 0.1 }, "compute": "@/1000*0.2670288" }, @@ -199,8 +199,8 @@ "sysfsPath": "/run/devmap/sensors/FAN0_LTC2497_0X4C/in_voltage7_raw", "type": 2, "thresholds": { - "upperCriticalVal": 14, - "lowerCriticalVal": 4.35 + "upperCriticalVal": 10, + "lowerCriticalVal": 0.1 }, "compute": "@/1000*0.2670288" }, @@ -209,8 +209,8 @@ "sysfsPath": "/run/devmap/sensors/FAN0_LTC2497_0X4C/in_voltage8_raw", "type": 2, "thresholds": { - "upperCriticalVal": 14, - "lowerCriticalVal": 4.35 + "upperCriticalVal": 10, + "lowerCriticalVal": 0.1 }, "compute": "@/1000*0.2670288" }, @@ -239,8 +239,8 @@ "sysfsPath": "/run/devmap/sensors/FAN1_LTC2497_0X4C/in_voltage5_raw", "type": 2, "thresholds": { - "upperCriticalVal": 8.9, - "lowerCriticalVal": 4.35 + "upperCriticalVal": 10, + "lowerCriticalVal": 0.1 }, "compute": "@/1000*0.2670288" }, @@ -249,8 +249,8 @@ "sysfsPath": "/run/devmap/sensors/FAN1_LTC2497_0X4C/in_voltage6_raw", "type": 2, "thresholds": { - "upperCriticalVal": 8.9, - "lowerCriticalVal": 4.35 + "upperCriticalVal": 10, + "lowerCriticalVal": 0.1 }, "compute": "@/1000*0.2670288" }, @@ -259,8 +259,8 @@ "sysfsPath": "/run/devmap/sensors/FAN1_LTC2497_0X4C/in_voltage7_raw", "type": 2, "thresholds": { - "upperCriticalVal": 8.9, - "lowerCriticalVal": 4.35 + "upperCriticalVal": 10, + "lowerCriticalVal": 0.1 }, "compute": "@/1000*0.2670288" }, @@ -269,8 +269,8 @@ "sysfsPath": "/run/devmap/sensors/FAN1_LTC2497_0X4C/in_voltage8_raw", "type": 2, "thresholds": { - "upperCriticalVal": 8.9, - "lowerCriticalVal": 4.35 + "upperCriticalVal": 10, + "lowerCriticalVal": 0.1 }, "compute": "@/1000*0.2670288" } @@ -298,7 +298,7 @@ "upperCriticalVal": 3.7949999999999995, "lowerCriticalVal": 2.8049999999999997 }, - "compute": "@/1000*0.057815344000000005" + "compute": "@/1000*0.057628239" }, { "name": "SCM_VP1P0_PCIE4", @@ -318,7 +318,7 @@ "upperCriticalVal": 3.7949999999999995, "lowerCriticalVal": 2.8049999999999997 }, - "compute": "@/1000*0.057936412" + "compute": "@/1000*0.057628239" }, { "name": "SCM_VP3P3_CPU_DUP", @@ -328,7 +328,7 @@ "upperCriticalVal": 3.7949999999999995, "lowerCriticalVal": 2.8049999999999997 }, - "compute": "@/1000*0.057936412" + "compute": "@/1000*0.057628239" }, { "name": "SCM_VP2V5_VPP", @@ -348,7 +348,7 @@ "upperCriticalVal": 3.7949999999999995, "lowerCriticalVal": 2.8049999999999997 }, - "compute": "@/1000*0.057216189" + "compute": "@/1000*0.057628239" }, { "name": "SCM_P1P8_Z0", @@ -428,7 +428,7 @@ "upperCriticalVal": 3.7949999999999995, "lowerCriticalVal": 2.8049999999999997 }, - "compute": "@/1000*0.057740302" + "compute": "@/1000*0.057628239" }, { "name": "SCM_CPU_CORE_TEMP_0", @@ -462,7 +462,7 @@ "type": 1, "thresholds": { "upperCriticalVal": 14.4, - "lowerCriticalVal": 9.6 + "lowerCriticalVal": 9 }, "compute": "@/1000" }, @@ -471,8 +471,8 @@ "sysfsPath": "/run/devmap/sensors/SMB_LTC3888-1_0X50/in2_input", "type": 1, "thresholds": { - "upperCriticalVal": 0.84, - "lowerCriticalVal": 0.56 + "upperCriticalVal": 0.93, + "lowerCriticalVal": 0.551 }, "compute": "@/1000" }, @@ -481,8 +481,8 @@ "sysfsPath": "/run/devmap/sensors/SMB_LTC3888-1_0X50/temp1_input", "type": 3, "thresholds": { - "upperCriticalVal": 110, - "lowerCriticalVal": -2000000000000 + "upperCriticalVal": 120, + "lowerCriticalVal": -10 }, "compute": "@/1000" }, @@ -491,8 +491,8 @@ "sysfsPath": "/run/devmap/sensors/SMB_LTC3888-1_0X50/temp2_input", "type": 3, "thresholds": { - "upperCriticalVal": 2000000000000, - "lowerCriticalVal": -2000000000000 + "upperCriticalVal": 120, + "lowerCriticalVal": -10 }, "compute": "@/1000" }, @@ -502,7 +502,7 @@ "type": 1, "thresholds": { "upperCriticalVal": 14.4, - "lowerCriticalVal": 9.6 + "lowerCriticalVal": 9 }, "compute": "@/1000" }, @@ -511,8 +511,8 @@ "sysfsPath": "/run/devmap/sensors/SMB_LTC3888-1_0X51/in2_input", "type": 1, "thresholds": { - "upperCriticalVal": 0.84, - "lowerCriticalVal": 0.56 + "upperCriticalVal": 0.93, + "lowerCriticalVal": 0.551 }, "compute": "@/1000" }, @@ -521,8 +521,8 @@ "sysfsPath": "/run/devmap/sensors/SMB_LTC3888-1_0X51/temp1_input", "type": 3, "thresholds": { - "upperCriticalVal": 110, - "lowerCriticalVal": -2000000000000 + "upperCriticalVal": 120, + "lowerCriticalVal": -10 }, "compute": "@/1000" }, @@ -531,8 +531,8 @@ "sysfsPath": "/run/devmap/sensors/SMB_LTC3888-1_0X51/temp2_input", "type": 3, "thresholds": { - "upperCriticalVal": 2000000000000, - "lowerCriticalVal": -2000000000000 + "upperCriticalVal": 120, + "lowerCriticalVal": -10 }, "compute": "@/1000" }, @@ -541,8 +541,8 @@ "sysfsPath": "/run/devmap/sensors/SMB_LTC3888-1_0X51/in3_input", "type": 1, "thresholds": { - "upperCriticalVal": 1.438, - "lowerCriticalVal": 1.063 + "upperCriticalVal": 1.625, + "lowerCriticalVal": 0.963 }, "compute": "@/1000" }, @@ -552,7 +552,7 @@ "type": 1, "thresholds": { "upperCriticalVal": 14.4, - "lowerCriticalVal": 9.6 + "lowerCriticalVal": 9 }, "compute": "@/1000" }, @@ -561,8 +561,8 @@ "sysfsPath": "/run/devmap/sensors/SMB_LTC3888-1_0X52/in2_input", "type": 1, "thresholds": { - "upperCriticalVal": 0.84, - "lowerCriticalVal": 0.56 + "upperCriticalVal": 0.93, + "lowerCriticalVal": 0.551 }, "compute": "@/1000" }, @@ -571,8 +571,8 @@ "sysfsPath": "/run/devmap/sensors/SMB_LTC3888-1_0X52/temp1_input", "type": 3, "thresholds": { - "upperCriticalVal": 110, - "lowerCriticalVal": -2000000000000 + "upperCriticalVal": 120, + "lowerCriticalVal": -10 }, "compute": "@/1000" }, @@ -581,8 +581,8 @@ "sysfsPath": "/run/devmap/sensors/SMB_LTC3888-1_0X52/temp2_input", "type": 3, "thresholds": { - "upperCriticalVal": 2000000000000, - "lowerCriticalVal": -2000000000000 + "upperCriticalVal": 120, + "lowerCriticalVal": -10 }, "compute": "@/1000" }, @@ -591,8 +591,8 @@ "sysfsPath": "/run/devmap/sensors/SMB_LTC3888-1_0X52/in3_input", "type": 1, "thresholds": { - "upperCriticalVal": 0.69, - "lowerCriticalVal": 0.51 + "upperCriticalVal": 0.754, + "lowerCriticalVal": 0.447 }, "compute": "@/1000" }, @@ -601,8 +601,8 @@ "sysfsPath": "/run/devmap/sensors/SMB_LTC3888-1_0X52/curr2_input", "type": 2, "thresholds": { - "upperCriticalVal": 72, - "lowerCriticalVal": 30 + "upperCriticalVal": 96, + "lowerCriticalVal": 1 }, "compute": "@/1000" }, @@ -612,7 +612,7 @@ "type": 1, "thresholds": { "upperCriticalVal": 14.4, - "lowerCriticalVal": 9.6 + "lowerCriticalVal": 9 }, "compute": "@/1000" }, @@ -621,8 +621,8 @@ "sysfsPath": "/run/devmap/sensors/SMB_LTC3888-1_0X53/in2_input", "type": 1, "thresholds": { - "upperCriticalVal": 0.771, - "lowerCriticalVal": 0.57 + "upperCriticalVal": 0.884, + "lowerCriticalVal": 0.524 }, "compute": "@/1000" }, @@ -631,8 +631,8 @@ "sysfsPath": "/run/devmap/sensors/SMB_LTC3888-1_0X53/temp1_input", "type": 3, "thresholds": { - "upperCriticalVal": 110, - "lowerCriticalVal": -2000000000000 + "upperCriticalVal": 120, + "lowerCriticalVal": -10 }, "compute": "@/1000" }, @@ -641,8 +641,8 @@ "sysfsPath": "/run/devmap/sensors/SMB_LTC3888-1_0X53/temp2_input", "type": 3, "thresholds": { - "upperCriticalVal": 2000000000000, - "lowerCriticalVal": -2000000000000 + "upperCriticalVal": 120, + "lowerCriticalVal": -10 }, "compute": "@/1000" }, @@ -651,8 +651,8 @@ "sysfsPath": "/run/devmap/sensors/SMB_LTC3888-1_0X53/in3_input", "type": 1, "thresholds": { - "upperCriticalVal": 0.863, - "lowerCriticalVal": 0.638 + "upperCriticalVal": 0.975, + "lowerCriticalVal": 0.578 }, "compute": "@/1000" }, @@ -662,7 +662,7 @@ "type": 2, "thresholds": { "upperCriticalVal": 138, - "lowerCriticalVal": 57.5 + "lowerCriticalVal": 1 }, "compute": "@/1000" }, @@ -672,7 +672,7 @@ "type": 1, "thresholds": { "upperCriticalVal": 14.4, - "lowerCriticalVal": 9.6 + "lowerCriticalVal": 9 }, "compute": "@/1000" }, @@ -681,8 +681,8 @@ "sysfsPath": "/run/devmap/sensors/SMB_LTC3888-1_0X54/in2_input", "type": 1, "thresholds": { - "upperCriticalVal": 0.713, - "lowerCriticalVal": 0.527 + "upperCriticalVal": 0.806, + "lowerCriticalVal": 0.477 }, "compute": "@/1000" }, @@ -691,8 +691,8 @@ "sysfsPath": "/run/devmap/sensors/SMB_LTC3888-1_0X54/temp1_input", "type": 3, "thresholds": { - "upperCriticalVal": 110, - "lowerCriticalVal": -2000000000000 + "upperCriticalVal": 120, + "lowerCriticalVal": -10 }, "compute": "@/1000" }, @@ -701,8 +701,8 @@ "sysfsPath": "/run/devmap/sensors/SMB_LTC3888-1_0X54/temp2_input", "type": 3, "thresholds": { - "upperCriticalVal": 2000000000000, - "lowerCriticalVal": -2000000000000 + "upperCriticalVal": 120, + "lowerCriticalVal": -10 }, "compute": "@/1000" }, @@ -712,7 +712,7 @@ "type": 1, "thresholds": { "upperCriticalVal": 14.4, - "lowerCriticalVal": 9.6 + "lowerCriticalVal": 9 }, "compute": "@/1000" }, @@ -721,8 +721,8 @@ "sysfsPath": "/run/devmap/sensors/SMB_LTC3888-1_0X55/in2_input", "type": 1, "thresholds": { - "upperCriticalVal": 3.666, - "lowerCriticalVal": 3 + "upperCriticalVal": 4.333, + "lowerCriticalVal": 2.566 }, "compute": "@/1000" }, @@ -731,8 +731,8 @@ "sysfsPath": "/run/devmap/sensors/SMB_LTC3888-1_0X55/temp1_input", "type": 3, "thresholds": { - "upperCriticalVal": 110, - "lowerCriticalVal": -2000000000000 + "upperCriticalVal": 120, + "lowerCriticalVal": -10 }, "compute": "@/1000" }, @@ -741,8 +741,8 @@ "sysfsPath": "/run/devmap/sensors/SMB_LTC3888-1_0X55/temp2_input", "type": 3, "thresholds": { - "upperCriticalVal": 2000000000000, - "lowerCriticalVal": -2000000000000 + "upperCriticalVal": 120, + "lowerCriticalVal": -10 }, "compute": "@/1000" }, @@ -752,7 +752,7 @@ "type": 1, "thresholds": { "upperCriticalVal": 14.4, - "lowerCriticalVal": 9.6 + "lowerCriticalVal": 9 }, "compute": "@/1000" }, @@ -771,8 +771,8 @@ "sysfsPath": "/run/devmap/sensors/SMB_LTC3888-1_0X56/temp1_input", "type": 3, "thresholds": { - "upperCriticalVal": 110, - "lowerCriticalVal": -2000000000000 + "upperCriticalVal": 120, + "lowerCriticalVal": -10 }, "compute": "@/1000" }, @@ -781,8 +781,8 @@ "sysfsPath": "/run/devmap/sensors/SMB_LTC3888-1_0X56/temp2_input", "type": 3, "thresholds": { - "upperCriticalVal": 2000000000000, - "lowerCriticalVal": -2000000000000 + "upperCriticalVal": 120, + "lowerCriticalVal": -10 }, "compute": "@/1000" }, @@ -792,7 +792,7 @@ "type": 1, "thresholds": { "upperCriticalVal": 14.4, - "lowerCriticalVal": 9.6 + "lowerCriticalVal": 9 }, "compute": "@/1000" }, @@ -801,8 +801,8 @@ "sysfsPath": "/run/devmap/sensors/SMB_LTC2979_0X5C/temp1_input", "type": 3, "thresholds": { - "upperCriticalVal": 2000000000000, - "lowerCriticalVal": -2000000000000 + "upperCriticalVal": 120, + "lowerCriticalVal": -10 }, "compute": "@/1000" }, @@ -811,8 +811,8 @@ "sysfsPath": "/run/devmap/sensors/SMB_LTC2979_0X5C/in2_input", "type": 1, "thresholds": { - "upperCriticalVal": 0.737, - "lowerCriticalVal": 0.603 + "upperCriticalVal": 0.884, + "lowerCriticalVal": 0.524 }, "compute": "@/1000" }, @@ -821,8 +821,8 @@ "sysfsPath": "/run/devmap/sensors/SMB_LTC2979_0X5C/in3_input", "type": 1, "thresholds": { - "upperCriticalVal": 0.825, - "lowerCriticalVal": 0.675 + "upperCriticalVal": 0.975, + "lowerCriticalVal": 0.578 }, "compute": "@/1000" }, @@ -831,8 +831,8 @@ "sysfsPath": "/run/devmap/sensors/SMB_LTC2979_0X5C/in4_input", "type": 1, "thresholds": { - "upperCriticalVal": 0.682, - "lowerCriticalVal": 0.558 + "upperCriticalVal": 0.806, + "lowerCriticalVal": 0.477 }, "compute": "@/1000" }, @@ -841,8 +841,8 @@ "sysfsPath": "/run/devmap/sensors/SMB_LTC2979_0X5C/in5_input", "type": 1, "thresholds": { - "upperCriticalVal": 1.375, - "lowerCriticalVal": 1.125 + "upperCriticalVal": 1.625, + "lowerCriticalVal": 0.963 }, "compute": "@/1000" }, @@ -851,8 +851,8 @@ "sysfsPath": "/run/devmap/sensors/SMB_LTC2979_0X5C/in7_input", "type": 1, "thresholds": { - "upperCriticalVal": 1.32, - "lowerCriticalVal": 1.08 + "upperCriticalVal": 1.56, + "lowerCriticalVal": 0.924 }, "compute": "@/1000" }, @@ -861,8 +861,8 @@ "sysfsPath": "/run/devmap/sensors/SMB_LTC2979_0X5C/in8_input", "type": 1, "thresholds": { - "upperCriticalVal": 0.825, - "lowerCriticalVal": 0.675 + "upperCriticalVal": 0.975, + "lowerCriticalVal": 0.578 }, "compute": "@/1000" }, @@ -872,7 +872,7 @@ "type": 1, "thresholds": { "upperCriticalVal": 14.4, - "lowerCriticalVal": 9.6 + "lowerCriticalVal": 9 }, "compute": "@/1000" }, @@ -881,8 +881,8 @@ "sysfsPath": "/run/devmap/sensors/SMB_LTC2979_0X5D/temp1_input", "type": 3, "thresholds": { - "upperCriticalVal": 2000000000000, - "lowerCriticalVal": -2000000000000 + "upperCriticalVal": 120, + "lowerCriticalVal": -10 }, "compute": "@/1000" }, @@ -891,8 +891,8 @@ "sysfsPath": "/run/devmap/sensors/SMB_LTC2979_0X5D/in2_input", "type": 1, "thresholds": { - "upperCriticalVal": 0.66, - "lowerCriticalVal": 0.54 + "upperCriticalVal": 0.754, + "lowerCriticalVal": 0.447 }, "compute": "@/1000" }, @@ -901,8 +901,8 @@ "sysfsPath": "/run/devmap/sensors/SMB_LTC2979_0X5D/in3_input", "type": 1, "thresholds": { - "upperCriticalVal": 0.77, - "lowerCriticalVal": 0.63 + "upperCriticalVal": 0.93, + "lowerCriticalVal": 0.551 }, "compute": "@/1000" }, @@ -932,7 +932,7 @@ "type": 1, "thresholds": { "upperCriticalVal": 14.4, - "lowerCriticalVal": 9.6 + "lowerCriticalVal": 9 }, "compute": "@/1000" }, @@ -941,8 +941,8 @@ "sysfsPath": "/run/devmap/sensors/SMB_LTC2979_0X5E/temp1_input", "type": 3, "thresholds": { - "upperCriticalVal": 2000000000000, - "lowerCriticalVal": -2000000000000 + "upperCriticalVal": 120, + "lowerCriticalVal": -10 }, "compute": "@/1000" }, @@ -971,7 +971,7 @@ "sysfsPath": "/run/devmap/sensors/SMB_LTC2979_0X5E/in5_input", "type": 1, "thresholds": { - "upperCriticalVal": 1.12, + "upperCriticalVal": 1.2, "lowerCriticalVal": 0.88 }, "compute": "@/1000" @@ -981,7 +981,7 @@ "sysfsPath": "/run/devmap/sensors/SMB_LTC2979_0X5E/in6_input", "type": 1, "thresholds": { - "upperCriticalVal": 1.344, + "upperCriticalVal": 1.4, "lowerCriticalVal": 1.056 }, "compute": "@/1000" @@ -1011,8 +1011,8 @@ "sysfsPath": "/run/devmap/sensors/SMB_LTC2979_0X5F/temp1_input", "type": 3, "thresholds": { - "upperCriticalVal": 2000000000000, - "lowerCriticalVal": -2000000000000 + "upperCriticalVal": 120, + "lowerCriticalVal": -10 }, "compute": "@/1000" }, @@ -1051,7 +1051,7 @@ "sysfsPath": "/run/devmap/sensors/SMB_TMP421_0X4C/temp1_input", "type": 3, "thresholds": { - "upperCriticalVal": 90, + "upperCriticalVal": 115, "lowerCriticalVal": -10 }, "compute": "@/1000" @@ -1061,7 +1061,7 @@ "sysfsPath": "/run/devmap/sensors/SMB_TMP421_0X4C/temp2_input", "type": 3, "thresholds": { - "upperCriticalVal": 90, + "upperCriticalVal": 115, "lowerCriticalVal": -10 }, "compute": "@/1000" @@ -1071,7 +1071,7 @@ "sysfsPath": "/run/devmap/sensors/SMB_TMP421_0X4D/temp1_input", "type": 3, "thresholds": { - "upperCriticalVal": 90, + "upperCriticalVal": 115, "lowerCriticalVal": -10 }, "compute": "@/1000" @@ -1081,7 +1081,7 @@ "sysfsPath": "/run/devmap/sensors/SMB_TMP421_0X4D/temp2_input", "type": 3, "thresholds": { - "upperCriticalVal": 90, + "upperCriticalVal": 115, "lowerCriticalVal": -10 }, "compute": "@/1000" @@ -1091,7 +1091,7 @@ "sysfsPath": "/run/devmap/sensors/SMB_TMP421_0X4E/temp1_input", "type": 3, "thresholds": { - "upperCriticalVal": 90, + "upperCriticalVal": 115, "lowerCriticalVal": -10 }, "compute": "@/1000" @@ -1101,7 +1101,7 @@ "sysfsPath": "/run/devmap/sensors/SMB_TMP421_0X4E/temp2_input", "type": 3, "thresholds": { - "upperCriticalVal": 90, + "upperCriticalVal": 115, "lowerCriticalVal": -10 }, "compute": "@/1000" @@ -1111,7 +1111,7 @@ "sysfsPath": "/run/devmap/sensors/SMB_TMP421_0X1F/temp1_input", "type": 3, "thresholds": { - "upperCriticalVal": 90, + "upperCriticalVal": 115, "lowerCriticalVal": -10 }, "compute": "@/1000" @@ -1121,7 +1121,7 @@ "sysfsPath": "/run/devmap/sensors/SMB_TMP421_0X1F/temp2_input", "type": 3, "thresholds": { - "upperCriticalVal": 90, + "upperCriticalVal": 115, "lowerCriticalVal": -10 }, "compute": "@/1000" @@ -1131,7 +1131,7 @@ "sysfsPath": "/run/devmap/sensors/SMB_TMP421_0X4F/temp1_input", "type": 3, "thresholds": { - "upperCriticalVal": 90, + "upperCriticalVal": 115, "lowerCriticalVal": -10 }, "compute": "@/1000" @@ -1141,7 +1141,7 @@ "sysfsPath": "/run/devmap/sensors/SMB_TMP421_0X4F/temp2_input", "type": 3, "thresholds": { - "upperCriticalVal": 90, + "upperCriticalVal": 115, "lowerCriticalVal": -10 }, "compute": "@/1000" @@ -1162,8 +1162,8 @@ "sysfsPath": "/run/devmap/sensors/PDB0_PSU_0X58/in1_input", "type": 1, "thresholds": { - "upperCriticalVal": 264, - "lowerCriticalVal": 180 + "upperCriticalVal": 407, + "lowerCriticalVal": 38 }, "compute": "@/1000" }, @@ -1172,8 +1172,8 @@ "sysfsPath": "/run/devmap/sensors/PDB0_PSU_0X58/curr1_input", "type": 2, "thresholds": { - "upperCriticalVal": 2000000000000, - "lowerCriticalVal": -2000000000000 + "upperCriticalVal": 80, + "lowerCriticalVal": 0 }, "compute": "@/1000" }, @@ -1192,8 +1192,8 @@ "sysfsPath": "/run/devmap/sensors/PDB0_PSU_0X58/curr2_input", "type": 2, "thresholds": { - "upperCriticalVal": 2000000000000, - "lowerCriticalVal": -2000000000000 + "upperCriticalVal": 250, + "lowerCriticalVal": 5 }, "compute": "@/1000" }, @@ -1202,8 +1202,8 @@ "sysfsPath": "/run/devmap/sensors/PDB0_PSU_0X58/power2_input", "type": 0, "thresholds": { - "upperCriticalVal": 2000000000000, - "lowerCriticalVal": -2000000000000 + "upperCriticalVal": 3000, + "lowerCriticalVal": 60 }, "compute": "@/1000000" }, @@ -1211,10 +1211,6 @@ "name": "PSU0_PIN_MN", "sysfsPath": "/run/devmap/sensors/PDB0_PSU_0X58/power1_input", "type": 0, - "thresholds": { - "upperCriticalVal": 2000000000000, - "lowerCriticalVal": -2000000000000 - }, "compute": "@/1000000" }, { @@ -1222,8 +1218,8 @@ "sysfsPath": "/run/devmap/sensors/PDB0_PSU_0X58/temp1_input", "type": 3, "thresholds": { - "upperCriticalVal": 55, - "lowerCriticalVal": -10 + "upperCriticalVal": 72, + "lowerCriticalVal": -5 }, "compute": "@/1000" }, @@ -1232,8 +1228,8 @@ "sysfsPath": "/run/devmap/sensors/PDB0_PSU_0X58/temp2_input", "type": 3, "thresholds": { - "upperCriticalVal": 90, - "lowerCriticalVal": -10 + "upperCriticalVal": 102, + "lowerCriticalVal": -5 }, "compute": "@/1000" }, @@ -1242,8 +1238,8 @@ "sysfsPath": "/run/devmap/sensors/PDB0_PSU_0X58/temp3_input", "type": 3, "thresholds": { - "upperCriticalVal": 90, - "lowerCriticalVal": -10 + "upperCriticalVal": 95, + "lowerCriticalVal": -5 }, "compute": "@/1000" } @@ -1258,8 +1254,8 @@ "sysfsPath": "/run/devmap/sensors/PDB1_PSU_0X58/in1_input", "type": 1, "thresholds": { - "upperCriticalVal": 264, - "lowerCriticalVal": 180 + "upperCriticalVal": 407, + "lowerCriticalVal": 38 }, "compute": "@/1000" }, @@ -1268,8 +1264,8 @@ "sysfsPath": "/run/devmap/sensors/PDB1_PSU_0X58/curr1_input", "type": 2, "thresholds": { - "upperCriticalVal": 2000000000000, - "lowerCriticalVal": -2000000000000 + "upperCriticalVal": 80, + "lowerCriticalVal": 0 }, "compute": "@/1000" }, @@ -1288,8 +1284,8 @@ "sysfsPath": "/run/devmap/sensors/PDB1_PSU_0X58/curr2_input", "type": 2, "thresholds": { - "upperCriticalVal": 2000000000000, - "lowerCriticalVal": -2000000000000 + "upperCriticalVal": 250, + "lowerCriticalVal": 5 }, "compute": "@/1000" }, @@ -1298,8 +1294,8 @@ "sysfsPath": "/run/devmap/sensors/PDB1_PSU_0X58/power2_input", "type": 0, "thresholds": { - "upperCriticalVal": 2000000000000, - "lowerCriticalVal": -2000000000000 + "upperCriticalVal": 3000, + "lowerCriticalVal": 60 }, "compute": "@/1000000" }, @@ -1307,10 +1303,6 @@ "name": "PSU1_PIN_MN", "sysfsPath": "/run/devmap/sensors/PDB1_PSU_0X58/power1_input", "type": 0, - "thresholds": { - "upperCriticalVal": 2000000000000, - "lowerCriticalVal": -2000000000000 - }, "compute": "@/1000000" }, { @@ -1318,8 +1310,8 @@ "sysfsPath": "/run/devmap/sensors/PDB1_PSU_0X58/temp1_input", "type": 3, "thresholds": { - "upperCriticalVal": 55, - "lowerCriticalVal": -10 + "upperCriticalVal": 72, + "lowerCriticalVal": -5 }, "compute": "@/1000" }, @@ -1328,8 +1320,8 @@ "sysfsPath": "/run/devmap/sensors/PDB1_PSU_0X58/temp2_input", "type": 3, "thresholds": { - "upperCriticalVal": 90, - "lowerCriticalVal": -10 + "upperCriticalVal": 102, + "lowerCriticalVal": -5 }, "compute": "@/1000" }, @@ -1338,8 +1330,8 @@ "sysfsPath": "/run/devmap/sensors/PDB1_PSU_0X58/temp3_input", "type": 3, "thresholds": { - "upperCriticalVal": 90, - "lowerCriticalVal": -10 + "upperCriticalVal": 95, + "lowerCriticalVal": -5 }, "compute": "@/1000" } diff --git a/fboss/platform/configs/morgan800cc/weutil.json b/fboss/platform/configs/morgan800cc/weutil.json index 1d32ca44f33d6..20eb1a1e0336f 100644 --- a/fboss/platform/configs/morgan800cc/weutil.json +++ b/fboss/platform/configs/morgan800cc/weutil.json @@ -7,12 +7,6 @@ "SMB": { "path": "/run/devmap/eeproms/SMB_EEPROM" }, - "LED1": { - "path": "/run/devmap/eeproms/LED1_EEPROM" - }, - "LED2": { - "path": "/run/devmap/eeproms/LED2_EEPROM" - }, "PDB1": { "path": "/run/devmap/eeproms/PDB1_EEPROM" }, diff --git a/fboss/platform/configs/sample/platform_manager.json b/fboss/platform/configs/sample/platform_manager.json index e191e198ebb88..1d2b4641a0370 100644 --- a/fboss/platform/configs/sample/platform_manager.json +++ b/fboss/platform/configs/sample/platform_manager.json @@ -118,7 +118,7 @@ }, "SMB": { "pluggedInSlotType": "SMB_SLOT", - "pciDevices": [ + "pciDeviceConfigs": [ { "pmUnitScopedName": "SMB_IOB", "vendorId": "0x1132", @@ -209,7 +209,7 @@ "pmUnitScopedName": "YOLO_SENSOR2" } ], - "pciDevices": [ + "pciDeviceConfigs": [ { "pmUnitScopedName": "DOM_FPGA", "vendorId": "0x1132", @@ -308,7 +308,7 @@ "CPU@1" ], "symbolicLinkToDevicePath": { - "/run/devmap/eeproms/CHASSIS_EEPROM": "/SMB_SLOT@0/[chassis_eeprom]", + "/run/devmap/eeproms/CHASSIS_EEPROM": "/SMB_SLOT@0/[CHASSIS_EEPROM]", "/run/devmap/eeproms/SCM_EEPROM": "/[IDPROM]", "/run/devmap/eeproms/SMB_EEPROM": "/SMB_SLOT@0/[IDPROM]", "/run/devmap/eeproms/YOLO_MAX_EEPROM": "/SMB_SLOT@0/YOLO_SLOT@0/[IDPROM]", @@ -316,13 +316,13 @@ "/run/devmap/eeproms/PSU2_EEPROM": "/SMB_SLOT@0/YOLO_SLOT@0/PSU_SLOT@1/[IDPROM]", "/run/devmap/eeproms/PIM0_EEPROM": "/SMB_SLOT@0/YOLO_SLOT@0/PIM_SLOT@0/[IDPROM]", "/run/devmap/eeproms/PIM1_EEPROM": "/SMB_SLOT@0/YOLO_SLOT@0/PIM_SLOT@1/[IDPROM]", - "/run/devmap/sensors/SMB_INLET_SENSOR": "/SMB_SLOT@0/[inlet_sensor]", - "/run/devmap/sensors/SMB_OUTLET_SENSOR": "/SMB_SLOT@0/[outlet_sensor]", - "/run/devmap/sensors/ASIC_SENSOR": "/SMB_SLOT@0/[asic_sensor]", - "/run/devmap/sensors/YOLO_SENSOR1": "/SMB_SLOT@0/YOLO_SLOT@0/[yolo_sensor1]", - "/run/devmap/sensors/YOLO_SENSOR2": "/SMB_SLOT@0/YOLO_SLOT@0/[yolo_sensor2]", - "/run/devmap/sensors/PSU1_2GH_SENSOR": "/SMB_SLOT@0/YOLO_SLOT@0/PSU_SLOT@0/[psu_2gh_sensor]", - "/run/devmap/sensors/PSU2_2GH_SENSOR": "/SMB_SLOT@0/YOLO_SLOT@0/PSU_SLOT@1/[psu_2gh_sensor]", + "/run/devmap/sensors/SMB_INLET_SENSOR": "/SMB_SLOT@0/[INLET_SENSOR]", + "/run/devmap/sensors/SMB_OUTLET_SENSOR": "/SMB_SLOT@0/[OUTLET_SENSOR]", + "/run/devmap/sensors/ASIC_SENSOR": "/SMB_SLOT@0/[ASIC_SENSOR]", + "/run/devmap/sensors/YOLO_SENSOR1": "/SMB_SLOT@0/YOLO_SLOT@0/[YOLO_SENSOR1]", + "/run/devmap/sensors/YOLO_SENSOR2": "/SMB_SLOT@0/YOLO_SLOT@0/[YOLO_SENSOR2]", + "/run/devmap/sensors/PSU1_2GH_SENSOR": "/SMB_SLOT@0/YOLO_SLOT@0/PSU_SLOT@0/[PSU_2GH_SENSOR]", + "/run/devmap/sensors/PSU2_2GH_SENSOR": "/SMB_SLOT@0/YOLO_SLOT@0/PSU_SLOT@1/[PSU_2GH_SENSOR]", "/run/devmap/fpgas/SCM_IOB": "/[SCM_IOB]", "/run/devmap/fpgas/SMB_IOB": "/SMB_SLOT@0/[SMB_IOB]", "/run/devmap/fpgas/DOM_FPGA": "/SMB_SLOT@0/YOLO_SLOT@0/[DOM_FPGA]", diff --git a/fboss/platform/data_corral_service/BUCK b/fboss/platform/data_corral_service/BUCK index 1bfd2aea11f57..94db34ecc97eb 100644 --- a/fboss/platform/data_corral_service/BUCK +++ b/fboss/platform/data_corral_service/BUCK @@ -32,7 +32,6 @@ cpp_library( "//fboss/lib:common_file_utils", "//fboss/platform/data_corral_service/if:led_manager-cpp2-types", "//fboss/platform/platform_manager:utils", - "//folly:string", "//folly/logging:logging", ], ) @@ -63,7 +62,6 @@ cpp_binary( "//fboss/platform/helpers:init", "//fboss/platform/helpers:platform_name_lib", "//folly/executors:function_scheduler", - "//folly/logging:init", "//thrift/lib/cpp2/protocol:protocol", ], external_deps = [ diff --git a/fboss/platform/data_corral_service/FruPresenceExplorer.cpp b/fboss/platform/data_corral_service/FruPresenceExplorer.cpp index 20813a619b9dd..d001f9e310389 100644 --- a/fboss/platform/data_corral_service/FruPresenceExplorer.cpp +++ b/fboss/platform/data_corral_service/FruPresenceExplorer.cpp @@ -4,7 +4,6 @@ #include #include -#include #include #include "fboss/lib/CommonFileUtils.h" diff --git a/fboss/platform/data_corral_service/Main.cpp b/fboss/platform/data_corral_service/Main.cpp index b224ef8dc8a32..29da167eaa50d 100644 --- a/fboss/platform/data_corral_service/Main.cpp +++ b/fboss/platform/data_corral_service/Main.cpp @@ -3,7 +3,6 @@ #include #include -#include #include #include diff --git a/fboss/platform/fan_service/BUCK b/fboss/platform/fan_service/BUCK index e836676810549..92a8c91b7f64a 100644 --- a/fboss/platform/fan_service/BUCK +++ b/fboss/platform/fan_service/BUCK @@ -22,7 +22,6 @@ cpp_binary( "//fboss/platform/sensor_service/if:sensor_service-cpp2-types", "//fboss/qsfp_service/lib:qsfp-service-client", "//folly/executors:function_scheduler", - "//folly/logging:init", "//folly/logging:logging", "//thrift/lib/cpp2/protocol:protocol", ], diff --git a/fboss/platform/fan_service/FsdbSensorSubscriber.cpp b/fboss/platform/fan_service/FsdbSensorSubscriber.cpp index 25c2926803651..d03e8c503458a 100644 --- a/fboss/platform/fan_service/FsdbSensorSubscriber.cpp +++ b/fboss/platform/fan_service/FsdbSensorSubscriber.cpp @@ -9,7 +9,6 @@ #include "common/time/Time.h" #include "fboss/fsdb/client/FsdbPubSubManager.h" -#include "fboss/fsdb/common/Flags.h" #include "fboss/fsdb/if/gen-cpp2/fsdb_oper_types.h" #include "fboss/platform/sensor_service/if/gen-cpp2/sensor_service_types.h" diff --git a/fboss/platform/fan_service/Main.cpp b/fboss/platform/fan_service/Main.cpp index 6af4641060c15..962adc02b223e 100644 --- a/fboss/platform/fan_service/Main.cpp +++ b/fboss/platform/fan_service/Main.cpp @@ -8,7 +8,6 @@ #include #include -#include #include #include diff --git a/fboss/platform/fw_util/fw_util.cpp b/fboss/platform/fw_util/fw_util.cpp index a51ebc45b7158..2a05889898a3b 100644 --- a/fboss/platform/fw_util/fw_util.cpp +++ b/fboss/platform/fw_util/fw_util.cpp @@ -1,7 +1,5 @@ // Copyright 2021-present Facebook. All Rights Reserved. -#include - #include #include "fboss/platform/fw_util/Flags.h" diff --git a/fboss/platform/platform_manager/BUCK b/fboss/platform/platform_manager/BUCK index 82f42f0309cc3..578b1b0a3ef7e 100644 --- a/fboss/platform/platform_manager/BUCK +++ b/fboss/platform/platform_manager/BUCK @@ -46,6 +46,7 @@ cpp_library( "ConfigValidator.cpp", ], exported_deps = [ + "fbsource//third-party/range-v3:range-v3", ":i2c_misc", ":platform_manager_config-cpp2-types", "//folly/logging:logging", diff --git a/fboss/platform/platform_manager/ConfigValidator.cpp b/fboss/platform/platform_manager/ConfigValidator.cpp index badfdb217771b..8a0e4cce39481 100644 --- a/fboss/platform/platform_manager/ConfigValidator.cpp +++ b/fboss/platform/platform_manager/ConfigValidator.cpp @@ -3,17 +3,27 @@ #include "fboss/platform/platform_manager/ConfigValidator.h" #include +#include +#include +#include +#include +#include +#include +#include #include #include "fboss/platform/platform_manager/I2cAddr.h" +namespace facebook::fboss::platform::platform_manager { namespace { const re2::RE2 kRpmVersionRegex{"^[0-9]+\\.[0-9]+\\.[0-9]+\\-[0-9]+$"}; const re2::RE2 kPciIdRegex{"0x[0-9a-f]{4}"}; const re2::RE2 kPciDevOffsetRegex{"0x[0-9a-f]+"}; const re2::RE2 kSymlinkRegex{"^/run/devmap/(?P[a-z0-9-]+)/.+"}; -const re2::RE2 kDevPathRegex{"/([A-Z]+(_[A-Z]+)*_SLOT@[0-9]+/)*\\[.+\\]"}; +const re2::RE2 kDevPathRegex{"(?P.*)\\[(?P.+)\\]"}; +const re2::RE2 kSlotPathRegex{"/|(/([A-Z]+_)+SLOT@\\d+)+"}; const re2::RE2 kInfoRomDevicePrefixRegex{"^fpga_info_(dom|iob|scm|mcb)$"}; +const re2::RE2 kI2cAdapterNameRegex{"(?P.+)@(?P\\d+)"}; constexpr auto kSymlinkDirs = { "eeproms", "sensors", @@ -39,14 +49,104 @@ constexpr auto kSpiDevModaliases = { "em3581", "si3210"}; constexpr auto kXcvrDeviceName = "xcvr_ctrl"; -} // namespace - -namespace facebook::fboss::platform::platform_manager { bool containsLower(const std::string& s) { return std::any_of(s.begin(), s.end(), ::islower); } +// Returns all PmUnitConfigs that has the given slotType. +std::vector getPmUnitConfigsBySlotType( + const PlatformConfig& platformConfig, + const SlotType& slotType) { + return *platformConfig.pmUnitConfigs() | ranges::views::values | + ranges::views::filter([&](const auto& pmUnitConfig) { + return *pmUnitConfig.pluggedInSlotType() == slotType; + }) | + ranges::to_vector; +} + +// Returns the outgoing SlotType from the given pmUnitConfigs that matches +// slotName. +std::optional findSlotType( + const std::vector& pmUnitConfigs, + const std::string& slotName) { + auto slotType = + pmUnitConfigs | ranges::views::filter([&](const auto& pmUnitConfig) { + return pmUnitConfig.outgoingSlotConfigs()->contains(slotName); + }) | + ranges::views::transform([&](const auto& pmUnitConfig) -> SlotType { + return *pmUnitConfig.outgoingSlotConfigs()->at(slotName).slotType(); + }) | + ranges::views::unique | ranges::to_vector; + if (slotType.size() != 1) { + XLOG(ERR) << fmt::format( + "Invalid SlotName {}. It maps to {} SlotConfig(s)", + slotName, + slotType.size()); + return std::nullopt; + } + return slotType.front(); +} + +template + requires requires(T t) { + { *t.pmUnitScopedName() } -> std::convertible_to; + } +bool hasDeviceName(const T& deviceConfig, const std::string& deviceName) { + return *deviceConfig.pmUnitScopedName() == deviceName; +} + +template + requires requires(T t) { + { *t.fpgaIpBlockConfig() } -> std::convertible_to; + } +bool hasDeviceName(const T& deviceConfig, const std::string& deviceName) { + return hasDeviceName(*deviceConfig.fpgaIpBlockConfig(), deviceName); +} + +bool hasDeviceName( + const I2cAdapterConfig& deviceConfig, + const std::string& deviceName) { + std::string pmUnitScopedName, adapterNum; + if (!re2::RE2::FullMatch( + deviceName, kI2cAdapterNameRegex, &pmUnitScopedName, &adapterNum)) { + return hasDeviceName(*deviceConfig.fpgaIpBlockConfig(), deviceName); + } + return hasDeviceName(*deviceConfig.fpgaIpBlockConfig(), pmUnitScopedName) && + 0 <= stoi(adapterNum) && + stoi(adapterNum) < *deviceConfig.numberOfAdapters(); +} + +template +bool hasDeviceName( + const std::vector& deviceConfigs, + const std::string& deviceName) { + for (const auto& deviceConfig : deviceConfigs) { + if (hasDeviceName(deviceConfig, deviceName)) { + return true; + } + } + return false; +} + +bool hasDeviceName( + const std::vector& deviceConfigs, + const std::string& deviceName) { + for (const auto& deviceConfig : deviceConfigs) { + if (hasDeviceName(*deviceConfig.fpgaIpBlockConfig(), deviceName) || + hasDeviceName(*deviceConfig.spiDeviceConfigs(), deviceName)) { + return true; + } + } + return false; +} + +template +bool isDeviceMatch(const std::string& deviceName, Ts&&... deviceConfigs) { + return (hasDeviceName(deviceConfigs, deviceName) || ...); +} +} // namespace + bool ConfigValidator::isValidSlotTypeConfig( const SlotTypeConfig& slotTypeConfig) { if (!slotTypeConfig.idpromConfig_ref() && !slotTypeConfig.pmUnitName()) { @@ -234,14 +334,133 @@ bool ConfigValidator::isValidSymlink(const std::string& symlink) { return true; } -bool ConfigValidator::isValidDevicePath(const std::string& devicePath) { - if (!re2::RE2::FullMatch(devicePath, kDevPathRegex)) { +bool ConfigValidator::isValidDevicePath( + const PlatformConfig& platformConfig, + const std::string& devicePath) { + std::string slotPath, deviceName; + if (!re2::RE2::FullMatch(devicePath, kDevPathRegex, &slotPath, &deviceName)) { XLOG(ERR) << fmt::format("Invalid device path {}", devicePath); return false; } + CHECK_EQ(slotPath.back(), '/'); + if (slotPath.length() > 1) { + slotPath.pop_back(); + } + if (!isValidSlotPath(platformConfig, slotPath) || + !isValidDeviceName(platformConfig, slotPath, deviceName)) { + return false; + } + return true; +} + +bool ConfigValidator::isValidSlotPath( + const PlatformConfig& platformConfig, + const std::string& slotPath) { + // Syntactic validation. + if (!re2::RE2::FullMatch(slotPath, kSlotPathRegex)) { + XLOG(ERR) << fmt::format("Invalid SlotPath format {}", slotPath); + return false; + } + + // Slot topological validation. + // Starting from the root, check for a PmUnit from CurrSlot to NextSlot. + for (auto currSlotType{*platformConfig.rootSlotType()}; + const auto& nextSlotName : slotPath | ranges::views::split('/') | + ranges::views::drop(1) | ranges::to>) { + // Find all pmUnits that can be plug into currSlotType. + auto pmUnitConfigs = + getPmUnitConfigsBySlotType(platformConfig, currSlotType); + if (pmUnitConfigs.empty()) { + XLOG(ERR) << fmt::format( + "Couldn't find PmUnitConfigs that can be plug-into {} in SlotPath {}", + currSlotType, + slotPath); + return false; + } + // Find next SlotType from the found PmUnits' outgoingSlotConfig of + // nextSlotName to verify that PmUnit sits between CurrSlot and NextSlot. + auto nextSlotType = findSlotType(pmUnitConfigs, nextSlotName); + if (!nextSlotType) { + XLOG(ERR) << fmt::format( + "Invalid SlotName {} in SlotPath {}", nextSlotName, slotPath); + return false; + } + currSlotType = *nextSlotType; + } return true; } +bool ConfigValidator::isValidDeviceName( + const PlatformConfig& platformConfig, + const std::string& slotPath, + const std::string& deviceName) { + // Find the SlotType of the lastSlotName. + std::optional slotType; + const auto lastSlotName = std::move((slotPath | ranges::views::split('/') | + ranges::to>) + .back()); + if (lastSlotName.empty()) { + slotType = *platformConfig.rootSlotType(); + } else { + // Find the SlotType based on lastSlotName from every PmUnitConfig. + auto allPmUnitConfigs = *platformConfig.pmUnitConfigs() | + ranges::view::values | ranges::to_vector; + slotType = findSlotType(allPmUnitConfigs, lastSlotName); + } + CHECK(slotType) << "SlotType must be nonnull"; + // If the device is IDPROM, search from the SlotTypeConfigs. + if (deviceName == "IDPROM") { + if (!platformConfig.slotTypeConfigs()->contains(*slotType)) { + XLOG(ERR) << fmt::format( + "Found no SlotTypeConfig for SlotType {}", *slotType); + return false; + } + const auto& slotTypeConfig = + platformConfig.slotTypeConfigs()->at(*slotType); + if (!slotTypeConfig.idpromConfig()) { + XLOG(ERR) << fmt::format( + "Unexpected IDPROM at SlotPath {}. IdpromConfig is not defined at {}", + slotPath, + *slotType); + return false; + } + return true; + } + // Otherwise, find all plugable PmUnitConfigs to the last Slot of the + // SlotPath. eagerly check if any has the given deviceName in its device + // configurations. + for (const auto& pmUnitConfig : + getPmUnitConfigsBySlotType(platformConfig, *slotType)) { + if (isDeviceMatch( + deviceName, + *pmUnitConfig.pciDeviceConfigs(), + *pmUnitConfig.i2cDeviceConfigs(), + *pmUnitConfig.embeddedSensorConfigs())) { + return true; + } + for (const auto& pciDeviceConfig : *pmUnitConfig.pciDeviceConfigs()) { + if (isDeviceMatch( + deviceName, + *pciDeviceConfig.i2cAdapterConfigs(), + *pciDeviceConfig.spiMasterConfigs(), + *pciDeviceConfig.fanTachoPwmConfigs(), + *pciDeviceConfig.ledCtrlConfigs(), + *pciDeviceConfig.xcvrCtrlConfigs(), + *pciDeviceConfig.spiMasterConfigs(), + *pciDeviceConfig.gpioChipConfigs(), + *pciDeviceConfig.watchdogConfigs(), + *pciDeviceConfig.infoRomConfigs(), + *pciDeviceConfig.miscCtrlConfigs())) { + return true; + } + } + } + // Couldn't find the matching deviceName. + XLOG(ERR) << fmt::format( + "Invalid DeviceName {} at SlotPath {}", deviceName, slotPath); + return false; +} + bool ConfigValidator::isValid(const PlatformConfig& config) { XLOG(INFO) << "Validating the config"; @@ -309,7 +528,7 @@ bool ConfigValidator::isValid(const PlatformConfig& config) { // Validate symbolic links for (const auto& [symlink, devicePath] : *config.symbolicLinkToDevicePath()) { - if (!isValidSymlink(symlink) || !isValidDevicePath(devicePath)) { + if (!isValidSymlink(symlink) || !isValidDevicePath(config, devicePath)) { return false; } } diff --git a/fboss/platform/platform_manager/ConfigValidator.h b/fboss/platform/platform_manager/ConfigValidator.h index 5b420236166ca..233d25c360483 100644 --- a/fboss/platform/platform_manager/ConfigValidator.h +++ b/fboss/platform/platform_manager/ConfigValidator.h @@ -8,6 +8,7 @@ namespace facebook::fboss::platform::platform_manager { class ConfigValidator { public: + virtual ~ConfigValidator() = default; bool isValid(const PlatformConfig& platformConfig); bool isValidPmUnitConfig( const std::map& slotTypeConfigs, @@ -17,7 +18,16 @@ class ConfigValidator { bool isValidFpgaIpBlockConfig(const FpgaIpBlockConfig& fpgaIpBlockConfig); bool isValidPciDeviceConfig(const PciDeviceConfig& pciDeviceConfig); bool isValidI2cDeviceConfig(const I2cDeviceConfig& i2cDeviceConfig); - bool isValidDevicePath(const std::string& devicePath); + bool isValidDevicePath( + const PlatformConfig& platformConfig, + const std::string& devicePath); + virtual bool isValidSlotPath( + const PlatformConfig& platformConfig, + const std::string& slotPath); + bool isValidDeviceName( + const PlatformConfig& platformConfig, + const std::string& slotPath, + const std::string& deviceName); bool isValidSymlink(const std::string& symlink); bool isValidPresenceDetection(const PresenceDetection& presenceDetection); bool isValidSpiDeviceConfigs( diff --git a/fboss/platform/platform_manager/PlatformExplorer.cpp b/fboss/platform/platform_manager/PlatformExplorer.cpp index 61ab9161e7fd4..913c863b1a249 100644 --- a/fboss/platform/platform_manager/PlatformExplorer.cpp +++ b/fboss/platform/platform_manager/PlatformExplorer.cpp @@ -24,7 +24,8 @@ namespace facebook::fboss::platform::platform_manager { namespace { -constexpr auto kTotalFailures = "total_failures"; +constexpr auto kTotalFailures = "platform_explorer.total_failures"; +constexpr auto kExplorationFail = "platform_explorer.exploration_fail"; constexpr auto kRootSlotPath = "/"; std::string getSlotPath( @@ -187,6 +188,11 @@ void PlatformExplorer::explore() { } publishFirmwareVersions(); auto explorationStatus = concludeExploration(); + fb303::fbData->setCounter( + kExplorationFail, + explorationStatus != ExplorationStatus::SUCCEEDED && + explorationStatus != + ExplorationStatus::SUCCEEDED_WITH_EXPECTED_ERRORS); updatePmStatus(createPmStatus( explorationStatus, std::chrono::duration_cast( diff --git a/fboss/platform/platform_manager/Utils.cpp b/fboss/platform/platform_manager/Utils.cpp index f132be64b6f57..1a430025d52e0 100644 --- a/fboss/platform/platform_manager/Utils.cpp +++ b/fboss/platform/platform_manager/Utils.cpp @@ -47,14 +47,6 @@ void verifyPlatformNameMatches( return; } -#ifndef IS_OSS - if (platformNameFromBios == "NOT SPECIFIED") { - XLOG(ERR) - << "Platform name is not specified in BIOS. Skipping comparison with config."; - return; - } -#endif - XLOGF( FATAL, "Platform name in config does not match the inferred platform name from " @@ -90,9 +82,6 @@ PlatformConfig Utils::getConfig() { std::pair Utils::parseDevicePath( const std::string& devicePath) { - if (!ConfigValidator().isValidDevicePath(devicePath)) { - throw std::runtime_error(fmt::format("Invalid DevicePath {}", devicePath)); - } std::string slotPath, deviceName; CHECK(RE2::FullMatch(devicePath, kPmDeviceParseRe, &slotPath, &deviceName)); // Remove trailling '/' (e.g /abc/dfg/) diff --git a/fboss/platform/platform_manager/tests/ConfigValidatorTest.cpp b/fboss/platform/platform_manager/tests/ConfigValidatorTest.cpp index 96c700ad311a6..2562c06ec5212 100644 --- a/fboss/platform/platform_manager/tests/ConfigValidatorTest.cpp +++ b/fboss/platform/platform_manager/tests/ConfigValidatorTest.cpp @@ -310,18 +310,71 @@ TEST(ConfigValidatorTest, Symlink) { } TEST(ConfigValidatorTest, DevicePath) { - EXPECT_FALSE(ConfigValidator().isValidDevicePath("/[]")); - EXPECT_FALSE(ConfigValidator().isValidDevicePath("/SCM_SLOT@1/[a")); - EXPECT_FALSE(ConfigValidator().isValidDevicePath("/SMB_SLOT@1/SCM_SLOT/[a]")); - EXPECT_TRUE(ConfigValidator().isValidDevicePath("/[chassis_eeprom]")); - EXPECT_TRUE(ConfigValidator().isValidDevicePath("/SMB_SLOT@0/[MCB_MUX_1]")); - EXPECT_TRUE( - ConfigValidator().isValidDevicePath("/SMB_SLOT@0/SCM_SLOT@1/[sensor]")); - EXPECT_TRUE(ConfigValidator().isValidDevicePath("/SMB_FRU_SLOT@0/[idprom]")); + PlatformConfig config; + config.rootSlotType() = "MCB_SLOT"; + config.rootPmUnitName() = "MCB"; + PmUnitConfig mcb, jumper, scm; + // Define PmUnit's SlotType + mcb.pluggedInSlotType() = "MCB_SLOT"; + jumper.pluggedInSlotType() = "JUMPER_SLOT"; + scm.pluggedInSlotType() = "SCM_SLOT"; + // Define SlotConfig's SlotType + SlotConfig jumperSlotConfig, scmSlotConfig; + jumperSlotConfig.slotType() = "JUMPER_SLOT"; + scmSlotConfig.slotType() = "SCM_SLOT"; + // Define outgoingSlotConfigs + mcb.outgoingSlotConfigs() = { + {"JUMPER_SLOT@0", jumperSlotConfig}, {"JUMPER_SLOT@1", jumperSlotConfig}}; + jumper.outgoingSlotConfigs() = {{"SCM_SLOT@0", scmSlotConfig}}; + // Define devices + I2cDeviceConfig mcbMux; + mcbMux.pmUnitScopedName() = "MCB_MUX_A"; + mcb.i2cDeviceConfigs() = {mcbMux}; + EmbeddedSensorConfig jumperNvme; + jumperNvme.pmUnitScopedName() = "NVME"; + jumper.embeddedSensorConfigs() = {jumperNvme}; + PciDeviceConfig scmPci; + FpgaIpBlockConfig gpioChipFpgaIpBlock; + gpioChipFpgaIpBlock.pmUnitScopedName() = "SCM_FPGA_GPIO_1"; + scmPci.gpioChipConfigs() = {gpioChipFpgaIpBlock}; + LedCtrlConfig scmLedCtrl; + scmLedCtrl.fpgaIpBlockConfig() = FpgaIpBlockConfig(); + scmLedCtrl.fpgaIpBlockConfig()->pmUnitScopedName() = "SCM_SYS_LED"; + scmPci.ledCtrlConfigs() = {scmLedCtrl}; + scm.pciDeviceConfigs() = {scmPci}; + config.pmUnitConfigs() = {{"MCB", mcb}, {"JUMPER", jumper}, {"SCM", scm}}; + // Case-1 Syntatically incorrect + EXPECT_FALSE(ConfigValidator().isValidDevicePath(config, "/SCM_SLOT@1/[a")); + EXPECT_FALSE( + ConfigValidator().isValidDevicePath(config, "/SMB_SLOT@1/SCM_SLOT/[a]")); + EXPECT_FALSE(ConfigValidator().isValidDevicePath(config, "/[]")); + EXPECT_FALSE( + ConfigValidator().isValidDevicePath(config, "/COME@SCM_SLOT@0/[idprom]")); + EXPECT_FALSE(ConfigValidator().isValidDevicePath( + config, "/COME_SLOT@SCM_SLOT@0/[SCM_MUX_5]")); + // Case-2 Topologically incorrect SlotPath EXPECT_FALSE( - ConfigValidator().isValidDevicePath("/COME@SCM_SLOT@0/[idprom]")); + ConfigValidator().isValidDevicePath(config, "/SMB_SLOT@0/[sensor1]")); EXPECT_FALSE( - ConfigValidator().isValidDevicePath("/COME_SLOT@SCM_SLOT@0/[SCM_MUX_5]")); + ConfigValidator().isValidDevicePath(config, "/JUMPER_SLOT@2/[fpga]")); + EXPECT_FALSE(ConfigValidator().isValidDevicePath( + config, "/JUMPER_SLOT@0/SCM_SLOT@1/[IDPROM]")); + // Case-4 Topologically correct SlotPath, incorrect DeviceName + EXPECT_FALSE(ConfigValidator().isValidDevicePath(config, "/[sensor1]")); + EXPECT_FALSE( + ConfigValidator().isValidDevicePath(config, "/JUMPER_SLOT@0/[fpga]")); + EXPECT_FALSE(ConfigValidator().isValidDevicePath( + config, "/JUMPER_SLOT@0/SCM_SLOT@0/[IDPROM]")); + // Case-5 Corrects + EXPECT_TRUE(ConfigValidator().isValidDevicePath(config, "/[MCB_MUX_A]")); + EXPECT_TRUE( + ConfigValidator().isValidDevicePath(config, "/JUMPER_SLOT@0/[NVME]")); + EXPECT_TRUE( + ConfigValidator().isValidDevicePath(config, "/JUMPER_SLOT@1/[NVME]")); + EXPECT_TRUE(ConfigValidator().isValidDevicePath( + config, "/JUMPER_SLOT@0/SCM_SLOT@0/[SCM_SYS_LED]")); + EXPECT_TRUE(ConfigValidator().isValidDevicePath( + config, "/JUMPER_SLOT@0/SCM_SLOT@0/[SCM_FPGA_GPIO_1]")); } TEST(ConfigValidatorTest, BspRpm) { diff --git a/fboss/platform/platform_manager/tests/UtilsTest.cpp b/fboss/platform/platform_manager/tests/UtilsTest.cpp index 9ef9358d0d56c..e7176cca9ece5 100644 --- a/fboss/platform/platform_manager/tests/UtilsTest.cpp +++ b/fboss/platform/platform_manager/tests/UtilsTest.cpp @@ -1,7 +1,5 @@ // (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary. -#include - #include #include "fboss/platform/platform_manager/Utils.h" @@ -27,7 +25,7 @@ TEST(UtilsTest, ParseDevicePath) { EXPECT_EQ( makeDevicePathPair("/MCB_SLOT@0/SMB_SLOT@11", "SMB_IOB_I2C_1"), Utils().parseDevicePath("/MCB_SLOT@0/SMB_SLOT@11/[SMB_IOB_I2C_1]")); - EXPECT_THROW(Utils().parseDevicePath("ABCDE/[abc]"), std::runtime_error); - EXPECT_THROW(Utils().parseDevicePath("/MCB_SLOT/[abc]"), std::runtime_error); - EXPECT_THROW(Utils().parseDevicePath("/MCB_SLOT@1/[]"), std::runtime_error); + EXPECT_NO_THROW(Utils().parseDevicePath("ABCDE/[abc]")); + EXPECT_NO_THROW(Utils().parseDevicePath("/MCB_SLOT/[abc]")); + EXPECT_NO_THROW(Utils().parseDevicePath("/MCB_SLOT@1/[]")); } diff --git a/fboss/platform/rackmon/ModbusDevice.cpp b/fboss/platform/rackmon/ModbusDevice.cpp index 139e80dfc8e08..0d671ccb3c847 100644 --- a/fboss/platform/rackmon/ModbusDevice.cpp +++ b/fboss/platform/rackmon/ModbusDevice.cpp @@ -1,7 +1,5 @@ // Copyright 2021-present Facebook. All Rights Reserved. #include "ModbusDevice.h" -#include -#include #include "Log.h" using nlohmann::json; diff --git a/fboss/platform/rackmon/UARTDevice.cpp b/fboss/platform/rackmon/UARTDevice.cpp index 88bdd3613f7e1..9a5f3782d1cab 100644 --- a/fboss/platform/rackmon/UARTDevice.cpp +++ b/fboss/platform/rackmon/UARTDevice.cpp @@ -4,7 +4,6 @@ #include #include #include -#include #include #include #include diff --git a/fboss/platform/rackmon/hw_test/BUCK b/fboss/platform/rackmon/hw_test/BUCK index 182d770869d6c..7393112ba13b6 100644 --- a/fboss/platform/rackmon/hw_test/BUCK +++ b/fboss/platform/rackmon/hw_test/BUCK @@ -24,7 +24,6 @@ cpp_binary( "//thrift/lib/cpp2/util:util", ], external_deps = [ - "gflags", "glog", ], ) diff --git a/fboss/platform/rackmon/hw_test/Main.cpp b/fboss/platform/rackmon/hw_test/Main.cpp index 25d6e10d78516..eeb1f77861d43 100644 --- a/fboss/platform/rackmon/hw_test/Main.cpp +++ b/fboss/platform/rackmon/hw_test/Main.cpp @@ -11,7 +11,6 @@ #include #include #include -#include #include #include #include "fboss/platform/helpers/Init.h" diff --git a/fboss/platform/rackmon/tests/DeviceTest.cpp b/fboss/platform/rackmon/tests/DeviceTest.cpp index 9aa08d8139de1..6df6615f24dc7 100644 --- a/fboss/platform/rackmon/tests/DeviceTest.cpp +++ b/fboss/platform/rackmon/tests/DeviceTest.cpp @@ -2,7 +2,6 @@ #include "Device.h" #include #include -#include #include #include #include "TempDir.h" diff --git a/fboss/platform/sensor_service/BUCK b/fboss/platform/sensor_service/BUCK index 26e3f3dd6de57..6c8fd18c81cdc 100644 --- a/fboss/platform/sensor_service/BUCK +++ b/fboss/platform/sensor_service/BUCK @@ -103,6 +103,7 @@ cpp_library( ], exported_deps = [ "fbsource//third-party/fmt:fmt", + "//fboss/platform/platform_manager:config_validator", "//fboss/platform/sensor_service/if:sensor_config-cpp2-types", "//folly/logging:logging", ], @@ -122,7 +123,6 @@ cpp_binary( "//fb303:logging", "//fboss/platform/helpers:init", "//folly/executors:function_scheduler", - "//folly/logging:init", ], ) @@ -168,6 +168,8 @@ cpp_binary( srcs = [ "SensorServicePlainTextClient.cpp", ], + default_strip_mode = "full", + strip_mode = "full", deps = [ "//fboss/platform/helpers:init", "//fboss/platform/sensor_service/if:sensor_service-cpp2-clients", diff --git a/fboss/platform/sensor_service/ConfigValidator.cpp b/fboss/platform/sensor_service/ConfigValidator.cpp index 90cd312d35ae8..67d77b861d992 100644 --- a/fboss/platform/sensor_service/ConfigValidator.cpp +++ b/fboss/platform/sensor_service/ConfigValidator.cpp @@ -8,38 +8,48 @@ namespace facebook::fboss::platform::sensor_service { using namespace sensor_config; -namespace { -// For more info, see below -// https://github.com/facebook/fboss/blob/main/fboss/platform/platform_manager/platform_manager_config.thrift#L73 -const re2::RE2 kSlotPathRe = "/|(/([A-Z]+_)+SLOT@\\d+)+"; -} // namespace -bool ConfigValidator::isValid(const SensorConfig& sensorConfig) { - for (std::unordered_set usedSlotPaths; +ConfigValidator::ConfigValidator( + const std::shared_ptr& pmConfigValidator) + : pmConfigValidator_(pmConfigValidator) {} + +bool ConfigValidator::isValid( + const SensorConfig& sensorConfig, + const std::optional& platformConfig) { + for (std::unordered_set> usedSlotPaths; const auto& pmUnitSensors : *sensorConfig.pmUnitSensorsList()) { if (!isValidPmUnitSensors(pmUnitSensors, usedSlotPaths)) { return false; } } + // This is Darwin if platformConfig=std::nullopt + // Until it onboards PM, we can't cross-validate against PM. + if (!platformConfig) { + return true; + } + // Cross-validation agains platform_manager::ConfigValidator. + for (const auto& pmUnitSensors : *sensorConfig.pmUnitSensorsList()) { + if (!pmConfigValidator_->isValidSlotPath( + *platformConfig, *pmUnitSensors.slotPath())) { + return false; + } + } return true; } bool ConfigValidator::isValidPmUnitSensors( const PmUnitSensors& pmUnitSensors, - std::unordered_set& usedSlotPaths) { - if (pmUnitSensors.slotPath()->empty()) { - XLOG(ERR) << "SlotPath in PmUnitSensor must be non-empty"; - return false; - } - if (!isValidSlotPath(*pmUnitSensors.slotPath())) { - return false; - } - if (usedSlotPaths.contains(*pmUnitSensors.slotPath())) { + std::unordered_set>& usedSlotPaths) { + if (usedSlotPaths.contains( + {*pmUnitSensors.slotPath(), *pmUnitSensors.pmUnitName()})) { XLOG(ERR) << fmt::format( - "SlotPath {} is a duplicate", *pmUnitSensors.slotPath()); + "(SlotPath {}, PmUnitName {}) is a duplicate", + *pmUnitSensors.slotPath(), + *pmUnitSensors.pmUnitName()); return false; } - usedSlotPaths.emplace(*pmUnitSensors.slotPath()); + usedSlotPaths.insert( + {*pmUnitSensors.slotPath(), *pmUnitSensors.pmUnitName()}); for (std::unordered_set usedSensorNames; const auto& pmSensor : *pmUnitSensors.sensors()) { if (!isValidPmSensor(pmSensor, usedSensorNames)) { @@ -67,13 +77,4 @@ bool ConfigValidator::isValidPmSensor( } return true; } - -bool ConfigValidator::isValidSlotPath(const std::string& slotPath) { - if (!re2::RE2::FullMatch(slotPath, kSlotPathRe)) { - XLOG(ERR) << fmt::format("SlotPath {} is invalid", slotPath); - return false; - } - return true; -} - } // namespace facebook::fboss::platform::sensor_service diff --git a/fboss/platform/sensor_service/ConfigValidator.h b/fboss/platform/sensor_service/ConfigValidator.h index 63469ca83ba2b..b7bb1b8ada8cb 100644 --- a/fboss/platform/sensor_service/ConfigValidator.h +++ b/fboss/platform/sensor_service/ConfigValidator.h @@ -2,19 +2,29 @@ #pragma once +#include "fboss/platform/platform_manager/ConfigValidator.h" #include "fboss/platform/sensor_service/if/gen-cpp2/sensor_config_types.h" namespace facebook::fboss::platform::sensor_service { class ConfigValidator { public: - bool isValid(const sensor_config::SensorConfig& sensorConfig); + ConfigValidator( + const std::shared_ptr& + pmConfigValidator = + std::make_shared()); + bool isValid( + const sensor_config::SensorConfig& sensorConfig, + const std::optional& platformConfig); bool isValidPmUnitSensors( const sensor_config::PmUnitSensors& PmUnitSensors, - std::unordered_set& usedSlotPaths); + std::unordered_set>& usedSlotPaths); bool isValidPmSensor( const sensor_config::PmSensor& pmSensor, std::unordered_set& usedSensorNames); bool isValidSlotPath(const std::string& slotPath); + + private: + const std::shared_ptr pmConfigValidator_; }; } // namespace facebook::fboss::platform::sensor_service diff --git a/fboss/platform/sensor_service/Main.cpp b/fboss/platform/sensor_service/Main.cpp index 04bf6e27f13a0..94aa5ca61a5f1 100644 --- a/fboss/platform/sensor_service/Main.cpp +++ b/fboss/platform/sensor_service/Main.cpp @@ -2,7 +2,6 @@ // All Rights Reserved. #include #include -#include #include "fboss/platform/helpers/Init.h" #include "fboss/platform/sensor_service/Flags.h" diff --git a/fboss/platform/sensor_service/PmClientFactory.cpp b/fboss/platform/sensor_service/PmClientFactory.cpp index 386e87cded762..e70d0ad794f58 100644 --- a/fboss/platform/sensor_service/PmClientFactory.cpp +++ b/fboss/platform/sensor_service/PmClientFactory.cpp @@ -2,7 +2,6 @@ #include "fboss/platform/sensor_service/PmClientFactory.h" -#include #include #include #include diff --git a/fboss/platform/sensor_service/Utils.cpp b/fboss/platform/sensor_service/Utils.cpp index a39071eac4c7a..baaab866ecb2e 100644 --- a/fboss/platform/sensor_service/Utils.cpp +++ b/fboss/platform/sensor_service/Utils.cpp @@ -109,10 +109,18 @@ std::optional Utils::resolveVersionedSensors( SensorConfig Utils::getConfig() { auto platformName = helpers::PlatformNameLib().getPlatformName(); - SensorConfig sensorConfig; - apache::thrift::SimpleJSONSerializer::deserialize( - ConfigLib().getSensorServiceConfig(platformName), sensorConfig); - if (!ConfigValidator().isValid(sensorConfig)) { + SensorConfig sensorConfig = + apache::thrift::SimpleJSONSerializer::deserialize( + ConfigLib().getSensorServiceConfig(platformName)); + std::optional platformConfig{std::nullopt}; + // TODO(T207042263) Enable cross-service config validation for Darwin + // once Darwin onboards PM. + if (platformName != "DARWIN") { + platformConfig = apache::thrift::SimpleJSONSerializer::deserialize< + platform_manager::PlatformConfig>( + ConfigLib().getPlatformManagerConfig(platformName)); + } + if (!ConfigValidator().isValid(sensorConfig, platformConfig)) { throw std::runtime_error("Invalid sensor config"); } return sensorConfig; diff --git a/fboss/platform/sensor_service/hw_test/BUCK b/fboss/platform/sensor_service/hw_test/BUCK index f8e9a8a285139..8408e37d3667c 100644 --- a/fboss/platform/sensor_service/hw_test/BUCK +++ b/fboss/platform/sensor_service/hw_test/BUCK @@ -15,7 +15,6 @@ cpp_binary( "//fboss/platform/sensor_service:utils", "//fboss/platform/sensor_service/if:sensor_service-cpp2-services", "//folly/init:init", - "//thrift/lib/cpp2/protocol:protocol", "//thrift/lib/cpp2/util:util", ], ) diff --git a/fboss/platform/sensor_service/hw_test/SensorServiceHwTest.cpp b/fboss/platform/sensor_service/hw_test/SensorServiceHwTest.cpp index 0211173712b7c..739e521f50433 100644 --- a/fboss/platform/sensor_service/hw_test/SensorServiceHwTest.cpp +++ b/fboss/platform/sensor_service/hw_test/SensorServiceHwTest.cpp @@ -11,7 +11,6 @@ #include "fboss/platform/sensor_service/hw_test/SensorServiceHwTest.h" #include -#include #include #include "fboss/platform/helpers/Init.h" diff --git a/fboss/platform/sensor_service/test/BUCK b/fboss/platform/sensor_service/test/BUCK index a4b6376405458..ca21dec756571 100644 --- a/fboss/platform/sensor_service/test/BUCK +++ b/fboss/platform/sensor_service/test/BUCK @@ -52,6 +52,7 @@ cpp_unittest( "ConfigValidatorTest.cpp", ], deps = [ + "fbsource//third-party/googletest:gmock", "//fboss/platform/sensor_service:config_validator", ], ) diff --git a/fboss/platform/sensor_service/test/ConfigValidatorTest.cpp b/fboss/platform/sensor_service/test/ConfigValidatorTest.cpp index c0798bcad32e7..61461d4dd58e0 100644 --- a/fboss/platform/sensor_service/test/ConfigValidatorTest.cpp +++ b/fboss/platform/sensor_service/test/ConfigValidatorTest.cpp @@ -1,10 +1,12 @@ // (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary. +#include #include #include "fboss/platform/sensor_service/ConfigValidator.h" using namespace ::testing; +using namespace facebook::fboss::platform; using namespace facebook::fboss::platform::sensor_service; using namespace facebook::fboss::platform::sensor_config; namespace { @@ -15,8 +17,29 @@ PmSensor createPmSensor(const std::string& name, const std::string& sysfsPath) { return pmSensor; } } // namespace +class MockPmConfigValidator : public platform_manager::ConfigValidator { + public: + MockPmConfigValidator() : platform_manager::ConfigValidator() {} + MOCK_METHOD( + bool, + isValidSlotPath, + (const platform_manager::PlatformConfig&, const std::string&)); +}; -TEST(ConfigValidatorTest, ValidConfig) { +class ConfigValidatorTest : public testing::Test { + public: + void SetUp() override {} + + std::shared_ptr mockPmConfigValidator_{ + std::make_shared()}; + ConfigValidator configValidator_{mockPmConfigValidator_}; + platform_manager::PlatformConfig platformConfig_; +}; + +TEST_F(ConfigValidatorTest, ValidConfig) { + EXPECT_CALL(*mockPmConfigValidator_, isValidSlotPath(_, _)) + .Times(2 /* # of PmUnitSensors*/) + .WillRepeatedly(Return(true)); auto config = SensorConfig(); PmUnitSensors pmUnitSensors1, pmUnitSensors2; pmUnitSensors1.slotPath() = "/"; @@ -26,46 +49,70 @@ TEST(ConfigValidatorTest, ValidConfig) { pmUnitSensors1.sensors() = { createPmSensor("sensor2", "/run/devmap/sensors/BCB_FAN_CPLD")}; config.pmUnitSensorsList() = {pmUnitSensors1, pmUnitSensors2}; - EXPECT_TRUE(ConfigValidator().isValid(config)); + EXPECT_TRUE(configValidator_.isValid(config, platformConfig_)); } -TEST(ConfigValidatorTest, SlotPaths) { - // Valid - EXPECT_TRUE(ConfigValidator().isValidSlotPath("/")); - EXPECT_TRUE(ConfigValidator().isValidSlotPath("/FAN_SLOT@0")); - EXPECT_TRUE(ConfigValidator().isValidSlotPath("/FAN_SLOT@110")); - EXPECT_TRUE(ConfigValidator().isValidSlotPath("/BCB_SLOT@0/FAN_SLOT@1")); - // Invalid - EXPECT_FALSE(ConfigValidator().isValidSlotPath("/ ")); - EXPECT_FALSE(ConfigValidator().isValidSlotPath("/INVALID")); - EXPECT_FALSE(ConfigValidator().isValidSlotPath("/SLOT@0")); - EXPECT_FALSE(ConfigValidator().isValidSlotPath("/BCB_SLOT@0FAN_SLOT@1")); - // Can't have a trailing / - EXPECT_FALSE(ConfigValidator().isValidSlotPath("/BCB_SLOT@0/")); - // Duplicate +TEST_F(ConfigValidatorTest, ValidConfigForDarwin) { + EXPECT_CALL(*mockPmConfigValidator_, isValidSlotPath(_, _)).Times(0); + auto config = SensorConfig(); + PmUnitSensors pmUnitSensors1, pmUnitSensors2; + pmUnitSensors1.slotPath() = "/"; + pmUnitSensors1.sensors() = { + createPmSensor("sensor1", "/run/devmap/sensors/CPU_CORE_TEMP")}; + pmUnitSensors2.slotPath() = "/BCB_SLOT@0"; + pmUnitSensors1.sensors() = { + createPmSensor("sensor2", "/run/devmap/sensors/BCB_FAN_CPLD")}; + config.pmUnitSensorsList() = {pmUnitSensors1, pmUnitSensors2}; + EXPECT_TRUE(configValidator_.isValid(config, std::nullopt)); +} + +TEST_F(ConfigValidatorTest, PmUnitSensors) { SensorConfig config; PmUnitSensors pmUnitSensors1, pmUnitSensors2; pmUnitSensors1.slotPath() = "/BCB_SLOT@0"; + pmUnitSensors1.pmUnitName() = "BCB"; pmUnitSensors2.slotPath() = "/BCB_SLOT@0"; + pmUnitSensors2.pmUnitName() = "BCB2"; + config.pmUnitSensorsList() = {pmUnitSensors1, pmUnitSensors2}; + // Valid PmUnitSensors + EXPECT_CALL( + *mockPmConfigValidator_, isValidSlotPath(platformConfig_, "/BCB_SLOT@0")) + .Times(2 /* # of PmUnitSensors */) + .WillRepeatedly(Return(true)); + EXPECT_TRUE(configValidator_.isValid(config, platformConfig_)); + // Invalid PmUnitSensors -- Invalid SlotPath + EXPECT_CALL( + *mockPmConfigValidator_, isValidSlotPath(platformConfig_, "/BCB_SLOT@0")) + .WillOnce(Return(false)); + EXPECT_FALSE(configValidator_.isValid(config, platformConfig_)); + // Invalid PmUnitSensors -- Duplicate (SlotPath, PmUnitName) Pairing + EXPECT_CALL( + *mockPmConfigValidator_, isValidSlotPath(platformConfig_, "/BCB_SLOT@0")) + .Times(0); + pmUnitSensors2.pmUnitName() = "BCB"; config.pmUnitSensorsList() = {pmUnitSensors1, pmUnitSensors2}; - EXPECT_FALSE(ConfigValidator().isValid(config)); + EXPECT_FALSE(configValidator_.isValid(config, platformConfig_)); } -TEST(ConfigValidatorTest, InvalidPmSensors) { +TEST_F(ConfigValidatorTest, InvalidPmSensors) { + // At this point, only interested in PmSensors, suppose SlotPaths are valid. + EXPECT_CALL(*mockPmConfigValidator_, isValidSlotPath(_, _)) + .WillRepeatedly(Return(true)); + auto config = SensorConfig(); PmUnitSensors pmUnitSensors; pmUnitSensors.slotPath() = "/BCB_SLOT@0"; pmUnitSensors.sensors() = { createPmSensor("", "/run/devmap/sensors/CPU_CORE_TEMP")}; config.pmUnitSensorsList() = {pmUnitSensors}; - EXPECT_FALSE(ConfigValidator().isValid(config)); + EXPECT_FALSE(configValidator_.isValid(config, platformConfig_)); pmUnitSensors.sensors() = { createPmSensor("sensor1", "/run/devmap/eeproms/BCB_EEPROMS")}; config.pmUnitSensorsList() = {pmUnitSensors}; - EXPECT_FALSE(ConfigValidator().isValid(config)); + EXPECT_FALSE(configValidator_.isValid(config, platformConfig_)); pmUnitSensors.sensors() = { createPmSensor("sensor1", "/run/devmap/sensors/CPU_CORE_TEMP"), createPmSensor("sensor1", "/run/devmap/sensors/CPU_CORE_TEMP2")}; config.pmUnitSensorsList() = {pmUnitSensors}; - EXPECT_FALSE(ConfigValidator().isValid(config)); + EXPECT_FALSE(configValidator_.isValid(config, platformConfig_)); } diff --git a/fboss/platform/weutil/BUCK b/fboss/platform/weutil/BUCK index 1cb248999f355..5107ba61e040f 100644 --- a/fboss/platform/weutil/BUCK +++ b/fboss/platform/weutil/BUCK @@ -17,9 +17,6 @@ cpp_library( ], exported_deps = [ ":fboss_eeprom_lib", - ":ioctl_smbus_eeprom_reader", - "//fboss/lib/platforms:platform_mode", - "//fboss/lib/platforms:product-info", "//fboss/platform/config_lib:config_lib", "//fboss/platform/helpers:platform_name_lib", "//fboss/platform/helpers:platform_utils", diff --git a/fboss/platform/weutil/FbossEepromParser.cpp b/fboss/platform/weutil/FbossEepromParser.cpp index eb65b7fa05aca..3cb9427005f51 100644 --- a/fboss/platform/weutil/FbossEepromParser.cpp +++ b/fboss/platform/weutil/FbossEepromParser.cpp @@ -113,6 +113,35 @@ const std::vector kFieldDictionaryV5 = { {250, "CRC16", FIELD_BE_HEX, 2, VARIABLE}, }; +const std::vector kFieldDictionaryV6 = { + {0, "NA", FIELD_LE_UINT, -1, -1}, // TypeCode 0 is reserved + {1, "Product Name", FIELD_STRING, VARIABLE, VARIABLE}, + {2, "Product Part Number", FIELD_STRING, VARIABLE, VARIABLE}, + {3, "System Assembly Part Number", FIELD_STRING, 8, VARIABLE}, + {4, "Meta PCBA Part Number", FIELD_STRING, 12, VARIABLE}, + {5, "Meta PCB Part Number", FIELD_STRING, 12, VARIABLE}, + {6, "ODM/JDM PCBA Part Number", FIELD_STRING, VARIABLE, VARIABLE}, + {7, "ODM/JDM PCBA Serial Number", FIELD_STRING, VARIABLE, VARIABLE}, + {8, "Product Production State", FIELD_BE_UINT, 1, VARIABLE}, + {9, "Product Version", FIELD_BE_UINT, 1, VARIABLE}, + {10, "Product Sub-Version", FIELD_BE_UINT, 1, VARIABLE}, + {11, "Product Serial Number", FIELD_STRING, VARIABLE, VARIABLE}, + {12, "System Manufacturer", FIELD_STRING, VARIABLE, VARIABLE}, + {13, "System Manufacturing Date", FIELD_STRING, 8, VARIABLE}, + {14, "PCB Manufacturer", FIELD_STRING, VARIABLE, VARIABLE}, + {15, "Assembled At", FIELD_STRING, VARIABLE, VARIABLE}, + {16, "EEPROM location on Fabric", FIELD_STRING, VARIABLE, VARIABLE}, + {17, "X86 CPU MAC", FIELD_V5_MAC, 8, VARIABLE}, + {18, "BMC MAC", FIELD_V5_MAC, 8, VARIABLE}, + {19, "Switch ASIC MAC", FIELD_V5_MAC, 8, VARIABLE}, + {20, "META Reserved MAC", FIELD_V5_MAC, 8, VARIABLE}, + {21, "RMA", FIELD_BE_UINT, 1, VARIABLE}, + {101, "Vendor Defined Field 1", FIELD_BE_HEX, VARIABLE, VARIABLE}, + {102, "Vendor Defined Field 2", FIELD_BE_HEX, VARIABLE, VARIABLE}, + {103, "Vendor Defined Field 3", FIELD_BE_HEX, VARIABLE, VARIABLE}, + {250, "CRC16", FIELD_BE_HEX, 2, VARIABLE}, +}; + // Header size in EEPROM. First two bytes are 0xFBFB followed // by a byte specifying the EEPROM version and one byte of 0xFF constexpr int kHeaderSize = 4; @@ -131,6 +160,10 @@ std::vector getEepromFieldDict(int version) { break; case 5: return kFieldDictionaryV5; + break; + case 6: + return kFieldDictionaryV6; + break; default: throw std::runtime_error( "Invalid EEPROM version : " + std::to_string(version)); @@ -177,6 +210,7 @@ FbossEepromParser::getContents() { break; case 4: case 5: + case 6: parsedValue = parseEepromBlobTLV( eepromVer, buffer, std::min(readCount, kMaxEepromSize)); break; diff --git a/fboss/platform/weutil/Weutil.cpp b/fboss/platform/weutil/Weutil.cpp index 649ffde173b62..84cbcbaa0f6f3 100644 --- a/fboss/platform/weutil/Weutil.cpp +++ b/fboss/platform/weutil/Weutil.cpp @@ -1,12 +1,9 @@ // (c) Facebook, Inc. and its affiliates. Confidential and proprietary. #include "fboss/platform/weutil/Weutil.h" -#include "fboss/platform/weutil/IoctlSmbusEepromReader.h" #include #include -#include "fboss/lib/platforms/PlatformMode.h" -#include "fboss/lib/platforms/PlatformProductInfo.h" #include "fboss/platform/config_lib/ConfigLib.h" #include "fboss/platform/helpers/PlatformNameLib.h" #include "fboss/platform/weutil/WeutilDarwin.h" @@ -55,16 +52,6 @@ weutil_config::FruEepromConfig getFruEepromConfig( return itr->second; } -std::optional getPlatformType() { - try { - facebook::fboss::PlatformProductInfo prodInfo{FLAGS_fruid_filepath}; - prodInfo.initialize(); - return prodInfo.getType(); - } catch (std::exception& e) { - XLOG(ERR) << "Failed to get platform type: " << e.what(); - return std::nullopt; - } -} } // namespace std::vector getEepromPaths() { @@ -87,18 +74,18 @@ std::unique_ptr createWeUtilIntf( const std::string& eepromName, const std::string& eepromPath, const int eepromOffset) { - auto platform = getPlatformType(); - + auto platformName = helpers::PlatformNameLib().getPlatformName(); + bool isDarwin = platformName && *platformName == "DARWIN"; // When path is specified, read from it directly. For platform bringup, we can // use the --path and --offset options without a valid config. if (!eepromPath.empty()) { - if (platform && platform.value() == PlatformType::PLATFORM_DARWIN) { + if (isDarwin) { return std::make_unique(eepromPath); } else { return std::make_unique(eepromPath, eepromOffset); } } - if (!platform) { + if (!platformName) { throw std::runtime_error( "Unable to determine platform type. Use the --path option"); } @@ -110,7 +97,7 @@ std::unique_ptr createWeUtilIntf( } else { fruEepromConfig = getFruEepromConfig(eepromName, thriftConfig); } - if (platform.value() == PlatformType::PLATFORM_DARWIN) { + if (isDarwin) { return std::make_unique(*fruEepromConfig.path()); } else { return std::make_unique( diff --git a/fboss/platform/weutil/main.cpp b/fboss/platform/weutil/main.cpp index f545f52e698f9..2ff7102058430 100644 --- a/fboss/platform/weutil/main.cpp +++ b/fboss/platform/weutil/main.cpp @@ -11,7 +11,6 @@ #include "fboss/platform/helpers/InitCli.h" #include "fboss/platform/weutil/Weutil.h" -#include "fboss/platform/weutil/WeutilDarwin.h" using namespace facebook::fboss::platform; using namespace facebook::fboss; diff --git a/fboss/platform/weutil/test/FbossEepromParserTest.cpp b/fboss/platform/weutil/test/FbossEepromParserTest.cpp index 30baec0387955..fa4209b166f55 100644 --- a/fboss/platform/weutil/test/FbossEepromParserTest.cpp +++ b/fboss/platform/weutil/test/FbossEepromParserTest.cpp @@ -56,7 +56,7 @@ EepromContents expectedContentsV4 = { }; // Based on the Spec for V5 EEPROM: -// https://docs.google.com/document/d/1KX6q2mHSjFU2-eDt5HGidWSRXm5vFfAaZvdOG890eXY +// https://github.com/facebook/fboss/blob/main/fboss/docs/meta_eeprom_format_v5.md EepromData eepromV5 = { 0xfb, 0xfb, 0x05, 0xff, 0x01, 0x0d, 0x46, 0x49, 0x52, 0x53, 0x54, 0x5f, 0x53, 0x51, 0x55, 0x45, 0x45, 0x5a, 0x45, 0x02, 0x08, 0x32, 0x30, 0x31, @@ -107,7 +107,7 @@ EepromContents expectedContentsV5 = { {"CRC16", "0xd5c6 (CRC Matched)"}, }; -// EEORM V5 with wrong CRC Programmed (same as the one above, but last 2 bytes +// EEPROM V5 with wrong CRC Programmed (same as the one above, but last 2 bytes // have wrong CRC value programmed.) EepromData eepromV5WrongCrc = { 0xfb, 0xfb, 0x05, 0xff, 0x01, 0x0d, 0x46, 0x49, 0x52, 0x53, 0x54, 0x5f, @@ -159,9 +159,68 @@ EepromContents expectedContentsV5WrongCrc = { {"CRC16", "0xa6b7 (CRC Mismatch. Expected 0xd5c6)"}, }; +// Based on the Spec for V6 EEPROM: +// https://github.com/facebook/fboss/blob/main/fboss/docs/meta_eeprom_format_v6.md +EepromData eepromV6 = { + 0xfb, 0xfb, 0x06, 0xff, 0x01, 0x0d, 0x46, 0x49, 0x52, 0x53, 0x54, 0x5f, + 0x53, 0x51, 0x55, 0x45, 0x45, 0x5a, 0x45, 0x02, 0x08, 0x32, 0x30, 0x31, + 0x32, 0x33, 0x34, 0x35, 0x36, 0x03, 0x08, 0x53, 0x59, 0x53, 0x41, 0x31, + 0x32, 0x33, 0x34, 0x04, 0x0c, 0x50, 0x43, 0x42, 0x41, 0x31, 0x32, 0x33, + 0x34, 0x35, 0x36, 0x37, 0x20, 0x05, 0x0c, 0x50, 0x43, 0x42, 0x31, 0x32, + 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x20, 0x06, 0x0c, 0x4d, 0x59, 0x4f, + 0x44, 0x4d, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x07, 0x0d, 0x4f, + 0x53, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x41, 0x42, + 0x08, 0x01, 0x01, 0x09, 0x01, 0x00, 0x0a, 0x01, 0x01, 0x0b, 0x0d, 0x50, + 0x53, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x30, 0x41, + 0x0c, 0x07, 0x55, 0x4e, 0x41, 0x5f, 0x4d, 0x41, 0x53, 0x0d, 0x08, 0x32, + 0x30, 0x31, 0x33, 0x30, 0x32, 0x30, 0x33, 0x0e, 0x05, 0x54, 0x45, 0x52, + 0x5a, 0x4f, 0x0f, 0x09, 0x4a, 0x55, 0x49, 0x43, 0x45, 0x54, 0x4f, 0x52, + 0x59, 0x10, 0x07, 0x42, 0x55, 0x44, 0x4f, 0x4b, 0x41, 0x4e, 0x11, 0x08, + 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x01, 0x02, 0x12, 0x08, 0x12, 0x34, + 0x56, 0x78, 0x9a, 0xbc, 0x03, 0x04, 0x13, 0x08, 0x66, 0x55, 0x44, 0x33, + 0x22, 0x11, 0x02, 0x00, 0x14, 0x08, 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, + 0x00, 0x02, 0x15, 0x01, 0x01, 0x65, 0x05, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x66, 0x05, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0xfa, 0x02, 0x4a, 0x05, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff}; + +EepromContents expectedContentsV6 = { + {"Version", "6"}, + {"Product Name", "FIRST_SQUEEZE"}, + {"Product Part Number", "20123456"}, + {"System Assembly Part Number", "SYSA1234"}, + {"Meta PCBA Part Number", "PCBA1234567 "}, + {"Meta PCB Part Number", "PCB12345678 "}, + {"ODM/JDM PCBA Part Number", "MYODM1234567"}, + {"ODM/JDM PCBA Serial Number", "OS123456789AB"}, + {"Product Production State", "1"}, + {"Product Version", "0"}, + {"Product Sub-Version", "1"}, + {"Product Serial Number", "PS1234567890A"}, + {"System Manufacturer", "UNA_MAS"}, + {"System Manufacturing Date", "20130203"}, + {"PCB Manufacturer", "TERZO"}, + {"Assembled At", "JUICETORY"}, + {"EEPROM location on Fabric", "BUDOKAN"}, + {"X86 CPU MAC Base", "11:22:33:44:55:66"}, + {"X86 CPU MAC Address Size", "258"}, + {"BMC MAC Base", "12:34:56:78:9a:bc"}, + {"BMC MAC Address Size", "772"}, + {"Switch ASIC MAC Base", "66:55:44:33:22:11"}, + {"Switch ASIC MAC Address Size", "512"}, + {"META Reserved MAC Base", "fe:dc:ba:98:76:54"}, + {"META Reserved MAC Address Size", "2"}, + {"RMA", "1"}, + {"Vendor Defined Field 1", "0x0101010101"}, + {"Vendor Defined Field 2", "0x48656c6c6f"}, + {"Vendor Defined Field 3", ""}, + {"CRC16", "0x4a05 (CRC Matched)"}, +}; + std::vector> EepromTestInfo = { {eepromV4, expectedContentsV4}, {eepromV5, expectedContentsV5}, + {eepromV6, expectedContentsV6}, {eepromV5WrongCrc, expectedContentsV5WrongCrc}, }; diff --git a/fboss/qsfp_service/BUCK b/fboss/qsfp_service/BUCK index 3f8c2385fb725..34538603aa016 100644 --- a/fboss/qsfp_service/BUCK +++ b/fboss/qsfp_service/BUCK @@ -76,7 +76,6 @@ cpp_library( "//fb303:thread_cached_service_data", "//fboss/qsfp_service/if:transceiver-cpp2-types", "//folly/logging:logging", - "//servicerouter/client/cpp2:cpp2", ], ) @@ -91,14 +90,11 @@ cpp_library( exported_deps = [ ":stats-helper", ":transceiver-manager", - "//common/network:util", "//common/time:time", "//fb303:thread_cached_service_data", "//fboss/qsfp_service/if:transceiver-cpp2-types", - "//folly:memory", "//folly/io/async:async_base", "//folly/logging:logging", - "//servicerouter/client/cpp2:cpp2", ], ) @@ -123,7 +119,6 @@ cpp_library( "//fb303:thread_cached_service_data", "//fboss/agent:fboss-error", "//fboss/agent:fboss-types", - "//fboss/agent:load_agent_config", "//fboss/agent:platform_config-cpp2-types", "//fboss/agent:switch_config-cpp2-types", "//fboss/agent:utils", diff --git a/fboss/qsfp_service/TransceiverManager.cpp b/fboss/qsfp_service/TransceiverManager.cpp index f71f68c768e6e..57f936fd8be27 100644 --- a/fboss/qsfp_service/TransceiverManager.cpp +++ b/fboss/qsfp_service/TransceiverManager.cpp @@ -6,7 +6,6 @@ #include #include -#include "fboss/agent/AgentConfig.h" #include "fboss/agent/FbossError.h" #include "fboss/agent/Utils.h" #include "fboss/agent/gen-cpp2/switch_config_types.h" diff --git a/fboss/qsfp_service/fsdb/BUCK b/fboss/qsfp_service/fsdb/BUCK index c0cb20e0e3121..d253592a1c5a4 100644 --- a/fboss/qsfp_service/fsdb/BUCK +++ b/fboss/qsfp_service/fsdb/BUCK @@ -37,7 +37,6 @@ cpp_library( "//fboss/agent:switch_state-cpp2-types", "//fboss/fsdb/client:fsdb_pub_sub", "//fboss/fsdb/client:fsdb_stream_client", - "//fboss/fsdb/common:flags", "//fboss/fsdb/if:fsdb_model", "//fboss/fsdb/if:fsdb_oper-cpp2-types", "//fboss/qsfp_service:transceiver-manager", diff --git a/fboss/qsfp_service/fsdb/QsfpFsdbSubscriber.cpp b/fboss/qsfp_service/fsdb/QsfpFsdbSubscriber.cpp index f8e367ba5e117..262a74c08767a 100644 --- a/fboss/qsfp_service/fsdb/QsfpFsdbSubscriber.cpp +++ b/fboss/qsfp_service/fsdb/QsfpFsdbSubscriber.cpp @@ -4,7 +4,6 @@ #include #include #include "fboss/fsdb/client/FsdbPubSubManager.h" -#include "fboss/fsdb/common/Flags.h" #include "fboss/fsdb/if/FsdbModel.h" #include "fboss/fsdb/if/gen-cpp2/fsdb_oper_types.h" #include "fboss/qsfp_service/TransceiverManager.h" diff --git a/fboss/qsfp_service/if/transceiver.thrift b/fboss/qsfp_service/if/transceiver.thrift index 228fa68e30724..b9db125f773fa 100644 --- a/fboss/qsfp_service/if/transceiver.thrift +++ b/fboss/qsfp_service/if/transceiver.thrift @@ -216,6 +216,7 @@ enum MediaInterfaceCode { DR4_2x400G = 13, DR4_400G = 14, FR8_800G = 15, + CR_10G = 16, } // The extended specification compliance code of the transceiver module. @@ -276,6 +277,7 @@ enum SMFMediaInterfaceCode { } enum Ethernet10GComplianceCode { + CR_10G = 0x01, SR_10G = 0x10, LR_10G = 0x20, LRM_10G = 0x40, diff --git a/fboss/qsfp_service/module/FirmwareUpgrader.cpp b/fboss/qsfp_service/module/FirmwareUpgrader.cpp index c7dd15366c506..1b737870980ae 100644 --- a/fboss/qsfp_service/module/FirmwareUpgrader.cpp +++ b/fboss/qsfp_service/module/FirmwareUpgrader.cpp @@ -152,7 +152,17 @@ bool CmisFirmwareUpgrader::cmisModuleFirmwareDownload( // Check if EPL memory is supported if (commandBlock->getCdbLplFlatMemory()[5] == 0x10 || - commandBlock->getCdbLplFlatMemory()[5] == 0x11) { + commandBlock->getCdbLplFlatMemory()[5] == 0x11 || + commandBlock->getCdbLplFlatMemory()[5] == 0x3) { + /* Per the spec, the valid values for this register (page 9F, offset 141) + * are 00h: Both LPL and EPL are not supported 01h: LPL supported 10h: EPL + * supported 11h: Both LPL and EPL are supported Certain vendors (vendor + * for 400G-XDR4 GEN1 modules) have incorrectly advertised their + * capability as 0x3 instead of 0x11. As a workaround, also check for 0x3 + * to see if EPL is supported or not. We don't expect any other vendor to + * have it incorrectly advertised as 0x3, thus it should be safe to add + * this additional check as a workaround for this vendor + */ eplSupported = true; XLOG(INFO) << folly::sformat( "cmisModuleFirmwareDownload: Mod{:d} will use EPL memory for firmware download", @@ -359,6 +369,19 @@ bool CmisFirmwareUpgrader::cmisModuleFirmwareUpgrade() { // Call the firmware download operation with this image content result = cmisModuleFirmwareDownload( imageCursor_.data(), imageCursor_.totalLength()); + // Always revert the MSA password at the end. Certain commands like releasing + // low power don't work when certain modules (like xdr4) are still in the CDB + // mode which is the mode that's activated when the msa password is written + // during firmware upgrade + std::array msaPassword_; + msaPassword_[0] = 0; + msaPassword_[1] = 0; + msaPassword_[2] = 0; + msaPassword_[3] = 0; + bus_->writeTransceiver( + {TransceiverAccessParameter::ADDR_QSFP, kModulePasswordEntryReg, 4}, + msaPassword_.data(), + POST_I2C_WRITE_NO_DELAY_US); if (!result) { // If the download failed then print the message and return. No need // to do any recovery here diff --git a/fboss/qsfp_service/module/QsfpModule.cpp b/fboss/qsfp_service/module/QsfpModule.cpp index 929ba96cb74ad..674a4c6c09248 100644 --- a/fboss/qsfp_service/module/QsfpModule.cpp +++ b/fboss/qsfp_service/module/QsfpModule.cpp @@ -202,21 +202,30 @@ bool QsfpModule::upgradeFirmwareLocked( << " : Still continuing with firmware upgrade"; } - // Step 2: First ensure the module is out of lower mode - TransceiverSettings settings = getTransceiverSettingsInfo(); - setPowerOverrideIfSupportedLocked(*settings.powerControl()); + for (auto& fw : fwList) { + // Step 2: First ensure the module is out of lower mode + TransceiverSettings settings = getTransceiverSettingsInfo(); + setPowerOverrideIfSupportedLocked(*settings.powerControl()); - // Step 3: Mark the module dirty so that we can refresh the entire cache - // later - dirty_ = true; + // Step 3: Mark the module dirty so that we can refresh the entire cache + // later + dirty_ = true; - // Step 4: Upgrade Firmware - for (auto& fw : fwList) { + // Step 4: Upgrade Firmware fwUpgradeResult &= upgradeFirmwareLockedImpl(fw.get()); + + // Step 5: Trigger a hard reset of the transceiver to kick start the new + // firmware + triggerModuleReset(); + // If there are more than 1 firmware to update on the optic (for modules + // that have separate MCU and DSP firmwares), then update the cache in + // preparation for the next upgrade. The sleep here is for the module to + // recover after the previous hard reset + // @lint-ignore CLANGTIDY facebook-hte-BadCall-sleep + sleep(5); + updateQsfpData(true); } - // Trigger a hard reset of the transceiver to kick start the new firmware - triggerModuleReset(); // End of Firmware Upgrade return fwUpgradeResult; }; @@ -226,12 +235,7 @@ bool QsfpModule::upgradeFirmwareLocked( while (upgradeAttempts <= kAllowedFwUpgradeAttempts) { finalFwUpgradeResult = fwUpgradeFn(); if (!finalFwUpgradeResult && upgradeAttempts < kAllowedFwUpgradeAttempts) { - // Sleep 5 seconds so that the module recovers after it is reset - // @lint-ignore CLANGTIDY facebook-hte-BadCall-sleep - sleep(5); - // Refresh the cache to get the latest state of the module after the - // module was reset after a failed FW upgrade - updateQsfpData(true); + // fwUpgradeFn will wait 5 seconds internally when re-trying. upgradeAttempts++; } else { break; @@ -327,6 +331,7 @@ unsigned int QsfpModule::numHostLanes() const { case MediaInterfaceCode::LR_10G: case MediaInterfaceCode::SR_10G: case MediaInterfaceCode::BASE_T_10G: + case MediaInterfaceCode::CR_10G: return 1; case MediaInterfaceCode::CWDM4_100G: case MediaInterfaceCode::CR4_100G: @@ -355,6 +360,7 @@ unsigned int QsfpModule::numMediaLanes() const { case MediaInterfaceCode::SR_10G: case MediaInterfaceCode::FR1_100G: case MediaInterfaceCode::BASE_T_10G: + case MediaInterfaceCode::CR_10G: return 1; case MediaInterfaceCode::CWDM4_100G: case MediaInterfaceCode::CR4_100G: diff --git a/fboss/qsfp_service/module/QsfpUtil.cpp b/fboss/qsfp_service/module/QsfpUtil.cpp index 453f248b4af30..fd53a7b42b222 100644 --- a/fboss/qsfp_service/module/QsfpUtil.cpp +++ b/fboss/qsfp_service/module/QsfpUtil.cpp @@ -2,7 +2,6 @@ #include "fboss/qsfp_service/module/QsfpUtil.h" #include -#include namespace facebook::fboss { diff --git a/fboss/qsfp_service/module/cmis/CmisFieldInfo.cpp b/fboss/qsfp_service/module/cmis/CmisFieldInfo.cpp index 3163668a2d835..c1624f3aa32f0 100644 --- a/fboss/qsfp_service/module/cmis/CmisFieldInfo.cpp +++ b/fboss/qsfp_service/module/cmis/CmisFieldInfo.cpp @@ -8,7 +8,6 @@ */ #include "fboss/qsfp_service/module/cmis/CmisFieldInfo.h" -#include "fboss/agent/FbossError.h" /* * Parse transceiver data fields, as outlined in diff --git a/fboss/qsfp_service/module/cmis/CmisModule.cpp b/fboss/qsfp_service/module/cmis/CmisModule.cpp index fa9dbd7105939..5a4d402eb04ca 100644 --- a/fboss/qsfp_service/module/cmis/CmisModule.cpp +++ b/fboss/qsfp_service/module/cmis/CmisModule.cpp @@ -13,7 +13,6 @@ #include "fboss/lib/platforms/PlatformMode.h" #include "fboss/lib/usb/TransceiverI2CApi.h" #include "fboss/qsfp_service/StatsPublisher.h" -#include "fboss/qsfp_service/TransceiverManager.h" #include "fboss/qsfp_service/if/gen-cpp2/qsfp_service_config_types.h" #include "fboss/qsfp_service/if/gen-cpp2/transceiver_types.h" #include "fboss/qsfp_service/lib/QsfpConfigParserHelper.h" diff --git a/fboss/qsfp_service/module/sff/Sff8472FieldInfo.cpp b/fboss/qsfp_service/module/sff/Sff8472FieldInfo.cpp index bfda8ffa4c325..06160c6d3724f 100644 --- a/fboss/qsfp_service/module/sff/Sff8472FieldInfo.cpp +++ b/fboss/qsfp_service/module/sff/Sff8472FieldInfo.cpp @@ -8,7 +8,6 @@ */ #include "fboss/qsfp_service/module/sff/Sff8472FieldInfo.h" -#include "fboss/agent/FbossError.h" /* * Parse transceiver data fields, as outlined in various documents diff --git a/fboss/qsfp_service/module/sff/Sff8472Module.cpp b/fboss/qsfp_service/module/sff/Sff8472Module.cpp index b541763b3e021..bd82d04bee44f 100644 --- a/fboss/qsfp_service/module/sff/Sff8472Module.cpp +++ b/fboss/qsfp_service/module/sff/Sff8472Module.cpp @@ -21,6 +21,7 @@ namespace fboss { static std::map mediaInterfaceMapping = { + {Ethernet10GComplianceCode::CR_10G, MediaInterfaceCode::CR_10G}, {Ethernet10GComplianceCode::LR_10G, MediaInterfaceCode::LR_10G}, {Ethernet10GComplianceCode::SR_10G, MediaInterfaceCode::SR_10G}, }; @@ -285,6 +286,7 @@ TransmitterTechnology Sff8472Module::getQsfpTransmitterTechnology() const { case MediaInterfaceCode::LR_10G: return TransmitterTechnology::OPTICAL; case MediaInterfaceCode::BASE_T_10G: + case MediaInterfaceCode::CR_10G: return TransmitterTechnology::COPPER; default: return TransmitterTechnology::UNKNOWN; diff --git a/fboss/qsfp_service/module/sff/SffFieldInfo.cpp b/fboss/qsfp_service/module/sff/SffFieldInfo.cpp index 4756ea48ecb05..416b9a17ba121 100644 --- a/fboss/qsfp_service/module/sff/SffFieldInfo.cpp +++ b/fboss/qsfp_service/module/sff/SffFieldInfo.cpp @@ -8,7 +8,6 @@ */ #include "fboss/qsfp_service/module/sff/SffFieldInfo.h" -#include "fboss/agent/FbossError.h" /* * Parse transceiver data fields, as outlined in various documents diff --git a/fboss/qsfp_service/platforms/wedge/BUCK b/fboss/qsfp_service/platforms/wedge/BUCK index a5c55feaae2d7..921d9ed1f77b4 100644 --- a/fboss/qsfp_service/platforms/wedge/BUCK +++ b/fboss/qsfp_service/platforms/wedge/BUCK @@ -30,7 +30,6 @@ cpp_library( "//fboss/qsfp_service/module:i2c_log_buffer", "//fboss/qsfp_service/module:qsfp-module", "//folly:conv", - "//folly:memory", "//folly:random", "//folly:range", "//folly:scope_guard", diff --git a/fboss/qsfp_service/platforms/wedge/WedgeManager.cpp b/fboss/qsfp_service/platforms/wedge/WedgeManager.cpp index bd10b2607d472..7e7d4ed613ab7 100644 --- a/fboss/qsfp_service/platforms/wedge/WedgeManager.cpp +++ b/fboss/qsfp_service/platforms/wedge/WedgeManager.cpp @@ -18,9 +18,7 @@ #include -#include #include -#include #include #include #include @@ -436,7 +434,14 @@ void WedgeManager::syncPorts( void WedgeManager::updateTransceiverLogInfo( const std::vector& transceivers) { for (auto tcvrID : transceivers) { - const auto tcvrInfo = getTransceiverInfo(tcvrID); + TransceiverInfo tcvrInfo; + try { + tcvrInfo = getTransceiverInfo(tcvrID); + } catch (const QsfpModuleError&) { + XLOG(INFO) << "Failed to update tcvr log info for transceiver: " + << tcvrID; + continue; + } const auto& state = tcvrInfo.tcvrState(); std::optional vendor = std::nullopt; std::optional fwStatus = std::nullopt; diff --git a/fboss/qsfp_service/platforms/wedge/WedgeQsfp.cpp b/fboss/qsfp_service/platforms/wedge/WedgeQsfp.cpp index b60c4fc41c2de..d8ace04320105 100644 --- a/fboss/qsfp_service/platforms/wedge/WedgeQsfp.cpp +++ b/fboss/qsfp_service/platforms/wedge/WedgeQsfp.cpp @@ -10,7 +10,6 @@ #include "fboss/qsfp_service/platforms/wedge/WedgeQsfp.h" #include -#include #include #include diff --git a/fboss/qsfp_service/test/BUCK b/fboss/qsfp_service/test/BUCK index 5d3e7591c231c..926d3091f9581 100644 --- a/fboss/qsfp_service/test/BUCK +++ b/fboss/qsfp_service/test/BUCK @@ -16,7 +16,6 @@ cpp_binary( "//fboss/qsfp_service/platforms/wedge:wedge-platform-credo-0.7.2", "//folly:singleton", "//folly/executors:function_scheduler", - "//folly/logging:logging", "//thrift/lib/cpp2:server", ], ) @@ -66,12 +65,10 @@ cpp_unittest( "BspPlatformMapTest.cpp", ], deps = [ - "//fboss/lib:common_file_utils", "//fboss/lib/bsp/meru400bfu:meru400bfu_bsp", "//fboss/lib/bsp/meru400bia:meru400bia_bsp", "//fboss/lib/bsp/meru400biu:meru400biu_bsp", "//fboss/lib/bsp/montblanc:montblanc_bsp", - "//fboss/qsfp_service/platforms/wedge/tests:mock-wedge-manager", "//folly/testing:test_util", ], ) diff --git a/fboss/qsfp_service/test/BspPlatformMapTest.cpp b/fboss/qsfp_service/test/BspPlatformMapTest.cpp index 778556d2baf8b..9c25d66ca7d24 100644 --- a/fboss/qsfp_service/test/BspPlatformMapTest.cpp +++ b/fboss/qsfp_service/test/BspPlatformMapTest.cpp @@ -2,12 +2,10 @@ #include #include -#include "fboss/lib/CommonFileUtils.h" #include "fboss/lib/bsp/meru400bfu/Meru400bfuBspPlatformMapping.h" #include "fboss/lib/bsp/meru400bia/Meru400biaBspPlatformMapping.h" #include "fboss/lib/bsp/meru400biu/Meru400biuBspPlatformMapping.h" #include "fboss/lib/bsp/montblanc/MontblancBspPlatformMapping.h" -#include "fboss/qsfp_service/platforms/wedge/tests/MockWedgeManager.h" namespace facebook::fboss { diff --git a/fboss/qsfp_service/test/QsfpServiceTest.cpp b/fboss/qsfp_service/test/QsfpServiceTest.cpp index 23df27e31f992..e7e6b5e915131 100644 --- a/fboss/qsfp_service/test/QsfpServiceTest.cpp +++ b/fboss/qsfp_service/test/QsfpServiceTest.cpp @@ -10,7 +10,6 @@ #include "fboss/qsfp_service/test/QsfpServiceTest.h" #include -#include #include "common/init/Init.h" diff --git a/fboss/qsfp_service/test/hw_test/HwExternalPhyPortTest.cpp b/fboss/qsfp_service/test/hw_test/HwExternalPhyPortTest.cpp index 51295d2eede1f..b28dd6b4d9a19 100644 --- a/fboss/qsfp_service/test/hw_test/HwExternalPhyPortTest.cpp +++ b/fboss/qsfp_service/test/hw_test/HwExternalPhyPortTest.cpp @@ -13,8 +13,6 @@ #include "fboss/qsfp_service/test/hw_test/HwPortUtils.h" #include "fboss/qsfp_service/test/hw_test/HwQsfpEnsemble.h" -#include - namespace facebook::fboss { std::string HwExternalPhyPortTest::neededFeatureNames() const { std::stringstream ss; diff --git a/fboss/qsfp_service/test/hw_test/HwI2CStressTest.cpp b/fboss/qsfp_service/test/hw_test/HwI2CStressTest.cpp index 821bef68cd09d..ffc2510054d18 100644 --- a/fboss/qsfp_service/test/hw_test/HwI2CStressTest.cpp +++ b/fboss/qsfp_service/test/hw_test/HwI2CStressTest.cpp @@ -2,11 +2,8 @@ #include "fboss/qsfp_service/test/hw_test/HwTest.h" -#include "fboss/agent/platforms/common/PlatformMapping.h" - #include "fboss/qsfp_service/test/hw_test/HwPortUtils.h" #include "fboss/qsfp_service/test/hw_test/HwQsfpEnsemble.h" -#include "thrift/lib/cpp/util/EnumUtils.h" #include #include diff --git a/fboss/qsfp_service/test/hw_test/HwI2cSelectTest.cpp b/fboss/qsfp_service/test/hw_test/HwI2cSelectTest.cpp index 81eb6bd41dd6e..a00a4c000cb48 100644 --- a/fboss/qsfp_service/test/hw_test/HwI2cSelectTest.cpp +++ b/fboss/qsfp_service/test/hw_test/HwI2cSelectTest.cpp @@ -2,11 +2,8 @@ #include "fboss/qsfp_service/test/hw_test/HwTest.h" -#include "fboss/agent/platforms/common/PlatformMapping.h" - #include "fboss/qsfp_service/test/hw_test/HwPortUtils.h" #include "fboss/qsfp_service/test/hw_test/HwQsfpEnsemble.h" -#include "thrift/lib/cpp/util/EnumUtils.h" #include #include diff --git a/fboss/qsfp_service/test/hw_test/HwPortProfileTest.cpp b/fboss/qsfp_service/test/hw_test/HwPortProfileTest.cpp index 4e803a54f29f7..0897cb2ac23e5 100644 --- a/fboss/qsfp_service/test/hw_test/HwPortProfileTest.cpp +++ b/fboss/qsfp_service/test/hw_test/HwPortProfileTest.cpp @@ -13,7 +13,6 @@ #include "fboss/agent/platforms/common/PlatformMapping.h" #include "fboss/agent/state/Port.h" #include "fboss/lib/config/PlatformConfigUtils.h" -#include "fboss/lib/phy/PhyManager.h" #include "fboss/qsfp_service/test/hw_test/HwPortUtils.h" #include "fboss/qsfp_service/test/hw_test/HwQsfpEnsemble.h" #include "fboss/qsfp_service/test/hw_test/HwTransceiverUtils.h" diff --git a/fboss/qsfp_service/test/hw_test/HwPortUtils.h b/fboss/qsfp_service/test/hw_test/HwPortUtils.h index 0dd839d3a6b7f..edd4c55a69fed 100644 --- a/fboss/qsfp_service/test/hw_test/HwPortUtils.h +++ b/fboss/qsfp_service/test/hw_test/HwPortUtils.h @@ -21,7 +21,7 @@ namespace facebook::fboss { class HwQsfpEnsemble; class PhyManager; -class AgentConfig; +struct AgentConfig; namespace phy { struct PhyPortConfig; diff --git a/fboss/qsfp_service/test/hw_test/HwQsfpEnsemble.cpp b/fboss/qsfp_service/test/hw_test/HwQsfpEnsemble.cpp index 86a3b36c8e310..e28c1df597c74 100644 --- a/fboss/qsfp_service/test/hw_test/HwQsfpEnsemble.cpp +++ b/fboss/qsfp_service/test/hw_test/HwQsfpEnsemble.cpp @@ -9,11 +9,8 @@ */ #include "fboss/qsfp_service/test/hw_test/HwQsfpEnsemble.h" -#include "fboss/agent/FbossError.h" #include "fboss/agent/platforms/common/MultiPimPlatformMapping.h" #include "fboss/lib/CommonFileUtils.h" -#include "fboss/lib/config/PlatformConfigUtils.h" -#include "fboss/lib/fpga/MultiPimPlatformSystemContainer.h" #include "fboss/lib/phy/PhyManager.h" #include "fboss/qsfp_service/QsfpServer.h" #include "fboss/qsfp_service/QsfpServiceHandler.h" diff --git a/fboss/qsfp_service/test/hw_test/HwStateMachineTest.cpp b/fboss/qsfp_service/test/hw_test/HwStateMachineTest.cpp index d549e2412a76d..daf7499523093 100644 --- a/fboss/qsfp_service/test/hw_test/HwStateMachineTest.cpp +++ b/fboss/qsfp_service/test/hw_test/HwStateMachineTest.cpp @@ -10,7 +10,6 @@ #include "fboss/qsfp_service/test/hw_test/HwTest.h" #include "fboss/lib/CommonUtils.h" -#include "fboss/lib/config/PlatformConfigUtils.h" #include "fboss/qsfp_service/module/QsfpModule.h" #include "fboss/qsfp_service/platforms/wedge/WedgeManager.h" #include "fboss/qsfp_service/test/hw_test/HwPortUtils.h" diff --git a/fboss/qsfp_service/test/hw_test/HwTest.cpp b/fboss/qsfp_service/test/hw_test/HwTest.cpp index 238eada4ec9a4..d91a3af171590 100644 --- a/fboss/qsfp_service/test/hw_test/HwTest.cpp +++ b/fboss/qsfp_service/test/hw_test/HwTest.cpp @@ -16,7 +16,6 @@ #include "fboss/lib/CommonUtils.h" #include "fboss/lib/fpga/MultiPimPlatformSystemContainer.h" #include "fboss/lib/phy/PhyManager.h" -#include "fboss/lib/platforms/PlatformProductInfo.h" #include "fboss/qsfp_service/QsfpServer.h" #include "fboss/qsfp_service/test/hw_test/HwPortUtils.h" #include "fboss/qsfp_service/test/hw_test/HwQsfpEnsemble.h" diff --git a/fboss/qsfp_service/test/hw_test/HwTransceiverResetTest.cpp b/fboss/qsfp_service/test/hw_test/HwTransceiverResetTest.cpp index d574bddb724e0..96c55f347fd2c 100644 --- a/fboss/qsfp_service/test/hw_test/HwTransceiverResetTest.cpp +++ b/fboss/qsfp_service/test/hw_test/HwTransceiverResetTest.cpp @@ -10,7 +10,6 @@ #include "fboss/qsfp_service/test/hw_test/HwTest.h" #include "fboss/agent/AgentConfig.h" -#include "fboss/agent/platforms/common/PlatformMapping.h" #include #include "fboss/lib/CommonUtils.h" diff --git a/fboss/qsfp_service/test/hw_test/HwTransceiverUtils.cpp b/fboss/qsfp_service/test/hw_test/HwTransceiverUtils.cpp index de7beb440e8ad..60aeea83b8bdb 100644 --- a/fboss/qsfp_service/test/hw_test/HwTransceiverUtils.cpp +++ b/fboss/qsfp_service/test/hw_test/HwTransceiverUtils.cpp @@ -140,6 +140,7 @@ void HwTransceiverUtils::verifyPortNameToLaneMap( case MediaInterfaceCode::LR_10G: case MediaInterfaceCode::SR_10G: case MediaInterfaceCode::BASE_T_10G: + case MediaInterfaceCode::CR_10G: expectedMediaLanes = {0}; break; case MediaInterfaceCode::UNKNOWN: @@ -361,11 +362,15 @@ void HwTransceiverUtils::verify10gProfile( EXPECT_EQ(*tcvrState.transceiver(), TransceiverType::SFP); for (const auto& mediaId : mediaInterfaces) { - EXPECT_EQ( - *mediaId.media()->ethernet10GComplianceCode_ref(), - Ethernet10GComplianceCode::LR_10G); + EXPECT_TRUE( + *mediaId.media()->ethernet10GComplianceCode_ref() == + Ethernet10GComplianceCode::LR_10G || + *mediaId.media()->ethernet10GComplianceCode_ref() == + Ethernet10GComplianceCode::CR_10G); - EXPECT_EQ(*mediaId.code(), MediaInterfaceCode::LR_10G); + EXPECT_TRUE( + *mediaId.code() == MediaInterfaceCode::LR_10G || + *mediaId.code() == MediaInterfaceCode::CR_10G); } } diff --git a/fboss/qsfp_service/test/hw_test/HwXphyFirmwareTest.cpp b/fboss/qsfp_service/test/hw_test/HwXphyFirmwareTest.cpp index 956df7eef6ee4..5e2ca69dec9af 100644 --- a/fboss/qsfp_service/test/hw_test/HwXphyFirmwareTest.cpp +++ b/fboss/qsfp_service/test/hw_test/HwXphyFirmwareTest.cpp @@ -12,7 +12,6 @@ #include "fboss/agent/platforms/common/PlatformMapping.h" #include "fboss/lib/phy/ExternalPhy.h" #include "fboss/lib/phy/PhyManager.h" -#include "fboss/lib/platforms/PlatformMode.h" #include "fboss/qsfp_service/test/hw_test/HwQsfpEnsemble.h" #include diff --git a/fboss/thrift_cow/nodes/tests/BUCK b/fboss/thrift_cow/nodes/tests/BUCK index bcc4c9c834f19..264e8766e7b48 100644 --- a/fboss/thrift_cow/nodes/tests/BUCK +++ b/fboss/thrift_cow/nodes/tests/BUCK @@ -50,7 +50,6 @@ cpp_unittest( supports_static_listing = False, deps = [ ":test-cpp2-reflection", - "//fboss/agent:switch_config-cpp2-reflection", "//fboss/agent/state:nodebase", "//fboss/fsdb/if:fsdb_oper-cpp2-types", "//fboss/thrift_cow/nodes:nodes", diff --git a/fboss/thrift_cow/nodes/tests/ThriftListNodeTests.cpp b/fboss/thrift_cow/nodes/tests/ThriftListNodeTests.cpp index 36c1eada05fc0..213c5706ff77e 100644 --- a/fboss/thrift_cow/nodes/tests/ThriftListNodeTests.cpp +++ b/fboss/thrift_cow/nodes/tests/ThriftListNodeTests.cpp @@ -13,11 +13,9 @@ #include #include #include -#include "fboss/agent/gen-cpp2/switch_config_fatal_types.h" #include "fboss/fsdb/if/gen-cpp2/fsdb_oper_types.h" #include "fboss/thrift_cow/nodes/Serializer.h" #include "fboss/thrift_cow/nodes/Types.h" -#include "fboss/thrift_cow/nodes/tests/gen-cpp2/test_fatal_types.h" #include #include diff --git a/fboss/thrift_cow/nodes/tests/ThriftMapNodeTests.cpp b/fboss/thrift_cow/nodes/tests/ThriftMapNodeTests.cpp index a47418e3e41f9..7742682eff062 100644 --- a/fboss/thrift_cow/nodes/tests/ThriftMapNodeTests.cpp +++ b/fboss/thrift_cow/nodes/tests/ThriftMapNodeTests.cpp @@ -10,14 +10,11 @@ #include #include -#include #include #include -#include "fboss/agent/gen-cpp2/switch_config_fatal_types.h" #include "fboss/fsdb/if/gen-cpp2/fsdb_oper_types.h" #include "fboss/thrift_cow/nodes/Serializer.h" #include "fboss/thrift_cow/nodes/Types.h" -#include "fboss/thrift_cow/nodes/tests/gen-cpp2/test_fatal_types.h" #include "fboss/agent/state/DeltaFunctions.h" #include "fboss/agent/state/MapDelta.h" diff --git a/fboss/thrift_cow/nodes/tests/ThriftSetNodeTests.cpp b/fboss/thrift_cow/nodes/tests/ThriftSetNodeTests.cpp index e5ca5006025b3..7575b3baad52e 100644 --- a/fboss/thrift_cow/nodes/tests/ThriftSetNodeTests.cpp +++ b/fboss/thrift_cow/nodes/tests/ThriftSetNodeTests.cpp @@ -10,14 +10,10 @@ #include #include -#include -#include #include -#include "fboss/agent/gen-cpp2/switch_config_fatal_types.h" #include "fboss/fsdb/if/gen-cpp2/fsdb_oper_types.h" #include "fboss/thrift_cow/nodes/Serializer.h" #include "fboss/thrift_cow/nodes/Types.h" -#include "fboss/thrift_cow/nodes/tests/gen-cpp2/test_fatal_types.h" #include #include diff --git a/fboss/thrift_cow/nodes/tests/ThriftStructNodeTests.cpp b/fboss/thrift_cow/nodes/tests/ThriftStructNodeTests.cpp index 8275154000f12..db84f6d4c6efc 100644 --- a/fboss/thrift_cow/nodes/tests/ThriftStructNodeTests.cpp +++ b/fboss/thrift_cow/nodes/tests/ThriftStructNodeTests.cpp @@ -13,11 +13,9 @@ #include #include #include -#include "fboss/agent/gen-cpp2/switch_config_fatal_types.h" #include "fboss/fsdb/if/gen-cpp2/fsdb_oper_types.h" #include "fboss/thrift_cow/nodes/Serializer.h" #include "fboss/thrift_cow/nodes/Types.h" -#include "fboss/thrift_cow/nodes/tests/gen-cpp2/test_fatal_types.h" #include #include diff --git a/fboss/thrift_cow/nodes/tests/ThriftUnionNodeTests.cpp b/fboss/thrift_cow/nodes/tests/ThriftUnionNodeTests.cpp index 06d9e12ebc0e7..2fc020a1fc632 100644 --- a/fboss/thrift_cow/nodes/tests/ThriftUnionNodeTests.cpp +++ b/fboss/thrift_cow/nodes/tests/ThriftUnionNodeTests.cpp @@ -12,11 +12,9 @@ #include #include #include -#include "fboss/agent/gen-cpp2/switch_config_fatal_types.h" #include "fboss/fsdb/if/gen-cpp2/fsdb_oper_types.h" #include "fboss/thrift_cow/nodes/Serializer.h" #include "fboss/thrift_cow/nodes/Types.h" -#include "fboss/thrift_cow/nodes/tests/gen-cpp2/test_fatal_types.h" #include #include diff --git a/fboss/thrift_cow/nodes/tests/test.thrift b/fboss/thrift_cow/nodes/tests/test.thrift index ad2e9448151e3..9e861d41ededf 100644 --- a/fboss/thrift_cow/nodes/tests/test.thrift +++ b/fboss/thrift_cow/nodes/tests/test.thrift @@ -45,13 +45,17 @@ struct TestStruct { 8: list listOfStructs; 9: list> listOfListOfPrimitives; 10: list> listOfListOfStructs; - 11: map mapOfI32ToI32; - 12: map mapOfEnumToI32; - 13: map mapOfStringToI32; - 14: map mapOfI32ToStruct; - 15: map mapOfEnumToStruct; + 11: map mapOfI32ToI32 (allow_skip_thrift_cow = true); + 12: map mapOfEnumToI32 (allow_skip_thrift_cow = true); + 13: map mapOfStringToI32 (allow_skip_thrift_cow = true); + 14: map mapOfI32ToStruct ( + allow_skip_thrift_cow = true, + ); + 15: map mapOfEnumToStruct ( + allow_skip_thrift_cow = true, + ); 16: map mapOfStringToStruct; - 17: map> mapOfI32ToListOfStructs; + 17: map> mapOfI32ToListOfStructs; // (allow_skip_thrift_cow = true); 18: set setOfI32; 19: set setOfEnum; 20: set setOfString; @@ -71,6 +75,7 @@ struct TestStruct { allow_skip_thrift_cow = true, ); 33: map> hybridMapOfMap (allow_skip_thrift_cow = true); +// 34: map> mapOfI32ToSetOfString; // (allow_skip_thrift_cow = true); } struct ParentTestStruct { diff --git a/fboss/thrift_cow/storage/tests/CowStorageTests.cpp b/fboss/thrift_cow/storage/tests/CowStorageTests.cpp index 483577fcb8d40..5592e922e3250 100644 --- a/fboss/thrift_cow/storage/tests/CowStorageTests.cpp +++ b/fboss/thrift_cow/storage/tests/CowStorageTests.cpp @@ -11,7 +11,6 @@ #include #include "fboss/fsdb/oper/ExtendedPathBuilder.h" #include "fboss/fsdb/tests/gen-cpp2-thriftpath/thriftpath_test.h" // @manual=//fboss/fsdb/tests:thriftpath_test_thrift-cpp2-thriftpath -#include "fboss/fsdb/tests/gen-cpp2/thriftpath_test_fatal_types.h" #include "fboss/fsdb/tests/gen-cpp2/thriftpath_test_types.h" using folly::dynamic; diff --git a/fboss/thrift_cow/visitors/PathVisitor.h b/fboss/thrift_cow/visitors/PathVisitor.h index fef29a4d7c8ad..2dcdf36d3a8a9 100644 --- a/fboss/thrift_cow/visitors/PathVisitor.h +++ b/fboss/thrift_cow/visitors/PathVisitor.h @@ -32,9 +32,11 @@ using PathIter = typename std::vector::const_iterator; class BasePathVisitorOperator { public: template - class SerializableReader : public Serializable { + class SerializableWrapper : public Serializable { + using TC = apache::thrift::type_class::structure; + public: - explicit SerializableReader(TType& node) : node_(node) {} + explicit SerializableWrapper(TType& node) : node_(node) {} folly::IOBuf encodeBuf(fsdb::OperProtocol proto) const override { folly::IOBufQueue queue; @@ -55,7 +57,10 @@ class BasePathVisitorOperator { return queue.moveAsValue(); } - void fromEncodedBuf(fsdb::OperProtocol, folly::IOBuf&&) override {} + void fromEncodedBuf(fsdb::OperProtocol proto, folly::IOBuf&& encoded) + override { + node_ = deserializeBuf(proto, std::move(encoded)); + } private: TType& node_; @@ -82,11 +87,8 @@ class BasePathVisitorOperator { visitTyped(Node& node, pv_detail::PathIter begin, pv_detail::PathIter end) requires(!is_cow_type_v) { - // supporting only read-only visitation - CHECK(visitReadOnly_); - // Node is not a Serializable, dispatch with wrapper - SerializableReader wrapper(node); + SerializableWrapper wrapper(node); if constexpr (std::is_const_v) { cvisit(wrapper, begin, end); cvisit(wrapper); @@ -110,8 +112,6 @@ class BasePathVisitorOperator { pv_detail::PathIter /* end */) {} virtual void cvisit(const Serializable& node) {} - - bool visitReadOnly_ = true; }; struct GetEncodedPathVisitorOperator : public BasePathVisitorOperator { @@ -137,9 +137,7 @@ struct SetEncodedPathVisitorOperator : public BasePathVisitorOperator { SetEncodedPathVisitorOperator( fsdb::OperProtocol protocol, const folly::fbstring& val) - : protocol_(protocol), val_(val) { - visitReadOnly_ = false; - } + : protocol_(protocol), val_(val) {} protected: void visit(facebook::fboss::thrift_cow::Serializable& node) override { @@ -171,7 +169,8 @@ enum class ThriftTraverseResult { }; /* - * invokeVisitorFnHelper allows us to support two different visitor signatures: + * invokeVisitorFnHelper allows us to support two different visitor + * signatures: * * 1. f(node) * 2. f(node, begin, end) @@ -198,6 +197,22 @@ struct PathVisitorImpl; using PathIter = typename std::vector::const_iterator; +template +struct VisitImplParams { + public: + VisitImplParams( + pv_detail::PathIter begin, + pv_detail::PathIter end, + const PathVisitMode& mode, + Op& op) + : begin(begin), end(end), mode(mode), op(op) {} + + pv_detail::PathIter begin; + pv_detail::PathIter end; + const PathVisitMode& mode; + Op& op; +}; + // Version of an operator that forwards operation to a lambda. This should be // used as sparingly as possible, only when node types are needed, because // every call with this templated operator is a unique instantiation of the @@ -230,32 +245,30 @@ struct LambdaPathVisitorOperator { }; template -ThriftTraverseResult visitNode( - Node& node, - PathIter begin, - PathIter end, - const PathVisitMode& mode, - Op& op) +ThriftTraverseResult +visitNode(Node& node, const VisitImplParams& params, PathIter cursor) // only enable for Node types requires(std::is_same_v) { - if (mode == PathVisitMode::FULL || begin == end) { + if (params.mode == PathVisitMode::FULL || cursor == params.end) { try { - op.visitTyped(node, begin, end); - if (begin == end) { + params.op.visitTyped(node, cursor, params.end); + if (cursor == params.end) { return ThriftTraverseResult::OK; } } catch (const std::exception& ex) { - XLOG(ERR) << "Exception while traversing path: " << ex.what(); + XLOG(ERR) << "Exception while traversing path: " + << folly::join("/", params.begin, params.end) + << " at: " << (cursor == params.end ? "(end)" : *cursor) + << ", exception: " << ex.what(); return ThriftTraverseResult::VISITOR_EXCEPTION; } } if constexpr (std::is_const_v) { - return PathVisitorImpl::visit(*node.getFields(), begin, end, mode, op); + return PathVisitorImpl::visit(*node.getFields(), params, cursor); } else { - return PathVisitorImpl::visit( - *node.writableFields(), begin, end, mode, op); + return PathVisitorImpl::visit(*node.writableFields(), params, cursor); } } @@ -267,39 +280,30 @@ struct PathVisitorImpl> { using TC = apache::thrift::type_class::set; template - static inline ThriftTraverseResult visit( - Node& node, - pv_detail::PathIter begin, - pv_detail::PathIter end, - const PathVisitMode& mode, - Op& op) + static inline ThriftTraverseResult + visit(Node& node, const VisitImplParams& params, PathIter cursor) // only enable for Node types requires(std::is_same_v) { - return pv_detail::visitNode(node, begin, end, mode, op); + return pv_detail::visitNode(node, params, cursor); } template - static ThriftTraverseResult visit( - Node& node, - pv_detail::PathIter begin, - pv_detail::PathIter end, - const PathVisitMode& mode, - Op& op) + static ThriftTraverseResult + visit(Node& /* node */, const VisitImplParams& params, PathIter cursor) // only enable for HybridNode types requires(std::is_same_v) { // TODO: implement specialization for hybrid nodes + XLOG(ERR) << "Unimplemented visitation for hybrid node: path: " + << folly::join("/", params.begin, params.end) + << " at: " << (cursor == params.end ? "(end)" : *cursor); return ThriftTraverseResult::VISITOR_EXCEPTION; } template - static ThriftTraverseResult visit( - Fields& fields, - pv_detail::PathIter begin, - pv_detail::PathIter end, - const PathVisitMode& mode, - Op& op) + static ThriftTraverseResult + visit(Fields& fields, const VisitImplParams& params, PathIter cursor) // only enable for Fields types requires( is_field_type_v && @@ -308,13 +312,12 @@ struct PathVisitorImpl> { using ValueTType = typename Fields::ValueTType; // Get value - auto token = *begin++; + auto token = *cursor++; if (auto value = tryParseKey(token)) { if (auto it = fields.find(*value); it != fields.end()) { // Recurse further - return PathVisitorImpl::visit( - **it, begin, end, mode, op); + return PathVisitorImpl::visit(**it, params, cursor); } else { return ThriftTraverseResult::NON_EXISTENT_NODE; } @@ -333,46 +336,37 @@ struct PathVisitorImpl> { using TC = apache::thrift::type_class::list; template - static inline ThriftTraverseResult visit( - Node& node, - pv_detail::PathIter begin, - pv_detail::PathIter end, - const PathVisitMode& mode, - Op& op) + static inline ThriftTraverseResult + visit(Node& node, const VisitImplParams& params, PathIter cursor) // only enable for Node types requires(std::is_same_v) { - return pv_detail::visitNode(node, begin, end, mode, op); + return pv_detail::visitNode(node, params, cursor); } template - static ThriftTraverseResult visit( - Node& node, - pv_detail::PathIter begin, - pv_detail::PathIter end, - const PathVisitMode& mode, - Op& op) + static ThriftTraverseResult + visit(Node& /* node */, const VisitImplParams& params, PathIter cursor) // only enable for HybridNode types requires(std::is_same_v) { // TODO: implement specialization for hybrid nodes + XLOG(ERR) << "Unimplemented visitation for hybrid node: path: " + << folly::join("/", params.begin, params.end) + << " at: " << (cursor == params.end ? "(end)" : *cursor); return ThriftTraverseResult::VISITOR_EXCEPTION; } template - static ThriftTraverseResult visit( - Fields& fields, - pv_detail::PathIter begin, - pv_detail::PathIter end, - const PathVisitMode& mode, - Op& op) + static ThriftTraverseResult + visit(Fields& fields, const VisitImplParams& params, PathIter cursor) // only enable for Fields types requires( is_field_type_v && std::is_same_v) { // Parse and pop token. Also check for index bound - auto index = folly::tryTo(*begin++); + auto index = folly::tryTo(*cursor++); if (index.hasError() || index.value() >= fields.size()) { return ThriftTraverseResult::INVALID_ARRAY_INDEX; } @@ -380,10 +374,10 @@ struct PathVisitorImpl> { // Recurse at a given index if constexpr (std::is_const_v) { const auto& next = *fields.ref(index.value()); - return PathVisitorImpl::visit(next, begin, end, mode, op); + return PathVisitorImpl::visit(next, params, cursor); } else { return PathVisitorImpl::visit( - *fields.ref(index.value()), begin, end, mode, op); + *fields.ref(index.value()), params, cursor); } } }; @@ -397,92 +391,81 @@ struct PathVisitorImpl< using TC = apache::thrift::type_class::map; template - static inline ThriftTraverseResult visit( - Node& node, - pv_detail::PathIter begin, - pv_detail::PathIter end, - const PathVisitMode& mode, - Op& op) + static inline ThriftTraverseResult + visit(Node& node, const VisitImplParams& params, PathIter cursor) // only enable for Node types requires(std::is_same_v) { - return pv_detail::visitNode(node, begin, end, mode, op); + return pv_detail::visitNode(node, params, cursor); } template - static inline ThriftTraverseResult visit( - Obj& tObj, - pv_detail::PathIter begin, - pv_detail::PathIter end, - const PathVisitMode& mode, - Op& op) + static inline ThriftTraverseResult + visit(Obj& tObj, const VisitImplParams& params, PathIter cursor) requires(!is_cow_type_v && !is_field_type_v) { try { - if (mode == PathVisitMode::FULL || begin == end) { - op.visitTyped(tObj, begin, end); - if (begin == end) { + if (params.mode == PathVisitMode::FULL || cursor == params.end) { + params.op.visitTyped(tObj, cursor, params.end); + if (cursor == params.end) { return ThriftTraverseResult::OK; } } - // get the value based on the key - using KeyT = typename folly::remove_cvref_t::key_type; - // Get key - auto token = *begin++; - auto key = folly::tryTo(token); - if (!key.hasValue() || tObj.find(key.value()) == tObj.end()) { - return ThriftTraverseResult::INVALID_MAP_KEY; - } - return PathVisitorImpl::visit( - tObj.at(*key), begin, end, mode, op); - } catch (const std::exception& ex) { - XLOG(ERR) << "Exception while traversing path: " << ex.what(); + XLOG(ERR) << "Exception while traversing path: " + << folly::join("/", params.begin, params.end) + << " at: " << (cursor == params.end ? "(end)" : *cursor) + << ", exception: " << ex.what(); return ThriftTraverseResult::VISITOR_EXCEPTION; } + // get the value based on the key + using KeyT = typename folly::remove_cvref_t::key_type; + // Get key + auto token = *cursor++; + auto key = folly::tryTo(token); + if (!key.hasValue() || tObj.find(key.value()) == tObj.end()) { + return ThriftTraverseResult::INVALID_MAP_KEY; + } + return PathVisitorImpl::visit( + tObj.at(*key), params, cursor); } template - static ThriftTraverseResult visit( - Node& node, - pv_detail::PathIter begin, - pv_detail::PathIter end, - const PathVisitMode& mode, - Op& op) + static ThriftTraverseResult + visit(Node& node, const VisitImplParams& params, PathIter cursor) // only enable for HybridNode types requires(std::is_same_v) { try { - if (mode == PathVisitMode::FULL || begin == end) { - op.visitTyped(node, begin, end); - if (begin == end) { + if (params.mode == PathVisitMode::FULL || cursor == params.end) { + params.op.visitTyped(node, cursor, params.end); + if (cursor == params.end) { return ThriftTraverseResult::OK; } } - // get the value based on the key - auto& tObj = node.ref(); - using KeyT = typename folly::remove_cvref_t::key_type; - // Get key - auto token = *begin++; - auto key = folly::tryTo(token); - if (!key.hasValue() || tObj.find(key.value()) == tObj.end()) { - return ThriftTraverseResult::INVALID_MAP_KEY; - } - return PathVisitorImpl::visit( - tObj.at(*key), begin, end, mode, op); } catch (const std::exception& ex) { - XLOG(ERR) << "Exception while traversing path: " << ex.what(); + XLOG(ERR) << "Exception while traversing path: " + << folly::join("/", params.begin, params.end) + << " at: " << (cursor == params.end ? "(end)" : *cursor) + << ", exception: " << ex.what(); return ThriftTraverseResult::VISITOR_EXCEPTION; } + // get the value based on the key + auto& tObj = node.ref(); + using KeyT = typename folly::remove_cvref_t::key_type; + // Get key + auto token = *cursor++; + auto key = folly::tryTo(token); + if (!key.hasValue() || tObj.find(key.value()) == tObj.end()) { + return ThriftTraverseResult::INVALID_MAP_KEY; + } + return PathVisitorImpl::visit( + tObj.at(*key), params, cursor); } template - static ThriftTraverseResult visit( - Fields& fields, - pv_detail::PathIter begin, - pv_detail::PathIter end, - const PathVisitMode& mode, - Op& op) + static ThriftTraverseResult + visit(Fields& fields, const VisitImplParams& params, PathIter cursor) // only enable for Fields types requires( is_field_type_v && @@ -491,18 +474,17 @@ struct PathVisitorImpl< using key_type = typename Fields::key_type; // Get key - auto token = *begin++; + auto token = *cursor++; if (auto key = tryParseKey(token)) { if (fields.find(key.value()) != fields.end()) { // Recurse further if constexpr (std::is_const_v) { const auto& next = *fields.ref(key.value()); - return PathVisitorImpl::visit( - next, begin, end, mode, op); + return PathVisitorImpl::visit(next, params, cursor); } else { return PathVisitorImpl::visit( - *fields.ref(key.value()), begin, end, mode, op); + *fields.ref(key.value()), params, cursor); } } else { return ThriftTraverseResult::NON_EXISTENT_NODE; @@ -521,39 +503,30 @@ struct PathVisitorImpl { using TC = apache::thrift::type_class::variant; template - static inline ThriftTraverseResult visit( - Node& node, - pv_detail::PathIter begin, - pv_detail::PathIter end, - const PathVisitMode& mode, - Op& op) + static inline ThriftTraverseResult + visit(Node& node, const VisitImplParams& params, PathIter cursor) // only enable for Node types requires(std::is_same_v) { - return pv_detail::visitNode(node, begin, end, mode, op); + return pv_detail::visitNode(node, params, cursor); } template - static ThriftTraverseResult visit( - Node& node, - pv_detail::PathIter begin, - pv_detail::PathIter end, - const PathVisitMode& mode, - Op& op) + static ThriftTraverseResult + visit(Node& /* node */, const VisitImplParams& params, PathIter cursor) // only enable for HybridNode types requires(std::is_same_v) { // TODO: implement specialization for hybrid nodes + XLOG(ERR) << "Unimplemented visitation for hybrid node: path: " + << folly::join("/", params.begin, params.end) + << " at: " << (cursor == params.end ? "(end)" : *cursor); return ThriftTraverseResult::VISITOR_EXCEPTION; } template - static ThriftTraverseResult visit( - Fields& fields, - pv_detail::PathIter begin, - pv_detail::PathIter end, - const PathVisitMode& mode, - Op& op) + static ThriftTraverseResult + visit(Fields& fields, const VisitImplParams& params, PathIter cursor) // only enable for Fields types requires( is_field_type_v && @@ -564,7 +537,7 @@ struct PathVisitorImpl { auto result = ThriftTraverseResult::INVALID_VARIANT_MEMBER; // Get key - auto key = *begin++; + auto key = *cursor++; visitMember(key, [&](auto tag) { using descriptor = typename decltype(fatal::tag_type(tag))::member; @@ -582,9 +555,9 @@ struct PathVisitorImpl { // const shared_ptr, not shared_ptr. if constexpr (std::is_const_v) { const auto& next = *child; - result = PathVisitorImpl::visit(next, begin, end, mode, op); + result = PathVisitorImpl::visit(next, params, cursor); } else { - result = PathVisitorImpl::visit(*child, begin, end, mode, op); + result = PathVisitorImpl::visit(*child, params, cursor); } }); @@ -600,61 +573,95 @@ struct PathVisitorImpl { using TC = apache::thrift::type_class::structure; template - static inline ThriftTraverseResult visit( - Node& node, - pv_detail::PathIter begin, - pv_detail::PathIter end, - const PathVisitMode& mode, - Op& op) + static inline ThriftTraverseResult + visit(Node& node, const VisitImplParams& params, PathIter cursor) // only enable for Node types requires(std::is_same_v) { - return pv_detail::visitNode(node, begin, end, mode, op); + return pv_detail::visitNode(node, params, cursor); } template - static ThriftTraverseResult visit( - Node& node, - pv_detail::PathIter begin, - pv_detail::PathIter end, - const PathVisitMode& mode, - Op& op) + static ThriftTraverseResult + visit(Node& node, const VisitImplParams& params, PathIter cursor) // only enable for HybridNode types requires(std::is_same_v) { - // TODO: implement specialization for hybrid nodes - return ThriftTraverseResult::VISITOR_EXCEPTION; + try { + if (params.mode == PathVisitMode::FULL || cursor == params.end) { + params.op.visitTyped( + *const_cast*>(&node), cursor, params.end); + if (cursor == params.end) { + return ThriftTraverseResult::OK; + } + } + } catch (const std::exception& ex) { + XLOG(ERR) << "Exception while traversing path: " + << folly::join("/", params.begin, params.end) + << " at: " << (cursor == params.end ? "(end)" : *cursor) + << ", exception: " << ex.what(); + return ThriftTraverseResult::VISITOR_EXCEPTION; + } + auto& tObj = node.ref(); + using T = typename Node::ThriftType; + // Get key + auto key = *cursor++; + // Perform linear search over all members for key + ThriftTraverseResult result = ThriftTraverseResult::INVALID_STRUCT_MEMBER; + using Members = typename apache::thrift::reflect_struct::members; + visitMember(key, [&](auto indexed) { + using member = decltype(fatal::tag_type(indexed)); + using tc = typename member::type_class; + typename member::getter getter; + + // Recurse further + auto& child = getter(tObj); + result = PathVisitorImpl::visit(child, params, cursor); + }); + + return result; } template - static inline ThriftTraverseResult visit( - Obj& tObj, - pv_detail::PathIter begin, - pv_detail::PathIter end, - const PathVisitMode& mode, - Op& op) + static inline ThriftTraverseResult + visit(Obj& tObj, const VisitImplParams& params, PathIter cursor) requires(!is_cow_type_v && !is_field_type_v) { try { - if (begin == end) { - op.visitTyped(tObj, begin, end); - } else { - throw std::runtime_error("not implemented yet"); + if (params.mode == PathVisitMode::FULL || cursor == params.end) { + params.op.visitTyped(tObj, cursor, params.end); + if (cursor == params.end) { + return ThriftTraverseResult::OK; + } } - return ThriftTraverseResult::OK; } catch (const std::exception& ex) { - XLOG(ERR) << "Exception while traversing path: " << ex.what(); + XLOG(ERR) << "Exception while traversing path: " + << folly::join("/", params.begin, params.end) + << " at: " << (cursor == params.end ? "(end)" : *cursor) + << ", exception: " << ex.what(); return ThriftTraverseResult::VISITOR_EXCEPTION; } + // Get key + auto key = *cursor++; + // Perform linear search over all members for key + ThriftTraverseResult result = ThriftTraverseResult::INVALID_STRUCT_MEMBER; + using Members = typename apache::thrift::reflect_struct::members; + visitMember(key, [&](auto indexed) { + using member = decltype(fatal::tag_type(indexed)); + using tc = typename member::type_class; + typename member::getter getter; + + // Recurse further + auto& child = getter(tObj); + result = PathVisitorImpl::visit(child, params, cursor); + }); + + return result; } template - static ThriftTraverseResult visit( - Fields& fields, - pv_detail::PathIter begin, - pv_detail::PathIter end, - const PathVisitMode& mode, - Op& op) + static ThriftTraverseResult + visit(Fields& fields, const VisitImplParams& params, PathIter cursor) // only enable for Fields types requires( is_field_type_v && @@ -663,7 +670,7 @@ struct PathVisitorImpl { using Members = typename Fields::Members; // Get key - auto key = *begin++; + auto key = *cursor++; ThriftTraverseResult result = ThriftTraverseResult::INVALID_STRUCT_MEMBER; @@ -685,9 +692,9 @@ struct PathVisitorImpl { // const shared_ptr, not shared_ptr. if constexpr (std::is_const_v) { const auto& next = *child; - result = PathVisitorImpl::visit(next, begin, end, mode, op); + result = PathVisitorImpl::visit(next, params, cursor); } else { - result = PathVisitorImpl::visit(*child, begin, end, mode, op); + result = PathVisitorImpl::visit(*child, params, cursor); } }); @@ -711,25 +718,25 @@ struct PathVisitorImpl { "Refer to thrift/lib/cpp2/reflection/reflection.h"); template - static ThriftTraverseResult visit( - Node& node, - pv_detail::PathIter begin, - pv_detail::PathIter end, - const PathVisitMode& mode, - Op& op) { - if (mode == PathVisitMode::FULL || begin == end) { + static ThriftTraverseResult + visit(Node& node, const VisitImplParams& params, PathIter cursor) { + if (params.mode == PathVisitMode::FULL || cursor == params.end) { try { // unfortunately its tough to get full const correctness for primitive - // types since we don't enforce whether or not lambdas or operators take - // a const param. Here we cast away the const and rely on primitive - // node's functions throwing an exception if the node is immutable. - op.visitTyped( - *const_cast*>(&node), begin, end); - if (begin == end) { + // types since we don't enforce whether or not lambdas or operators + // take a const param. Here we cast away the const and rely on + // primitive node's functions throwing an exception if the node is + // immutable. + params.op.visitTyped( + *const_cast*>(&node), cursor, params.end); + if (cursor == params.end) { return ThriftTraverseResult::OK; } } catch (const std::exception& ex) { - XLOG(ERR) << "Exception while traversing path: " << ex.what(); + XLOG(ERR) << "Exception while traversing path: " + << folly::join("/", params.begin, params.end) + << " at: " << (cursor == params.end ? "(end)" : *cursor) + << ", exception: " << ex.what(); return ThriftTraverseResult::VISITOR_EXCEPTION; } } @@ -758,7 +765,9 @@ struct PathVisitor { // only enable for Node types requires(std::is_same_v) { - return pv_detail::PathVisitorImpl::visit(node, begin, end, mode, op); + pv_detail::VisitImplParams> + params(begin, end, mode, op); + return pv_detail::PathVisitorImpl::visit(node, params, begin); } template @@ -771,7 +780,9 @@ struct PathVisitor { // only enable for Node types requires(std::is_same_v) { - return pv_detail::PathVisitorImpl::visit(node, begin, end, mode, op); + pv_detail::VisitImplParams params( + begin, end, mode, op); + return pv_detail::PathVisitorImpl::visit(node, params, begin); } template @@ -786,7 +797,9 @@ struct PathVisitor { is_field_type_v && std::is_same_v) { - return pv_detail::PathVisitorImpl::visit(fields, begin, end, mode, op); + pv_detail::VisitImplParams> + params(begin, end, mode, op); + return pv_detail::PathVisitorImpl::visit(fields, params, begin); } template @@ -801,7 +814,9 @@ struct PathVisitor { is_field_type_v && std::is_same_v) { - return pv_detail::PathVisitorImpl::visit(fields, begin, end, mode, op); + pv_detail::VisitImplParams params( + begin, end, mode, op); + return pv_detail::PathVisitorImpl::visit(fields, params, begin); } }; diff --git a/fboss/thrift_cow/visitors/RecurseVisitor.h b/fboss/thrift_cow/visitors/RecurseVisitor.h index c88bb565b3488..5495499299591 100644 --- a/fboss/thrift_cow/visitors/RecurseVisitor.h +++ b/fboss/thrift_cow/visitors/RecurseVisitor.h @@ -46,15 +46,15 @@ struct RecurseVisitOptions { RecurseVisitMode mode, RecurseVisitOrder order, bool outputIdPaths = false, - bool recurseIntoHybridNodes = false) + bool hybridNodeDeepTraversal = false) : mode(mode), order(order), outputIdPaths(outputIdPaths), - recurseIntoHybridNodes(recurseIntoHybridNodes) {} + hybridNodeDeepTraversal(hybridNodeDeepTraversal) {} RecurseVisitMode mode; RecurseVisitOrder order; bool outputIdPaths; - bool recurseIntoHybridNodes; + bool hybridNodeDeepTraversal; }; template @@ -160,12 +160,11 @@ struct RecurseVisitor> { typename folly::remove_cvref_t::element_type::CowType, HybridNodeType>) { - if (!options.recurseIntoHybridNodes) { - rv_detail::invokeVisitorFnHelper(traverser, node, std::forward(f)); - } else { + if (options.hybridNodeDeepTraversal) { throw std::runtime_error(folly::to( - "RecurseVisitor support for recurseIntoHybridNode in Set not implemented")); + "RecurseVisitor support for hybridNodeDeepTraversal in Set not implemented")); } + rv_detail::invokeVisitorFnHelper(traverser, node, std::forward(f)); } template @@ -219,11 +218,27 @@ struct RecurseVisitor> { typename folly::remove_cvref_t::element_type::CowType, HybridNodeType>) { - if (!options.recurseIntoHybridNodes) { - rv_detail::invokeVisitorFnHelper(traverser, node, std::forward(f)); - } else { + if (options.hybridNodeDeepTraversal) { throw std::runtime_error(folly::to( - "RecurseVisitor support for recurseIntoHybridNode in List not implemented")); + "RecurseVisitor support for hybridNodeDeepTraversal in List not implemented")); + } + auto& tObj = node->ref(); + bool visitIntermediate = options.mode == RecurseVisitMode::FULL || + options.mode == RecurseVisitMode::UNPUBLISHED || tObj.empty(); + if (visitIntermediate && + options.order == RecurseVisitOrder::PARENTS_FIRST) { + rv_detail::invokeVisitorFnHelper(traverser, node, std::forward(f)); + } + // visit list elements + for (int i = 0; i < tObj.size(); ++i) { + traverser.push(folly::to(i), TCType); + rv_detail::invokeVisitorFnHelper( + traverser, &tObj.at(i), std::forward(f)); + traverser.pop(TCType); + } + if (visitIntermediate && + options.order == RecurseVisitOrder::CHILDREN_FIRST) { + rv_detail::invokeVisitorFnHelper(traverser, node, std::forward(f)); } } @@ -278,11 +293,36 @@ struct RecurseVisitor< typename folly::remove_cvref_t::element_type::CowType, HybridNodeType>) { - if (!options.recurseIntoHybridNodes) { + if (options.hybridNodeDeepTraversal) { + throw std::runtime_error(folly::to( + "RecurseVisitor support for hybridNodeDeepTraversal in Map not implemented")); + } + auto& tObj = node->ref(); + bool visitIntermediate = options.mode == RecurseVisitMode::FULL || + options.mode == RecurseVisitMode::UNPUBLISHED || tObj.empty(); + if (visitIntermediate && + options.order == RecurseVisitOrder::PARENTS_FIRST) { rv_detail::invokeVisitorFnHelper(traverser, node, std::forward(f)); + } + // visit map entries + if constexpr (std::is_const_v) { + for (const auto& [key, val] : tObj) { + traverser.push(folly::to(key), TCType); + rv_detail::invokeVisitorFnHelper( + traverser, &val, std::forward(f)); + traverser.pop(TCType); + } } else { - throw std::runtime_error(folly::to( - "RecurseVisitor support for recurseIntoHybridNode in Map not implemented")); + for (auto& [key, val] : tObj) { + traverser.push(folly::to(key), TCType); + rv_detail::invokeVisitorFnHelper( + traverser, &val, std::forward(f)); + traverser.pop(TCType); + } + } + if (visitIntermediate && + options.order == RecurseVisitOrder::CHILDREN_FIRST) { + rv_detail::invokeVisitorFnHelper(traverser, node, std::forward(f)); } } @@ -345,12 +385,11 @@ struct RecurseVisitor { typename folly::remove_cvref_t::element_type::CowType, HybridNodeType>) { - if (!options.recurseIntoHybridNodes) { - rv_detail::invokeVisitorFnHelper(traverser, node, std::forward(f)); - } else { + if (options.hybridNodeDeepTraversal) { throw std::runtime_error(folly::to( - "RecurseVisitor support for recurseIntoHybridNode in Variant not implemented")); + "RecurseVisitor support for hybridNodeDeepTraversal in Variant not implemented")); } + rv_detail::invokeVisitorFnHelper(traverser, node, std::forward(f)); } template @@ -437,12 +476,11 @@ struct RecurseVisitor { typename folly::remove_cvref_t::element_type::CowType, HybridNodeType>) { - if (!options.recurseIntoHybridNodes) { - rv_detail::invokeVisitorFnHelper(traverser, node, std::forward(f)); - } else { + if (options.hybridNodeDeepTraversal) { throw std::runtime_error(folly::to( - "RecurseVisitor support for recurseIntoHybridNode in Struct not implemented")); + "RecurseVisitor support for hybridNodeDeepTraversal in Struct not implemented")); } + rv_detail::invokeVisitorFnHelper(traverser, node, std::forward(f)); } template diff --git a/fboss/thrift_cow/visitors/tests/BUCK b/fboss/thrift_cow/visitors/tests/BUCK index 3426e108e0fe0..959690a0446f2 100644 --- a/fboss/thrift_cow/visitors/tests/BUCK +++ b/fboss/thrift_cow/visitors/tests/BUCK @@ -31,7 +31,6 @@ cpp_unittest( ":visitor_test_utils", "//fboss/agent:switch_config-cpp2-types", "//fboss/thrift_cow/nodes:nodes", - "//fboss/thrift_cow/nodes/tests:test-cpp2-reflection", "//fboss/thrift_cow/visitors:visitors", "//folly:string", "//folly/json:dynamic", @@ -71,7 +70,6 @@ cpp_unittest( "fbsource//third-party/googletest:gmock", ":visitor_test_utils", "//fboss/thrift_cow/nodes:nodes", - "//fboss/thrift_cow/nodes/tests:test-cpp2-reflection", "//fboss/thrift_cow/visitors:visitors", "//folly:string", "//folly/json:dynamic", diff --git a/fboss/thrift_cow/visitors/tests/DeltaVisitorTests.cpp b/fboss/thrift_cow/visitors/tests/DeltaVisitorTests.cpp index 5d7e69751ce4f..ae8f2a4716aca 100644 --- a/fboss/thrift_cow/visitors/tests/DeltaVisitorTests.cpp +++ b/fboss/thrift_cow/visitors/tests/DeltaVisitorTests.cpp @@ -10,7 +10,6 @@ #include #include #include "fboss/thrift_cow/nodes/Types.h" -#include "fboss/thrift_cow/nodes/tests/gen-cpp2/test_fatal_types.h" using folly::dynamic; using namespace testing; @@ -40,6 +39,9 @@ class DeltaVisitorTests : public ::testing::Test { ThriftStructResolver, TestParams::hybridStorage>>(val); } + bool isHybridStorage() { + return TestParams::hybridStorage; + } }; TYPED_TEST_SUITE(DeltaVisitorTests, StorageTestTypes); @@ -115,6 +117,20 @@ TYPED_TEST(DeltaVisitorTests, ChangeOneFieldInContainer) { auto structB = structA; structB.mapOfEnumToStruct()->at(TestEnum::THIRD).min() = 11; + PathTagSet expected; + expected.emplace(std::make_pair("/", DeltaElemTag::NOT_MINIMAL)); + if (this->isHybridStorage()) { + expected.emplace( + std::make_pair("/mapOfEnumToStruct", DeltaElemTag::MINIMAL)); + } else { + expected.emplace( + std::make_pair("/mapOfEnumToStruct", DeltaElemTag::NOT_MINIMAL)); + expected.emplace( + std::make_pair("/mapOfEnumToStruct/3", DeltaElemTag::NOT_MINIMAL)); + expected.emplace( + std::make_pair("/mapOfEnumToStruct/3/min", DeltaElemTag::MINIMAL)); + } + auto nodeA = this->initNode(structA); auto nodeB = this->initNode(structB); @@ -129,23 +145,22 @@ TYPED_TEST(DeltaVisitorTests, ChangeOneFieldInContainer) { auto result = RootDeltaVisitor::visit( nodeA, nodeB, DeltaVisitOptions(DeltaVisitMode::PARENTS), processChange); EXPECT_EQ(result, true); - EXPECT_THAT( - differingPaths, - ::testing::ContainerEq(PathTagSet{ - std::make_pair("/", DeltaElemTag::NOT_MINIMAL), - std::make_pair("/mapOfEnumToStruct", DeltaElemTag::NOT_MINIMAL), - std::make_pair("/mapOfEnumToStruct/3", DeltaElemTag::NOT_MINIMAL), - std::make_pair("/mapOfEnumToStruct/3/min", DeltaElemTag::MINIMAL)})); + EXPECT_THAT(differingPaths, ::testing::ContainerEq(expected)); differingPaths.clear(); + expected.clear(); + if (this->isHybridStorage()) { + expected.emplace( + std::make_pair("/mapOfEnumToStruct", DeltaElemTag::MINIMAL)); + } else { + expected.emplace( + std::make_pair("/mapOfEnumToStruct/3/min", DeltaElemTag::MINIMAL)); + } result = RootDeltaVisitor::visit( nodeA, nodeB, DeltaVisitOptions(DeltaVisitMode::MINIMAL), processChange); EXPECT_EQ(result, true); - EXPECT_THAT( - differingPaths, - ::testing::ContainerEq(PathTagSet{ - std::make_pair("/mapOfEnumToStruct/3/min", DeltaElemTag::MINIMAL)})); + EXPECT_THAT(differingPaths, ::testing::ContainerEq(expected)); } TYPED_TEST(DeltaVisitorTests, SetOptional) { @@ -209,6 +224,18 @@ TYPED_TEST(DeltaVisitorTests, AddToMap) { auto nodeA = this->initNode(structA); auto nodeB = this->initNode(structB); + PathTagSet expected; + expected.emplace(std::make_pair("/", DeltaElemTag::NOT_MINIMAL)); + if (this->isHybridStorage()) { + expected.emplace( + std::make_pair("/mapOfEnumToStruct", DeltaElemTag::MINIMAL)); + } else { + expected.emplace( + std::make_pair("/mapOfEnumToStruct", DeltaElemTag::NOT_MINIMAL)); + expected.emplace( + std::make_pair("/mapOfEnumToStruct/1", DeltaElemTag::MINIMAL)); + } + PathTagSet differingPaths; auto processChange = [&](const std::vector& path, auto&& /*oldValue*/, @@ -220,40 +247,48 @@ TYPED_TEST(DeltaVisitorTests, AddToMap) { auto result = RootDeltaVisitor::visit( nodeA, nodeB, DeltaVisitOptions(DeltaVisitMode::PARENTS), processChange); EXPECT_EQ(result, true); - EXPECT_THAT( - differingPaths, - ::testing::ContainerEq(PathTagSet{ - std::make_pair("/", DeltaElemTag::NOT_MINIMAL), - std::make_pair("/mapOfEnumToStruct", DeltaElemTag::NOT_MINIMAL), - std::make_pair("/mapOfEnumToStruct/1", DeltaElemTag::MINIMAL)})); + EXPECT_THAT(differingPaths, ::testing::ContainerEq(expected)); // Test MINIMAL mode differingPaths.clear(); + expected.clear(); + if (this->isHybridStorage()) { + expected.emplace( + std::make_pair("/mapOfEnumToStruct", DeltaElemTag::MINIMAL)); + } else { + expected.emplace( + std::make_pair("/mapOfEnumToStruct/1", DeltaElemTag::MINIMAL)); + } result = RootDeltaVisitor::visit( nodeA, nodeB, DeltaVisitOptions(DeltaVisitMode::MINIMAL), processChange); EXPECT_EQ(result, true); - EXPECT_THAT( - differingPaths, - ::testing::ContainerEq(PathTagSet{ - std::make_pair("/mapOfEnumToStruct/1", DeltaElemTag::MINIMAL)})); + EXPECT_THAT(differingPaths, ::testing::ContainerEq(expected)); // Test FULL mode differingPaths.clear(); + expected.clear(); + expected.emplace(std::make_pair("/", DeltaElemTag::NOT_MINIMAL)); + if (this->isHybridStorage()) { + expected.emplace( + std::make_pair("/mapOfEnumToStruct", DeltaElemTag::MINIMAL)); + } else { + expected.emplace( + std::make_pair("/mapOfEnumToStruct", DeltaElemTag::NOT_MINIMAL)); + expected.emplace( + std::make_pair("/mapOfEnumToStruct/1", DeltaElemTag::MINIMAL)); + expected.emplace( + std::make_pair("/mapOfEnumToStruct/1/min", DeltaElemTag::NOT_MINIMAL)); + expected.emplace( + std::make_pair("/mapOfEnumToStruct/1/max", DeltaElemTag::NOT_MINIMAL)); + expected.emplace(std::make_pair( + "/mapOfEnumToStruct/1/invert", DeltaElemTag::NOT_MINIMAL)); + } result = RootDeltaVisitor::visit( nodeA, nodeB, DeltaVisitOptions(DeltaVisitMode::FULL), processChange); EXPECT_EQ(result, true); - EXPECT_THAT( - differingPaths, - ::testing::ContainerEq(PathTagSet{ - std::make_pair("/", DeltaElemTag::NOT_MINIMAL), - std::make_pair("/mapOfEnumToStruct", DeltaElemTag::NOT_MINIMAL), - std::make_pair("/mapOfEnumToStruct/1", DeltaElemTag::MINIMAL), - std::make_pair("/mapOfEnumToStruct/1/min", DeltaElemTag::NOT_MINIMAL), - std::make_pair("/mapOfEnumToStruct/1/max", DeltaElemTag::NOT_MINIMAL), - std::make_pair( - "/mapOfEnumToStruct/1/invert", DeltaElemTag::NOT_MINIMAL)})); + EXPECT_THAT(differingPaths, ::testing::ContainerEq(expected)); } TYPED_TEST(DeltaVisitorTests, UpdateMap) { @@ -275,6 +310,22 @@ TYPED_TEST(DeltaVisitorTests, UpdateMap) { auto nodeA = this->initNode(structA); auto nodeB = this->initNode(structB); + PathTagSet expected; + expected.emplace(std::make_pair("/", DeltaElemTag::NOT_MINIMAL)); + if (this->isHybridStorage()) { + expected.emplace( + std::make_pair("/mapOfEnumToStruct", DeltaElemTag::MINIMAL)); + } else { + expected.emplace( + std::make_pair("/mapOfEnumToStruct", DeltaElemTag::NOT_MINIMAL)); + expected.emplace( + std::make_pair("/mapOfEnumToStruct/1", DeltaElemTag::NOT_MINIMAL)); + expected.emplace( + std::make_pair("/mapOfEnumToStruct/1/min", DeltaElemTag::MINIMAL)); + expected.emplace( + std::make_pair("/mapOfEnumToStruct/1/max", DeltaElemTag::MINIMAL)); + } + PathTagSet differingPaths; auto processChange = [&](const std::vector& path, auto&& /*oldValue*/, @@ -286,30 +337,35 @@ TYPED_TEST(DeltaVisitorTests, UpdateMap) { auto result = RootDeltaVisitor::visit( nodeA, nodeB, DeltaVisitOptions(DeltaVisitMode::PARENTS), processChange); EXPECT_EQ(result, true); - EXPECT_THAT( - differingPaths, - ::testing::ContainerEq(PathTagSet{ - std::make_pair("/", DeltaElemTag::NOT_MINIMAL), - std::make_pair("/mapOfEnumToStruct", DeltaElemTag::NOT_MINIMAL), - std::make_pair("/mapOfEnumToStruct/1", DeltaElemTag::NOT_MINIMAL), - std::make_pair("/mapOfEnumToStruct/1/min", DeltaElemTag::MINIMAL), - std::make_pair("/mapOfEnumToStruct/1/max", DeltaElemTag::MINIMAL), - })); + EXPECT_THAT(differingPaths, ::testing::ContainerEq(expected)); // Test MINIMAL mode differingPaths.clear(); + expected.clear(); + if (this->isHybridStorage()) { + expected.emplace( + std::make_pair("/mapOfEnumToStruct", DeltaElemTag::MINIMAL)); + } else { + expected.emplace( + std::make_pair("/mapOfEnumToStruct/1/min", DeltaElemTag::MINIMAL)); + expected.emplace( + std::make_pair("/mapOfEnumToStruct/1/max", DeltaElemTag::MINIMAL)); + } result = RootDeltaVisitor::visit( nodeA, nodeB, DeltaVisitOptions(DeltaVisitMode::MINIMAL), processChange); EXPECT_EQ(result, true); - EXPECT_THAT( - differingPaths, - ::testing::ContainerEq(PathTagSet{ - std::make_pair("/mapOfEnumToStruct/1/min", DeltaElemTag::MINIMAL), - std::make_pair("/mapOfEnumToStruct/1/max", DeltaElemTag::MINIMAL)})); + EXPECT_THAT(differingPaths, ::testing::ContainerEq(expected)); // Test encoding ids differingPaths.clear(); + expected.clear(); + if (this->isHybridStorage()) { + expected.emplace(std::make_pair("/15", DeltaElemTag::MINIMAL)); + } else { + expected.emplace(std::make_pair("/15/1/1", DeltaElemTag::MINIMAL)); + expected.emplace(std::make_pair("/15/1/2", DeltaElemTag::MINIMAL)); + } result = RootDeltaVisitor::visit( nodeA, nodeB, @@ -319,27 +375,30 @@ TYPED_TEST(DeltaVisitorTests, UpdateMap) { true), processChange); EXPECT_EQ(result, true); - EXPECT_THAT( - differingPaths, - ::testing::ContainerEq(PathTagSet{ - std::make_pair("/15/1/1", DeltaElemTag::MINIMAL), - std::make_pair("/15/1/2", DeltaElemTag::MINIMAL)})); + EXPECT_THAT(differingPaths, ::testing::ContainerEq(expected)); // Test FULL mode differingPaths.clear(); + expected.clear(); + expected.emplace(std::make_pair("/", DeltaElemTag::NOT_MINIMAL)); + if (this->isHybridStorage()) { + expected.emplace( + std::make_pair("/mapOfEnumToStruct", DeltaElemTag::MINIMAL)); + } else { + expected.emplace( + std::make_pair("/mapOfEnumToStruct", DeltaElemTag::NOT_MINIMAL)); + expected.emplace( + std::make_pair("/mapOfEnumToStruct/1", DeltaElemTag::NOT_MINIMAL)); + expected.emplace( + std::make_pair("/mapOfEnumToStruct/1/min", DeltaElemTag::MINIMAL)); + expected.emplace( + std::make_pair("/mapOfEnumToStruct/1/max", DeltaElemTag::MINIMAL)); + } result = RootDeltaVisitor::visit( nodeA, nodeB, DeltaVisitOptions(DeltaVisitMode::FULL), processChange); EXPECT_EQ(result, true); - EXPECT_THAT( - differingPaths, - ::testing::ContainerEq(PathTagSet{ - std::make_pair("/", DeltaElemTag::NOT_MINIMAL), - std::make_pair("/mapOfEnumToStruct", DeltaElemTag::NOT_MINIMAL), - std::make_pair("/mapOfEnumToStruct/1", DeltaElemTag::NOT_MINIMAL), - std::make_pair("/mapOfEnumToStruct/1/min", DeltaElemTag::MINIMAL), - std::make_pair("/mapOfEnumToStruct/1/max", DeltaElemTag::MINIMAL), - })); + EXPECT_THAT(differingPaths, ::testing::ContainerEq(expected)); } TYPED_TEST(DeltaVisitorTests, DeleteFromMap) { @@ -350,6 +409,18 @@ TYPED_TEST(DeltaVisitorTests, DeleteFromMap) { auto nodeA = this->initNode(structA); auto nodeB = this->initNode(structB); + PathTagSet expected; + expected.emplace(std::make_pair("/", DeltaElemTag::NOT_MINIMAL)); + if (this->isHybridStorage()) { + expected.emplace( + std::make_pair("/mapOfEnumToStruct", DeltaElemTag::MINIMAL)); + } else { + expected.emplace( + std::make_pair("/mapOfEnumToStruct", DeltaElemTag::NOT_MINIMAL)); + expected.emplace( + std::make_pair("/mapOfEnumToStruct/3", DeltaElemTag::MINIMAL)); + } + PathTagSet differingPaths; auto processChange = [&](const std::vector& path, auto&& /*oldValue*/, @@ -361,40 +432,48 @@ TYPED_TEST(DeltaVisitorTests, DeleteFromMap) { auto result = RootDeltaVisitor::visit( nodeA, nodeB, DeltaVisitOptions(DeltaVisitMode::PARENTS), processChange); EXPECT_EQ(result, true); - EXPECT_THAT( - differingPaths, - ::testing::ContainerEq(PathTagSet{ - std::make_pair("/", DeltaElemTag::NOT_MINIMAL), - std::make_pair("/mapOfEnumToStruct", DeltaElemTag::NOT_MINIMAL), - std::make_pair("/mapOfEnumToStruct/3", DeltaElemTag::MINIMAL)})); + EXPECT_THAT(differingPaths, ::testing::ContainerEq(expected)); // Test MINIMAL mode differingPaths.clear(); + expected.clear(); + if (this->isHybridStorage()) { + expected.emplace( + std::make_pair("/mapOfEnumToStruct", DeltaElemTag::MINIMAL)); + } else { + expected.emplace( + std::make_pair("/mapOfEnumToStruct/3", DeltaElemTag::MINIMAL)); + } result = RootDeltaVisitor::visit( nodeA, nodeB, DeltaVisitOptions(DeltaVisitMode::MINIMAL), processChange); EXPECT_EQ(result, true); - EXPECT_THAT( - differingPaths, - ::testing::ContainerEq(PathTagSet{ - std::make_pair("/mapOfEnumToStruct/3", DeltaElemTag::MINIMAL)})); + EXPECT_THAT(differingPaths, ::testing::ContainerEq(expected)); // Test FULL mode differingPaths.clear(); + expected.clear(); + expected.emplace(std::make_pair("/", DeltaElemTag::NOT_MINIMAL)); + if (this->isHybridStorage()) { + expected.emplace( + std::make_pair("/mapOfEnumToStruct", DeltaElemTag::MINIMAL)); + } else { + expected.emplace( + std::make_pair("/mapOfEnumToStruct", DeltaElemTag::NOT_MINIMAL)); + expected.emplace( + std::make_pair("/mapOfEnumToStruct/3", DeltaElemTag::MINIMAL)); + expected.emplace( + std::make_pair("/mapOfEnumToStruct/3/min", DeltaElemTag::NOT_MINIMAL)); + expected.emplace( + std::make_pair("/mapOfEnumToStruct/3/max", DeltaElemTag::NOT_MINIMAL)); + expected.emplace(std::make_pair( + "/mapOfEnumToStruct/3/invert", DeltaElemTag::NOT_MINIMAL)); + } result = RootDeltaVisitor::visit( nodeA, nodeB, DeltaVisitOptions(DeltaVisitMode::FULL), processChange); EXPECT_EQ(result, true); - EXPECT_THAT( - differingPaths, - ::testing::ContainerEq(PathTagSet{ - std::make_pair("/", DeltaElemTag::NOT_MINIMAL), - std::make_pair("/mapOfEnumToStruct", DeltaElemTag::NOT_MINIMAL), - std::make_pair("/mapOfEnumToStruct/3", DeltaElemTag::MINIMAL), - std::make_pair("/mapOfEnumToStruct/3/min", DeltaElemTag::NOT_MINIMAL), - std::make_pair("/mapOfEnumToStruct/3/max", DeltaElemTag::NOT_MINIMAL), - std::make_pair( - "/mapOfEnumToStruct/3/invert", DeltaElemTag::NOT_MINIMAL)})); + EXPECT_THAT(differingPaths, ::testing::ContainerEq(expected)); } TYPED_TEST(DeltaVisitorTests, AddToList) { diff --git a/fboss/thrift_cow/visitors/tests/PatchApplierTests.cpp b/fboss/thrift_cow/visitors/tests/PatchApplierTests.cpp index ba2409422be47..7eec4ce89cbec 100644 --- a/fboss/thrift_cow/visitors/tests/PatchApplierTests.cpp +++ b/fboss/thrift_cow/visitors/tests/PatchApplierTests.cpp @@ -7,7 +7,6 @@ #include #include #include "fboss/thrift_cow/nodes/Types.h" -#include "fboss/thrift_cow/nodes/tests/gen-cpp2/test_fatal_types.h" #include "fboss/thrift_cow/nodes/tests/gen-cpp2/test_types.h" using k = facebook::fboss::test_tags::strings; diff --git a/fboss/thrift_cow/visitors/tests/PathVisitorTests.cpp b/fboss/thrift_cow/visitors/tests/PathVisitorTests.cpp index 2ebf9c1c1c971..780c79c4d6b9d 100644 --- a/fboss/thrift_cow/visitors/tests/PathVisitorTests.cpp +++ b/fboss/thrift_cow/visitors/tests/PathVisitorTests.cpp @@ -11,7 +11,6 @@ #include #include "fboss/agent/gen-cpp2/switch_config_types.h" #include "fboss/thrift_cow/nodes/Types.h" -#include "fboss/thrift_cow/nodes/tests/gen-cpp2/test_fatal_types.h" namespace facebook::fboss::thrift_cow::test { @@ -34,18 +33,42 @@ struct GetVisitedPathsOperator : public BasePathVisitorOperator { void visit(Node& node, pv_detail::PathIter begin, pv_detail::PathIter end) requires(!is_cow_type_v) { - SerializableReader dummy(node); - visit(dummy, begin, end); + SerializableWrapper wrapper(node); + visit(wrapper, begin, end); } private: std::set visited; }; -TEST(PathVisitorTests, AccessField) { +template +struct TestParams { + static constexpr auto hybridStorage = EnableHybridStorage; +}; + +using StorageTestTypes = ::testing::Types, TestParams>; + +template +class PathVisitorTests : public ::testing::Test { + public: + auto initNode(auto val) { + using RootType = std::remove_cvref_t; + return std::make_shared, + TestParams::hybridStorage>>(val); + } + bool isHybridStorage() { + return TestParams::hybridStorage; + } +}; + +TYPED_TEST_SUITE(PathVisitorTests, StorageTestTypes); + +TYPED_TEST(PathVisitorTests, AccessField) { auto structA = createSimpleTestStruct(); - auto nodeA = std::make_shared>(structA); + auto nodeA = this->initNode(structA); folly::dynamic dyn; auto processPath = pvlambda([&dyn](auto& node, auto begin, auto end) { EXPECT_EQ(begin, end); @@ -54,7 +77,8 @@ TEST(PathVisitorTests, AccessField) { std::remove_cvref_t>) { dyn = node.toFollyDynamic(); } else { - FAIL() << "unexpected non-cow visit"; + facebook::thrift::to_dynamic( + dyn, node, facebook::thrift::dynamic_format::JSON_1); } }); std::vector path{"inlineInt"}; @@ -83,10 +107,17 @@ TEST(PathVisitorTests, AccessField) { *nodeA, path.begin(), path.end(), PathVisitMode::LEAF, processPath); EXPECT_EQ(result, ThriftTraverseResult::OK); EXPECT_TRUE(dyn.asBool()); + + // mapOfI32ToStruct/20/min + path = {"mapOfI32ToStruct", "20", "min"}; + result = RootPathVisitor::visit( + *nodeA, path.begin(), path.end(), PathVisitMode::LEAF, processPath); + EXPECT_EQ(result, ThriftTraverseResult::OK); + EXPECT_EQ(400, dyn.asInt()); } TEST(PathVisitorTests, HybridMapPrimitiveAccess) { - auto structA = createHybridMapTestStruct(); + auto structA = createSimpleTestStruct(); auto nodeA = std::make_shared path = {"hybridMapOfI32ToStruct", "20", "min"}; + auto result = RootPathVisitor::visit( + *nodeA, path.begin(), path.end(), PathVisitMode::LEAF, processPath); + EXPECT_EQ(result, ThriftTraverseResult::OK); + XLOG(INFO) << folly::toJson(dyn); + EXPECT_EQ(dyn.asInt(), 400); + } + + // hybridMapOfI32ToStruct/20/max + { + std::vector path = {"hybridMapOfI32ToStruct", "20", "max"}; + auto result = RootPathVisitor::visit( + *nodeA, path.begin(), path.end(), PathVisitMode::LEAF, processPath); + EXPECT_EQ(result, ThriftTraverseResult::OK); + EXPECT_EQ(dyn.asInt(), 600); + } + + // invalid struct member + // hybridMapOfI32ToStruct/20/foo + { + std::vector path = {"hybridMapOfI32ToStruct", "20", "foo"}; + auto result = RootPathVisitor::visit( + *nodeA, path.begin(), path.end(), PathVisitMode::LEAF, processPath); + EXPECT_EQ(result, ThriftTraverseResult::INVALID_STRUCT_MEMBER); + } + // FULL visit mode + { + auto op = GetVisitedPathsOperator(); + std::vector path{"hybridMapOfI32ToStruct", "20", "max"}; + auto result = RootPathVisitor::visit( + *nodeA, path.begin(), path.end(), PathVisitMode::FULL, op); + EXPECT_EQ(result, ThriftTraverseResult::OK); + EXPECT_THAT( + op.getVisited(), + ::testing::ContainerEq(std::set{ + "/", "/20/max", "/max", "/hybridMapOfI32ToStruct/20/max"})); + } } TEST(PathVisitorTests, HybridMapOfMapAccess) { - auto structA = createHybridMapTestStruct(); + auto structA = createSimpleTestStruct(); auto nodeA = std::make_shared>(structA); @@ -269,7 +339,8 @@ TEST(PathVisitorTests, AccessFieldInContainer) { std::remove_cvref_t>) { dyn = node.toFollyDynamic(); } else { - FAIL() << "unexpected non-cow visit"; + facebook::thrift::to_dynamic( + dyn, node, facebook::thrift::dynamic_format::JSON_1); } }); std::vector path{"mapOfEnumToStruct", "3"}; @@ -291,9 +362,9 @@ TEST(PathVisitorTests, AccessFieldInContainer) { EXPECT_EQ(*got.max(), 200); } -TEST(PathVisitorTests, TraversalModeFull) { +TYPED_TEST(PathVisitorTests, TraversalModeFull) { auto structA = createSimpleTestStruct(); - auto nodeA = std::make_shared>(structA); + auto nodeA = this->initNode(structA); auto op = GetVisitedPathsOperator(); std::vector path{"mapOfEnumToStruct", "3"}; @@ -336,31 +407,86 @@ TEST(PathVisitorTests, AccessOptional) { EXPECT_TRUE(got.empty()); } -TEST(PathVisitorTests, VisitWithOperators) { +TYPED_TEST(PathVisitorTests, VisitWithOperators) { auto structA = createSimpleTestStruct(); structA.setOfI32() = {1}; - auto nodeA = std::make_shared>(structA); + auto nodeA = this->initNode(structA); - std::vector path{"inlineInt"}; + { + folly::fbstring newVal = "123"; + SetEncodedPathVisitorOperator setOp( + fsdb::OperProtocol::SIMPLE_JSON, newVal); + std::vector path{"inlineInt"}; - folly::fbstring newVal = "123"; - SetEncodedPathVisitorOperator setOp(fsdb::OperProtocol::SIMPLE_JSON, newVal); - auto result = RootPathVisitor::visit( - *nodeA, path.begin(), path.end(), PathVisitMode::LEAF, setOp); - EXPECT_EQ(result, ThriftTraverseResult::OK); + auto result = RootPathVisitor::visit( + *nodeA, path.begin(), path.end(), PathVisitMode::LEAF, setOp); + EXPECT_EQ(result, ThriftTraverseResult::OK); - GetEncodedPathVisitorOperator getOp(fsdb::OperProtocol::SIMPLE_JSON); - result = RootPathVisitor::visit( - *nodeA, path.begin(), path.end(), PathVisitMode::LEAF, getOp); - EXPECT_EQ(result, ThriftTraverseResult::OK); - EXPECT_EQ(getOp.val, "123"); + GetEncodedPathVisitorOperator getOp(fsdb::OperProtocol::SIMPLE_JSON); + result = RootPathVisitor::visit( + *nodeA, path.begin(), path.end(), PathVisitMode::LEAF, getOp); + EXPECT_EQ(result, ThriftTraverseResult::OK); + EXPECT_EQ(getOp.val, "123"); + } - std::vector path2{"setOfI32", "1"}; - result = RootPathVisitor::visit( - *nodeA, path2.begin(), path2.end(), PathVisitMode::LEAF, setOp); - // should throw trying to set an immutable node - EXPECT_EQ(result, ThriftTraverseResult::VISITOR_EXCEPTION); + { + folly::fbstring newVal = "123"; + SetEncodedPathVisitorOperator setOp( + fsdb::OperProtocol::SIMPLE_JSON, newVal); + std::vector path{"setOfI32", "1"}; + auto result = RootPathVisitor::visit( + *nodeA, path.begin(), path.end(), PathVisitMode::LEAF, setOp); + // should throw trying to set an immutable node + EXPECT_EQ(result, ThriftTraverseResult::VISITOR_EXCEPTION); + } + + { + folly::fbstring newVal = "123"; + SetEncodedPathVisitorOperator setOp( + fsdb::OperProtocol::SIMPLE_JSON, newVal); + std::vector path{"mapOfStringToI32", "test1"}; + + auto result = RootPathVisitor::visit( + *nodeA, path.begin(), path.end(), PathVisitMode::LEAF, setOp); + EXPECT_EQ(result, ThriftTraverseResult::OK); + + GetEncodedPathVisitorOperator getOp(fsdb::OperProtocol::SIMPLE_JSON); + result = RootPathVisitor::visit( + *nodeA, path.begin(), path.end(), PathVisitMode::LEAF, getOp); + EXPECT_EQ(result, ThriftTraverseResult::OK); + EXPECT_EQ(getOp.val, "123"); + } + + { + using TC = apache::thrift::type_class::structure; + std::vector path{"mapOfI32ToStruct", "20"}; + + cfg::L4PortRange newRange; + newRange.min() = 666; + newRange.max() = 999; + folly::fbstring newVal = + serialize(fsdb::OperProtocol::SIMPLE_JSON, newRange); + SetEncodedPathVisitorOperator setOp( + fsdb::OperProtocol::SIMPLE_JSON, newVal); + + auto result = RootPathVisitor::visit( + *nodeA, path.begin(), path.end(), PathVisitMode::LEAF, setOp); + EXPECT_EQ(result, ThriftTraverseResult::OK); + + GetEncodedPathVisitorOperator getOp(fsdb::OperProtocol::SIMPLE_JSON); + result = RootPathVisitor::visit( + *nodeA, path.begin(), path.end(), PathVisitMode::LEAF, getOp); + EXPECT_EQ(result, ThriftTraverseResult::OK); + EXPECT_EQ(getOp.val, newVal); + auto encoded = *getOp.val; + auto buf = + folly::IOBuf::wrapBufferAsValue(encoded.data(), encoded.length()); + auto getStruct = deserializeBuf( + fsdb::OperProtocol::SIMPLE_JSON, std::move(buf)); + EXPECT_EQ(getStruct.min(), 666); + EXPECT_EQ(getStruct.max(), 999); + } } } // namespace facebook::fboss::thrift_cow::test diff --git a/fboss/thrift_cow/visitors/tests/RecurseVisitorTests.cpp b/fboss/thrift_cow/visitors/tests/RecurseVisitorTests.cpp index 6fd931c5fa1e8..9fe6759c9ef96 100644 --- a/fboss/thrift_cow/visitors/tests/RecurseVisitorTests.cpp +++ b/fboss/thrift_cow/visitors/tests/RecurseVisitorTests.cpp @@ -84,7 +84,14 @@ TYPED_TEST(RecurseVisitorTests, TestFullRecurse) { std::map, folly::dynamic> visited; auto processPath = [&visited]( const std::vector& path, auto&& node) { - visited.emplace(std::make_pair(path, node->toFollyDynamic())); + folly::dynamic dyn; + if constexpr (is_cow_type_v) { + dyn = node->toFollyDynamic(); + } else { + facebook::thrift::to_dynamic( + dyn, *node, facebook::thrift::dynamic_format::JSON_1); + } + visited.emplace(path, dyn); }; RootRecurseVisitor::visit( @@ -100,6 +107,7 @@ TYPED_TEST(RecurseVisitorTests, TestFullRecurse) { {{"hybridSet"}, dynamic::array()}, {{"hybridUnion"}, dynamic::object()}, {{"hybridStruct"}, testDyn["hybridStruct"]}, + {{"mapOfEnumToStruct"}, testDyn["mapOfEnumToStruct"]}, {{"inlineBool"}, testDyn["inlineBool"]}, {{"inlineInt"}, testDyn["inlineInt"]}, {{"inlineString"}, testDyn["inlineString"]}, @@ -111,14 +119,6 @@ TYPED_TEST(RecurseVisitorTests, TestFullRecurse) { {{"inlineStruct", "invert"}, false}, {{"inlineVariant"}, testDyn["inlineVariant"]}, {{"inlineVariant", "inlineInt"}, testDyn["inlineVariant"]["inlineInt"]}, - {{"mapOfEnumToStruct"}, testDyn["mapOfEnumToStruct"]}, - {{"mapOfEnumToStruct", "3"}, testDyn["mapOfEnumToStruct"][3]}, - {{"mapOfEnumToStruct", "3", "min"}, - testDyn["mapOfEnumToStruct"][3]["min"]}, - {{"mapOfEnumToStruct", "3", "max"}, - testDyn["mapOfEnumToStruct"][3]["max"]}, - {{"mapOfEnumToStruct", "3", "invert"}, - testDyn["mapOfEnumToStruct"][3]["invert"]}, {{"listOfListOfPrimitives"}, dynamic::array()}, {{"listOfListOfStructs"}, dynamic::array()}, {{"listOfPrimitives"}, dynamic::array()}, @@ -135,11 +135,26 @@ TYPED_TEST(RecurseVisitorTests, TestFullRecurse) { {{"mapA"}, dynamic::object()}, {{"mapB"}, dynamic::object()}}; - std::map, folly::dynamic> hybridLeaves = { - {{"hybridStruct", "childMap"}, testDyn["hybridStruct"]["childMap"]}}; + std::map, folly::dynamic> hybridNodes = { + {{"mapOfEnumToStruct", "3"}, testDyn["mapOfEnumToStruct"][3]}}; - if (!this->isHybridStorage()) { - for (const auto& entry : hybridLeaves) { + std::map, folly::dynamic> hybridDeepLeaves = { + {{"hybridStruct", "childMap"}, testDyn["hybridStruct"]["childMap"]}, + {{"mapOfEnumToStruct"}, testDyn["mapOfEnumToStruct"]}, + {{"mapOfEnumToStruct", "3"}, testDyn["mapOfEnumToStruct"][3]}, + {{"mapOfEnumToStruct", "3", "min"}, + testDyn["mapOfEnumToStruct"][3]["min"]}, + {{"mapOfEnumToStruct", "3", "max"}, + testDyn["mapOfEnumToStruct"][3]["max"]}, + {{"mapOfEnumToStruct", "3", "invert"}, + testDyn["mapOfEnumToStruct"][3]["invert"]}}; + + if (this->isHybridStorage()) { + for (const auto& entry : hybridNodes) { + expected.insert(entry); + } + } else { + for (const auto& entry : hybridDeepLeaves) { expected.insert(entry); } } @@ -159,7 +174,14 @@ TYPED_TEST(RecurseVisitorTests, TestLeafRecurse) { std::map, folly::dynamic> visited; auto processPath = [&visited]( const std::vector& path, auto&& node) { - visited.emplace(std::make_pair(path, node->toFollyDynamic())); + folly::dynamic dyn; + if constexpr (is_cow_type_v) { + dyn = node->toFollyDynamic(); + } else { + facebook::thrift::to_dynamic( + dyn, *node, facebook::thrift::dynamic_format::JSON_1); + } + visited.emplace(path, dyn); }; RootRecurseVisitor::visit(nodeA, RecurseVisitMode::LEAVES, processPath); @@ -173,7 +195,9 @@ TYPED_TEST(RecurseVisitorTests, TestLeafRecurse) { {{"inlineStruct", "min"}, 10}, {{"inlineStruct", "max"}, 20}, {{"inlineStruct", "invert"}, false}, - {{"inlineVariant", "inlineInt"}, testDyn["inlineVariant"]["inlineInt"]}, + {{"inlineVariant", "inlineInt"}, testDyn["inlineVariant"]["inlineInt"]}}; + + std::map, folly::dynamic> hybridDeepLeaves = { {{"mapOfEnumToStruct", "3", "min"}, testDyn["mapOfEnumToStruct"][3]["min"]}, {{"mapOfEnumToStruct", "3", "max"}, @@ -182,6 +206,13 @@ TYPED_TEST(RecurseVisitorTests, TestLeafRecurse) { testDyn["mapOfEnumToStruct"][3]["invert"]}}; std::map, folly::dynamic> hybridNodes = { + {{"mapOfStringToI32"}, testDyn["mapOfStringToI32"]}, + {{"mapOfI32ToStruct"}, testDyn["mapOfI32ToStruct"]}, + {{"mapOfEnumToI32"}, testDyn["mapOfEnumToI32"]}, + {{"mapOfI32ToI32"}, testDyn["mapOfI32ToI32"]}, + // {{"mapOfI32ToListOfStructs"}, testDyn["mapOfI32ToListOfStructs"]}, + // {{"mapOfI32ToSetOfString"}, testDyn["mapOfI32ToSetOfString"]}, + {{"mapOfEnumToStruct", "3"}, testDyn["mapOfEnumToStruct"][3]}, {{"hybridMap"}, testDyn["hybridMap"]}, {{"hybridMapOfI32ToStruct"}, testDyn["hybridMapOfI32ToStruct"]}, {{"hybridMapOfMap"}, testDyn["hybridMapOfMap"]}, @@ -194,6 +225,10 @@ TYPED_TEST(RecurseVisitorTests, TestLeafRecurse) { for (const auto& entry : hybridNodes) { expected.insert(entry); } + } else { + for (const auto& entry : hybridDeepLeaves) { + expected.insert(entry); + } } EXPECT_EQ(visited.size(), expected.size()); @@ -218,24 +253,38 @@ TYPED_TEST(RecurseVisitorTests, TestLeafRecurse) { {{"4", "1"}, 10}, {{"4", "2"}, 20}, {{"4", "3"}, false}, - {{"21", "2"}, testDyn["inlineVariant"]["inlineInt"]}, + {{"21", "2"}, testDyn["inlineVariant"]["inlineInt"]}}; + + hybridDeepLeaves = { {{"15", "3", "1"}, testDyn["mapOfEnumToStruct"][3]["min"]}, {{"15", "3", "2"}, testDyn["mapOfEnumToStruct"][3]["max"]}, {{"15", "3", "3"}, testDyn["mapOfEnumToStruct"][3]["invert"]}}; hybridNodes = { + {{"11"}, testDyn["mapOfI32ToI32"]}, + {{"12"}, testDyn["mapOfEnumToI32"]}, + {{"13"}, testDyn["mapOfStringToI32"]}, + {{"14"}, testDyn["mapOfI32ToStruct"]}, + {{"15", "3"}, testDyn["mapOfEnumToStruct"][3]}, + // {{"17"}, testDyn["mapOfI32ToListOfStructs"]}, {{"27"}, testDyn["hybridMap"]}, {{"28"}, testDyn["hybridList"]}, {{"29"}, testDyn["hybridSet"]}, {{"30"}, testDyn["hybridUnion"]}, {{"31"}, testDyn["hybridStruct"]}, {{"32"}, testDyn["hybridMapOfI32ToStruct"]}, - {{"33"}, testDyn["hybridMapOfMap"]}}; + {{"33"}, testDyn["hybridMapOfMap"]}, + // {{"34"}, testDyn["mapOfI32ToSetOfString"]} + }; if (this->isHybridStorage()) { for (const auto& entry : hybridNodes) { expected.insert(entry); } + } else { + for (const auto& entry : hybridDeepLeaves) { + expected.insert(entry); + } } EXPECT_EQ(visited.size(), expected.size()); diff --git a/fboss/thrift_cow/visitors/tests/VisitorTestUtils.cpp b/fboss/thrift_cow/visitors/tests/VisitorTestUtils.cpp index e9ea6fafd2bf9..763d85fbff64d 100644 --- a/fboss/thrift_cow/visitors/tests/VisitorTestUtils.cpp +++ b/fboss/thrift_cow/visitors/tests/VisitorTestUtils.cpp @@ -7,22 +7,6 @@ namespace facebook::fboss::thrift_cow { TestStruct createSimpleTestStruct() { - using folly::dynamic; - dynamic testDyn = dynamic::object("inlineBool", true)("inlineInt", 54)( - "inlineString", "testname")("optionalString", "bla")( - "inlineStruct", dynamic::object("min", 10)("max", 20))( - "inlineVariant", dynamic::object("inlineInt", 99))( - "mapOfEnumToStruct", - dynamic::object("3", dynamic::object("min", 100)("max", 200)))( - "mapOfI32ToI32", dynamic::object(1, 1))( - "cowMap", dynamic::object(1, true))( - "hybridMap", dynamic::object(1, true)); - - return facebook::thrift::from_dynamic( - testDyn, facebook::thrift::dynamic_format::JSON_1); -} - -TestStruct createHybridMapTestStruct() { using folly::dynamic; dynamic testDyn = dynamic::object("inlineBool", true)("inlineInt", 54)( "inlineString", "testname")("optionalString", "bla")( @@ -35,7 +19,13 @@ TestStruct createHybridMapTestStruct() { "hybridMap", dynamic::object(1, true))( "hybridMapOfI32ToStruct", dynamic::object(20, dynamic::object("min", 400)("max", 600)))( - "hybridMapOfMap", dynamic::object(10, dynamic::object(20, 30))); + "hybridMapOfMap", dynamic::object(10, dynamic::object(20, 30)))( + "hybridStruct", + dynamic::object( + "childMap", dynamic::object(10, true)(20, false)(50, false)))( + "mapOfStringToI32", dynamic::object("test1", 1)("test2", 2))( + "mapOfI32ToStruct", + dynamic::object(20, dynamic::object("min", 400)("max", 600))); return facebook::thrift::from_dynamic( testDyn, facebook::thrift::dynamic_format::JSON_1); diff --git a/fboss/thrift_cow/visitors/tests/VisitorTestUtils.h b/fboss/thrift_cow/visitors/tests/VisitorTestUtils.h index 7ce40ca918de3..063fa0338382e 100644 --- a/fboss/thrift_cow/visitors/tests/VisitorTestUtils.h +++ b/fboss/thrift_cow/visitors/tests/VisitorTestUtils.h @@ -18,8 +18,6 @@ using L4PortRangeMembers = TestStruct createSimpleTestStruct(); -TestStruct createHybridMapTestStruct(); - template inline ThriftTraverseResult visitPath( Node& node, diff --git a/fboss/util/BUCK b/fboss/util/BUCK index 645ba69d15e3f..a765921b08284 100644 --- a/fboss/util/BUCK +++ b/fboss/util/BUCK @@ -87,7 +87,6 @@ cpp_library( "//fboss/lib/fpga/facebook/fuji:fuji_container", "//fboss/lib/fpga/facebook/yamp:yamp_i2c", "//fboss/lib/i2c/facebook/fuji:fuji_i2c", - "//fboss/lib/platforms:platform_mode", "//fboss/lib/platforms:product-info", "//fboss/lib/usb:i2-api", "//fboss/lib/usb:wedge_i2c", @@ -102,7 +101,6 @@ cpp_library( "//folly:memory", "//folly:singleton", "//folly/gen:base", - "//folly/init:init", "//folly/io/async:async_base", "//folly/logging:logging", "//thrift/lib/cpp/util:enum_utils", diff --git a/fboss/util/CredoDebugShell.cpp b/fboss/util/CredoDebugShell.cpp index 22da8d9bd50eb..5e879be6d13cd 100644 --- a/fboss/util/CredoDebugShell.cpp +++ b/fboss/util/CredoDebugShell.cpp @@ -6,7 +6,6 @@ #include #include #include -#include #include #include diff --git a/fboss/util/qsfp_util_main.cpp b/fboss/util/qsfp_util_main.cpp index 0bc6b499b6c66..3c7f990d43bf7 100644 --- a/fboss/util/qsfp_util_main.cpp +++ b/fboss/util/qsfp_util_main.cpp @@ -3,7 +3,6 @@ #include "fboss/lib/thrift_service_client/ThriftServiceClient.h" #include "fboss/qsfp_service/platforms/wedge/WedgeManager.h" // @manual=//fboss/qsfp_service/platforms/wedge:wedge-platform-default #include "fboss/qsfp_service/platforms/wedge/WedgeManagerInit.h" // @manual=//fboss/qsfp_service/platforms/wedge:wedge-platform-default -#include "fboss/util/qsfp/QsfpServiceDetector.h" #include "fboss/util/qsfp/QsfpUtilContainer.h" #include "fboss/util/qsfp/QsfpUtilTx.h" #include "fboss/util/wedge_qsfp_util.h" diff --git a/fboss/util/wedge_qsfp_util.cpp b/fboss/util/wedge_qsfp_util.cpp index 768c3dbcc742f..2db9963913119 100644 --- a/fboss/util/wedge_qsfp_util.cpp +++ b/fboss/util/wedge_qsfp_util.cpp @@ -2,7 +2,6 @@ #include "fboss/util/wedge_qsfp_util.h" #include "fboss/lib/usb/GalaxyI2CBus.h" -#include "fboss/lib/usb/Wedge100I2CBus.h" #include "fboss/lib/usb/WedgeI2CBus.h" #include "fboss/qsfp_service/module/QsfpModule.h" @@ -21,7 +20,6 @@ #include #include #include -#include #include #include #include