├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── binaries_out_lists ├── data_processing.txt ├── emp_games.txt ├── pid.txt └── validation.txt ├── build-docker-tee-experiment.sh ├── build-docker.sh ├── docker ├── data_processing │ ├── CMakeLists.txt │ ├── Dockerfile.ubuntu │ └── run-attribution_id_combiner-test.sh ├── emp_games │ ├── CMakeLists.txt │ ├── Dockerfile.ubuntu │ ├── common.cmake │ ├── perf_tools.cmake │ ├── run-attribution-sample.sh │ ├── run-lift-calculator-sample.sh │ └── run-shard-aggregator-sample.sh ├── make_and_install_binary.sh ├── onedocker │ ├── prod │ │ ├── Dockerfile.ubuntu │ │ ├── opa_workflows │ │ │ └── tls_workflow.json │ │ ├── pip_requirements.txt │ │ └── plugins │ │ │ ├── tls_cert_installer.py │ │ │ └── write_routing.sh │ └── test │ │ └── Dockerfile.ubuntu ├── pce_deployment │ ├── Dockerfile.ubuntu │ └── gcp │ │ └── Dockerfile.ubuntu └── tee_experiment │ ├── CMakeLists.txt │ ├── Dockerfile.ubuntu │ ├── README.md │ ├── run-lift-on-tee.sh │ └── sample_input │ ├── partner_1k_0 │ └── publisher_1k_0 ├── docs ├── PCS_Partner_Playbook_UI.pdf ├── PCS_Partner_Playbook_version_approved_for_online_publishing_for_non_NDA_users.pdf ├── PrivateLift.md ├── PrivateRCT.md ├── Private_Computation_AWS_pre_check_questions.pdf ├── Private_Computation_Business_pre_check_questions.pdf ├── Private_Computation_Guide_to_answering_AWS_pre_check_questions.pdf ├── RCT.jpg ├── README.md ├── RoP.jpg ├── T.jpg ├── changelog.md ├── data_migration_between_buckets.pdf ├── lift.jpg ├── privatelift.jpg ├── security_reviews │ └── NCC_Group_MetaPlatformsInc_E004159_DLOE_Report_2022-08-05_DLOE-Multi-Key-Private-ID.pdf └── semi_auto_data_ingestion_instruction.pdf ├── extract-docker-binaries.sh ├── fbpcs ├── CHANGELOG.md ├── Dockerfile ├── __init__.py ├── bolt │ ├── bolt_checkpoint.py │ ├── bolt_client.py │ ├── bolt_hook.py │ ├── bolt_job.py │ ├── bolt_job_summary.py │ ├── bolt_runner.py │ ├── bolt_summary.py │ ├── bolt_test.yml │ ├── constants.py │ ├── exceptions.py │ ├── hooks │ │ ├── __init__.py │ │ ├── exception_thrower.py │ │ ├── stage_canceller.py │ │ └── test │ │ │ ├── test_exception_thrower.py │ │ │ └── test_stage_canceller.py │ ├── manual_test.yml │ ├── oss_bolt_pcs.py │ ├── read_config.py │ └── test │ │ ├── test_bolt_hook.py │ │ ├── test_bolt_job.py │ │ ├── test_bolt_job_summary.py │ │ ├── test_bolt_runner.py │ │ ├── test_bolt_summary.py │ │ └── test_oss_bolt_pcs.py ├── common │ ├── __init__.py │ ├── entity │ │ ├── __init__.py │ │ ├── dataclasses_hooks.py │ │ ├── dataclasses_mutability.py │ │ ├── exceptions.py │ │ ├── frozen_field_hook.py │ │ ├── generic_hook.py │ │ ├── instance_base.py │ │ ├── pcs_container_instance.py │ │ ├── range_hook.py │ │ ├── stage_state_instance.py │ │ ├── update_generic_hook.py │ │ └── update_other_field_hook.py │ ├── feature │ │ └── pcs_feature_gate_utils.py │ ├── repository │ │ ├── __init__.py │ │ └── instance_local.py │ ├── service │ │ ├── __init__.py │ │ ├── graphapi_trace_logging_service.py │ │ ├── input_data_service.py │ │ ├── metric_service.py │ │ ├── pcs_container_service.py │ │ ├── pii_scrubber.py │ │ ├── retry_handler.py │ │ ├── secret_scrubber.py │ │ ├── simple_metric_service.py │ │ ├── simple_trace_logging_service.py │ │ ├── test │ │ │ ├── test_graphapi_trace_logging_service.py │ │ │ ├── test_input_data_service.py │ │ │ ├── test_pcs_container_service.py │ │ │ ├── test_pii_scrubber.py │ │ │ ├── test_retry_handler.py │ │ │ ├── test_secret_scrubber.py │ │ │ ├── test_simple_metric_service.py │ │ │ ├── test_simple_trace_logging_service.py │ │ │ ├── test_trace_logging_registry.py │ │ │ ├── test_trace_logging_service.py │ │ │ └── test_write_checkpoint.py │ │ ├── trace_logging_registry.py │ │ ├── trace_logging_service.py │ │ └── write_checkpoint.py │ └── tests │ │ ├── entity │ │ ├── test_comprehensive_hooks_and_mutability.py │ │ ├── test_frozen_field_hook.py │ │ ├── test_generic_hook.py │ │ ├── test_instance_base_mutability.py │ │ ├── test_range_hook.py │ │ ├── test_update_generic_hook.py │ │ └── test_update_other_field_hook.py │ │ ├── repository │ │ └── test_instance_local.py │ │ └── test_stage_state_instance.py ├── data_processing │ ├── README.md │ ├── __init__.py │ ├── attribution_id_combiner │ │ ├── AttributionIdSpineCombiner.cpp │ │ ├── AttributionIdSpineCombinerOptions.cpp │ │ ├── AttributionIdSpineCombinerOptions.h │ │ ├── AttributionIdSpineCombinerUtil.h │ │ ├── AttributionIdSpineFileCombiner.cpp │ │ ├── AttributionIdSpineFileCombiner.h │ │ ├── AttributionIdSpineFileCombinerTest.cpp │ │ ├── AttributionStrategy.cpp │ │ ├── AttributionStrategy.h │ │ ├── MrPidAttributionIdCombiner.cpp │ │ ├── MrPidAttributionIdCombiner.h │ │ ├── MrPidAttributionIdCombinerTest.cpp │ │ ├── PidAttributionIdCombiner.cpp │ │ ├── PidAttributionIdCombiner.h │ │ └── PidAttributionIdCombinerTest.cpp │ ├── common │ │ ├── FilepathHelpers.cpp │ │ ├── FilepathHelpers.h │ │ ├── Logging.cpp │ │ ├── Logging.h │ │ └── tests │ │ │ └── LoggingTests.cpp │ ├── hash_slinging_salter │ │ ├── HashSlingingSalter.cpp │ │ ├── HashSlingingSalter.hpp │ │ ├── base64.cpp │ │ ├── base64.h │ │ └── test │ │ │ └── HashSlingingSalterTest.cpp │ ├── id_combiner │ │ ├── AddPaddingToCols.cpp │ │ ├── AddPaddingToCols.h │ │ ├── DataPreparationHelpers.cpp │ │ ├── DataPreparationHelpers.h │ │ ├── DataValidation.cpp │ │ ├── DataValidation.h │ │ ├── GroupBy.cpp │ │ ├── GroupBy.h │ │ ├── IdInsert.cpp │ │ ├── IdInsert.h │ │ ├── IdSwap.cpp │ │ ├── IdSwap.h │ │ ├── IdSwapMultiKey.cpp │ │ ├── IdSwapMultiKey.h │ │ ├── SortIds.cpp │ │ ├── SortIds.h │ │ ├── SortIntegralValues.cpp │ │ ├── SortIntegralValues.h │ │ └── test │ │ │ ├── AddPaddingToColsTest.cpp │ │ │ ├── DataValidationTest.cpp │ │ │ ├── GroupByTest.cpp │ │ │ ├── IdInsertTest.cpp │ │ │ ├── IdSwapMultiKeyTest.cpp │ │ │ ├── IdSwapTest.cpp │ │ │ ├── SortIdsTest.cpp │ │ │ └── SortIntegralValuesTest.cpp │ ├── lift_id_combiner │ │ ├── LiftIdSpineCombiner.cpp │ │ ├── LiftIdSpineCombinerOptions.cpp │ │ ├── LiftIdSpineCombinerOptions.h │ │ ├── LiftIdSpineFileCombiner.cpp │ │ ├── LiftIdSpineFileCombiner.h │ │ ├── LiftIdSpineMultiConversionInput.h │ │ ├── LiftStrategy.cpp │ │ ├── LiftStrategy.h │ │ ├── MrPidLiftIdCombiner.cpp │ │ ├── MrPidLiftIdCombiner.h │ │ ├── MrPidLiftIdCombinerTest.cpp │ │ ├── PidLiftIdCombiner.cpp │ │ ├── PidLiftIdCombiner.h │ │ ├── PidLiftIdCombinerTest.cpp │ │ └── test │ │ │ └── LiftIdSpineFileCombinerTest.cpp │ ├── load_testing_utils │ │ ├── FakeDataGenerator.cpp │ │ ├── FakeDataGenerator.h │ │ └── GenFakeData.cpp │ ├── pid_preparer │ │ ├── UnionPIDDataPreparer.cpp │ │ ├── UnionPIDDataPreparer.h │ │ ├── UnionPIDDataPreparerTest.cpp │ │ ├── __init__.py │ │ ├── preparer.py │ │ ├── union_pid_data_preparer.cpp │ │ └── union_pid_preparer_cpp.py │ ├── private_id_dfca_id_combiner │ │ ├── MrPidPrivateIdDfcaIdCombiner.cpp │ │ ├── MrPidPrivateIdDfcaIdCombiner.h │ │ ├── PidPrivateIdDfcaIdCombiner.cpp │ │ ├── PidPrivateIdDfcaIdCombiner.h │ │ ├── PrivateIdDfcaIdSpineCombiner.cpp │ │ ├── PrivateIdDfcaIdSpineCombinerOptions.cpp │ │ ├── PrivateIdDfcaIdSpineCombinerOptions.h │ │ ├── PrivateIdDfcaIdSpineFileCombiner.cpp │ │ ├── PrivateIdDfcaIdSpineFileCombiner.h │ │ ├── PrivateIdDfcaIdSpineFileCombinerTest.cpp │ │ ├── PrivateIdDfcaStrategy.cpp │ │ └── PrivateIdDfcaStrategy.h │ ├── service │ │ ├── id_spine_combiner.py │ │ ├── pid_prepare_binary_service.py │ │ ├── pid_run_protocol_binary_service.py │ │ └── sharding_service.py │ ├── sharding │ │ ├── GenericSharder.cpp │ │ ├── GenericSharder.h │ │ ├── HashBasedSharder.cpp │ │ ├── HashBasedSharder.h │ │ ├── RoundRobinBasedSharder.cpp │ │ ├── RoundRobinBasedSharder.h │ │ ├── SecureRandomShard.cpp │ │ ├── SecureRandomSharder.cpp │ │ ├── SecureRandomSharder.h │ │ ├── Sharding.cpp │ │ ├── Sharding.h │ │ ├── __init__.py │ │ ├── shard.cpp │ │ ├── shard_pid.cpp │ │ └── test │ │ │ ├── GenericSharderTest.cpp │ │ │ ├── HashBasedSharderTest.cpp │ │ │ ├── RoundRobinBasedSharderTest.cpp │ │ │ ├── SecureRandomSharderTest.cpp │ │ │ └── ShardingTest.cpp │ ├── test │ │ ├── attribution_id_combiner │ │ │ ├── partner_corrupted_input.csv_0 │ │ │ ├── partner_corrupted_input.csv_1 │ │ │ ├── partner_input.csv_0 │ │ │ ├── partner_input.csv_1 │ │ │ ├── spine_input.csv_0 │ │ │ └── spine_input.csv_1 │ │ └── load_testing_utils │ │ │ └── TestFakeDataGenerator.cpp │ └── test_utils │ │ ├── FileIOTestUtils.cpp │ │ └── FileIOTestUtils.h ├── emp_games │ ├── README.md │ ├── attribution │ │ ├── Aggregator.h │ │ ├── AttributionMetrics.h │ │ ├── AttributionRule.h │ │ ├── Constants.h │ │ ├── Conversion.h │ │ ├── Debug.h │ │ ├── Touchpoint.h │ │ ├── decoupled_aggregation │ │ │ ├── Aggregation.hpp │ │ │ ├── AggregationApp.h │ │ │ ├── AggregationGame.h │ │ │ ├── AggregationMetrics.cpp │ │ │ ├── AggregationMetrics.h │ │ │ ├── AggregationOptions.cpp │ │ │ ├── AggregationOptions.h │ │ │ ├── Aggregator.cpp │ │ │ ├── Aggregator.h │ │ │ ├── AttributionResult.h │ │ │ ├── Constants.h │ │ │ ├── ConversionMetadata.h │ │ │ ├── MainUtil.h │ │ │ ├── TouchPointMetadata.h │ │ │ ├── main.cpp │ │ │ ├── test │ │ │ │ ├── AggregationAppTest.cpp │ │ │ │ ├── AggregationTestUtils.h │ │ │ │ ├── AttributionResultTest.cpp │ │ │ │ ├── ConversionMetadataTest.cpp │ │ │ │ ├── MainUtilTest.cpp │ │ │ │ ├── TouchpointMetadataTest.cpp │ │ │ │ └── test_correctness │ │ │ │ │ ├── last_click_1d.measurement.json │ │ │ │ │ ├── last_click_1d.partner.csv │ │ │ │ │ ├── last_click_1d.partner.json │ │ │ │ │ ├── last_click_1d.publisher.csv │ │ │ │ │ ├── last_click_1d.publisher.json │ │ │ │ │ ├── last_touch_1d.measurement.json │ │ │ │ │ ├── last_touch_1d.partner.csv │ │ │ │ │ ├── last_touch_1d.partner.json │ │ │ │ │ ├── last_touch_1d.publisher.csv │ │ │ │ │ └── last_touch_1d.publisher.json │ │ │ └── testData │ │ │ │ ├── attributionResult_partner.json │ │ │ │ └── attributionResult_publisher.json │ │ ├── decoupled_attribution │ │ │ ├── Attribution.hpp │ │ │ ├── AttributionApp.h │ │ │ ├── AttributionMetrics.cpp │ │ │ ├── AttributionMetrics.h │ │ │ ├── AttributionOptions.cpp │ │ │ ├── AttributionOptions.h │ │ │ ├── AttributionOutput.cpp │ │ │ ├── AttributionOutput.h │ │ │ ├── AttributionRule.cpp │ │ │ ├── AttributionRule.h │ │ │ ├── Constants.h │ │ │ ├── Conversion.h │ │ │ ├── Debug.h │ │ │ ├── MainUtil.h │ │ │ ├── Touchpoint.h │ │ │ ├── main.cpp │ │ │ ├── test │ │ │ │ ├── AttributionAppTest.cpp │ │ │ │ ├── AttributionRuleTest.cpp │ │ │ │ ├── AttributionTestUtils.h │ │ │ │ ├── ConversionTest.cpp │ │ │ │ ├── MainUtilTest.cpp │ │ │ │ ├── TouchpointTest.cpp │ │ │ │ └── test_correctness │ │ │ │ │ ├── last_click_1d.json │ │ │ │ │ ├── last_click_1d.partner.csv │ │ │ │ │ ├── last_click_1d.publisher.csv │ │ │ │ │ ├── last_touch_1d.json │ │ │ │ │ ├── last_touch_1d.partner.csv │ │ │ │ │ └── last_touch_1d.publisher.csv │ │ │ └── testdata │ │ │ │ ├── partner_1.csv │ │ │ │ └── publisher_1.csv │ │ ├── shard_aggregator │ │ │ ├── AggMetrics.cpp │ │ │ ├── AggMetrics.h │ │ │ ├── AggMetricsTest.cpp │ │ │ ├── AggMetricsThresholdCheckers.cpp │ │ │ ├── AggMetricsThresholdCheckers.h │ │ │ ├── MainUtil.h │ │ │ ├── ShardAggregatorApp.cpp │ │ │ ├── ShardAggregatorApp.h │ │ │ ├── ShardAggregatorAppTest.cpp │ │ │ ├── ShardAggregatorGame.h │ │ │ ├── ShardAggregatorGameTest.cpp │ │ │ ├── ShardAggregatorValidation.cpp │ │ │ ├── ShardAggregatorValidation.h │ │ │ ├── ShardAggregatorValidationTest.cpp │ │ │ ├── main.cpp │ │ │ └── test │ │ │ │ ├── ad_object_format │ │ │ │ ├── compressed_mapping.json │ │ │ │ ├── expected_partner_shard_aggregation_out.json │ │ │ │ ├── expected_publisher_shard_aggregation_out.json │ │ │ │ ├── partner_attribution_correctness_clickonly_clicktouch_out.json_0 │ │ │ │ ├── partner_attribution_correctness_clickonly_clicktouch_out.json_1 │ │ │ │ ├── partner_attribution_correctness_clickonly_touchonly_multiple_scenarios_out.json_0 │ │ │ │ ├── partner_attribution_correctness_clickonly_touchonly_multiple_scenarios_out.json_1 │ │ │ │ ├── partner_attribution_correctness_clickonly_touchonly_out.json_0 │ │ │ │ ├── partner_attribution_correctness_clickonly_touchonly_out.json_1 │ │ │ │ ├── partner_attribution_correctness_clicktouch_clicktouch_out.json_0 │ │ │ │ ├── partner_attribution_correctness_clicktouch_clicktouch_out.json_1 │ │ │ │ ├── partner_attribution_correctness_clicktouch_touchonly_out.json_0 │ │ │ │ ├── partner_attribution_correctness_clicktouch_touchonly_out.json_1 │ │ │ │ ├── partner_attribution_correctness_kanonymity_allfail_out.json_0 │ │ │ │ ├── partner_attribution_correctness_kanonymity_allfail_out.json_1 │ │ │ │ ├── partner_attribution_correctness_kanonymity_allpass_out.json_0 │ │ │ │ ├── partner_attribution_correctness_kanonymity_allpass_out.json_1 │ │ │ │ ├── partner_attribution_correctness_kanonymity_mix_out.json_0 │ │ │ │ ├── partner_attribution_correctness_kanonymity_mix_out.json_1 │ │ │ │ ├── partner_attribution_correctness_mmt_nooverlap_out.json_0 │ │ │ │ ├── partner_attribution_correctness_mmt_nooverlap_out.json_1 │ │ │ │ ├── partner_attribution_correctness_mmt_overlap_out.json_0 │ │ │ │ ├── partner_attribution_correctness_mmt_overlap_out.json_1 │ │ │ │ ├── partner_attribution_correctness_mmtonly_pcmonly_out.json_0 │ │ │ │ ├── partner_attribution_correctness_mmtonly_pcmonly_out.json_1 │ │ │ │ ├── partner_attribution_correctness_mmtpcm_mmtonly_out.json_0 │ │ │ │ ├── partner_attribution_correctness_mmtpcm_mmtonly_out.json_1 │ │ │ │ ├── partner_attribution_correctness_mmtpcm_mmtpcm_out.json_0 │ │ │ │ ├── partner_attribution_correctness_mmtpcm_mmtpcm_out.json_1 │ │ │ │ ├── partner_attribution_correctness_mmtpcm_pcmonly_out.json_0 │ │ │ │ ├── partner_attribution_correctness_mmtpcm_pcmonly_out.json_1 │ │ │ │ ├── partner_attribution_correctness_old_out.json_0 │ │ │ │ ├── partner_attribution_correctness_old_out.json_1 │ │ │ │ ├── partner_attribution_out.json_0 │ │ │ │ ├── partner_attribution_out.json_1 │ │ │ │ ├── publisher_attribution_correctness_clickonly_clicktouch_out.json_0 │ │ │ │ ├── publisher_attribution_correctness_clickonly_clicktouch_out.json_1 │ │ │ │ ├── publisher_attribution_correctness_clickonly_touchonly_multiple_scenarios_out.json_0 │ │ │ │ ├── publisher_attribution_correctness_clickonly_touchonly_multiple_scenarios_out.json_1 │ │ │ │ ├── publisher_attribution_correctness_clickonly_touchonly_out.json_0 │ │ │ │ ├── publisher_attribution_correctness_clickonly_touchonly_out.json_1 │ │ │ │ ├── publisher_attribution_correctness_clicktouch_clicktouch_out.json_0 │ │ │ │ ├── publisher_attribution_correctness_clicktouch_clicktouch_out.json_1 │ │ │ │ ├── publisher_attribution_correctness_clicktouch_touchonly_out.json_0 │ │ │ │ ├── publisher_attribution_correctness_clicktouch_touchonly_out.json_1 │ │ │ │ ├── publisher_attribution_correctness_kanonymity_allfail_out.json_0 │ │ │ │ ├── publisher_attribution_correctness_kanonymity_allfail_out.json_1 │ │ │ │ ├── publisher_attribution_correctness_kanonymity_allpass_out.json_0 │ │ │ │ ├── publisher_attribution_correctness_kanonymity_allpass_out.json_1 │ │ │ │ ├── publisher_attribution_correctness_kanonymity_mix_out.json_0 │ │ │ │ ├── publisher_attribution_correctness_kanonymity_mix_out.json_1 │ │ │ │ ├── publisher_attribution_correctness_mmt_nooverlap_out.json_0 │ │ │ │ ├── publisher_attribution_correctness_mmt_nooverlap_out.json_1 │ │ │ │ ├── publisher_attribution_correctness_mmt_overlap_out.json_0 │ │ │ │ ├── publisher_attribution_correctness_mmt_overlap_out.json_1 │ │ │ │ ├── publisher_attribution_correctness_mmtonly_pcmonly_out.json_0 │ │ │ │ ├── publisher_attribution_correctness_mmtonly_pcmonly_out.json_1 │ │ │ │ ├── publisher_attribution_correctness_mmtpcm_mmtonly_out.json_0 │ │ │ │ ├── publisher_attribution_correctness_mmtpcm_mmtonly_out.json_1 │ │ │ │ ├── publisher_attribution_correctness_mmtpcm_mmtpcm_out.json_0 │ │ │ │ ├── publisher_attribution_correctness_mmtpcm_mmtpcm_out.json_1 │ │ │ │ ├── publisher_attribution_correctness_mmtpcm_pcmonly_out.json_0 │ │ │ │ ├── publisher_attribution_correctness_mmtpcm_pcmonly_out.json_1 │ │ │ │ ├── publisher_attribution_correctness_old_out.json_0 │ │ │ │ ├── publisher_attribution_correctness_old_out.json_1 │ │ │ │ ├── publisher_attribution_corrupted_out.json_0 │ │ │ │ ├── publisher_attribution_corrupted_out.json_1 │ │ │ │ ├── publisher_attribution_out.json_0 │ │ │ │ └── publisher_attribution_out.json_1 │ │ │ │ ├── expected_shard_aggregator_correctness_test │ │ │ │ ├── expected_reformatted_shard_aggregator_out.json │ │ │ │ ├── expected_shard_aggregator_correctness_clickonly_clicktouch_out.json │ │ │ │ ├── expected_shard_aggregator_correctness_clickonly_touchonly_multiple_scenarios_out.json │ │ │ │ ├── expected_shard_aggregator_correctness_clickonly_touchonly_out.json │ │ │ │ ├── expected_shard_aggregator_correctness_clicktouch_clicktouch_out.json │ │ │ │ ├── expected_shard_aggregator_correctness_clicktouch_touchonly_out.json │ │ │ │ ├── expected_shard_aggregator_correctness_kanonymity_allfail_out.json │ │ │ │ ├── expected_shard_aggregator_correctness_kanonymity_allpass_out.json │ │ │ │ ├── expected_shard_aggregator_correctness_kanonymity_mix_out.json │ │ │ │ ├── expected_shard_aggregator_correctness_mmt_nooverlap_out.json │ │ │ │ ├── expected_shard_aggregator_correctness_mmt_overlap_out.json │ │ │ │ ├── expected_shard_aggregator_correctness_mmtonly_pcmonly_out.json │ │ │ │ ├── expected_shard_aggregator_correctness_mmtpcm_mmtonly_out.json │ │ │ │ ├── expected_shard_aggregator_correctness_mmtpcm_mmtpcm_out.json │ │ │ │ ├── expected_shard_aggregator_correctness_mmtpcm_pcmonly_out.json │ │ │ │ ├── expected_shard_aggregator_correctness_old_out.json │ │ │ │ └── expected_shard_aggregator_out.json │ │ │ │ ├── lift │ │ │ │ ├── aggregator_alice_0 │ │ │ │ ├── aggregator_alice_1 │ │ │ │ ├── aggregator_alice_2 │ │ │ │ ├── aggregator_bob_0 │ │ │ │ ├── aggregator_bob_1 │ │ │ │ ├── aggregator_bob_2 │ │ │ │ ├── aggregator_metrics │ │ │ │ ├── aggregator_metrics_kanon │ │ │ │ ├── aggregator_metrics_kanon_anonymous │ │ │ │ └── zero_metrics │ │ │ │ ├── shard_validation_test │ │ │ │ ├── invalid_aggregation_name.json │ │ │ │ ├── invalid_bad_structure.json │ │ │ │ ├── invalid_empty_map_0.json │ │ │ │ ├── invalid_empty_map_1.json │ │ │ │ ├── invalid_lift_input.json │ │ │ │ ├── invalid_pcm_shard.json │ │ │ │ ├── valid_lift_input.json │ │ │ │ ├── valid_lift_no_cohort_metrics.json │ │ │ │ └── valid_measurement_shard.json │ │ │ │ └── test_new_parser │ │ │ │ ├── invalid_map.json │ │ │ │ ├── list_metrics.json │ │ │ │ ├── simple_map.json │ │ │ │ └── single_value.json │ │ └── test │ │ │ ├── AggregatorTest.cpp │ │ │ ├── ConversionTest.cpp │ │ │ ├── TouchpointTest.cpp │ │ │ ├── attribution_e2e_test │ │ │ ├── partner_e2e_input.csv │ │ │ ├── partner_expected_result.json │ │ │ ├── publisher_e2e_input.csv │ │ │ └── publisher_expected_result.json │ │ │ ├── attribution_format_test │ │ │ ├── last_click_1d.attribution.json │ │ │ ├── partner.csv │ │ │ └── publisher.csv │ │ │ ├── shard_test_input │ │ │ ├── partner │ │ │ │ ├── measurement_input.csv_0 │ │ │ │ ├── measurement_input.csv_1 │ │ │ │ ├── partner_correctness_clickonly_clicktouch_input.csv_0 │ │ │ │ ├── partner_correctness_clickonly_clicktouch_input.csv_1 │ │ │ │ ├── partner_correctness_clickonly_touchonly_input.csv_0 │ │ │ │ ├── partner_correctness_clickonly_touchonly_input.csv_1 │ │ │ │ ├── partner_correctness_clicktouch_clicktouch_input.csv_0 │ │ │ │ ├── partner_correctness_clicktouch_clicktouch_input.csv_1 │ │ │ │ ├── partner_correctness_clicktouch_touchonly_input.csv_0 │ │ │ │ ├── partner_correctness_clicktouch_touchonly_input.csv_1 │ │ │ │ ├── partner_correctness_kanonymity_allfail_input.csv_0 │ │ │ │ ├── partner_correctness_kanonymity_allfail_input.csv_1 │ │ │ │ ├── partner_correctness_kanonymity_allpass_input.csv_0 │ │ │ │ ├── partner_correctness_kanonymity_allpass_input.csv_1 │ │ │ │ ├── partner_correctness_kanonymity_mix_input.csv_0 │ │ │ │ ├── partner_correctness_kanonymity_mix_input.csv_1 │ │ │ │ ├── partner_correctness_mmt_nooverlap_input.csv_0 │ │ │ │ ├── partner_correctness_mmt_nooverlap_input.csv_1 │ │ │ │ ├── partner_correctness_mmt_overlap_input.csv_0 │ │ │ │ ├── partner_correctness_mmt_overlap_input.csv_1 │ │ │ │ ├── partner_correctness_mmtonly_pcmonly_input.csv_0 │ │ │ │ ├── partner_correctness_mmtonly_pcmonly_input.csv_1 │ │ │ │ ├── partner_correctness_mmtpcm_mmtonly_input.csv_0 │ │ │ │ ├── partner_correctness_mmtpcm_mmtonly_input.csv_1 │ │ │ │ ├── partner_correctness_mmtpcm_mmtpcm_input.csv_0 │ │ │ │ ├── partner_correctness_mmtpcm_mmtpcm_input.csv_1 │ │ │ │ ├── partner_correctness_mmtpcm_pcmonly_input.csv_0 │ │ │ │ ├── partner_correctness_mmtpcm_pcmonly_input.csv_1 │ │ │ │ ├── partner_correctness_old_input.csv_0 │ │ │ │ ├── partner_correctness_old_input.csv_1 │ │ │ │ ├── partner_corrupted_input.csv_0 │ │ │ │ ├── partner_corrupted_input.csv_1 │ │ │ │ ├── partner_input.csv_0 │ │ │ │ ├── partner_input.csv_1 │ │ │ │ ├── partner_missing_column_input.csv_0 │ │ │ │ └── partner_missing_column_input.csv_1 │ │ │ └── publisher │ │ │ │ ├── measurement_input.csv_0 │ │ │ │ ├── measurement_input.csv_1 │ │ │ │ ├── publisher_correctness_clickonly_clicktouch_input.csv_0 │ │ │ │ ├── publisher_correctness_clickonly_clicktouch_input.csv_1 │ │ │ │ ├── publisher_correctness_clickonly_touchonly_input.csv_0 │ │ │ │ ├── publisher_correctness_clickonly_touchonly_input.csv_1 │ │ │ │ ├── publisher_correctness_clicktouch_clicktouch_input.csv_0 │ │ │ │ ├── publisher_correctness_clicktouch_clicktouch_input.csv_1 │ │ │ │ ├── publisher_correctness_clicktouch_touchonly_input.csv_0 │ │ │ │ ├── publisher_correctness_clicktouch_touchonly_input.csv_1 │ │ │ │ ├── publisher_correctness_kanonymity_allfail_input.csv_0 │ │ │ │ ├── publisher_correctness_kanonymity_allfail_input.csv_1 │ │ │ │ ├── publisher_correctness_kanonymity_allpass_input.csv_0 │ │ │ │ ├── publisher_correctness_kanonymity_allpass_input.csv_1 │ │ │ │ ├── publisher_correctness_kanonymity_mix_input.csv_0 │ │ │ │ ├── publisher_correctness_kanonymity_mix_input.csv_1 │ │ │ │ ├── publisher_correctness_mmt_nooverlap_input.csv_0 │ │ │ │ ├── publisher_correctness_mmt_nooverlap_input.csv_1 │ │ │ │ ├── publisher_correctness_mmt_overlap_input.csv_0 │ │ │ │ ├── publisher_correctness_mmt_overlap_input.csv_1 │ │ │ │ ├── publisher_correctness_mmtonly_pcmonly_input.csv_0 │ │ │ │ ├── publisher_correctness_mmtonly_pcmonly_input.csv_1 │ │ │ │ ├── publisher_correctness_mmtpcm_mmtonly_input.csv_0 │ │ │ │ ├── publisher_correctness_mmtpcm_mmtonly_input.csv_1 │ │ │ │ ├── publisher_correctness_mmtpcm_mmtpcm_input.csv_0 │ │ │ │ ├── publisher_correctness_mmtpcm_mmtpcm_input.csv_1 │ │ │ │ ├── publisher_correctness_mmtpcm_pcmonly_input.csv_0 │ │ │ │ ├── publisher_correctness_mmtpcm_pcmonly_input.csv_1 │ │ │ │ ├── publisher_correctness_old_input.csv_0 │ │ │ │ ├── publisher_correctness_old_input.csv_1 │ │ │ │ ├── publisher_input.csv_0 │ │ │ │ └── publisher_input.csv_1 │ │ │ └── test_correctness │ │ │ ├── last_click_1d.measurement.json │ │ │ ├── last_click_1d.partner.csv │ │ │ ├── last_click_1d.pcm_ify.json │ │ │ ├── last_click_1d.publisher.csv │ │ │ ├── last_touch_1d.measurement.json │ │ │ ├── last_touch_1d.partner.csv │ │ │ ├── last_touch_1d.pcm_ify.json │ │ │ └── last_touch_1d.publisher.csv │ ├── common │ │ ├── Constants.h │ │ ├── Crypto.cpp │ │ ├── Crypto.h │ │ ├── Csv.cpp │ │ ├── Csv.h │ │ ├── Debug.h │ │ ├── EmpOperationUtil.h │ │ ├── EmpOperationUtil.hpp │ │ ├── FeatureFlagUtil.h │ │ ├── Functional.h │ │ ├── IMetadataSerializer.h │ │ ├── PrivateData.h │ │ ├── SchedulerStatistics.h │ │ ├── SecretSharing.h │ │ ├── SecretSharing.hpp │ │ ├── TestUtil.cpp │ │ ├── TestUtil.h │ │ ├── Util.h │ │ └── test │ │ │ ├── CryptoTest.cpp │ │ │ ├── CsvTest.cpp │ │ │ ├── FeatureFlagUtilTest.cpp │ │ │ ├── FunctionalTest.cpp │ │ │ ├── SecretSharingTest.cpp │ │ │ ├── TestUtils.h │ │ │ └── test_data │ │ │ └── input.csv │ ├── compactor │ │ ├── AttributionOutput.h │ │ ├── CompactorGame.h │ │ ├── main.cpp │ │ └── test │ │ │ ├── CompactorGameTest.cpp │ │ │ └── test_input │ │ │ ├── partner_test_output.csv_0 │ │ │ ├── partner_test_output.csv_1 │ │ │ ├── partner_test_output.csv_2 │ │ │ ├── partner_test_output.csv_3 │ │ │ ├── publisher_test_output.csv_0 │ │ │ ├── publisher_test_output.csv_1 │ │ │ ├── publisher_test_output.csv_2 │ │ │ └── publisher_test_output.csv_3 │ ├── data_processing │ │ ├── global_parameters │ │ │ ├── GlobalParameters.cpp │ │ │ ├── GlobalParameters.h │ │ │ └── test │ │ │ │ └── GlobalParametersTest.cpp │ │ └── unified_data_process │ │ │ ├── MainUtil.h │ │ │ ├── UdpDecryptor │ │ │ └── UdpDecryptorApp.h │ │ │ ├── UdpEncryptor │ │ │ ├── UdpEncryptor.cpp │ │ │ ├── UdpEncryptor.h │ │ │ ├── UdpEncryptorApp.cpp │ │ │ ├── UdpEncryptorApp.h │ │ │ ├── main.cpp │ │ │ └── test │ │ │ │ ├── UdpEncryptorAppTest.cpp │ │ │ │ └── UdpEncryptorTest.cpp │ │ │ ├── UdpProcessApp.h │ │ │ ├── UdpProcessApp_impl.h │ │ │ ├── UdpProcessGame.h │ │ │ ├── UdpProcessGameFactory.h │ │ │ ├── UdpProcessGame_impl.h │ │ │ ├── UdpProcessOptions.cpp │ │ │ ├── UdpProcessOptions.h │ │ │ ├── main.cpp │ │ │ └── test │ │ │ └── UdpProcessAppTest.cpp │ ├── dotproduct │ │ ├── DotproductApp.h │ │ ├── DotproductGame.h │ │ ├── DotproductGame_impl.h │ │ ├── DotproductOptions.cpp │ │ ├── DotproductOptions.h │ │ ├── MainUtil.h │ │ ├── main.cpp │ │ └── test │ │ │ ├── DotproductAppTest.cpp │ │ │ ├── DotproductGameTest.cpp │ │ │ ├── DotproductTestUtils.h │ │ │ └── test_correctness │ │ │ ├── expected_result_0.csv │ │ │ ├── expected_result_1.csv │ │ │ ├── outpub_dotprodtest_0.csv │ │ │ ├── outpub_expected_result.csv │ │ │ ├── partner_dotprodtest_0.csv │ │ │ ├── partner_dotprodtest_1.csv │ │ │ ├── publisher_dotprodtest_0.csv │ │ │ └── publisher_dotprodtest_1.csv │ ├── he_aggregation │ │ ├── AggregationInputMetrics.cpp │ │ ├── AggregationInputMetrics.h │ │ ├── AttributionAdditiveSSResult.h │ │ ├── HEAggApp.h │ │ ├── HEAggGame.cpp │ │ ├── HEAggGame.h │ │ ├── HEAggOptions.cpp │ │ ├── HEAggOptions.h │ │ ├── MainUtil.h │ │ ├── main.cpp │ │ └── test │ │ │ ├── HEAggGameTest.cpp │ │ │ └── test_correctness │ │ │ └── dataset1 │ │ │ ├── dataproc_partner_0.csv │ │ │ ├── dataproc_publisher_0.csv │ │ │ ├── output.json │ │ │ ├── ss_partner_0.json │ │ │ └── ss_publisher_0.json │ ├── lift │ │ ├── calculator │ │ │ ├── CalculatorApp.cpp │ │ │ ├── CalculatorApp.h │ │ │ ├── CalculatorGame.h │ │ │ ├── CalculatorGameConfig.h │ │ │ ├── InputData.cpp │ │ │ ├── InputData.h │ │ │ ├── OutputMetrics.h │ │ │ ├── OutputMetrics.hpp │ │ │ ├── OutputMetricsData.h │ │ │ ├── main.cpp │ │ │ ├── sample_input │ │ │ │ ├── partner_4_convs_0 │ │ │ │ ├── partner_4_convs_1 │ │ │ │ ├── partner_4_convs_unittest.csv │ │ │ │ ├── partner_converter_unittest.csv │ │ │ │ ├── publisher_0 │ │ │ │ ├── publisher_1 │ │ │ │ ├── publisher_unittest.csv │ │ │ │ └── publisher_unittest2.csv │ │ │ └── test │ │ │ │ ├── CalculatorAppTest.cpp │ │ │ │ ├── CalculatorGameTest.cpp │ │ │ │ ├── InputDataTest.cpp │ │ │ │ ├── LiftFakeDataParamsTest.cpp │ │ │ │ ├── common │ │ │ │ ├── GenFakeData.cpp │ │ │ │ ├── GenFakeData.h │ │ │ │ ├── LiftCalculator.cpp │ │ │ │ ├── LiftCalculator.h │ │ │ │ ├── LiftFakeDataParams.cpp │ │ │ │ └── LiftFakeDataParams.h │ │ │ │ └── main.cpp │ │ ├── common │ │ │ ├── GroupedLiftMetrics.cpp │ │ │ ├── GroupedLiftMetrics.h │ │ │ ├── LiftMetrics.cpp │ │ │ ├── LiftMetrics.h │ │ │ └── test │ │ │ │ ├── GroupedLiftMetricsTest.cpp │ │ │ │ └── LiftMetricsTest.cpp │ │ ├── metadata_compaction │ │ │ ├── DummyMetadataCompactorGame.h │ │ │ ├── DummyMetadataCompactorGameFactory.h │ │ │ ├── IMetadataCompactorGame.h │ │ │ ├── IMetadataCompactorGameFactory.h │ │ │ ├── MainUtil.h │ │ │ ├── MetadataCompactionOptions.cpp │ │ │ ├── MetadataCompactionOptions.h │ │ │ ├── MetadataCompactorApp.h │ │ │ ├── MetadataCompactorApp_impl.h │ │ │ ├── MetadataCompactorGame.h │ │ │ ├── MetadataCompactorGameFactory.h │ │ │ ├── main.cpp │ │ │ └── test │ │ │ │ ├── MetadataCompactionAppTest.cpp │ │ │ │ └── MetadataCompactorGameTest.cpp │ │ └── pcf2_calculator │ │ │ ├── Aggregator.h │ │ │ ├── Aggregator_impl.h │ │ │ ├── Attributor.h │ │ │ ├── Attributor_impl.h │ │ │ ├── CalculatorApp.h │ │ │ ├── CalculatorApp_impl.h │ │ │ ├── CalculatorGame.h │ │ │ ├── CalculatorGameConfig.h │ │ │ ├── MainUtil.h │ │ │ ├── OutputMetricsData.h │ │ │ ├── input_processing │ │ │ ├── CompactionBasedInputProcessor.h │ │ │ ├── CompactionBasedInputProcessor_impl.h │ │ │ ├── Constants.h │ │ │ ├── DecoupledUDPInputProcessor.h │ │ │ ├── GlobalSharingUtils.h │ │ │ ├── IInputProcessor.h │ │ │ ├── InputData.cpp │ │ │ ├── InputData.h │ │ │ ├── InputProcessor.h │ │ │ ├── InputProcessor_impl.h │ │ │ ├── LiftCompactionUtils.h │ │ │ ├── LiftGameProcessedData.h │ │ │ ├── LiftGameProcessedData_impl.h │ │ │ ├── SecretShareInputProcessor.h │ │ │ ├── serialization │ │ │ │ ├── LiftMetaDataSerializer.cpp │ │ │ │ └── LiftMetaDataSerializer.h │ │ │ └── test │ │ │ │ ├── CompactionBasedInputProcessorTest.cpp │ │ │ │ ├── GlobalSharingUtilsTest.cpp │ │ │ │ ├── InputDataTest.cpp │ │ │ │ ├── InputProcessorTest.cpp │ │ │ │ ├── LiftMetaDataSerializerTest.cpp │ │ │ │ └── TestUtil.h │ │ │ ├── main.cpp │ │ │ ├── sample_input │ │ │ ├── SampleInput.h │ │ │ ├── correctness_output.json │ │ │ ├── partner_2_convs_unittest.csv │ │ │ ├── partner_4_convs_0 │ │ │ ├── partner_4_convs_1 │ │ │ ├── partner_4_convs_unittest.csv │ │ │ ├── partner_converter_unittest.csv │ │ │ ├── publisher_0 │ │ │ ├── publisher_1 │ │ │ ├── publisher_unittest.csv │ │ │ ├── publisher_unittest2.csv │ │ │ └── publisher_unittest3.csv │ │ │ └── test │ │ │ ├── AggregatorTest.cpp │ │ │ ├── AttributorTest.cpp │ │ │ ├── CalculatorAppTest.cpp │ │ │ ├── CalculatorGameTest.cpp │ │ │ ├── MainUtilTest.cpp │ │ │ └── common │ │ │ ├── GenFakeData.cpp │ │ │ ├── GenFakeData.h │ │ │ ├── LiftCalculator.cpp │ │ │ ├── LiftCalculator.h │ │ │ ├── LiftFakeDataParams.cpp │ │ │ ├── LiftFakeDataParams.h │ │ │ └── common_test │ │ │ ├── LiftCalculatorLocalTest.cpp │ │ │ └── LiftFakeDataParamsTest.cpp │ ├── pcf2_aggregation │ │ ├── AggregationApp.h │ │ ├── AggregationGame.h │ │ ├── AggregationGame_impl.h │ │ ├── AggregationMetrics.cpp │ │ ├── AggregationMetrics.h │ │ ├── AggregationOptions.cpp │ │ ├── AggregationOptions.h │ │ ├── Aggregator.h │ │ ├── Aggregator_impl.h │ │ ├── AttributionReformattedResult.h │ │ ├── AttributionResult.h │ │ ├── Constants.h │ │ ├── ConversionMetadata.h │ │ ├── MainUtil.h │ │ ├── TouchpointMetadata.h │ │ ├── main.cpp │ │ └── test │ │ │ ├── AggregationAppTest.cpp │ │ │ ├── AggregationGameTest.cpp │ │ │ ├── AggregationTestUtils.h │ │ │ ├── MainUtilTest.cpp │ │ │ └── test_correctness │ │ │ ├── last_click_1d.measurement.json │ │ │ ├── last_click_1d.partner.json │ │ │ ├── last_click_1d.publisher.json │ │ │ ├── last_click_1d_reformatted.partner.json │ │ │ ├── last_click_1d_reformatted.publisher.json │ │ │ ├── last_click_2_7d.measurement.json │ │ │ ├── last_click_2_7d.partner.json │ │ │ ├── last_click_2_7d.publisher.json │ │ │ ├── last_click_2_7d_reformatted.partner.json │ │ │ ├── last_click_2_7d_reformatted.publisher.json │ │ │ ├── last_touch_1d.measurement.json │ │ │ ├── last_touch_1d.partner.json │ │ │ ├── last_touch_1d.publisher.json │ │ │ ├── last_touch_1d_reformatted.partner.json │ │ │ ├── last_touch_1d_reformatted.publisher.json │ │ │ ├── last_touch_2_7d.measurement.json │ │ │ ├── last_touch_2_7d.partner.json │ │ │ ├── last_touch_2_7d.publisher.json │ │ │ ├── last_touch_2_7d_reformatted.partner.json │ │ │ └── last_touch_2_7d_reformatted.publisher.json │ ├── pcf2_attribution │ │ ├── AttributionApp.h │ │ ├── AttributionGame.h │ │ ├── AttributionGame_impl.h │ │ ├── AttributionMetrics.cpp │ │ ├── AttributionMetrics.h │ │ ├── AttributionOptions.cpp │ │ ├── AttributionOptions.h │ │ ├── AttributionOutput.h │ │ ├── AttributionReformattedOutput.h │ │ ├── AttributionRule.h │ │ ├── AttributionRule_impl.h │ │ ├── Constants.h │ │ ├── Conversion.h │ │ ├── MainUtil.h │ │ ├── Touchpoint.h │ │ ├── main.cpp │ │ └── test │ │ │ ├── AttributionAppTest.cpp │ │ │ ├── AttributionGameTest.cpp │ │ │ ├── AttributionTestUtils.h │ │ │ ├── MainUtilTest.cpp │ │ │ └── test_correctness │ │ │ ├── last_click_1d.json │ │ │ ├── last_click_1d.partner.csv │ │ │ ├── last_click_1d.partner_xor.partner.csv │ │ │ ├── last_click_1d.partner_xor.publisher.csv │ │ │ ├── last_click_1d.publisher.csv │ │ │ ├── last_click_1d.targetid.partner.csv │ │ │ ├── last_click_1d.targetid.publisher.csv │ │ │ ├── last_click_1d.targetid_actiontype.partner.csv │ │ │ ├── last_click_1d.targetid_actiontype.publisher.csv │ │ │ ├── last_click_1d.xor.partner.csv │ │ │ ├── last_click_1d.xor.publisher.csv │ │ │ ├── last_click_1d_reformatted.json │ │ │ ├── last_click_1d_targetid.json │ │ │ ├── last_click_1d_targetid.partner.csv │ │ │ ├── last_click_1d_targetid.partner_xor.partner.csv │ │ │ ├── last_click_1d_targetid.partner_xor.publisher.csv │ │ │ ├── last_click_1d_targetid.publisher.csv │ │ │ ├── last_click_1d_targetid.xor.partner.csv │ │ │ ├── last_click_1d_targetid.xor.publisher.csv │ │ │ ├── last_click_1d_targetid_reformatted.json │ │ │ ├── last_click_2_7d.json │ │ │ ├── last_click_2_7d.partner.csv │ │ │ ├── last_click_2_7d.partner_xor.partner.csv │ │ │ ├── last_click_2_7d.partner_xor.publisher.csv │ │ │ ├── last_click_2_7d.publisher.csv │ │ │ ├── last_click_2_7d.xor.partner.csv │ │ │ ├── last_click_2_7d.xor.publisher.csv │ │ │ ├── last_click_2_7d_reformatted.json │ │ │ ├── last_touch_1d.json │ │ │ ├── last_touch_1d.partner.csv │ │ │ ├── last_touch_1d.partner_xor.partner.csv │ │ │ ├── last_touch_1d.partner_xor.publisher.csv │ │ │ ├── last_touch_1d.publisher.csv │ │ │ ├── last_touch_1d.xor.partner.csv │ │ │ ├── last_touch_1d.xor.publisher.csv │ │ │ ├── last_touch_1d_reformatted.json │ │ │ ├── last_touch_2_7d.json │ │ │ ├── last_touch_2_7d.partner.csv │ │ │ ├── last_touch_2_7d.partner_xor.partner.csv │ │ │ ├── last_touch_2_7d.partner_xor.publisher.csv │ │ │ ├── last_touch_2_7d.publisher.csv │ │ │ ├── last_touch_2_7d.xor.partner.csv │ │ │ ├── last_touch_2_7d.xor.publisher.csv │ │ │ └── last_touch_2_7d_reformatted.json │ ├── pcf2_shard_combiner │ │ ├── AggMetrics.h │ │ ├── AggMetricsTest.cpp │ │ ├── AggMetrics_impl.h │ │ ├── ShardCombinerApp.h │ │ ├── ShardCombinerAppTest.cpp │ │ ├── ShardCombinerGame.h │ │ ├── ShardCombinerGameTest.cpp │ │ ├── ShardValidator.h │ │ ├── ShardValidatorTest.cpp │ │ ├── ShardValidator_impl.h │ │ ├── main.cpp │ │ ├── test │ │ │ ├── ad_object_format │ │ │ │ ├── expected_attribution_out.json │ │ │ │ ├── expected_partner_shard_aggregation_out.json │ │ │ │ ├── expected_publisher_shard_aggregation_out.json │ │ │ │ ├── partner_attribution_correctness_clickonly_clicktouch_out.json_0 │ │ │ │ ├── partner_attribution_correctness_clickonly_clicktouch_out.json_1 │ │ │ │ ├── partner_attribution_correctness_clickonly_touchonly_multiple_scenarios_out.json_0 │ │ │ │ ├── partner_attribution_correctness_clickonly_touchonly_multiple_scenarios_out.json_1 │ │ │ │ ├── partner_attribution_correctness_clickonly_touchonly_out.json_0 │ │ │ │ ├── partner_attribution_correctness_clickonly_touchonly_out.json_1 │ │ │ │ ├── partner_attribution_correctness_clicktouch_clicktouch_out.json_0 │ │ │ │ ├── partner_attribution_correctness_clicktouch_clicktouch_out.json_1 │ │ │ │ ├── partner_attribution_correctness_clicktouch_touchonly_out.json_0 │ │ │ │ ├── partner_attribution_correctness_clicktouch_touchonly_out.json_1 │ │ │ │ ├── partner_attribution_correctness_kanonymity_allpass_out.json_0 │ │ │ │ ├── partner_attribution_correctness_kanonymity_allpass_out.json_1 │ │ │ │ ├── partner_attribution_correctness_mmt_nooverlap_out.json_0 │ │ │ │ ├── partner_attribution_correctness_mmt_nooverlap_out.json_1 │ │ │ │ ├── partner_attribution_correctness_mmt_overlap_out.json_0 │ │ │ │ ├── partner_attribution_correctness_mmt_overlap_out.json_1 │ │ │ │ ├── partner_attribution_correctness_mmtonly_pcmonly_out.json_0 │ │ │ │ ├── partner_attribution_correctness_mmtonly_pcmonly_out.json_1 │ │ │ │ ├── partner_attribution_correctness_mmtpcm_mmtonly_out.json_0 │ │ │ │ ├── partner_attribution_correctness_mmtpcm_mmtonly_out.json_1 │ │ │ │ ├── partner_attribution_correctness_mmtpcm_mmtpcm_out.json_0 │ │ │ │ ├── partner_attribution_correctness_mmtpcm_mmtpcm_out.json_1 │ │ │ │ ├── partner_attribution_correctness_mmtpcm_pcmonly_out.json_0 │ │ │ │ ├── partner_attribution_correctness_mmtpcm_pcmonly_out.json_1 │ │ │ │ ├── partner_attribution_correctness_old_out.json_0 │ │ │ │ ├── partner_attribution_correctness_old_out.json_1 │ │ │ │ ├── partner_attribution_out.json_0 │ │ │ │ ├── partner_attribution_out.json_1 │ │ │ │ ├── plaintext_attribution_out.json_0 │ │ │ │ ├── plaintext_attribution_out.json_1 │ │ │ │ ├── publisher_attribution_correctness_clickonly_clicktouch_out.json_0 │ │ │ │ ├── publisher_attribution_correctness_clickonly_clicktouch_out.json_1 │ │ │ │ ├── publisher_attribution_correctness_clickonly_touchonly_multiple_scenarios_out.json_0 │ │ │ │ ├── publisher_attribution_correctness_clickonly_touchonly_multiple_scenarios_out.json_1 │ │ │ │ ├── publisher_attribution_correctness_clickonly_touchonly_out.json_0 │ │ │ │ ├── publisher_attribution_correctness_clickonly_touchonly_out.json_1 │ │ │ │ ├── publisher_attribution_correctness_clicktouch_clicktouch_out.json_0 │ │ │ │ ├── publisher_attribution_correctness_clicktouch_clicktouch_out.json_1 │ │ │ │ ├── publisher_attribution_correctness_clicktouch_touchonly_out.json_0 │ │ │ │ ├── publisher_attribution_correctness_clicktouch_touchonly_out.json_1 │ │ │ │ ├── publisher_attribution_correctness_kanonymity_allpass_out.json_0 │ │ │ │ ├── publisher_attribution_correctness_kanonymity_allpass_out.json_1 │ │ │ │ ├── publisher_attribution_correctness_mmt_nooverlap_out.json_0 │ │ │ │ ├── publisher_attribution_correctness_mmt_nooverlap_out.json_1 │ │ │ │ ├── publisher_attribution_correctness_mmt_overlap_out.json_0 │ │ │ │ ├── publisher_attribution_correctness_mmt_overlap_out.json_1 │ │ │ │ ├── publisher_attribution_correctness_mmtonly_pcmonly_out.json_0 │ │ │ │ ├── publisher_attribution_correctness_mmtonly_pcmonly_out.json_1 │ │ │ │ ├── publisher_attribution_correctness_mmtpcm_mmtonly_out.json_0 │ │ │ │ ├── publisher_attribution_correctness_mmtpcm_mmtonly_out.json_1 │ │ │ │ ├── publisher_attribution_correctness_mmtpcm_mmtpcm_out.json_0 │ │ │ │ ├── publisher_attribution_correctness_mmtpcm_mmtpcm_out.json_1 │ │ │ │ ├── publisher_attribution_correctness_mmtpcm_pcmonly_out.json_0 │ │ │ │ ├── publisher_attribution_correctness_mmtpcm_pcmonly_out.json_1 │ │ │ │ ├── publisher_attribution_correctness_old_out.json_0 │ │ │ │ ├── publisher_attribution_correctness_old_out.json_1 │ │ │ │ ├── publisher_attribution_corrupted_out.json_0 │ │ │ │ ├── publisher_attribution_corrupted_out.json_1 │ │ │ │ ├── publisher_attribution_out.json_0 │ │ │ │ └── publisher_attribution_out.json_1 │ │ │ ├── combiner_logic_test │ │ │ │ ├── expected_out_shards_2.json │ │ │ │ ├── expected_out_shards_3.json │ │ │ │ ├── input_partner.json_0 │ │ │ │ ├── input_partner.json_1 │ │ │ │ ├── input_partner.json_2 │ │ │ │ ├── input_publisher.json_0 │ │ │ │ ├── input_publisher.json_1 │ │ │ │ ├── input_publisher.json_2 │ │ │ │ ├── plaintext_input_partner.json_0 │ │ │ │ ├── plaintext_input_partner.json_1 │ │ │ │ ├── plaintext_input_partner.json_2 │ │ │ │ ├── plaintext_input_publisher.json_0 │ │ │ │ ├── plaintext_input_publisher.json_1 │ │ │ │ └── plaintext_input_publisher.json_2 │ │ │ ├── expected_shard_aggregator_correctness_test │ │ │ │ ├── expected_shard_aggregator_correctness_clickonly_clicktouch_out.json │ │ │ │ ├── expected_shard_aggregator_correctness_clickonly_touchonly_multiple_scenarios_out.json │ │ │ │ ├── expected_shard_aggregator_correctness_clickonly_touchonly_out.json │ │ │ │ ├── expected_shard_aggregator_correctness_clicktouch_clicktouch_out.json │ │ │ │ ├── expected_shard_aggregator_correctness_clicktouch_touchonly_out.json │ │ │ │ ├── expected_shard_aggregator_correctness_kanonymity_allfail_out.json │ │ │ │ ├── expected_shard_aggregator_correctness_kanonymity_allpass_out.json │ │ │ │ ├── expected_shard_aggregator_correctness_kanonymity_mix_out.json │ │ │ │ ├── expected_shard_aggregator_correctness_mmt_nooverlap_out.json │ │ │ │ ├── expected_shard_aggregator_correctness_mmt_overlap_out.json │ │ │ │ ├── expected_shard_aggregator_correctness_mmtonly_pcmonly_out.json │ │ │ │ ├── expected_shard_aggregator_correctness_mmtpcm_mmtonly_out.json │ │ │ │ ├── expected_shard_aggregator_correctness_mmtpcm_mmtpcm_out.json │ │ │ │ ├── expected_shard_aggregator_correctness_mmtpcm_pcmonly_out.json │ │ │ │ ├── expected_shard_aggregator_correctness_old_out.json │ │ │ │ └── expected_shard_aggregator_out.json │ │ │ ├── lift │ │ │ │ ├── aggregator_alice_0 │ │ │ │ ├── aggregator_alice_1 │ │ │ │ ├── aggregator_alice_2 │ │ │ │ ├── aggregator_bob_0 │ │ │ │ ├── aggregator_bob_1 │ │ │ │ ├── aggregator_bob_2 │ │ │ │ ├── aggregator_metrics │ │ │ │ ├── aggregator_metrics_kanon │ │ │ │ ├── aggregator_metrics_kanon_anonymous │ │ │ │ └── zero_metrics │ │ │ ├── lift_threshold_test │ │ │ │ ├── lift_expected_output_shards_2.json │ │ │ │ ├── lift_expected_output_shards_3.json │ │ │ │ ├── lift_input_shard.json_0 │ │ │ │ ├── lift_input_shard.json_1 │ │ │ │ ├── lift_input_shard.json_2 │ │ │ │ ├── partner_lift_input_shard.json_0 │ │ │ │ ├── partner_lift_input_shard.json_1 │ │ │ │ ├── partner_lift_input_shard.json_2 │ │ │ │ ├── publisher_lift_input_shard.json_0 │ │ │ │ ├── publisher_lift_input_shard.json_1 │ │ │ │ └── publisher_lift_input_shard.json_2 │ │ │ ├── shard_validation_test │ │ │ │ ├── invalid_aggregation_name.json │ │ │ │ ├── invalid_bad_structure.json │ │ │ │ ├── invalid_empty_map_0.json │ │ │ │ ├── invalid_empty_map_1.json │ │ │ │ ├── invalid_lift_input.json │ │ │ │ ├── invalid_pcm_shard.json │ │ │ │ ├── valid_lift_input.json │ │ │ │ ├── valid_lift_no_cohort_metrics.json │ │ │ │ └── valid_measurement_shard.json │ │ │ └── test_new_parser │ │ │ │ ├── accumulate_test_input_plaintext_1.json │ │ │ │ ├── accumulate_test_input_plaintext_2.json │ │ │ │ ├── accumulate_test_result_plaintext.json │ │ │ │ ├── invalid_map.json │ │ │ │ ├── list_metrics.json │ │ │ │ ├── simple_map.json │ │ │ │ └── single_value.json │ │ └── util │ │ │ ├── AggMetricsThresholdCheckers.h │ │ │ ├── AggMetricsThresholdCheckers_impl.h │ │ │ └── MainUtil.h │ └── private_id_dfca_aggregator │ │ ├── PrivateIdDfcaAggregatorApp.cpp │ │ ├── PrivateIdDfcaAggregatorApp.h │ │ ├── PrivateIdDfcaAggregatorOptions.cpp │ │ ├── PrivateIdDfcaAggregatorOptions.h │ │ ├── main.cpp │ │ ├── test │ │ ├── PrivateIdDfcaAggregatorTest.cpp │ │ ├── inputs │ │ │ ├── partner │ │ │ │ ├── shard_0.csv │ │ │ │ ├── shard_1.csv │ │ │ │ └── shard_2.csv │ │ │ └── publisher │ │ │ │ ├── shard_0.csv │ │ │ │ ├── shard_1.csv │ │ │ │ └── shard_2.csv │ │ └── outputs │ │ │ ├── expected_result_0.csv │ │ │ ├── expected_result_1.csv │ │ │ └── expected_result_2.csv │ │ └── util │ │ ├── ShardReader.h │ │ └── SortedIdSwapper.h ├── experimental │ ├── __init__.py │ └── cloud_logs │ │ ├── __init__.py │ │ ├── aws_log_retriever.py │ │ ├── dummy_log_retriever.py │ │ ├── log_retriever.py │ │ └── test │ │ ├── __init__.py │ │ └── test_log_retriever.py ├── infra │ ├── certificate │ │ ├── basic_ca_certificate_provider.py │ │ ├── certificate_provider.py │ │ ├── null_certificate_provider.py │ │ ├── pc_instance_ca_certificate_provider.py │ │ ├── pc_instance_server_certificate.py │ │ ├── private_key.py │ │ ├── service.py │ │ └── tests │ │ │ ├── sample_tls_certificates.py │ │ │ ├── test_certificate_providers.py │ │ │ └── test_private_key.py │ ├── cloud_bridge │ │ ├── .gitignore │ │ ├── Dockerfile │ │ ├── Makefile │ │ ├── README.md │ │ ├── advertiser_infra_logging │ │ │ ├── athena_logging │ │ │ │ ├── log_to_cloudwatch.tf │ │ │ │ └── variable.tf │ │ │ ├── base_logging_infra │ │ │ │ ├── cloudtrail_cloudwatch_log.tf │ │ │ │ ├── kinesis_log_stream.tf │ │ │ │ ├── s3_logging_bucket.tf │ │ │ │ └── variable.tf │ │ │ ├── kms_logging │ │ │ │ ├── log_to_cloudwatch.tf │ │ │ │ └── variable.tf │ │ │ ├── lambda_logging_existing_log_group │ │ │ │ ├── log_to_cloudwatch.tf │ │ │ │ └── variable.tf │ │ │ ├── lambda_logging_new_log_group │ │ │ │ ├── log_to_cloudwatch.tf │ │ │ │ └── variable.tf │ │ │ └── s3_bucket_logging │ │ │ │ ├── log_to_cloudwatch.tf │ │ │ │ └── variable.tf │ │ ├── bulk_onborading │ │ │ ├── bulk_pixel_onboarding.py │ │ │ ├── business_access_tokens.csv │ │ │ ├── pixels.csv │ │ │ └── readme.md │ │ ├── clean_up_agent │ │ │ ├── main.tf │ │ │ ├── output.tf │ │ │ └── variable.tf │ │ ├── cli.py │ │ ├── data_ingestion │ │ │ ├── data_transformation_lambda.py │ │ │ ├── glue.tf │ │ │ ├── main.tf │ │ │ ├── output.tf │ │ │ ├── tests │ │ │ │ └── data_transformation_lambda_test.py │ │ │ └── variable.tf │ │ ├── data_preprocessing │ │ │ ├── main.tf │ │ │ ├── output.tf │ │ │ └── variable.tf │ │ ├── deploy.sh │ │ ├── deploy_pc_infra.sh │ │ ├── deployment_helper │ │ │ └── aws │ │ │ │ ├── aws_deployment_helper.py │ │ │ │ ├── aws_deployment_helper_tool.py │ │ │ │ ├── aws_parser_builder.py │ │ │ │ ├── iam_policies │ │ │ │ ├── fb_pc_data_bucket_policy.json │ │ │ │ ├── fb_pc_iam_policy.json │ │ │ │ ├── fb_pc_iam_policy_no_compute.json │ │ │ │ └── semi_automated_statement.json │ │ │ │ ├── policy_params.py │ │ │ │ └── test │ │ │ │ ├── __init__.py │ │ │ │ ├── test_aws_deployment_helper.py │ │ │ │ ├── test_aws_deployment_helper_tool.py │ │ │ │ └── test_resources │ │ │ │ └── test_aws_deployment_helper_config.json │ │ ├── key_injection_agent │ │ │ ├── main.tf │ │ │ └── variable.tf │ │ ├── pceValidator.sh │ │ ├── s3_bucket_notification │ │ │ ├── main.tf │ │ │ └── variable.tf │ │ ├── semi_automated_data_ingestion │ │ │ ├── glue.tf │ │ │ ├── glue_ETL.py │ │ │ ├── lambda.tf │ │ │ ├── main.tf │ │ │ ├── output.tf │ │ │ ├── template │ │ │ │ └── lambda_trigger.py │ │ │ └── variable.tf │ │ ├── server │ │ │ ├── build.gradle │ │ │ ├── gradle │ │ │ │ └── wrapper │ │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ │ └── gradle-wrapper.properties │ │ │ ├── gradlew │ │ │ ├── settings.gradle │ │ │ └── src │ │ │ │ ├── main │ │ │ │ ├── java │ │ │ │ │ └── com │ │ │ │ │ │ └── facebook │ │ │ │ │ │ └── business │ │ │ │ │ │ └── cloudbridge │ │ │ │ │ │ └── pl │ │ │ │ │ │ └── server │ │ │ │ │ │ ├── APIReturn.java │ │ │ │ │ │ ├── Application.java │ │ │ │ │ │ ├── Constants.java │ │ │ │ │ │ ├── DeployController.java │ │ │ │ │ │ ├── DeploymentException.java │ │ │ │ │ │ ├── DeploymentParams.java │ │ │ │ │ │ ├── DeploymentRunner.java │ │ │ │ │ │ ├── InstallationException.java │ │ │ │ │ │ ├── InstallationRunner.java │ │ │ │ │ │ ├── InvalidDeploymentArgumentException.java │ │ │ │ │ │ ├── LogLevel.java │ │ │ │ │ │ ├── LogStreamer.java │ │ │ │ │ │ ├── PCEValidatorAPIReturn.java │ │ │ │ │ │ ├── PCEValidatorRunner.java │ │ │ │ │ │ ├── ToolkitInstallationParams.java │ │ │ │ │ │ ├── Validator.java │ │ │ │ │ │ ├── command │ │ │ │ │ │ ├── ShellCommandHandler.java │ │ │ │ │ │ └── ShellCommandRunner.java │ │ │ │ │ │ └── deployment │ │ │ │ │ │ ├── cache │ │ │ │ │ │ └── ThreadSafeCache.java │ │ │ │ │ │ ├── controller │ │ │ │ │ │ └── DeploymentController.java │ │ │ │ │ │ └── models │ │ │ │ │ │ ├── DeploymentMeta.java │ │ │ │ │ │ └── DeploymentStatus.java │ │ │ │ └── resources │ │ │ │ │ └── logback-spring.xml │ │ │ │ └── test │ │ │ │ └── java │ │ │ │ └── com │ │ │ │ └── facebook │ │ │ │ └── business │ │ │ │ └── cloudbridge │ │ │ │ └── pl │ │ │ │ └── server │ │ │ │ ├── ApplicationTest.java │ │ │ │ └── DeploymentParamsTest.java │ │ ├── test │ │ │ ├── __init__.py │ │ │ └── test_cli.py │ │ ├── upgrade.sh │ │ └── util.sh │ ├── logging_service │ │ ├── client │ │ │ └── meta │ │ │ │ ├── Makefile │ │ │ │ ├── __init__.py │ │ │ │ ├── client_manager.py │ │ │ │ └── data_model │ │ │ │ ├── __init__.py │ │ │ │ ├── base_info.py │ │ │ │ ├── computation_run_info.py │ │ │ │ └── lift_run_info.py │ │ ├── download_logs │ │ │ ├── cloud │ │ │ │ ├── aws_cloud.py │ │ │ │ ├── cloud_baseclass.py │ │ │ │ └── test │ │ │ │ │ └── test_aws_cloud.py │ │ │ ├── cloud_error │ │ │ │ ├── cloud_error.py │ │ │ │ └── utils_error.py │ │ │ ├── download_logs.py │ │ │ ├── download_logs_cli.py │ │ │ ├── download_logs_cli.sh │ │ │ ├── pip_requirements.txt │ │ │ ├── test │ │ │ │ ├── __init__.py │ │ │ │ ├── sample_log │ │ │ │ │ └── container_ids.txt │ │ │ │ └── test_download_logs.py │ │ │ └── utils │ │ │ │ ├── test │ │ │ │ ├── __init__.py │ │ │ │ └── test_utils.py │ │ │ │ └── utils.py │ │ ├── log_analyzer │ │ │ ├── __init__.py │ │ │ ├── entity │ │ │ │ ├── __init__.py │ │ │ │ ├── cell_objective_instance.py │ │ │ │ ├── container_info.py │ │ │ │ ├── flow_stage.py │ │ │ │ ├── instance_flow.py │ │ │ │ ├── log_context.py │ │ │ │ └── run_study.py │ │ │ ├── log_analyzer.py │ │ │ ├── log_analyzer.sh │ │ │ └── log_validation.py │ │ └── server │ │ │ └── thrift │ │ │ └── logging_service.thrift │ ├── mr_pid │ │ ├── partner │ │ │ ├── Dockerfile │ │ │ ├── Makefile │ │ │ ├── README.md │ │ │ ├── config_mrpid.yml │ │ │ ├── mrpid_partner_deploy.sh │ │ │ └── util.sh │ │ └── publisher │ │ │ ├── Dockerfile │ │ │ ├── Makefile │ │ │ ├── README.md │ │ │ ├── mrpid_publisher_final_deploy.sh │ │ │ ├── mrpid_publisher_initial_deploy.sh │ │ │ └── util.sh │ ├── pce │ │ ├── aws_terraform_template │ │ │ ├── common │ │ │ │ ├── pce │ │ │ │ │ ├── compute.tf │ │ │ │ │ ├── main.tf │ │ │ │ │ ├── networking.tf │ │ │ │ │ ├── output.tf │ │ │ │ │ └── variable.tf │ │ │ │ └── pce_shared │ │ │ │ │ ├── cloudwatch.tf │ │ │ │ │ ├── compute.tf │ │ │ │ │ ├── iam.tf │ │ │ │ │ ├── main.tf │ │ │ │ │ ├── output.tf │ │ │ │ │ └── variable.tf │ │ │ └── partner │ │ │ │ └── vpc_peering │ │ │ │ ├── main.tf │ │ │ │ ├── output.tf │ │ │ │ ├── traffic_route.tf │ │ │ │ └── variable.tf │ │ └── gcp_terraform_template │ │ │ ├── common │ │ │ └── pce │ │ │ │ ├── compute.tf │ │ │ │ ├── main.tf │ │ │ │ ├── networking.tf │ │ │ │ ├── output.tf │ │ │ │ ├── variable.tf │ │ │ │ └── wi.tf │ │ │ └── partner │ │ │ └── vpc_peering │ │ │ ├── main.tf │ │ │ ├── output.tf │ │ │ ├── variable.tf │ │ │ └── vpc_peering.tf │ ├── pce_deployment_library │ │ └── errors_library │ │ │ ├── __init__.py │ │ │ ├── aws_errors.py │ │ │ ├── gcp_errors.py │ │ │ └── terraform_errors.py │ ├── pid │ │ └── aws_terraform_template │ │ │ ├── partner │ │ │ ├── cloudwatch.tf │ │ │ ├── ec2_iam_role.tf │ │ │ ├── emr_iam_role.tf │ │ │ ├── main.tf │ │ │ ├── minimal_running_policy.tf │ │ │ ├── output.tf │ │ │ ├── s3_bucket.tf │ │ │ ├── sfn.tf │ │ │ ├── sfn_definition.tf │ │ │ ├── sfn_iam_role.tf │ │ │ └── variable.tf │ │ │ └── publisher │ │ │ ├── final_script │ │ │ ├── main.tf │ │ │ ├── s3_bucket_policy.tf │ │ │ └── variable.tf │ │ │ └── initial_script │ │ │ ├── cloudwatch.tf │ │ │ ├── ec2_iam_role.tf │ │ │ ├── emr_iam_role.tf │ │ │ ├── main.tf │ │ │ ├── output.tf │ │ │ ├── s3_bucket.tf │ │ │ ├── sfn.tf │ │ │ ├── sfn_definition.tf │ │ │ ├── sfn_iam_role.tf │ │ │ └── variable.tf │ ├── publisher │ │ ├── deploy-shared.sh │ │ ├── deploy.sh │ │ ├── gcp │ │ │ ├── deploy.sh │ │ │ └── util.sh │ │ └── util.sh │ └── restore_run_state │ │ ├── restore_state.py │ │ └── tests │ │ └── test_restore_state.py ├── onedocker_binary_config.py ├── onedocker_binary_names.py ├── onedocker_service_config.py ├── pc_pre_validation │ ├── __init__.py │ ├── binary_file_validator.py │ ├── binary_path.py │ ├── constants.py │ ├── enums.py │ ├── exceptions.py │ ├── input_data_validation_issues.py │ ├── input_data_validator.py │ ├── pc_pre_validation_cli.py │ ├── tests │ │ ├── binary_file_validator_test.py │ │ ├── binary_path_test.py │ │ ├── input_data_validation_issues_test.py │ │ ├── input_data_validator_test.py │ │ ├── pc_pre_validation_cli_test.py │ │ ├── validation_report_test.py │ │ └── validators_runner_test.py │ ├── validation_report.py │ ├── validator.py │ └── validators_runner.py ├── performance_tools │ ├── CostEstimation.cpp │ └── CostEstimation.h ├── pid │ ├── __init__.py │ └── entity │ │ ├── __init__.py │ │ ├── pid_instance.py │ │ └── pid_stages.py ├── pip_requirements.txt ├── pl_coordinator │ ├── __init__.py │ ├── bolt_graphapi_client.py │ ├── constants.py │ ├── exceptions.py │ ├── pl_study_runner.py │ ├── tests │ │ ├── test_bolt_graphapi_client.py │ │ └── test_token_validator.py │ ├── token_validation_rules.py │ └── token_validator.py ├── post_processing_handler │ ├── __init__.py │ ├── exception.py │ ├── post_processing_handler.py │ ├── post_processing_instance.py │ └── tests │ │ ├── __init__.py │ │ └── dummy_handler.py ├── private_attribution │ └── test │ │ └── resources │ │ ├── data_preparation │ │ └── e2e_test │ │ ├── partner_prepare_data_out.csv_0 │ │ ├── partner_prepare_data_out.csv_1 │ │ ├── partner_prepare_data_out.csv_2 │ │ ├── partner_prepare_data_out.csv_3 │ │ ├── partner_prepare_data_out.csv_4 │ │ ├── partner_shard_aggregation.json │ │ ├── partner_test.csv_0 │ │ ├── partner_test.csv_1 │ │ ├── partner_test.csv_2 │ │ ├── partner_test.csv_3 │ │ ├── partner_test.csv_4 │ │ ├── publisher_prepare_data_out.csv_0 │ │ ├── publisher_prepare_data_out.csv_1 │ │ ├── publisher_prepare_data_out.csv_2 │ │ ├── publisher_prepare_data_out.csv_3 │ │ ├── publisher_prepare_data_out.csv_4 │ │ ├── publisher_shard_aggregation.json │ │ ├── publisher_test.csv_0 │ │ ├── publisher_test.csv_1 │ │ ├── publisher_test.csv_2 │ │ ├── publisher_test.csv_3 │ │ ├── publisher_test.csv_4 │ │ ├── spine_test.csv_0 │ │ ├── spine_test.csv_1 │ │ ├── spine_test.csv_2 │ │ ├── spine_test.csv_3 │ │ └── spine_test.csv_4 ├── private_computation │ ├── entity │ │ ├── breakdown_key.py │ │ ├── cloud_provider.py │ │ ├── exceptions.py │ │ ├── infra_config.py │ │ ├── pc_infra_config.py │ │ ├── pc_infra_config_data.py │ │ ├── pc_validator_config.py │ │ ├── pce_config.py │ │ ├── pcs_feature.py │ │ ├── pcs_tier.py │ │ ├── pid_mr_config.py │ │ ├── post_processing_data.py │ │ ├── private_computation_instance.py │ │ ├── private_computation_status.py │ │ └── product_config.py │ ├── pc_attribution_runner.py │ ├── repository │ │ ├── private_computation_game.py │ │ ├── private_computation_instance.py │ │ └── private_computation_instance_local.py │ ├── service │ │ ├── aggregate_shards_stage_service.py │ │ ├── anonymization_data_prep_stage_service.py │ │ ├── anonymizer_stage_service.py │ │ ├── argument_helper.py │ │ ├── compute_metrics_stage_service.py │ │ ├── constants.py │ │ ├── dummy_stage_service.py │ │ ├── errors.py │ │ ├── id_spine_combiner_stage_service.py │ │ ├── mpc │ │ │ ├── entity │ │ │ │ ├── mpc_game_config.py │ │ │ │ └── mpc_instance.py │ │ │ ├── mpc.py │ │ │ ├── mpc_game.py │ │ │ └── repository │ │ │ │ └── mpc_game_repository.py │ │ ├── pc_pre_validation_stage_service.py │ │ ├── pcf2_aggregation_stage_service.py │ │ ├── pcf2_attribution_stage_service.py │ │ ├── pcf2_base_stage_service.py │ │ ├── pcf2_lift_metadata_compaction_stage_service.py │ │ ├── pcf2_lift_stage_service.py │ │ ├── pid_mr_stage_service.py │ │ ├── pid_prepare_stage_service.py │ │ ├── pid_run_protocol_stage_service.py │ │ ├── pid_shard_stage_service.py │ │ ├── pid_utils.py │ │ ├── post_processing_stage_service.py │ │ ├── pre_validate_service.py │ │ ├── pre_validation_util.py │ │ ├── private_computation.py │ │ ├── private_computation_service_data.py │ │ ├── private_computation_stage_service.py │ │ ├── private_id_dfca_aggregate_stage_service.py │ │ ├── run_binary_base_service.py │ │ ├── secure_random_sharder_stage_service.py │ │ ├── shard_stage_service.py │ │ └── utils.py │ ├── stage_flows │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── private_computation_anonymizer_stage_flow.py │ │ ├── private_computation_base_stage_flow.py │ │ ├── private_computation_local_test_stage_flow.py │ │ ├── private_computation_mr_pid_pcf2_lift_stage_flow.py │ │ ├── private_computation_mr_stage_flow.py │ │ ├── private_computation_mrpid_only_test_stage_flow.py │ │ ├── private_computation_pa_for_pd_stage_flow.py │ │ ├── private_computation_pcf2_lift_stage_flow.py │ │ ├── private_computation_pcf2_lift_udp_stage_flow.py │ │ ├── private_computation_pcf2_local_test_stage_flow.py │ │ ├── private_computation_pcf2_stage_flow.py │ │ ├── private_computation_pid_continuous_measurement_stage_flow.py │ │ ├── private_computation_pid_only_test_stage_flow.py │ │ ├── private_computation_private_id_dfca_local_test_stage_flow.py │ │ ├── private_computation_private_id_dfca_stage_flow.py │ │ ├── private_computation_stage_flow.py │ │ └── stage_selector.py │ └── test │ │ ├── entity │ │ ├── gen_status_resources.py │ │ ├── generate_instance_json.py │ │ ├── test_infra_config.py │ │ ├── test_instance_serde.py │ │ ├── test_pc_infra_config.py │ │ ├── test_pcs_feature.py │ │ ├── test_private_computation_instance.py │ │ ├── test_product_config.py │ │ ├── test_resources │ │ │ ├── configs │ │ │ │ ├── expected_mini_config.yml │ │ │ │ ├── expected_mini_override_config.yml │ │ │ │ ├── mini_config.yml │ │ │ │ ├── mini_override_config.yml │ │ │ │ └── mini_override_error_config.yml │ │ │ ├── serialized_instances │ │ │ │ ├── lift_pc_instance.json │ │ │ │ └── stage_state_instance.json │ │ │ └── status_names │ │ │ │ ├── README.md │ │ │ │ ├── aggregation_completed.txt │ │ │ │ ├── aggregation_failed.txt │ │ │ │ ├── aggregation_initialized.txt │ │ │ │ ├── aggregation_started.txt │ │ │ │ ├── anonymization_data_prep_completed.txt │ │ │ │ ├── anonymization_data_prep_failed.txt │ │ │ │ ├── anonymization_data_prep_initialized.txt │ │ │ │ ├── anonymization_data_prep_started.txt │ │ │ │ ├── anonymizer_completed.txt │ │ │ │ ├── anonymizer_failed.txt │ │ │ │ ├── anonymizer_initialized.txt │ │ │ │ ├── anonymizer_started.txt │ │ │ │ ├── computation_completed.txt │ │ │ │ ├── computation_failed.txt │ │ │ │ ├── computation_initialized.txt │ │ │ │ ├── computation_started.txt │ │ │ │ ├── created.txt │ │ │ │ ├── creation_failed.txt │ │ │ │ ├── creation_initialized.txt │ │ │ │ ├── creation_started.txt │ │ │ │ ├── decoupled_aggregation_completed.txt │ │ │ │ ├── decoupled_aggregation_failed.txt │ │ │ │ ├── decoupled_aggregation_initialized.txt │ │ │ │ ├── decoupled_aggregation_started.txt │ │ │ │ ├── decoupled_attribution_completed.txt │ │ │ │ ├── decoupled_attribution_failed.txt │ │ │ │ ├── decoupled_attribution_initialized.txt │ │ │ │ ├── decoupled_attribution_started.txt │ │ │ │ ├── id_matching_completed.txt │ │ │ │ ├── id_matching_failed.txt │ │ │ │ ├── id_matching_initialized.txt │ │ │ │ ├── id_matching_post_process_completed.txt │ │ │ │ ├── id_matching_post_process_failed.txt │ │ │ │ ├── id_matching_post_process_initialized.txt │ │ │ │ ├── id_matching_post_process_started.txt │ │ │ │ ├── id_matching_started.txt │ │ │ │ ├── id_spine_combiner_completed.txt │ │ │ │ ├── id_spine_combiner_failed.txt │ │ │ │ ├── id_spine_combiner_initialized.txt │ │ │ │ ├── id_spine_combiner_started.txt │ │ │ │ ├── pc_pre_validation_completed.txt │ │ │ │ ├── pc_pre_validation_failed.txt │ │ │ │ ├── pc_pre_validation_initialized.txt │ │ │ │ ├── pc_pre_validation_started.txt │ │ │ │ ├── pcf2_aggregation_completed.txt │ │ │ │ ├── pcf2_aggregation_failed.txt │ │ │ │ ├── pcf2_aggregation_initialized.txt │ │ │ │ ├── pcf2_aggregation_started.txt │ │ │ │ ├── pcf2_attribution_completed.txt │ │ │ │ ├── pcf2_attribution_failed.txt │ │ │ │ ├── pcf2_attribution_initialized.txt │ │ │ │ ├── pcf2_attribution_started.txt │ │ │ │ ├── pcf2_lift_completed.txt │ │ │ │ ├── pcf2_lift_failed.txt │ │ │ │ ├── pcf2_lift_initialized.txt │ │ │ │ ├── pcf2_lift_metadata_compaction_completed.txt │ │ │ │ ├── pcf2_lift_metadata_compaction_failed.txt │ │ │ │ ├── pcf2_lift_metadata_compaction_initialized.txt │ │ │ │ ├── pcf2_lift_metadata_compaction_started.txt │ │ │ │ ├── pcf2_lift_started.txt │ │ │ │ ├── pcf2_shard_combine_completed.txt │ │ │ │ ├── pcf2_shard_combine_failed.txt │ │ │ │ ├── pcf2_shard_combine_initialized.txt │ │ │ │ ├── pcf2_shard_combine_started.txt │ │ │ │ ├── pid_mr_completed.txt │ │ │ │ ├── pid_mr_failed.txt │ │ │ │ ├── pid_mr_initialized.txt │ │ │ │ ├── pid_mr_started.txt │ │ │ │ ├── pid_prepare_completed.txt │ │ │ │ ├── pid_prepare_failed.txt │ │ │ │ ├── pid_prepare_initialized.txt │ │ │ │ ├── pid_prepare_started.txt │ │ │ │ ├── pid_shard_completed.txt │ │ │ │ ├── pid_shard_failed.txt │ │ │ │ ├── pid_shard_initialized.txt │ │ │ │ ├── pid_shard_started.txt │ │ │ │ ├── post_processing_handlers_completed.txt │ │ │ │ ├── post_processing_handlers_failed.txt │ │ │ │ ├── post_processing_handlers_initialized.txt │ │ │ │ ├── post_processing_handlers_started.txt │ │ │ │ ├── prepare_data_completed.txt │ │ │ │ ├── prepare_data_failed.txt │ │ │ │ ├── prepare_data_started.txt │ │ │ │ ├── private_id_dfca_aggregation_completed.txt │ │ │ │ ├── private_id_dfca_aggregation_failed.txt │ │ │ │ ├── private_id_dfca_aggregation_initialized.txt │ │ │ │ ├── private_id_dfca_aggregation_started.txt │ │ │ │ ├── processing_request.txt │ │ │ │ ├── reshard_completed.txt │ │ │ │ ├── reshard_failed.txt │ │ │ │ ├── reshard_initialized.txt │ │ │ │ ├── reshard_started.txt │ │ │ │ ├── secure_random_sharder_completed.txt │ │ │ │ ├── secure_random_sharder_failed.txt │ │ │ │ ├── secure_random_sharder_initialized.txt │ │ │ │ ├── secure_random_sharder_started.txt │ │ │ │ ├── timeout.txt │ │ │ │ └── unknown.txt │ │ └── test_status_name_stability.py │ │ ├── repository │ │ ├── test_private_computation_game.py │ │ └── test_private_computation_instance_local.py │ │ └── service │ │ ├── dummy_stage_flow.py │ │ ├── mpc │ │ ├── test_mpc.py │ │ └── test_mpc_game.py │ │ ├── test_aggregate_shards_stage_service.py │ │ ├── test_anonymization_data_prep_stage_service.py │ │ ├── test_anonymizer_stage_service.py │ │ ├── test_argument_helpers.py │ │ ├── test_compute_metrics_stage_service.py │ │ ├── test_id_spine_combiner_stage_service.py │ │ ├── test_pc_pre_validation_stage_service.py │ │ ├── test_pcf2_aggregation_stage_service.py │ │ ├── test_pcf2_attribution_stage_service.py │ │ ├── test_pcf2_lift_metadata_compaction_stage_service.py │ │ ├── test_pcf2_lift_stage_service.py │ │ ├── test_pid_mr_stage_service.py │ │ ├── test_pid_prepare_stage_service.py │ │ ├── test_pid_run_protocol_stage_service.py │ │ ├── test_pid_shard_stage_service.py │ │ ├── test_post_processing_stage_service.py │ │ ├── test_pre_validate_service.py │ │ ├── test_private_computation.py │ │ ├── test_private_id_dfca_aggregate_stage_service.py │ │ ├── test_run_binary_base_service.py │ │ ├── test_secure_random_sharding_stage_service.py │ │ ├── test_shard_stage_service.py │ │ └── test_utils.py ├── private_computation_cli │ ├── config.yml │ ├── private_computation_cli.py │ ├── private_computation_service_wrapper.py │ └── tests │ │ ├── test_pc_attribution_runner.py │ │ ├── test_pl_study_runner.py │ │ ├── test_private_computation_cli.py │ │ └── test_private_computation_service_wrapper.py ├── scripts │ ├── __init__.py │ ├── gen_config.py │ ├── gen_fake_data.py │ ├── gen_ids_from_spine.py │ ├── run_fbpcs.sh │ └── tests │ │ ├── __init__.py │ │ ├── test_gen_config.py │ │ ├── test_gen_fake_data.py │ │ └── test_gen_ids_from_spine.py ├── service │ ├── __init__.py │ ├── test │ │ ├── test_workflow_mwaa.py │ │ └── test_workflow_sfn.py │ ├── workflow.py │ ├── workflow_mwaa.py │ ├── workflow_sfn.py │ └── workflow_sfn_fb.py ├── stage_flow │ ├── __init__.py │ ├── exceptions.py │ ├── stage_flow.py │ └── test │ │ ├── dummy_stage_flow.py │ │ └── test_stage_flow.py ├── tests │ ├── github │ │ ├── bolt_config.yml │ │ ├── bolt_configs │ │ │ ├── attribution.yml │ │ │ ├── attribution_pcf2_shard_combiner.yml │ │ │ ├── lift.yml │ │ │ ├── lift_partner_result_visibility.yml │ │ │ ├── lift_pcf2_0.yml │ │ │ ├── lift_shard_combiner.yml │ │ │ └── lift_udp.yml │ │ ├── config_one_command_runner_test.yml │ │ ├── config_pl_test.yml │ │ ├── fbpcs_e2e_aws.yml │ │ ├── rc_config_one_command_runner_test.yml │ │ ├── rc_udp_config_one_command_runner_test.yml │ │ └── rc_udp_pl_test.yml │ └── pl_synthetic_data │ │ ├── partner_fd_PC_uploader.csv │ │ ├── partner_fd_computation_ready.csv │ │ └── partner_fd_raw.csv └── utils │ ├── __init__.py │ ├── abstract_file_ctx.py │ ├── buffered_s3_file_handler.py │ ├── color.py │ ├── config_yaml │ ├── __init__.py │ ├── config_yaml_dict.py │ ├── exceptions.py │ └── reflect.py │ ├── deprecated.py │ ├── logger_adapter.py │ ├── optional.py │ └── tests │ ├── __init__.py │ ├── integration_test.py │ ├── test_abstract_file_ctx.py │ ├── test_buffered_s3_file_handler.py │ ├── test_color.py │ └── test_config_yaml_dict.py ├── hotfix_scripts └── find_base_commit.sh ├── promote_scripts ├── promote_binaries.sh └── promote_image.sh ├── upload-binaries-to-s3-test.sh └── upload_scripts ├── configs ├── test_upload_binaries_config.yml └── upload_binaries_config.yml └── upload-binaries-using-onedocker.sh /binaries_out_lists/data_processing.txt: -------------------------------------------------------------------------------- 1 | sharder 2 | sharder_hashed_for_pid 3 | secure_random_sharder 4 | pid_preparer 5 | lift_id_combiner 6 | attribution_id_combiner 7 | private_id_dfca_id_combiner 8 | -------------------------------------------------------------------------------- /binaries_out_lists/emp_games.txt: -------------------------------------------------------------------------------- 1 | lift_calculator 2 | pcf2_lift_calculator 3 | pcf2_lift_metadata_compaction 4 | pcf2_shard_combiner 5 | decoupled_attribution_calculator 6 | decoupled_aggregation_calculator 7 | pcf2_attribution_calculator 8 | pcf2_aggregation_calculator 9 | shard_aggregator 10 | private_id_dfca_aggregator 11 | udp_encryptor 12 | -------------------------------------------------------------------------------- /binaries_out_lists/pid.txt: -------------------------------------------------------------------------------- 1 | private-id-client 2 | private-id-server 3 | private-id-multi-key-client 4 | private-id-multi-key-server 5 | -------------------------------------------------------------------------------- /binaries_out_lists/validation.txt: -------------------------------------------------------------------------------- 1 | pc_pre_validation_cli 2 | -------------------------------------------------------------------------------- /docker/onedocker/prod/opa_workflows/tls_workflow.json: -------------------------------------------------------------------------------- 1 | { 2 | "StartAt": "State1", 3 | "States": { 4 | "State1": { 5 | "PluginName": "python3 /home/onedocker/package/tls_cert_installer.py", 6 | "CmdArgsList": [], 7 | "Timeout": null, 8 | "IsEnd": true 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /docker/onedocker/prod/pip_requirements.txt: -------------------------------------------------------------------------------- 1 | fbpcp ~= 0.5 2 | jmespath ~= 0.10 3 | s3transfer ~= 0.3 4 | parameterized ~= 0.7 5 | -------------------------------------------------------------------------------- /docker/onedocker/prod/plugins/write_routing.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Copyright (c) Meta Platforms, Inc. and affiliates. 3 | # 4 | # This source code is licensed under the MIT license found in the 5 | # LICENSE file in the root directory of this source tree. 6 | 7 | echo "$1 $2" >> /etc/hosts 8 | -------------------------------------------------------------------------------- /docs/PCS_Partner_Playbook_UI.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebookresearch/fbpcs/f7c0847de52003552b3976e78acaf9836feedadb/docs/PCS_Partner_Playbook_UI.pdf -------------------------------------------------------------------------------- /docs/PCS_Partner_Playbook_version_approved_for_online_publishing_for_non_NDA_users.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebookresearch/fbpcs/f7c0847de52003552b3976e78acaf9836feedadb/docs/PCS_Partner_Playbook_version_approved_for_online_publishing_for_non_NDA_users.pdf -------------------------------------------------------------------------------- /docs/Private_Computation_AWS_pre_check_questions.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebookresearch/fbpcs/f7c0847de52003552b3976e78acaf9836feedadb/docs/Private_Computation_AWS_pre_check_questions.pdf -------------------------------------------------------------------------------- /docs/Private_Computation_Business_pre_check_questions.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebookresearch/fbpcs/f7c0847de52003552b3976e78acaf9836feedadb/docs/Private_Computation_Business_pre_check_questions.pdf -------------------------------------------------------------------------------- /docs/Private_Computation_Guide_to_answering_AWS_pre_check_questions.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebookresearch/fbpcs/f7c0847de52003552b3976e78acaf9836feedadb/docs/Private_Computation_Guide_to_answering_AWS_pre_check_questions.pdf -------------------------------------------------------------------------------- /docs/RCT.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebookresearch/fbpcs/f7c0847de52003552b3976e78acaf9836feedadb/docs/RCT.jpg -------------------------------------------------------------------------------- /docs/RoP.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebookresearch/fbpcs/f7c0847de52003552b3976e78acaf9836feedadb/docs/RoP.jpg -------------------------------------------------------------------------------- /docs/T.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebookresearch/fbpcs/f7c0847de52003552b3976e78acaf9836feedadb/docs/T.jpg -------------------------------------------------------------------------------- /docs/data_migration_between_buckets.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebookresearch/fbpcs/f7c0847de52003552b3976e78acaf9836feedadb/docs/data_migration_between_buckets.pdf -------------------------------------------------------------------------------- /docs/lift.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebookresearch/fbpcs/f7c0847de52003552b3976e78acaf9836feedadb/docs/lift.jpg -------------------------------------------------------------------------------- /docs/privatelift.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebookresearch/fbpcs/f7c0847de52003552b3976e78acaf9836feedadb/docs/privatelift.jpg -------------------------------------------------------------------------------- /docs/security_reviews/NCC_Group_MetaPlatformsInc_E004159_DLOE_Report_2022-08-05_DLOE-Multi-Key-Private-ID.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebookresearch/fbpcs/f7c0847de52003552b3976e78acaf9836feedadb/docs/security_reviews/NCC_Group_MetaPlatformsInc_E004159_DLOE_Report_2022-08-05_DLOE-Multi-Key-Private-ID.pdf -------------------------------------------------------------------------------- /docs/semi_auto_data_ingestion_instruction.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebookresearch/fbpcs/f7c0847de52003552b3976e78acaf9836feedadb/docs/semi_auto_data_ingestion_instruction.pdf -------------------------------------------------------------------------------- /fbpcs/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebookresearch/fbpcs/f7c0847de52003552b3976e78acaf9836feedadb/fbpcs/__init__.py -------------------------------------------------------------------------------- /fbpcs/bolt/hooks/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebookresearch/fbpcs/f7c0847de52003552b3976e78acaf9836feedadb/fbpcs/bolt/hooks/__init__.py -------------------------------------------------------------------------------- /fbpcs/common/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebookresearch/fbpcs/f7c0847de52003552b3976e78acaf9836feedadb/fbpcs/common/__init__.py -------------------------------------------------------------------------------- /fbpcs/common/entity/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebookresearch/fbpcs/f7c0847de52003552b3976e78acaf9836feedadb/fbpcs/common/entity/__init__.py -------------------------------------------------------------------------------- /fbpcs/common/repository/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebookresearch/fbpcs/f7c0847de52003552b3976e78acaf9836feedadb/fbpcs/common/repository/__init__.py -------------------------------------------------------------------------------- /fbpcs/common/service/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebookresearch/fbpcs/f7c0847de52003552b3976e78acaf9836feedadb/fbpcs/common/service/__init__.py -------------------------------------------------------------------------------- /fbpcs/data_processing/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebookresearch/fbpcs/f7c0847de52003552b3976e78acaf9836feedadb/fbpcs/data_processing/__init__.py -------------------------------------------------------------------------------- /fbpcs/data_processing/common/FilepathHelpers.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | #include "FilepathHelpers.h" 9 | 10 | #include 11 | 12 | namespace private_lift::filepath_helpers { 13 | 14 | std::string getBaseFilename(const std::string& filename) { 15 | auto pos = filename.find_last_of('/'); 16 | return filename.substr(pos + 1); 17 | } 18 | 19 | } // namespace private_lift::filepath_helpers 20 | -------------------------------------------------------------------------------- /fbpcs/data_processing/common/FilepathHelpers.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | #pragma once 9 | 10 | #include 11 | 12 | namespace private_lift::filepath_helpers { 13 | 14 | std::string getBaseFilename(const std::string& filename); 15 | 16 | } // namespace private_lift::filepath_helpers 17 | -------------------------------------------------------------------------------- /fbpcs/data_processing/common/Logging.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | #pragma once 9 | 10 | #include 11 | 12 | namespace private_lift::logging { 13 | 14 | std::string formatNumber(uint64_t n); 15 | 16 | } // namespace private_lift::logging 17 | -------------------------------------------------------------------------------- /fbpcs/data_processing/hash_slinging_salter/base64.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | #pragma once 9 | 10 | #include 11 | 12 | namespace private_lift::base64 { 13 | 14 | std::string encode(const std::string& input); 15 | std::string decode(const std::string& input); 16 | 17 | } // namespace private_lift::base64 18 | -------------------------------------------------------------------------------- /fbpcs/data_processing/pid_preparer/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebookresearch/fbpcs/f7c0847de52003552b3976e78acaf9836feedadb/fbpcs/data_processing/pid_preparer/__init__.py -------------------------------------------------------------------------------- /fbpcs/data_processing/sharding/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebookresearch/fbpcs/f7c0847de52003552b3976e78acaf9836feedadb/fbpcs/data_processing/sharding/__init__.py -------------------------------------------------------------------------------- /fbpcs/data_processing/test/attribution_id_combiner/partner_corrupted_input.csv_0: -------------------------------------------------------------------------------- 1 | Tid_,timestamp,conversion_value,conversion_metadata 2 | id_1, XXX, YYY, ZZZ, 3 | AAA, BBB, CCC,DDD, EEEE, FFFF 4 | ---------------------------------------------------------------------- 5 | -------------------------------------------------------------------------------- /fbpcs/data_processing/test/attribution_id_combiner/partner_corrupted_input.csv_1: -------------------------------------------------------------------------------- 1 | Some, random, csv, file 2 | -------------------------------------------------------------------------------- /fbpcs/data_processing/test/attribution_id_combiner/partner_input.csv_0: -------------------------------------------------------------------------------- 1 | id_,conversion_timestamp,conversion_value,conversion_metadata 2 | id_1,100,100,1 3 | id_1,200,50,2 4 | id_2,200,10,3 5 | id_3,300,20,4 6 | id_4,400,0,5 7 | id_4,500,25,6 8 | -------------------------------------------------------------------------------- /fbpcs/data_processing/test/attribution_id_combiner/partner_input.csv_1: -------------------------------------------------------------------------------- 1 | id_,conversion_timestamp,conversion_value,conversion_metadata 2 | id_1,100,100,1 3 | id_1,200,50,2 4 | id_2,200,10,3 5 | id_3,300,20,4 6 | id_4,400,0,5 7 | id_4,500,25,6 8 | -------------------------------------------------------------------------------- /fbpcs/data_processing/test/attribution_id_combiner/spine_input.csv_0: -------------------------------------------------------------------------------- 1 | AAAA,id_1 2 | BBBB,id_2 3 | CCCC, 4 | DDDD, 5 | EEEE,id_3 6 | FFFF,id_4 7 | -------------------------------------------------------------------------------- /fbpcs/data_processing/test/attribution_id_combiner/spine_input.csv_1: -------------------------------------------------------------------------------- 1 | AAAA,id_1 2 | BBBB,id_2 3 | CCCC, 4 | DDDD, 5 | EEEE,id_3 6 | FFFF,id_4 7 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/decoupled_aggregation/test/test_correctness/last_click_1d.measurement.json: -------------------------------------------------------------------------------- 1 | { 2 | "last_click_1d": { 3 | "measurement": { 4 | "1": { 5 | "sales": 20189, 6 | "convs": 13 7 | }, 8 | "2": { 9 | "sales": 9080, 10 | "convs": 6 11 | }, 12 | "3": { 13 | "sales": 5044, 14 | "convs": 2 15 | } 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/decoupled_attribution/testdata/partner_1.csv: -------------------------------------------------------------------------------- 1 | id_,conversion_timestamps,conversion_values,conversion_metadata 2 | 1,[200],[1001],[3] 3 | 2,[50],[1002],[3] 4 | 3,[300],[1003],[3] 5 | 4,[150],[1004],[3] 6 | 5,[50],[1005],[3] 7 | 6,[200, 300],[1006, 2006],[3, 5] 8 | 7,[50, 300],[1007, 2007],[3, 5] 9 | 8,[50, 60],[1008, 2008],[3, 5] 10 | 9,[200],[1009],[3] 11 | 10,[],[],[] 12 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/decoupled_attribution/testdata/publisher_1.csv: -------------------------------------------------------------------------------- 1 | id_,ad_ids,timestamps,is_click,campaign_metadata 2 | 1,[1],[100],[1],[99] 3 | 2,[1],[100],[1],[99] 4 | 3,[2, 1],[200, 100],[1, 1],[88, 99] 5 | 4,[2, 1],[200, 100],[1, 1],[88, 99] 6 | 5,[1, 2],[100, 200],[1, 1],[99, 88] 7 | 6,[1],[100],[1],[99] 8 | 7,[1],[100],[1],[99] 9 | 8,[1],[100],[1],[99] 10 | 9,[],[],[],[] 11 | 10,[1],[100],[1],[99] 12 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/shard_aggregator/test/ad_object_format/compressed_mapping.json: -------------------------------------------------------------------------------- 1 | { 2 | "0": 1234, 3 | "1": 1, 4 | "2": 2, 5 | "3": 3, 6 | "4": 4, 7 | "5": 10000000, 8 | "6": 35000000 9 | } 10 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/shard_aggregator/test/ad_object_format/partner_attribution_correctness_clickonly_clicktouch_out.json_0: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"measurement":{"1":{"sales":4015377087675808771,"convs":2339333365645935705}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/shard_aggregator/test/ad_object_format/partner_attribution_correctness_clickonly_clicktouch_out.json_1: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"measurement":{"2":{"convs":5626881271453480588,"sales":-6602822726234258103}}},"last_touch_1d":{"measurement":{"2":{"sales":-335423711886777623,"convs":3563998867490069709}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/shard_aggregator/test/ad_object_format/partner_attribution_correctness_clickonly_touchonly_out.json_0: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"measurement":{"1":{"convs":398230577472836243,"sales":-9007621493509640828}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/shard_aggregator/test/ad_object_format/partner_attribution_correctness_clickonly_touchonly_out.json_1: -------------------------------------------------------------------------------- 1 | {"last_touch_1d":{"measurement":{"2":{"convs":8801805897636964614,"sales":1000886337942892802}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/shard_aggregator/test/ad_object_format/partner_attribution_correctness_clicktouch_clicktouch_out.json_0: -------------------------------------------------------------------------------- 1 | {"last_touch_1d":{"measurement":{"1":{"convs":-7953494799998951790,"sales":469981204952528344}}},"last_click_1d":{"measurement":{"1":{"sales":-3619097792957779804,"convs":-3084026317562107745}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/shard_aggregator/test/ad_object_format/partner_attribution_correctness_clicktouch_clicktouch_out.json_1: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"measurement":{"2":{"sales":-3083543843279901705,"convs":-74023519432736084}}},"last_touch_1d":{"measurement":{"2":{"sales":7428666711014585971,"convs":-1303492426844769821}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/shard_aggregator/test/ad_object_format/partner_attribution_correctness_clicktouch_touchonly_out.json_0: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"measurement":{"1":{"convs":-831273128088263587,"sales":339959610281870489}}},"last_touch_1d":{"measurement":{"1":{"convs":-4250297646419635499,"sales":-572762462605311503}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/shard_aggregator/test/ad_object_format/partner_attribution_correctness_clicktouch_touchonly_out.json_1: -------------------------------------------------------------------------------- 1 | {"last_touch_1d":{"measurement":{"2":{"convs":-3252586162670731300,"sales":-5624114551346561631}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/shard_aggregator/test/ad_object_format/partner_attribution_correctness_kanonymity_allfail_out.json_0: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"measurement":{"1":{"sales":3853182758003905399,"convs":-1460136902425679373},"2":{"sales":449367961346445252,"convs":-6048190881829145046},"3":{"convs":-2008380374043831319,"sales":-8226121314035181025}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/shard_aggregator/test/ad_object_format/partner_attribution_correctness_kanonymity_allfail_out.json_1: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"measurement":{"1":{"sales":337489331843435970,"convs":2526772375593005882},"2":{"sales":8452306272602840768,"convs":399711004846334426},"3":{"sales":175834345213192122,"convs":-9104761391245391692}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/shard_aggregator/test/ad_object_format/partner_attribution_correctness_kanonymity_allpass_out.json_0: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"measurement":{"1":{"convs":8567454934544797490,"sales":-549714915296783568},"2":{"convs":-1556596985914830195,"sales":1856348425828027660},"3":{"convs":5570643385219585457,"sales":5080888565359967278}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/shard_aggregator/test/ad_object_format/partner_attribution_correctness_kanonymity_allpass_out.json_1: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"measurement":{"1":{"convs":6342535489482339868,"sales":5026277477190209899},"2":{"sales":-6280359729343351778,"convs":2260404887248098076},"3":{"convs":-4295038095981421875,"sales":1355467971043208066}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/shard_aggregator/test/ad_object_format/partner_attribution_correctness_kanonymity_mix_out.json_0: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"measurement":{"1":{"sales":8803812648752695759,"convs":-7929991395635814289},"2":{"sales":8226351071838131888,"convs":3309171091224633150},"3":{"sales":-3532503126934047214,"convs":1827729604785256761}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/shard_aggregator/test/ad_object_format/partner_attribution_correctness_kanonymity_mix_out.json_1: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"measurement":{"1":{"sales":3214720851691442079,"convs":5032311283130507341},"3":{"convs":-6330663078548598135,"sales":7104178552618997287},"2":{"convs":-8457457021232431272,"sales":892159174042863731}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/shard_aggregator/test/ad_object_format/partner_attribution_correctness_mmt_nooverlap_out.json_0: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"measurement":{"1":{"sales":-88789469301523645,"convs":-1526628614596479280}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/shard_aggregator/test/ad_object_format/partner_attribution_correctness_mmt_nooverlap_out.json_1: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"measurement":{"2":{"sales":293125583309752626,"convs":-8267916534730927107}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/shard_aggregator/test/ad_object_format/partner_attribution_correctness_mmt_overlap_out.json_0: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"measurement":{"1":{"convs":-7778966545999272532,"sales":2434515429026417364},"2":{"sales":6520459171713408031,"convs":7710037595915432275}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/shard_aggregator/test/ad_object_format/partner_attribution_correctness_mmt_overlap_out.json_1: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"measurement":{"2":{"convs":-6493242815810173449,"sales":-5328513596097183695}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/shard_aggregator/test/ad_object_format/partner_attribution_correctness_mmtonly_pcmonly_out.json_0: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"measurement":{"1":{"sales":3712862996424573617,"convs":4118106542679828446}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/shard_aggregator/test/ad_object_format/partner_attribution_correctness_mmtonly_pcmonly_out.json_1: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"pcm_ify":{"0":"0"}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/shard_aggregator/test/ad_object_format/partner_attribution_correctness_mmtpcm_mmtonly_out.json_0: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"pcm_ify":{"0":"0"},"measurement":{"1":{"convs":8403343080565778698,"sales":1352521044278659045}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/shard_aggregator/test/ad_object_format/partner_attribution_correctness_mmtpcm_mmtonly_out.json_1: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"measurement":{"2":{"convs":4950590048230423620,"sales":-1590306841665456551}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/shard_aggregator/test/ad_object_format/partner_attribution_correctness_mmtpcm_mmtpcm_out.json_0: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"pcm_ify":{"0":"0"},"measurement":{"1":{"sales":-4461502830203081730,"convs":-8720279508226807239}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/shard_aggregator/test/ad_object_format/partner_attribution_correctness_mmtpcm_mmtpcm_out.json_1: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"measurement":{"2":{"sales":-7414684752188901289,"convs":-257500133922020909}},"pcm_ify":{"0":"0"}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/shard_aggregator/test/ad_object_format/partner_attribution_correctness_mmtpcm_pcmonly_out.json_0: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"measurement":{"1":{"sales":-1882722452516819703,"convs":745369295910844736}},"pcm_ify":{"0":"0"}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/shard_aggregator/test/ad_object_format/partner_attribution_correctness_mmtpcm_pcmonly_out.json_1: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"pcm_ify":{"0":"0"}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/shard_aggregator/test/ad_object_format/partner_attribution_correctness_old_out.json_0: -------------------------------------------------------------------------------- 1 | { 2 | "last_click_1d": { 3 | "measurement": { 4 | "1": { 5 | "sales": 275573955596555557, 6 | "convs": 8409666795021481610 7 | }, 8 | "0": { 9 | "sales": -6191251497413128867, 10 | "convs": -5520892897392601981 11 | } 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/shard_aggregator/test/ad_object_format/partner_attribution_out.json_0: -------------------------------------------------------------------------------- 1 | { 2 | "last_click_1d": { 3 | "measurement": { 4 | "1": { 5 | "sales": 275573955596555557, 6 | "convs": 8409666795021481610 7 | }, 8 | "0": { 9 | "sales": -6191251497413128867, 10 | "convs": -5520892897392601981 11 | } 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/shard_aggregator/test/ad_object_format/publisher_attribution_correctness_clickonly_clicktouch_out.json_0: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"measurement":{"1":{"convs":2339333365645935704,"sales":4015377087675809770}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/shard_aggregator/test/ad_object_format/publisher_attribution_correctness_clickonly_clicktouch_out.json_1: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"measurement":{"2":{"convs":5626881271453480588,"sales":-6602822726234258103}}},"last_touch_1d":{"measurement":{"2":{"sales":-335423711886778109,"convs":3563998867490069708}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/shard_aggregator/test/ad_object_format/publisher_attribution_correctness_clickonly_touchonly_out.json_0: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"measurement":{"1":{"convs":398230577472836242,"sales":-9007621493509640595}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/shard_aggregator/test/ad_object_format/publisher_attribution_correctness_clickonly_touchonly_out.json_1: -------------------------------------------------------------------------------- 1 | {"last_touch_1d":{"measurement":{"2":{"convs":8801805897636964615,"sales":1000886337942893288}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/shard_aggregator/test/ad_object_format/publisher_attribution_correctness_clicktouch_clicktouch_out.json_0: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"measurement":{"1":{"convs":-3084026317562107746,"sales":-3619097792957779123}}},"last_touch_1d":{"measurement":{"1":{"convs":-7953494799998951789,"sales":469981204952528433}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/shard_aggregator/test/ad_object_format/publisher_attribution_correctness_clicktouch_clicktouch_out.json_1: -------------------------------------------------------------------------------- 1 | {"last_touch_1d":{"measurement":{"2":{"convs":-1303492426844769822,"sales":7428666711014585753}}},"last_click_1d":{"measurement":{"2":{"convs":-74023519432736084,"sales":-3083543843279901705}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/shard_aggregator/test/ad_object_format/publisher_attribution_correctness_clicktouch_touchonly_out.json_0: -------------------------------------------------------------------------------- 1 | {"last_touch_1d":{"measurement":{"1":{"convs":-4250297646419635500,"sales":-572762462605311464}}},"last_click_1d":{"measurement":{"1":{"sales":339959610281871216,"convs":-831273128088263588}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/shard_aggregator/test/ad_object_format/publisher_attribution_correctness_clicktouch_touchonly_out.json_1: -------------------------------------------------------------------------------- 1 | {"last_touch_1d":{"measurement":{"2":{"sales":-5624114551346561461,"convs":-3252586162670731299}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/shard_aggregator/test/ad_object_format/publisher_attribution_correctness_kanonymity_allfail_out.json_0: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"measurement":{"1":{"convs":-1460136902425679374,"sales":3853182758003905406},"3":{"convs":-2008380374043831326,"sales":-8226121314035181011},"2":{"convs":-6048190881829145043,"sales":449367961346445285}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/shard_aggregator/test/ad_object_format/publisher_attribution_correctness_kanonymity_allfail_out.json_1: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"measurement":{"1":{"convs":2526772375593005882,"sales":337489331843435970},"3":{"convs":-9104761391245391682,"sales":175834345213192067},"2":{"convs":399711004846334418,"sales":8452306272602840798}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/shard_aggregator/test/ad_object_format/publisher_attribution_correctness_kanonymity_allpass_out.json_0: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"measurement":{"1":{"convs":8567454934544797562,"sales":-549714915296783769},"3":{"sales":5080888565359967603,"convs":5570643385219585535},"2":{"sales":1856348425828027620,"convs":-1556596985914830128}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/shard_aggregator/test/ad_object_format/publisher_attribution_correctness_kanonymity_allpass_out.json_1: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"measurement":{"1":{"convs":6342535489482339924,"sales":5026277477190209588},"2":{"sales":-6280359729343351303,"convs":2260404887248098113},"3":{"convs":-4295038095981421950,"sales":1355467971043207699}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/shard_aggregator/test/ad_object_format/publisher_attribution_correctness_kanonymity_mix_out.json_0: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"measurement":{"1":{"sales":8803812648752695298,"convs":-7929991395635814346},"3":{"convs":1827729604785256739,"sales":-3532503126934047052},"2":{"convs":3309171091224633146,"sales":8226351071838131876}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/shard_aggregator/test/ad_object_format/publisher_attribution_correctness_kanonymity_mix_out.json_1: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"measurement":{"1":{"sales":3214720851691441709,"convs":5032311283130507284},"3":{"convs":-6330663078548598126,"sales":7104178552618997414},"2":{"sales":892159174042863712,"convs":-8457457021232431268}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/shard_aggregator/test/ad_object_format/publisher_attribution_correctness_mmt_nooverlap_out.json_0: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"measurement":{"1":{"convs":-1526628614596479279,"sales":-88789469301524310}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/shard_aggregator/test/ad_object_format/publisher_attribution_correctness_mmt_nooverlap_out.json_1: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"measurement":{"2":{"convs":-8267916534730927107,"sales":293125583309752626}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/shard_aggregator/test/ad_object_format/publisher_attribution_correctness_mmt_overlap_out.json_0: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"measurement":{"1":{"convs":-7778966545999272531,"sales":2434515429026416957},"2":{"sales":6520459171713409012,"convs":7710037595915432274}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/shard_aggregator/test/ad_object_format/publisher_attribution_correctness_mmt_overlap_out.json_1: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"measurement":{"2":{"convs":-6493242815810173449,"sales":-5328513596097183695}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/shard_aggregator/test/ad_object_format/publisher_attribution_correctness_mmtonly_pcmonly_out.json_0: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"measurement":{"1":{"convs":4118106542679828447,"sales":3712862996424573272}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/shard_aggregator/test/ad_object_format/publisher_attribution_correctness_mmtonly_pcmonly_out.json_1: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"pcm_ify":{"99":"3"}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/shard_aggregator/test/ad_object_format/publisher_attribution_correctness_mmtpcm_mmtonly_out.json_0: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"pcm_ify":{"99":"3"},"measurement":{"1":{"convs":8403343080565778699,"sales":1352521044278658060}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/shard_aggregator/test/ad_object_format/publisher_attribution_correctness_mmtpcm_mmtonly_out.json_1: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"measurement":{"2":{"convs":4950590048230423621,"sales":-1590306841665456717}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/shard_aggregator/test/ad_object_format/publisher_attribution_correctness_mmtpcm_mmtpcm_out.json_0: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"pcm_ify":{"99":"3"},"measurement":{"1":{"convs":-8720279508226807240,"sales":-4461502830203082729}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/shard_aggregator/test/ad_object_format/publisher_attribution_correctness_mmtpcm_mmtpcm_out.json_1: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"measurement":{"2":{"sales":-7414684752188900419,"convs":-257500133922020910}},"pcm_ify":{"99":"3"}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/shard_aggregator/test/ad_object_format/publisher_attribution_correctness_mmtpcm_pcmonly_out.json_0: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"measurement":{"1":{"sales":-1882722452516819232,"convs":745369295910844737}},"pcm_ify":{"99":"3"}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/shard_aggregator/test/ad_object_format/publisher_attribution_correctness_mmtpcm_pcmonly_out.json_1: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"pcm_ify":{"99":"3"}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/shard_aggregator/test/ad_object_format/publisher_attribution_correctness_old_out.json_0: -------------------------------------------------------------------------------- 1 | { 2 | "last_click_1d": { 3 | "measurement": { 4 | "1": { 5 | "sales": 275573955596555558, 6 | "convs": 8409666795021481608 7 | }, 8 | "0": { 9 | "sales": -6191251497413128903, 10 | "convs": -5520892897392601982 11 | } 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/shard_aggregator/test/ad_object_format/publisher_attribution_corrupted_out.json_0: -------------------------------------------------------------------------------- 1 | { 2 | "last_click_1d": { 3 | "measurement": { 4 | "1": { 5 | "sales": 275573955596555558, 6 | "convs": 8409666795021481608 7 | }, 8 | "0": { 9 | "sales": -6191251497413128903, 10 | "convs": -5520892897392601982 11 | } 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/shard_aggregator/test/ad_object_format/publisher_attribution_corrupted_out.json_1: -------------------------------------------------------------------------------- 1 | { 2 | "last_click_1d": { 3 | "measurement": { 4 | "6": { 5 | "sales": -7939904078183976002, 6 | "convs": -2264595383510740388 7 | }, 8 | "5": { 9 | "sales": -5703998202437140416, 10 | "convs": -4448452860655093451 11 | }, 12 | "4": { 13 | "sales": -2561863325145231692, 14 | "convs": 5644255787246586329 15 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/shard_aggregator/test/ad_object_format/publisher_attribution_out.json_0: -------------------------------------------------------------------------------- 1 | { 2 | "last_click_1d": { 3 | "measurement": { 4 | "1": { 5 | "sales": 275573955596555558, 6 | "convs": 8409666795021481608 7 | }, 8 | "0": { 9 | "sales": -6191251497413128903, 10 | "convs": -5520892897392601982 11 | } 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/shard_aggregator/test/expected_shard_aggregator_correctness_test/expected_shard_aggregator_correctness_clickonly_touchonly_out.json: -------------------------------------------------------------------------------- 1 | { 2 | "last_click_1d": { 3 | "measurement": { 4 | "1": { 5 | "sales": 1001, 6 | "convs": 1 7 | } 8 | } 9 | }, 10 | "last_touch_1d": { 11 | "measurement": { 12 | "2": { 13 | "sales": 1002, 14 | "convs": 1 15 | } 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/shard_aggregator/test/expected_shard_aggregator_correctness_test/expected_shard_aggregator_correctness_kanonymity_allfail_out.json: -------------------------------------------------------------------------------- 1 | { 2 | "last_click_1d": { 3 | "measurement": { 4 | "1": { 5 | "sales": -1, 6 | "convs": -1 7 | }, 8 | "2": { 9 | "sales": -1, 10 | "convs": -1 11 | }, 12 | "3": { 13 | "sales": -1, 14 | "convs": -1 15 | } 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/shard_aggregator/test/expected_shard_aggregator_correctness_test/expected_shard_aggregator_correctness_kanonymity_allpass_out.json: -------------------------------------------------------------------------------- 1 | { 2 | "last_click_1d": { 3 | "measurement": { 4 | "1": { 5 | "sales": 694, 6 | "convs": 144 7 | }, 8 | "2": { 9 | "sales": 975, 10 | "convs": 186 11 | }, 12 | "3": { 13 | "sales": 750, 14 | "convs": 157 15 | } 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/shard_aggregator/test/expected_shard_aggregator_correctness_test/expected_shard_aggregator_correctness_kanonymity_mix_out.json: -------------------------------------------------------------------------------- 1 | { 2 | "last_click_1d": { 3 | "measurement": { 4 | "1": { 5 | "sales": 895, 6 | "convs": 178 7 | }, 8 | "2": { 9 | "sales": -1, 10 | "convs": -1 11 | }, 12 | "3": { 13 | "sales": -1, 14 | "convs": -1 15 | } 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/shard_aggregator/test/expected_shard_aggregator_correctness_test/expected_shard_aggregator_correctness_mmt_nooverlap_out.json: -------------------------------------------------------------------------------- 1 | { 2 | "last_click_1d": { 3 | "measurement": { 4 | "1": { 5 | "sales": 1001, 6 | "convs": 1 7 | }, 8 | "2": { 9 | "sales": 0, 10 | "convs": 0 11 | } 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/shard_aggregator/test/expected_shard_aggregator_correctness_test/expected_shard_aggregator_correctness_mmt_overlap_out.json: -------------------------------------------------------------------------------- 1 | { 2 | "last_click_1d": { 3 | "measurement": { 4 | "1": { 5 | "sales": 1001, 6 | "convs": 1 7 | }, 8 | "2": { 9 | "sales": 1003, 10 | "convs": 1 11 | } 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/shard_aggregator/test/expected_shard_aggregator_correctness_test/expected_shard_aggregator_correctness_mmtonly_pcmonly_out.json: -------------------------------------------------------------------------------- 1 | { 2 | "last_click_1d": { 3 | "measurement": { 4 | "1": { 5 | "sales": 1001, 6 | "convs": 1 7 | } 8 | }, 9 | "pcm_ify": [ 10 | { 11 | "campaign_bits": 99, 12 | "conversion_bits": 3, 13 | "count": 1 14 | } 15 | ] 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/shard_aggregator/test/expected_shard_aggregator_correctness_test/expected_shard_aggregator_correctness_mmtpcm_pcmonly_out.json: -------------------------------------------------------------------------------- 1 | { 2 | "last_click_1d": { 3 | "measurement": { 4 | "1": { 5 | "sales": 1001, 6 | "convs": 1 7 | } 8 | }, 9 | "pcm_ify": [ 10 | { 11 | "campaign_bits": 99, 12 | "conversion_bits": 3, 13 | "count": 2 14 | } 15 | ] 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/shard_aggregator/test/shard_validation_test/invalid_aggregation_name.json: -------------------------------------------------------------------------------- 1 | { 2 | "last_click_1d": { 3 | "metrics": { 4 | "1": { 5 | "convs": -831273128088263600, 6 | "sales": 339959610281870460 7 | } 8 | } 9 | }, 10 | "last_touch_1d": { 11 | "measurement": { 12 | "1": { 13 | "convs": -4250297646419635700, 14 | "sales": -572762462605311500 15 | } 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/shard_aggregator/test/shard_validation_test/invalid_bad_structure.json: -------------------------------------------------------------------------------- 1 | { 2 | "measurement": { 3 | "1": { 4 | "convs": -831273128088263600, 5 | "sales": 339959610281870460 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/shard_aggregator/test/shard_validation_test/invalid_empty_map_0.json: -------------------------------------------------------------------------------- 1 | { 2 | } 3 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/shard_aggregator/test/shard_validation_test/invalid_empty_map_1.json: -------------------------------------------------------------------------------- 1 | { 2 | "last_click_1d": { 3 | }, 4 | "last_touch_1d": { 5 | "measurement": { 6 | "1": { 7 | "convs": -4250297646419635700, 8 | "sales": -572762462605311500 9 | } 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/shard_aggregator/test/shard_validation_test/invalid_pcm_shard.json: -------------------------------------------------------------------------------- 1 | { 2 | "last_click_1d": { 3 | "pcm_ify": { 4 | "88:3": { 5 | "campaign_bits": 88, 6 | "conversion_bits": 3, 7 | "count": 3 8 | }, 9 | "99:3": { 10 | "campaign_bits": 99, 11 | "conversion_bits": 3, 12 | "count": 4 13 | }, 14 | "99:5": { 15 | "campaign_bits": 99, 16 | "conversion_bits": 5, 17 | "count": 2 18 | } 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/shard_aggregator/test/shard_validation_test/valid_measurement_shard.json: -------------------------------------------------------------------------------- 1 | { 2 | "last_click_1d": { 3 | "measurement": { 4 | "1": { 5 | "convs": -831273128088263600, 6 | "sales": 339959610281870460 7 | } 8 | } 9 | }, 10 | "last_touch_1d": { 11 | "measurement": { 12 | "1": { 13 | "convs": -4250297646419635700, 14 | "sales": -572762462605311500 15 | } 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/shard_aggregator/test/test_new_parser/invalid_map.json: -------------------------------------------------------------------------------- 1 | { 2 | "measurement": "foo" 3 | } 4 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/shard_aggregator/test/test_new_parser/list_metrics.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "a": 2 4 | }, 5 | 3 6 | ] 7 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/shard_aggregator/test/test_new_parser/simple_map.json: -------------------------------------------------------------------------------- 1 | { 2 | "measurement": 339959610281870460 3 | } 4 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/shard_aggregator/test/test_new_parser/single_value.json: -------------------------------------------------------------------------------- 1 | 3 2 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/test/attribution_format_test/partner.csv: -------------------------------------------------------------------------------- 1 | id_,conversion_timestamps,conversion_values,conversion_metadata 2 | 0,[156824,428101,563664,515688],[582,996,111,901],[2,5,6,0] 3 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/test/attribution_format_test/publisher.csv: -------------------------------------------------------------------------------- 1 | id_,ad_ids,timestamps,is_click,campaign_metadata 2 | 0,[47,15,37,42],[ 71424,342701,478264,430288],[0,1,1,0],[ 247, 165, 248, 225] 3 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/test/shard_test_input/partner/measurement_input.csv_0: -------------------------------------------------------------------------------- 1 | id_,conversion_timestamps,conversion_values,conversion_metadata 2 | 0,[1000],[1],[0] 3 | 1,[1000],[2],[0] 4 | 2,[0,1],[1,2],[0, 0] 5 | 3,[1],[100],[0] 6 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/test/shard_test_input/partner/measurement_input.csv_1: -------------------------------------------------------------------------------- 1 | id_,conversion_timestamps,conversion_values,conversion_metadata 2 | 4,[86401],[100],[0] 3 | 5,[2419201],[100],[0] 4 | 6,[100],[100],[0] 5 | 7,[100],[100],[0] 6 | 8,[2419201],[100],[0] 7 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/test/shard_test_input/partner/partner_correctness_clickonly_clicktouch_input.csv_0: -------------------------------------------------------------------------------- 1 | id_,conversion_timestamps,conversion_values,conversion_metadata 2 | 1,[200],[1001],[3] 3 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/test/shard_test_input/partner/partner_correctness_clickonly_clicktouch_input.csv_1: -------------------------------------------------------------------------------- 1 | id_,conversion_timestamps,conversion_values,conversion_metadata 2 | 2,[150],[1002],[3] 3 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/test/shard_test_input/partner/partner_correctness_clickonly_touchonly_input.csv_0: -------------------------------------------------------------------------------- 1 | id_,conversion_timestamps,conversion_values,conversion_metadata 2 | 1,[200],[1001],[3] 3 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/test/shard_test_input/partner/partner_correctness_clickonly_touchonly_input.csv_1: -------------------------------------------------------------------------------- 1 | id_,conversion_timestamps,conversion_values,conversion_metadata 2 | 2,[150],[1002],[3] 3 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/test/shard_test_input/partner/partner_correctness_clicktouch_clicktouch_input.csv_0: -------------------------------------------------------------------------------- 1 | id_,conversion_timestamps,conversion_values,conversion_metadata 2 | 1,[200],[1001],[3] 3 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/test/shard_test_input/partner/partner_correctness_clicktouch_clicktouch_input.csv_1: -------------------------------------------------------------------------------- 1 | id_,conversion_timestamps,conversion_values,conversion_metadata 2 | 2,[150],[1002],[3] 3 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/test/shard_test_input/partner/partner_correctness_clicktouch_touchonly_input.csv_0: -------------------------------------------------------------------------------- 1 | id_,conversion_timestamps,conversion_values,conversion_metadata 2 | 1,[200],[1001],[3] 3 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/test/shard_test_input/partner/partner_correctness_clicktouch_touchonly_input.csv_1: -------------------------------------------------------------------------------- 1 | id_,conversion_timestamps,conversion_values,conversion_metadata 2 | 2,[150],[1002],[3] 3 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/test/shard_test_input/partner/partner_correctness_mmt_nooverlap_input.csv_0: -------------------------------------------------------------------------------- 1 | id_,conversion_timestamps,conversion_values,conversion_metadata 2 | 1,[200],[1001],[3] 3 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/test/shard_test_input/partner/partner_correctness_mmt_nooverlap_input.csv_1: -------------------------------------------------------------------------------- 1 | id_,conversion_timestamps,conversion_values,conversion_metadata 2 | 2,[50],[1002],[3] 3 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/test/shard_test_input/partner/partner_correctness_mmt_overlap_input.csv_0: -------------------------------------------------------------------------------- 1 | id_,conversion_timestamps,conversion_values,conversion_metadata 2 | 1,[200],[1001],[3] 3 | 3,[300],[1003],[3] 4 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/test/shard_test_input/partner/partner_correctness_mmt_overlap_input.csv_1: -------------------------------------------------------------------------------- 1 | id_,conversion_timestamps,conversion_values,conversion_metadata 2 | 2,[50],[1002],[3] 3 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/test/shard_test_input/partner/partner_correctness_mmtonly_pcmonly_input.csv_0: -------------------------------------------------------------------------------- 1 | id_,conversion_timestamps,conversion_values,conversion_metadata 2 | 1,[200],[1001],[3] 3 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/test/shard_test_input/partner/partner_correctness_mmtonly_pcmonly_input.csv_1: -------------------------------------------------------------------------------- 1 | id_,conversion_timestamps,conversion_values,conversion_metadata 2 | 2,[150],[1002],[3] 3 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/test/shard_test_input/partner/partner_correctness_mmtpcm_mmtonly_input.csv_0: -------------------------------------------------------------------------------- 1 | id_,conversion_timestamps,conversion_values,conversion_metadata 2 | 1,[200],[1001],[3] 3 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/test/shard_test_input/partner/partner_correctness_mmtpcm_mmtonly_input.csv_1: -------------------------------------------------------------------------------- 1 | id_,conversion_timestamps,conversion_values,conversion_metadata 2 | 2,[150],[1002],[3] 3 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/test/shard_test_input/partner/partner_correctness_mmtpcm_mmtpcm_input.csv_0: -------------------------------------------------------------------------------- 1 | id_,conversion_timestamps,conversion_values,conversion_metadata 2 | 1,[200],[1001],[3] 3 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/test/shard_test_input/partner/partner_correctness_mmtpcm_mmtpcm_input.csv_1: -------------------------------------------------------------------------------- 1 | id_,conversion_timestamps,conversion_values,conversion_metadata 2 | 2,[150],[1002],[3] 3 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/test/shard_test_input/partner/partner_correctness_mmtpcm_pcmonly_input.csv_0: -------------------------------------------------------------------------------- 1 | id_,conversion_timestamps,conversion_values,conversion_metadata 2 | 1,[200],[1001],[3] 3 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/test/shard_test_input/partner/partner_correctness_mmtpcm_pcmonly_input.csv_1: -------------------------------------------------------------------------------- 1 | id_,conversion_timestamps,conversion_values,conversion_metadata 2 | 2,[150],[1002],[3] 3 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/test/shard_test_input/partner/partner_correctness_old_input.csv_0: -------------------------------------------------------------------------------- 1 | id_,conversion_timestamps,conversion_values,conversion_metadata 2 | 0,[144602, 1, 2],[147, 0, 0],[ 0,1000,1000] 3 | 1,[103612, 99162, 30914],[953,934,307],[3,0,0] 4 | 2,[1,2,3],[ 9,26, 0],[1000,1000,1000] 5 | 3,[185595,121096,164483],[ 73,999,225],[1,4,0] 6 | 4,[1,2,3],[419,943,602],[1000,1000,1000] 7 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/test/shard_test_input/partner/partner_correctness_old_input.csv_1: -------------------------------------------------------------------------------- 1 | id_,conversion_timestamps,conversion_values,conversion_metadata 2 | 5,[1,2,3],[176, 0, 0],[1000,1000,1000] 3 | 6,[1,2,3],[270, 0, 0],[1000,1000,1000] 4 | 7,[1,2,3],[350,733,589],[1000,1000,1000] 5 | 8,[1,2,3],[185, 0, 0],[1000,1000,1000] 6 | 9,[1,2,3],[731,465, 0],[1000,1000,1000] 7 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/test/shard_test_input/partner/partner_corrupted_input.csv_0: -------------------------------------------------------------------------------- 1 | id_,conversion_timestamps,conversion_values,conversion_metadata 2 | 0,[144602, 1, 2],[147, 0, 0],[ 0,1000,1000] 3 | 1,[103612, 99162, 30914],[953,934,307],[3,0,0] 4 | 2,[1,2,3],[ 9,26, 0],[1000,1000,1000] 5 | 3,[185595,121096,164483],[ 73,999,225],[1,4,0] 6 | 4,[1,2,3],[419,943,602 7 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/test/shard_test_input/partner/partner_corrupted_input.csv_1: -------------------------------------------------------------------------------- 1 | id_,conversion_timestamps,conversion_values,conversion_metadata 2 | 5,[1,2,3],[176, 0, 0],[1000,1000,1000] 3 | 6,[1,2,3],[270, 0, 0],[1000,1000,1000] 4 | 7,[1,2,3],[350,733,589],[1000,1000,1000] 5 | 8,[1,2,3],[185, 0, 0],[1000,1000,1000] 6 | 9,[1,2,3],[731,465, 0],[1000,1000,1000] 7 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/test/shard_test_input/partner/partner_input.csv_0: -------------------------------------------------------------------------------- 1 | id_,conversion_timestamps,conversion_values,conversion_metadata 2 | 0,[144602, 1, 2],[147, 0, 0],[ 0,1000,1000] 3 | 1,[103612, 99162, 30914],[953,934,307],[3,0,0] 4 | 2,[1,2,3],[ 9,26, 0],[1000,1000,1000] 5 | 3,[185595,121096,164483],[ 73,999,225],[1,4,0] 6 | 4,[1,2,3],[419,943,602],[1000,1000,1000] 7 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/test/shard_test_input/partner/partner_input.csv_1: -------------------------------------------------------------------------------- 1 | id_,conversion_timestamps,conversion_values,conversion_metadata 2 | 5,[1,2,3],[176, 0, 0],[1000,1000,1000] 3 | 6,[1,2,3],[270, 0, 0],[1000,1000,1000] 4 | 7,[1,2,3],[350,733,589],[1000,1000,1000] 5 | 8,[1,2,3],[185, 0, 0],[1000,1000,1000] 6 | 9,[1,2,3],[731,465, 0],[1000,1000,1000] 7 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/test/shard_test_input/partner/partner_missing_column_input.csv_0: -------------------------------------------------------------------------------- 1 | id_,conversion_timestamps 2 | 0,[144602, 1, 2] 3 | 1,[103612, 99162, 30914] 4 | 2,[1,2,3],[ 9,26, 0] 5 | 3,[185595,121096,164483] 6 | 4,[1,2,3],[419,943,602] 7 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/test/shard_test_input/partner/partner_missing_column_input.csv_1: -------------------------------------------------------------------------------- 1 | id_,conversion_timestamps 2 | 5,[1,2,3],[176, 0, 0] 3 | 6,[1,2,3],[270, 0, 0] 4 | 7,[1,2,3],[350,733,589] 5 | 8,[1,2,3],[185, 0, 0] 6 | 9,[1,2,3],[731,465, 0] 7 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/test/shard_test_input/publisher/measurement_input.csv_0: -------------------------------------------------------------------------------- 1 | id_,ad_ids,timestamps,is_click,campaign_metadata 2 | 0,[0, 1],[100,200],[1, 1],[0,0] 3 | 1,[1],[100],[1],[0] 4 | 2,[0],[100],[1],[0] 5 | 3,[0],[0],[1],[0] 6 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/test/shard_test_input/publisher/measurement_input.csv_1: -------------------------------------------------------------------------------- 1 | id_,ad_ids,timestamps,is_click,campaign_metadata 2 | 4,[2],[0],[1],[0] 3 | 5,[3],[0],[1],[0] 4 | 6,[4],[0],[0],[0] 5 | 7,[4,5],[0,99],[0,1],[0,0] 6 | 8,[6, 6],[0,1],[0,1],[0,0] 7 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/test/shard_test_input/publisher/publisher_correctness_clickonly_clicktouch_input.csv_0: -------------------------------------------------------------------------------- 1 | id_,ad_ids,timestamps,is_click,campaign_metadata 2 | 1,[1],[100],[1],[99] 3 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/test/shard_test_input/publisher/publisher_correctness_clickonly_clicktouch_input.csv_1: -------------------------------------------------------------------------------- 1 | id_,ad_ids,timestamps,is_click,campaign_metadata 2 | 2,[2],[100],[0],[99] 3 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/test/shard_test_input/publisher/publisher_correctness_clickonly_touchonly_input.csv_0: -------------------------------------------------------------------------------- 1 | id_,ad_ids,timestamps,is_click,campaign_metadata 2 | 1,[1],[100],[1],[99] 3 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/test/shard_test_input/publisher/publisher_correctness_clickonly_touchonly_input.csv_1: -------------------------------------------------------------------------------- 1 | id_,ad_ids,timestamps,is_click,campaign_metadata 2 | 2,[2],[100],[0],[99] 3 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/test/shard_test_input/publisher/publisher_correctness_clicktouch_clicktouch_input.csv_0: -------------------------------------------------------------------------------- 1 | id_,ad_ids,timestamps,is_click,campaign_metadata 2 | 1,[1],[100],[1],[99] 3 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/test/shard_test_input/publisher/publisher_correctness_clicktouch_clicktouch_input.csv_1: -------------------------------------------------------------------------------- 1 | id_,ad_ids,timestamps,is_click,campaign_metadata 2 | 2,[2],[100],[0],[99] 3 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/test/shard_test_input/publisher/publisher_correctness_clicktouch_touchonly_input.csv_0: -------------------------------------------------------------------------------- 1 | id_,ad_ids,timestamps,is_click,campaign_metadata 2 | 1,[1],[100],[1],[99] 3 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/test/shard_test_input/publisher/publisher_correctness_clicktouch_touchonly_input.csv_1: -------------------------------------------------------------------------------- 1 | id_,ad_ids,timestamps,is_click,campaign_metadata 2 | 2,[2],[100],[0],[99] 3 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/test/shard_test_input/publisher/publisher_correctness_mmt_nooverlap_input.csv_0: -------------------------------------------------------------------------------- 1 | id_,ad_ids,timestamps,is_click,campaign_metadata 2 | 1,[1],[100],[1],[99] 3 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/test/shard_test_input/publisher/publisher_correctness_mmt_nooverlap_input.csv_1: -------------------------------------------------------------------------------- 1 | id_,ad_ids,timestamps,is_click,campaign_metadata 2 | 2,[2],[100],[1],[99] 3 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/test/shard_test_input/publisher/publisher_correctness_mmt_overlap_input.csv_0: -------------------------------------------------------------------------------- 1 | id_,ad_ids,timestamps,is_click,campaign_metadata 2 | 1,[1],[100],[1],[99] 3 | 3,[1, 2],[100, 200],[1, 1],[99, 88] 4 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/test/shard_test_input/publisher/publisher_correctness_mmt_overlap_input.csv_1: -------------------------------------------------------------------------------- 1 | id_,ad_ids,timestamps,is_click,campaign_metadata 2 | 2,[2],[100],[1],[99] 3 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/test/shard_test_input/publisher/publisher_correctness_mmtonly_pcmonly_input.csv_0: -------------------------------------------------------------------------------- 1 | id_,ad_ids,timestamps,is_click,campaign_metadata 2 | 1,[1],[100],[1],[99] 3 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/test/shard_test_input/publisher/publisher_correctness_mmtonly_pcmonly_input.csv_1: -------------------------------------------------------------------------------- 1 | id_,ad_ids,timestamps,is_click,campaign_metadata 2 | 2,[2],[100],[1],[99] 3 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/test/shard_test_input/publisher/publisher_correctness_mmtpcm_mmtonly_input.csv_0: -------------------------------------------------------------------------------- 1 | id_,ad_ids,timestamps,is_click,campaign_metadata 2 | 1,[1],[100],[1],[99] 3 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/test/shard_test_input/publisher/publisher_correctness_mmtpcm_mmtonly_input.csv_1: -------------------------------------------------------------------------------- 1 | id_,ad_ids,timestamps,is_click,campaign_metadata 2 | 2,[2],[100],[1],[99] 3 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/test/shard_test_input/publisher/publisher_correctness_mmtpcm_mmtpcm_input.csv_0: -------------------------------------------------------------------------------- 1 | id_,ad_ids,timestamps,is_click,campaign_metadata 2 | 1,[1],[100],[1],[99] 3 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/test/shard_test_input/publisher/publisher_correctness_mmtpcm_mmtpcm_input.csv_1: -------------------------------------------------------------------------------- 1 | id_,ad_ids,timestamps,is_click,campaign_metadata 2 | 2,[2],[100],[1],[99] 3 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/test/shard_test_input/publisher/publisher_correctness_mmtpcm_pcmonly_input.csv_0: -------------------------------------------------------------------------------- 1 | id_,ad_ids,timestamps,is_click,campaign_metadata 2 | 1,[1],[100],[1],[99] 3 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/test/shard_test_input/publisher/publisher_correctness_mmtpcm_pcmonly_input.csv_1: -------------------------------------------------------------------------------- 1 | id_,ad_ids,timestamps,is_click,campaign_metadata 2 | 2,[2],[100],[1],[99] 3 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/test/shard_test_input/publisher/publisher_correctness_old_input.csv_0: -------------------------------------------------------------------------------- 1 | id_,ad_ids,timestamps,is_click,campaign_metadata 2 | 0,[ 8,-1,-1],[144602,287401,287402],[0,0,0],[ 37,1000,1000] 3 | 1,[13,19,28],[103612, 99162, 30914],[1,1,0],[133,246,125] 4 | 2,[ 2,14,-1],[ 42362, 91231,287401],[1,0,0],[ 16, 114,1000] 5 | 3,[22, 3,12],[185595,121096,164483],[0,0,1],[161,229,113] 6 | 4,[15,19,25],[170616,195253,149163],[0,0,1],[ 60,179, 31] 7 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/test/shard_test_input/publisher/publisher_correctness_old_input.csv_1: -------------------------------------------------------------------------------- 1 | id_,ad_ids,timestamps,is_click,campaign_metadata 2 | 5,[ 9,-1,-1],[ 81405,287401,287402],[1,0,0],[ 41,1000,1000] 3 | 6,[ 5,-1,-1],[ 90135,287401,287402],[1,0,0],[ 162,1000,1000] 4 | 7,[ 0,21,19],[188839, 33524, 63106],[0,1,1],[135,141, 89] 5 | 8,[ 3,-1,-1],[112219,287401,287402],[0,0,0],[ 95,1000,1000] 6 | 9,[ 0, 0,-1],[ 85036,122203,287401],[0,1,0],[ 195, 116,1000] 7 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/test/shard_test_input/publisher/publisher_input.csv_0: -------------------------------------------------------------------------------- 1 | id_,ad_ids,timestamps,is_click,campaign_metadata 2 | 0,[ 8,-1,-1],[144602,287401,287402],[0,0,0],[ 37,1000,1000] 3 | 1,[13,19,28],[103612, 99162, 30914],[1,1,0],[133,246,125] 4 | 2,[ 2,14,-1],[ 42362, 91231,287401],[1,0,0],[ 16, 114,1000] 5 | 3,[22, 3,12],[185595,121096,164483],[0,0,1],[161,229,113] 6 | 4,[15,19,25],[170616,195253,149163],[0,0,1],[ 60,179, 31] 7 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/test/shard_test_input/publisher/publisher_input.csv_1: -------------------------------------------------------------------------------- 1 | id_,ad_ids,timestamps,is_click,campaign_metadata 2 | 5,[ 9,-1,-1],[ 81405,287401,287402],[1,0,0],[ 41,1000,1000] 3 | 6,[ 5,-1,-1],[ 90135,287401,287402],[1,0,0],[ 162,1000,1000] 4 | 7,[ 0,21,19],[188839, 33524, 63106],[0,1,1],[135,141, 89] 5 | 8,[ 3,-1,-1],[112219,287401,287402],[0,0,0],[ 95,1000,1000] 6 | 9,[ 0, 0,-1],[ 85036,122203,287401],[0,1,0],[ 195, 116,1000] 7 | -------------------------------------------------------------------------------- /fbpcs/emp_games/attribution/test/test_correctness/last_click_1d.measurement.json: -------------------------------------------------------------------------------- 1 | { 2 | "last_click_1d": { 3 | "measurement": { 4 | "1": { 5 | "sales": 20189, 6 | "convs": 13 7 | }, 8 | "2": { 9 | "sales": 9080, 10 | "convs": 6 11 | }, 12 | "3": { 13 | "sales": 5044, 14 | "convs": 2 15 | } 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /fbpcs/emp_games/common/TestUtil.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | #pragma once 9 | 10 | #include 11 | 12 | namespace private_measurement::test_util { 13 | 14 | // Get the basedir from the file path 15 | std::string getBaseDirFromPath(const std::string& filePath); 16 | 17 | } // namespace private_measurement::test_util 18 | -------------------------------------------------------------------------------- /fbpcs/emp_games/common/test/test_data/input.csv: -------------------------------------------------------------------------------- 1 | id,field1,field2,field3 2 | 1,foo,bubba,gas 3 | 2,trio,[1,2,3],[4,5,6] 4 | -------------------------------------------------------------------------------- /fbpcs/emp_games/dotproduct/test/test_correctness/expected_result_0.csv: -------------------------------------------------------------------------------- 1 | [0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0014484429,0.0,0.0,0.06863192,0.14435472,0.033341374,0.0,0.12865546,0.020235294,0.14462507,0.0,0.17825273,0.0,0.0,0.0,0.46016255,0.0,0.0,0.12808724,0.4376182,0.00039080592,0.033707865,0.13740458,0.0,0.0005045213,0.07516815,0.03580519,1.0,0.0,0.46016255,0.050997782,0.46016258,0.0,0.0024472321,0.0,0.8,0.0,0.0,0.042172838,0.50503826,0.0,1.0,0.1516517] 2 | -------------------------------------------------------------------------------- /fbpcs/emp_games/dotproduct/test/test_correctness/expected_result_1.csv: -------------------------------------------------------------------------------- 1 | [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 2 | 3 | -------------------------------------------------------------------------------- /fbpcs/emp_games/dotproduct/test/test_correctness/outpub_dotprodtest_0.csv: -------------------------------------------------------------------------------- 1 | [0,0,0,0,0,0,0,0.001448442,0,0,0.06863192,0.14435472,0.033341374,0,0.12865546,0.020235294,0.14462507,0,0.17825273,0,0,0,0.46016255,0,0,0.128087239,0.4376182,0.000390805,0.033707865,0.13740458,0,0.000504521,0.07516815,0.03580519,1,0,0.46016255,0.050997782,0.46016258,0,0.002447232,0,0.8,0,0,0.042172838,0.505038259,0,1,0.1516517] -------------------------------------------------------------------------------- /fbpcs/emp_games/dotproduct/test/test_correctness/outpub_expected_result.csv: -------------------------------------------------------------------------------- 1 | [0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0014484429,0.0,0.0,0.06863192,0.14435472,0.033341374,0.0,0.12865546,0.020235294,0.14462507,0.0,0.17825273,0.0,0.0,0.0,0.46016255,0.0,0.0,0.12808724,0.4376182,0.00039080592,0.033707865,0.13740458,0.0,0.0005045213,0.07516815,0.03580519,1.0,0.0,0.46016255,0.050997782,0.46016258,0.0,0.0024472321,0.0,0.8,0.0,0.0,0.042172838,0.50503826,0.0,1.0,0.1516517] 2 | -------------------------------------------------------------------------------- /fbpcs/emp_games/dotproduct/test/test_correctness/partner_dotprodtest_0.csv: -------------------------------------------------------------------------------- 1 | index,row_id,label_secret_share 2 | 0,0,1000101010111011 3 | 1,1,100001001111110 4 | 2,10,1010110000101011 5 | 3,100,1100000001011100 6 | 4,1000,1110101110010001 7 | 5,10000,1111001001011110 8 | 6,100000,1000100001101111 9 | 7,100001,1100011010001010 10 | 8,100002,111100000101010 11 | 9,100003,1110000101011001 12 | -------------------------------------------------------------------------------- /fbpcs/emp_games/dotproduct/test/test_correctness/partner_dotprodtest_1.csv: -------------------------------------------------------------------------------- 1 | index,row_id,label_secret_share 2 | 0,0,1000101010111011 3 | 1,1,100001001111110 4 | 2,10,1010110000101011 5 | 3,100,1100000001011100 6 | 4,1000,1110101110010001 7 | 5,10000,1111001001011110 8 | 6,100000,1000100001101111 9 | 7,100001,1100011010001010 10 | 8,100002,111100000101010 11 | 9,100003,1110000101011001 12 | -------------------------------------------------------------------------------- /fbpcs/emp_games/he_aggregation/test/test_correctness/dataset1/dataproc_partner_0.csv: -------------------------------------------------------------------------------- 1 | id_,conversion_timestamps,conversion_values,conversion_metadata 2 | 0,[0,0,0,0],[0,0,0,0],[0,0,0,0] 3 | 1,[0,0,0,0],[0,0,0,0],[0,0,0,0] 4 | 2,[0,0,0,0],[0,0,0,0],[0,0,0,0] 5 | 3,[0,0,0,0],[0,0,0,0],[0,0,0,0] 6 | 4,[0,0,0,0],[0,0,0,0],[0,0,0,0] 7 | -------------------------------------------------------------------------------- /fbpcs/emp_games/he_aggregation/test/test_correctness/dataset1/dataproc_publisher_0.csv: -------------------------------------------------------------------------------- 1 | id_,ad_ids,timestamps,is_click,campaign_metadata 2 | 0,[1111,1111,1111,1111],[0,0,0,1637904761],[0,0,0,1],[0,0,0,0] 3 | 1,[2222,2222,2222,2222],[0,0,1637904761,1637882717],[0,0,1,1],[0,0,0,0] 4 | 2,[3333,3333,3333,3333],[0,0,0,1638324913],[0,0,0,1],[0,0,0,0] 5 | 3,[4444,4444,4444,4444],[0,0,0,1638033525],[0,0,0,1],[0,0,0,0] 6 | 4,[4444,4444,5555,5555],[0,0,0,1638359591],[0,0,0,1],[0,0,0,0] 7 | -------------------------------------------------------------------------------- /fbpcs/emp_games/he_aggregation/test/test_correctness/dataset1/output.json: -------------------------------------------------------------------------------- 1 | {"1111":"2","2222":"0","3333":"0","4444":"24","5555":"8"} 2 | -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/ad_object_format/partner_attribution_correctness_clickonly_clicktouch_out.json_0: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"measurement":{"1":{"sales":4015377087675808771,"convs":2339333365645935705}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/ad_object_format/partner_attribution_correctness_clickonly_clicktouch_out.json_1: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"measurement":{"2":{"convs":5626881271453480588,"sales":-6602822726234258103}}},"last_touch_1d":{"measurement":{"2":{"sales":-335423711886777623,"convs":3563998867490069709}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/ad_object_format/partner_attribution_correctness_clickonly_touchonly_out.json_0: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"measurement":{"1":{"convs":398230577472836243,"sales":-9007621493509640828}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/ad_object_format/partner_attribution_correctness_clickonly_touchonly_out.json_1: -------------------------------------------------------------------------------- 1 | {"last_touch_1d":{"measurement":{"2":{"convs":8801805897636964614,"sales":1000886337942892802}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/ad_object_format/partner_attribution_correctness_clicktouch_clicktouch_out.json_0: -------------------------------------------------------------------------------- 1 | {"last_touch_1d":{"measurement":{"1":{"convs":-7953494799998951790,"sales":469981204952528344}}},"last_click_1d":{"measurement":{"1":{"sales":-3619097792957779804,"convs":-3084026317562107745}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/ad_object_format/partner_attribution_correctness_clicktouch_clicktouch_out.json_1: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"measurement":{"2":{"sales":-3083543843279901705,"convs":-74023519432736084}}},"last_touch_1d":{"measurement":{"2":{"sales":7428666711014585971,"convs":-1303492426844769821}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/ad_object_format/partner_attribution_correctness_clicktouch_touchonly_out.json_0: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"measurement":{"1":{"convs":-831273128088263587,"sales":339959610281870489}}},"last_touch_1d":{"measurement":{"1":{"convs":-4250297646419635499,"sales":-572762462605311503}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/ad_object_format/partner_attribution_correctness_clicktouch_touchonly_out.json_1: -------------------------------------------------------------------------------- 1 | {"last_touch_1d":{"measurement":{"2":{"convs":-3252586162670731300,"sales":-5624114551346561631}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/ad_object_format/partner_attribution_correctness_kanonymity_allpass_out.json_0: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"measurement":{"1":{"convs":8567454934544797490,"sales":-549714915296783568},"2":{"convs":-1556596985914830195,"sales":1856348425828027660},"3":{"convs":5570643385219585457,"sales":5080888565359967278}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/ad_object_format/partner_attribution_correctness_kanonymity_allpass_out.json_1: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"measurement":{"1":{"convs":6342535489482339868,"sales":5026277477190209899},"2":{"sales":-6280359729343351778,"convs":2260404887248098076},"3":{"convs":-4295038095981421875,"sales":1355467971043208066}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/ad_object_format/partner_attribution_correctness_mmt_nooverlap_out.json_0: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"measurement":{"1":{"sales":-88789469301523645,"convs":-1526628614596479280}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/ad_object_format/partner_attribution_correctness_mmt_nooverlap_out.json_1: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"measurement":{"2":{"sales":293125583309752626,"convs":-8267916534730927107}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/ad_object_format/partner_attribution_correctness_mmt_overlap_out.json_0: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"measurement":{"1":{"convs":-7778966545999272532,"sales":2434515429026417364},"2":{"sales":6520459171713408031,"convs":7710037595915432275}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/ad_object_format/partner_attribution_correctness_mmt_overlap_out.json_1: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"measurement":{"2":{"convs":-6493242815810173449,"sales":-5328513596097183695}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/ad_object_format/partner_attribution_correctness_mmtonly_pcmonly_out.json_0: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"measurement":{"1":{"sales":3712862996424573617,"convs":4118106542679828446}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/ad_object_format/partner_attribution_correctness_mmtonly_pcmonly_out.json_1: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"pcm_ify":{"0":"0"}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/ad_object_format/partner_attribution_correctness_mmtpcm_mmtonly_out.json_0: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"pcm_ify":{"0":"0"},"measurement":{"1":{"convs":8403343080565778698,"sales":1352521044278659045}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/ad_object_format/partner_attribution_correctness_mmtpcm_mmtonly_out.json_1: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"measurement":{"2":{"convs":4950590048230423620,"sales":-1590306841665456551}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/ad_object_format/partner_attribution_correctness_mmtpcm_mmtpcm_out.json_0: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"pcm_ify":{"0":"0"},"measurement":{"1":{"sales":-4461502830203081730,"convs":-8720279508226807239}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/ad_object_format/partner_attribution_correctness_mmtpcm_mmtpcm_out.json_1: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"measurement":{"2":{"sales":-7414684752188901289,"convs":-257500133922020909}},"pcm_ify":{"0":"0"}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/ad_object_format/partner_attribution_correctness_mmtpcm_pcmonly_out.json_0: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"measurement":{"1":{"sales":-1882722452516819703,"convs":745369295910844736}},"pcm_ify":{"0":"0"}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/ad_object_format/partner_attribution_correctness_mmtpcm_pcmonly_out.json_1: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"pcm_ify":{"0":"0"}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/ad_object_format/partner_attribution_correctness_old_out.json_0: -------------------------------------------------------------------------------- 1 | { 2 | "last_click_1d": { 3 | "measurement": { 4 | "1": { 5 | "sales": 275573955596555557, 6 | "convs": 8409666795021481610 7 | }, 8 | "0": { 9 | "sales": -6191251497413128867, 10 | "convs": -5520892897392601981 11 | } 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/ad_object_format/partner_attribution_out.json_0: -------------------------------------------------------------------------------- 1 | { 2 | "last_click_1d": { 3 | "measurement": { 4 | "1": { 5 | "sales": 275573955596555557, 6 | "convs": 8409666795021481610 7 | }, 8 | "0": { 9 | "sales": -6191251497413128867, 10 | "convs": -5520892897392601981 11 | } 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/ad_object_format/plaintext_attribution_out.json_0: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"measurement":{"1":{"sales":3,"convs":2},"0":{"sales":100,"convs":1}}}} 2 | -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/ad_object_format/plaintext_attribution_out.json_1: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"measurement":{"6":{"sales":0,"convs":0},"5":{"sales":100,"convs":1},"4":{"sales":0,"convs":0},"3":{"sales":0,"convs":0},"2":{"sales":0,"convs":0},"0":{"sales":2,"convs":1}}}} 2 | -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/ad_object_format/publisher_attribution_correctness_clickonly_clicktouch_out.json_0: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"measurement":{"1":{"convs":2339333365645935704,"sales":4015377087675809770}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/ad_object_format/publisher_attribution_correctness_clickonly_clicktouch_out.json_1: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"measurement":{"2":{"convs":5626881271453480588,"sales":-6602822726234258103}}},"last_touch_1d":{"measurement":{"2":{"sales":-335423711886778109,"convs":3563998867490069708}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/ad_object_format/publisher_attribution_correctness_clickonly_touchonly_out.json_0: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"measurement":{"1":{"convs":398230577472836242,"sales":-9007621493509640595}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/ad_object_format/publisher_attribution_correctness_clickonly_touchonly_out.json_1: -------------------------------------------------------------------------------- 1 | {"last_touch_1d":{"measurement":{"2":{"convs":8801805897636964615,"sales":1000886337942893288}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/ad_object_format/publisher_attribution_correctness_clicktouch_clicktouch_out.json_0: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"measurement":{"1":{"convs":-3084026317562107746,"sales":-3619097792957779123}}},"last_touch_1d":{"measurement":{"1":{"convs":-7953494799998951789,"sales":469981204952528433}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/ad_object_format/publisher_attribution_correctness_clicktouch_clicktouch_out.json_1: -------------------------------------------------------------------------------- 1 | {"last_touch_1d":{"measurement":{"2":{"convs":-1303492426844769822,"sales":7428666711014585753}}},"last_click_1d":{"measurement":{"2":{"convs":-74023519432736084,"sales":-3083543843279901705}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/ad_object_format/publisher_attribution_correctness_clicktouch_touchonly_out.json_0: -------------------------------------------------------------------------------- 1 | {"last_touch_1d":{"measurement":{"1":{"convs":-4250297646419635500,"sales":-572762462605311464}}},"last_click_1d":{"measurement":{"1":{"sales":339959610281871216,"convs":-831273128088263588}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/ad_object_format/publisher_attribution_correctness_clicktouch_touchonly_out.json_1: -------------------------------------------------------------------------------- 1 | {"last_touch_1d":{"measurement":{"2":{"sales":-5624114551346561461,"convs":-3252586162670731299}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/ad_object_format/publisher_attribution_correctness_kanonymity_allpass_out.json_0: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"measurement":{"1":{"convs":8567454934544797562,"sales":-549714915296783769},"3":{"sales":5080888565359967603,"convs":5570643385219585535},"2":{"sales":1856348425828027620,"convs":-1556596985914830128}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/ad_object_format/publisher_attribution_correctness_kanonymity_allpass_out.json_1: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"measurement":{"1":{"convs":6342535489482339924,"sales":5026277477190209588},"2":{"sales":-6280359729343351303,"convs":2260404887248098113},"3":{"convs":-4295038095981421950,"sales":1355467971043207699}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/ad_object_format/publisher_attribution_correctness_mmt_nooverlap_out.json_0: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"measurement":{"1":{"convs":-1526628614596479279,"sales":-88789469301524310}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/ad_object_format/publisher_attribution_correctness_mmt_nooverlap_out.json_1: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"measurement":{"2":{"convs":-8267916534730927107,"sales":293125583309752626}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/ad_object_format/publisher_attribution_correctness_mmt_overlap_out.json_0: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"measurement":{"1":{"convs":-7778966545999272531,"sales":2434515429026416957},"2":{"sales":6520459171713409012,"convs":7710037595915432274}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/ad_object_format/publisher_attribution_correctness_mmt_overlap_out.json_1: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"measurement":{"2":{"convs":-6493242815810173449,"sales":-5328513596097183695}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/ad_object_format/publisher_attribution_correctness_mmtonly_pcmonly_out.json_0: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"measurement":{"1":{"convs":4118106542679828447,"sales":3712862996424573272}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/ad_object_format/publisher_attribution_correctness_mmtonly_pcmonly_out.json_1: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"pcm_ify":{"99":"3"}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/ad_object_format/publisher_attribution_correctness_mmtpcm_mmtonly_out.json_0: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"pcm_ify":{"99":"3"},"measurement":{"1":{"convs":8403343080565778699,"sales":1352521044278658060}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/ad_object_format/publisher_attribution_correctness_mmtpcm_mmtonly_out.json_1: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"measurement":{"2":{"convs":4950590048230423621,"sales":-1590306841665456717}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/ad_object_format/publisher_attribution_correctness_mmtpcm_mmtpcm_out.json_0: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"pcm_ify":{"99":"3"},"measurement":{"1":{"convs":-8720279508226807240,"sales":-4461502830203082729}}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/ad_object_format/publisher_attribution_correctness_mmtpcm_mmtpcm_out.json_1: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"measurement":{"2":{"sales":-7414684752188900419,"convs":-257500133922020910}},"pcm_ify":{"99":"3"}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/ad_object_format/publisher_attribution_correctness_mmtpcm_pcmonly_out.json_0: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"measurement":{"1":{"sales":-1882722452516819232,"convs":745369295910844737}},"pcm_ify":{"99":"3"}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/ad_object_format/publisher_attribution_correctness_mmtpcm_pcmonly_out.json_1: -------------------------------------------------------------------------------- 1 | {"last_click_1d":{"pcm_ify":{"99":"3"}}} -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/ad_object_format/publisher_attribution_correctness_old_out.json_0: -------------------------------------------------------------------------------- 1 | { 2 | "last_click_1d": { 3 | "measurement": { 4 | "1": { 5 | "sales": 275573955596555558, 6 | "convs": 8409666795021481608 7 | }, 8 | "0": { 9 | "sales": -6191251497413128903, 10 | "convs": -5520892897392601982 11 | } 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/ad_object_format/publisher_attribution_corrupted_out.json_0: -------------------------------------------------------------------------------- 1 | { 2 | "last_click_1d": { 3 | "measurement": { 4 | "1": { 5 | "sales": 275573955596555558, 6 | "convs": 8409666795021481608 7 | }, 8 | "0": { 9 | "sales": -6191251497413128903, 10 | "convs": -5520892897392601982 11 | } 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/ad_object_format/publisher_attribution_corrupted_out.json_1: -------------------------------------------------------------------------------- 1 | { 2 | "last_click_1d": { 3 | "measurement": { 4 | "6": { 5 | "sales": -7939904078183976002, 6 | "convs": -2264595383510740388 7 | }, 8 | "5": { 9 | "sales": -5703998202437140416, 10 | "convs": -4448452860655093451 11 | }, 12 | "4": { 13 | "sales": -2561863325145231692, 14 | "convs": 5644255787246586329 15 | -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/ad_object_format/publisher_attribution_out.json_0: -------------------------------------------------------------------------------- 1 | { 2 | "last_click_1d": { 3 | "measurement": { 4 | "1": { 5 | "sales": 275573955596555558, 6 | "convs": 8409666795021481608 7 | }, 8 | "0": { 9 | "sales": -6191251497413128903, 10 | "convs": -5520892897392601982 11 | } 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/combiner_logic_test/expected_out_shards_2.json: -------------------------------------------------------------------------------- 1 | { 2 | "clicks" : 190 3 | } 4 | -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/combiner_logic_test/expected_out_shards_3.json: -------------------------------------------------------------------------------- 1 | { 2 | "clicks" : 200 3 | } 4 | -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/combiner_logic_test/input_partner.json_0: -------------------------------------------------------------------------------- 1 | { 2 | "clicks": -6030888045152723274 3 | } 4 | -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/combiner_logic_test/input_partner.json_1: -------------------------------------------------------------------------------- 1 | { 2 | "clicks": 710100233786309728 3 | } 4 | -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/combiner_logic_test/input_partner.json_2: -------------------------------------------------------------------------------- 1 | { 2 | "clicks": -6030888045152723268 3 | } 4 | -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/combiner_logic_test/input_publisher.json_0: -------------------------------------------------------------------------------- 1 | { 2 | "clicks": -6030888045152723246 3 | } 4 | -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/combiner_logic_test/input_publisher.json_1: -------------------------------------------------------------------------------- 1 | { 2 | "clicks": 710100233786309690 3 | } 4 | -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/combiner_logic_test/input_publisher.json_2: -------------------------------------------------------------------------------- 1 | { 2 | "clicks": -6030888045152723274 3 | } 4 | -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/combiner_logic_test/plaintext_input_partner.json_0: -------------------------------------------------------------------------------- 1 | { 2 | "clicks": 100 3 | } 4 | -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/combiner_logic_test/plaintext_input_partner.json_1: -------------------------------------------------------------------------------- 1 | { 2 | "clicks": 90 3 | } 4 | -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/combiner_logic_test/plaintext_input_partner.json_2: -------------------------------------------------------------------------------- 1 | { 2 | "clicks": 10 3 | } 4 | -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/combiner_logic_test/plaintext_input_publisher.json_0: -------------------------------------------------------------------------------- 1 | { 2 | "clicks": 100 3 | } 4 | -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/combiner_logic_test/plaintext_input_publisher.json_1: -------------------------------------------------------------------------------- 1 | { 2 | "clicks": 90 3 | } 4 | -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/combiner_logic_test/plaintext_input_publisher.json_2: -------------------------------------------------------------------------------- 1 | { 2 | "clicks": 10 3 | } 4 | -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/expected_shard_aggregator_correctness_test/expected_shard_aggregator_correctness_clickonly_touchonly_out.json: -------------------------------------------------------------------------------- 1 | { 2 | "last_click_1d": { 3 | "measurement": { 4 | "1": { 5 | "sales": 1001, 6 | "convs": 1 7 | } 8 | } 9 | }, 10 | "last_touch_1d": { 11 | "measurement": { 12 | "2": { 13 | "sales": 1002, 14 | "convs": 1 15 | } 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/expected_shard_aggregator_correctness_test/expected_shard_aggregator_correctness_kanonymity_allfail_out.json: -------------------------------------------------------------------------------- 1 | { 2 | "last_click_1d": { 3 | "measurement": { 4 | "1": { 5 | "sales": -1, 6 | "convs": -1 7 | }, 8 | "2": { 9 | "sales": -1, 10 | "convs": -1 11 | }, 12 | "3": { 13 | "sales": -1, 14 | "convs": -1 15 | } 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/expected_shard_aggregator_correctness_test/expected_shard_aggregator_correctness_kanonymity_allpass_out.json: -------------------------------------------------------------------------------- 1 | { 2 | "last_click_1d": { 3 | "measurement": { 4 | "1": { 5 | "sales": 694, 6 | "convs": 144 7 | }, 8 | "2": { 9 | "sales": 975, 10 | "convs": 186 11 | }, 12 | "3": { 13 | "sales": 750, 14 | "convs": 157 15 | } 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/expected_shard_aggregator_correctness_test/expected_shard_aggregator_correctness_kanonymity_mix_out.json: -------------------------------------------------------------------------------- 1 | { 2 | "last_click_1d": { 3 | "measurement": { 4 | "1": { 5 | "sales": 895, 6 | "convs": 178 7 | }, 8 | "2": { 9 | "sales": -1, 10 | "convs": -1 11 | }, 12 | "3": { 13 | "sales": -1, 14 | "convs": -1 15 | } 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/expected_shard_aggregator_correctness_test/expected_shard_aggregator_correctness_mmt_nooverlap_out.json: -------------------------------------------------------------------------------- 1 | { 2 | "last_click_1d": { 3 | "measurement": { 4 | "1": { 5 | "sales": 1001, 6 | "convs": 1 7 | }, 8 | "2": { 9 | "sales": 0, 10 | "convs": 0 11 | } 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/expected_shard_aggregator_correctness_test/expected_shard_aggregator_correctness_mmt_overlap_out.json: -------------------------------------------------------------------------------- 1 | { 2 | "last_click_1d": { 3 | "measurement": { 4 | "1": { 5 | "sales": 1001, 6 | "convs": 1 7 | }, 8 | "2": { 9 | "sales": 1003, 10 | "convs": 1 11 | } 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/expected_shard_aggregator_correctness_test/expected_shard_aggregator_correctness_mmtonly_pcmonly_out.json: -------------------------------------------------------------------------------- 1 | { 2 | "last_click_1d": { 3 | "measurement": { 4 | "1": { 5 | "sales": 1001, 6 | "convs": 1 7 | } 8 | }, 9 | "pcm_ify": [ 10 | { 11 | "campaign_bits": 99, 12 | "conversion_bits": 3, 13 | "count": 1 14 | } 15 | ] 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/expected_shard_aggregator_correctness_test/expected_shard_aggregator_correctness_mmtpcm_pcmonly_out.json: -------------------------------------------------------------------------------- 1 | { 2 | "last_click_1d": { 3 | "measurement": { 4 | "1": { 5 | "sales": 1001, 6 | "convs": 1 7 | } 8 | }, 9 | "pcm_ify": [ 10 | { 11 | "campaign_bits": 99, 12 | "conversion_bits": 3, 13 | "count": 2 14 | } 15 | ] 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/shard_validation_test/invalid_aggregation_name.json: -------------------------------------------------------------------------------- 1 | { 2 | "last_click_1d": { 3 | "metrics": { 4 | "1": { 5 | "convs": -831273128088263600, 6 | "sales": 339959610281870460 7 | } 8 | } 9 | }, 10 | "last_touch_1d": { 11 | "measurement": { 12 | "1": { 13 | "convs": -4250297646419635700, 14 | "sales": -572762462605311500 15 | } 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/shard_validation_test/invalid_bad_structure.json: -------------------------------------------------------------------------------- 1 | { 2 | "measurement": { 3 | "1": { 4 | "convs": -831273128088263600, 5 | "sales": 339959610281870460 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/shard_validation_test/invalid_empty_map_0.json: -------------------------------------------------------------------------------- 1 | { 2 | } 3 | -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/shard_validation_test/invalid_empty_map_1.json: -------------------------------------------------------------------------------- 1 | { 2 | "last_click_1d": { 3 | }, 4 | "last_touch_1d": { 5 | "measurement": { 6 | "1": { 7 | "convs": -4250297646419635700, 8 | "sales": -572762462605311500 9 | } 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/shard_validation_test/invalid_pcm_shard.json: -------------------------------------------------------------------------------- 1 | { 2 | "last_click_1d": { 3 | "pcm_ify": { 4 | "88:3": { 5 | "campaign_bits": 88, 6 | "conversion_bits": 3, 7 | "count": 3 8 | }, 9 | "99:3": { 10 | "campaign_bits": 99, 11 | "conversion_bits": 3, 12 | "count": 4 13 | }, 14 | "99:5": { 15 | "campaign_bits": 99, 16 | "conversion_bits": 5, 17 | "count": 2 18 | } 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/shard_validation_test/valid_measurement_shard.json: -------------------------------------------------------------------------------- 1 | { 2 | "last_click_1d": { 3 | "measurement": { 4 | "1": { 5 | "convs": -831273128088263600, 6 | "sales": 339959610281870460 7 | } 8 | } 9 | }, 10 | "last_touch_1d": { 11 | "measurement": { 12 | "1": { 13 | "convs": -4250297646419635700, 14 | "sales": -572762462605311500 15 | } 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/test_new_parser/accumulate_test_input_plaintext_1.json: -------------------------------------------------------------------------------- 1 | { 2 | "a" : 2, 3 | "b" : 3 4 | } 5 | -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/test_new_parser/accumulate_test_input_plaintext_2.json: -------------------------------------------------------------------------------- 1 | { 2 | "a" : 98, 3 | "b" : 97 4 | } 5 | -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/test_new_parser/accumulate_test_result_plaintext.json: -------------------------------------------------------------------------------- 1 | { 2 | "a" : 100, 3 | "b" : 100 4 | } 5 | -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/test_new_parser/invalid_map.json: -------------------------------------------------------------------------------- 1 | { 2 | "measurement": "foo" 3 | } 4 | -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/test_new_parser/list_metrics.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "a": 2 4 | }, 5 | 3 6 | ] 7 | -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/test_new_parser/simple_map.json: -------------------------------------------------------------------------------- 1 | { 2 | "measurement": 339959610281870460 3 | } 4 | -------------------------------------------------------------------------------- /fbpcs/emp_games/pcf2_shard_combiner/test/test_new_parser/single_value.json: -------------------------------------------------------------------------------- 1 | 3 2 | -------------------------------------------------------------------------------- /fbpcs/emp_games/private_id_dfca_aggregator/test/outputs/expected_result_2.csv: -------------------------------------------------------------------------------- 1 | publisher_user_id,partner_user_id 2 | first,23465e9f-58ef-4ac6-a825-245694384b56 3 | last,6227d48f-486e-4a4f-9187-68b5cd2d3ecc 4 | -------------------------------------------------------------------------------- /fbpcs/experimental/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebookresearch/fbpcs/f7c0847de52003552b3976e78acaf9836feedadb/fbpcs/experimental/__init__.py -------------------------------------------------------------------------------- /fbpcs/experimental/cloud_logs/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebookresearch/fbpcs/f7c0847de52003552b3976e78acaf9836feedadb/fbpcs/experimental/cloud_logs/__init__.py -------------------------------------------------------------------------------- /fbpcs/experimental/cloud_logs/dummy_log_retriever.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # Copyright (c) Meta Platforms, Inc. and affiliates. 3 | # 4 | # This source code is licensed under the MIT license found in the 5 | # LICENSE file in the root directory of this source tree. 6 | 7 | # pyre-strict 8 | from fbpcs.experimental.cloud_logs.log_retriever import LogRetriever 9 | 10 | 11 | class DummyLogRetriever(LogRetriever): 12 | def get_log_url(self, container_id: str) -> str: 13 | return "" 14 | -------------------------------------------------------------------------------- /fbpcs/experimental/cloud_logs/test/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebookresearch/fbpcs/f7c0847de52003552b3976e78acaf9836feedadb/fbpcs/experimental/cloud_logs/test/__init__.py -------------------------------------------------------------------------------- /fbpcs/infra/certificate/certificate_provider.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # Copyright (c) Meta Platforms, Inc. and affiliates. 3 | # 4 | # This source code is licensed under the MIT license found in the 5 | # LICENSE file in the root directory of this source tree. 6 | 7 | # pyre-strict 8 | 9 | from abc import ABC, abstractmethod 10 | from typing import Optional 11 | 12 | 13 | class CertificateProvider(ABC): 14 | @abstractmethod 15 | def get_certificate(self) -> Optional[str]: 16 | pass 17 | -------------------------------------------------------------------------------- /fbpcs/infra/certificate/service.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # Copyright (c) Meta Platforms, Inc. and affiliates. 3 | # 4 | # This source code is licensed under the MIT license found in the 5 | # LICENSE file in the root directory of this source tree. 6 | 7 | # pyre-strict 8 | 9 | from abc import ABC, abstractmethod 10 | 11 | 12 | class X509Certificate(ABC): 13 | """A class which represents a X.509 Certificate""" 14 | 15 | @abstractmethod 16 | def public_bytes(self) -> bytes: 17 | """Returns the certificate as PEM-encoded bytes""" 18 | pass 19 | -------------------------------------------------------------------------------- /fbpcs/infra/cloud_bridge/.gitignore: -------------------------------------------------------------------------------- 1 | .gradle 2 | build 3 | -------------------------------------------------------------------------------- /fbpcs/infra/cloud_bridge/advertiser_infra_logging/lambda_logging_new_log_group/variable.tf: -------------------------------------------------------------------------------- 1 | variable "region" { 2 | description = "region of the advertiser aws resources" 3 | default = "us-west-2" 4 | } 5 | 6 | variable "lambda_name" { 7 | type = string 8 | description = "Name of the lambda used in execution of TEE-PL" 9 | } 10 | 11 | variable "kinesis_log_stream_name" { 12 | type = string 13 | description = "Name of the kinesys stream where various cloudwatch log groups (s3, Lambda etc.) would push logs" 14 | default = "kinesis-log-stream-advertiser" 15 | } 16 | -------------------------------------------------------------------------------- /fbpcs/infra/cloud_bridge/bulk_onborading/business_access_tokens.csv: -------------------------------------------------------------------------------- 1 | business_id,access_token 2 | , 3 | , 4 | -------------------------------------------------------------------------------- /fbpcs/infra/cloud_bridge/bulk_onborading/pixels.csv: -------------------------------------------------------------------------------- 1 | business_id,pixel_id 2 | , 3 | , 4 | -------------------------------------------------------------------------------- /fbpcs/infra/cloud_bridge/clean_up_agent/output.tf: -------------------------------------------------------------------------------- 1 | output "clean_up_agent_lambda_iam_role_arn" { 2 | value = aws_iam_role.clean_up_agent_lambda_iam.arn 3 | description = "Clean up agent lambda IAM role ARN." 4 | } 5 | -------------------------------------------------------------------------------- /fbpcs/infra/cloud_bridge/data_ingestion/output.tf: -------------------------------------------------------------------------------- 1 | output "firehose_stream_name" { 2 | value = aws_kinesis_firehose_delivery_stream.extended_s3_stream.name 3 | description = "The Kinesis firehose stream name" 4 | } 5 | 6 | output "events_data_crawler_arn" { 7 | value = aws_glue_crawler.mpc_events_crawler.arn 8 | description = "The events_data Glue crawler ARN" 9 | } 10 | -------------------------------------------------------------------------------- /fbpcs/infra/cloud_bridge/data_preprocessing/output.tf: -------------------------------------------------------------------------------- 1 | output "ingestion_input_data_validation_lambda_arn" { 2 | value = aws_lambda_function.ingestion_input_data_validation_lambda.arn 3 | description = "The ingestion input data validation Lambda job ARN" 4 | } 5 | -------------------------------------------------------------------------------- /fbpcs/infra/cloud_bridge/deployment_helper/aws/iam_policies/semi_automated_statement.json: -------------------------------------------------------------------------------- 1 | { 2 | "Effect": "Allow", 3 | "Action": [ 4 | "glue:Get*", 5 | "glue:BatchGet*", 6 | "glue:List*", 7 | "glue:QuerySchemaVersionMetadata", 8 | "glue:CheckSchemaVersionValidity", 9 | "glue:SearchTables" 10 | ], 11 | "Resource": [ 12 | "${SEMI_AUTOMATED_GLUE_JOB_ARN}" 13 | ] 14 | } 15 | -------------------------------------------------------------------------------- /fbpcs/infra/cloud_bridge/deployment_helper/aws/test/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebookresearch/fbpcs/f7c0847de52003552b3976e78acaf9836feedadb/fbpcs/infra/cloud_bridge/deployment_helper/aws/test/__init__.py -------------------------------------------------------------------------------- /fbpcs/infra/cloud_bridge/deployment_helper/aws/test/test_resources/test_aws_deployment_helper_config.json: -------------------------------------------------------------------------------- 1 | { 2 | "REGION": "${REGION}", 3 | "ACCOUNT_ID": "${ACCOUNT_ID}", 4 | "CLUSTER_NAME": "${CLUSTER_NAME}", 5 | "DATA_BUCKET_NAME": "${DATA_BUCKET_NAME}", 6 | "CONFIG_BUCKET_NAME": "${CONFIG_BUCKET_NAME}", 7 | "ECS_TASK_EXECUTION_ROLE_NAME": "${ECS_TASK_EXECUTION_ROLE_NAME}", 8 | "FIREHOSE_STREAM_NAME": "${FIREHOSE_STREAM_NAME}", 9 | "DATEBASE_NAME": "${DATEBASE_NAME}", 10 | "TABLE_NAME": "${TABLE_NAME}" 11 | } 12 | -------------------------------------------------------------------------------- /fbpcs/infra/cloud_bridge/semi_automated_data_ingestion/main.tf: -------------------------------------------------------------------------------- 1 | provider "aws" { 2 | profile = "default" 3 | region = var.region 4 | } 5 | 6 | provider "archive" {} 7 | 8 | terraform { 9 | backend "s3" {} 10 | required_providers { 11 | aws = { 12 | source = "hashicorp/aws" 13 | version = "~> 3.0" 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /fbpcs/infra/cloud_bridge/semi_automated_data_ingestion/output.tf: -------------------------------------------------------------------------------- 1 | output "semi_automated_glue_job_arn" { 2 | value = aws_glue_job.glue_job.arn 3 | description = "The semi-automated Glue job ARN" 4 | } 5 | 6 | output "semi_automated_lambda_arn" { 7 | value = aws_lambda_function.lambda_trigger.arn 8 | description = "The semi-automated Lambda job ARN" 9 | } 10 | -------------------------------------------------------------------------------- /fbpcs/infra/cloud_bridge/server/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebookresearch/fbpcs/f7c0847de52003552b3976e78acaf9836feedadb/fbpcs/infra/cloud_bridge/server/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /fbpcs/infra/cloud_bridge/server/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.2-bin.zip 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | -------------------------------------------------------------------------------- /fbpcs/infra/cloud_bridge/server/settings.gradle: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | rootProject.name = 'server' 9 | -------------------------------------------------------------------------------- /fbpcs/infra/cloud_bridge/server/src/test/java/com/facebook/business/cloudbridge/pl/server/ApplicationTest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | package com.facebook.business.cloudbridge.pl.server; 9 | 10 | import org.junit.Test; 11 | import org.springframework.boot.test.context.SpringBootTest; 12 | 13 | @SpringBootTest 14 | public class ApplicationTest { 15 | 16 | @Test 17 | public void contextLoads() {} 18 | } 19 | -------------------------------------------------------------------------------- /fbpcs/infra/cloud_bridge/test/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebookresearch/fbpcs/f7c0847de52003552b3976e78acaf9836feedadb/fbpcs/infra/cloud_bridge/test/__init__.py -------------------------------------------------------------------------------- /fbpcs/infra/logging_service/client/meta/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebookresearch/fbpcs/f7c0847de52003552b3976e78acaf9836feedadb/fbpcs/infra/logging_service/client/meta/__init__.py -------------------------------------------------------------------------------- /fbpcs/infra/logging_service/client/meta/data_model/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebookresearch/fbpcs/f7c0847de52003552b3976e78acaf9836feedadb/fbpcs/infra/logging_service/client/meta/data_model/__init__.py -------------------------------------------------------------------------------- /fbpcs/infra/logging_service/download_logs/cloud/cloud_baseclass.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) Meta Platforms, Inc. and affiliates. 2 | # 3 | # This source code is licensed under the MIT license found in the 4 | # LICENSE file in the root directory of this source tree. 5 | 6 | # pyre-unsafe 7 | 8 | from abc import ABC 9 | 10 | 11 | class CloudBaseClass(ABC): 12 | pass 13 | -------------------------------------------------------------------------------- /fbpcs/infra/logging_service/download_logs/cloud_error/utils_error.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) Meta Platforms, Inc. and affiliates. 2 | # 3 | # This source code is licensed under the MIT license found in the 4 | # LICENSE file in the root directory of this source tree. 5 | 6 | # pyre-strict 7 | 8 | 9 | class UtilsException(Exception): 10 | pass 11 | 12 | 13 | class NotSupportedContentType(UtilsException): 14 | pass 15 | -------------------------------------------------------------------------------- /fbpcs/infra/logging_service/download_logs/pip_requirements.txt: -------------------------------------------------------------------------------- 1 | boto3 2 | botocore 3 | dataclasses_json 4 | docopt 5 | schema 6 | tqdm 7 | -------------------------------------------------------------------------------- /fbpcs/infra/logging_service/download_logs/test/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebookresearch/fbpcs/f7c0847de52003552b3976e78acaf9836feedadb/fbpcs/infra/logging_service/download_logs/test/__init__.py -------------------------------------------------------------------------------- /fbpcs/infra/logging_service/download_logs/test/sample_log/container_ids.txt: -------------------------------------------------------------------------------- 1 | arn:aws:ecs:us-west-2:5592513842793:task/onedocker-container-comp-ui-e2e/00a04af576dd454784a4af543925c8de 2 | arn:aws:ecs:us-west-2:5592513842793:task/onedocker-container-comp-ui-e2e/03705975e3c04b4db8b7fe4667baac37 3 | -------------------------------------------------------------------------------- /fbpcs/infra/logging_service/download_logs/utils/test/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebookresearch/fbpcs/f7c0847de52003552b3976e78acaf9836feedadb/fbpcs/infra/logging_service/download_logs/utils/test/__init__.py -------------------------------------------------------------------------------- /fbpcs/infra/logging_service/log_analyzer/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebookresearch/fbpcs/f7c0847de52003552b3976e78acaf9836feedadb/fbpcs/infra/logging_service/log_analyzer/__init__.py -------------------------------------------------------------------------------- /fbpcs/infra/logging_service/log_analyzer/entity/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebookresearch/fbpcs/f7c0847de52003552b3976e78acaf9836feedadb/fbpcs/infra/logging_service/log_analyzer/entity/__init__.py -------------------------------------------------------------------------------- /fbpcs/infra/logging_service/log_analyzer/entity/cell_objective_instance.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) Meta Platforms, Inc. and affiliates. 2 | # 3 | # This source code is licensed under the MIT license found in the 4 | # LICENSE file in the root directory of this source tree. 5 | 6 | # pyre-strict 7 | from dataclasses import dataclass 8 | from typing import Any, Dict 9 | 10 | from dataclasses_json import dataclass_json 11 | 12 | 13 | @dataclass_json 14 | @dataclass 15 | class CellObjectiveInstance: 16 | data: Dict[str, Dict[str, Dict[str, Any]]] 17 | -------------------------------------------------------------------------------- /fbpcs/infra/pce/aws_terraform_template/common/pce/compute.tf: -------------------------------------------------------------------------------- 1 | resource "aws_ecs_cluster" "main" { 2 | name = "onedocker-cluster${var.tag_postfix}" 3 | 4 | tags = { 5 | pce-tag = "cluster${var.tag_postfix}" 6 | } 7 | 8 | capacity_providers = ["FARGATE"] 9 | 10 | default_capacity_provider_strategy { 11 | capacity_provider = "FARGATE" 12 | } 13 | 14 | setting { 15 | name = "containerInsights" 16 | value = "enabled" 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /fbpcs/infra/pce/aws_terraform_template/common/pce/main.tf: -------------------------------------------------------------------------------- 1 | provider "aws" { 2 | profile = "default" 3 | region = var.aws_region 4 | default_tags { 5 | tags = { 6 | "pce:pce-id" = var.pce_id 7 | } 8 | } 9 | } 10 | 11 | terraform { 12 | backend "s3" {} 13 | required_providers { 14 | aws = { 15 | source = "hashicorp/aws" 16 | version = "~> 3.0" 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /fbpcs/infra/pce/aws_terraform_template/common/pce_shared/cloudwatch.tf: -------------------------------------------------------------------------------- 1 | resource "aws_cloudwatch_log_group" "onedocker_cloudwatch_log_group" { 2 | name = "/ecs/onedocker-container${var.tag_postfix}" 3 | tags = { 4 | "pce:pce-id" = var.pce_id 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /fbpcs/infra/pce/aws_terraform_template/common/pce_shared/main.tf: -------------------------------------------------------------------------------- 1 | provider "aws" { 2 | profile = "default" 3 | region = var.aws_region 4 | } 5 | 6 | terraform { 7 | backend "s3" {} 8 | required_providers { 9 | aws = { 10 | source = "hashicorp/aws" 11 | version = "~> 3.0" 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /fbpcs/infra/pce/aws_terraform_template/partner/vpc_peering/output.tf: -------------------------------------------------------------------------------- 1 | output "vpc_peering_connection_id" { 2 | value = aws_vpc_peering_connection.vpc_peering_conn.id 3 | description = "The id of the VPC peering connection" 4 | } 5 | -------------------------------------------------------------------------------- /fbpcs/infra/pce/aws_terraform_template/partner/vpc_peering/traffic_route.tf: -------------------------------------------------------------------------------- 1 | resource "aws_route" "peer_connection_access" { 2 | route_table_id = var.route_table_id 3 | destination_cidr_block = var.destination_cidr_block 4 | vpc_peering_connection_id = aws_vpc_peering_connection.vpc_peering_conn.id 5 | } 6 | -------------------------------------------------------------------------------- /fbpcs/infra/pce/gcp_terraform_template/common/pce/compute.tf: -------------------------------------------------------------------------------- 1 | resource "google_container_cluster" "main" { 2 | name = "onedocker-cluster-${var.name_postfix}" 3 | location = var.gcp_region 4 | network = google_compute_network.main.id 5 | subnetwork = google_compute_subnetwork.subnet.id 6 | enable_autopilot = true 7 | 8 | ip_allocation_policy { 9 | cluster_secondary_range_name = "pods" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /fbpcs/infra/pce/gcp_terraform_template/common/pce/main.tf: -------------------------------------------------------------------------------- 1 | provider "google" { 2 | project = var.project_id 3 | } 4 | 5 | terraform { 6 | backend "gcs" { 7 | } 8 | } 9 | 10 | data "google_client_config" "default" {} 11 | 12 | provider "kubernetes" { 13 | host = "https://${google_container_cluster.main.endpoint}" 14 | token = data.google_client_config.default.access_token 15 | cluster_ca_certificate = base64decode(google_container_cluster.main.master_auth[0].cluster_ca_certificate) 16 | } 17 | -------------------------------------------------------------------------------- /fbpcs/infra/pce/gcp_terraform_template/partner/vpc_peering/main.tf: -------------------------------------------------------------------------------- 1 | provider "google" { 2 | credentials = file(var.credential_path) 3 | project = var.project_id 4 | } 5 | 6 | terraform { 7 | backend "gcs" { 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /fbpcs/infra/pce/gcp_terraform_template/partner/vpc_peering/output.tf: -------------------------------------------------------------------------------- 1 | output "vpc_peering_id" { 2 | value = google_compute_network_peering.vpc_peering.id 3 | description = "The id of the VPC peering connection" 4 | } 5 | -------------------------------------------------------------------------------- /fbpcs/infra/pce/gcp_terraform_template/partner/vpc_peering/variable.tf: -------------------------------------------------------------------------------- 1 | variable "project_id" { 2 | description = "an unique identifier for your GCP project" 3 | } 4 | 5 | variable "credential_path" { 6 | description = "credential path of GCP service accounts" 7 | } 8 | 9 | variable "name_postfix" { 10 | description = "the postfix to append after a resource name" 11 | } 12 | 13 | variable "vpc_id" { 14 | description = "The ip of provisioned vpc" 15 | } 16 | 17 | variable "otherparty_vpc_id" { 18 | description = "Other party's vpc id" 19 | } 20 | -------------------------------------------------------------------------------- /fbpcs/infra/pce/gcp_terraform_template/partner/vpc_peering/vpc_peering.tf: -------------------------------------------------------------------------------- 1 | resource "google_compute_network_peering" "vpc_peering" { 2 | name = "onedocker-vpc-peering-${var.name_postfix}" 3 | network = var.vpc_id 4 | peer_network = var.otherparty_vpc_id 5 | } 6 | -------------------------------------------------------------------------------- /fbpcs/infra/pce_deployment_library/errors_library/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebookresearch/fbpcs/f7c0847de52003552b3976e78acaf9836feedadb/fbpcs/infra/pce_deployment_library/errors_library/__init__.py -------------------------------------------------------------------------------- /fbpcs/infra/pce_deployment_library/errors_library/gcp_errors.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebookresearch/fbpcs/f7c0847de52003552b3976e78acaf9836feedadb/fbpcs/infra/pce_deployment_library/errors_library/gcp_errors.py -------------------------------------------------------------------------------- /fbpcs/infra/pce_deployment_library/errors_library/terraform_errors.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) Meta Platforms, Inc. and affiliates. 2 | # 3 | # This source code is licensed under the MIT license found in the 4 | # LICENSE file in the root directory of this source tree. 5 | 6 | # pyre-strict 7 | 8 | 9 | class TerraformCommandExectionError(Exception): 10 | pass 11 | -------------------------------------------------------------------------------- /fbpcs/infra/pid/aws_terraform_template/partner/cloudwatch.tf: -------------------------------------------------------------------------------- 1 | resource "aws_cloudwatch_log_group" "mrpid_partner_sfn_log_group" { 2 | name = "mrpid-partner-sfn-log-group" 3 | retention_in_days = 30 4 | } 5 | 6 | resource "aws_cloudwatch_log_group" "mrpid_partner_ec2_log_group" { 7 | name = "mrpid-partner-ec2-log-group" 8 | retention_in_days = 30 9 | } 10 | -------------------------------------------------------------------------------- /fbpcs/infra/pid/aws_terraform_template/partner/main.tf: -------------------------------------------------------------------------------- 1 | provider "aws" { 2 | profile = "default" 3 | region = var.aws_region 4 | default_tags { 5 | tags = { 6 | "mrpid:pid-id" = var.pid_id 7 | } 8 | } 9 | } 10 | 11 | terraform { 12 | backend "s3" {} 13 | required_providers { 14 | aws = { 15 | source = "hashicorp/aws" 16 | version = "~> 3.0" 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /fbpcs/infra/pid/aws_terraform_template/partner/minimal_running_policy.tf: -------------------------------------------------------------------------------- 1 | resource "aws_iam_policy" "mrpid_partner_minimal_running_policy" { 2 | name = "mrpid-partner-minimal-running-policy" 3 | 4 | policy = < MPCGameConfig: 17 | pass 18 | -------------------------------------------------------------------------------- /fbpcs/private_computation/stage_flows/exceptions.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # Copyright (c) Meta Platforms, Inc. and affiliates. 3 | # 4 | # This source code is licensed under the MIT license found in the 5 | # LICENSE file in the root directory of this source tree. 6 | 7 | # pyre-strict 8 | 9 | 10 | class PCStageFlowException(Exception): 11 | pass 12 | 13 | 14 | class PCStageFlowNotFoundException(PCStageFlowException): 15 | pass 16 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/configs/mini_config.yml: -------------------------------------------------------------------------------- 1 | private_computation: 2 | graphapi: 3 | access_token: TODO 4 | infra_config: 5 | base_dir: TODO 6 | region: TODO 7 | cluster: TODO 8 | subnets: TODO 9 | tmp_directory: TODO 10 | binary_version: TODO 11 | task_definition: TODO 12 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/configs/mini_override_error_config.yml: -------------------------------------------------------------------------------- 1 | private_computation: 2 | graphapi: 3 | access_token: TODO 4 | infra_config: 5 | base_dir: TODO 6 | region: TODO 7 | cluster: TODO 8 | subnets: TODO 9 | tmp_directory: TODO 10 | binary_version: TODO 11 | task_definition: TODO 12 | overrides: 13 | ContainerServiceStorageService: 14 | class: my.custom.ContainerService 15 | additional_arguments: 16 | foo: bar 17 | baz: quux 18 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/serialized_instances/stage_state_instance.json: -------------------------------------------------------------------------------- 1 | {"instance_id": "stage_state_instance_id", "initialized": true, "creation_ts": 1668437975, "containers": [{"cpu": null, "memory": null, "instance_id": "test_container_instance_0", "ip_address": "1.1.1.1", "status": "COMPLETED", "__type": "ContainerInstance"}], "end_ts": null, "stage_name": "PC_PRE_VALIDATION", "status": "COMPLETED", "server_uris": null, "invalid_parameter_to_exclude": "This instance value should be excluded."} -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/README.md: -------------------------------------------------------------------------------- 1 | This folder holds test resources for PrivateComputationInstanceStatus enum values. 2 | Its purpose is to ensure that we don't break backwards compatibility by renaming 3 | or deleting an existing status, which could put some instances into an unrecoverable 4 | state during an update. 5 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/aggregation_completed.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | AGGREGATION_COMPLETED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/aggregation_failed.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | AGGREGATION_FAILED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/aggregation_initialized.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | AGGREGATION_INITIALIZED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/aggregation_started.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | AGGREGATION_STARTED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/anonymization_data_prep_completed.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | ANONYMIZATION_DATA_PREP_COMPLETED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/anonymization_data_prep_failed.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | ANONYMIZATION_DATA_PREP_FAILED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/anonymization_data_prep_initialized.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | ANONYMIZATION_DATA_PREP_INITIALIZED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/anonymization_data_prep_started.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | ANONYMIZATION_DATA_PREP_STARTED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/anonymizer_completed.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | ANONYMIZER_COMPLETED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/anonymizer_failed.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | ANONYMIZER_FAILED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/anonymizer_initialized.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | ANONYMIZER_INITIALIZED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/anonymizer_started.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | ANONYMIZER_STARTED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/computation_completed.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | COMPUTATION_COMPLETED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/computation_failed.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | COMPUTATION_FAILED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/computation_initialized.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | COMPUTATION_INITIALIZED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/computation_started.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | COMPUTATION_STARTED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/created.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | CREATED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/creation_failed.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | CREATION_FAILED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/creation_initialized.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | CREATION_INITIALIZED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/creation_started.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | CREATION_STARTED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/decoupled_aggregation_completed.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | DECOUPLED_AGGREGATION_COMPLETED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/decoupled_aggregation_failed.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | DECOUPLED_AGGREGATION_FAILED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/decoupled_aggregation_initialized.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | DECOUPLED_AGGREGATION_INITIALIZED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/decoupled_aggregation_started.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | DECOUPLED_AGGREGATION_STARTED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/decoupled_attribution_completed.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | DECOUPLED_ATTRIBUTION_COMPLETED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/decoupled_attribution_failed.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | DECOUPLED_ATTRIBUTION_FAILED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/decoupled_attribution_initialized.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | DECOUPLED_ATTRIBUTION_INITIALIZED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/decoupled_attribution_started.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | DECOUPLED_ATTRIBUTION_STARTED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/id_matching_completed.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | ID_MATCHING_COMPLETED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/id_matching_failed.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | ID_MATCHING_FAILED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/id_matching_initialized.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | ID_MATCHING_INITIALIZED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/id_matching_post_process_completed.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | ID_MATCHING_POST_PROCESS_COMPLETED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/id_matching_post_process_failed.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | ID_MATCHING_POST_PROCESS_FAILED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/id_matching_post_process_initialized.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | ID_MATCHING_POST_PROCESS_INITIALIZED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/id_matching_post_process_started.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | ID_MATCHING_POST_PROCESS_STARTED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/id_matching_started.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | ID_MATCHING_STARTED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/id_spine_combiner_completed.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | ID_SPINE_COMBINER_COMPLETED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/id_spine_combiner_failed.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | ID_SPINE_COMBINER_FAILED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/id_spine_combiner_initialized.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | ID_SPINE_COMBINER_INITIALIZED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/id_spine_combiner_started.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | ID_SPINE_COMBINER_STARTED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/pc_pre_validation_completed.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | PC_PRE_VALIDATION_COMPLETED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/pc_pre_validation_failed.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | PC_PRE_VALIDATION_FAILED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/pc_pre_validation_initialized.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | PC_PRE_VALIDATION_INITIALIZED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/pc_pre_validation_started.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | PC_PRE_VALIDATION_STARTED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/pcf2_aggregation_completed.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | PCF2_AGGREGATION_COMPLETED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/pcf2_aggregation_failed.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | PCF2_AGGREGATION_FAILED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/pcf2_aggregation_initialized.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | PCF2_AGGREGATION_INITIALIZED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/pcf2_aggregation_started.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | PCF2_AGGREGATION_STARTED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/pcf2_attribution_completed.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | PCF2_ATTRIBUTION_COMPLETED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/pcf2_attribution_failed.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | PCF2_ATTRIBUTION_FAILED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/pcf2_attribution_initialized.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | PCF2_ATTRIBUTION_INITIALIZED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/pcf2_attribution_started.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | PCF2_ATTRIBUTION_STARTED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/pcf2_lift_completed.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | PCF2_LIFT_COMPLETED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/pcf2_lift_failed.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | PCF2_LIFT_FAILED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/pcf2_lift_initialized.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | PCF2_LIFT_INITIALIZED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/pcf2_lift_metadata_compaction_completed.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | PCF2_LIFT_METADATA_COMPACTION_COMPLETED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/pcf2_lift_metadata_compaction_failed.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | PCF2_LIFT_METADATA_COMPACTION_FAILED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/pcf2_lift_metadata_compaction_initialized.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | PCF2_LIFT_METADATA_COMPACTION_INITIALIZED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/pcf2_lift_metadata_compaction_started.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | PCF2_LIFT_METADATA_COMPACTION_STARTED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/pcf2_lift_started.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | PCF2_LIFT_STARTED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/pcf2_shard_combine_completed.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | PCF2_SHARD_COMBINE_COMPLETED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/pcf2_shard_combine_failed.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | PCF2_SHARD_COMBINE_FAILED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/pcf2_shard_combine_initialized.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | PCF2_SHARD_COMBINE_INITIALIZED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/pcf2_shard_combine_started.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | PCF2_SHARD_COMBINE_STARTED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/pid_mr_completed.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | PID_MR_COMPLETED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/pid_mr_failed.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | PID_MR_FAILED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/pid_mr_initialized.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | PID_MR_INITIALIZED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/pid_mr_started.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | PID_MR_STARTED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/pid_prepare_completed.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | PID_PREPARE_COMPLETED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/pid_prepare_failed.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | PID_PREPARE_FAILED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/pid_prepare_initialized.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | PID_PREPARE_INITIALIZED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/pid_prepare_started.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | PID_PREPARE_STARTED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/pid_shard_completed.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | PID_SHARD_COMPLETED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/pid_shard_failed.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | PID_SHARD_FAILED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/pid_shard_initialized.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | PID_SHARD_INITIALIZED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/pid_shard_started.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | PID_SHARD_STARTED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/post_processing_handlers_completed.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | POST_PROCESSING_HANDLERS_COMPLETED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/post_processing_handlers_failed.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | POST_PROCESSING_HANDLERS_FAILED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/post_processing_handlers_initialized.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | POST_PROCESSING_HANDLERS_INITIALIZED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/post_processing_handlers_started.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | POST_PROCESSING_HANDLERS_STARTED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/prepare_data_completed.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | PREPARE_DATA_COMPLETED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/prepare_data_failed.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | PREPARE_DATA_FAILED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/prepare_data_started.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | PREPARE_DATA_STARTED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/private_id_dfca_aggregation_completed.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | PRIVATE_ID_DFCA_AGGREGATION_COMPLETED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/private_id_dfca_aggregation_failed.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | PRIVATE_ID_DFCA_AGGREGATION_FAILED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/private_id_dfca_aggregation_initialized.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | PRIVATE_ID_DFCA_AGGREGATION_INITIALIZED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/private_id_dfca_aggregation_started.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | PRIVATE_ID_DFCA_AGGREGATION_STARTED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/processing_request.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | PROCESSING_REQUEST 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/reshard_completed.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | RESHARD_COMPLETED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/reshard_failed.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | RESHARD_FAILED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/reshard_initialized.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | RESHARD_INITIALIZED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/reshard_started.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | RESHARD_STARTED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/secure_random_sharder_completed.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | SECURE_RANDOM_SHARDER_COMPLETED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/secure_random_sharder_failed.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | SECURE_RANDOM_SHARDER_FAILED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/secure_random_sharder_initialized.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | SECURE_RANDOM_SHARDER_INITIALIZED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/secure_random_sharder_started.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | SECURE_RANDOM_SHARDER_STARTED 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/timeout.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | TIMEOUT 9 | -------------------------------------------------------------------------------- /fbpcs/private_computation/test/entity/test_resources/status_names/unknown.txt: -------------------------------------------------------------------------------- 1 | # NOTE: This file was originally autogenerated by a script. 2 | # If you find yourself needing to edit it, something has probably gone very 3 | # wrong. Status names should be considered immutable forever. If we ever try to 4 | # rename or delete a status, it can put old instances on the advertiser's side 5 | # into a permanently unrecoverable state. Please proceed with extreme caution. 6 | 7 | 8 | UNKNOWN 9 | -------------------------------------------------------------------------------- /fbpcs/scripts/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebookresearch/fbpcs/f7c0847de52003552b3976e78acaf9836feedadb/fbpcs/scripts/__init__.py -------------------------------------------------------------------------------- /fbpcs/scripts/tests/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebookresearch/fbpcs/f7c0847de52003552b3976e78acaf9836feedadb/fbpcs/scripts/tests/__init__.py -------------------------------------------------------------------------------- /fbpcs/service/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebookresearch/fbpcs/f7c0847de52003552b3976e78acaf9836feedadb/fbpcs/service/__init__.py -------------------------------------------------------------------------------- /fbpcs/stage_flow/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebookresearch/fbpcs/f7c0847de52003552b3976e78acaf9836feedadb/fbpcs/stage_flow/__init__.py -------------------------------------------------------------------------------- /fbpcs/stage_flow/exceptions.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # Copyright (c) Meta Platforms, Inc. and affiliates. 3 | # 4 | # This source code is licensed under the MIT license found in the 5 | # LICENSE file in the root directory of this source tree. 6 | 7 | # pyre-strict 8 | 9 | 10 | class StageFlowException(Exception): 11 | pass 12 | 13 | 14 | class StageFlowStageNotFoundError(KeyError, StageFlowException): 15 | pass 16 | 17 | 18 | class StageFlowDuplicateStatusError(ValueError, StageFlowException): 19 | pass 20 | -------------------------------------------------------------------------------- /fbpcs/utils/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebookresearch/fbpcs/f7c0847de52003552b3976e78acaf9836feedadb/fbpcs/utils/__init__.py -------------------------------------------------------------------------------- /fbpcs/utils/config_yaml/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebookresearch/fbpcs/f7c0847de52003552b3976e78acaf9836feedadb/fbpcs/utils/config_yaml/__init__.py -------------------------------------------------------------------------------- /fbpcs/utils/optional.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # Copyright (c) Meta Platforms, Inc. and affiliates. 3 | # 4 | # This source code is licensed under the MIT license found in the 5 | # LICENSE file in the root directory of this source tree. 6 | 7 | # pyre-unsafe 8 | 9 | from typing import Optional, TypeVar 10 | 11 | T = TypeVar("T") 12 | 13 | 14 | def unwrap_or_default(optional: Optional[T], default: T) -> T: 15 | if optional is None: 16 | return default 17 | return optional 18 | -------------------------------------------------------------------------------- /fbpcs/utils/tests/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/facebookresearch/fbpcs/f7c0847de52003552b3976e78acaf9836feedadb/fbpcs/utils/tests/__init__.py -------------------------------------------------------------------------------- /upload_scripts/configs/test_upload_binaries_config.yml: -------------------------------------------------------------------------------- 1 | onedocker-cli: 2 | dependency: 3 | StorageService: 4 | class: fbpcp.service.storage_s3.S3StorageService 5 | constructor: 6 | region: us-west-2 7 | setting: 8 | repository_path: https://one-docker-repository-test-psi.s3.us-west-2.amazonaws.com/ 9 | -------------------------------------------------------------------------------- /upload_scripts/configs/upload_binaries_config.yml: -------------------------------------------------------------------------------- 1 | onedocker-cli: 2 | dependency: 3 | StorageService: 4 | class: fbpcp.service.storage_s3.S3StorageService 5 | constructor: 6 | region: us-west-2 7 | setting: 8 | repository_path: https://one-docker-repository-prod.s3.us-west-2.amazonaws.com/ 9 | --------------------------------------------------------------------------------