Creatives: Add NoAudit flag for creatives exempt from auditing (ex: direct inventory)
Creatives: Add NoAudit flag for creatives exempt from auditing (ex: direct inventory)
Merge branch 'master' of https://github.com/RareCrowds/OpenAdStack
Conversion Reports: Add conversion reports to AppNexus RequestCampaignReportActivity
 * Add new AppNexusReportType enum input value "ReportType"
 * Add new scheduler registry for conversion reports
 * Schedule conversion reports at the end of campaign export along with the delivery reports
Conversion Reports: Retrieve conversion reports
 * Determine retrieved report raw data index association name and transform activity task by report type

TODO: Only schedule initial conversion report request if config says so
TODO: Dig report type out of the report AppNexus response (AppNexusApiClient.Reporting.cs)
TODO: Map AppNexus report object report type to AppNexusReportType (RetrieveCampaignReportActivity.RetrieveReport)
TODO: Implement activity for DynamicAllocationActivityTasks.GetCampaignConversionData
CanonicalDeliveryData: Combine data for same node:hour from different campaigns
 * Data for the same node may be reported under multiple campaigns
 * Combine specific values (CanonicalDeliveryData.RecordSumFields) from additional campaigns
 * Add unit test for a node:hour with one record in DataA and two from different campaigns in DataB
AppNexus: Add daily budget/impression caps
 * Same value as lifetime
AppNexus: Add daily budget/impression caps
 * Same value as lifetime
Merge branch 'master' of https://github.com/RareCrowds/OpenAdStack
DeliveryData: Silently skip blank raw delivery data rows
 * Blank line warnings from the end of files clutters up the log
Merge branch 'master' into TSPixelReport
DA: Fixing multiple campaigns per node:hour in delivery data
DA: Take the latest delivery data record per node:hour:campaign
 * Previously the latest record per node:hour was taken
 * Need to account for multiple campaigns per node

TODO: Assess impact on node delivery metrics and reporting
DA: Support multiple campaigns per node:hour
 * Update DeliveryMetrics.UpdateNodeHour to sum impression count and spend for node:hour metrics from multiple campaigns
 * Remove handling of duplicate rows (not a valid scenario, duplicates removed as canonical delivery data is built)
 * Add campaignId to dedupe key in AppNexusBillingReport
 * Move canonical delivery data field names to their own class
DA: Support multiple campaigns per node:hour
 * Update DeliveryMetrics.UpdateNodeHour to sum impression count and spend for node:hour metrics from multiple campaigns
 * Remove handling of duplicate rows (not a valid scenario, duplicates removed as canonical delivery data is built)
 * Add campaignId to dedupe key in AppNexusBillingReport
 * Move canonical delivery data field names to their own class
Merge branch 'master' of https://github.com/RareCrowds/OpenAdStack
AppNexus: Change default GetCampaignByCode behavior to use the long code
first then retry with the short code if not found.
AppNexus: Change default GetCampaignByCode behavior to use the long code
first then retry with the short code if not found.
Merge branch 'master' of https://github.com/RareCrowds/OpenAdStack
Merge branch 'master' into TSPixelReport